Message326639
| Author | ncoghlan |
|---|---|
| Recipients | Julian, barry, benjamin.peterson, eric.araujo, ezio.melotti, georg.brandl, ishimoto, lukasz.langa, ncoghlan, pablogsal, r.david.murray, serhiy.storchaka, steven.daprano, ulope |
| Date | 2018-09-28.14:48:19 |
| SpamBayes Score | -1.0 |
| Marked as misclassified | Yes |
| Message-id | <1538146099.41.0.545547206417.issue12782@psf.upfronthosting.co.za> |
| In-reply-to |
| Content | |
|---|---|
Especially since the dynamic flexibility of ExitStack comes at a genuine runtime cost when unwinding the resource stack.
I also (very!) belatedly noticed that I never answered Julian's request for clarification about the potential grammar ambiguity, so going into detail about that now:
The first item in the grammar after the 'with' keyword is a 'test' node, which can already start with a parenthesis, which means a naive attempt at allowing grouping parentheses will likely fail to generate a valid LL(1) parser.
That doesn't mean a more sophisticated change isn't possible (and Pablo has apparently implemented one) - it just means that the required grammar update is going to be more complicated than just changing:
with_stmt: 'with' with_item (',' with_item)* ':' suite
to be:
with_stmt: 'with' (with_items | '(' with_items ')') ':' suite
with_items: with_item (',' with_item)*
(That would need too much lookahead to decide whether an opening parenthesis belongs to the first 'with_item' in 'with_items' or if it's starting the alternative multi-line grouping construct) |
|
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2018-09-28 14:48:19 | ncoghlan | set | recipients: + ncoghlan, barry, georg.brandl, ishimoto, benjamin.peterson, ezio.melotti, eric.araujo, steven.daprano, r.david.murray, lukasz.langa, Julian, serhiy.storchaka, ulope, pablogsal |
| 2018-09-28 14:48:19 | ncoghlan | set | messageid: <1538146099.41.0.545547206417.issue12782@psf.upfronthosting.co.za> |
| 2018-09-28 14:48:19 | ncoghlan | link | issue12782 messages |
| 2018-09-28 14:48:19 | ncoghlan | create | |