xref: /third_party/python/Parser/token.c (revision 7db96d56)
1/* Auto-generated by Tools/scripts/generate_token.py */
2
3#include "Python.h"
4#include "token.h"
5
6/* Token names */
7
8const 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    "OP",
64    "AWAIT",
65    "ASYNC",
66    "TYPE_IGNORE",
67    "TYPE_COMMENT",
68    "SOFT_KEYWORD",
69    "<ERRORTOKEN>",
70    "<COMMENT>",
71    "<NL>",
72    "<ENCODING>",
73    "<N_TOKENS>",
74};
75
76/* Return the token corresponding to a single character */
77
78int
79PyToken_OneChar(int c1)
80{
81    switch (c1) {
82    case '%': return PERCENT;
83    case '&': return AMPER;
84    case '(': return LPAR;
85    case ')': return RPAR;
86    case '*': return STAR;
87    case '+': return PLUS;
88    case ',': return COMMA;
89    case '-': return MINUS;
90    case '.': return DOT;
91    case '/': return SLASH;
92    case ':': return COLON;
93    case ';': return SEMI;
94    case '<': return LESS;
95    case '=': return EQUAL;
96    case '>': return GREATER;
97    case '@': return AT;
98    case '[': return LSQB;
99    case ']': return RSQB;
100    case '^': return CIRCUMFLEX;
101    case '{': return LBRACE;
102    case '|': return VBAR;
103    case '}': return RBRACE;
104    case '~': return TILDE;
105    }
106    return OP;
107}
108
109int
110PyToken_TwoChars(int c1, int c2)
111{
112    switch (c1) {
113    case '!':
114        switch (c2) {
115        case '=': return NOTEQUAL;
116        }
117        break;
118    case '%':
119        switch (c2) {
120        case '=': return PERCENTEQUAL;
121        }
122        break;
123    case '&':
124        switch (c2) {
125        case '=': return AMPEREQUAL;
126        }
127        break;
128    case '*':
129        switch (c2) {
130        case '*': return DOUBLESTAR;
131        case '=': return STAREQUAL;
132        }
133        break;
134    case '+':
135        switch (c2) {
136        case '=': return PLUSEQUAL;
137        }
138        break;
139    case '-':
140        switch (c2) {
141        case '=': return MINEQUAL;
142        case '>': return RARROW;
143        }
144        break;
145    case '/':
146        switch (c2) {
147        case '/': return DOUBLESLASH;
148        case '=': return SLASHEQUAL;
149        }
150        break;
151    case ':':
152        switch (c2) {
153        case '=': return COLONEQUAL;
154        }
155        break;
156    case '<':
157        switch (c2) {
158        case '<': return LEFTSHIFT;
159        case '=': return LESSEQUAL;
160        case '>': return NOTEQUAL;
161        }
162        break;
163    case '=':
164        switch (c2) {
165        case '=': return EQEQUAL;
166        }
167        break;
168    case '>':
169        switch (c2) {
170        case '=': return GREATEREQUAL;
171        case '>': return RIGHTSHIFT;
172        }
173        break;
174    case '@':
175        switch (c2) {
176        case '=': return ATEQUAL;
177        }
178        break;
179    case '^':
180        switch (c2) {
181        case '=': return CIRCUMFLEXEQUAL;
182        }
183        break;
184    case '|':
185        switch (c2) {
186        case '=': return VBAREQUAL;
187        }
188        break;
189    }
190    return OP;
191}
192
193int
194PyToken_ThreeChars(int c1, int c2, int c3)
195{
196    switch (c1) {
197    case '*':
198        switch (c2) {
199        case '*':
200            switch (c3) {
201            case '=': return DOUBLESTAREQUAL;
202            }
203            break;
204        }
205        break;
206    case '.':
207        switch (c2) {
208        case '.':
209            switch (c3) {
210            case '.': return ELLIPSIS;
211            }
212            break;
213        }
214        break;
215    case '/':
216        switch (c2) {
217        case '/':
218            switch (c3) {
219            case '=': return DOUBLESLASHEQUAL;
220            }
221            break;
222        }
223        break;
224    case '<':
225        switch (c2) {
226        case '<':
227            switch (c3) {
228            case '=': return LEFTSHIFTEQUAL;
229            }
230            break;
231        }
232        break;
233    case '>':
234        switch (c2) {
235        case '>':
236            switch (c3) {
237            case '=': return RIGHTSHIFTEQUAL;
238            }
239            break;
240        }
241        break;
242    }
243    return OP;
244}
245