Mailing List Archive

gh-118082: Improve `import` without names syntax error message (#118083)
https://github.com/python/cpython/commit/de1f6868270d31f56c388ef416daacd35feb152d
commit: de1f6868270d31f56c388ef416daacd35feb152d
branch: main
author: Nikita Sobolev <mail@sobolevn.me>
committer: pablogsal <Pablogsal@gmail.com>
date: 2024-04-23T13:00:52+01:00
summary:

gh-118082: Improve `import` without names syntax error message (#118083)

files:
A Misc/NEWS.d/next/Core and Builtins/2024-04-19-11-59-57.gh-issue-118082._FLuOT.rst
M Grammar/python.gram
M Lib/test/test_syntax.py
M Parser/parser.c

diff --git a/Grammar/python.gram b/Grammar/python.gram
index 9564abf5ec314b..11438e57da527b 100644
--- a/Grammar/python.gram
+++ b/Grammar/python.gram
@@ -1299,10 +1299,14 @@ invalid_group:
invalid_import:
| a='import' ','.dotted_name+ 'from' dotted_name {
RAISE_SYNTAX_ERROR_STARTING_FROM(a, "Did you mean to use 'from ... import ...' instead?") }
+ | 'import' token=NEWLINE {
+ RAISE_SYNTAX_ERROR_STARTING_FROM(token, "Expected one or more names after 'import'") }

invalid_import_from_targets:
| import_from_as_names ',' NEWLINE {
RAISE_SYNTAX_ERROR("trailing comma not allowed without surrounding parentheses") }
+ | token=NEWLINE {
+ RAISE_SYNTAX_ERROR_STARTING_FROM(token, "Expected one or more names after 'import'") }

invalid_compound_stmt:
| a='elif' named_expression ':' { RAISE_SYNTAX_ERROR_STARTING_FROM(a, "'elif' must match an if-statement here") }
diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py
index dfa2a3b2f5413b..e9bec3317811dd 100644
--- a/Lib/test/test_syntax.py
+++ b/Lib/test/test_syntax.py
@@ -1699,6 +1699,18 @@
Traceback (most recent call last):
SyntaxError: invalid syntax

+>>> from i import
+Traceback (most recent call last):
+SyntaxError: Expected one or more names after 'import'
+
+>>> from .. import
+Traceback (most recent call last):
+SyntaxError: Expected one or more names after 'import'
+
+>>> import
+Traceback (most recent call last):
+SyntaxError: Expected one or more names after 'import'
+
>>> (): int
Traceback (most recent call last):
SyntaxError: only single target (not tuple) can be annotated
diff --git a/Misc/NEWS.d/next/Core and Builtins/2024-04-19-11-59-57.gh-issue-118082._FLuOT.rst b/Misc/NEWS.d/next/Core and Builtins/2024-04-19-11-59-57.gh-issue-118082._FLuOT.rst
new file mode 100644
index 00000000000000..7b9a726d7c77c2
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2024-04-19-11-59-57.gh-issue-118082._FLuOT.rst
@@ -0,0 +1,3 @@
+Improve :exc:`SyntaxError` message for imports without names, like in
+``from x import`` and ``import`` cases. It now points
+out to users that :keyword:`import` expects at least one name after it.
diff --git a/Parser/parser.c b/Parser/parser.c
index 35d672b0d397f9..b6683bfd1f1bc0 100644
--- a/Parser/parser.c
+++ b/Parser/parser.c
@@ -21,28 +21,28 @@ static KeywordToken *reserved_keywords[] = {
(KeywordToken[]) {{NULL, -1}},
(KeywordToken[]) {{NULL, -1}},
(KeywordToken[]) {
- {"if", 661},
- {"as", 659},
- {"in", 672},
+ {"if", 662},
+ {"as", 660},
+ {"in", 673},
{"or", 581},
{"is", 589},
{NULL, -1},
},
(KeywordToken[]) {
{"del", 616},
- {"def", 674},
- {"for", 671},
- {"try", 643},
+ {"def", 675},
+ {"for", 672},
+ {"try", 644},
{"and", 582},
- {"not", 678},
+ {"not", 679},
{NULL, -1},
},
(KeywordToken[]) {
{"from", 621},
{"pass", 504},
- {"with", 634},
- {"elif", 663},
- {"else", 664},
+ {"with", 635},
+ {"elif", 664},
+ {"else", 665},
{"None", 614},
{"True", 613},
{NULL, -1},
@@ -51,24 +51,24 @@ static KeywordToken *reserved_keywords[] = {
{"raise", 525},
{"yield", 580},
{"break", 508},
- {"async", 673},
- {"class", 676},
- {"while", 666},
+ {"async", 674},
+ {"class", 677},
+ {"while", 667},
{"False", 615},
{"await", 590},
{NULL, -1},
},
(KeywordToken[]) {
{"return", 522},
- {"import", 620},
+ {"import", 622},
{"assert", 529},
{"global", 526},
- {"except", 656},
+ {"except", 657},
{"lambda", 612},
{NULL, -1},
},
(KeywordToken[]) {
- {"finally", 652},
+ {"finally", 653},
{NULL, -1},
},
(KeywordToken[]) {
@@ -2135,7 +2135,7 @@ compound_stmt_rule(Parser *p)
D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'if' if_stmt"));
stmt_ty if_stmt_var;
if (
- _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 661) // token='if'
+ _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 662) // token='if'
&&
(if_stmt_var = if_stmt_rule(p)) // if_stmt
)
@@ -2219,7 +2219,7 @@ compound_stmt_rule(Parser *p)
D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'try' try_stmt"));
stmt_ty try_stmt_var;
if (
- _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 643) // token='try'
+ _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 644) // token='try'
&&
(try_stmt_var = try_stmt_rule(p)) // try_stmt
)
@@ -2240,7 +2240,7 @@ compound_stmt_rule(Parser *p)
D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'while' while_stmt"));
stmt_ty while_stmt_var;
if (
- _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 666) // token='while'
+ _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 667) // token='while'
&&
(while_stmt_var = while_stmt_rule(p)) // while_stmt
)
@@ -3514,7 +3514,7 @@ import_name_rule(Parser *p)
Token * _keyword;
asdl_alias_seq* a;
if (
- (_keyword = _PyPegen_expect_token(p, 620)) // token='import'
+ (_keyword = _PyPegen_expect_token(p, 622)) // token='import'
&&
(a = dotted_as_names_rule(p)) // dotted_as_names
)
@@ -3589,7 +3589,7 @@ import_from_rule(Parser *p)
&&
(b = dotted_name_rule(p)) // dotted_name
&&
- (_keyword_1 = _PyPegen_expect_token(p, 620)) // token='import'
+ (_keyword_1 = _PyPegen_expect_token(p, 622)) // token='import'
&&
(c = import_from_targets_rule(p)) // import_from_targets
)
@@ -3631,7 +3631,7 @@ import_from_rule(Parser *p)
&&
(a = _loop1_25_rule(p)) // (('.' | '...'))+
&&
- (_keyword_1 = _PyPegen_expect_token(p, 620)) // token='import'
+ (_keyword_1 = _PyPegen_expect_token(p, 622)) // token='import'
&&
(b = import_from_targets_rule(p)) // import_from_targets
)
@@ -4380,7 +4380,7 @@ class_def_raw_rule(Parser *p)
asdl_stmt_seq* c;
void *t;
if (
- (_keyword = _PyPegen_expect_token(p, 676)) // token='class'
+ (_keyword = _PyPegen_expect_token(p, 677)) // token='class'
&&
(a = _PyPegen_name_token(p)) // NAME
&&
@@ -4547,7 +4547,7 @@ function_def_raw_rule(Parser *p)
void *t;
void *tc;
if (
- (_keyword = _PyPegen_expect_token(p, 674)) // token='def'
+ (_keyword = _PyPegen_expect_token(p, 675)) // token='def'
&&
(n = _PyPegen_name_token(p)) // NAME
&&
@@ -4608,9 +4608,9 @@ function_def_raw_rule(Parser *p)
void *t;
void *tc;
if (
- (_keyword = _PyPegen_expect_token(p, 673)) // token='async'
+ (_keyword = _PyPegen_expect_token(p, 674)) // token='async'
&&
- (_keyword_1 = _PyPegen_expect_token(p, 674)) // token='def'
+ (_keyword_1 = _PyPegen_expect_token(p, 675)) // token='def'
&&
(n = _PyPegen_name_token(p)) // NAME
&&
@@ -5948,7 +5948,7 @@ if_stmt_rule(Parser *p)
asdl_stmt_seq* b;
stmt_ty c;
if (
- (_keyword = _PyPegen_expect_token(p, 661)) // token='if'
+ (_keyword = _PyPegen_expect_token(p, 662)) // token='if'
&&
(a = named_expression_rule(p)) // named_expression
&&
@@ -5993,7 +5993,7 @@ if_stmt_rule(Parser *p)
asdl_stmt_seq* b;
void *c;
if (
- (_keyword = _PyPegen_expect_token(p, 661)) // token='if'
+ (_keyword = _PyPegen_expect_token(p, 662)) // token='if'
&&
(a = named_expression_rule(p)) // named_expression
&&
@@ -6088,7 +6088,7 @@ elif_stmt_rule(Parser *p)
asdl_stmt_seq* b;
stmt_ty c;
if (
- (_keyword = _PyPegen_expect_token(p, 663)) // token='elif'
+ (_keyword = _PyPegen_expect_token(p, 664)) // token='elif'
&&
(a = named_expression_rule(p)) // named_expression
&&
@@ -6133,7 +6133,7 @@ elif_stmt_rule(Parser *p)
asdl_stmt_seq* b;
void *c;
if (
- (_keyword = _PyPegen_expect_token(p, 663)) // token='elif'
+ (_keyword = _PyPegen_expect_token(p, 664)) // token='elif'
&&
(a = named_expression_rule(p)) // named_expression
&&
@@ -6214,7 +6214,7 @@ else_block_rule(Parser *p)
Token * _literal;
asdl_stmt_seq* b;
if (
- (_keyword = _PyPegen_expect_token(p, 664)) // token='else'
+ (_keyword = _PyPegen_expect_token(p, 665)) // token='else'
&&
(_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':'
&&
@@ -6293,7 +6293,7 @@ while_stmt_rule(Parser *p)
asdl_stmt_seq* b;
void *c;
if (
- (_keyword = _PyPegen_expect_token(p, 666)) // token='while'
+ (_keyword = _PyPegen_expect_token(p, 667)) // token='while'
&&
(a = named_expression_rule(p)) // named_expression
&&
@@ -6393,11 +6393,11 @@ for_stmt_rule(Parser *p)
expr_ty t;
void *tc;
if (
- (_keyword = _PyPegen_expect_token(p, 671)) // token='for'
+ (_keyword = _PyPegen_expect_token(p, 672)) // token='for'
&&
(t = star_targets_rule(p)) // star_targets
&&
- (_keyword_1 = _PyPegen_expect_token(p, 672)) // token='in'
+ (_keyword_1 = _PyPegen_expect_token(p, 673)) // token='in'
&&
(_cut_var = 1)
&&
@@ -6455,13 +6455,13 @@ for_stmt_rule(Parser *p)
expr_ty t;
void *tc;
if (
- (_keyword = _PyPegen_expect_token(p, 673)) // token='async'
+ (_keyword = _PyPegen_expect_token(p, 674)) // token='async'
&&
- (_keyword_1 = _PyPegen_expect_token(p, 671)) // token='for'
+ (_keyword_1 = _PyPegen_expect_token(p, 672)) // token='for'
&&
(t = star_targets_rule(p)) // star_targets
&&
- (_keyword_2 = _PyPegen_expect_token(p, 672)) // token='in'
+ (_keyword_2 = _PyPegen_expect_token(p, 673)) // token='in'
&&
(_cut_var = 1)
&&
@@ -6590,7 +6590,7 @@ with_stmt_rule(Parser *p)
asdl_stmt_seq* b;
void *tc;
if (
- (_keyword = _PyPegen_expect_token(p, 634)) // token='with'
+ (_keyword = _PyPegen_expect_token(p, 635)) // token='with'
&&
(_literal = _PyPegen_expect_token(p, 7)) // token='('
&&
@@ -6641,7 +6641,7 @@ with_stmt_rule(Parser *p)
asdl_stmt_seq* b;
void *tc;
if (
- (_keyword = _PyPegen_expect_token(p, 634)) // token='with'
+ (_keyword = _PyPegen_expect_token(p, 635)) // token='with'
&&
(a = (asdl_withitem_seq*)_gather_53_rule(p)) // ','.with_item+
&&
@@ -6690,9 +6690,9 @@ with_stmt_rule(Parser *p)
asdl_withitem_seq* a;
asdl_stmt_seq* b;
if (
- (_keyword = _PyPegen_expect_token(p, 673)) // token='async'
+ (_keyword = _PyPegen_expect_token(p, 674)) // token='async'
&&
- (_keyword_1 = _PyPegen_expect_token(p, 634)) // token='with'
+ (_keyword_1 = _PyPegen_expect_token(p, 635)) // token='with'
&&
(_literal = _PyPegen_expect_token(p, 7)) // token='('
&&
@@ -6742,9 +6742,9 @@ with_stmt_rule(Parser *p)
asdl_stmt_seq* b;
void *tc;
if (
- (_keyword = _PyPegen_expect_token(p, 673)) // token='async'
+ (_keyword = _PyPegen_expect_token(p, 674)) // token='async'
&&
- (_keyword_1 = _PyPegen_expect_token(p, 634)) // token='with'
+ (_keyword_1 = _PyPegen_expect_token(p, 635)) // token='with'
&&
(a = (asdl_withitem_seq*)_gather_57_rule(p)) // ','.with_item+
&&
@@ -6830,7 +6830,7 @@ with_item_rule(Parser *p)
if (
(e = expression_rule(p)) // expression
&&
- (_keyword = _PyPegen_expect_token(p, 659)) // token='as'
+ (_keyword = _PyPegen_expect_token(p, 660)) // token='as'
&&
(t = star_target_rule(p)) // star_target
&&
@@ -6955,7 +6955,7 @@ try_stmt_rule(Parser *p)
asdl_stmt_seq* b;
asdl_stmt_seq* f;
if (
- (_keyword = _PyPegen_expect_token(p, 643)) // token='try'
+ (_keyword = _PyPegen_expect_token(p, 644)) // token='try'
&&
(_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':'
&&
@@ -6999,7 +6999,7 @@ try_stmt_rule(Parser *p)
asdl_excepthandler_seq* ex;
void *f;
if (
- (_keyword = _PyPegen_expect_token(p, 643)) // token='try'
+ (_keyword = _PyPegen_expect_token(p, 644)) // token='try'
&&
(_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':'
&&
@@ -7047,7 +7047,7 @@ try_stmt_rule(Parser *p)
asdl_excepthandler_seq* ex;
void *f;
if (
- (_keyword = _PyPegen_expect_token(p, 643)) // token='try'
+ (_keyword = _PyPegen_expect_token(p, 644)) // token='try'
&&
(_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':'
&&
@@ -7145,7 +7145,7 @@ except_block_rule(Parser *p)
expr_ty e;
void *t;
if (
- (_keyword = _PyPegen_expect_token(p, 656)) // token='except'
+ (_keyword = _PyPegen_expect_token(p, 657)) // token='except'
&&
(e = expression_rule(p)) // expression
&&
@@ -7188,7 +7188,7 @@ except_block_rule(Parser *p)
Token * _literal;
asdl_stmt_seq* b;
if (
- (_keyword = _PyPegen_expect_token(p, 656)) // token='except'
+ (_keyword = _PyPegen_expect_token(p, 657)) // token='except'
&&
(_literal = _PyPegen_expect_token(p, 11)) // token=':'
&&
@@ -7299,7 +7299,7 @@ except_star_block_rule(Parser *p)
expr_ty e;
void *t;
if (
- (_keyword = _PyPegen_expect_token(p, 656)) // token='except'
+ (_keyword = _PyPegen_expect_token(p, 657)) // token='except'
&&
(_literal = _PyPegen_expect_token(p, 16)) // token='*'
&&
@@ -7401,7 +7401,7 @@ finally_block_rule(Parser *p)
Token * _literal;
asdl_stmt_seq* a;
if (
- (_keyword = _PyPegen_expect_token(p, 652)) // token='finally'
+ (_keyword = _PyPegen_expect_token(p, 653)) // token='finally'
&&
(_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':'
&&
@@ -7709,7 +7709,7 @@ guard_rule(Parser *p)
Token * _keyword;
expr_ty guard;
if (
- (_keyword = _PyPegen_expect_token(p, 661)) // token='if'
+ (_keyword = _PyPegen_expect_token(p, 662)) // token='if'
&&
(guard = named_expression_rule(p)) // named_expression
)
@@ -7904,7 +7904,7 @@ as_pattern_rule(Parser *p)
if (
(pattern = or_pattern_rule(p)) // or_pattern
&&
- (_keyword = _PyPegen_expect_token(p, 659)) // token='as'
+ (_keyword = _PyPegen_expect_token(p, 660)) // token='as'
&&
(target = pattern_capture_target_rule(p)) // pattern_capture_target
)
@@ -11127,11 +11127,11 @@ expression_rule(Parser *p)
if (
(a = disjunction_rule(p)) // disjunction
&&
- (_keyword = _PyPegen_expect_token(p, 661)) // token='if'
+ (_keyword = _PyPegen_expect_token(p, 662)) // token='if'
&&
(b = disjunction_rule(p)) // disjunction
&&
- (_keyword_1 = _PyPegen_expect_token(p, 664)) // token='else'
+ (_keyword_1 = _PyPegen_expect_token(p, 665)) // token='else'
&&
(c = expression_rule(p)) // expression
)
@@ -12013,7 +12013,7 @@ inversion_rule(Parser *p)
Token * _keyword;
expr_ty a;
if (
- (_keyword = _PyPegen_expect_token(p, 678)) // token='not'
+ (_keyword = _PyPegen_expect_token(p, 679)) // token='not'
&&
(a = inversion_rule(p)) // inversion
)
@@ -12667,9 +12667,9 @@ notin_bitwise_or_rule(Parser *p)
Token * _keyword_1;
expr_ty a;
if (
- (_keyword = _PyPegen_expect_token(p, 678)) // token='not'
+ (_keyword = _PyPegen_expect_token(p, 679)) // token='not'
&&
- (_keyword_1 = _PyPegen_expect_token(p, 672)) // token='in'
+ (_keyword_1 = _PyPegen_expect_token(p, 673)) // token='in'
&&
(a = bitwise_or_rule(p)) // bitwise_or
)
@@ -12715,7 +12715,7 @@ in_bitwise_or_rule(Parser *p)
Token * _keyword;
expr_ty a;
if (
- (_keyword = _PyPegen_expect_token(p, 672)) // token='in'
+ (_keyword = _PyPegen_expect_token(p, 673)) // token='in'
&&
(a = bitwise_or_rule(p)) // bitwise_or
)
@@ -12764,7 +12764,7 @@ isnot_bitwise_or_rule(Parser *p)
if (
(_keyword = _PyPegen_expect_token(p, 589)) // token='is'
&&
- (_keyword_1 = _PyPegen_expect_token(p, 678)) // token='not'
+ (_keyword_1 = _PyPegen_expect_token(p, 679)) // token='not'
&&
(a = bitwise_or_rule(p)) // bitwise_or
)
@@ -16935,13 +16935,13 @@ for_if_clause_rule(Parser *p)
expr_ty b;
asdl_expr_seq* c;
if (
- (_keyword = _PyPegen_expect_token(p, 673)) // token='async'
+ (_keyword = _PyPegen_expect_token(p, 674)) // token='async'
&&
- (_keyword_1 = _PyPegen_expect_token(p, 671)) // token='for'
+ (_keyword_1 = _PyPegen_expect_token(p, 672)) // token='for'
&&
(a = star_targets_rule(p)) // star_targets
&&
- (_keyword_2 = _PyPegen_expect_token(p, 672)) // token='in'
+ (_keyword_2 = _PyPegen_expect_token(p, 673)) // token='in'
&&
(_cut_var = 1)
&&
@@ -16980,11 +16980,11 @@ for_if_clause_rule(Parser *p)
expr_ty b;
asdl_expr_seq* c;
if (
- (_keyword = _PyPegen_expect_token(p, 671)) // token='for'
+ (_keyword = _PyPegen_expect_token(p, 672)) // token='for'
&&
(a = star_targets_rule(p)) // star_targets
&&
- (_keyword_1 = _PyPegen_expect_token(p, 672)) // token='in'
+ (_keyword_1 = _PyPegen_expect_token(p, 673)) // token='in'
&&
(_cut_var = 1)
&&
@@ -17021,13 +17021,13 @@ for_if_clause_rule(Parser *p)
UNUSED(_opt_var); // Silence compiler warnings
void *_tmp_122_var;
if (
- (_opt_var = _PyPegen_expect_token(p, 673), !p->error_indicator) // 'async'?
+ (_opt_var = _PyPegen_expect_token(p, 674), !p->error_indicator) // 'async'?
&&
- (_keyword = _PyPegen_expect_token(p, 671)) // token='for'
+ (_keyword = _PyPegen_expect_token(p, 672)) // token='for'
&&
(_tmp_122_var = _tmp_122_rule(p)) // bitwise_or ((',' bitwise_or))* ','?
&&
- _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 672) // token='in'
+ _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 673) // token='in'
)
{
D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'? 'for' (bitwise_or ((',' bitwise_or))* ','?) !'in'"));
@@ -20301,11 +20301,11 @@ expression_without_invalid_rule(Parser *p)
if (
(a = disjunction_rule(p)) // disjunction
&&
- (_keyword = _PyPegen_expect_token(p, 661)) // token='if'
+ (_keyword = _PyPegen_expect_token(p, 662)) // token='if'
&&
(b = disjunction_rule(p)) // disjunction
&&
- (_keyword_1 = _PyPegen_expect_token(p, 664)) // token='else'
+ (_keyword_1 = _PyPegen_expect_token(p, 665)) // token='else'
&&
(c = expression_rule(p)) // expression
)
@@ -20486,7 +20486,7 @@ invalid_expression_rule(Parser *p)
if (
(a = disjunction_rule(p)) // disjunction
&&
- (_keyword = _PyPegen_expect_token(p, 661)) // token='if'
+ (_keyword = _PyPegen_expect_token(p, 662)) // token='if'
&&
(b = disjunction_rule(p)) // disjunction
&&
@@ -22424,7 +22424,7 @@ invalid_with_item_rule(Parser *p)
if (
(expression_var = expression_rule(p)) // expression
&&
- (_keyword = _PyPegen_expect_token(p, 659)) // token='as'
+ (_keyword = _PyPegen_expect_token(p, 660)) // token='as'
&&
(a = expression_rule(p)) // expression
&&
@@ -22474,9 +22474,9 @@ invalid_for_target_rule(Parser *p)
UNUSED(_opt_var); // Silence compiler warnings
expr_ty a;
if (
- (_opt_var = _PyPegen_expect_token(p, 673), !p->error_indicator) // 'async'?
+ (_opt_var = _PyPegen_expect_token(p, 674), !p->error_indicator) // 'async'?
&&
- (_keyword = _PyPegen_expect_token(p, 671)) // token='for'
+ (_keyword = _PyPegen_expect_token(p, 672)) // token='for'
&&
(a = star_expressions_rule(p)) // star_expressions
)
@@ -22582,7 +22582,7 @@ invalid_group_rule(Parser *p)
return _res;
}

-// invalid_import: 'import' ','.dotted_name+ 'from' dotted_name
+// invalid_import: 'import' ','.dotted_name+ 'from' dotted_name | 'import' NEWLINE
static void *
invalid_import_rule(Parser *p)
{
@@ -22606,7 +22606,7 @@ invalid_import_rule(Parser *p)
Token * a;
expr_ty dotted_name_var;
if (
- (a = _PyPegen_expect_token(p, 620)) // token='import'
+ (a = _PyPegen_expect_token(p, 622)) // token='import'
&&
(_gather_206_var = _gather_206_rule(p)) // ','.dotted_name+
&&
@@ -22628,13 +22628,40 @@ invalid_import_rule(Parser *p)
D(fprintf(stderr, "%*c%s invalid_import[%d-%d]: %s failed!\n", p->level, ' ',
p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import' ','.dotted_name+ 'from' dotted_name"));
}
+ { // 'import' NEWLINE
+ if (p->error_indicator) {
+ p->level--;
+ return NULL;
+ }
+ D(fprintf(stderr, "%*c> invalid_import[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import' NEWLINE"));
+ Token * _keyword;
+ Token * token;
+ if (
+ (_keyword = _PyPegen_expect_token(p, 622)) // token='import'
+ &&
+ (token = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
+ )
+ {
+ D(fprintf(stderr, "%*c+ invalid_import[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import' NEWLINE"));
+ _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( token , "Expected one or more names after 'import'" );
+ if (_res == NULL && PyErr_Occurred()) {
+ p->error_indicator = 1;
+ p->level--;
+ return NULL;
+ }
+ goto done;
+ }
+ p->mark = _mark;
+ D(fprintf(stderr, "%*c%s invalid_import[%d-%d]: %s failed!\n", p->level, ' ',
+ p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import' NEWLINE"));
+ }
_res = NULL;
done:
p->level--;
return _res;
}

-// invalid_import_from_targets: import_from_as_names ',' NEWLINE
+// invalid_import_from_targets: import_from_as_names ',' NEWLINE | NEWLINE
static void *
invalid_import_from_targets_rule(Parser *p)
{
@@ -22677,6 +22704,30 @@ invalid_import_from_targets_rule(Parser *p)
D(fprintf(stderr, "%*c%s invalid_import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_names ',' NEWLINE"));
}
+ { // NEWLINE
+ if (p->error_indicator) {
+ p->level--;
+ return NULL;
+ }
+ D(fprintf(stderr, "%*c> invalid_import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
+ Token * token;
+ if (
+ (token = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
+ )
+ {
+ D(fprintf(stderr, "%*c+ invalid_import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
+ _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( token , "Expected one or more names after 'import'" );
+ if (_res == NULL && PyErr_Occurred()) {
+ p->error_indicator = 1;
+ p->level--;
+ return NULL;
+ }
+ goto done;
+ }
+ p->mark = _mark;
+ D(fprintf(stderr, "%*c%s invalid_import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
+ p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
+ }
_res = NULL;
done:
p->level--;
@@ -22706,7 +22757,7 @@ invalid_compound_stmt_rule(Parser *p)
Token * a;
expr_ty named_expression_var;
if (
- (a = _PyPegen_expect_token(p, 663)) // token='elif'
+ (a = _PyPegen_expect_token(p, 664)) // token='elif'
&&
(named_expression_var = named_expression_rule(p)) // named_expression
&&
@@ -22735,7 +22786,7 @@ invalid_compound_stmt_rule(Parser *p)
Token * _literal;
Token * a;
if (
- (a = _PyPegen_expect_token(p, 664)) // token='else'
+ (a = _PyPegen_expect_token(p, 665)) // token='else'
&&
(_literal = _PyPegen_expect_token(p, 11)) // token=':'
)
@@ -22786,9 +22837,9 @@ invalid_with_stmt_rule(Parser *p)
UNUSED(_opt_var); // Silence compiler warnings
Token * newline_var;
if (
- (_opt_var = _PyPegen_expect_token(p, 673), !p->error_indicator) // 'async'?
+ (_opt_var = _PyPegen_expect_token(p, 674), !p->error_indicator) // 'async'?
&&
- (_keyword = _PyPegen_expect_token(p, 634)) // token='with'
+ (_keyword = _PyPegen_expect_token(p, 635)) // token='with'
&&
(_gather_208_var = _gather_208_rule(p)) // ','.(expression ['as' star_target])+
&&
@@ -22824,9 +22875,9 @@ invalid_with_stmt_rule(Parser *p)
UNUSED(_opt_var_1); // Silence compiler warnings
Token * newline_var;
if (
- (_opt_var = _PyPegen_expect_token(p, 673), !p->error_indicator) // 'async'?
+ (_opt_var = _PyPegen_expect_token(p, 674), !p->error_indicator) // 'async'?
&&
- (_keyword = _PyPegen_expect_token(p, 634)) // token='with'
+ (_keyword = _PyPegen_expect_token(p, 635)) // token='with'
&&
(_literal = _PyPegen_expect_token(p, 7)) // token='('
&&
@@ -22886,9 +22937,9 @@ invalid_with_stmt_indent_rule(Parser *p)
Token * a;
Token * newline_var;
if (
- (_opt_var = _PyPegen_expect_token(p, 673), !p->error_indicator) // 'async'?
+ (_opt_var = _PyPegen_expect_token(p, 674), !p->error_indicator) // 'async'?
&&
- (a = _PyPegen_expect_token(p, 634)) // token='with'
+ (a = _PyPegen_expect_token(p, 635)) // token='with'
&&
(_gather_212_var = _gather_212_rule(p)) // ','.(expression ['as' star_target])+
&&
@@ -22929,9 +22980,9 @@ invalid_with_stmt_indent_rule(Parser *p)
Token * a;
Token * newline_var;
if (
- (_opt_var = _PyPegen_expect_token(p, 673), !p->error_indicator) // 'async'?
+ (_opt_var = _PyPegen_expect_token(p, 674), !p->error_indicator) // 'async'?
&&
- (a = _PyPegen_expect_token(p, 634)) // token='with'
+ (a = _PyPegen_expect_token(p, 635)) // token='with'
&&
(_literal = _PyPegen_expect_token(p, 7)) // token='('
&&
@@ -22994,7 +23045,7 @@ invalid_try_stmt_rule(Parser *p)
Token * a;
Token * newline_var;
if (
- (a = _PyPegen_expect_token(p, 643)) // token='try'
+ (a = _PyPegen_expect_token(p, 644)) // token='try'
&&
(_literal = _PyPegen_expect_token(p, 11)) // token=':'
&&
@@ -23026,7 +23077,7 @@ invalid_try_stmt_rule(Parser *p)
Token * _literal;
asdl_stmt_seq* block_var;
if (
- (_keyword = _PyPegen_expect_token(p, 643)) // token='try'
+ (_keyword = _PyPegen_expect_token(p, 644)) // token='try'
&&
(_literal = _PyPegen_expect_token(p, 11)) // token=':'
&&
@@ -23065,7 +23116,7 @@ invalid_try_stmt_rule(Parser *p)
Token * b;
expr_ty expression_var;
if (
- (_keyword = _PyPegen_expect_token(p, 643)) // token='try'
+ (_keyword = _PyPegen_expect_token(p, 644)) // token='try'
&&
(_literal = _PyPegen_expect_token(p, 11)) // token=':'
&&
@@ -23073,7 +23124,7 @@ invalid_try_stmt_rule(Parser *p)
&&
(_loop1_218_var = _loop1_218_rule(p)) // except_block+
&&
- (a = _PyPegen_expect_token(p, 656)) // token='except'
+ (a = _PyPegen_expect_token(p, 657)) // token='except'
&&
(b = _PyPegen_expect_token(p, 16)) // token='*'
&&
@@ -23112,7 +23163,7 @@ invalid_try_stmt_rule(Parser *p)
UNUSED(_opt_var); // Silence compiler warnings
Token * a;
if (
- (_keyword = _PyPegen_expect_token(p, 643)) // token='try'
+ (_keyword = _PyPegen_expect_token(p, 644)) // token='try'
&&
(_literal = _PyPegen_expect_token(p, 11)) // token=':'
&&
@@ -23120,7 +23171,7 @@ invalid_try_stmt_rule(Parser *p)
&&
(_loop1_221_var = _loop1_221_rule(p)) // except_star_block+
&&
- (a = _PyPegen_expect_token(p, 656)) // token='except'
+ (a = _PyPegen_expect_token(p, 657)) // token='except'
&&
(_opt_var = _tmp_222_rule(p), !p->error_indicator) // [expression ['as' NAME]]
&&
@@ -23179,7 +23230,7 @@ invalid_except_stmt_rule(Parser *p)
expr_ty a;
expr_ty expressions_var;
if (
- (_keyword = _PyPegen_expect_token(p, 656)) // token='except'
+ (_keyword = _PyPegen_expect_token(p, 657)) // token='except'
&&
(_opt_var = _PyPegen_expect_token(p, 16), !p->error_indicator) // '*'?
&&
@@ -23221,7 +23272,7 @@ invalid_except_stmt_rule(Parser *p)
expr_ty expression_var;
Token * newline_var;
if (
- (a = _PyPegen_expect_token(p, 656)) // token='except'
+ (a = _PyPegen_expect_token(p, 657)) // token='except'
&&
(_opt_var = _PyPegen_expect_token(p, 16), !p->error_indicator) // '*'?
&&
@@ -23254,7 +23305,7 @@ invalid_except_stmt_rule(Parser *p)
Token * a;
Token * newline_var;
if (
- (a = _PyPegen_expect_token(p, 656)) // token='except'
+ (a = _PyPegen_expect_token(p, 657)) // token='except'
&&
(newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
)
@@ -23282,7 +23333,7 @@ invalid_except_stmt_rule(Parser *p)
void *_tmp_225_var;
Token * a;
if (
- (a = _PyPegen_expect_token(p, 656)) // token='except'
+ (a = _PyPegen_expect_token(p, 657)) // token='except'
&&
(_literal = _PyPegen_expect_token(p, 16)) // token='*'
&&
@@ -23331,7 +23382,7 @@ invalid_finally_stmt_rule(Parser *p)
Token * a;
Token * newline_var;
if (
- (a = _PyPegen_expect_token(p, 652)) // token='finally'
+ (a = _PyPegen_expect_token(p, 653)) // token='finally'
&&
(_literal = _PyPegen_expect_token(p, 11)) // token=':'
&&
@@ -23387,7 +23438,7 @@ invalid_except_stmt_indent_rule(Parser *p)
expr_ty expression_var;
Token * newline_var;
if (
- (a = _PyPegen_expect_token(p, 656)) // token='except'
+ (a = _PyPegen_expect_token(p, 657)) // token='except'
&&
(expression_var = expression_rule(p)) // expression
&&
@@ -23423,7 +23474,7 @@ invalid_except_stmt_indent_rule(Parser *p)
Token * a;
Token * newline_var;
if (
- (a = _PyPegen_expect_token(p, 656)) // token='except'
+ (a = _PyPegen_expect_token(p, 657)) // token='except'
&&
(_literal = _PyPegen_expect_token(p, 11)) // token=':'
&&
@@ -23479,7 +23530,7 @@ invalid_except_star_stmt_indent_rule(Parser *p)
expr_ty expression_var;
Token * newline_var;
if (
- (a = _PyPegen_expect_token(p, 656)) // token='except'
+ (a = _PyPegen_expect_token(p, 657)) // token='except'
&&
(_literal = _PyPegen_expect_token(p, 16)) // token='*'
&&
@@ -23718,7 +23769,7 @@ invalid_as_pattern_rule(Parser *p)
if (
(or_pattern_var = or_pattern_rule(p)) // or_pattern
&&
- (_keyword = _PyPegen_expect_token(p, 659)) // token='as'
+ (_keyword = _PyPegen_expect_token(p, 660)) // token='as'
&&
(a = _PyPegen_expect_soft_keyword(p, "_")) // soft_keyword='"_"'
)
@@ -23748,7 +23799,7 @@ invalid_as_pattern_rule(Parser *p)
if (
(or_pattern_var = or_pattern_rule(p)) // or_pattern
&&
- (_keyword = _PyPegen_expect_token(p, 659)) // token='as'
+ (_keyword = _PyPegen_expect_token(p, 660)) // token='as'
&&
_PyPegen_lookahead_with_name(0, _PyPegen_name_token, p)
&&
@@ -23902,7 +23953,7 @@ invalid_if_stmt_rule(Parser *p)
expr_ty named_expression_var;
Token * newline_var;
if (
- (_keyword = _PyPegen_expect_token(p, 661)) // token='if'
+ (_keyword = _PyPegen_expect_token(p, 662)) // token='if'
&&
(named_expression_var = named_expression_rule(p)) // named_expression
&&
@@ -23933,7 +23984,7 @@ invalid_if_stmt_rule(Parser *p)
expr_ty a_1;
Token * newline_var;
if (
- (a = _PyPegen_expect_token(p, 661)) // token='if'
+ (a = _PyPegen_expect_token(p, 662)) // token='if'
&&
(a_1 = named_expression_rule(p)) // named_expression
&&
@@ -23988,7 +24039,7 @@ invalid_elif_stmt_rule(Parser *p)
expr_ty named_expression_var;
Token * newline_var;
if (
- (_keyword = _PyPegen_expect_token(p, 663)) // token='elif'
+ (_keyword = _PyPegen_expect_token(p, 664)) // token='elif'
&&
(named_expression_var = named_expression_rule(p)) // named_expression
&&
@@ -24019,7 +24070,7 @@ invalid_elif_stmt_rule(Parser *p)
expr_ty named_expression_var;
Token * newline_var;
if (
- (a = _PyPegen_expect_token(p, 663)) // token='elif'
+ (a = _PyPegen_expect_token(p, 664)) // token='elif'
&&
(named_expression_var = named_expression_rule(p)) // named_expression
&&
@@ -24072,7 +24123,7 @@ invalid_else_stmt_rule(Parser *p)
Token * a;
Token * newline_var;
if (
- (a = _PyPegen_expect_token(p, 664)) // token='else'
+ (a = _PyPegen_expect_token(p, 665)) // token='else'
&&
(_literal = _PyPegen_expect_token(p, 11)) // token=':'
&&
@@ -24125,7 +24176,7 @@ invalid_while_stmt_rule(Parser *p)
expr_ty named_expression_var;
Token * newline_var;
if (
- (_keyword = _PyPegen_expect_token(p, 666)) // token='while'
+ (_keyword = _PyPegen_expect_token(p, 667)) // token='while'
&&
(named_expression_var = named_expression_rule(p)) // named_expression
&&
@@ -24156,7 +24207,7 @@ invalid_while_stmt_rule(Parser *p)
expr_ty named_expression_var;
Token * newline_var;
if (
- (a = _PyPegen_expect_token(p, 666)) // token='while'
+ (a = _PyPegen_expect_token(p, 667)) // token='while'
&&
(named_expression_var = named_expression_rule(p)) // named_expression
&&
@@ -24215,13 +24266,13 @@ invalid_for_stmt_rule(Parser *p)
expr_ty star_expressions_var;
expr_ty star_targets_var;
if (
- (_opt_var = _PyPegen_expect_token(p, 673), !p->error_indicator) // 'async'?
+ (_opt_var = _PyPegen_expect_token(p, 674), !p->error_indicator) // 'async'?
&&
- (_keyword = _PyPegen_expect_token(p, 671)) // token='for'
+ (_keyword = _PyPegen_expect_token(p, 672)) // token='for'
&&
(star_targets_var = star_targets_rule(p)) // star_targets
&&
- (_keyword_1 = _PyPegen_expect_token(p, 672)) // token='in'
+ (_keyword_1 = _PyPegen_expect_token(p, 673)) // token='in'
&&
(star_expressions_var = star_expressions_rule(p)) // star_expressions
&&
@@ -24256,13 +24307,13 @@ invalid_for_stmt_rule(Parser *p)
expr_ty star_expressions_var;
expr_ty star_targets_var;
if (
- (_opt_var = _PyPegen_expect_token(p, 673), !p->error_indicator) // 'async'?
+ (_opt_var = _PyPegen_expect_token(p, 674), !p->error_indicator) // 'async'?
&&
- (a = _PyPegen_expect_token(p, 671)) // token='for'
+ (a = _PyPegen_expect_token(p, 672)) // token='for'
&&
(star_targets_var = star_targets_rule(p)) // star_targets
&&
- (_keyword = _PyPegen_expect_token(p, 672)) // token='in'
+ (_keyword = _PyPegen_expect_token(p, 673)) // token='in'
&&
(star_expressions_var = star_expressions_rule(p)) // star_expressions
&&
@@ -24327,9 +24378,9 @@ invalid_def_raw_rule(Parser *p)
expr_ty name_var;
Token * newline_var;
if (
- (_opt_var = _PyPegen_expect_token(p, 673), !p->error_indicator) // 'async'?
+ (_opt_var = _PyPegen_expect_token(p, 674), !p->error_indicator) // 'async'?
&&
- (a = _PyPegen_expect_token(p, 674)) // token='def'
+ (a = _PyPegen_expect_token(p, 675)) // token='def'
&&
(name_var = _PyPegen_name_token(p)) // NAME
&&
@@ -24398,7 +24449,7 @@ invalid_class_def_raw_rule(Parser *p)
expr_ty name_var;
Token * newline_var;
if (
- (_keyword = _PyPegen_expect_token(p, 676)) // token='class'
+ (_keyword = _PyPegen_expect_token(p, 677)) // token='class'
&&
(name_var = _PyPegen_name_token(p)) // NAME
&&
@@ -24437,7 +24488,7 @@ invalid_class_def_raw_rule(Parser *p)
expr_ty name_var;
Token * newline_var;
if (
- (a = _PyPegen_expect_token(p, 676)) // token='class'
+ (a = _PyPegen_expect_token(p, 677)) // token='class'
&&
(name_var = _PyPegen_name_token(p)) // NAME
&&
@@ -25212,7 +25263,7 @@ invalid_arithmetic_rule(Parser *p)
&&
(_tmp_251_var = _tmp_251_rule(p)) // '+' | '-' | '*' | '/' | '%' | '//' | '@'
&&
- (a = _PyPegen_expect_token(p, 678)) // token='not'
+ (a = _PyPegen_expect_token(p, 679)) // token='not'
&&
(b = inversion_rule(p)) // inversion
)
@@ -25261,7 +25312,7 @@ invalid_factor_rule(Parser *p)
if (
(_tmp_252_var = _tmp_252_rule(p)) // '+' | '-' | '~'
&&
- (a = _PyPegen_expect_token(p, 678)) // token='not'
+ (a = _PyPegen_expect_token(p, 679)) // token='not'
&&
(b = factor_rule(p)) // factor
)
@@ -25629,7 +25680,7 @@ _tmp_6_rule(Parser *p)
D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import'"));
Token * _keyword;
if (
- (_keyword = _PyPegen_expect_token(p, 620)) // token='import'
+ (_keyword = _PyPegen_expect_token(p, 622)) // token='import'
)
{
D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import'"));
@@ -25686,7 +25737,7 @@ _tmp_7_rule(Parser *p)
D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'def'"));
Token * _keyword;
if (
- (_keyword = _PyPegen_expect_token(p, 674)) // token='def'
+ (_keyword = _PyPegen_expect_token(p, 675)) // token='def'
)
{
D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'def'"));
@@ -25724,7 +25775,7 @@ _tmp_7_rule(Parser *p)
D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'"));
Token * _keyword;
if (
- (_keyword = _PyPegen_expect_token(p, 673)) // token='async'
+ (_keyword = _PyPegen_expect_token(p, 674)) // token='async'
)
{
D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'"));
@@ -25762,7 +25813,7 @@ _tmp_8_rule(Parser *p)
D(fprintf(stderr, "%*c> _tmp_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class'"));
Token * _keyword;
if (
- (_keyword = _PyPegen_expect_token(p, 676)) // token='class'
+ (_keyword = _PyPegen_expect_token(p, 677)) // token='class'
)
{
D(fprintf(stderr, "%*c+ _tmp_8[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class'"));
@@ -25819,7 +25870,7 @@ _tmp_9_rule(Parser *p)
D(fprintf(stderr, "%*c> _tmp_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with'"));
Token * _keyword;
if (
- (_keyword = _PyPegen_expect_token(p, 634)) // token='with'
+ (_keyword = _PyPegen_expect_token(p, 635)) // token='with'
)
{
D(fprintf(stderr, "%*c+ _tmp_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with'"));
@@ -25838,7 +25889,7 @@ _tmp_9_rule(Parser *p)
D(fprintf(stderr, "%*c> _tmp_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'"));
Token * _keyword;
if (
- (_keyword = _PyPegen_expect_token(p, 673)) // token='async'
+ (_keyword = _PyPegen_expect_token(p, 674)) // token='async'
)
{
D(fprintf(stderr, "%*c+ _tmp_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'"));
@@ -25876,7 +25927,7 @@ _tmp_10_rule(Parser *p)
D(fprintf(stderr, "%*c> _tmp_10[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for'"));
Token * _keyword;
if (
- (_keyword = _PyPegen_expect_token(p, 671)) // token='for'
+ (_keyword = _PyPegen_expect_token(p, 672)) // token='for'
)
{
D(fprintf(stderr, "%*c+ _tmp_10[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for'"));
@@ -25895,7 +25946,7 @@ _tmp_10_rule(Parser *p)
D(fprintf(stderr, "%*c> _tmp_10[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'"));
Token * _keyword;
if (
- (_keyword = _PyPegen_expect_token(p, 673)) // token='async'
+ (_keyword = _PyPegen_expect_token(p, 674)) // token='async'
)
{
D(fprintf(stderr, "%*c+ _tmp_10[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'"));
@@ -26919,7 +26970,7 @@ _tmp_28_rule(Parser *p)
Token * _keyword;
expr_ty z;
if (
- (_keyword = _PyPegen_expect_token(p, 659)) // token='as'
+ (_keyword = _PyPegen_expect_token(p, 660)) // token='as'
&&
(z = _PyPegen_name_token(p)) // NAME
)
@@ -27082,7 +27133,7 @@ _tmp_31_rule(Parser *p)
Token * _keyword;
expr_ty z;
if (
- (_keyword = _PyPegen_expect_token(p, 659)) // token='as'
+ (_keyword = _PyPegen_expect_token(p, 660)) // token='as'
&&
(z = _PyPegen_name_token(p)) // NAME
)
@@ -29069,7 +29120,7 @@ _tmp_62_rule(Parser *p)
Token * _keyword;
expr_ty z;
if (
- (_keyword = _PyPegen_expect_token(p, 659)) // token='as'
+ (_keyword = _PyPegen_expect_token(p, 660)) // token='as'
&&
(z = _PyPegen_name_token(p)) // NAME
)
@@ -29115,7 +29166,7 @@ _tmp_63_rule(Parser *p)
Token * _keyword;
expr_ty z;
if (
- (_keyword = _PyPegen_expect_token(p, 659)) // token='as'
+ (_keyword = _PyPegen_expect_token(p, 660)) // token='as'
&&
(z = _PyPegen_name_token(p)) // NAME
)
@@ -35059,7 +35110,7 @@ _tmp_160_rule(Parser *p)
D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else'"));
Token * _keyword;
if (
- (_keyword = _PyPegen_expect_token(p, 664)) // token='else'
+ (_keyword = _PyPegen_expect_token(p, 665)) // token='else'
)
{
D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else'"));
@@ -38652,7 +38703,7 @@ _tmp_216_rule(Parser *p)
D(fprintf(stderr, "%*c> _tmp_216[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except'"));
Token * _keyword;
if (
- (_keyword = _PyPegen_expect_token(p, 656)) // token='except'
+ (_keyword = _PyPegen_expect_token(p, 657)) // token='except'
)
{
D(fprintf(stderr, "%*c+ _tmp_216[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except'"));
@@ -38671,7 +38722,7 @@ _tmp_216_rule(Parser *p)
D(fprintf(stderr, "%*c> _tmp_216[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally'"));
Token * _keyword;
if (
- (_keyword = _PyPegen_expect_token(p, 652)) // token='finally'
+ (_keyword = _PyPegen_expect_token(p, 653)) // token='finally'
)
{
D(fprintf(stderr, "%*c+ _tmp_216[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally'"));
@@ -38849,7 +38900,7 @@ _tmp_219_rule(Parser *p)
Token * _keyword;
expr_ty name_var;
if (
- (_keyword = _PyPegen_expect_token(p, 659)) // token='as'
+ (_keyword = _PyPegen_expect_token(p, 660)) // token='as'
&&
(name_var = _PyPegen_name_token(p)) // NAME
)
@@ -39071,7 +39122,7 @@ _tmp_223_rule(Parser *p)
Token * _keyword;
expr_ty name_var;
if (
- (_keyword = _PyPegen_expect_token(p, 659)) // token='as'
+ (_keyword = _PyPegen_expect_token(p, 660)) // token='as'
&&
(name_var = _PyPegen_name_token(p)) // NAME
)
@@ -39112,7 +39163,7 @@ _tmp_224_rule(Parser *p)
Token * _keyword;
expr_ty name_var;
if (
- (_keyword = _PyPegen_expect_token(p, 659)) // token='as'
+ (_keyword = _PyPegen_expect_token(p, 660)) // token='as'
&&
(name_var = _PyPegen_name_token(p)) // NAME
)
@@ -39210,7 +39261,7 @@ _tmp_226_rule(Parser *p)
Token * _keyword;
expr_ty name_var;
if (
- (_keyword = _PyPegen_expect_token(p, 659)) // token='as'
+ (_keyword = _PyPegen_expect_token(p, 660)) // token='as'
&&
(name_var = _PyPegen_name_token(p)) // NAME
)
@@ -39251,7 +39302,7 @@ _tmp_227_rule(Parser *p)
Token * _keyword;
expr_ty name_var;
if (
- (_keyword = _PyPegen_expect_token(p, 659)) // token='as'
+ (_keyword = _PyPegen_expect_token(p, 660)) // token='as'
&&
(name_var = _PyPegen_name_token(p)) // NAME
)
@@ -41304,7 +41355,7 @@ _tmp_263_rule(Parser *p)
Token * _keyword;
expr_ty z;
if (
- (_keyword = _PyPegen_expect_token(p, 661)) // token='if'
+ (_keyword = _PyPegen_expect_token(p, 662)) // token='if'
&&
(z = disjunction_rule(p)) // disjunction
)
@@ -41350,7 +41401,7 @@ _tmp_264_rule(Parser *p)
Token * _keyword;
expr_ty z;
if (
- (_keyword = _PyPegen_expect_token(p, 661)) // token='if'
+ (_keyword = _PyPegen_expect_token(p, 662)) // token='if'
&&
(z = disjunction_rule(p)) // disjunction
)
@@ -42063,7 +42114,7 @@ _tmp_279_rule(Parser *p)
Token * _keyword;
expr_ty name_var;
if (
- (_keyword = _PyPegen_expect_token(p, 659)) // token='as'
+ (_keyword = _PyPegen_expect_token(p, 660)) // token='as'
&&
(name_var = _PyPegen_name_token(p)) // NAME
)
@@ -42322,7 +42373,7 @@ _tmp_284_rule(Parser *p)
Token * _keyword;
expr_ty star_target_var;
if (
- (_keyword = _PyPegen_expect_token(p, 659)) // token='as'
+ (_keyword = _PyPegen_expect_token(p, 660)) // token='as'
&&
(star_target_var = star_target_rule(p)) // star_target
)
@@ -42363,7 +42414,7 @@ _tmp_285_rule(Parser *p)
Token * _keyword;
expr_ty star_target_var;
if (
- (_keyword = _PyPegen_expect_token(p, 659)) // token='as'
+ (_keyword = _PyPegen_expect_token(p, 660)) // token='as'
&&
(star_target_var = star_target_rule(p)) // star_target
)
@@ -42404,7 +42455,7 @@ _tmp_286_rule(Parser *p)
Token * _keyword;
expr_ty star_target_var;
if (
- (_keyword = _PyPegen_expect_token(p, 659)) // token='as'
+ (_keyword = _PyPegen_expect_token(p, 660)) // token='as'
&&
(star_target_var = star_target_rule(p)) // star_target
)
@@ -42445,7 +42496,7 @@ _tmp_287_rule(Parser *p)
Token * _keyword;
expr_ty star_target_var;
if (
- (_keyword = _PyPegen_expect_token(p, 659)) // token='as'
+ (_keyword = _PyPegen_expect_token(p, 660)) // token='as'
&&
(star_target_var = star_target_rule(p)) // star_target
)

_______________________________________________
Python-checkins mailing list -- python-checkins@python.org
To unsubscribe send an email to python-checkins-leave@python.org
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: list-python-checkins@lists.gossamer-threads.com