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