mirror of
https://github.com/python/cpython.git
synced 2025-12-08 06:10:17 +00:00
Lazy imports grammar / AST changes
This commit is contained in:
parent
fb114cf497
commit
1c691ea756
25 changed files with 1016 additions and 338 deletions
|
|
@ -121,9 +121,9 @@ simple_stmts[asdl_stmt_seq*]:
|
|||
simple_stmt[stmt_ty] (memo):
|
||||
| assignment
|
||||
| &"type" type_alias
|
||||
| &('import' | 'from' | "lazy" ) import_stmt
|
||||
| e=star_expressions { _PyAST_Expr(e, EXTRA) }
|
||||
| &'return' return_stmt
|
||||
| &('import' | 'from') import_stmt
|
||||
| &'raise' raise_stmt
|
||||
| &'pass' pass_stmt
|
||||
| &'del' del_stmt
|
||||
|
|
@ -216,7 +216,7 @@ assert_stmt[stmt_ty]:
|
|||
| invalid_assert_stmt
|
||||
| 'assert' a=expression b=[',' z=expression { z }] { _PyAST_Assert(a, b, EXTRA) }
|
||||
|
||||
import_stmt[stmt_ty]:
|
||||
import_stmt[stmt_ty](memo):
|
||||
| invalid_import
|
||||
| import_name
|
||||
| import_from
|
||||
|
|
@ -224,13 +224,16 @@ import_stmt[stmt_ty]:
|
|||
# Import statements
|
||||
# -----------------
|
||||
|
||||
import_name[stmt_ty]: 'import' a=dotted_as_names { _PyAST_Import(a, EXTRA) }
|
||||
import_name[stmt_ty]:
|
||||
| 'import' a=dotted_as_names { _PyAST_Import(a, 0, EXTRA) }
|
||||
| "lazy" 'import' a=dotted_as_names { _PyAST_Import(a, 1, EXTRA) }
|
||||
|
||||
# note below: the ('.' | '...') is necessary because '...' is tokenized as ELLIPSIS
|
||||
import_from[stmt_ty]:
|
||||
| 'from' a=('.' | '...')* b=dotted_name 'import' c=import_from_targets {
|
||||
_PyPegen_checked_future_import(p, b->v.Name.id, c, _PyPegen_seq_count_dots(a), EXTRA) }
|
||||
| 'from' a=('.' | '...')+ 'import' b=import_from_targets {
|
||||
_PyAST_ImportFrom(NULL, b, _PyPegen_seq_count_dots(a), EXTRA) }
|
||||
| lazy="lazy"? 'from' a=('.' | '...')* b=dotted_name 'import' c=import_from_targets {
|
||||
_PyPegen_checked_future_import(p, b->v.Name.id, c, _PyPegen_seq_count_dots(a), lazy ? 1 : 0, EXTRA) }
|
||||
| lazy="lazy"? 'from' a=('.' | '...')+ 'import' b=import_from_targets {
|
||||
_PyAST_ImportFrom(NULL, b, _PyPegen_seq_count_dots(a), lazy ? 1 : 0, EXTRA) }
|
||||
import_from_targets[asdl_alias_seq*]:
|
||||
| '(' a=import_from_as_names [','] ')' { a }
|
||||
| import_from_as_names !','
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue