Keyword abuse (was RE: [Python-Dev] Lockstep iteration - eureka!)

Tim Peters tim_one@email.msn.com
Thu, 10 Aug 2000 20:44:06 -0400


[Skip Montanaro]
> Could this be extended to many/most/all current instances of
> keywords in Python?  As Tim pointed out, Fortran has no keywords.
> It annoys me that I (for example) can't define a method named "print".

This wasn't accidental in Fortran, though:  X3J3 spent many tedious hours
fiddling the grammar to guarantee it was always possible.  Python wasn't
designed with this in mind, and e.g. there's no meaningful way to figure out
whether

    raise

is an expression or a "raise stmt" in the absence of keywords.  Fortran is
very careful to make sure such ambiguities can't arise.

A *reasonable* thing is to restrict global keywords to special tokens that
can begin a line.  There's real human and machine parsing value in being
able to figure out what *kind* of stmt a line represents from its first
token.  So letting "print" be a variable name too would, IMO, really suck.

But after that, I don't think users have any problem understanding that
different stmt types can have different syntax.  For example, if "@" has a
special meaning in "print" statments, big deal.  Nobody splits a spleen over
seeing

    a   b, c, d

when "a" happens to be "exec" or "print" today, despite that most stmts
don't allow that syntax, and even between "exec" and "print" it has very
different meanings.  Toss in "global", "del" and "import" too for other
twists on what the "b, c, d" part can look like and mean.

As far as I'm concerned, each stmt type can have any syntax it damn well
likes!   Identifiers with special meaning *after* a keyword-introduced stmt
can usually be anything at all without making them global keywords (be it
"as" after "import", or "indexing" after "for", or ...).  The only thing
Python is missing then is a lisp stmt <wink>:

    lisp (setq a (+ a 1))

Other than that, the JPython hack looks cool too.

Note that SSKs (stmt-specific keywords) present a new problem to colorizers
(or moral equivalents like font-lock), and to other tools that do more than
a trivial parse.

the-road-to-p3k-has-toll-booths-ly y'rs  - tim