[issue43892] Make match patterns explicit in the AST
Nick Coghlan
report at bugs.python.org
Tue Apr 20 10:01:31 EDT 2021
Nick Coghlan <ncoghlan at gmail.com> added the comment:
It's specifically the definition of "match_case" in the AST that is affected:
match_case = (pattern pattern, expr? guard, stmt* body)
pattern = MatchAlways
| MatchValue(expr value)
| MatchConstant(constant value)
| MatchSequence(pattern* patterns)
| MatchMapping(expr* keys, pattern* patterns)
| MatchClass(expr cls, pattern* patterns, identifier* extra_attrs, pattern* extra_patterns)
| MatchRestOfSequence(identifier? target)
-- A NULL entry in the MatchMapping key list handles capturing extra mapping keys
| MatchAs(pattern? pattern, identifier target)
| MatchOr(pattern* patterns)
attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset)
Relative to the PEP 642 AST, the notion of a "matchop" is gone - MatchValue always compares by equality, and there's a MatchConstant node for the identity comparisons against None, True, and False.
The grammar, code generator, AST validator, and unparser are then updated to produce or consume the new AST nodes.
----------
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue43892>
_______________________________________
More information about the Python-bugs-list
mailing list