From: gotoken@... (GOTO Kentaro) Date: 2000-01-26T03:01:51+09:00 Subject: [ruby-talk:01184] Re: Possible bug in ruby-man-1.4 Hi, In message "[ruby-talk:01177] Re: Possible bug in ruby-man-1.4" on 00/01/24, Dave Thomas writes: >Now there's a problem ;-( > >Maybe the answer is to get rid of the concept of negative numeric >literals, so there's never any ambiguity as to whether -2 is a literal >of a method call? Then, as an optimization, the parser could notice >.-@ terminal pairs and replace them with a negated >Fixnum. That way > > (-2)**2 would be parsed as ** > /\ > / \ > -@ 2:Fixnum > / > / > 2:Fixnum > > and optimized into ** > /\ > / \ > -2:Fixnum 2:Fixnum Intuitively, -2**2 represents the mathematical notation 2 2 -2 but not (-2) so, -2**2 == -4 is a reasonable solution. On the other hand, I also expect as follows: # A [=] B (A [!=] B) stands for the syntactically (in)equality of A # and B. And angles for syntactical grouping on RHS. - DIGITS [=] - [!=] <-DIGITS> -?a.m [=] <-?a>.m [!=] <->.m -2.0.m [=] <-2.0>.m [!=] <-<2.0>>.m -nondigit.m [=] - nondigit.x [=] <->.m [!=] -<.m> x -y [=] x - y [=] x-y [=] - x- nondigits.m [=] x-nondigits.m [=] x -nondigits.m [=] x - nondigits.m [=] - x op - 2.0 [=] op-2.0 [=] op<-2.0> [!=] op<-<2.0>> x op - y [=] op-y [=] op<-> a - b ** c [=] a-b**c [=] -<**> Sorry, I cannot summarize them. -- gotoken