[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Re: operator precedence of assignment

Yukihiro Matsumoto

1/2/2007 4:56:00 PM

Hi,

In message "Re: operator precedence of assignment"
on Tue, 2 Jan 2007 22:26:53 +0900, Daniel DeLorme <dan-ml@dan42.com> writes:
|
|How do you think ruby parses this expression?
| a = 1 + b = 2 + c = 4 + d = 8
|
|Originally I thought that operator precedence would result in
| a = (1 + b) = (2 + c) = (4 + d) = 8
|and since an assignment requires a variable, that would result in a SyntaxError.
|But instead it seems that everything on the right side of the assignment
|operator is evaluated first:
| a = (1 + (b = (2 + (c = (4 + (d = 8))))))
|
|That had me really puzzled at first but I guess the behavior makes a certain
|sense, and it's more useful than a syntax error. Ruby's tolerant parser wins again!

Ah, for your information, that surprised me as well. Perhaps bison
generated parser is smarter and eagerer than I expected. I have no
idea what to do.

matz.

1 Answer

Robert Klemme

1/2/2007 5:02:00 PM

0

On 02.01.2007 17:56, Yukihiro Matsumoto wrote:
> Hi,
>
> In message "Re: operator precedence of assignment"
> on Tue, 2 Jan 2007 22:26:53 +0900, Daniel DeLorme <dan-ml@dan42.com> writes:
> |
> |How do you think ruby parses this expression?
> | a = 1 + b = 2 + c = 4 + d = 8
> |
> |Originally I thought that operator precedence would result in
> | a = (1 + b) = (2 + c) = (4 + d) = 8
> |and since an assignment requires a variable, that would result in a SyntaxError.
> |But instead it seems that everything on the right side of the assignment
> |operator is evaluated first:
> | a = (1 + (b = (2 + (c = (4 + (d = 8))))))
> |
> |That had me really puzzled at first but I guess the behavior makes a certain
> |sense, and it's more useful than a syntax error. Ruby's tolerant parser wins again!
>
> Ah, for your information, that surprised me as well. Perhaps bison
> generated parser is smarter and eagerer than I expected. I have no
> idea what to do.

I think Daniel did not want you to do anything - in fact he seems rather
positively amazed. :-)

(The only thing that comes to mind is thank him for the praise. :-))

Kind regards

robert