[Python-Dev] problem with genexp

Jiwon Seo seojiwon at gmail.com
Mon Oct 17 10:59:20 CEST 2005


On 10/16/05, Neal Norwitz <nnorwitz at gmail.com> wrote:
> On 10/10/05, Neal Norwitz <nnorwitz at gmail.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?
>
> -argument: [test '='] test [gen_for] # Really [keyword '='] test
> +argument: test [gen_for] | test '=' test ['(' gen_for ')'] # Really
> [keyword '='] test

The other option would be changes in the Python/compile.c (somewhat)
like following

diff -r2.352 compile.c
6356c6356,6362
-               if (TYPE(n) == argument && NCH(n) == 3) {
---
+               if (TYPE(n) == argument && NCH(n) == 4) {
+                       PyErr_SetString(PyExc_SyntaxError,
+                                                       "invalid syntax");
+                       symtable_error(st, n->n_lineno);
+                       return;
+               }
+               else if (TYPE(n) == argument && NCH(n) == 3) {

but IMO, changing the Grammar looks more obvious.

>
> n
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: http://mail.python.org/mailman/options/python-dev/seojiwon%40gmail.com
>
>


More information about the Python-Dev mailing list