From c40101bad18534f12b48af9007dd6aa2271593ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D1=80=D0=B8=D1=81=20=D0=92=D0=B5=D1=80=D1=85?= =?UTF-8?q?=D0=BE=D0=B2=D1=81=D0=BA=D0=B8=D0=B9?= Date: Sat, 10 Jul 2021 09:40:22 -0600 Subject: [PATCH] PEP 617: Grammar (#2029) --- pep-0617.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pep-0617.rst b/pep-0617.rst index 2b9ec2f84..08d074535 100644 --- a/pep-0617.rst +++ b/pep-0617.rst @@ -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: ::