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