Revision 269bf56e3d352c415ec38f93017ba8e291ddb18a authored by Miss Islington (bot) on 22 October 2021, 18:29:52 UTC, committed by GitHub on 22 October 2021, 18:29:52 UTC
(cherry picked from commit f6e8b80d20159596cf641305bad3a833bedd2f4f)

Co-authored-by: Christian Heimes <christian@python.org>
1 parent aa8c344
Raw File
grammar.rst
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 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
back to top