Carl Smith wrote:
> I wrote:
The trouble with explicitly overriding keywords is that it still  requires old 
code to
 be changed whenever a new keyword is added...
>
For the purpose of this discussion, let's say that if any code implicitly
enables a new feature (by simply using it), all the code in that file is 'new
code' in the context of the specific feature (a bit like how `yield` works).
If `until` was a new keyword, any file that used it as a keyword would be new
code. Any other files are 'old code'.

Okay, that works because it *doesn't* require old code to explicitly
say "I'm using this word the old way". My comment was about the idea
of having to use a backslash to escape keywords used as names, or
similar schemes.

We would also allow `name.until` and `dance(until="am")` in new code, so that
we can still reference names in old code (without them becoming names in new
code).

Actually it would be fine if new code had to say "name.\until" etc.

The only problem I can see is that it would probably be near-impossible
to implement using the current parser generator. It might be doable
by keeping multiple versions of the grammar -- try to parse using the
most recent grammar, if that doesn't work, try the next most recent,
etc. But that would be pretty horrible, and it would require keeping
old cruft in the implementation forever, which we don't like doing.

--
Greg

_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to