
On 08/31/2016 07:25 PM, Guido van Rossum wrote:
On Wed, Aug 31, 2016 at 2:46 PM, Shane Hathaway <shane@hathawaymix.org> wrote: [...]
I'd like to suggest a small change to the Python parser that would make long expressions read better:
rows = dbsession.query(Table1) ... .join( Table2, Table2.y = Table1.y) .filter(Table1.x = xx) .all()
[...] (And no, this isn't equivalent to using '\'.)
Exactly.
Would this be enforced in the grammar or by the lexer? Since you say you expect the indentation to be enforced, that suggests it would be done by the grammar, but then the question is how you would modify the grammar? You could take the rule that says an expression can be followed by ".NAME" and extended it to also allow "... INDENT xxxxx DEDENT" where the xxxxx is whatever's allowed at ".NAME" (i.e. ".NAME" followed by other tails like "(......)" or "[.......]".
But then you could only use this new idea for chaining method calls, and not for spreading other large expressions across multiple lines.
Yes, I was hoping the enhancement might be useful for more than just chaining method calls; if possible, the ellipsis should be allowed between any expression tokens. I'll study the grammar and see if my idea fits cleanly somehow. Thanks! Shane