On 5/16/2018 1:24 PM, Adam Bartoš wrote:
Hello,

I have yet another idea regarding the the clashes between new keywords and already used names. How about introducing two new keywords *wink* that would serve as lexical keyword/nonkeyword declarations, similarly to nonlocal and global declarations?

def f():
     nonkeyword if
     if = 2 # we use 'if' as an identifier
     def g():
         keyword if
         if x > 0: pass # now 'if' again introduces a conditional statement

These are not at all similar to 'global' and 'nonlocal'. These would make Python into a syntactically context-dependent language, rather than a restricted (ll(1)) context-free language. I am pretty sure that the current parser generator could not handle this.

'Global' and 'nonlocal' have NO effect on what is syntactically legal and therefore no effect on syntax parsing. They only affect the meaning (semantics) of other statements within the same function. The compiler handles this by making two passes over a function body.

--
Terry Jan Reedy


_______________________________________________
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