On Tuesday, August 06, 2013 09:20:38 AM Andreas Schwab wrote:
> DJ Mills <danielmil...@gmail.com> writes:
> 
> > I still don't see that;
> 
> Go strictly from left to right.

How do you assign something that hasn't been evaluated yet? Evaluating the 
expression on the RHS is an absolute prerequisite to evaluating the assignment 
itself. (x += x) = 1 is nonsense. It evaluates to 0 = 1.

We know that the shell doesn't simply flatten the expression in the case of 
indirection.

y='1 +'; ((x = y 1))

is invalid. Therefore it must evaluate full expressions as it references them. 
If you have

x=0 y=x+=x let y=1

and try to evaluate y first, y evaluates to x+=x which evaluates to 0 and the 
overall expression is invalid again.

I've also already proven that at least in ksh it goes right to left, because 
if you define a setter property to trigger a side-effect for each variable, 
the RHS fires before the LHS of the +=.

There's just no amount of mind-bending I can think of that could make 
evaluating the += first produce anything other than an error.
-- 
Dan Douglas

Reply via email to