[Python-ideas] Default arguments in Python - the return - running out of ideas but...
spir
denis.spir at free.fr
Wed May 13 17:54:37 CEST 2009
Le Wed, 13 May 2009 11:52:57 -0300,
Jeremy Banks <jeremy at jeremybanks.ca> s'exprima ainsi:
> To someone who's a novice to this, could someone explain to me why it
> has to be an existing keyword at all? Since not identifiers are valid
> in that context anyway, why couldn't it be a new keyword that can
> still be used as an identifier in valid contexts? For example (not
> that I advocate this choice of keyword at all):
>
> def foo(bar reinitialize_default []): # <-- it's a keyword here
> reinitialize_default = "It's an identifier here!"
>
> That would be a syntax error now and if it were defined as a keyword
> only in that context it wouldn't introduce backwards compatibility
> problems and wouldn't force us to reuse an existing keyword in a
> context that may be a bit of a stretch.
>
> Is there a reason that this wouldn't be a viable approach?
My opinion on this is you're basically right. Even 'print' (for py<3.0) could be an identifier you could use in an assignment (or in any value expression), I guess, for parse patterns are different:
print_statement : "print" expression
assignment : name '=' expression
So you can safely have "print" as name, or inside an expression. Even "print print" should work !
But traditionnally grammars are not built as a single & total definition of the whole language (like is often done using e.g. PEG, see http://en.wikipedia.org/wiki/Parsing_Expression_Grammar) but as a 2-layer definition: one for tokens (lexicon & morphology) and one for higher-level patterns (syntax & structure).
The token layer is performed by a lexer that will not take the context into account to recognize tokens, so that it could not distinguish several, syntactically & semantically different, occurrences of "print" like above.
As a consequence, in most languages,
key word = reserved word
There may be other reasons I'm not aware of.
Denis
------
la vita e estrany
More information about the Python-ideas
mailing list