@@ -233,15 +233,17 @@ import_from_targets[asdl_alias_seq*]:
233233import_from_as_names[asdl_alias_seq*]:
234234 | a[asdl_alias_seq*]=','.import_from_as_name+ { a }
235235import_from_as_name[alias_ty]:
236- | a=NAME b=['as' z=NAME { z }] { _PyAST_alias(a->v.Name.id,
237- (b) ? ((expr_ty) b)->v.Name.id : NULL,
238- EXTRA) }
236+ | invalid_import_from_as_name
237+ | a=NAME b=['as' z=NAME { z }] { _PyAST_alias(
238+ a->v.Name.id, (b) ? ((expr_ty) b)->v.Name.id : NULL, EXTRA) }
239+
239240dotted_as_names[asdl_alias_seq*]:
240241 | a[asdl_alias_seq*]=','.dotted_as_name+ { a }
241242dotted_as_name[alias_ty]:
242- | a=dotted_name b=['as' z=NAME { z }] { _PyAST_alias(a->v.Name.id,
243- (b) ? ((expr_ty) b)->v.Name.id : NULL,
244- EXTRA) }
243+ | invalid_dotted_as_name
244+ | a=dotted_name b=['as' z=NAME { z }] { _PyAST_alias(
245+ a->v.Name.id, (b) ? ((expr_ty) b)->v.Name.id : NULL, EXTRA) }
246+
245247dotted_name[expr_ty]:
246248 | a=dotted_name '.' b=NAME { _PyPegen_join_names_with_dot(p, a, b) }
247249 | NAME
@@ -1375,6 +1377,14 @@ invalid_import:
13751377 RAISE_SYNTAX_ERROR_STARTING_FROM(a, "Did you mean to use 'from ... import ...' instead?") }
13761378 | 'import' token=NEWLINE {
13771379 RAISE_SYNTAX_ERROR_STARTING_FROM(token, "Expected one or more names after 'import'") }
1380+ invalid_dotted_as_name:
1381+ | dotted_name 'as' !(NAME (',' | ')' | NEWLINE)) a=expression {
1382+ RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a,
1383+ "cannot use %s as import target", _PyPegen_get_expr_name(a)) }
1384+ invalid_import_from_as_name:
1385+ | NAME 'as' !(NAME (',' | ')' | NEWLINE)) a=expression {
1386+ RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a,
1387+ "cannot use %s as import target", _PyPegen_get_expr_name(a)) }
13781388
13791389invalid_import_from_targets:
13801390 | import_from_as_names ',' NEWLINE {
0 commit comments