PEP 617: Grammar (#2029)
This commit is contained in:
parent
f6c6e24976
commit
c40101bad1
|
@ -158,7 +158,7 @@ machinery in CPython that motivates the need for a new parser.
|
|||
Some rules are not actually LL(1)
|
||||
---------------------------------
|
||||
|
||||
Although the Python grammar is technically an LL(1) grammar (because is parsed by
|
||||
Although the Python grammar is technically an LL(1) grammar (because it is parsed by
|
||||
an LL(1) parser) several rules are not LL(1) and several workarounds are
|
||||
implemented in the grammar and in other parts of CPython to deal with this. For
|
||||
example, consider the rule for assignment expressions::
|
||||
|
@ -472,7 +472,7 @@ that parses grammar files is bootstrapped from a meta-grammar file with
|
|||
Python actions that generate the grammar tree as a result of the parsing.
|
||||
|
||||
In the specific case of the new proposed PEG grammar for Python, having
|
||||
actions allows to directly describe how the AST is composed in the grammar
|
||||
actions allows directly describing how the AST is composed in the grammar
|
||||
itself, making it more clear and maintainable. This AST generation process is
|
||||
supported by the use of some helper functions that factor out common AST
|
||||
object manipulations and some other required operations that are not directly
|
||||
|
@ -585,8 +585,8 @@ The full meta-grammar for the grammars supported by the PEG generator is:
|
|||
| "?" { "?" }
|
||||
| ":" { ":" }
|
||||
|
||||
As an illustrative example this simple grammar file allows to directly
|
||||
generate a full parser that can parse simple arithmetic expressions and that
|
||||
As an illustrative example this simple grammar file allows directly
|
||||
generating a full parser that can parse simple arithmetic expressions and that
|
||||
returns a valid C-based Python AST:
|
||||
|
||||
::
|
||||
|
|
Loading…
Reference in New Issue