Coverage Report

Created: 2025-07-11 06:59

/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
}