1 """Token constants."""
2 # Auto-generated by Tools/build/generate_token.py
3
4 __all__ = ['tok_name', 'ISTERMINAL', 'ISNONTERMINAL', 'ISEOF']
5
6 ENDMARKER = 0
7 NAME = 1
8 NUMBER = 2
9 STRING = 3
10 NEWLINE = 4
11 INDENT = 5
12 DEDENT = 6
13 LPAR = 7
14 RPAR = 8
15 LSQB = 9
16 RSQB = 10
17 COLON = 11
18 COMMA = 12
19 SEMI = 13
20 PLUS = 14
21 MINUS = 15
22 STAR = 16
23 SLASH = 17
24 VBAR = 18
25 AMPER = 19
26 LESS = 20
27 GREATER = 21
28 EQUAL = 22
29 DOT = 23
30 PERCENT = 24
31 LBRACE = 25
32 RBRACE = 26
33 EQEQUAL = 27
34 NOTEQUAL = 28
35 LESSEQUAL = 29
36 GREATEREQUAL = 30
37 TILDE = 31
38 CIRCUMFLEX = 32
39 LEFTSHIFT = 33
40 RIGHTSHIFT = 34
41 DOUBLESTAR = 35
42 PLUSEQUAL = 36
43 MINEQUAL = 37
44 STAREQUAL = 38
45 SLASHEQUAL = 39
46 PERCENTEQUAL = 40
47 AMPEREQUAL = 41
48 VBAREQUAL = 42
49 CIRCUMFLEXEQUAL = 43
50 LEFTSHIFTEQUAL = 44
51 RIGHTSHIFTEQUAL = 45
52 DOUBLESTAREQUAL = 46
53 DOUBLESLASH = 47
54 DOUBLESLASHEQUAL = 48
55 AT = 49
56 ATEQUAL = 50
57 RARROW = 51
58 ELLIPSIS = 52
59 COLONEQUAL = 53
60 EXCLAMATION = 54
61 OP = 55
62 AWAIT = 56
63 ASYNC = 57
64 TYPE_IGNORE = 58
65 TYPE_COMMENT = 59
66 SOFT_KEYWORD = 60
67 FSTRING_START = 61
68 FSTRING_MIDDLE = 62
69 FSTRING_END = 63
70 COMMENT = 64
71 NL = 65
72 # These aren't used by the C tokenizer but are needed for tokenize.py
73 ERRORTOKEN = 66
74 ENCODING = 67
75 N_TOKENS = 68
76 # Special definitions for cooperation with parser
77 NT_OFFSET = 256
78
79 tok_name = {value: name
80 for name, value in globals().items()
81 if isinstance(value, int) and not name.startswith('_')}
82 __all__.extend(tok_name.values())
83
84 EXACT_TOKEN_TYPES = {
85 '!': EXCLAMATION,
86 '!=': NOTEQUAL,
87 '%': PERCENT,
88 '%=': PERCENTEQUAL,
89 '&': AMPER,
90 '&=': AMPEREQUAL,
91 '(': LPAR,
92 ')': RPAR,
93 '*': STAR,
94 '**': DOUBLESTAR,
95 '**=': DOUBLESTAREQUAL,
96 '*=': STAREQUAL,
97 '+': PLUS,
98 '+=': PLUSEQUAL,
99 ',': COMMA,
100 '-': MINUS,
101 '-=': MINEQUAL,
102 '->': RARROW,
103 '.': DOT,
104 '...': ELLIPSIS,
105 '/': SLASH,
106 '//': DOUBLESLASH,
107 '//=': DOUBLESLASHEQUAL,
108 '/=': SLASHEQUAL,
109 ':': COLON,
110 ':=': COLONEQUAL,
111 ';': SEMI,
112 '<': LESS,
113 '<<': LEFTSHIFT,
114 '<<=': LEFTSHIFTEQUAL,
115 '<=': LESSEQUAL,
116 '=': EQUAL,
117 '==': EQEQUAL,
118 '>': GREATER,
119 '>=': GREATEREQUAL,
120 '>>': RIGHTSHIFT,
121 '>>=': RIGHTSHIFTEQUAL,
122 '@': AT,
123 '@=': ATEQUAL,
124 '[': LSQB,
125 ']': RSQB,
126 '^': CIRCUMFLEX,
127 '^=': CIRCUMFLEXEQUAL,
128 '{': LBRACE,
129 '|': VBAR,
130 '|=': VBAREQUAL,
131 '}': RBRACE,
132 '~': TILDE,
133 }
134
135 def ISTERMINAL(x):
136 return x < NT_OFFSET
137
138 def ISNONTERMINAL(x):
139 return x >= NT_OFFSET
140
141 def ISEOF(x):
142 return x == ENDMARKER