| 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). See |
| :pep:`617` for more details on the grammar's syntax. |
| |
| .. literalinclude:: ../../Grammar/python.gram |
| :language: peg |