mirror of
https://github.com/python/cpython.git
synced 2025-07-07 19:35:27 +00:00

Prepare the docs for using the notation used in the `python.gram` file. If we want to sync the two, the meta-syntax should be the same. Link the Full Grammar docs here; keep only a few extras. Also, remove the distinction between lexical and syntactic rules, except for whitespace handling. With f- and t-strings, the line between the two is blurry. Co-authored-by: Blaise Pabon <blaise@gmail.com> Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com> Co-authored-by: Lysandros Nikolaou <lisandrosnik@gmail.com> Co-authored-by: Colin Marquardt <cmarqu42@gmail.com>
22 lines
793 B
ReStructuredText
22 lines
793 B
ReStructuredText
.. _full-grammar-specification:
|
|
|
|
Full Grammar specification
|
|
==========================
|
|
|
|
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.
|
|
|
|
The notation used here is the same as in the preceding docs,
|
|
and is described in the :ref:`notation <notation>` section,
|
|
except for a few extra complications:
|
|
|
|
* ``&e``: a positive lookahead (that is, ``e`` is required to match but
|
|
not consumed)
|
|
* ``!e``: a negative lookahead (that is, ``e`` is required *not* to match)
|
|
* ``~`` ("cut"): commit to the current alternative and fail the rule
|
|
even if this fails to parse
|
|
|
|
.. literalinclude:: ../../Grammar/python.gram
|
|
:language: peg
|