72 lines
1.9 KiB
Plaintext
72 lines
1.9 KiB
Plaintext
|
PEP: 306
|
|||
|
Title: How to Change Python's Grammar
|
|||
|
Version: $Revision$
|
|||
|
Last-Modified: $Date$
|
|||
|
Author: Michael Hudson <mwh@python.net>
|
|||
|
Status: Draft
|
|||
|
Type: Informational
|
|||
|
Content-Type: text/plain
|
|||
|
Created: 29-Jan-2003
|
|||
|
Post-History:
|
|||
|
|
|||
|
|
|||
|
Abstract
|
|||
|
|
|||
|
There's more to changing Python's grammar than editing
|
|||
|
Grammar/Grammar and Python/compile.c. This PEP aims to be a
|
|||
|
checklist of places that must also be fixed.
|
|||
|
|
|||
|
It is probably incomplete. If you see omissions, just add them if
|
|||
|
you can -- you are not going to offend the author's sense of
|
|||
|
ownership. Otherwise submit a bug or patch and assign it to mwh.
|
|||
|
|
|||
|
This PEP is not intended to be an instruction manual on Python
|
|||
|
grammar hacking.
|
|||
|
|
|||
|
|
|||
|
Rationale
|
|||
|
|
|||
|
People are getting this wrong all the time; it took well over a
|
|||
|
year before someone noticed[1] that adding the floor division
|
|||
|
operator (//) broke the parser module.
|
|||
|
|
|||
|
|
|||
|
Checklist
|
|||
|
|
|||
|
__ Grammar/Grammar: OK, you'd probably worked this one out :)
|
|||
|
|
|||
|
__ Python/compile.c: you'll most likely need to edit both the
|
|||
|
actual compiler and the symtable builder (which is to say both
|
|||
|
the com_foo and the sym_foo functions).
|
|||
|
|
|||
|
__ You may need to regenerate Lib/symbol.py and/or Lib/token.py.
|
|||
|
|
|||
|
__ The parser module. Add some of your new syntax to test_parser,
|
|||
|
bang on parsermodule.c until it passes.
|
|||
|
|
|||
|
__ The compiler package. A good test is to compile the standard
|
|||
|
library and test suite with the compiler package and then check
|
|||
|
it runs. You did add some of your new syntax to the test
|
|||
|
suite, didn't you? There's a script in Tools/compiler that
|
|||
|
does this.
|
|||
|
|
|||
|
|
|||
|
References
|
|||
|
|
|||
|
[1] SF Bug #676521, parser module validation failure
|
|||
|
http://www.python.org/sf/676521
|
|||
|
|
|||
|
|
|||
|
Copyright
|
|||
|
|
|||
|
This document has been placed in the public domain.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Local Variables:
|
|||
|
mode: indented-text
|
|||
|
indent-tabs-mode: nil
|
|||
|
sentence-end-double-space: t
|
|||
|
fill-column: 70
|
|||
|
End:
|