This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2009年03月09日 19:00 by fabioz, last changed 2022年04月11日 14:56 by admin. This issue is now closed.
| Messages (2) | |||
|---|---|---|---|
| msg83395 - (view) | Author: Fabio Zadrozny (fabioz) * | Date: 2009年03月09日 19:00 | |
Note: A discussion related to this bug was raised on: http://mail.python.org/pipermail/python-dev/2009-March/086939.html The following constructs are ambiguous in the Python 3.0 grammar: arglist: (argument ',')* (argument [','] |'*' test (',' argument)* [',' '**' test] |'**' test ) argument: test [comp_for] test: or_test or_test: and_test and_test: not_test not_test: 'not' not_test | comparison comparison: star_expr star_expr: ['*'] expr So, with that construct, having call(arglist) in a format: call(*test), the grammar would find it to be consumed in the argument construction (because of the star_expr) and not in the arglist in the '*' test. Python seems to be lucky in this because it seems to be getting in the correct choice, when that's not really possible from the grammar -- maybe it tries the 2nd construct before the 1st and succeeds because of that? It seems to me that this could actually be a bug in the Python grammar generator. It doesn't seem possible to disambiguate that without semantic actions later on, but the grammar could be changed to disambiguate that. I've used the constructs below in a JavaCC grammar successfully (and I think Python could use the same constructs): expr_stmt: testlist_star_expr (augassign (yield_expr|testlist) | ('=' (yield_expr|testlist_star_expr))*) testlist_star_expr: (test|star_expr) (',' test|star_expr)* [','] star_expr: '*' expr |
|||
| msg93167 - (view) | Author: Benjamin Peterson (benjamin.peterson) * (Python committer) | Date: 2009年09月27日 02:46 | |
Fixed in r75080. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:56:46 | admin | set | github: 49710 |
| 2009年09月27日 02:46:06 | benjamin.peterson | set | status: open -> closed nosy: + benjamin.peterson messages: + msg93167 resolution: fixed |
| 2009年03月10日 00:37:53 | rhettinger | set | priority: high |
| 2009年03月09日 19:00:12 | fabioz | create | |