[#1026] Is this a bug? — Dave Thomas <Dave@...>

18 messages 2000/01/03

[#1084] Infinite loop — Dave Thomas <Dave@...>

17 messages 2000/01/11

[#1104] The value of while... — Dave Thomas <Dave@...>

24 messages 2000/01/11

[ruby-talk:01184] Re: Possible bug in ruby-man-1.4

From: gotoken@... (GOTO Kentaro)
Date: 2000-01-25 18:01:51 UTC
List: ruby-talk #1184
Hi, 

In message "[ruby-talk:01177] Re: Possible bug in ruby-man-1.4"
    on 00/01/24, Dave Thomas <Dave@thomases.com> 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
><Fixnum>.-@ 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> [!=] <-DIGITS>

  -?a.m [=] <-?a>.m [!=] <-<?a>>.m

  -2.0.m [=] <-2.0>.m [!=] <-<2.0>>.m

  -nondigit.m [=] - nondigit.x
              [=] <-<nondigit>>.m
              [!=] -<<nondigit>.m>

  x -y [=] x - y [=] x-y [=] <x>-<y>

  x- nondigits.m [=] x-nondigits.m
                 [=] x -nondigits.m
                 [=] x - nondigits.m
                 [=] <x>-<nondigits.m>

  x op - 2.0 [=] <x>op-2.0 [=] <x>op<-2.0> [!=] <x>op<-<2.0>>

  x op - y [=] <x>op-y [=] <x>op<-<y>>

  a - b ** c [=] a-b**c [=] <a>-<<b>**<c>>

Sorry, I cannot summarize them. 

-- gotoken

In This Thread

Prev Next