@@ -529,6 +529,7 @@ expressions[expr_ty]:
529
529
| expression
530
530
expression[expr_ty] (memo):
531
531
| invalid_expression
532
+ | invalid_legacy_expression
532
533
| a=disjunction 'if' b=disjunction 'else' c=expression { _PyAST_IfExp(b, a, c, EXTRA) }
533
534
| disjunction
534
535
| lambdef
@@ -666,7 +667,6 @@ await_primary[expr_ty] (memo):
666
667
| AWAIT a=primary { CHECK_VERSION(expr_ty, 5, "Await expressions are", _PyAST_Await(a, EXTRA)) }
667
668
| primary
668
669
primary[expr_ty]:
669
- | invalid_primary # must be before 'primay genexp' because of invalid_genexp
670
670
| a=primary '.' b=NAME { _PyAST_Attribute(a, b->v.Name.id, Load, EXTRA) }
671
671
| a=primary b=genexp { _PyAST_Call(a, CHECK(asdl_expr_seq*, (asdl_expr_seq*)_PyPegen_singleton_seq(p, b)), NULL, EXTRA) }
672
672
| a=primary '(' b=[arguments] ')' {
@@ -856,11 +856,11 @@ invalid_legacy_expression:
856
856
"Missing parentheses in call to '%U'. Did you mean %U(...)?", a->v.Name.id, a->v.Name.id) : NULL}
857
857
858
858
invalid_expression:
859
- | invalid_legacy_expression
860
859
# !(NAME STRING) is not matched so we don't show this error with some invalid string prefixes like: kf"dsfsdf"
861
860
# Soft keywords need to also be ignored because they can be parsed as NAME NAME
862
861
| !(NAME STRING | SOFT_KEYWORD) a=disjunction b=expression_without_invalid {
863
- RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, "invalid syntax. Perhaps you forgot a comma?") }
862
+ _PyPegen_check_legacy_stmt(p, a) ? NULL : RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b,
863
+ "invalid syntax. Perhaps you forgot a comma?") }
864
864
| a=disjunction 'if' b=disjunction !('else'|':') { RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, "expected 'else' after 'if' expression") }
865
865
866
866
invalid_named_expression:
@@ -902,8 +902,6 @@ invalid_del_stmt:
902
902
RAISE_SYNTAX_ERROR_INVALID_TARGET(DEL_TARGETS, a) }
903
903
invalid_block:
904
904
| NEWLINE !INDENT { RAISE_INDENTATION_ERROR("expected an indented block") }
905
- invalid_primary:
906
- | primary a='{' { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "invalid syntax") }
907
905
invalid_comprehension:
908
906
| ('[' | '(' | '{') a=starred_expression for_if_clauses {
909
907
RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "iterable unpacking cannot be used in comprehension") }
0 commit comments