[Python-ideas] Keyword declarations

Terry Reedy tjreedy at udel.edu
Wed May 16 14:37:24 EDT 2018

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

More information about the Python-ideas mailing list