• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* Auto-generated by Tools/scripts/generate_token.py */
2 
3 #include "Python.h"
4 #include "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     "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 
78 int
PyToken_OneChar(int c1)79 PyToken_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 
109 int
PyToken_TwoChars(int c1,int c2)110 PyToken_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 
193 int
PyToken_ThreeChars(int c1,int c2,int c3)194 PyToken_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