diff options
author | Ken Jin <kenjin@python.org> | 2024-02-13 13:24:48 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-13 13:24:48 (GMT) |
commit | 7cce8576226249461baa91c4a89770a1823b44a4 (patch) | |
tree | c9df9d9fa2fa090706b11982d014b07c2221fcce /Tools/cases_generator/parsing.py | |
parent | ccc76c3e88647e416184bb1f5210b4e8946ae358 (diff) | |
download | cpython-7cce8576226249461baa91c4a89770a1823b44a4.zip cpython-7cce8576226249461baa91c4a89770a1823b44a4.tar.gz cpython-7cce8576226249461baa91c4a89770a1823b44a4.tar.bz2 |
gh-114058: Foundations of the Tier2 redundancy eliminator (GH-115085)
---------
Co-authored-by: Mark Shannon <9448417+markshannon@users.noreply.github.com>
Co-authored-by: Jules <57632293+JuliaPoo@users.noreply.github.com>
Co-authored-by: Guido van Rossum <gvanrossum@users.noreply.github.com>
Diffstat (limited to 'Tools/cases_generator/parsing.py')
-rw-r--r-- | Tools/cases_generator/parsing.py | 26 |
1 files changed, 5 insertions, 21 deletions
diff --git a/Tools/cases_generator/parsing.py b/Tools/cases_generator/parsing.py index 307919c..a8961f2 100644 --- a/Tools/cases_generator/parsing.py +++ b/Tools/cases_generator/parsing.py @@ -75,11 +75,6 @@ class StackEffect(Node): size: str = "" # Optional `[size]` # Note: size cannot be combined with type or cond - # Optional `(type, refinement)` - type_prop: None | tuple[str, None | str] = field( - default_factory=lambda: None, init=True, compare=False, hash=False - ) - def __repr__(self) -> str: items = [self.name, self.type, self.cond, self.size] while items and items[-1] == "": @@ -260,25 +255,14 @@ class Parser(PLexer): @contextual def stack_effect(self) -> StackEffect | None: - # IDENTIFIER [':' [IDENTIFIER [TIMES]] ['&' '(' IDENTIFIER ['+' IDENTIFIER] ')']] ['if' '(' expression ')'] + # IDENTIFIER [':' IDENTIFIER [TIMES]] ['if' '(' expression ')'] # | IDENTIFIER '[' expression ']' if tkn := self.expect(lx.IDENTIFIER): type_text = "" - type_prop = None if self.expect(lx.COLON): - if i := self.expect(lx.IDENTIFIER): - type_text = i.text.strip() - if self.expect(lx.TIMES): - type_text += " *" - if self.expect(lx.AND): - consumed_bracket = self.expect(lx.LPAREN) is not None - type_prop_text = self.require(lx.IDENTIFIER).text.strip() - refinement = None - if self.expect(lx.PLUS): - refinement = self.require(lx.IDENTIFIER).text.strip() - type_prop = (type_prop_text, refinement) - if consumed_bracket: - self.require(lx.RPAREN) + type_text = self.require(lx.IDENTIFIER).text.strip() + if self.expect(lx.TIMES): + type_text += " *" cond_text = "" if self.expect(lx.IF): self.require(lx.LPAREN) @@ -295,7 +279,7 @@ class Parser(PLexer): self.require(lx.RBRACKET) type_text = "PyObject **" size_text = size.text.strip() - return StackEffect(tkn.text, type_text, cond_text, size_text, type_prop) + return StackEffect(tkn.text, type_text, cond_text, size_text) return None @contextual |