Regarding this Grammar change; (last October) from argument: [test '=' ] test [gen_for] to argument: test [gen_for] | test '=' test ['(' gen_for ')']
- to raise error for "bar(a = i for i in range(10)) )"
I think we should change it to argument: test [gen_for] | test '=' test
instead of argument: test [gen_for] | test '=' test ['(' gen_for ')']
that is, without ['(' gen_for ')'] . We don't need that extra term, because "test" itself includes generator expressions - with all those parensises. Actually with that extra ['(' gen_for ')'] , foo(a= 10 (for y in 'a')) is grammartically correct ; although that error seems to be checked elsewhere.
I tested without ['(' gen_for ')'] , and worked fine passing Lib/test/test_genexps.py
On 10/20/05, Neal Norwitz email@example.com wrote:
On 10/16/05, Neal Norwitz firstname.lastname@example.org wrote:
On 10/10/05, Neal Norwitz email@example.com wrote:
There's a problem with genexp's that I think really needs to get fixed. See http://python.org/sf/1167751 the details are below. This code:
foo(a = i for i in range(10))
I agree with the bug report that the code should either raise a SyntaxError or do the right thing.
The change to Grammar/Grammar below seems to fix the problem and all the tests pass. Can anyone comment on whether this fix is correct/appropriate? Is there a better way to fix the problem?
Since no one responded other than Jiwon, I checked in this change. I did *not* backport it since what was syntactically correct in 2.4.2 would raise an error in 2.4.3. I'm not sure which is worse. I'll leave it up to Anthony whether this should be backported.
BTW, the change was the same regardless of old code vs. new AST code.
n _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/seojiwon%40gmail.com