summaryrefslogtreecommitdiffstats
path: root/Grammar/python.gram
diff options
context:
space:
mode:
authorLysandros Nikolaou <lisandrosnik@gmail.com>2020-10-26 22:42:04 (GMT)
committerGitHub <noreply@github.com>2020-10-26 22:42:04 (GMT)
commitbca701403253379409dece03053dbd739c0bd059 (patch)
tree9222677d56d4669ac00f734ffeb7d72797bb6a89 /Grammar/python.gram
parentc8c4200b65b2159bbb13cee10d67dfb3676fef26 (diff)
downloadcpython-bca701403253379409dece03053dbd739c0bd059.zip
cpython-bca701403253379409dece03053dbd739c0bd059.tar.gz
cpython-bca701403253379409dece03053dbd739c0bd059.tar.bz2
bpo-42123: Run the parser two times and only enable invalid rules on the second run (GH-22111)
* Implement running the parser a second time for the errors messages The first parser run is only responsible for detecting whether there is a `SyntaxError` or not. If there isn't the AST gets returned. Otherwise, the parser is run a second time with all the `invalid_*` rules enabled so that all the customized error messages get produced.
Diffstat (limited to 'Grammar/python.gram')
-rw-r--r--Grammar/python.gram4
1 files changed, 2 insertions, 2 deletions
diff --git a/Grammar/python.gram b/Grammar/python.gram
index d2d6fc0..19c85ac 100644
--- a/Grammar/python.gram
+++ b/Grammar/python.gram
@@ -551,7 +551,7 @@ yield_expr[expr_ty]:
arguments[expr_ty] (memo):
| a=args [','] &')' { a }
- | incorrect_arguments
+ | 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=kwargs { _Py_Call(_PyPegen_dummy_name(p),
@@ -637,7 +637,7 @@ t_atom[expr_ty]:
# From here on, there are rules for invalid syntax with specialised error messages
-incorrect_arguments:
+invalid_arguments:
| args ',' '*' { RAISE_SYNTAX_ERROR("iterable argument unpacking follows keyword argument unpacking") }
| a=expression for_if_clauses ',' [args | expression for_if_clauses] {
RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "Generator expression must be parenthesized") }