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]]]
|
raise_stmt: 'raise' [test [',' test [',' test]]]
|
||||||
import_stmt: import_name | import_from
|
import_stmt: import_name | import_from
|
||||||
import_name: 'import' dotted_as_names
|
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' ('*' | '(' import_as_names ')' | import_as_names))
|
||||||
import_as_name: NAME ['as' NAME]
|
import_as_name: NAME ['as' NAME]
|
||||||
dotted_as_name: dotted_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_stmt: import_name | import_from
|
||||||
import_name: 'import' dotted_as_names
|
import_name: 'import' dotted_as_names
|
||||||
import_from: 'from' ('.'* dotted_name | '.') 'import'
|
import_from: 'from' (('.' | '...')* dotted_name | ('.' | '...')+)
|
||||||
('*' | '(' import_as_names ')' | import_as_names)
|
'import' ('*' | '(' import_as_names ')' | import_as_names)
|
||||||
*/
|
*/
|
||||||
int lineno;
|
int lineno;
|
||||||
int col_offset;
|
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));
|
mod = alias_for_import_name(c, CHILD(n, idx));
|
||||||
idx++;
|
idx++;
|
||||||
break;
|
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) {
|
} else if (TYPE(CHILD(n, idx)) != DOT) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue