Obviously the AST needs to be changed. How? I dunno. Sounds like you have some ideas. :-)
On Mon, Oct 31, 2016 at 2:44 PM, Random832 <random...@fastmail.com> wrote: > On Mon, Oct 31, 2016, at 13:16, Guido van Rossum wrote: > > For "everything to the right" it would seem we have some freedom: e.g. > > if we have "foo.bar?.baz(bletch)" is the call included? The answer is > > yes -- the concept we're after here is named "trailer" in the Grammar > > file in the source code ( > > https://github.com/python/cpython/blob/master/Grammar/Grammar#L119), > > and "primary" in the reference manual ( > > https://docs.python.org/3/reference/expressions.html#primaries). This > > means all attribute references ("x.y"), index/slice operations > > ("x[...]"), and calls ("x(...)"). > > One thing that I think I touched on in an earlier iteration of this > discussion but hasn't been revisited is: what's the AST going to look > like? > > Right now, foo.bar.baz(bletch) is Call(Attribute(Attribute(Name('foo'), > 'bar'), 'baz'), [Name('bletch')])), which is identical to > (foo.bar).baz(bletch) or (foo.bar.baz)(bletch). These are treated, > essentially, as postfix operators, where you can parenthesize any left > part of the expression and leave its meaning [and its AST] unchanged. > > Is the AST going to be unchanged, leading to the conclusion that the > short-circuiting in (foo?.bar).baz will "reach outside of" the > parentheses, and relying on the fact that wanting to do that with None > is a silly thing to do in almost all cases? Or is there going to be a > new kind of AST that is sequential rather than recursive in how it > represents trailer/primary expressions? > _______________________________________________ > Python-ideas mailing list > Python-ideas@python.org > https://mail.python.org/mailman/listinfo/python-ideas > Code of Conduct: http://python.org/psf/codeofconduct/ > -- --Guido van Rossum (python.org/~guido)
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/