mirror of
https://github.com/python/cpython
synced 2026-09-29 11:30:29 +03:00
bpo-40939: Use the new grammar for the grammar specification documentation (GH-19969)
(We censor the heck out of actions and some other stuff using a custom "highlighter".) Co-authored-by: Guido van Rossum <guido@python.org>
This commit is contained in:
parent
67987acd5d
commit
72cabb2aa6
4 changed files with 91 additions and 210 deletions
|
|
@ -1,7 +1,19 @@
|
|||
Full Grammar specification
|
||||
==========================
|
||||
|
||||
This is the full Python grammar, as it is read by the parser generator and used
|
||||
to parse Python source files:
|
||||
This is the full Python grammar, derived directly from the grammar
|
||||
used to generate the CPython parser (see :source:`Grammar/python.gram`).
|
||||
The version here omits details related to code generation and
|
||||
error recovery.
|
||||
|
||||
.. literalinclude:: ../../Grammar/Grammar
|
||||
The notation is a mixture of `EBNF
|
||||
<https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form>`_
|
||||
and `PEG <https://en.wikipedia.org/wiki/Parsing_expression_grammar>`_.
|
||||
In particular, ``&`` followed by a symbol, token or parenthesized
|
||||
group indicates a positive lookahead (i.e., is required to match but
|
||||
not consumed), while ``!`` indicates a negative lookahead (i.e., is
|
||||
required _not_ to match). We use the ``|`` separator to mean PEG's
|
||||
"ordered choice" (written as ``/`` in traditional PEG grammars).
|
||||
|
||||
.. literalinclude:: ../../Grammar/python.gram
|
||||
:language: peg
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue