bpo-45494: Fix parser crash when reporting errors involving invalid continuation characters (GH-28993)

There are two errors that this commit fixes:

* The parser was not correctly computing the offset and the string
  source for E_LINECONT errors due to the incorrect usage of strtok().
* The parser was not correctly unwinding the call stack when a tokenizer
  exception happened in rules involving optionals ('?', [...]) as we
  always make them return valid results by using the comma operator. We
  need to check first if we don't have an error before continuing.
This commit is contained in:
Pablo Galindo Salgado 2021-10-19 20:24:12 +01:00 committed by GitHub
parent bda69abe84
commit a106343f63
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 137 additions and 123 deletions

View file

@ -209,6 +209,10 @@ class ExceptionTests(unittest.TestCase):
src = src.decode(encoding, 'replace') src = src.decode(encoding, 'replace')
line = src.split('\n')[lineno-1] line = src.split('\n')[lineno-1]
self.assertIn(line, cm.exception.text) self.assertIn(line, cm.exception.text)
def test_error_offset_continuation_characters(self):
check = self.check
check('"\\\n"(1 for c in I,\\\n\\', 2, 2)
def testSyntaxErrorOffset(self): def testSyntaxErrorOffset(self):
check = self.check check = self.check

View file

@ -0,0 +1,2 @@
Fix parser crash when reporting errors involving invalid continuation
characters. Patch by Pablo Galindo.

View file

@ -946,7 +946,7 @@ file_rule(Parser *p)
void *a; void *a;
Token * endmarker_var; Token * endmarker_var;
if ( if (
(a = statements_rule(p), 1) // statements? (a = statements_rule(p), !p->error_indicator) // statements?
&& &&
(endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER' (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
) )
@ -1085,7 +1085,7 @@ func_type_rule(Parser *p)
if ( if (
(_literal = _PyPegen_expect_token(p, 7)) // token='(' (_literal = _PyPegen_expect_token(p, 7)) // token='('
&& &&
(a = type_expressions_rule(p), 1) // type_expressions? (a = type_expressions_rule(p), !p->error_indicator) // type_expressions?
&& &&
(_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
&& &&
@ -1441,7 +1441,7 @@ simple_stmts_rule(Parser *p)
if ( if (
(a = (asdl_stmt_seq*)_gather_4_rule(p)) // ';'.simple_stmt+ (a = (asdl_stmt_seq*)_gather_4_rule(p)) // ';'.simple_stmt+
&& &&
(_opt_var = _PyPegen_expect_token(p, 13), 1) // ';'? (_opt_var = _PyPegen_expect_token(p, 13), !p->error_indicator) // ';'?
&& &&
(newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
) )
@ -2061,7 +2061,7 @@ assignment_rule(Parser *p)
&& &&
(b = expression_rule(p)) // expression (b = expression_rule(p)) // expression
&& &&
(c = _tmp_11_rule(p), 1) // ['=' annotated_rhs] (c = _tmp_11_rule(p), !p->error_indicator) // ['=' annotated_rhs]
) )
{ {
D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]")); D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
@ -2103,7 +2103,7 @@ assignment_rule(Parser *p)
&& &&
(b = expression_rule(p)) // expression (b = expression_rule(p)) // expression
&& &&
(c = _tmp_13_rule(p), 1) // ['=' annotated_rhs] (c = _tmp_13_rule(p), !p->error_indicator) // ['=' annotated_rhs]
) )
{ {
D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]")); D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
@ -2144,7 +2144,7 @@ assignment_rule(Parser *p)
&& &&
_PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22) // token='=' _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22) // token='='
&& &&
(tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT? (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator) // TYPE_COMMENT?
) )
{ {
D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?")); D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?"));
@ -2668,7 +2668,7 @@ return_stmt_rule(Parser *p)
if ( if (
(_keyword = _PyPegen_expect_token(p, 519)) // token='return' (_keyword = _PyPegen_expect_token(p, 519)) // token='return'
&& &&
(a = star_expressions_rule(p), 1) // star_expressions? (a = star_expressions_rule(p), !p->error_indicator) // star_expressions?
) )
{ {
D(fprintf(stderr, "%*c+ return_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'return' star_expressions?")); D(fprintf(stderr, "%*c+ return_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'return' star_expressions?"));
@ -2733,7 +2733,7 @@ raise_stmt_rule(Parser *p)
&& &&
(a = expression_rule(p)) // expression (a = expression_rule(p)) // expression
&& &&
(b = _tmp_17_rule(p), 1) // ['from' expression] (b = _tmp_17_rule(p), !p->error_indicator) // ['from' expression]
) )
{ {
D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' expression ['from' expression]")); D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' expression ['from' expression]"));
@ -3097,7 +3097,7 @@ assert_stmt_rule(Parser *p)
&& &&
(a = expression_rule(p)) // expression (a = expression_rule(p)) // expression
&& &&
(b = _tmp_23_rule(p), 1) // [',' expression] (b = _tmp_23_rule(p), !p->error_indicator) // [',' expression]
) )
{ {
D(fprintf(stderr, "%*c+ assert_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'assert' expression [',' expression]")); D(fprintf(stderr, "%*c+ assert_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'assert' expression [',' expression]"));
@ -3400,7 +3400,7 @@ import_from_targets_rule(Parser *p)
&& &&
(a = import_from_as_names_rule(p)) // import_from_as_names (a = import_from_as_names_rule(p)) // import_from_as_names
&& &&
(_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','?
&& &&
(_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
) )
@ -3569,7 +3569,7 @@ import_from_as_name_rule(Parser *p)
if ( if (
(a = _PyPegen_name_token(p)) // NAME (a = _PyPegen_name_token(p)) // NAME
&& &&
(b = _tmp_28_rule(p), 1) // ['as' NAME] (b = _tmp_28_rule(p), !p->error_indicator) // ['as' NAME]
) )
{ {
D(fprintf(stderr, "%*c+ import_from_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ['as' NAME]")); D(fprintf(stderr, "%*c+ import_from_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ['as' NAME]"));
@ -3672,7 +3672,7 @@ dotted_as_name_rule(Parser *p)
if ( if (
(a = dotted_name_rule(p)) // dotted_name (a = dotted_name_rule(p)) // dotted_name
&& &&
(b = _tmp_31_rule(p), 1) // ['as' NAME] (b = _tmp_31_rule(p), !p->error_indicator) // ['as' NAME]
) )
{ {
D(fprintf(stderr, "%*c+ dotted_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name ['as' NAME]")); D(fprintf(stderr, "%*c+ dotted_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name ['as' NAME]"));
@ -4055,7 +4055,7 @@ class_def_raw_rule(Parser *p)
&& &&
(a = _PyPegen_name_token(p)) // NAME (a = _PyPegen_name_token(p)) // NAME
&& &&
(b = _tmp_33_rule(p), 1) // ['(' arguments? ')'] (b = _tmp_33_rule(p), !p->error_indicator) // ['(' arguments? ')']
&& &&
(_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':' (_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':'
&& &&
@ -4217,15 +4217,15 @@ function_def_raw_rule(Parser *p)
&& &&
(_literal = _PyPegen_expect_token(p, 7)) // token='(' (_literal = _PyPegen_expect_token(p, 7)) // token='('
&& &&
(params = params_rule(p), 1) // params? (params = params_rule(p), !p->error_indicator) // params?
&& &&
(_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
&& &&
(a = _tmp_34_rule(p), 1) // ['->' expression] (a = _tmp_34_rule(p), !p->error_indicator) // ['->' expression]
&& &&
(_literal_2 = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':' (_literal_2 = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':'
&& &&
(tc = func_type_comment_rule(p), 1) // func_type_comment? (tc = func_type_comment_rule(p), !p->error_indicator) // func_type_comment?
&& &&
(b = block_rule(p)) // block (b = block_rule(p)) // block
) )
@ -4277,15 +4277,15 @@ function_def_raw_rule(Parser *p)
&& &&
(_literal = _PyPegen_expect_token(p, 7)) // token='(' (_literal = _PyPegen_expect_token(p, 7)) // token='('
&& &&
(params = params_rule(p), 1) // params? (params = params_rule(p), !p->error_indicator) // params?
&& &&
(_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
&& &&
(a = _tmp_35_rule(p), 1) // ['->' expression] (a = _tmp_35_rule(p), !p->error_indicator) // ['->' expression]
&& &&
(_literal_2 = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':' (_literal_2 = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':'
&& &&
(tc = func_type_comment_rule(p), 1) // func_type_comment? (tc = func_type_comment_rule(p), !p->error_indicator) // func_type_comment?
&& &&
(b = block_rule(p)) // block (b = block_rule(p)) // block
) )
@ -4406,7 +4406,7 @@ parameters_rule(Parser *p)
&& &&
(c = _loop0_37_rule(p)) // param_with_default* (c = _loop0_37_rule(p)) // param_with_default*
&& &&
(d = star_etc_rule(p), 1) // star_etc? (d = star_etc_rule(p), !p->error_indicator) // star_etc?
) )
{ {
D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_no_default param_no_default* param_with_default* star_etc?")); D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_no_default param_no_default* param_with_default* star_etc?"));
@ -4436,7 +4436,7 @@ parameters_rule(Parser *p)
&& &&
(b = _loop0_38_rule(p)) // param_with_default* (b = _loop0_38_rule(p)) // param_with_default*
&& &&
(c = star_etc_rule(p), 1) // star_etc? (c = star_etc_rule(p), !p->error_indicator) // star_etc?
) )
{ {
D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default param_with_default* star_etc?")); D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
@ -4466,7 +4466,7 @@ parameters_rule(Parser *p)
&& &&
(b = _loop0_40_rule(p)) // param_with_default* (b = _loop0_40_rule(p)) // param_with_default*
&& &&
(c = star_etc_rule(p), 1) // star_etc? (c = star_etc_rule(p), !p->error_indicator) // star_etc?
) )
{ {
D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ param_with_default* star_etc?")); D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
@ -4493,7 +4493,7 @@ parameters_rule(Parser *p)
if ( if (
(a = _loop1_41_rule(p)) // param_with_default+ (a = _loop1_41_rule(p)) // param_with_default+
&& &&
(b = star_etc_rule(p), 1) // star_etc? (b = star_etc_rule(p), !p->error_indicator) // star_etc?
) )
{ {
D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+ star_etc?")); D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+ star_etc?"));
@ -4731,7 +4731,7 @@ star_etc_rule(Parser *p)
&& &&
(b = _loop0_48_rule(p)) // param_maybe_default* (b = _loop0_48_rule(p)) // param_maybe_default*
&& &&
(c = kwds_rule(p), 1) // kwds? (c = kwds_rule(p), !p->error_indicator) // kwds?
) )
{ {
D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?")); D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
@ -4764,7 +4764,7 @@ star_etc_rule(Parser *p)
&& &&
(b = _loop1_49_rule(p)) // param_maybe_default+ (b = _loop1_49_rule(p)) // param_maybe_default+
&& &&
(c = kwds_rule(p), 1) // kwds? (c = kwds_rule(p), !p->error_indicator) // kwds?
) )
{ {
D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' param_maybe_default+ kwds?")); D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
@ -4898,7 +4898,7 @@ param_no_default_rule(Parser *p)
&& &&
(_literal = _PyPegen_expect_token(p, 12)) // token=',' (_literal = _PyPegen_expect_token(p, 12)) // token=','
&& &&
(tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT? (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator) // TYPE_COMMENT?
) )
{ {
D(fprintf(stderr, "%*c+ param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param ',' TYPE_COMMENT?")); D(fprintf(stderr, "%*c+ param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param ',' TYPE_COMMENT?"));
@ -4925,7 +4925,7 @@ param_no_default_rule(Parser *p)
if ( if (
(a = param_rule(p)) // param (a = param_rule(p)) // param
&& &&
(tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT? (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator) // TYPE_COMMENT?
&& &&
_PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')' _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
) )
@ -4977,7 +4977,7 @@ param_with_default_rule(Parser *p)
&& &&
(_literal = _PyPegen_expect_token(p, 12)) // token=',' (_literal = _PyPegen_expect_token(p, 12)) // token=','
&& &&
(tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT? (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator) // TYPE_COMMENT?
) )
{ {
D(fprintf(stderr, "%*c+ param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default ',' TYPE_COMMENT?")); D(fprintf(stderr, "%*c+ param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default ',' TYPE_COMMENT?"));
@ -5007,7 +5007,7 @@ param_with_default_rule(Parser *p)
&& &&
(c = default_rule(p)) // default (c = default_rule(p)) // default
&& &&
(tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT? (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator) // TYPE_COMMENT?
&& &&
_PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')' _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
) )
@ -5057,11 +5057,11 @@ param_maybe_default_rule(Parser *p)
if ( if (
(a = param_rule(p)) // param (a = param_rule(p)) // param
&& &&
(c = default_rule(p), 1) // default? (c = default_rule(p), !p->error_indicator) // default?
&& &&
(_literal = _PyPegen_expect_token(p, 12)) // token=',' (_literal = _PyPegen_expect_token(p, 12)) // token=','
&& &&
(tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT? (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator) // TYPE_COMMENT?
) )
{ {
D(fprintf(stderr, "%*c+ param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default? ',' TYPE_COMMENT?")); D(fprintf(stderr, "%*c+ param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
@ -5089,9 +5089,9 @@ param_maybe_default_rule(Parser *p)
if ( if (
(a = param_rule(p)) // param (a = param_rule(p)) // param
&& &&
(c = default_rule(p), 1) // default? (c = default_rule(p), !p->error_indicator) // default?
&& &&
(tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT? (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator) // TYPE_COMMENT?
&& &&
_PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')' _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
) )
@ -5146,7 +5146,7 @@ param_rule(Parser *p)
if ( if (
(a = _PyPegen_name_token(p)) // NAME (a = _PyPegen_name_token(p)) // NAME
&& &&
(b = annotation_rule(p), 1) // annotation? (b = annotation_rule(p), !p->error_indicator) // annotation?
) )
{ {
D(fprintf(stderr, "%*c+ param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME annotation?")); D(fprintf(stderr, "%*c+ param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME annotation?"));
@ -5372,7 +5372,7 @@ if_stmt_rule(Parser *p)
&& &&
(b = block_rule(p)) // block (b = block_rule(p)) // block
&& &&
(c = else_block_rule(p), 1) // else_block? (c = else_block_rule(p), !p->error_indicator) // else_block?
) )
{ {
D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block else_block?")); D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block else_block?"));
@ -5510,7 +5510,7 @@ elif_stmt_rule(Parser *p)
&& &&
(b = block_rule(p)) // block (b = block_rule(p)) // block
&& &&
(c = else_block_rule(p), 1) // else_block? (c = else_block_rule(p), !p->error_indicator) // else_block?
) )
{ {
D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block else_block?")); D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block else_block?"));
@ -5666,7 +5666,7 @@ while_stmt_rule(Parser *p)
&& &&
(b = block_rule(p)) // block (b = block_rule(p)) // block
&& &&
(c = else_block_rule(p), 1) // else_block? (c = else_block_rule(p), !p->error_indicator) // else_block?
) )
{ {
D(fprintf(stderr, "%*c+ while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' block else_block?")); D(fprintf(stderr, "%*c+ while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' block else_block?"));
@ -5768,11 +5768,11 @@ for_stmt_rule(Parser *p)
&& &&
(_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':' (_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':'
&& &&
(tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT? (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator) // TYPE_COMMENT?
&& &&
(b = block_rule(p)) // block (b = block_rule(p)) // block
&& &&
(el = else_block_rule(p), 1) // else_block? (el = else_block_rule(p), !p->error_indicator) // else_block?
) )
{ {
D(fprintf(stderr, "%*c+ for_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for' star_targets 'in' ~ star_expressions &&':' TYPE_COMMENT? block else_block?")); D(fprintf(stderr, "%*c+ for_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for' star_targets 'in' ~ star_expressions &&':' TYPE_COMMENT? block else_block?"));
@ -5832,11 +5832,11 @@ for_stmt_rule(Parser *p)
&& &&
(_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':' (_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':'
&& &&
(tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT? (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator) // TYPE_COMMENT?
&& &&
(b = block_rule(p)) // block (b = block_rule(p)) // block
&& &&
(el = else_block_rule(p), 1) // else_block? (el = else_block_rule(p), !p->error_indicator) // else_block?
) )
{ {
D(fprintf(stderr, "%*c+ for_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC 'for' star_targets 'in' ~ star_expressions &&':' TYPE_COMMENT? block else_block?")); D(fprintf(stderr, "%*c+ for_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC 'for' star_targets 'in' ~ star_expressions &&':' TYPE_COMMENT? block else_block?"));
@ -5956,7 +5956,7 @@ with_stmt_rule(Parser *p)
&& &&
(a = (asdl_withitem_seq*)_gather_50_rule(p)) // ','.with_item+ (a = (asdl_withitem_seq*)_gather_50_rule(p)) // ','.with_item+
&& &&
(_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','?
&& &&
(_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
&& &&
@ -6005,7 +6005,7 @@ with_stmt_rule(Parser *p)
&& &&
(_literal = _PyPegen_expect_token(p, 11)) // token=':' (_literal = _PyPegen_expect_token(p, 11)) // token=':'
&& &&
(tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT? (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator) // TYPE_COMMENT?
&& &&
(b = block_rule(p)) // block (b = block_rule(p)) // block
) )
@ -6056,7 +6056,7 @@ with_stmt_rule(Parser *p)
&& &&
(a = (asdl_withitem_seq*)_gather_54_rule(p)) // ','.with_item+ (a = (asdl_withitem_seq*)_gather_54_rule(p)) // ','.with_item+
&& &&
(_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','?
&& &&
(_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
&& &&
@ -6108,7 +6108,7 @@ with_stmt_rule(Parser *p)
&& &&
(_literal = _PyPegen_expect_token(p, 11)) // token=':' (_literal = _PyPegen_expect_token(p, 11)) // token=':'
&& &&
(tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT? (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator) // TYPE_COMMENT?
&& &&
(b = block_rule(p)) // block (b = block_rule(p)) // block
) )
@ -6360,9 +6360,9 @@ try_stmt_rule(Parser *p)
&& &&
(ex = (asdl_excepthandler_seq*)_loop1_59_rule(p)) // except_block+ (ex = (asdl_excepthandler_seq*)_loop1_59_rule(p)) // except_block+
&& &&
(el = else_block_rule(p), 1) // else_block? (el = else_block_rule(p), !p->error_indicator) // else_block?
&& &&
(f = finally_block_rule(p), 1) // finally_block? (f = finally_block_rule(p), !p->error_indicator) // finally_block?
) )
{ {
D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?")); D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
@ -6452,7 +6452,7 @@ except_block_rule(Parser *p)
&& &&
(e = expression_rule(p)) // expression (e = expression_rule(p)) // expression
&& &&
(t = _tmp_60_rule(p), 1) // ['as' NAME] (t = _tmp_60_rule(p), !p->error_indicator) // ['as' NAME]
&& &&
(_literal = _PyPegen_expect_token(p, 11)) // token=':' (_literal = _PyPegen_expect_token(p, 11)) // token=':'
&& &&
@ -6743,7 +6743,7 @@ subject_expr_rule(Parser *p)
&& &&
(_literal = _PyPegen_expect_token(p, 12)) // token=',' (_literal = _PyPegen_expect_token(p, 12)) // token=','
&& &&
(values = star_named_expressions_rule(p), 1) // star_named_expressions? (values = star_named_expressions_rule(p), !p->error_indicator) // star_named_expressions?
) )
{ {
D(fprintf(stderr, "%*c+ subject_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?")); D(fprintf(stderr, "%*c+ subject_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
@ -6839,7 +6839,7 @@ case_block_rule(Parser *p)
&& &&
(pattern = patterns_rule(p)) // patterns (pattern = patterns_rule(p)) // patterns
&& &&
(guard = guard_rule(p), 1) // guard? (guard = guard_rule(p), !p->error_indicator) // guard?
&& &&
(_literal = _PyPegen_expect_token(p, 11)) // token=':' (_literal = _PyPegen_expect_token(p, 11)) // token=':'
&& &&
@ -8592,7 +8592,7 @@ sequence_pattern_rule(Parser *p)
if ( if (
(_literal = _PyPegen_expect_token(p, 9)) // token='[' (_literal = _PyPegen_expect_token(p, 9)) // token='['
&& &&
(patterns = maybe_sequence_pattern_rule(p), 1) // maybe_sequence_pattern? (patterns = maybe_sequence_pattern_rule(p), !p->error_indicator) // maybe_sequence_pattern?
&& &&
(_literal_1 = _PyPegen_expect_token(p, 10)) // token=']' (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
) )
@ -8631,7 +8631,7 @@ sequence_pattern_rule(Parser *p)
if ( if (
(_literal = _PyPegen_expect_token(p, 7)) // token='(' (_literal = _PyPegen_expect_token(p, 7)) // token='('
&& &&
(patterns = open_sequence_pattern_rule(p), 1) // open_sequence_pattern? (patterns = open_sequence_pattern_rule(p), !p->error_indicator) // open_sequence_pattern?
&& &&
(_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
) )
@ -8689,7 +8689,7 @@ open_sequence_pattern_rule(Parser *p)
&& &&
(_literal = _PyPegen_expect_token(p, 12)) // token=',' (_literal = _PyPegen_expect_token(p, 12)) // token=','
&& &&
(patterns = maybe_sequence_pattern_rule(p), 1) // maybe_sequence_pattern? (patterns = maybe_sequence_pattern_rule(p), !p->error_indicator) // maybe_sequence_pattern?
) )
{ {
D(fprintf(stderr, "%*c+ open_sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?")); D(fprintf(stderr, "%*c+ open_sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
@ -8734,7 +8734,7 @@ maybe_sequence_pattern_rule(Parser *p)
if ( if (
(patterns = _gather_68_rule(p)) // ','.maybe_star_pattern+ (patterns = _gather_68_rule(p)) // ','.maybe_star_pattern+
&& &&
(_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','?
) )
{ {
D(fprintf(stderr, "%*c+ maybe_sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.maybe_star_pattern+ ','?")); D(fprintf(stderr, "%*c+ maybe_sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.maybe_star_pattern+ ','?"));
@ -8985,7 +8985,7 @@ mapping_pattern_rule(Parser *p)
&& &&
(rest = double_star_pattern_rule(p)) // double_star_pattern (rest = double_star_pattern_rule(p)) // double_star_pattern
&& &&
(_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','?
&& &&
(_literal_1 = _PyPegen_expect_token(p, 26)) // token='}' (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
) )
@ -9034,7 +9034,7 @@ mapping_pattern_rule(Parser *p)
&& &&
(rest = double_star_pattern_rule(p)) // double_star_pattern (rest = double_star_pattern_rule(p)) // double_star_pattern
&& &&
(_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','?
&& &&
(_literal_2 = _PyPegen_expect_token(p, 26)) // token='}' (_literal_2 = _PyPegen_expect_token(p, 26)) // token='}'
) )
@ -9077,7 +9077,7 @@ mapping_pattern_rule(Parser *p)
&& &&
(items = items_pattern_rule(p)) // items_pattern (items = items_pattern_rule(p)) // items_pattern
&& &&
(_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','?
&& &&
(_literal_1 = _PyPegen_expect_token(p, 26)) // token='}' (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
) )
@ -9320,7 +9320,7 @@ class_pattern_rule(Parser *p)
&& &&
(patterns = positional_patterns_rule(p)) // positional_patterns (patterns = positional_patterns_rule(p)) // positional_patterns
&& &&
(_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','?
&& &&
(_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
) )
@ -9366,7 +9366,7 @@ class_pattern_rule(Parser *p)
&& &&
(keywords = keyword_patterns_rule(p)) // keyword_patterns (keywords = keyword_patterns_rule(p)) // keyword_patterns
&& &&
(_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','?
&& &&
(_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
) )
@ -9418,7 +9418,7 @@ class_pattern_rule(Parser *p)
&& &&
(keywords = keyword_patterns_rule(p)) // keyword_patterns (keywords = keyword_patterns_rule(p)) // keyword_patterns
&& &&
(_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','?
&& &&
(_literal_2 = _PyPegen_expect_token(p, 8)) // token=')' (_literal_2 = _PyPegen_expect_token(p, 8)) // token=')'
) )
@ -9629,7 +9629,7 @@ expressions_rule(Parser *p)
&& &&
(b = _loop1_77_rule(p)) // ((',' expression))+ (b = _loop1_77_rule(p)) // ((',' expression))+
&& &&
(_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','?
) )
{ {
D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ((',' expression))+ ','?")); D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ((',' expression))+ ','?"));
@ -9922,7 +9922,7 @@ yield_expr_rule(Parser *p)
if ( if (
(_keyword = _PyPegen_expect_token(p, 570)) // token='yield' (_keyword = _PyPegen_expect_token(p, 570)) // token='yield'
&& &&
(a = star_expressions_rule(p), 1) // star_expressions? (a = star_expressions_rule(p), !p->error_indicator) // star_expressions?
) )
{ {
D(fprintf(stderr, "%*c+ yield_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'yield' star_expressions?")); D(fprintf(stderr, "%*c+ yield_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'yield' star_expressions?"));
@ -9991,7 +9991,7 @@ star_expressions_rule(Parser *p)
&& &&
(b = _loop1_78_rule(p)) // ((',' star_expression))+ (b = _loop1_78_rule(p)) // ((',' star_expression))+
&& &&
(_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','?
) )
{ {
D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression ((',' star_expression))+ ','?")); D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
@ -10186,7 +10186,7 @@ star_named_expressions_rule(Parser *p)
if ( if (
(a = (asdl_expr_seq*)_gather_79_rule(p)) // ','.star_named_expression+ (a = (asdl_expr_seq*)_gather_79_rule(p)) // ','.star_named_expression+
&& &&
(_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','?
) )
{ {
D(fprintf(stderr, "%*c+ star_named_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_named_expression+ ','?")); D(fprintf(stderr, "%*c+ star_named_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_named_expression+ ','?"));
@ -12864,7 +12864,7 @@ primary_raw(Parser *p)
&& &&
(_literal = _PyPegen_expect_token(p, 7)) // token='(' (_literal = _PyPegen_expect_token(p, 7)) // token='('
&& &&
(b = arguments_rule(p), 1) // arguments? (b = arguments_rule(p), !p->error_indicator) // arguments?
&& &&
(_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
) )
@ -13016,7 +13016,7 @@ slices_rule(Parser *p)
if ( if (
(a = (asdl_expr_seq*)_gather_85_rule(p)) // ','.slice+ (a = (asdl_expr_seq*)_gather_85_rule(p)) // ','.slice+
&& &&
(_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','?
) )
{ {
D(fprintf(stderr, "%*c+ slices[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.slice+ ','?")); D(fprintf(stderr, "%*c+ slices[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.slice+ ','?"));
@ -13078,13 +13078,13 @@ slice_rule(Parser *p)
void *b; void *b;
void *c; void *c;
if ( if (
(a = expression_rule(p), 1) // expression? (a = expression_rule(p), !p->error_indicator) // expression?
&& &&
(_literal = _PyPegen_expect_token(p, 11)) // token=':' (_literal = _PyPegen_expect_token(p, 11)) // token=':'
&& &&
(b = expression_rule(p), 1) // expression? (b = expression_rule(p), !p->error_indicator) // expression?
&& &&
(c = _tmp_87_rule(p), 1) // [':' expression?] (c = _tmp_87_rule(p), !p->error_indicator) // [':' expression?]
) )
{ {
D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]")); D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]"));
@ -13528,7 +13528,7 @@ lambdef_rule(Parser *p)
if ( if (
(_keyword = _PyPegen_expect_token(p, 583)) // token='lambda' (_keyword = _PyPegen_expect_token(p, 583)) // token='lambda'
&& &&
(a = lambda_params_rule(p), 1) // lambda_params? (a = lambda_params_rule(p), !p->error_indicator) // lambda_params?
&& &&
(_literal = _PyPegen_expect_token(p, 11)) // token=':' (_literal = _PyPegen_expect_token(p, 11)) // token=':'
&& &&
@ -13651,7 +13651,7 @@ lambda_parameters_rule(Parser *p)
&& &&
(c = _loop0_93_rule(p)) // lambda_param_with_default* (c = _loop0_93_rule(p)) // lambda_param_with_default*
&& &&
(d = lambda_star_etc_rule(p), 1) // lambda_star_etc? (d = lambda_star_etc_rule(p), !p->error_indicator) // lambda_star_etc?
) )
{ {
D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?")); D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?"));
@ -13681,7 +13681,7 @@ lambda_parameters_rule(Parser *p)
&& &&
(b = _loop0_94_rule(p)) // lambda_param_with_default* (b = _loop0_94_rule(p)) // lambda_param_with_default*
&& &&
(c = lambda_star_etc_rule(p), 1) // lambda_star_etc? (c = lambda_star_etc_rule(p), !p->error_indicator) // lambda_star_etc?
) )
{ {
D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default lambda_param_with_default* lambda_star_etc?")); D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default lambda_param_with_default* lambda_star_etc?"));
@ -13711,7 +13711,7 @@ lambda_parameters_rule(Parser *p)
&& &&
(b = _loop0_96_rule(p)) // lambda_param_with_default* (b = _loop0_96_rule(p)) // lambda_param_with_default*
&& &&
(c = lambda_star_etc_rule(p), 1) // lambda_star_etc? (c = lambda_star_etc_rule(p), !p->error_indicator) // lambda_star_etc?
) )
{ {
D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?")); D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?"));
@ -13738,7 +13738,7 @@ lambda_parameters_rule(Parser *p)
if ( if (
(a = _loop1_97_rule(p)) // lambda_param_with_default+ (a = _loop1_97_rule(p)) // lambda_param_with_default+
&& &&
(b = lambda_star_etc_rule(p), 1) // lambda_star_etc? (b = lambda_star_etc_rule(p), !p->error_indicator) // lambda_star_etc?
) )
{ {
D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?")); D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
@ -13978,7 +13978,7 @@ lambda_star_etc_rule(Parser *p)
&& &&
(b = _loop0_104_rule(p)) // lambda_param_maybe_default* (b = _loop0_104_rule(p)) // lambda_param_maybe_default*
&& &&
(c = lambda_kwds_rule(p), 1) // lambda_kwds? (c = lambda_kwds_rule(p), !p->error_indicator) // lambda_kwds?
) )
{ {
D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?")); D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?"));
@ -14011,7 +14011,7 @@ lambda_star_etc_rule(Parser *p)
&& &&
(b = _loop1_105_rule(p)) // lambda_param_maybe_default+ (b = _loop1_105_rule(p)) // lambda_param_maybe_default+
&& &&
(c = lambda_kwds_rule(p), 1) // lambda_kwds? (c = lambda_kwds_rule(p), !p->error_indicator) // lambda_kwds?
) )
{ {
D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?")); D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
@ -14289,7 +14289,7 @@ lambda_param_maybe_default_rule(Parser *p)
if ( if (
(a = lambda_param_rule(p)) // lambda_param (a = lambda_param_rule(p)) // lambda_param
&& &&
(c = default_rule(p), 1) // default? (c = default_rule(p), !p->error_indicator) // default?
&& &&
(_literal = _PyPegen_expect_token(p, 12)) // token=',' (_literal = _PyPegen_expect_token(p, 12)) // token=','
) )
@ -14318,7 +14318,7 @@ lambda_param_maybe_default_rule(Parser *p)
if ( if (
(a = lambda_param_rule(p)) // lambda_param (a = lambda_param_rule(p)) // lambda_param
&& &&
(c = default_rule(p), 1) // default? (c = default_rule(p), !p->error_indicator) // default?
&& &&
_PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':' _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
) )
@ -14479,7 +14479,7 @@ list_rule(Parser *p)
if ( if (
(_literal = _PyPegen_expect_token(p, 9)) // token='[' (_literal = _PyPegen_expect_token(p, 9)) // token='['
&& &&
(a = star_named_expressions_rule(p), 1) // star_named_expressions? (a = star_named_expressions_rule(p), !p->error_indicator) // star_named_expressions?
&& &&
(_literal_1 = _PyPegen_expect_token(p, 10)) // token=']' (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
) )
@ -14544,7 +14544,7 @@ tuple_rule(Parser *p)
if ( if (
(_literal = _PyPegen_expect_token(p, 7)) // token='(' (_literal = _PyPegen_expect_token(p, 7)) // token='('
&& &&
(a = _tmp_107_rule(p), 1) // [star_named_expression ',' star_named_expressions?] (a = _tmp_107_rule(p), !p->error_indicator) // [star_named_expression ',' star_named_expressions?]
&& &&
(_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
) )
@ -14674,7 +14674,7 @@ dict_rule(Parser *p)
if ( if (
(_literal = _PyPegen_expect_token(p, 25)) // token='{' (_literal = _PyPegen_expect_token(p, 25)) // token='{'
&& &&
(a = double_starred_kvpairs_rule(p), 1) // double_starred_kvpairs? (a = double_starred_kvpairs_rule(p), !p->error_indicator) // double_starred_kvpairs?
&& &&
(_literal_1 = _PyPegen_expect_token(p, 26)) // token='}' (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
) )
@ -14755,7 +14755,7 @@ double_starred_kvpairs_rule(Parser *p)
if ( if (
(a = _gather_108_rule(p)) // ','.double_starred_kvpair+ (a = _gather_108_rule(p)) // ','.double_starred_kvpair+
&& &&
(_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','?
) )
{ {
D(fprintf(stderr, "%*c+ double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ','?")); D(fprintf(stderr, "%*c+ double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ','?"));
@ -15433,7 +15433,7 @@ arguments_rule(Parser *p)
if ( if (
(a = args_rule(p)) // args (a = args_rule(p)) // args
&& &&
(_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','?
&& &&
_PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')' _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
) )
@ -15510,7 +15510,7 @@ args_rule(Parser *p)
if ( if (
(a = (asdl_expr_seq*)_gather_114_rule(p)) // ','.(starred_expression | (assigment_expression | expression !':=') !'=')+ (a = (asdl_expr_seq*)_gather_114_rule(p)) // ','.(starred_expression | (assigment_expression | expression !':=') !'=')+
&& &&
(b = _tmp_116_rule(p), 1) // [',' kwargs] (b = _tmp_116_rule(p), !p->error_indicator) // [',' kwargs]
) )
{ {
D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assigment_expression | expression !':=') !'=')+ [',' kwargs]")); D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assigment_expression | expression !':=') !'=')+ [',' kwargs]"));
@ -16013,7 +16013,7 @@ star_targets_rule(Parser *p)
&& &&
(b = _loop0_125_rule(p)) // ((',' star_target))* (b = _loop0_125_rule(p)) // ((',' star_target))*
&& &&
(_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','?
) )
{ {
D(fprintf(stderr, "%*c+ star_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))* ','?")); D(fprintf(stderr, "%*c+ star_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))* ','?"));
@ -16067,7 +16067,7 @@ star_targets_list_seq_rule(Parser *p)
if ( if (
(a = (asdl_expr_seq*)_gather_126_rule(p)) // ','.star_target+ (a = (asdl_expr_seq*)_gather_126_rule(p)) // ','.star_target+
&& &&
(_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','?
) )
{ {
D(fprintf(stderr, "%*c+ star_targets_list_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_target+ ','?")); D(fprintf(stderr, "%*c+ star_targets_list_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_target+ ','?"));
@ -16115,7 +16115,7 @@ star_targets_tuple_seq_rule(Parser *p)
&& &&
(b = _loop1_128_rule(p)) // ((',' star_target))+ (b = _loop1_128_rule(p)) // ((',' star_target))+
&& &&
(_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','?
) )
{ {
D(fprintf(stderr, "%*c+ star_targets_tuple_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))+ ','?")); D(fprintf(stderr, "%*c+ star_targets_tuple_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))+ ','?"));
@ -16478,7 +16478,7 @@ star_atom_rule(Parser *p)
if ( if (
(_literal = _PyPegen_expect_token(p, 7)) // token='(' (_literal = _PyPegen_expect_token(p, 7)) // token='('
&& &&
(a = star_targets_tuple_seq_rule(p), 1) // star_targets_tuple_seq? (a = star_targets_tuple_seq_rule(p), !p->error_indicator) // star_targets_tuple_seq?
&& &&
(_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
) )
@ -16517,7 +16517,7 @@ star_atom_rule(Parser *p)
if ( if (
(_literal = _PyPegen_expect_token(p, 9)) // token='[' (_literal = _PyPegen_expect_token(p, 9)) // token='['
&& &&
(a = star_targets_list_seq_rule(p), 1) // star_targets_list_seq? (a = star_targets_list_seq_rule(p), !p->error_indicator) // star_targets_list_seq?
&& &&
(_literal_1 = _PyPegen_expect_token(p, 10)) // token=']' (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
) )
@ -16950,7 +16950,7 @@ t_primary_raw(Parser *p)
&& &&
(_literal = _PyPegen_expect_token(p, 7)) // token='(' (_literal = _PyPegen_expect_token(p, 7)) // token='('
&& &&
(b = arguments_rule(p), 1) // arguments? (b = arguments_rule(p), !p->error_indicator) // arguments?
&& &&
(_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
&& &&
@ -17108,7 +17108,7 @@ del_targets_rule(Parser *p)
if ( if (
(a = (asdl_expr_seq*)_gather_130_rule(p)) // ','.del_target+ (a = (asdl_expr_seq*)_gather_130_rule(p)) // ','.del_target+
&& &&
(_opt_var = _PyPegen_expect_token(p, 12), 1) // ','? (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','?
) )
{ {
D(fprintf(stderr, "%*c+ del_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.del_target+ ','?")); D(fprintf(stderr, "%*c+ del_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.del_target+ ','?"));
@ -17354,7 +17354,7 @@ del_t_atom_rule(Parser *p)
if ( if (
(_literal = _PyPegen_expect_token(p, 7)) // token='(' (_literal = _PyPegen_expect_token(p, 7)) // token='('
&& &&
(a = del_targets_rule(p), 1) // del_targets? (a = del_targets_rule(p), !p->error_indicator) // del_targets?
&& &&
(_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
) )
@ -17393,7 +17393,7 @@ del_t_atom_rule(Parser *p)
if ( if (
(_literal = _PyPegen_expect_token(p, 9)) // token='[' (_literal = _PyPegen_expect_token(p, 9)) // token='['
&& &&
(a = del_targets_rule(p), 1) // del_targets? (a = del_targets_rule(p), !p->error_indicator) // del_targets?
&& &&
(_literal_1 = _PyPegen_expect_token(p, 10)) // token=']' (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
) )
@ -17824,7 +17824,7 @@ invalid_arguments_rule(Parser *p)
&& &&
(_literal = _PyPegen_expect_token(p, 12)) // token=',' (_literal = _PyPegen_expect_token(p, 12)) // token=','
&& &&
(_opt_var = _tmp_141_rule(p), 1) // [args | expression for_if_clauses] (_opt_var = _tmp_141_rule(p), !p->error_indicator) // [args | expression for_if_clauses]
) )
{ {
D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]")); D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]"));
@ -19434,7 +19434,7 @@ invalid_for_target_rule(Parser *p)
UNUSED(_opt_var); // Silence compiler warnings UNUSED(_opt_var); // Silence compiler warnings
expr_ty a; expr_ty a;
if ( if (
(_opt_var = _PyPegen_expect_token(p, ASYNC), 1) // ASYNC? (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator) // ASYNC?
&& &&
(_keyword = _PyPegen_expect_token(p, 630)) // token='for' (_keyword = _PyPegen_expect_token(p, 630)) // token='for'
&& &&
@ -19612,7 +19612,7 @@ invalid_with_stmt_rule(Parser *p)
void *_opt_var; void *_opt_var;
UNUSED(_opt_var); // Silence compiler warnings UNUSED(_opt_var); // Silence compiler warnings
if ( if (
(_opt_var = _PyPegen_expect_token(p, ASYNC), 1) // ASYNC? (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator) // ASYNC?
&& &&
(_keyword = _PyPegen_expect_token(p, 606)) // token='with' (_keyword = _PyPegen_expect_token(p, 606)) // token='with'
&& &&
@ -19645,7 +19645,7 @@ invalid_with_stmt_rule(Parser *p)
void *_opt_var_1; void *_opt_var_1;
UNUSED(_opt_var_1); // Silence compiler warnings UNUSED(_opt_var_1); // Silence compiler warnings
if ( if (
(_opt_var = _PyPegen_expect_token(p, ASYNC), 1) // ASYNC? (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator) // ASYNC?
&& &&
(_keyword = _PyPegen_expect_token(p, 606)) // token='with' (_keyword = _PyPegen_expect_token(p, 606)) // token='with'
&& &&
@ -19653,7 +19653,7 @@ invalid_with_stmt_rule(Parser *p)
&& &&
(_gather_164_var = _gather_164_rule(p)) // ','.(expressions ['as' star_target])+ (_gather_164_var = _gather_164_rule(p)) // ','.(expressions ['as' star_target])+
&& &&
(_opt_var_1 = _PyPegen_expect_token(p, 12), 1) // ','? (_opt_var_1 = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','?
&& &&
(_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
&& &&
@ -19700,7 +19700,7 @@ invalid_with_stmt_indent_rule(Parser *p)
Token * a; Token * a;
Token * newline_var; Token * newline_var;
if ( if (
(_opt_var = _PyPegen_expect_token(p, ASYNC), 1) // ASYNC? (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator) // ASYNC?
&& &&
(a = _PyPegen_expect_token(p, 606)) // token='with' (a = _PyPegen_expect_token(p, 606)) // token='with'
&& &&
@ -19743,7 +19743,7 @@ invalid_with_stmt_indent_rule(Parser *p)
Token * a; Token * a;
Token * newline_var; Token * newline_var;
if ( if (
(_opt_var = _PyPegen_expect_token(p, ASYNC), 1) // ASYNC? (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator) // ASYNC?
&& &&
(a = _PyPegen_expect_token(p, 606)) // token='with' (a = _PyPegen_expect_token(p, 606)) // token='with'
&& &&
@ -19751,7 +19751,7 @@ invalid_with_stmt_indent_rule(Parser *p)
&& &&
(_gather_168_var = _gather_168_rule(p)) // ','.(expressions ['as' star_target])+ (_gather_168_var = _gather_168_rule(p)) // ','.(expressions ['as' star_target])+
&& &&
(_opt_var_1 = _PyPegen_expect_token(p, 12), 1) // ','? (_opt_var_1 = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','?
&& &&
(_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
&& &&
@ -19898,7 +19898,7 @@ invalid_except_stmt_rule(Parser *p)
&& &&
(expressions_var = expressions_rule(p)) // expressions (expressions_var = expressions_rule(p)) // expressions
&& &&
(_opt_var = _tmp_171_rule(p), 1) // ['as' NAME] (_opt_var = _tmp_171_rule(p), !p->error_indicator) // ['as' NAME]
&& &&
(_literal_1 = _PyPegen_expect_token(p, 11)) // token=':' (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':'
) )
@ -19932,7 +19932,7 @@ invalid_except_stmt_rule(Parser *p)
&& &&
(expression_var = expression_rule(p)) // expression (expression_var = expression_rule(p)) // expression
&& &&
(_opt_var = _tmp_172_rule(p), 1) // ['as' NAME] (_opt_var = _tmp_172_rule(p), !p->error_indicator) // ['as' NAME]
&& &&
(newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
) )
@ -20062,7 +20062,7 @@ invalid_except_stmt_indent_rule(Parser *p)
&& &&
(expression_var = expression_rule(p)) // expression (expression_var = expression_rule(p)) // expression
&& &&
(_opt_var = _tmp_173_rule(p), 1) // ['as' NAME] (_opt_var = _tmp_173_rule(p), !p->error_indicator) // ['as' NAME]
&& &&
(_literal = _PyPegen_expect_token(p, 11)) // token=':' (_literal = _PyPegen_expect_token(p, 11)) // token=':'
&& &&
@ -20233,7 +20233,7 @@ invalid_case_block_rule(Parser *p)
&& &&
(patterns_var = patterns_rule(p)) // patterns (patterns_var = patterns_rule(p)) // patterns
&& &&
(_opt_var = guard_rule(p), 1) // guard? (_opt_var = guard_rule(p), !p->error_indicator) // guard?
&& &&
_PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 11) // token=':' _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 11) // token=':'
) )
@ -20268,7 +20268,7 @@ invalid_case_block_rule(Parser *p)
&& &&
(patterns_var = patterns_rule(p)) // patterns (patterns_var = patterns_rule(p)) // patterns
&& &&
(_opt_var = guard_rule(p), 1) // guard? (_opt_var = guard_rule(p), !p->error_indicator) // guard?
&& &&
(_literal = _PyPegen_expect_token(p, 11)) // token=':' (_literal = _PyPegen_expect_token(p, 11)) // token=':'
&& &&
@ -20446,7 +20446,7 @@ invalid_class_argument_pattern_rule(Parser *p)
asdl_pattern_seq* a; asdl_pattern_seq* a;
asdl_seq* keyword_patterns_var; asdl_seq* keyword_patterns_var;
if ( if (
(_opt_var = _tmp_174_rule(p), 1) // [positional_patterns ','] (_opt_var = _tmp_174_rule(p), !p->error_indicator) // [positional_patterns ',']
&& &&
(keyword_patterns_var = keyword_patterns_rule(p)) // keyword_patterns (keyword_patterns_var = keyword_patterns_rule(p)) // keyword_patterns
&& &&
@ -20801,7 +20801,7 @@ invalid_for_stmt_rule(Parser *p)
expr_ty star_expressions_var; expr_ty star_expressions_var;
expr_ty star_targets_var; expr_ty star_targets_var;
if ( if (
(_opt_var = _PyPegen_expect_token(p, ASYNC), 1) // ASYNC? (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator) // ASYNC?
&& &&
(a = _PyPegen_expect_token(p, 630)) // token='for' (a = _PyPegen_expect_token(p, 630)) // token='for'
&& &&
@ -20868,7 +20868,7 @@ invalid_def_raw_rule(Parser *p)
expr_ty name_var; expr_ty name_var;
Token * newline_var; Token * newline_var;
if ( if (
(_opt_var = _PyPegen_expect_token(p, ASYNC), 1) // ASYNC? (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator) // ASYNC?
&& &&
(a = _PyPegen_expect_token(p, 632)) // token='def' (a = _PyPegen_expect_token(p, 632)) // token='def'
&& &&
@ -20876,11 +20876,11 @@ invalid_def_raw_rule(Parser *p)
&& &&
(_literal = _PyPegen_expect_token(p, 7)) // token='(' (_literal = _PyPegen_expect_token(p, 7)) // token='('
&& &&
(_opt_var_1 = params_rule(p), 1) // params? (_opt_var_1 = params_rule(p), !p->error_indicator) // params?
&& &&
(_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
&& &&
(_opt_var_2 = _tmp_175_rule(p), 1) // ['->' expression] (_opt_var_2 = _tmp_175_rule(p), !p->error_indicator) // ['->' expression]
&& &&
(_literal_2 = _PyPegen_expect_token(p, 11)) // token=':' (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
&& &&
@ -20936,7 +20936,7 @@ invalid_class_def_raw_rule(Parser *p)
&& &&
(name_var = _PyPegen_name_token(p)) // NAME (name_var = _PyPegen_name_token(p)) // NAME
&& &&
(_opt_var = _tmp_176_rule(p), 1) // ['(' arguments? ')'] (_opt_var = _tmp_176_rule(p), !p->error_indicator) // ['(' arguments? ')']
&& &&
(_literal = _PyPegen_expect_token(p, 11)) // token=':' (_literal = _PyPegen_expect_token(p, 11)) // token=':'
&& &&
@ -23038,7 +23038,7 @@ _tmp_33_rule(Parser *p)
if ( if (
(_literal = _PyPegen_expect_token(p, 7)) // token='(' (_literal = _PyPegen_expect_token(p, 7)) // token='('
&& &&
(z = arguments_rule(p), 1) // arguments? (z = arguments_rule(p), !p->error_indicator) // arguments?
&& &&
(_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
) )
@ -26354,7 +26354,7 @@ _tmp_87_rule(Parser *p)
if ( if (
(_literal = _PyPegen_expect_token(p, 11)) // token=':' (_literal = _PyPegen_expect_token(p, 11)) // token=':'
&& &&
(d = expression_rule(p), 1) // expression? (d = expression_rule(p), !p->error_indicator) // expression?
) )
{ {
D(fprintf(stderr, "%*c+ _tmp_87[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression?")); D(fprintf(stderr, "%*c+ _tmp_87[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression?"));
@ -27708,7 +27708,7 @@ _tmp_107_rule(Parser *p)
&& &&
(_literal = _PyPegen_expect_token(p, 12)) // token=',' (_literal = _PyPegen_expect_token(p, 12)) // token=','
&& &&
(z = star_named_expressions_rule(p), 1) // star_named_expressions? (z = star_named_expressions_rule(p), !p->error_indicator) // star_named_expressions?
) )
{ {
D(fprintf(stderr, "%*c+ _tmp_107[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?")); D(fprintf(stderr, "%*c+ _tmp_107[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
@ -31699,7 +31699,7 @@ _tmp_176_rule(Parser *p)
if ( if (
(_literal = _PyPegen_expect_token(p, 7)) // token='(' (_literal = _PyPegen_expect_token(p, 7)) // token='('
&& &&
(_opt_var = arguments_rule(p), 1) // arguments? (_opt_var = arguments_rule(p), !p->error_indicator) // arguments?
&& &&
(_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
) )
@ -32708,7 +32708,7 @@ _tmp_197_rule(Parser *p)
if ( if (
(expression_var = expression_rule(p)) // expression (expression_var = expression_rule(p)) // expression
&& &&
(_opt_var = _tmp_202_rule(p), 1) // ['as' star_target] (_opt_var = _tmp_202_rule(p), !p->error_indicator) // ['as' star_target]
) )
{ {
D(fprintf(stderr, "%*c+ _tmp_197[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); D(fprintf(stderr, "%*c+ _tmp_197[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
@ -32748,7 +32748,7 @@ _tmp_198_rule(Parser *p)
if ( if (
(expressions_var = expressions_rule(p)) // expressions (expressions_var = expressions_rule(p)) // expressions
&& &&
(_opt_var = _tmp_203_rule(p), 1) // ['as' star_target] (_opt_var = _tmp_203_rule(p), !p->error_indicator) // ['as' star_target]
) )
{ {
D(fprintf(stderr, "%*c+ _tmp_198[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); D(fprintf(stderr, "%*c+ _tmp_198[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
@ -32788,7 +32788,7 @@ _tmp_199_rule(Parser *p)
if ( if (
(expression_var = expression_rule(p)) // expression (expression_var = expression_rule(p)) // expression
&& &&
(_opt_var = _tmp_204_rule(p), 1) // ['as' star_target] (_opt_var = _tmp_204_rule(p), !p->error_indicator) // ['as' star_target]
) )
{ {
D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
@ -32828,7 +32828,7 @@ _tmp_200_rule(Parser *p)
if ( if (
(expressions_var = expressions_rule(p)) // expressions (expressions_var = expressions_rule(p)) // expressions
&& &&
(_opt_var = _tmp_205_rule(p), 1) // ['as' star_target] (_opt_var = _tmp_205_rule(p), !p->error_indicator) // ['as' star_target]
) )
{ {
D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));

View file

@ -350,10 +350,18 @@ tokenizer_error(Parser *p)
errtype = PyExc_IndentationError; errtype = PyExc_IndentationError;
msg = "too many levels of indentation"; msg = "too many levels of indentation";
break; break;
case E_LINECONT: case E_LINECONT: {
col_offset = strlen(strtok(p->tok->buf, "\n")) - 1; char* loc = strrchr(p->tok->buf, '\n');
const char* last_char = p->tok->cur - 1;
if (loc != NULL && loc != last_char) {
col_offset = p->tok->cur - loc - 1;
p->tok->buf = loc;
} else {
col_offset = last_char - p->tok->buf - 1;
}
msg = "unexpected character after line continuation character"; msg = "unexpected character after line continuation character";
break; break;
}
default: default:
msg = "unknown parsing error"; msg = "unknown parsing error";
} }

View file

@ -88,7 +88,7 @@ class FunctionCall:
if self.arguments: if self.arguments:
parts.append(f"({', '.join(map(str, self.arguments))})") parts.append(f"({', '.join(map(str, self.arguments))})")
if self.force_true: if self.force_true:
parts.append(", 1") parts.append(", !p->error_indicator")
if self.assigned_variable: if self.assigned_variable:
if self.assigned_variable_type: if self.assigned_variable_type:
parts = [ parts = [