diff --git a/ChangeLog b/ChangeLog index 99bc01acc9..fbdcb2b439 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sun Mar 10 09:12:51 2013 Tadayoshi Funaba + + * complex.c: described syntax of string form. + * rational.c: ditto. + Sat Mar 9 11:58:39 2013 Nobuyoshi Nakada * marshal.c (w_extended): check for prepended object. diff --git a/complex.c b/complex.c index edbe2965f0..5445b490ec 100644 --- a/complex.c +++ b/complex.c @@ -483,6 +483,24 @@ f_complex_new2(VALUE klass, VALUE x, VALUE y) * * Complex(1, 2) #=> (1+2i) * Complex('1+2i') #=> (1+2i) + * + * Syntax of string form: + * + * complex = real part | [ sign ] , imaginary part + * | real part , sign , imaginary part + * | rational , "@" , rational ; + * real part = rational ; + * imaginary part = imaginary unit | unsigned rational , imaginary unit ; + * rational = [ sign ] , unsigned rational ; + * unsigned rational = numerator | numerator , "/" , denominator ; + * numerator = integer part | fractional part | integer part , fractional part ; + * denominator = digits ; + * integer part = digits ; + * fractional part = "." , digits , [ ( "e" | "E" ) , [ sign ] , digits ] ; + * imaginary unit = "i" | "I" | "j" | "J" ; + * sign = "-" | "+" ; + * digits = digit , [ { digit | "_" , digit } ] ; + * digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ; */ static VALUE nucomp_f_complex(int argc, VALUE *argv, VALUE klass) diff --git a/rational.c b/rational.c index a78b3202ec..e5992ed76f 100644 --- a/rational.c +++ b/rational.c @@ -571,6 +571,18 @@ f_rational_new_no_reduce2(VALUE klass, VALUE x, VALUE y) * * Rational(1, 2) #=> (1/2) * Rational('1/2') #=> (1/2) + * + * Syntax of string form: + * + * rational = [ sign ] , unsigned rational ; + * unsigned rational = numerator | numerator , "/" , denominator ; + * numerator = integer part | fractional part | integer part , fractional part ; + * denominator = digits ; + * integer part = digits ; + * fractional part = "." , digits , [ ( "e" | "E" ) , [ sign ] , digits ] ; + * sign = "-" | "+" ; + * digits = digit , [ { digit | "_" , digit } ] ; + * digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ; */ static VALUE nurat_f_rational(int argc, VALUE *argv, VALUE klass)