]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
gh-124889: Remove redundant artificial rules in PEG parser (#124893)
authorefimov-mikhail <efimov.mikhail@gmail.com>
Thu, 3 Oct 2024 12:58:56 +0000 (15:58 +0300)
committerGitHub <noreply@github.com>
Thu, 3 Oct 2024 12:58:56 +0000 (13:58 +0100)
commit1f9025a4e7819bb4f7799784710f0f3750a9ca31
tree4a778b37858077fa84b2966075ab1381b5b8c146
parente6dd71da3acc21edcc205d024d18004c7a3c7f45
gh-124889: Remove redundant artificial rules in PEG parser (#124893)

Cache in C PEG-generator reworked:
we save artificial rules in cache by Node string representation as a key instead of Node object itself.
As a result total count of artificial rules in parsers.c is lowered from 283 to 170.
More natural number ordering is used for the names of artificial rules.

Auxiliary method CCallMakerVisitor._generate_artificial_rule_call is added.
Its purpose is abstracting work with artificial rules cache.

Explicit using of "is_repeat1" kwarg is added to visit_Repeat0 and visit_Repeat1 methods.
Its slightly improve code readabitily.
Parser/parser.c
Tools/peg_generator/pegen/c_generator.py
Tools/peg_generator/pegen/parser_generator.py