]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
[3.14] gh-143054: Disallow non-top-level Cut for now (GH-143622) (GH-143790)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Thu, 15 Jan 2026 12:52:39 +0000 (13:52 +0100)
committerGitHub <noreply@github.com>
Thu, 15 Jan 2026 12:52:39 +0000 (13:52 +0100)
commitbbd11568a71a47df934d1eb9318b5177ae7bc8a7
treeebbcdd33664485a480f243b6dabbdf310c654a99
parent37c4a6551a5773971f15cf43475d36bd69f8bdf9
[3.14] gh-143054: Disallow non-top-level Cut for now (GH-143622) (GH-143790)

The behaviour of Cut in nested parentheses, Repeat, Opt, and similar
is somewhat chaotic. Apparently even the academic papers on PEG aren't
as clear as they could be.

And it doesn't really matter. Python only uses top-level cuts.
When that changes, we can clarify as much as necessary (and even
change the implementation to make sense for what we'll need).

Document that this is deliberately unspecified, and add a test to
make sure any decision is deliberate, tested and documented.
(cherry picked from commit f0a0467c176e245a8fd45d4480a0876d748d7e78)

Co-authored-by: Petr Viktorin <encukou@gmail.com>
Doc/reference/grammar.rst
Lib/test/test_peg_generator/test_grammar_validator.py
Lib/test/test_peg_generator/test_pegen.py
Tools/peg_generator/pegen/validator.py