mirror of
https://github.com/python/cpython.git
synced 2024-11-23 18:04:37 +08:00
495da29225
This adds a `feature_version` flag to `ast.parse()` (documented) and `compile()` (hidden) that allow tweaking the parser to support older versions of the grammar. In particular if `feature_version` is 5 or 6, the hacks for the `async` and `await` keyword from PEP 492 are reinstated. (For 7 or higher, these are unconditionally treated as keywords, but they are still special tokens rather than `NAME` tokens that the parser driver recognizes.) https://bugs.python.org/issue35975
137 lines
2.3 KiB
Python
Generated
137 lines
2.3 KiB
Python
Generated
"""Token constants."""
|
|
# Auto-generated by Tools/scripts/generate_token.py
|
|
|
|
__all__ = ['tok_name', 'ISTERMINAL', 'ISNONTERMINAL', 'ISEOF']
|
|
|
|
ENDMARKER = 0
|
|
NAME = 1
|
|
NUMBER = 2
|
|
STRING = 3
|
|
NEWLINE = 4
|
|
INDENT = 5
|
|
DEDENT = 6
|
|
LPAR = 7
|
|
RPAR = 8
|
|
LSQB = 9
|
|
RSQB = 10
|
|
COLON = 11
|
|
COMMA = 12
|
|
SEMI = 13
|
|
PLUS = 14
|
|
MINUS = 15
|
|
STAR = 16
|
|
SLASH = 17
|
|
VBAR = 18
|
|
AMPER = 19
|
|
LESS = 20
|
|
GREATER = 21
|
|
EQUAL = 22
|
|
DOT = 23
|
|
PERCENT = 24
|
|
LBRACE = 25
|
|
RBRACE = 26
|
|
EQEQUAL = 27
|
|
NOTEQUAL = 28
|
|
LESSEQUAL = 29
|
|
GREATEREQUAL = 30
|
|
TILDE = 31
|
|
CIRCUMFLEX = 32
|
|
LEFTSHIFT = 33
|
|
RIGHTSHIFT = 34
|
|
DOUBLESTAR = 35
|
|
PLUSEQUAL = 36
|
|
MINEQUAL = 37
|
|
STAREQUAL = 38
|
|
SLASHEQUAL = 39
|
|
PERCENTEQUAL = 40
|
|
AMPEREQUAL = 41
|
|
VBAREQUAL = 42
|
|
CIRCUMFLEXEQUAL = 43
|
|
LEFTSHIFTEQUAL = 44
|
|
RIGHTSHIFTEQUAL = 45
|
|
DOUBLESTAREQUAL = 46
|
|
DOUBLESLASH = 47
|
|
DOUBLESLASHEQUAL = 48
|
|
AT = 49
|
|
ATEQUAL = 50
|
|
RARROW = 51
|
|
ELLIPSIS = 52
|
|
COLONEQUAL = 53
|
|
OP = 54
|
|
AWAIT = 55
|
|
ASYNC = 56
|
|
TYPE_IGNORE = 57
|
|
TYPE_COMMENT = 58
|
|
# These aren't used by the C tokenizer but are needed for tokenize.py
|
|
ERRORTOKEN = 59
|
|
COMMENT = 60
|
|
NL = 61
|
|
ENCODING = 62
|
|
N_TOKENS = 63
|
|
# Special definitions for cooperation with parser
|
|
NT_OFFSET = 256
|
|
|
|
tok_name = {value: name
|
|
for name, value in globals().items()
|
|
if isinstance(value, int) and not name.startswith('_')}
|
|
__all__.extend(tok_name.values())
|
|
|
|
EXACT_TOKEN_TYPES = {
|
|
'!=': NOTEQUAL,
|
|
'%': PERCENT,
|
|
'%=': PERCENTEQUAL,
|
|
'&': AMPER,
|
|
'&=': AMPEREQUAL,
|
|
'(': LPAR,
|
|
')': RPAR,
|
|
'*': STAR,
|
|
'**': DOUBLESTAR,
|
|
'**=': DOUBLESTAREQUAL,
|
|
'*=': STAREQUAL,
|
|
'+': PLUS,
|
|
'+=': PLUSEQUAL,
|
|
',': COMMA,
|
|
'-': MINUS,
|
|
'-=': MINEQUAL,
|
|
'->': RARROW,
|
|
'.': DOT,
|
|
'...': ELLIPSIS,
|
|
'/': SLASH,
|
|
'//': DOUBLESLASH,
|
|
'//=': DOUBLESLASHEQUAL,
|
|
'/=': SLASHEQUAL,
|
|
':': COLON,
|
|
':=': COLONEQUAL,
|
|
';': SEMI,
|
|
'<': LESS,
|
|
'<<': LEFTSHIFT,
|
|
'<<=': LEFTSHIFTEQUAL,
|
|
'<=': LESSEQUAL,
|
|
'=': EQUAL,
|
|
'==': EQEQUAL,
|
|
'>': GREATER,
|
|
'>=': GREATEREQUAL,
|
|
'>>': RIGHTSHIFT,
|
|
'>>=': RIGHTSHIFTEQUAL,
|
|
'@': AT,
|
|
'@=': ATEQUAL,
|
|
'[': LSQB,
|
|
']': RSQB,
|
|
'^': CIRCUMFLEX,
|
|
'^=': CIRCUMFLEXEQUAL,
|
|
'{': LBRACE,
|
|
'|': VBAR,
|
|
'|=': VBAREQUAL,
|
|
'}': RBRACE,
|
|
'~': TILDE,
|
|
}
|
|
|
|
def ISTERMINAL(x):
|
|
return x < NT_OFFSET
|
|
|
|
def ISNONTERMINAL(x):
|
|
return x >= NT_OFFSET
|
|
|
|
def ISEOF(x):
|
|
return x == ENDMARKER
|