"Steve Holden" <[EMAIL PROTECTED]> wrote in message 
news:[EMAIL PROTECTED]
| Terry Reedy wrote:
| > The assignment order is specified in the language reference.
|
| Where? I'm looking at
|
|   http://docs.python.org/ref/assignment.html
|
| right now.

The first line of the syntax grammar is:
assignment_stmt ::= (target_list "=")+ expression_list

The '+' means 1 or more 'target_list =' occurances.

The first line of the semantic explanation is:

" An assignment statement evaluates the expression list (...) and assigns 
the single resulting object to each of the target lists, from left to 
right."

Left to right.

And one can also check the byte code:
>>> dis.dis(compile('a=b=c', '', 'single'))
  1           0 LOAD_NAME                0 (c)
              3 DUP_TOP
              4 STORE_NAME               1 (a)
              7 STORE_NAME               2 (b)
             10 LOAD_CONST               0 (None)
             13 RETURN_VALUE

| as valid assignments, but I can't find the part where
|
| a = b = c
|
| is defined. Help me out here. It looks as though the real syntax should
| be something like
|
| assignment_stmt  ::=  (target_list "=")+ expression_list |
|                                 (target_list "=")+ assignment_stmt

You only need the first line (see above).

Terry Jan Reedy



-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to