[Python-Dev] [SPAM: 3.000] [issue11682] PEP 380 reference implementation for 3.3 (original) (raw)
Greg Ewing greg.ewing at canterbury.ac.nz
Wed Nov 9 23:13:15 CET 2011
- Previous message: [Python-Dev] [SPAM: 3.000] [issue11682] PEP 380 reference implementation for 3.3
- Next message: [Python-Dev] [SPAM: 3.000] [issue11682] PEP 380 reference implementation for 3.3
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Guido van Rossum wrote:
I see this as inevitable. By the time the parser sees 'yield' it has made its choices; the 'from' keyword cannot modify that. So whenever "yield expr" must be parenthesized, "yield from expr" must too.
This is patently untrue, because by version of the grammar allows 'f(yield from x)', while disallowing 'f(yield x)'.
I made a conscious decision to do that, and I'm a bit alarmed at this decision being overridden at the last moment with no debate.
At the same time, "yield expr, expr" works;
Um, no, that's a syntax error in any context, as far as I can see.
but does "yield from expr, expr" mean anything?
In my current grammar, it's a syntax error on its own, but 'f(yield from x, y)' parses as 'f((yield from x), y)', which seems like a reasonable interpretation to me.
What's not quite so reasonable is that if you have an expression such as
f(x) + g(y)
and you decide to turn f into a generator, the obvious way to rewrite it would be
yield from f(x) + g(y)
but that unfortunately parses as
yield from (f(x) + g(y))
If I'd thought about this more at the time, I would probably have tried to make the argument to yield-from something further down in the expression hierarchy, such as a power. That might be tricky to achieve while keeping the existing behaviour of 'yield', though.
-- Greg
- Previous message: [Python-Dev] [SPAM: 3.000] [issue11682] PEP 380 reference implementation for 3.3
- Next message: [Python-Dev] [SPAM: 3.000] [issue11682] PEP 380 reference implementation for 3.3
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]