mirror of https://github.com/python/cpython
"from ... import x" should not be a syntax error... make
import_stmt accept ELLIPSes and DOTs.
This commit is contained in:
parent
d16e81aabe
commit
e66c8c7c12
|
@ -55,7 +55,8 @@ yield_stmt: yield_expr
|
|||
raise_stmt: 'raise' [test [',' test [',' test]]]
|
||||
import_stmt: import_name | import_from
|
||||
import_name: 'import' dotted_as_names
|
||||
import_from: ('from' ('.'* dotted_name | '.'+)
|
||||
# note below: the ('.' | '...') is necessary because '...' is tokenized as ELLIPSIS
|
||||
import_from: ('from' (('.' | '...')* dotted_name | ('.' | '...')+)
|
||||
'import' ('*' | '(' import_as_names ')' | import_as_names))
|
||||
import_as_name: NAME ['as' NAME]
|
||||
dotted_as_name: dotted_name ['as' NAME]
|
||||
|
|
|
@ -2406,8 +2406,8 @@ ast_for_import_stmt(struct compiling *c, const node *n)
|
|||
/*
|
||||
import_stmt: import_name | import_from
|
||||
import_name: 'import' dotted_as_names
|
||||
import_from: 'from' ('.'* dotted_name | '.') 'import'
|
||||
('*' | '(' import_as_names ')' | import_as_names)
|
||||
import_from: 'from' (('.' | '...')* dotted_name | ('.' | '...')+)
|
||||
'import' ('*' | '(' import_as_names ')' | import_as_names)
|
||||
*/
|
||||
int lineno;
|
||||
int col_offset;
|
||||
|
@ -2445,6 +2445,10 @@ ast_for_import_stmt(struct compiling *c, const node *n)
|
|||
mod = alias_for_import_name(c, CHILD(n, idx));
|
||||
idx++;
|
||||
break;
|
||||
} else if (TYPE(CHILD(n, idx)) == ELLIPSIS) {
|
||||
/* three consecutive dots are tokenized as one ELLIPSIS */
|
||||
ndots += 3;
|
||||
continue;
|
||||
} else if (TYPE(CHILD(n, idx)) != DOT) {
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue