From 53a8b17895e91d08f76a2fb59a555d012cd85ab4 Mon Sep 17 00:00:00 2001 From: Pablo Galindo Salgado Date: Fri, 10 Jun 2022 16:56:45 +0100 Subject: gh-93671: Avoid exponential backtracking in deeply nested sequence patterns in match statements (GH-93680) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Ɓukasz Langa --- Grammar/python.gram | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'Grammar') diff --git a/Grammar/python.gram b/Grammar/python.gram index 15c40b6bbba..67b7a553b93 100644 --- a/Grammar/python.gram +++ b/Grammar/python.gram @@ -471,7 +471,7 @@ or_pattern[pattern_ty]: | patterns[asdl_pattern_seq*]='|'.closed_pattern+ { asdl_seq_LEN(patterns) == 1 ? asdl_seq_GET(patterns, 0) : _PyAST_MatchOr(patterns, EXTRA) } -closed_pattern[pattern_ty]: +closed_pattern[pattern_ty] (memo): | literal_pattern | capture_pattern | wildcard_pattern @@ -558,7 +558,7 @@ maybe_star_pattern[pattern_ty]: | star_pattern | pattern -star_pattern[pattern_ty]: +star_pattern[pattern_ty] (memo): | '*' target=pattern_capture_target { _PyAST_MatchStar(target->v.Name.id, EXTRA) } | '*' wildcard_pattern { @@ -1312,4 +1312,4 @@ invalid_kvpair: | a=expression !(':') { RAISE_ERROR_KNOWN_LOCATION(p, PyExc_SyntaxError, a->lineno, a->end_col_offset - 1, a->end_lineno, -1, "':' expected after dictionary key") } | expression ':' a='*' bitwise_or { RAISE_SYNTAX_ERROR_STARTING_FROM(a, "cannot use a starred expression in a dictionary value") } - | expression a=':' {RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "expression expected after dictionary key and ':'") } \ No newline at end of file + | expression a=':' {RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "expression expected after dictionary key and ':'") } -- cgit v1.2.3