Ensure that early = are not matched by the parser as invalid comparisons (GH-25375)

This commit is contained in:
Pablo Galindo 2021-04-13 02:32:33 +01:00 committed by GitHub
parent c1a66bdd6f
commit d9151cb453
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 423 additions and 319 deletions

View file

@ -447,6 +447,10 @@ named_expression[expr_ty]:
| invalid_named_expression
| expression !':='
direct_named_expression[expr_ty]:
| a=NAME ':=' ~ b=expression { _PyAST_NamedExpr(CHECK(expr_ty, _PyPegen_set_expr_context(p, a, Store)), b, EXTRA) }
| expression !':='
annotated_rhs[expr_ty]: yield_expr | star_expressions
expressions[expr_ty]:
@ -671,7 +675,7 @@ arguments[expr_ty] (memo):
| a=args [','] &')' { a }
| invalid_arguments
args[expr_ty]:
| a[asdl_expr_seq*]=','.(starred_expression | named_expression !'=')+ b=[',' k=kwargs {k}] { _PyPegen_collect_call_seqs(p, a, b, EXTRA) }
| a[asdl_expr_seq*]=','.(starred_expression | direct_named_expression !'=')+ b=[',' k=kwargs {k}] { _PyPegen_collect_call_seqs(p, a, b, EXTRA) }
| a=kwargs { _PyAST_Call(_PyPegen_dummy_name(p),
CHECK_NULL_ALLOWED(asdl_expr_seq*, _PyPegen_seq_extract_starred_exprs(p, a)),
CHECK_NULL_ALLOWED(asdl_keyword_seq*, _PyPegen_seq_delete_starred_exprs(p, a)),