Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
allendowney
GitHub Repository: allendowney/cpython
Path: blob/main/Parser/token.c
12 views
1
/* Auto-generated by Tools/build/generate_token.py */
2
3
#include "Python.h"
4
#include "pycore_token.h"
5
6
/* Token names */
7
8
const char * const _PyParser_TokenNames[] = {
9
"ENDMARKER",
10
"NAME",
11
"NUMBER",
12
"STRING",
13
"NEWLINE",
14
"INDENT",
15
"DEDENT",
16
"LPAR",
17
"RPAR",
18
"LSQB",
19
"RSQB",
20
"COLON",
21
"COMMA",
22
"SEMI",
23
"PLUS",
24
"MINUS",
25
"STAR",
26
"SLASH",
27
"VBAR",
28
"AMPER",
29
"LESS",
30
"GREATER",
31
"EQUAL",
32
"DOT",
33
"PERCENT",
34
"LBRACE",
35
"RBRACE",
36
"EQEQUAL",
37
"NOTEQUAL",
38
"LESSEQUAL",
39
"GREATEREQUAL",
40
"TILDE",
41
"CIRCUMFLEX",
42
"LEFTSHIFT",
43
"RIGHTSHIFT",
44
"DOUBLESTAR",
45
"PLUSEQUAL",
46
"MINEQUAL",
47
"STAREQUAL",
48
"SLASHEQUAL",
49
"PERCENTEQUAL",
50
"AMPEREQUAL",
51
"VBAREQUAL",
52
"CIRCUMFLEXEQUAL",
53
"LEFTSHIFTEQUAL",
54
"RIGHTSHIFTEQUAL",
55
"DOUBLESTAREQUAL",
56
"DOUBLESLASH",
57
"DOUBLESLASHEQUAL",
58
"AT",
59
"ATEQUAL",
60
"RARROW",
61
"ELLIPSIS",
62
"COLONEQUAL",
63
"EXCLAMATION",
64
"OP",
65
"AWAIT",
66
"ASYNC",
67
"TYPE_IGNORE",
68
"TYPE_COMMENT",
69
"SOFT_KEYWORD",
70
"FSTRING_START",
71
"FSTRING_MIDDLE",
72
"FSTRING_END",
73
"COMMENT",
74
"NL",
75
"<ERRORTOKEN>",
76
"<ENCODING>",
77
"<N_TOKENS>",
78
};
79
80
/* Return the token corresponding to a single character */
81
82
int
83
_PyToken_OneChar(int c1)
84
{
85
switch (c1) {
86
case '!': return EXCLAMATION;
87
case '%': return PERCENT;
88
case '&': return AMPER;
89
case '(': return LPAR;
90
case ')': return RPAR;
91
case '*': return STAR;
92
case '+': return PLUS;
93
case ',': return COMMA;
94
case '-': return MINUS;
95
case '.': return DOT;
96
case '/': return SLASH;
97
case ':': return COLON;
98
case ';': return SEMI;
99
case '<': return LESS;
100
case '=': return EQUAL;
101
case '>': return GREATER;
102
case '@': return AT;
103
case '[': return LSQB;
104
case ']': return RSQB;
105
case '^': return CIRCUMFLEX;
106
case '{': return LBRACE;
107
case '|': return VBAR;
108
case '}': return RBRACE;
109
case '~': return TILDE;
110
}
111
return OP;
112
}
113
114
int
115
_PyToken_TwoChars(int c1, int c2)
116
{
117
switch (c1) {
118
case '!':
119
switch (c2) {
120
case '=': return NOTEQUAL;
121
}
122
break;
123
case '%':
124
switch (c2) {
125
case '=': return PERCENTEQUAL;
126
}
127
break;
128
case '&':
129
switch (c2) {
130
case '=': return AMPEREQUAL;
131
}
132
break;
133
case '*':
134
switch (c2) {
135
case '*': return DOUBLESTAR;
136
case '=': return STAREQUAL;
137
}
138
break;
139
case '+':
140
switch (c2) {
141
case '=': return PLUSEQUAL;
142
}
143
break;
144
case '-':
145
switch (c2) {
146
case '=': return MINEQUAL;
147
case '>': return RARROW;
148
}
149
break;
150
case '/':
151
switch (c2) {
152
case '/': return DOUBLESLASH;
153
case '=': return SLASHEQUAL;
154
}
155
break;
156
case ':':
157
switch (c2) {
158
case '=': return COLONEQUAL;
159
}
160
break;
161
case '<':
162
switch (c2) {
163
case '<': return LEFTSHIFT;
164
case '=': return LESSEQUAL;
165
case '>': return NOTEQUAL;
166
}
167
break;
168
case '=':
169
switch (c2) {
170
case '=': return EQEQUAL;
171
}
172
break;
173
case '>':
174
switch (c2) {
175
case '=': return GREATEREQUAL;
176
case '>': return RIGHTSHIFT;
177
}
178
break;
179
case '@':
180
switch (c2) {
181
case '=': return ATEQUAL;
182
}
183
break;
184
case '^':
185
switch (c2) {
186
case '=': return CIRCUMFLEXEQUAL;
187
}
188
break;
189
case '|':
190
switch (c2) {
191
case '=': return VBAREQUAL;
192
}
193
break;
194
}
195
return OP;
196
}
197
198
int
199
_PyToken_ThreeChars(int c1, int c2, int c3)
200
{
201
switch (c1) {
202
case '*':
203
switch (c2) {
204
case '*':
205
switch (c3) {
206
case '=': return DOUBLESTAREQUAL;
207
}
208
break;
209
}
210
break;
211
case '.':
212
switch (c2) {
213
case '.':
214
switch (c3) {
215
case '.': return ELLIPSIS;
216
}
217
break;
218
}
219
break;
220
case '/':
221
switch (c2) {
222
case '/':
223
switch (c3) {
224
case '=': return DOUBLESLASHEQUAL;
225
}
226
break;
227
}
228
break;
229
case '<':
230
switch (c2) {
231
case '<':
232
switch (c3) {
233
case '=': return LEFTSHIFTEQUAL;
234
}
235
break;
236
}
237
break;
238
case '>':
239
switch (c2) {
240
case '>':
241
switch (c3) {
242
case '=': return RIGHTSHIFTEQUAL;
243
}
244
break;
245
}
246
break;
247
}
248
return OP;
249
}
250
251