Steve Holden <[EMAIL PROTECTED]> wrote:
> In other words, > > assignment_stmt ::= (target_list "=") expression_list | > (target_list "=") assignment_stmt > > and > > assignment_stmt ::= (target_list "=") assignment_stmt | > (target_list "=") expression_list > > are entirely equivalent I'm not quite sure what you are getting at. An assigment_stmt and an expression_list are not ambiguous so those two productions are identical (not just equivalent). Perhaps you are thinking of productions like: m_expr ::= u_expr | m_expr "*" u_expr which will match the same input, but could produce a different parser output than: m_expr ::= u_expr | u_expr "*" m_expr > I'm sure you understand that syntax only specifies what's legal, not how > it should be interpreted. I agree that the syntax does not mandate how it should be interpreted, but it does lead to expectations. If the expression_stmt is hidden from the outer assignment_stmt by an inner one then it is reasonable to expect that the inner production will be completely evaluated before the outer assignment happens. i.e. right to left. -- http://mail.python.org/mailman/listinfo/python-list