Coverage Report

Created: 2022-07-08 09:39

/home/mdboom/Work/builds/cpython/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 "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
    "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
79
_PyToken_OneChar(int c1)
80
{
81
    switch (c1) {
  Branch (81:13): [True: 26, False: 3.15M]
82
    case '%': return PERCENT;
  Branch (82:5): [True: 26.3k, False: 3.12M]
83
    case '&': return AMPER;
  Branch (83:5): [True: 749, False: 3.15M]
84
    case '(': return LPAR;
  Branch (84:5): [True: 565k, False: 2.58M]
85
    case ')': return RPAR;
  Branch (85:5): [True: 565k, False: 2.59M]
86
    case '*': return STAR;
  Branch (86:5): [True: 313k, False: 2.84M]
87
    case '+': return PLUS;
  Branch (87:5): [True: 14.7k, False: 3.14M]
88
    case ',': return COMMA;
  Branch (88:5): [True: 459k, False: 2.69M]
89
    case '-': return MINUS;
  Branch (89:5): [True: 48.6k, False: 3.10M]
90
    case '.': return DOT;
  Branch (90:5): [True: 0, False: 3.15M]
91
    case '/': return SLASH;
  Branch (91:5): [True: 2.11k, False: 3.15M]
92
    case ':': return COLON;
  Branch (92:5): [True: 372k, False: 2.78M]
93
    case ';': return SEMI;
  Branch (93:5): [True: 4.46k, False: 3.15M]
94
    case '<': return LESS;
  Branch (94:5): [True: 1.59k, False: 3.15M]
95
    case '=': return EQUAL;
  Branch (95:5): [True: 101k, False: 3.05M]
96
    case '>': return GREATER;
  Branch (96:5): [True: 1.44k, False: 3.15M]
97
    case '@': return AT;
  Branch (97:5): [True: 2.69k, False: 3.15M]
98
    case '[': return LSQB;
  Branch (98:5): [True: 332k, False: 2.82M]
99
    case ']': return RSQB;
  Branch (99:5): [True: 332k, False: 2.82M]
100
    case '^': return CIRCUMFLEX;
  Branch (100:5): [True: 159, False: 3.15M]
101
    case '{': return LBRACE;
  Branch (101:5): [True: 4.78k, False: 3.15M]
102
    case '|': return VBAR;
  Branch (102:5): [True: 817, False: 3.15M]
103
    case '}': return RBRACE;
  Branch (103:5): [True: 4.72k, False: 3.15M]
104
    case '~': return TILDE;
  Branch (104:5): [True: 156, False: 3.15M]
105
    }
106
    return OP;
107
}
108
109
int
110
_PyToken_TwoChars(int c1, int c2)
111
{
112
    switch (c1) {
  Branch (112:13): [True: 2.26M, False: 905k]
113
    case '!':
  Branch (113:5): [True: 1.72k, False: 3.17M]
114
        switch (c2) {
  Branch (114:17): [True: 2, False: 1.72k]
115
        case '=': return NOTEQUAL;
  Branch (115:9): [True: 1.72k, False: 2]
116
        }
117
        break;
118
    case '%':
  Branch (118:5): [True: 26.3k, False: 3.14M]
119
        switch (c2) {
  Branch (119:17): [True: 26.3k, False: 16]
120
        case '=': return PERCENTEQUAL;
  Branch (120:9): [True: 16, False: 26.3k]
121
        }
122
        break;
123
    case '&':
  Branch (123:5): [True: 789, False: 3.17M]
124
        switch (c2) {
  Branch (124:17): [True: 749, False: 40]
125
        case '=': return AMPEREQUAL;
  Branch (125:9): [True: 40, False: 749]
126
        }
127
        break;
128
    case '*':
  Branch (128:5): [True: 317k, False: 2.85M]
129
        switch (c2) {
  Branch (129:17): [True: 313k, False: 4.37k]
130
        case '*': return DOUBLESTAR;
  Branch (130:9): [True: 4.32k, False: 313k]
131
        case '=': return STAREQUAL;
  Branch (131:9): [True: 48, False: 317k]
132
        }
133
        break;
134
    case '+':
  Branch (134:5): [True: 16.2k, False: 3.15M]
135
        switch (c2) {
  Branch (135:17): [True: 14.7k, False: 1.50k]
136
        case '=': return PLUSEQUAL;
  Branch (136:9): [True: 1.50k, False: 14.7k]
137
        }
138
        break;
139
    case '-':
  Branch (139:5): [True: 50.3k, False: 3.12M]
140
        switch (c2) {
  Branch (140:17): [True: 48.6k, False: 1.63k]
141
        case '=': return MINEQUAL;
  Branch (141:9): [True: 240, False: 50.0k]
142
        case '>': return RARROW;
  Branch (142:9): [True: 1.39k, False: 48.9k]
143
        }
144
        break;
145
    case '/':
  Branch (145:5): [True: 2.49k, False: 3.17M]
146
        switch (c2) {
  Branch (146:17): [True: 2.11k, False: 383]
147
        case '/': return DOUBLESLASH;
  Branch (147:9): [True: 364, False: 2.13k]
148
        case '=': return SLASHEQUAL;
  Branch (148:9): [True: 19, False: 2.47k]
149
        }
150
        break;
151
    case ':':
  Branch (151:5): [True: 372k, False: 2.80M]
152
        switch (c2) {
  Branch (152:17): [True: 372k, False: 367]
153
        case '=': return COLONEQUAL;
  Branch (153:9): [True: 367, False: 372k]
154
        }
155
        break;
156
    case '<':
  Branch (156:5): [True: 2.87k, False: 3.17M]
157
        switch (c2) {
  Branch (157:17): [True: 1.59k, False: 1.27k]
158
        case '<': return LEFTSHIFT;
  Branch (158:9): [True: 275, False: 2.59k]
159
        case '=': return LESSEQUAL;
  Branch (159:9): [True: 997, False: 1.87k]
160
        case '>': return NOTEQUAL;
  Branch (160:9): [True: 2, False: 2.87k]
161
        }
162
        break;
163
    case '=':
  Branch (163:5): [True: 107k, False: 3.06M]
164
        switch (c2) {
  Branch (164:17): [True: 101k, False: 5.83k]
165
        case '=': return EQEQUAL;
  Branch (165:9): [True: 5.83k, False: 101k]
166
        }
167
        break;
168
    case '>':
  Branch (168:5): [True: 2.55k, False: 3.17M]
169
        switch (c2) {
  Branch (169:17): [True: 1.44k, False: 1.10k]
170
        case '=': return GREATEREQUAL;
  Branch (170:9): [True: 960, False: 1.59k]
171
        case '>': return RIGHTSHIFT;
  Branch (171:9): [True: 149, False: 2.40k]
172
        }
173
        break;
174
    case '@':
  Branch (174:5): [True: 2.70k, False: 3.17M]
175
        switch (c2) {
  Branch (175:17): [True: 2.69k, False: 14]
176
        case '=': return ATEQUAL;
  Branch (176:9): [True: 14, False: 2.69k]
177
        }
178
        break;
179
    case '^':
  Branch (179:5): [True: 195, False: 3.17M]
180
        switch (c2) {
  Branch (180:17): [True: 159, False: 36]
181
        case '=': return CIRCUMFLEXEQUAL;
  Branch (181:9): [True: 36, False: 159]
182
        }
183
        break;
184
    case '|':
  Branch (184:5): [True: 981, False: 3.17M]
185
        switch (c2) {
  Branch (185:17): [True: 817, False: 164]
186
        case '=': return VBAREQUAL;
  Branch (186:9): [True: 164, False: 817]
187
        }
188
        break;
189
    }
190
    return OP;
191
}
192
193
int
194
_PyToken_ThreeChars(int c1, int c2, int c3)
195
{
196
    switch (c1) {
  Branch (196:13): [True: 11.3k, False: 7.13k]
197
    case '*':
  Branch (197:5): [True: 4.37k, False: 14.1k]
198
        switch (c2) {
  Branch (198:17): [True: 48, False: 4.32k]
199
        case '*':
  Branch (199:9): [True: 4.32k, False: 48]
200
            switch (c3) {
  Branch (200:21): [True: 4.31k, False: 11]
201
            case '=': return DOUBLESTAREQUAL;
  Branch (201:13): [True: 11, False: 4.31k]
202
            }
203
            break;
204
        }
205
        break;
206
    case '.':
  Branch (206:5): [True: 0, False: 18.4k]
207
        switch (c2) {
  Branch (207:17): [True: 0, False: 0]
208
        case '.':
  Branch (208:9): [True: 0, False: 0]
209
            switch (c3) {
  Branch (209:21): [True: 0, False: 0]
210
            case '.': return ELLIPSIS;
  Branch (210:13): [True: 0, False: 0]
211
            }
212
            break;
213
        }
214
        break;
215
    case '/':
  Branch (215:5): [True: 383, False: 18.0k]
216
        switch (c2) {
  Branch (216:17): [True: 19, False: 364]
217
        case '/':
  Branch (217:9): [True: 364, False: 19]
218
            switch (c3) {
  Branch (218:21): [True: 330, False: 34]
219
            case '=': return DOUBLESLASHEQUAL;
  Branch (219:13): [True: 34, False: 330]
220
            }
221
            break;
222
        }
223
        break;
224
    case '<':
  Branch (224:5): [True: 1.27k, False: 17.1k]
225
        switch (c2) {
  Branch (225:17): [True: 999, False: 275]
226
        case '<':
  Branch (226:9): [True: 275, False: 999]
227
            switch (c3) {
  Branch (227:21): [True: 250, False: 25]
228
            case '=': return LEFTSHIFTEQUAL;
  Branch (228:13): [True: 25, False: 250]
229
            }
230
            break;
231
        }
232
        break;
233
    case '>':
  Branch (233:5): [True: 1.10k, False: 17.3k]
234
        switch (c2) {
  Branch (234:17): [True: 960, False: 149]
235
        case '>':
  Branch (235:9): [True: 149, False: 960]
236
            switch (c3) {
  Branch (236:21): [True: 130, False: 19]
237
            case '=': return RIGHTSHIFTEQUAL;
  Branch (237:13): [True: 19, False: 130]
238
            }
239
            break;
240
        }
241
        break;
242
    }
243
    return OP;
244
}