Coverage Report

Created: 2026-10-31 06:21

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/cpython/Parser/parser.c
Line
Count
Source
1
// @generated by pegen from python.gram
2
#include "pegen.h"
3
#include "pycore_ceval.h"
4
5
#if defined(Py_DEBUG) && defined(Py_BUILD_CORE)
6
#  define D(x) if (p->debug) { x; }
7
#else
8
#  define D(x)
9
#endif
10
11
#ifdef __wasi__
12
#  ifdef Py_DEBUG
13
#    define MAXSTACK 1000
14
#  else
15
#    define MAXSTACK 4000
16
#  endif
17
#else
18
197M
#  define MAXSTACK 6000
19
#endif
20
static const int n_keyword_lists = 9;
21
static KeywordToken *reserved_keywords[] = {
22
    (KeywordToken[]) {{NULL, -1}},
23
    (KeywordToken[]) {{NULL, -1}},
24
    (KeywordToken[]) {
25
        {"if", 514},
26
        {"as", 520},
27
        {"in", 523},
28
        {"or", 529},
29
        {"is", 532},
30
        {NULL, -1},
31
    },
32
    (KeywordToken[]) {
33
        {"del", 505},
34
        {"def", 512},
35
        {"for", 517},
36
        {"try", 518},
37
        {"and", 530},
38
        {"not", 531},
39
        {NULL, -1},
40
    },
41
    (KeywordToken[]) {
42
        {"from", 501},
43
        {"pass", 504},
44
        {"with", 516},
45
        {"elif", 521},
46
        {"else", 522},
47
        {"None", 526},
48
        {"True", 527},
49
        {NULL, -1},
50
    },
51
    (KeywordToken[]) {
52
        {"raise", 503},
53
        {"yield", 506},
54
        {"break", 508},
55
        {"async", 513},
56
        {"class", 515},
57
        {"while", 519},
58
        {"False", 528},
59
        {"await", 533},
60
        {NULL, -1},
61
    },
62
    (KeywordToken[]) {
63
        {"import", 500},
64
        {"return", 502},
65
        {"assert", 507},
66
        {"global", 510},
67
        {"except", 524},
68
        {"lambda", 534},
69
        {NULL, -1},
70
    },
71
    (KeywordToken[]) {
72
        {"finally", 525},
73
        {NULL, -1},
74
    },
75
    (KeywordToken[]) {
76
        {"continue", 509},
77
        {"nonlocal", 511},
78
        {NULL, -1},
79
    },
80
};
81
static char *soft_keywords[] = {
82
    "_",
83
    "case",
84
    "lazy",
85
    "match",
86
    "type",
87
    NULL,
88
};
89
#define file_type 1000
90
#define interactive_type 1001
91
#define eval_type 1002
92
#define func_type_type 1003
93
#define statements_type 1004
94
#define statement_type 1005
95
#define single_compound_stmt_type 1006
96
#define statement_newline_type 1007
97
#define simple_stmts_type 1008
98
700k
#define simple_stmt_type 1009
99
#define compound_stmt_type 1010
100
#define assignment_type 1011
101
#define annotated_rhs_type 1012
102
#define augassign_type 1013
103
#define return_stmt_type 1014
104
#define raise_stmt_type 1015
105
#define pass_stmt_type 1016
106
#define break_stmt_type 1017
107
#define continue_stmt_type 1018
108
#define global_stmt_type 1019
109
#define nonlocal_stmt_type 1020
110
#define del_stmt_type 1021
111
#define yield_stmt_type 1022
112
#define assert_stmt_type 1023
113
18.7k
#define import_stmt_type 1024
114
#define import_name_type 1025
115
#define import_from_type 1026
116
#define import_from_targets_type 1027
117
#define import_from_as_names_type 1028
118
#define import_from_as_name_type 1029
119
#define dotted_as_names_type 1030
120
#define dotted_as_name_type 1031
121
64.3k
#define dotted_name_type 1032  // Left-recursive
122
105k
#define block_type 1033
123
#define decorators_type 1034
124
#define class_def_type 1035
125
#define class_def_raw_type 1036
126
#define function_def_type 1037
127
#define function_def_raw_type 1038
128
#define params_type 1039
129
#define parameters_type 1040
130
#define slash_no_default_type 1041
131
#define slash_with_default_type 1042
132
#define star_etc_type 1043
133
#define kwds_type 1044
134
#define param_no_default_type 1045
135
#define param_no_default_star_annotation_type 1046
136
#define param_with_default_type 1047
137
#define param_maybe_default_type 1048
138
#define param_type 1049
139
#define param_star_annotation_type 1050
140
#define annotation_type 1051
141
#define star_annotation_type 1052
142
#define default_type 1053
143
#define if_stmt_type 1054
144
#define elif_stmt_type 1055
145
#define else_block_type 1056
146
#define while_stmt_type 1057
147
#define for_stmt_type 1058
148
#define with_stmt_type 1059
149
#define with_item_type 1060
150
#define try_stmt_type 1061
151
#define except_block_type 1062
152
#define except_star_block_type 1063
153
#define finally_block_type 1064
154
#define match_stmt_type 1065
155
#define subject_expr_type 1066
156
#define case_block_type 1067
157
#define guard_type 1068
158
#define patterns_type 1069
159
#define pattern_type 1070
160
#define as_pattern_type 1071
161
#define or_pattern_type 1072
162
335k
#define closed_pattern_type 1073
163
#define literal_pattern_type 1074
164
#define literal_expr_type 1075
165
#define complex_number_type 1076
166
#define signed_number_type 1077
167
#define signed_real_number_type 1078
168
#define real_number_type 1079
169
#define imaginary_number_type 1080
170
#define capture_pattern_type 1081
171
#define pattern_capture_target_type 1082
172
#define wildcard_pattern_type 1083
173
#define value_pattern_type 1084
174
176k
#define attr_type 1085  // Left-recursive
175
#define name_or_attr_type 1086  // Left-recursive
176
#define group_pattern_type 1087
177
#define sequence_pattern_type 1088
178
#define open_sequence_pattern_type 1089
179
#define maybe_sequence_pattern_type 1090
180
#define maybe_star_pattern_type 1091
181
51.2k
#define star_pattern_type 1092
182
#define mapping_pattern_type 1093
183
#define items_pattern_type 1094
184
#define key_value_pattern_type 1095
185
#define double_star_pattern_type 1096
186
#define class_pattern_type 1097
187
#define positional_patterns_type 1098
188
#define keyword_patterns_type 1099
189
#define keyword_pattern_type 1100
190
#define type_alias_type 1101
191
#define type_params_type 1102
192
#define type_param_seq_type 1103
193
24.8k
#define type_param_type 1104
194
#define type_param_bound_type 1105
195
#define type_param_default_type 1106
196
#define type_param_starred_default_type 1107
197
#define expressions_type 1108
198
2.72M
#define expression_type 1109
199
#define if_expression_type 1110
200
#define yield_expr_type 1111
201
#define star_expressions_type 1112
202
1.75M
#define star_expression_type 1113
203
#define star_named_expressions_type 1114
204
#define star_named_expression_type 1115
205
#define assignment_expression_type 1116
206
#define named_expression_type 1117
207
3.21M
#define disjunction_type 1118
208
1.46M
#define conjunction_type 1119
209
1.51M
#define inversion_type 1120
210
#define comparison_type 1121
211
#define compare_op_bitwise_or_pair_type 1122
212
3.12M
#define bitwise_or_type 1123  // Left-recursive
213
2.61M
#define bitwise_xor_type 1124  // Left-recursive
214
3.02M
#define bitwise_and_type 1125  // Left-recursive
215
3.04M
#define shift_expr_type 1126  // Left-recursive
216
3.50M
#define sum_type 1127  // Left-recursive
217
4.51M
#define term_type 1128  // Left-recursive
218
2.09M
#define factor_type 1129
219
#define power_type 1130
220
1.88M
#define await_primary_type 1131
221
5.22M
#define primary_type 1132  // Left-recursive
222
#define slices_type 1133
223
#define slice_type 1134
224
#define atom_type 1135
225
#define group_type 1136
226
#define lambdef_type 1137
227
#define lambda_params_type 1138
228
#define lambda_parameters_type 1139
229
#define lambda_slash_no_default_type 1140
230
#define lambda_slash_with_default_type 1141
231
#define lambda_star_etc_type 1142
232
#define lambda_kwds_type 1143
233
#define lambda_param_no_default_type 1144
234
#define lambda_param_with_default_type 1145
235
#define lambda_param_maybe_default_type 1146
236
#define lambda_param_type 1147
237
#define fstring_middle_type 1148
238
#define fstring_replacement_field_type 1149
239
#define fstring_conversion_type 1150
240
#define fstring_full_format_spec_type 1151
241
#define fstring_format_spec_type 1152
242
#define fstring_type 1153
243
#define tstring_format_spec_replacement_field_type 1154
244
#define tstring_format_spec_type 1155
245
#define tstring_full_format_spec_type 1156
246
#define tstring_replacement_field_type 1157
247
#define tstring_middle_type 1158
248
164k
#define tstring_type 1159
249
#define string_type 1160
250
196k
#define strings_type 1161
251
#define display_items_type 1162
252
#define display_item_type 1163
253
#define list_type 1164
254
#define tuple_type 1165
255
#define set_type 1166
256
#define dict_type 1167
257
#define double_starred_kvpairs_type 1168
258
#define double_starred_kvpair_type 1169
259
#define kvpair_type 1170
260
#define for_if_clauses_type 1171
261
#define for_if_clause_type 1172
262
#define listcomp_type 1173
263
#define setcomp_type 1174
264
#define genexp_type 1175
265
#define dictcomp_type 1176
266
60.6k
#define arguments_type 1177
267
#define args_type 1178
268
#define kwargs_type 1179
269
#define starred_expression_type 1180
270
#define kwarg_or_starred_type 1181
271
#define kwarg_or_double_starred_type 1182
272
#define star_targets_type 1183
273
1.04M
#define star_target_type 1184
274
596k
#define target_type 1185
275
#define single_target_type 1186
276
#define attribute_or_subscript_target_type 1187
277
#define target_value_type 1188
278
#define del_targets_type 1189
279
4.39k
#define del_target_type 1190
280
#define type_expressions_type 1191
281
#define func_type_comment_type 1192
282
#define _loop0_1_type 1265
283
#define _loop1_2_type 1266
284
#define _loop0_3_type 1267
285
#define _gather_4_type 1268
286
#define _tmp_5_type 1269
287
#define _tmp_6_type 1270
288
#define _tmp_7_type 1271
289
#define _tmp_8_type 1272
290
#define _tmp_9_type 1273
291
#define _tmp_10_type 1274
292
#define _tmp_11_type 1275
293
#define _loop1_12_type 1276
294
#define _loop0_13_type 1277
295
#define _gather_14_type 1278
296
#define _tmp_15_type 1279
297
#define _tmp_16_type 1280
298
#define _loop0_17_type 1281
299
#define _loop1_18_type 1282
300
#define _loop0_19_type 1283
301
#define _gather_20_type 1284
302
#define _tmp_21_type 1285
303
#define _loop0_22_type 1286
304
#define _gather_23_type 1287
305
#define _loop1_24_type 1288
306
#define _tmp_25_type 1289
307
#define _tmp_26_type 1290
308
#define _loop0_27_type 1291
309
#define _loop0_28_type 1292
310
#define _loop1_29_type 1293
311
#define _loop1_30_type 1294
312
#define _loop0_31_type 1295
313
#define _loop1_32_type 1296
314
#define _loop0_33_type 1297
315
#define _gather_34_type 1298
316
#define _tmp_35_type 1299
317
#define _loop1_36_type 1300
318
#define _loop1_37_type 1301
319
#define _loop1_38_type 1302
320
#define _loop0_39_type 1303
321
#define _gather_40_type 1304
322
#define _tmp_41_type 1305
323
#define _tmp_42_type 1306
324
#define _tmp_43_type 1307
325
#define _loop0_44_type 1308
326
#define _gather_45_type 1309
327
#define _loop0_46_type 1310
328
#define _gather_47_type 1311
329
#define _tmp_48_type 1312
330
#define _loop0_49_type 1313
331
#define _gather_50_type 1314
332
#define _loop0_51_type 1315
333
#define _gather_52_type 1316
334
#define _loop0_53_type 1317
335
#define _gather_54_type 1318
336
#define _loop1_55_type 1319
337
#define _loop1_56_type 1320
338
#define _loop0_57_type 1321
339
#define _gather_58_type 1322
340
#define _loop1_59_type 1323
341
#define _loop1_60_type 1324
342
#define _loop1_61_type 1325
343
#define _tmp_62_type 1326
344
#define _loop0_63_type 1327
345
#define _gather_64_type 1328
346
#define _tmp_65_type 1329
347
#define _tmp_66_type 1330
348
#define _tmp_67_type 1331
349
#define _tmp_68_type 1332
350
#define _tmp_69_type 1333
351
#define _loop0_70_type 1334
352
#define _loop0_71_type 1335
353
#define _loop1_72_type 1336
354
#define _loop1_73_type 1337
355
#define _loop0_74_type 1338
356
#define _loop1_75_type 1339
357
#define _loop0_76_type 1340
358
#define _loop0_77_type 1341
359
#define _loop0_78_type 1342
360
#define _loop0_79_type 1343
361
#define _loop1_80_type 1344
362
#define _loop1_81_type 1345
363
#define _loop0_82_type 1346
364
#define _gather_83_type 1347
365
#define _tmp_84_type 1348
366
#define _loop0_85_type 1349
367
#define _gather_86_type 1350
368
#define _loop1_87_type 1351
369
#define _loop0_88_type 1352
370
#define _tmp_89_type 1353
371
#define _loop0_90_type 1354
372
#define _gather_91_type 1355
373
#define _tmp_92_type 1356
374
#define _loop0_93_type 1357
375
#define _gather_94_type 1358
376
#define _tmp_95_type 1359
377
#define _loop0_96_type 1360
378
#define _gather_97_type 1361
379
#define _loop0_98_type 1362
380
#define _tmp_99_type 1363
381
#define _tmp_100_type 1364
382
#define _loop0_101_type 1365
383
#define _gather_102_type 1366
384
#define _loop0_103_type 1367
385
#define _gather_104_type 1368
386
#define _tmp_105_type 1369
387
#define _tmp_178_type 1442
388
#define _tmp_179_type 1443
389
#define _tmp_180_type 1444
390
#define _tmp_181_type 1445
391
#define _tmp_182_type 1446
392
#define _tmp_183_type 1447
393
#define _tmp_184_type 1448
394
#define _tmp_185_type 1449
395
#define _tmp_186_type 1450
396
#define _tmp_187_type 1451
397
#define _tmp_188_type 1452
398
#define _tmp_200_type 1464
399
400
// Rules shared between the C files of this parser
401
423k
#define simple_stmt_rule _PyPegen_simple_stmt_rule
402
Py_LOCAL_SYMBOL stmt_ty simple_stmt_rule(Parser *p);
403
48.6k
#define annotated_rhs_rule _PyPegen_annotated_rhs_rule
404
Py_LOCAL_SYMBOL expr_ty annotated_rhs_rule(Parser *p);
405
73.1k
#define augassign_rule _PyPegen_augassign_rule
406
Py_LOCAL_SYMBOL AugOperator* augassign_rule(Parser *p);
407
1.01k
#define pass_stmt_rule _PyPegen_pass_stmt_rule
408
Py_LOCAL_SYMBOL stmt_ty pass_stmt_rule(Parser *p);
409
1.09k
#define break_stmt_rule _PyPegen_break_stmt_rule
410
Py_LOCAL_SYMBOL stmt_ty break_stmt_rule(Parser *p);
411
895
#define continue_stmt_rule _PyPegen_continue_stmt_rule
412
Py_LOCAL_SYMBOL stmt_ty continue_stmt_rule(Parser *p);
413
6.02k
#define import_from_targets_rule _PyPegen_import_from_targets_rule
414
Py_LOCAL_SYMBOL asdl_alias_seq* import_from_targets_rule(Parser *p);
415
6.15k
#define import_from_as_names_rule _PyPegen_import_from_as_names_rule
416
Py_LOCAL_SYMBOL asdl_alias_seq* import_from_as_names_rule(Parser *p);
417
43.4k
#define dotted_name_rule _PyPegen_dotted_name_rule
418
Py_LOCAL_SYMBOL expr_ty dotted_name_rule(Parser *p);
419
51.8k
#define block_rule _PyPegen_block_rule
420
Py_LOCAL_SYMBOL asdl_stmt_seq* block_rule(Parser *p);
421
7.84k
#define params_rule _PyPegen_params_rule
422
Py_LOCAL_SYMBOL arguments_ty params_rule(Parser *p);
423
12.4k
#define slash_no_default_rule _PyPegen_slash_no_default_rule
424
Py_LOCAL_SYMBOL asdl_arg_seq* slash_no_default_rule(Parser *p);
425
11.6k
#define slash_with_default_rule _PyPegen_slash_with_default_rule
426
Py_LOCAL_SYMBOL SlashWithDefault* slash_with_default_rule(Parser *p);
427
180k
#define param_no_default_rule _PyPegen_param_no_default_rule
428
Py_LOCAL_SYMBOL arg_ty param_no_default_rule(Parser *p);
429
78.7k
#define param_with_default_rule _PyPegen_param_with_default_rule
430
Py_LOCAL_SYMBOL NameDefaultPair* param_with_default_rule(Parser *p);
431
10.2k
#define param_maybe_default_rule _PyPegen_param_maybe_default_rule
432
Py_LOCAL_SYMBOL NameDefaultPair* param_maybe_default_rule(Parser *p);
433
563k
#define param_rule _PyPegen_param_rule
434
Py_LOCAL_SYMBOL arg_ty param_rule(Parser *p);
435
8.04k
#define except_block_rule _PyPegen_except_block_rule
436
Py_LOCAL_SYMBOL excepthandler_ty except_block_rule(Parser *p);
437
4.63k
#define except_star_block_rule _PyPegen_except_star_block_rule
438
Py_LOCAL_SYMBOL excepthandler_ty except_star_block_rule(Parser *p);
439
3.73k
#define subject_expr_rule _PyPegen_subject_expr_rule
440
Py_LOCAL_SYMBOL expr_ty subject_expr_rule(Parser *p);
441
3.32k
#define guard_rule _PyPegen_guard_rule
442
Py_LOCAL_SYMBOL expr_ty guard_rule(Parser *p);
443
3.80k
#define patterns_rule _PyPegen_patterns_rule
444
Py_LOCAL_SYMBOL pattern_ty patterns_rule(Parser *p);
445
167k
#define or_pattern_rule _PyPegen_or_pattern_rule
446
Py_LOCAL_SYMBOL pattern_ty or_pattern_rule(Parser *p);
447
107k
#define name_or_attr_rule _PyPegen_name_or_attr_rule
448
Py_LOCAL_SYMBOL expr_ty name_or_attr_rule(Parser *p);
449
8.40k
#define items_pattern_rule _PyPegen_items_pattern_rule
450
Py_LOCAL_SYMBOL asdl_seq* items_pattern_rule(Parser *p);
451
6.48k
#define double_star_pattern_rule _PyPegen_double_star_pattern_rule
452
Py_LOCAL_SYMBOL expr_ty double_star_pattern_rule(Parser *p);
453
12.9k
#define positional_patterns_rule _PyPegen_positional_patterns_rule
454
Py_LOCAL_SYMBOL asdl_pattern_seq* positional_patterns_rule(Parser *p);
455
8.47k
#define keyword_patterns_rule _PyPegen_keyword_patterns_rule
456
Py_LOCAL_SYMBOL asdl_seq* keyword_patterns_rule(Parser *p);
457
11.6k
#define type_params_rule _PyPegen_type_params_rule
458
Py_LOCAL_SYMBOL asdl_type_param_seq* type_params_rule(Parser *p);
459
6.90k
#define expressions_rule _PyPegen_expressions_rule
460
Py_LOCAL_SYMBOL expr_ty expressions_rule(Parser *p);
461
1.49M
#define expression_rule _PyPegen_expression_rule
462
Py_LOCAL_SYMBOL expr_ty expression_rule(Parser *p);
463
775k
#define if_expression_rule _PyPegen_if_expression_rule
464
Py_LOCAL_SYMBOL expr_ty if_expression_rule(Parser *p);
465
74.7k
#define yield_expr_rule _PyPegen_yield_expr_rule
466
Py_LOCAL_SYMBOL expr_ty yield_expr_rule(Parser *p);
467
312k
#define star_expressions_rule _PyPegen_star_expressions_rule
468
Py_LOCAL_SYMBOL expr_ty star_expressions_rule(Parser *p);
469
319
#define star_named_expressions_rule _PyPegen_star_named_expressions_rule
470
Py_LOCAL_SYMBOL asdl_expr_seq* star_named_expressions_rule(Parser *p);
471
235k
#define star_named_expression_rule _PyPegen_star_named_expression_rule
472
Py_LOCAL_SYMBOL expr_ty star_named_expression_rule(Parser *p);
473
625k
#define assignment_expression_rule _PyPegen_assignment_expression_rule
474
Py_LOCAL_SYMBOL expr_ty assignment_expression_rule(Parser *p);
475
444k
#define named_expression_rule _PyPegen_named_expression_rule
476
Py_LOCAL_SYMBOL expr_ty named_expression_rule(Parser *p);
477
1.57M
#define disjunction_rule _PyPegen_disjunction_rule
478
Py_LOCAL_SYMBOL expr_ty disjunction_rule(Parser *p);
479
864k
#define inversion_rule _PyPegen_inversion_rule
480
Py_LOCAL_SYMBOL expr_ty inversion_rule(Parser *p);
481
1.84M
#define bitwise_or_rule _PyPegen_bitwise_or_rule
482
Py_LOCAL_SYMBOL expr_ty bitwise_or_rule(Parser *p);
483
1.89M
#define bitwise_and_rule _PyPegen_bitwise_and_rule
484
Py_LOCAL_SYMBOL expr_ty bitwise_and_rule(Parser *p);
485
2.36M
#define sum_rule _PyPegen_sum_rule
486
Py_LOCAL_SYMBOL expr_ty sum_rule(Parser *p);
487
1.19M
#define factor_rule _PyPegen_factor_rule
488
Py_LOCAL_SYMBOL expr_ty factor_rule(Parser *p);
489
413k
#define lambdef_rule _PyPegen_lambdef_rule
490
Py_LOCAL_SYMBOL expr_ty lambdef_rule(Parser *p);
491
113k
#define lambda_params_rule _PyPegen_lambda_params_rule
492
Py_LOCAL_SYMBOL arguments_ty lambda_params_rule(Parser *p);
493
223k
#define lambda_slash_no_default_rule _PyPegen_lambda_slash_no_default_rule
494
Py_LOCAL_SYMBOL asdl_arg_seq* lambda_slash_no_default_rule(Parser *p);
495
223k
#define lambda_slash_with_default_rule _PyPegen_lambda_slash_with_default_rule
496
Py_LOCAL_SYMBOL SlashWithDefault* lambda_slash_with_default_rule(Parser *p);
497
5.84M
#define lambda_param_no_default_rule _PyPegen_lambda_param_no_default_rule
498
Py_LOCAL_SYMBOL arg_ty lambda_param_no_default_rule(Parser *p);
499
1.68M
#define lambda_param_with_default_rule _PyPegen_lambda_param_with_default_rule
500
Py_LOCAL_SYMBOL NameDefaultPair* lambda_param_with_default_rule(Parser *p);
501
6.66k
#define lambda_param_maybe_default_rule _PyPegen_lambda_param_maybe_default_rule
502
Py_LOCAL_SYMBOL NameDefaultPair* lambda_param_maybe_default_rule(Parser *p);
503
17.9M
#define lambda_param_rule _PyPegen_lambda_param_rule
504
Py_LOCAL_SYMBOL arg_ty lambda_param_rule(Parser *p);
505
11.6k
#define fstring_format_spec_rule _PyPegen_fstring_format_spec_rule
506
Py_LOCAL_SYMBOL expr_ty fstring_format_spec_rule(Parser *p);
507
140k
#define fstring_rule _PyPegen_fstring_rule
508
Py_LOCAL_SYMBOL expr_ty fstring_rule(Parser *p);
509
55.7k
#define tstring_rule _PyPegen_tstring_rule
510
Py_LOCAL_SYMBOL expr_ty tstring_rule(Parser *p);
511
126k
#define string_rule _PyPegen_string_rule
512
Py_LOCAL_SYMBOL expr_ty string_rule(Parser *p);
513
27.3k
#define list_rule _PyPegen_list_rule
514
Py_LOCAL_SYMBOL expr_ty list_rule(Parser *p);
515
57.6k
#define tuple_rule _PyPegen_tuple_rule
516
Py_LOCAL_SYMBOL expr_ty tuple_rule(Parser *p);
517
38.2k
#define double_starred_kvpair_rule _PyPegen_double_starred_kvpair_rule
518
Py_LOCAL_SYMBOL KeyValuePair* double_starred_kvpair_rule(Parser *p);
519
81.7k
#define for_if_clauses_rule _PyPegen_for_if_clauses_rule
520
Py_LOCAL_SYMBOL asdl_comprehension_seq* for_if_clauses_rule(Parser *p);
521
450k
#define genexp_rule _PyPegen_genexp_rule
522
Py_LOCAL_SYMBOL expr_ty genexp_rule(Parser *p);
523
31.0k
#define arguments_rule _PyPegen_arguments_rule
524
Py_LOCAL_SYMBOL expr_ty arguments_rule(Parser *p);
525
30.7k
#define args_rule _PyPegen_args_rule
526
Py_LOCAL_SYMBOL expr_ty args_rule(Parser *p);
527
36.5k
#define kwargs_rule _PyPegen_kwargs_rule
528
Py_LOCAL_SYMBOL asdl_seq* kwargs_rule(Parser *p);
529
173k
#define starred_expression_rule _PyPegen_starred_expression_rule
530
Py_LOCAL_SYMBOL expr_ty starred_expression_rule(Parser *p);
531
294k
#define star_targets_rule _PyPegen_star_targets_rule
532
Py_LOCAL_SYMBOL expr_ty star_targets_rule(Parser *p);
533
742k
#define star_target_rule _PyPegen_star_target_rule
534
Py_LOCAL_SYMBOL expr_ty star_target_rule(Parser *p);
535
7.39k
#define func_type_comment_rule _PyPegen_func_type_comment_rule
536
Py_LOCAL_SYMBOL Token* func_type_comment_rule(Parser *p);
537
8.66k
#define invalid_arguments_rule _PyPegen_invalid_arguments_rule
538
Py_LOCAL_SYMBOL void *invalid_arguments_rule(Parser *p);
539
82.5k
#define invalid_kwarg_rule _PyPegen_invalid_kwarg_rule
540
Py_LOCAL_SYMBOL void *invalid_kwarg_rule(Parser *p);
541
339k
#define invalid_legacy_expression_rule _PyPegen_invalid_legacy_expression_rule
542
Py_LOCAL_SYMBOL void *invalid_legacy_expression_rule(Parser *p);
543
1.25k
#define invalid_type_param_rule _PyPegen_invalid_type_param_rule
544
Py_LOCAL_SYMBOL void *invalid_type_param_rule(Parser *p);
545
343k
#define invalid_expression_rule _PyPegen_invalid_expression_rule
546
Py_LOCAL_SYMBOL void *invalid_expression_rule(Parser *p);
547
376k
#define invalid_if_expression_rule _PyPegen_invalid_if_expression_rule
548
Py_LOCAL_SYMBOL void *invalid_if_expression_rule(Parser *p);
549
294k
#define invalid_named_expression_rule _PyPegen_invalid_named_expression_rule
550
Py_LOCAL_SYMBOL void *invalid_named_expression_rule(Parser *p);
551
99.6k
#define invalid_assignment_rule _PyPegen_invalid_assignment_rule
552
Py_LOCAL_SYMBOL void *invalid_assignment_rule(Parser *p);
553
513
#define invalid_raise_stmt_rule _PyPegen_invalid_raise_stmt_rule
554
Py_LOCAL_SYMBOL void *invalid_raise_stmt_rule(Parser *p);
555
198
#define invalid_del_stmt_rule _PyPegen_invalid_del_stmt_rule
556
Py_LOCAL_SYMBOL void *invalid_del_stmt_rule(Parser *p);
557
812
#define invalid_assert_stmt_rule _PyPegen_invalid_assert_stmt_rule
558
Py_LOCAL_SYMBOL void *invalid_assert_stmt_rule(Parser *p);
559
2.15k
#define invalid_block_rule _PyPegen_invalid_block_rule
560
Py_LOCAL_SYMBOL void *invalid_block_rule(Parser *p);
561
317k
#define invalid_comprehension_rule _PyPegen_invalid_comprehension_rule
562
Py_LOCAL_SYMBOL void *invalid_comprehension_rule(Parser *p);
563
4.85k
#define invalid_parameters_rule _PyPegen_invalid_parameters_rule
564
Py_LOCAL_SYMBOL void *invalid_parameters_rule(Parser *p);
565
680k
#define invalid_default_rule _PyPegen_invalid_default_rule
566
Py_LOCAL_SYMBOL void *invalid_default_rule(Parser *p);
567
4.81k
#define invalid_star_etc_rule _PyPegen_invalid_star_etc_rule
568
Py_LOCAL_SYMBOL void *invalid_star_etc_rule(Parser *p);
569
4.80k
#define invalid_kwds_rule _PyPegen_invalid_kwds_rule
570
Py_LOCAL_SYMBOL void *invalid_kwds_rule(Parser *p);
571
166k
#define invalid_lambda_parameters_rule _PyPegen_invalid_lambda_parameters_rule
572
Py_LOCAL_SYMBOL void *invalid_lambda_parameters_rule(Parser *p);
573
165k
#define invalid_lambda_star_etc_rule _PyPegen_invalid_lambda_star_etc_rule
574
Py_LOCAL_SYMBOL void *invalid_lambda_star_etc_rule(Parser *p);
575
165k
#define invalid_lambda_kwds_rule _PyPegen_invalid_lambda_kwds_rule
576
Py_LOCAL_SYMBOL void *invalid_lambda_kwds_rule(Parser *p);
577
2.14k
#define invalid_double_type_comments_rule _PyPegen_invalid_double_type_comments_rule
578
Py_LOCAL_SYMBOL void *invalid_double_type_comments_rule(Parser *p);
579
6.75k
#define invalid_with_item_rule _PyPegen_invalid_with_item_rule
580
Py_LOCAL_SYMBOL void *invalid_with_item_rule(Parser *p);
581
55.3k
#define invalid_for_if_clause_rule _PyPegen_invalid_for_if_clause_rule
582
Py_LOCAL_SYMBOL void *invalid_for_if_clause_rule(Parser *p);
583
54.8k
#define invalid_for_target_rule _PyPegen_invalid_for_target_rule
584
Py_LOCAL_SYMBOL void *invalid_for_target_rule(Parser *p);
585
5.05k
#define invalid_group_rule _PyPegen_invalid_group_rule
586
Py_LOCAL_SYMBOL void *invalid_group_rule(Parser *p);
587
3.50k
#define invalid_import_rule _PyPegen_invalid_import_rule
588
Py_LOCAL_SYMBOL void *invalid_import_rule(Parser *p);
589
2.54k
#define invalid_dotted_as_name_rule _PyPegen_invalid_dotted_as_name_rule
590
Py_LOCAL_SYMBOL void *invalid_dotted_as_name_rule(Parser *p);
591
3.79k
#define invalid_import_from_as_name_rule _PyPegen_invalid_import_from_as_name_rule
592
Py_LOCAL_SYMBOL void *invalid_import_from_as_name_rule(Parser *p);
593
2.63k
#define invalid_import_from_rule _PyPegen_invalid_import_from_rule
594
Py_LOCAL_SYMBOL void *invalid_import_from_rule(Parser *p);
595
148
#define invalid_import_from_targets_rule _PyPegen_invalid_import_from_targets_rule
596
Py_LOCAL_SYMBOL void *invalid_import_from_targets_rule(Parser *p);
597
301
#define invalid_with_stmt_rule _PyPegen_invalid_with_stmt_rule
598
Py_LOCAL_SYMBOL void *invalid_with_stmt_rule(Parser *p);
599
2.30k
#define invalid_with_stmt_indent_rule _PyPegen_invalid_with_stmt_indent_rule
600
Py_LOCAL_SYMBOL void *invalid_with_stmt_indent_rule(Parser *p);
601
1.90k
#define invalid_try_stmt_rule _PyPegen_invalid_try_stmt_rule
602
Py_LOCAL_SYMBOL void *invalid_try_stmt_rule(Parser *p);
603
3.17k
#define invalid_except_stmt_rule _PyPegen_invalid_except_stmt_rule
604
Py_LOCAL_SYMBOL void *invalid_except_stmt_rule(Parser *p);
605
2.30k
#define invalid_except_star_stmt_rule _PyPegen_invalid_except_star_stmt_rule
606
Py_LOCAL_SYMBOL void *invalid_except_star_stmt_rule(Parser *p);
607
2.96k
#define invalid_finally_stmt_rule _PyPegen_invalid_finally_stmt_rule
608
Py_LOCAL_SYMBOL void *invalid_finally_stmt_rule(Parser *p);
609
6.44k
#define invalid_except_stmt_indent_rule _PyPegen_invalid_except_stmt_indent_rule
610
Py_LOCAL_SYMBOL void *invalid_except_stmt_indent_rule(Parser *p);
611
4.76k
#define invalid_except_star_stmt_indent_rule _PyPegen_invalid_except_star_stmt_indent_rule
612
Py_LOCAL_SYMBOL void *invalid_except_star_stmt_indent_rule(Parser *p);
613
80.3k
#define invalid_match_stmt_rule _PyPegen_invalid_match_stmt_rule
614
Py_LOCAL_SYMBOL void *invalid_match_stmt_rule(Parser *p);
615
1.75k
#define invalid_case_block_rule _PyPegen_invalid_case_block_rule
616
Py_LOCAL_SYMBOL void *invalid_case_block_rule(Parser *p);
617
46.8k
#define invalid_as_pattern_rule _PyPegen_invalid_as_pattern_rule
618
Py_LOCAL_SYMBOL void *invalid_as_pattern_rule(Parser *p);
619
9.90k
#define invalid_class_pattern_rule _PyPegen_invalid_class_pattern_rule
620
Py_LOCAL_SYMBOL void *invalid_class_pattern_rule(Parser *p);
621
11.6k
#define invalid_mapping_pattern_rule _PyPegen_invalid_mapping_pattern_rule
622
Py_LOCAL_SYMBOL void *invalid_mapping_pattern_rule(Parser *p);
623
1.02k
#define invalid_if_stmt_rule _PyPegen_invalid_if_stmt_rule
624
Py_LOCAL_SYMBOL void *invalid_if_stmt_rule(Parser *p);
625
1.32k
#define invalid_elif_stmt_rule _PyPegen_invalid_elif_stmt_rule
626
Py_LOCAL_SYMBOL void *invalid_elif_stmt_rule(Parser *p);
627
2.88k
#define invalid_else_stmt_rule _PyPegen_invalid_else_stmt_rule
628
Py_LOCAL_SYMBOL void *invalid_else_stmt_rule(Parser *p);
629
348
#define invalid_while_stmt_rule _PyPegen_invalid_while_stmt_rule
630
Py_LOCAL_SYMBOL void *invalid_while_stmt_rule(Parser *p);
631
437
#define invalid_for_stmt_rule _PyPegen_invalid_for_stmt_rule
632
Py_LOCAL_SYMBOL void *invalid_for_stmt_rule(Parser *p);
633
3.29k
#define invalid_def_raw_rule _PyPegen_invalid_def_raw_rule
634
Py_LOCAL_SYMBOL void *invalid_def_raw_rule(Parser *p);
635
1.12k
#define invalid_class_def_raw_rule _PyPegen_invalid_class_def_raw_rule
636
Py_LOCAL_SYMBOL void *invalid_class_def_raw_rule(Parser *p);
637
13.5k
#define invalid_double_starred_kvpairs_rule _PyPegen_invalid_double_starred_kvpairs_rule
638
Py_LOCAL_SYMBOL void *invalid_double_starred_kvpairs_rule(Parser *p);
639
127k
#define invalid_starred_expression_unpacking_rule _PyPegen_invalid_starred_expression_unpacking_rule
640
Py_LOCAL_SYMBOL void *invalid_starred_expression_unpacking_rule(Parser *p);
641
66.7k
#define invalid_starred_expression_unpacking_sequence_rule _PyPegen_invalid_starred_expression_unpacking_sequence_rule
642
Py_LOCAL_SYMBOL void *invalid_starred_expression_unpacking_sequence_rule(Parser *p);
643
115k
#define invalid_starred_expression_rule _PyPegen_invalid_starred_expression_rule
644
Py_LOCAL_SYMBOL void *invalid_starred_expression_rule(Parser *p);
645
14.5k
#define invalid_fstring_replacement_field_rule _PyPegen_invalid_fstring_replacement_field_rule
646
Py_LOCAL_SYMBOL void *invalid_fstring_replacement_field_rule(Parser *p);
647
4.71k
#define invalid_tstring_replacement_field_rule _PyPegen_invalid_tstring_replacement_field_rule
648
Py_LOCAL_SYMBOL void *invalid_tstring_replacement_field_rule(Parser *p);
649
33.3k
#define invalid_string_tstring_concat_rule _PyPegen_invalid_string_tstring_concat_rule
650
Py_LOCAL_SYMBOL void *invalid_string_tstring_concat_rule(Parser *p);
651
409k
#define invalid_arithmetic_rule _PyPegen_invalid_arithmetic_rule
652
Py_LOCAL_SYMBOL void *invalid_arithmetic_rule(Parser *p);
653
174k
#define invalid_factor_rule _PyPegen_invalid_factor_rule
654
Py_LOCAL_SYMBOL void *invalid_factor_rule(Parser *p);
655
8.28k
#define invalid_type_params_rule _PyPegen_invalid_type_params_rule
656
Py_LOCAL_SYMBOL void *invalid_type_params_rule(Parser *p);
657
404k
#define invalid_bitwise_and_rule _PyPegen_invalid_bitwise_and_rule
658
Py_LOCAL_SYMBOL void *invalid_bitwise_and_rule(Parser *p);
659
400k
#define invalid_bitwise_or_rule _PyPegen_invalid_bitwise_or_rule
660
Py_LOCAL_SYMBOL void *invalid_bitwise_or_rule(Parser *p);
661
53.7k
#define invalid_noteq_rule _PyPegen_invalid_noteq_rule
662
Py_LOCAL_SYMBOL void *invalid_noteq_rule(Parser *p);
663
664
static mod_ty file_rule(Parser *p);
665
static mod_ty interactive_rule(Parser *p);
666
static mod_ty eval_rule(Parser *p);
667
static mod_ty func_type_rule(Parser *p);
668
static asdl_stmt_seq* statements_rule(Parser *p);
669
static asdl_stmt_seq* statement_rule(Parser *p);
670
static asdl_stmt_seq* single_compound_stmt_rule(Parser *p);
671
static asdl_stmt_seq* statement_newline_rule(Parser *p);
672
static asdl_stmt_seq* simple_stmts_rule(Parser *p);
673
static stmt_ty compound_stmt_rule(Parser *p);
674
static stmt_ty assignment_rule(Parser *p);
675
static stmt_ty return_stmt_rule(Parser *p);
676
static stmt_ty raise_stmt_rule(Parser *p);
677
static stmt_ty global_stmt_rule(Parser *p);
678
static stmt_ty nonlocal_stmt_rule(Parser *p);
679
static stmt_ty del_stmt_rule(Parser *p);
680
static stmt_ty yield_stmt_rule(Parser *p);
681
static stmt_ty assert_stmt_rule(Parser *p);
682
static stmt_ty import_stmt_rule(Parser *p);
683
static stmt_ty import_name_rule(Parser *p);
684
static stmt_ty import_from_rule(Parser *p);
685
static alias_ty import_from_as_name_rule(Parser *p);
686
static asdl_alias_seq* dotted_as_names_rule(Parser *p);
687
static alias_ty dotted_as_name_rule(Parser *p);
688
static asdl_expr_seq* decorators_rule(Parser *p);
689
static stmt_ty class_def_rule(Parser *p);
690
static stmt_ty class_def_raw_rule(Parser *p);
691
static stmt_ty function_def_rule(Parser *p);
692
static stmt_ty function_def_raw_rule(Parser *p);
693
static arguments_ty parameters_rule(Parser *p);
694
static StarEtc* star_etc_rule(Parser *p);
695
static arg_ty kwds_rule(Parser *p);
696
static arg_ty param_no_default_star_annotation_rule(Parser *p);
697
static arg_ty param_star_annotation_rule(Parser *p);
698
static expr_ty annotation_rule(Parser *p);
699
static expr_ty star_annotation_rule(Parser *p);
700
static expr_ty default_rule(Parser *p);
701
static stmt_ty if_stmt_rule(Parser *p);
702
static stmt_ty elif_stmt_rule(Parser *p);
703
static asdl_stmt_seq* else_block_rule(Parser *p);
704
static stmt_ty while_stmt_rule(Parser *p);
705
static stmt_ty for_stmt_rule(Parser *p);
706
static stmt_ty with_stmt_rule(Parser *p);
707
static withitem_ty with_item_rule(Parser *p);
708
static stmt_ty try_stmt_rule(Parser *p);
709
static asdl_stmt_seq* finally_block_rule(Parser *p);
710
static stmt_ty match_stmt_rule(Parser *p);
711
static match_case_ty case_block_rule(Parser *p);
712
static pattern_ty pattern_rule(Parser *p);
713
static pattern_ty as_pattern_rule(Parser *p);
714
static pattern_ty closed_pattern_rule(Parser *p);
715
static pattern_ty literal_pattern_rule(Parser *p);
716
static expr_ty literal_expr_rule(Parser *p);
717
static expr_ty complex_number_rule(Parser *p);
718
static expr_ty signed_number_rule(Parser *p);
719
static expr_ty signed_real_number_rule(Parser *p);
720
static expr_ty real_number_rule(Parser *p);
721
static expr_ty imaginary_number_rule(Parser *p);
722
static pattern_ty capture_pattern_rule(Parser *p);
723
static expr_ty pattern_capture_target_rule(Parser *p);
724
static pattern_ty wildcard_pattern_rule(Parser *p);
725
static pattern_ty value_pattern_rule(Parser *p);
726
static expr_ty attr_rule(Parser *p);
727
static pattern_ty group_pattern_rule(Parser *p);
728
static pattern_ty sequence_pattern_rule(Parser *p);
729
static asdl_seq* open_sequence_pattern_rule(Parser *p);
730
static asdl_seq* maybe_sequence_pattern_rule(Parser *p);
731
static pattern_ty maybe_star_pattern_rule(Parser *p);
732
static pattern_ty star_pattern_rule(Parser *p);
733
static pattern_ty mapping_pattern_rule(Parser *p);
734
static KeyPatternPair* key_value_pattern_rule(Parser *p);
735
static pattern_ty class_pattern_rule(Parser *p);
736
static KeyPatternPair* keyword_pattern_rule(Parser *p);
737
static stmt_ty type_alias_rule(Parser *p);
738
static asdl_type_param_seq* type_param_seq_rule(Parser *p);
739
static type_param_ty type_param_rule(Parser *p);
740
static expr_ty type_param_bound_rule(Parser *p);
741
static expr_ty type_param_default_rule(Parser *p);
742
static expr_ty type_param_starred_default_rule(Parser *p);
743
static expr_ty star_expression_rule(Parser *p);
744
static expr_ty conjunction_rule(Parser *p);
745
static expr_ty comparison_rule(Parser *p);
746
static CmpopExprPair* compare_op_bitwise_or_pair_rule(Parser *p);
747
static expr_ty bitwise_xor_rule(Parser *p);
748
static expr_ty shift_expr_rule(Parser *p);
749
static expr_ty term_rule(Parser *p);
750
static expr_ty power_rule(Parser *p);
751
static expr_ty await_primary_rule(Parser *p);
752
static expr_ty primary_rule(Parser *p);
753
static expr_ty slices_rule(Parser *p);
754
static expr_ty slice_rule(Parser *p);
755
static expr_ty atom_rule(Parser *p);
756
static expr_ty group_rule(Parser *p);
757
static arguments_ty lambda_parameters_rule(Parser *p);
758
static StarEtc* lambda_star_etc_rule(Parser *p);
759
static arg_ty lambda_kwds_rule(Parser *p);
760
static expr_ty fstring_middle_rule(Parser *p);
761
static expr_ty fstring_replacement_field_rule(Parser *p);
762
static ResultTokenWithMetadata* fstring_conversion_rule(Parser *p);
763
static ResultTokenWithMetadata* fstring_full_format_spec_rule(Parser *p);
764
static expr_ty tstring_format_spec_replacement_field_rule(Parser *p);
765
static expr_ty tstring_format_spec_rule(Parser *p);
766
static ResultTokenWithMetadata* tstring_full_format_spec_rule(Parser *p);
767
static expr_ty tstring_replacement_field_rule(Parser *p);
768
static expr_ty tstring_middle_rule(Parser *p);
769
static expr_ty strings_rule(Parser *p);
770
static asdl_expr_seq* display_items_rule(Parser *p);
771
static expr_ty display_item_rule(Parser *p);
772
static expr_ty set_rule(Parser *p);
773
static expr_ty dict_rule(Parser *p);
774
static asdl_seq* double_starred_kvpairs_rule(Parser *p);
775
static KeyValuePair* kvpair_rule(Parser *p);
776
static comprehension_ty for_if_clause_rule(Parser *p);
777
static expr_ty listcomp_rule(Parser *p);
778
static expr_ty setcomp_rule(Parser *p);
779
static expr_ty dictcomp_rule(Parser *p);
780
static KeywordOrStarred* kwarg_or_starred_rule(Parser *p);
781
static KeywordOrStarred* kwarg_or_double_starred_rule(Parser *p);
782
static expr_ty target_rule(Parser *p);
783
static expr_ty single_target_rule(Parser *p);
784
static expr_ty attribute_or_subscript_target_rule(Parser *p);
785
static expr_ty target_value_rule(Parser *p);
786
static asdl_expr_seq* del_targets_rule(Parser *p);
787
static expr_ty del_target_rule(Parser *p);
788
static asdl_expr_seq* type_expressions_rule(Parser *p);
789
static asdl_seq *_loop0_1_rule(Parser *p);
790
static asdl_seq *_loop1_2_rule(Parser *p);
791
static asdl_seq *_loop0_3_rule(Parser *p);
792
static asdl_seq *_gather_4_rule(Parser *p);
793
static void *_tmp_5_rule(Parser *p);
794
static void *_tmp_6_rule(Parser *p);
795
static void *_tmp_7_rule(Parser *p);
796
static void *_tmp_8_rule(Parser *p);
797
static void *_tmp_9_rule(Parser *p);
798
static void *_tmp_10_rule(Parser *p);
799
static void *_tmp_11_rule(Parser *p);
800
static asdl_seq *_loop1_12_rule(Parser *p);
801
static asdl_seq *_loop0_13_rule(Parser *p);
802
static asdl_seq *_gather_14_rule(Parser *p);
803
static void *_tmp_15_rule(Parser *p);
804
static void *_tmp_16_rule(Parser *p);
805
static asdl_seq *_loop0_17_rule(Parser *p);
806
static asdl_seq *_loop1_18_rule(Parser *p);
807
static asdl_seq *_loop0_19_rule(Parser *p);
808
static asdl_seq *_gather_20_rule(Parser *p);
809
static void *_tmp_21_rule(Parser *p);
810
static asdl_seq *_loop0_22_rule(Parser *p);
811
static asdl_seq *_gather_23_rule(Parser *p);
812
static asdl_seq *_loop1_24_rule(Parser *p);
813
static void *_tmp_25_rule(Parser *p);
814
static void *_tmp_26_rule(Parser *p);
815
static asdl_seq *_loop0_27_rule(Parser *p);
816
static asdl_seq *_loop0_28_rule(Parser *p);
817
static asdl_seq *_loop1_29_rule(Parser *p);
818
static asdl_seq *_loop1_30_rule(Parser *p);
819
static asdl_seq *_loop0_31_rule(Parser *p);
820
static asdl_seq *_loop1_32_rule(Parser *p);
821
static asdl_seq *_loop0_33_rule(Parser *p);
822
static asdl_seq *_gather_34_rule(Parser *p);
823
static void *_tmp_35_rule(Parser *p);
824
static asdl_seq *_loop1_36_rule(Parser *p);
825
static asdl_seq *_loop1_37_rule(Parser *p);
826
static asdl_seq *_loop1_38_rule(Parser *p);
827
static asdl_seq *_loop0_39_rule(Parser *p);
828
static asdl_seq *_gather_40_rule(Parser *p);
829
static void *_tmp_41_rule(Parser *p);
830
static void *_tmp_42_rule(Parser *p);
831
static void *_tmp_43_rule(Parser *p);
832
static asdl_seq *_loop0_44_rule(Parser *p);
833
static asdl_seq *_gather_45_rule(Parser *p);
834
static asdl_seq *_loop0_46_rule(Parser *p);
835
static asdl_seq *_gather_47_rule(Parser *p);
836
static void *_tmp_48_rule(Parser *p);
837
static asdl_seq *_loop0_49_rule(Parser *p);
838
static asdl_seq *_gather_50_rule(Parser *p);
839
static asdl_seq *_loop0_51_rule(Parser *p);
840
static asdl_seq *_gather_52_rule(Parser *p);
841
static asdl_seq *_loop0_53_rule(Parser *p);
842
static asdl_seq *_gather_54_rule(Parser *p);
843
static asdl_seq *_loop1_55_rule(Parser *p);
844
static asdl_seq *_loop1_56_rule(Parser *p);
845
static asdl_seq *_loop0_57_rule(Parser *p);
846
static asdl_seq *_gather_58_rule(Parser *p);
847
static asdl_seq *_loop1_59_rule(Parser *p);
848
static asdl_seq *_loop1_60_rule(Parser *p);
849
static asdl_seq *_loop1_61_rule(Parser *p);
850
static void *_tmp_62_rule(Parser *p);
851
static asdl_seq *_loop0_63_rule(Parser *p);
852
static asdl_seq *_gather_64_rule(Parser *p);
853
static void *_tmp_65_rule(Parser *p);
854
static void *_tmp_66_rule(Parser *p);
855
static void *_tmp_67_rule(Parser *p);
856
static void *_tmp_68_rule(Parser *p);
857
static void *_tmp_69_rule(Parser *p);
858
static asdl_seq *_loop0_70_rule(Parser *p);
859
static asdl_seq *_loop0_71_rule(Parser *p);
860
static asdl_seq *_loop1_72_rule(Parser *p);
861
static asdl_seq *_loop1_73_rule(Parser *p);
862
static asdl_seq *_loop0_74_rule(Parser *p);
863
static asdl_seq *_loop1_75_rule(Parser *p);
864
static asdl_seq *_loop0_76_rule(Parser *p);
865
static asdl_seq *_loop0_77_rule(Parser *p);
866
static asdl_seq *_loop0_78_rule(Parser *p);
867
static asdl_seq *_loop0_79_rule(Parser *p);
868
static asdl_seq *_loop1_80_rule(Parser *p);
869
static asdl_seq *_loop1_81_rule(Parser *p);
870
static asdl_seq *_loop0_82_rule(Parser *p);
871
static asdl_seq *_gather_83_rule(Parser *p);
872
static void *_tmp_84_rule(Parser *p);
873
static asdl_seq *_loop0_85_rule(Parser *p);
874
static asdl_seq *_gather_86_rule(Parser *p);
875
static asdl_seq *_loop1_87_rule(Parser *p);
876
static asdl_seq *_loop0_88_rule(Parser *p);
877
static void *_tmp_89_rule(Parser *p);
878
static asdl_seq *_loop0_90_rule(Parser *p);
879
static asdl_seq *_gather_91_rule(Parser *p);
880
static void *_tmp_92_rule(Parser *p);
881
static asdl_seq *_loop0_93_rule(Parser *p);
882
static asdl_seq *_gather_94_rule(Parser *p);
883
static void *_tmp_95_rule(Parser *p);
884
static asdl_seq *_loop0_96_rule(Parser *p);
885
static asdl_seq *_gather_97_rule(Parser *p);
886
static asdl_seq *_loop0_98_rule(Parser *p);
887
static void *_tmp_99_rule(Parser *p);
888
static void *_tmp_100_rule(Parser *p);
889
static asdl_seq *_loop0_101_rule(Parser *p);
890
static asdl_seq *_gather_102_rule(Parser *p);
891
static asdl_seq *_loop0_103_rule(Parser *p);
892
static asdl_seq *_gather_104_rule(Parser *p);
893
static void *_tmp_105_rule(Parser *p);
894
static void *_tmp_178_rule(Parser *p);
895
static void *_tmp_179_rule(Parser *p);
896
static void *_tmp_180_rule(Parser *p);
897
static void *_tmp_181_rule(Parser *p);
898
static void *_tmp_182_rule(Parser *p);
899
static void *_tmp_183_rule(Parser *p);
900
static void *_tmp_184_rule(Parser *p);
901
static void *_tmp_185_rule(Parser *p);
902
static void *_tmp_186_rule(Parser *p);
903
static void *_tmp_187_rule(Parser *p);
904
static void *_tmp_188_rule(Parser *p);
905
static void *_tmp_200_rule(Parser *p);
906
907
908
// file: statements? $
909
static mod_ty
910
file_rule(Parser *p)
911
138k
{
912
138k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
913
0
        _Pypegen_stack_overflow(p);
914
0
    }
915
138k
    if (p->error_indicator) {
916
2.58k
        p->level--;
917
2.58k
        return NULL;
918
2.58k
    }
919
135k
    mod_ty _res = NULL;
920
135k
    int _mark = p->mark;
921
135k
    { // statements? $
922
135k
        if (p->error_indicator) {
923
0
            p->level--;
924
0
            return NULL;
925
0
        }
926
135k
        D(fprintf(stderr, "%*c> file[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statements? $"));
927
135k
        void *a;
928
135k
        Token * endmarker_var;
929
135k
        if (
930
135k
            (a = statements_rule(p), !p->error_indicator)  // statements?
931
129k
            &&
932
129k
            (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
933
135k
        )
934
8.12k
        {
935
8.12k
            D(fprintf(stderr, "%*c+ file[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statements? $"));
936
8.12k
            _res = _PyPegen_make_module ( p , a );
937
8.12k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
938
0
                p->error_indicator = 1;
939
0
                p->level--;
940
0
                return NULL;
941
0
            }
942
8.12k
            goto done;
943
8.12k
        }
944
127k
        p->mark = _mark;
945
127k
        D(fprintf(stderr, "%*c%s file[%d-%d]: %s failed!\n", p->level, ' ',
946
127k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statements? $"));
947
127k
    }
948
127k
    _res = NULL;
949
135k
  done:
950
135k
    p->level--;
951
135k
    return _res;
952
127k
}
953
954
// interactive: statement_newline
955
static mod_ty
956
interactive_rule(Parser *p)
957
0
{
958
0
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
959
0
        _Pypegen_stack_overflow(p);
960
0
    }
961
0
    if (p->error_indicator) {
962
0
        p->level--;
963
0
        return NULL;
964
0
    }
965
0
    mod_ty _res = NULL;
966
0
    int _mark = p->mark;
967
0
    { // statement_newline
968
0
        if (p->error_indicator) {
969
0
            p->level--;
970
0
            return NULL;
971
0
        }
972
0
        D(fprintf(stderr, "%*c> interactive[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement_newline"));
973
0
        asdl_stmt_seq* a;
974
0
        if (
975
0
            (a = statement_newline_rule(p))  // statement_newline
976
0
        )
977
0
        {
978
0
            D(fprintf(stderr, "%*c+ interactive[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statement_newline"));
979
0
            _res = _PyAST_Interactive ( a , p -> arena );
980
0
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
981
0
                p->error_indicator = 1;
982
0
                p->level--;
983
0
                return NULL;
984
0
            }
985
0
            goto done;
986
0
        }
987
0
        p->mark = _mark;
988
0
        D(fprintf(stderr, "%*c%s interactive[%d-%d]: %s failed!\n", p->level, ' ',
989
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement_newline"));
990
0
    }
991
0
    _res = NULL;
992
0
  done:
993
0
    p->level--;
994
0
    return _res;
995
0
}
996
997
// eval: expressions NEWLINE* $
998
static mod_ty
999
eval_rule(Parser *p)
1000
172
{
1001
172
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
1002
0
        _Pypegen_stack_overflow(p);
1003
0
    }
1004
172
    if (p->error_indicator) {
1005
0
        p->level--;
1006
0
        return NULL;
1007
0
    }
1008
172
    mod_ty _res = NULL;
1009
172
    int _mark = p->mark;
1010
172
    { // expressions NEWLINE* $
1011
172
        if (p->error_indicator) {
1012
0
            p->level--;
1013
0
            return NULL;
1014
0
        }
1015
172
        D(fprintf(stderr, "%*c> eval[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions NEWLINE* $"));
1016
172
        asdl_seq * _loop0_1_var;
1017
172
        expr_ty a;
1018
172
        Token * endmarker_var;
1019
172
        if (
1020
172
            (a = expressions_rule(p))  // expressions
1021
172
            &&
1022
172
            (_loop0_1_var = _loop0_1_rule(p))  // NEWLINE*
1023
172
            &&
1024
172
            (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1025
172
        )
1026
172
        {
1027
172
            D(fprintf(stderr, "%*c+ eval[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions NEWLINE* $"));
1028
172
            _res = _PyAST_Expression ( a , p -> arena );
1029
172
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
1030
0
                p->error_indicator = 1;
1031
0
                p->level--;
1032
0
                return NULL;
1033
0
            }
1034
172
            goto done;
1035
172
        }
1036
0
        p->mark = _mark;
1037
0
        D(fprintf(stderr, "%*c%s eval[%d-%d]: %s failed!\n", p->level, ' ',
1038
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions NEWLINE* $"));
1039
0
    }
1040
0
    _res = NULL;
1041
172
  done:
1042
172
    p->level--;
1043
172
    return _res;
1044
0
}
1045
1046
// func_type: '(' type_expressions? ')' '->' expression NEWLINE* $
1047
static mod_ty
1048
func_type_rule(Parser *p)
1049
0
{
1050
0
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
1051
0
        _Pypegen_stack_overflow(p);
1052
0
    }
1053
0
    if (p->error_indicator) {
1054
0
        p->level--;
1055
0
        return NULL;
1056
0
    }
1057
0
    mod_ty _res = NULL;
1058
0
    int _mark = p->mark;
1059
0
    { // '(' type_expressions? ')' '->' expression NEWLINE* $
1060
0
        if (p->error_indicator) {
1061
0
            p->level--;
1062
0
            return NULL;
1063
0
        }
1064
0
        D(fprintf(stderr, "%*c> func_type[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
1065
0
        Token * _literal;
1066
0
        Token * _literal_1;
1067
0
        Token * _literal_2;
1068
0
        asdl_seq * _loop0_1_var;
1069
0
        void *a;
1070
0
        expr_ty b;
1071
0
        Token * endmarker_var;
1072
0
        if (
1073
0
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
1074
0
            &&
1075
0
            (a = type_expressions_rule(p), !p->error_indicator)  // type_expressions?
1076
0
            &&
1077
0
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
1078
0
            &&
1079
0
            (_literal_2 = _PyPegen_expect_token(p, 51))  // token='->'
1080
0
            &&
1081
0
            (b = expression_rule(p))  // expression
1082
0
            &&
1083
0
            (_loop0_1_var = _loop0_1_rule(p))  // NEWLINE*
1084
0
            &&
1085
0
            (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1086
0
        )
1087
0
        {
1088
0
            D(fprintf(stderr, "%*c+ func_type[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
1089
0
            _res = _PyAST_FunctionType ( a , b , p -> arena );
1090
0
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
1091
0
                p->error_indicator = 1;
1092
0
                p->level--;
1093
0
                return NULL;
1094
0
            }
1095
0
            goto done;
1096
0
        }
1097
0
        p->mark = _mark;
1098
0
        D(fprintf(stderr, "%*c%s func_type[%d-%d]: %s failed!\n", p->level, ' ',
1099
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
1100
0
    }
1101
0
    _res = NULL;
1102
0
  done:
1103
0
    p->level--;
1104
0
    return _res;
1105
0
}
1106
1107
// statements: statement+
1108
static asdl_stmt_seq*
1109
statements_rule(Parser *p)
1110
145k
{
1111
145k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
1112
0
        _Pypegen_stack_overflow(p);
1113
0
    }
1114
145k
    if (p->error_indicator) {
1115
0
        p->level--;
1116
0
        return NULL;
1117
0
    }
1118
145k
    asdl_stmt_seq* _res = NULL;
1119
145k
    int _mark = p->mark;
1120
145k
    { // statement+
1121
145k
        if (p->error_indicator) {
1122
0
            p->level--;
1123
0
            return NULL;
1124
0
        }
1125
145k
        D(fprintf(stderr, "%*c> statements[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement+"));
1126
145k
        asdl_seq * a;
1127
145k
        if (
1128
145k
            (a = _loop1_2_rule(p))  // statement+
1129
145k
        )
1130
18.5k
        {
1131
18.5k
            D(fprintf(stderr, "%*c+ statements[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statement+"));
1132
18.5k
            _res = ( asdl_stmt_seq* ) _PyPegen_seq_flatten ( p , a );
1133
18.5k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
1134
0
                p->error_indicator = 1;
1135
0
                p->level--;
1136
0
                return NULL;
1137
0
            }
1138
18.5k
            goto done;
1139
18.5k
        }
1140
127k
        p->mark = _mark;
1141
127k
        D(fprintf(stderr, "%*c%s statements[%d-%d]: %s failed!\n", p->level, ' ',
1142
127k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement+"));
1143
127k
    }
1144
127k
    _res = NULL;
1145
145k
  done:
1146
145k
    p->level--;
1147
145k
    return _res;
1148
127k
}
1149
1150
// statement: compound_stmt | simple_stmts
1151
static asdl_stmt_seq*
1152
statement_rule(Parser *p)
1153
236k
{
1154
236k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
1155
0
        _Pypegen_stack_overflow(p);
1156
0
    }
1157
236k
    if (p->error_indicator) {
1158
0
        p->level--;
1159
0
        return NULL;
1160
0
    }
1161
236k
    asdl_stmt_seq* _res = NULL;
1162
236k
    int _mark = p->mark;
1163
236k
    { // compound_stmt
1164
236k
        if (p->error_indicator) {
1165
0
            p->level--;
1166
0
            return NULL;
1167
0
        }
1168
236k
        D(fprintf(stderr, "%*c> statement[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1169
236k
        stmt_ty a;
1170
236k
        if (
1171
236k
            (a = compound_stmt_rule(p))  // compound_stmt
1172
236k
        )
1173
27.7k
        {
1174
27.7k
            D(fprintf(stderr, "%*c+ statement[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1175
27.7k
            _res = _PyPegen_register_stmts ( p , ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , a ) );
1176
27.7k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
1177
0
                p->error_indicator = 1;
1178
0
                p->level--;
1179
0
                return NULL;
1180
0
            }
1181
27.7k
            goto done;
1182
27.7k
        }
1183
208k
        p->mark = _mark;
1184
208k
        D(fprintf(stderr, "%*c%s statement[%d-%d]: %s failed!\n", p->level, ' ',
1185
208k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compound_stmt"));
1186
208k
    }
1187
0
    { // simple_stmts
1188
208k
        if (p->error_indicator) {
1189
2.00k
            p->level--;
1190
2.00k
            return NULL;
1191
2.00k
        }
1192
206k
        D(fprintf(stderr, "%*c> statement[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1193
206k
        asdl_stmt_seq* a;
1194
206k
        if (
1195
206k
            (a = (asdl_stmt_seq*)simple_stmts_rule(p))  // simple_stmts
1196
206k
        )
1197
62.9k
        {
1198
62.9k
            D(fprintf(stderr, "%*c+ statement[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1199
62.9k
            _res = a;
1200
62.9k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
1201
0
                p->error_indicator = 1;
1202
0
                p->level--;
1203
0
                return NULL;
1204
0
            }
1205
62.9k
            goto done;
1206
62.9k
        }
1207
143k
        p->mark = _mark;
1208
143k
        D(fprintf(stderr, "%*c%s statement[%d-%d]: %s failed!\n", p->level, ' ',
1209
143k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
1210
143k
    }
1211
143k
    _res = NULL;
1212
234k
  done:
1213
234k
    p->level--;
1214
234k
    return _res;
1215
143k
}
1216
1217
// single_compound_stmt: compound_stmt
1218
static asdl_stmt_seq*
1219
single_compound_stmt_rule(Parser *p)
1220
0
{
1221
0
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
1222
0
        _Pypegen_stack_overflow(p);
1223
0
    }
1224
0
    if (p->error_indicator) {
1225
0
        p->level--;
1226
0
        return NULL;
1227
0
    }
1228
0
    asdl_stmt_seq* _res = NULL;
1229
0
    int _mark = p->mark;
1230
0
    { // compound_stmt
1231
0
        if (p->error_indicator) {
1232
0
            p->level--;
1233
0
            return NULL;
1234
0
        }
1235
0
        D(fprintf(stderr, "%*c> single_compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1236
0
        stmt_ty a;
1237
0
        if (
1238
0
            (a = compound_stmt_rule(p))  // compound_stmt
1239
0
        )
1240
0
        {
1241
0
            D(fprintf(stderr, "%*c+ single_compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1242
0
            _res = _PyPegen_register_stmts ( p , ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , a ) );
1243
0
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
1244
0
                p->error_indicator = 1;
1245
0
                p->level--;
1246
0
                return NULL;
1247
0
            }
1248
0
            goto done;
1249
0
        }
1250
0
        p->mark = _mark;
1251
0
        D(fprintf(stderr, "%*c%s single_compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1252
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compound_stmt"));
1253
0
    }
1254
0
    _res = NULL;
1255
0
  done:
1256
0
    p->level--;
1257
0
    return _res;
1258
0
}
1259
1260
// statement_newline: single_compound_stmt NEWLINE | simple_stmts | NEWLINE | $
1261
static asdl_stmt_seq*
1262
statement_newline_rule(Parser *p)
1263
0
{
1264
0
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
1265
0
        _Pypegen_stack_overflow(p);
1266
0
    }
1267
0
    if (p->error_indicator) {
1268
0
        p->level--;
1269
0
        return NULL;
1270
0
    }
1271
0
    asdl_stmt_seq* _res = NULL;
1272
0
    int _mark = p->mark;
1273
0
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1274
0
        p->error_indicator = 1;
1275
0
        p->level--;
1276
0
        return NULL;
1277
0
    }
1278
0
    int _start_lineno = p->tokens[_mark]->lineno;
1279
0
    UNUSED(_start_lineno); // Only used by EXTRA macro
1280
0
    int _start_col_offset = p->tokens[_mark]->col_offset;
1281
0
    UNUSED(_start_col_offset); // Only used by EXTRA macro
1282
0
    { // single_compound_stmt NEWLINE
1283
0
        if (p->error_indicator) {
1284
0
            p->level--;
1285
0
            return NULL;
1286
0
        }
1287
0
        D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_compound_stmt NEWLINE"));
1288
0
        asdl_stmt_seq* a;
1289
0
        Token * newline_var;
1290
0
        if (
1291
0
            (a = single_compound_stmt_rule(p))  // single_compound_stmt
1292
0
            &&
1293
0
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1294
0
        )
1295
0
        {
1296
0
            D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_compound_stmt NEWLINE"));
1297
0
            _res = a;
1298
0
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
1299
0
                p->error_indicator = 1;
1300
0
                p->level--;
1301
0
                return NULL;
1302
0
            }
1303
0
            goto done;
1304
0
        }
1305
0
        p->mark = _mark;
1306
0
        D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1307
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_compound_stmt NEWLINE"));
1308
0
    }
1309
0
    { // simple_stmts
1310
0
        if (p->error_indicator) {
1311
0
            p->level--;
1312
0
            return NULL;
1313
0
        }
1314
0
        D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1315
0
        asdl_stmt_seq* simple_stmts_var;
1316
0
        if (
1317
0
            (simple_stmts_var = simple_stmts_rule(p))  // simple_stmts
1318
0
        )
1319
0
        {
1320
0
            D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1321
0
            _res = simple_stmts_var;
1322
0
            goto done;
1323
0
        }
1324
0
        p->mark = _mark;
1325
0
        D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1326
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
1327
0
    }
1328
0
    { // NEWLINE
1329
0
        if (p->error_indicator) {
1330
0
            p->level--;
1331
0
            return NULL;
1332
0
        }
1333
0
        D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
1334
0
        Token * newline_var;
1335
0
        if (
1336
0
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1337
0
        )
1338
0
        {
1339
0
            D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
1340
0
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1341
0
            if (_token == NULL) {
1342
0
                p->level--;
1343
0
                return NULL;
1344
0
            }
1345
0
            int _end_lineno = _token->end_lineno;
1346
0
            UNUSED(_end_lineno); // Only used by EXTRA macro
1347
0
            int _end_col_offset = _token->end_col_offset;
1348
0
            UNUSED(_end_col_offset); // Only used by EXTRA macro
1349
0
            _res = ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , CHECK ( stmt_ty , _PyAST_Pass ( EXTRA ) ) );
1350
0
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
1351
0
                p->error_indicator = 1;
1352
0
                p->level--;
1353
0
                return NULL;
1354
0
            }
1355
0
            goto done;
1356
0
        }
1357
0
        p->mark = _mark;
1358
0
        D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1359
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
1360
0
    }
1361
0
    { // $
1362
0
        if (p->error_indicator) {
1363
0
            p->level--;
1364
0
            return NULL;
1365
0
        }
1366
0
        D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "$"));
1367
0
        Token * endmarker_var;
1368
0
        if (
1369
0
            (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1370
0
        )
1371
0
        {
1372
0
            D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "$"));
1373
0
            _res = _PyPegen_interactive_exit ( p );
1374
0
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
1375
0
                p->error_indicator = 1;
1376
0
                p->level--;
1377
0
                return NULL;
1378
0
            }
1379
0
            goto done;
1380
0
        }
1381
0
        p->mark = _mark;
1382
0
        D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1383
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "$"));
1384
0
    }
1385
0
    _res = NULL;
1386
0
  done:
1387
0
    p->level--;
1388
0
    return _res;
1389
0
}
1390
1391
// simple_stmts: simple_stmt !';' NEWLINE | ';'.simple_stmt+ ';'? NEWLINE
1392
static asdl_stmt_seq*
1393
simple_stmts_rule(Parser *p)
1394
240k
{
1395
240k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
1396
0
        _Pypegen_stack_overflow(p);
1397
0
    }
1398
240k
    if (p->error_indicator) {
1399
0
        p->level--;
1400
0
        return NULL;
1401
0
    }
1402
240k
    asdl_stmt_seq* _res = NULL;
1403
240k
    int _mark = p->mark;
1404
240k
    { // simple_stmt !';' NEWLINE
1405
240k
        if (p->error_indicator) {
1406
0
            p->level--;
1407
0
            return NULL;
1408
0
        }
1409
240k
        D(fprintf(stderr, "%*c> simple_stmts[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt !';' NEWLINE"));
1410
240k
        stmt_ty a;
1411
240k
        Token * newline_var;
1412
240k
        if (
1413
240k
            (a = simple_stmt_rule(p))  // simple_stmt
1414
104k
            &&
1415
104k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 13)  // token=';'
1416
101k
            &&
1417
101k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1418
240k
        )
1419
91.1k
        {
1420
91.1k
            D(fprintf(stderr, "%*c+ simple_stmts[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt !';' NEWLINE"));
1421
91.1k
            _res = ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , a );
1422
91.1k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
1423
0
                p->error_indicator = 1;
1424
0
                p->level--;
1425
0
                return NULL;
1426
0
            }
1427
91.1k
            goto done;
1428
91.1k
        }
1429
149k
        p->mark = _mark;
1430
149k
        D(fprintf(stderr, "%*c%s simple_stmts[%d-%d]: %s failed!\n", p->level, ' ',
1431
149k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt !';' NEWLINE"));
1432
149k
    }
1433
0
    { // ';'.simple_stmt+ ';'? NEWLINE
1434
149k
        if (p->error_indicator) {
1435
4.08k
            p->level--;
1436
4.08k
            return NULL;
1437
4.08k
        }
1438
145k
        D(fprintf(stderr, "%*c> simple_stmts[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1439
145k
        void *_opt_var;
1440
145k
        UNUSED(_opt_var); // Silence compiler warnings
1441
145k
        asdl_stmt_seq* a;
1442
145k
        Token * newline_var;
1443
145k
        if (
1444
145k
            (a = (asdl_stmt_seq*)_gather_4_rule(p))  // ';'.simple_stmt+
1445
13.4k
            &&
1446
13.4k
            (_opt_var = _PyPegen_expect_token(p, 13), !p->error_indicator)  // ';'?
1447
13.3k
            &&
1448
13.3k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1449
145k
        )
1450
2.42k
        {
1451
2.42k
            D(fprintf(stderr, "%*c+ simple_stmts[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1452
2.42k
            _res = a;
1453
2.42k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
1454
0
                p->error_indicator = 1;
1455
0
                p->level--;
1456
0
                return NULL;
1457
0
            }
1458
2.42k
            goto done;
1459
2.42k
        }
1460
142k
        p->mark = _mark;
1461
142k
        D(fprintf(stderr, "%*c%s simple_stmts[%d-%d]: %s failed!\n", p->level, ' ',
1462
142k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1463
142k
    }
1464
142k
    _res = NULL;
1465
236k
  done:
1466
236k
    p->level--;
1467
236k
    return _res;
1468
142k
}
1469
1470
// simple_stmt:
1471
//     | assignment
1472
//     | &"type" type_alias
1473
//     | &('import' | 'from' | "lazy") import_stmt
1474
//     | star_expressions
1475
//     | &'return' return_stmt
1476
//     | &'raise' raise_stmt
1477
//     | &'pass' pass_stmt
1478
//     | &'del' del_stmt
1479
//     | &'yield' yield_stmt
1480
//     | &'assert' assert_stmt
1481
//     | &'break' break_stmt
1482
//     | &'continue' continue_stmt
1483
//     | &'global' global_stmt
1484
//     | &'nonlocal' nonlocal_stmt
1485
Py_LOCAL_SYMBOL stmt_ty
1486
simple_stmt_rule(Parser *p)
1487
425k
{
1488
425k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
1489
0
        _Pypegen_stack_overflow(p);
1490
0
    }
1491
425k
    if (p->error_indicator) {
1492
0
        p->level--;
1493
0
        return NULL;
1494
0
    }
1495
425k
    stmt_ty _res = NULL;
1496
425k
    if (_PyPegen_is_memoized(p, simple_stmt_type, &_res)) {
1497
145k
        p->level--;
1498
145k
        return _res;
1499
145k
    }
1500
280k
    int _mark = p->mark;
1501
280k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1502
0
        p->error_indicator = 1;
1503
0
        p->level--;
1504
0
        return NULL;
1505
0
    }
1506
280k
    int _start_lineno = p->tokens[_mark]->lineno;
1507
280k
    UNUSED(_start_lineno); // Only used by EXTRA macro
1508
280k
    int _start_col_offset = p->tokens[_mark]->col_offset;
1509
280k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
1510
280k
    { // assignment
1511
280k
        if (p->error_indicator) {
1512
0
            p->level--;
1513
0
            return NULL;
1514
0
        }
1515
280k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment"));
1516
280k
        stmt_ty assignment_var;
1517
280k
        if (
1518
280k
            (assignment_var = assignment_rule(p))  // assignment
1519
280k
        )
1520
10.4k
        {
1521
10.4k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment"));
1522
10.4k
            _res = assignment_var;
1523
10.4k
            goto done;
1524
10.4k
        }
1525
270k
        p->mark = _mark;
1526
270k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1527
270k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment"));
1528
270k
    }
1529
0
    { // &"type" type_alias
1530
270k
        if (p->error_indicator) {
1531
4.51k
            p->level--;
1532
4.51k
            return NULL;
1533
4.51k
        }
1534
265k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&\"type\" type_alias"));
1535
265k
        stmt_ty type_alias_var;
1536
265k
        if (
1537
265k
            _PyPegen_lookahead_with_string(1, _PyPegen_expect_soft_keyword, p, "type")
1538
965
            &&
1539
965
            (type_alias_var = type_alias_rule(p))  // type_alias
1540
265k
        )
1541
404
        {
1542
404
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&\"type\" type_alias"));
1543
404
            _res = type_alias_var;
1544
404
            goto done;
1545
404
        }
1546
265k
        p->mark = _mark;
1547
265k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1548
265k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&\"type\" type_alias"));
1549
265k
    }
1550
0
    { // &('import' | 'from' | "lazy") import_stmt
1551
265k
        if (p->error_indicator) {
1552
331
            p->level--;
1553
331
            return NULL;
1554
331
        }
1555
265k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('import' | 'from' | \"lazy\") import_stmt"));
1556
265k
        stmt_ty import_stmt_var;
1557
265k
        if (
1558
265k
            _PyPegen_lookahead(1, _tmp_5_rule, p)
1559
9.45k
            &&
1560
9.45k
            (import_stmt_var = import_stmt_rule(p))  // import_stmt
1561
265k
        )
1562
8.24k
        {
1563
8.24k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('import' | 'from' | \"lazy\") import_stmt"));
1564
8.24k
            _res = import_stmt_var;
1565
8.24k
            goto done;
1566
8.24k
        }
1567
256k
        p->mark = _mark;
1568
256k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1569
256k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('import' | 'from' | \"lazy\") import_stmt"));
1570
256k
    }
1571
0
    { // star_expressions
1572
256k
        if (p->error_indicator) {
1573
334
            p->level--;
1574
334
            return NULL;
1575
334
        }
1576
256k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1577
256k
        expr_ty e;
1578
256k
        if (
1579
256k
            (e = star_expressions_rule(p))  // star_expressions
1580
256k
        )
1581
110k
        {
1582
110k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1583
110k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1584
110k
            if (_token == NULL) {
1585
0
                p->level--;
1586
0
                return NULL;
1587
0
            }
1588
110k
            int _end_lineno = _token->end_lineno;
1589
110k
            UNUSED(_end_lineno); // Only used by EXTRA macro
1590
110k
            int _end_col_offset = _token->end_col_offset;
1591
110k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
1592
110k
            _res = _PyAST_Expr ( e , EXTRA );
1593
110k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
1594
0
                p->error_indicator = 1;
1595
0
                p->level--;
1596
0
                return NULL;
1597
0
            }
1598
110k
            goto done;
1599
110k
        }
1600
146k
        p->mark = _mark;
1601
146k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1602
146k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
1603
146k
    }
1604
0
    { // &'return' return_stmt
1605
146k
        if (p->error_indicator) {
1606
366
            p->level--;
1607
366
            return NULL;
1608
366
        }
1609
145k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'return' return_stmt"));
1610
145k
        stmt_ty return_stmt_var;
1611
145k
        if (
1612
145k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 502)  // token='return'
1613
2.75k
            &&
1614
2.75k
            (return_stmt_var = return_stmt_rule(p))  // return_stmt
1615
145k
        )
1616
2.69k
        {
1617
2.69k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'return' return_stmt"));
1618
2.69k
            _res = return_stmt_var;
1619
2.69k
            goto done;
1620
2.69k
        }
1621
143k
        p->mark = _mark;
1622
143k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1623
143k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'return' return_stmt"));
1624
143k
    }
1625
0
    { // &'raise' raise_stmt
1626
143k
        if (p->error_indicator) {
1627
66
            p->level--;
1628
66
            return NULL;
1629
66
        }
1630
142k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'raise' raise_stmt"));
1631
142k
        stmt_ty raise_stmt_var;
1632
142k
        if (
1633
142k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 503)  // token='raise'
1634
2.25k
            &&
1635
2.25k
            (raise_stmt_var = raise_stmt_rule(p))  // raise_stmt
1636
142k
        )
1637
2.18k
        {
1638
2.18k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'raise' raise_stmt"));
1639
2.18k
            _res = raise_stmt_var;
1640
2.18k
            goto done;
1641
2.18k
        }
1642
140k
        p->mark = _mark;
1643
140k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1644
140k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'raise' raise_stmt"));
1645
140k
    }
1646
0
    { // &'pass' pass_stmt
1647
140k
        if (p->error_indicator) {
1648
72
            p->level--;
1649
72
            return NULL;
1650
72
        }
1651
140k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'pass' pass_stmt"));
1652
140k
        stmt_ty pass_stmt_var;
1653
140k
        if (
1654
140k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 504)  // token='pass'
1655
1.01k
            &&
1656
1.01k
            (pass_stmt_var = pass_stmt_rule(p))  // pass_stmt
1657
140k
        )
1658
1.01k
        {
1659
1.01k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'pass' pass_stmt"));
1660
1.01k
            _res = pass_stmt_var;
1661
1.01k
            goto done;
1662
1.01k
        }
1663
139k
        p->mark = _mark;
1664
139k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1665
139k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'pass' pass_stmt"));
1666
139k
    }
1667
0
    { // &'del' del_stmt
1668
139k
        if (p->error_indicator) {
1669
0
            p->level--;
1670
0
            return NULL;
1671
0
        }
1672
139k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'del' del_stmt"));
1673
139k
        stmt_ty del_stmt_var;
1674
139k
        if (
1675
139k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 505)  // token='del'
1676
1.00k
            &&
1677
1.00k
            (del_stmt_var = del_stmt_rule(p))  // del_stmt
1678
139k
        )
1679
619
        {
1680
619
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'del' del_stmt"));
1681
619
            _res = del_stmt_var;
1682
619
            goto done;
1683
619
        }
1684
139k
        p->mark = _mark;
1685
139k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1686
139k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'del' del_stmt"));
1687
139k
    }
1688
0
    { // &'yield' yield_stmt
1689
139k
        if (p->error_indicator) {
1690
208
            p->level--;
1691
208
            return NULL;
1692
208
        }
1693
138k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'yield' yield_stmt"));
1694
138k
        stmt_ty yield_stmt_var;
1695
138k
        if (
1696
138k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 506)  // token='yield'
1697
1.18k
            &&
1698
1.18k
            (yield_stmt_var = yield_stmt_rule(p))  // yield_stmt
1699
138k
        )
1700
1.17k
        {
1701
1.17k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'yield' yield_stmt"));
1702
1.17k
            _res = yield_stmt_var;
1703
1.17k
            goto done;
1704
1.17k
        }
1705
137k
        p->mark = _mark;
1706
137k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1707
137k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'yield' yield_stmt"));
1708
137k
    }
1709
0
    { // &'assert' assert_stmt
1710
137k
        if (p->error_indicator) {
1711
7
            p->level--;
1712
7
            return NULL;
1713
7
        }
1714
137k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'assert' assert_stmt"));
1715
137k
        stmt_ty assert_stmt_var;
1716
137k
        if (
1717
137k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 507)  // token='assert'
1718
1.49k
            &&
1719
1.49k
            (assert_stmt_var = assert_stmt_rule(p))  // assert_stmt
1720
137k
        )
1721
1.13k
        {
1722
1.13k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'assert' assert_stmt"));
1723
1.13k
            _res = assert_stmt_var;
1724
1.13k
            goto done;
1725
1.13k
        }
1726
136k
        p->mark = _mark;
1727
136k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1728
136k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'assert' assert_stmt"));
1729
136k
    }
1730
0
    { // &'break' break_stmt
1731
136k
        if (p->error_indicator) {
1732
318
            p->level--;
1733
318
            return NULL;
1734
318
        }
1735
136k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'break' break_stmt"));
1736
136k
        stmt_ty break_stmt_var;
1737
136k
        if (
1738
136k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 508)  // token='break'
1739
1.09k
            &&
1740
1.09k
            (break_stmt_var = break_stmt_rule(p))  // break_stmt
1741
136k
        )
1742
1.09k
        {
1743
1.09k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'break' break_stmt"));
1744
1.09k
            _res = break_stmt_var;
1745
1.09k
            goto done;
1746
1.09k
        }
1747
135k
        p->mark = _mark;
1748
135k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1749
135k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'break' break_stmt"));
1750
135k
    }
1751
0
    { // &'continue' continue_stmt
1752
135k
        if (p->error_indicator) {
1753
0
            p->level--;
1754
0
            return NULL;
1755
0
        }
1756
135k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'continue' continue_stmt"));
1757
135k
        stmt_ty continue_stmt_var;
1758
135k
        if (
1759
135k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 509)  // token='continue'
1760
895
            &&
1761
895
            (continue_stmt_var = continue_stmt_rule(p))  // continue_stmt
1762
135k
        )
1763
895
        {
1764
895
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'continue' continue_stmt"));
1765
895
            _res = continue_stmt_var;
1766
895
            goto done;
1767
895
        }
1768
134k
        p->mark = _mark;
1769
134k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1770
134k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'continue' continue_stmt"));
1771
134k
    }
1772
0
    { // &'global' global_stmt
1773
134k
        if (p->error_indicator) {
1774
0
            p->level--;
1775
0
            return NULL;
1776
0
        }
1777
134k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'global' global_stmt"));
1778
134k
        stmt_ty global_stmt_var;
1779
134k
        if (
1780
134k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 510)  // token='global'
1781
764
            &&
1782
764
            (global_stmt_var = global_stmt_rule(p))  // global_stmt
1783
134k
        )
1784
756
        {
1785
756
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'global' global_stmt"));
1786
756
            _res = global_stmt_var;
1787
756
            goto done;
1788
756
        }
1789
133k
        p->mark = _mark;
1790
133k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1791
133k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'global' global_stmt"));
1792
133k
    }
1793
0
    { // &'nonlocal' nonlocal_stmt
1794
133k
        if (p->error_indicator) {
1795
2
            p->level--;
1796
2
            return NULL;
1797
2
        }
1798
133k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
1799
133k
        stmt_ty nonlocal_stmt_var;
1800
133k
        if (
1801
133k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 511)  // token='nonlocal'
1802
385
            &&
1803
385
            (nonlocal_stmt_var = nonlocal_stmt_rule(p))  // nonlocal_stmt
1804
133k
        )
1805
379
        {
1806
379
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
1807
379
            _res = nonlocal_stmt_var;
1808
379
            goto done;
1809
379
        }
1810
133k
        p->mark = _mark;
1811
133k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1812
133k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
1813
133k
    }
1814
133k
    _res = NULL;
1815
274k
  done:
1816
274k
    _PyPegen_insert_memo(p, _mark, simple_stmt_type, _res);
1817
274k
    p->level--;
1818
274k
    return _res;
1819
133k
}
1820
1821
// compound_stmt:
1822
//     | &('def' | '@' | 'async') function_def
1823
//     | &'if' if_stmt
1824
//     | &('class' | '@') class_def
1825
//     | &('with' | 'async') with_stmt
1826
//     | &('for' | 'async') for_stmt
1827
//     | &'try' try_stmt
1828
//     | &'while' while_stmt
1829
//     | match_stmt
1830
static stmt_ty
1831
compound_stmt_rule(Parser *p)
1832
236k
{
1833
236k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
1834
0
        _Pypegen_stack_overflow(p);
1835
0
    }
1836
236k
    if (p->error_indicator) {
1837
0
        p->level--;
1838
0
        return NULL;
1839
0
    }
1840
236k
    stmt_ty _res = NULL;
1841
236k
    int _mark = p->mark;
1842
236k
    { // &('def' | '@' | 'async') function_def
1843
236k
        if (p->error_indicator) {
1844
0
            p->level--;
1845
0
            return NULL;
1846
0
        }
1847
236k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('def' | '@' | 'async') function_def"));
1848
236k
        stmt_ty function_def_var;
1849
236k
        if (
1850
236k
            _PyPegen_lookahead(1, _tmp_6_rule, p)
1851
11.8k
            &&
1852
11.8k
            (function_def_var = function_def_rule(p))  // function_def
1853
236k
        )
1854
9.22k
        {
1855
9.22k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('def' | '@' | 'async') function_def"));
1856
9.22k
            _res = function_def_var;
1857
9.22k
            goto done;
1858
9.22k
        }
1859
227k
        p->mark = _mark;
1860
227k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1861
227k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('def' | '@' | 'async') function_def"));
1862
227k
    }
1863
0
    { // &'if' if_stmt
1864
227k
        if (p->error_indicator) {
1865
1.18k
            p->level--;
1866
1.18k
            return NULL;
1867
1.18k
        }
1868
226k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'if' if_stmt"));
1869
226k
        stmt_ty if_stmt_var;
1870
226k
        if (
1871
226k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 514)  // token='if'
1872
3.87k
            &&
1873
3.87k
            (if_stmt_var = if_stmt_rule(p))  // if_stmt
1874
226k
        )
1875
3.71k
        {
1876
3.71k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'if' if_stmt"));
1877
3.71k
            _res = if_stmt_var;
1878
3.71k
            goto done;
1879
3.71k
        }
1880
222k
        p->mark = _mark;
1881
222k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1882
222k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'if' if_stmt"));
1883
222k
    }
1884
0
    { // &('class' | '@') class_def
1885
222k
        if (p->error_indicator) {
1886
62
            p->level--;
1887
62
            return NULL;
1888
62
        }
1889
222k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('class' | '@') class_def"));
1890
222k
        stmt_ty class_def_var;
1891
222k
        if (
1892
222k
            _PyPegen_lookahead(1, _tmp_7_rule, p)
1893
3.13k
            &&
1894
3.13k
            (class_def_var = class_def_rule(p))  // class_def
1895
222k
        )
1896
2.77k
        {
1897
2.77k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('class' | '@') class_def"));
1898
2.77k
            _res = class_def_var;
1899
2.77k
            goto done;
1900
2.77k
        }
1901
219k
        p->mark = _mark;
1902
219k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1903
219k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('class' | '@') class_def"));
1904
219k
    }
1905
0
    { // &('with' | 'async') with_stmt
1906
219k
        if (p->error_indicator) {
1907
36
            p->level--;
1908
36
            return NULL;
1909
36
        }
1910
219k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('with' | 'async') with_stmt"));
1911
219k
        stmt_ty with_stmt_var;
1912
219k
        if (
1913
219k
            _PyPegen_lookahead(1, _tmp_8_rule, p)
1914
5.46k
            &&
1915
5.46k
            (with_stmt_var = with_stmt_rule(p))  // with_stmt
1916
219k
        )
1917
4.59k
        {
1918
4.59k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('with' | 'async') with_stmt"));
1919
4.59k
            _res = with_stmt_var;
1920
4.59k
            goto done;
1921
4.59k
        }
1922
215k
        p->mark = _mark;
1923
215k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1924
215k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('with' | 'async') with_stmt"));
1925
215k
    }
1926
0
    { // &('for' | 'async') for_stmt
1927
215k
        if (p->error_indicator) {
1928
140
            p->level--;
1929
140
            return NULL;
1930
140
        }
1931
214k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('for' | 'async') for_stmt"));
1932
214k
        stmt_ty for_stmt_var;
1933
214k
        if (
1934
214k
            _PyPegen_lookahead(1, _tmp_9_rule, p)
1935
1.48k
            &&
1936
1.48k
            (for_stmt_var = for_stmt_rule(p))  // for_stmt
1937
214k
        )
1938
1.22k
        {
1939
1.22k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('for' | 'async') for_stmt"));
1940
1.22k
            _res = for_stmt_var;
1941
1.22k
            goto done;
1942
1.22k
        }
1943
213k
        p->mark = _mark;
1944
213k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1945
213k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('for' | 'async') for_stmt"));
1946
213k
    }
1947
0
    { // &'try' try_stmt
1948
213k
        if (p->error_indicator) {
1949
36
            p->level--;
1950
36
            return NULL;
1951
36
        }
1952
213k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'try' try_stmt"));
1953
213k
        stmt_ty try_stmt_var;
1954
213k
        if (
1955
213k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 518)  // token='try'
1956
5.15k
            &&
1957
5.15k
            (try_stmt_var = try_stmt_rule(p))  // try_stmt
1958
213k
        )
1959
4.53k
        {
1960
4.53k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'try' try_stmt"));
1961
4.53k
            _res = try_stmt_var;
1962
4.53k
            goto done;
1963
4.53k
        }
1964
209k
        p->mark = _mark;
1965
209k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1966
209k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'try' try_stmt"));
1967
209k
    }
1968
0
    { // &'while' while_stmt
1969
209k
        if (p->error_indicator) {
1970
198
            p->level--;
1971
198
            return NULL;
1972
198
        }
1973
208k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'while' while_stmt"));
1974
208k
        stmt_ty while_stmt_var;
1975
208k
        if (
1976
208k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 519)  // token='while'
1977
1.02k
            &&
1978
1.02k
            (while_stmt_var = while_stmt_rule(p))  // while_stmt
1979
208k
        )
1980
959
        {
1981
959
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'while' while_stmt"));
1982
959
            _res = while_stmt_var;
1983
959
            goto done;
1984
959
        }
1985
208k
        p->mark = _mark;
1986
208k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1987
208k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'while' while_stmt"));
1988
208k
    }
1989
0
    { // match_stmt
1990
208k
        if (p->error_indicator) {
1991
19
            p->level--;
1992
19
            return NULL;
1993
19
        }
1994
207k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "match_stmt"));
1995
207k
        stmt_ty match_stmt_var;
1996
207k
        if (
1997
207k
            (match_stmt_var = match_stmt_rule(p))  // match_stmt
1998
207k
        )
1999
756
        {
2000
756
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "match_stmt"));
2001
756
            _res = match_stmt_var;
2002
756
            goto done;
2003
756
        }
2004
207k
        p->mark = _mark;
2005
207k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2006
207k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "match_stmt"));
2007
207k
    }
2008
207k
    _res = NULL;
2009
235k
  done:
2010
235k
    p->level--;
2011
235k
    return _res;
2012
207k
}
2013
2014
// assignment:
2015
//     | NAME ':' expression ['=' annotated_rhs]
2016
//     | ('(' single_target ')' | attribute_or_subscript_target) ':' expression ['=' annotated_rhs]
2017
//     | ((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?
2018
//     | single_target augassign ~ annotated_rhs
2019
//     | invalid_assignment
2020
static stmt_ty
2021
assignment_rule(Parser *p)
2022
280k
{
2023
280k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
2024
0
        _Pypegen_stack_overflow(p);
2025
0
    }
2026
280k
    if (p->error_indicator) {
2027
0
        p->level--;
2028
0
        return NULL;
2029
0
    }
2030
280k
    stmt_ty _res = NULL;
2031
280k
    int _mark = p->mark;
2032
280k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2033
0
        p->error_indicator = 1;
2034
0
        p->level--;
2035
0
        return NULL;
2036
0
    }
2037
280k
    int _start_lineno = p->tokens[_mark]->lineno;
2038
280k
    UNUSED(_start_lineno); // Only used by EXTRA macro
2039
280k
    int _start_col_offset = p->tokens[_mark]->col_offset;
2040
280k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
2041
280k
    { // NAME ':' expression ['=' annotated_rhs]
2042
280k
        if (p->error_indicator) {
2043
0
            p->level--;
2044
0
            return NULL;
2045
0
        }
2046
280k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2047
280k
        Token * _literal;
2048
280k
        expr_ty a;
2049
280k
        expr_ty b;
2050
280k
        void *c;
2051
280k
        if (
2052
280k
            (a = _PyPegen_name_token(p))  // NAME
2053
86.5k
            &&
2054
86.5k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
2055
2.56k
            &&
2056
2.56k
            (b = expression_rule(p))  // expression
2057
2.37k
            &&
2058
2.37k
            (c = _tmp_10_rule(p), !p->error_indicator)  // ['=' annotated_rhs]
2059
280k
        )
2060
2.31k
        {
2061
2.31k
            D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2062
2.31k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2063
2.31k
            if (_token == NULL) {
2064
0
                p->level--;
2065
0
                return NULL;
2066
0
            }
2067
2.31k
            int _end_lineno = _token->end_lineno;
2068
2.31k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2069
2.31k
            int _end_col_offset = _token->end_col_offset;
2070
2.31k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2071
2.31k
            _res = CHECK_VERSION ( stmt_ty , 6 , "Variable annotation syntax is" , _PyAST_AnnAssign ( CHECK ( expr_ty , _PyPegen_set_expr_context ( p , a , Store ) ) , b , c , 1 , EXTRA ) );
2072
2.31k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
2073
0
                p->error_indicator = 1;
2074
0
                p->level--;
2075
0
                return NULL;
2076
0
            }
2077
2.31k
            goto done;
2078
2.31k
        }
2079
278k
        p->mark = _mark;
2080
278k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2081
278k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2082
278k
    }
2083
0
    { // ('(' single_target ')' | attribute_or_subscript_target) ':' expression ['=' annotated_rhs]
2084
278k
        if (p->error_indicator) {
2085
260
            p->level--;
2086
260
            return NULL;
2087
260
        }
2088
278k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('(' single_target ')' | attribute_or_subscript_target) ':' expression ['=' annotated_rhs]"));
2089
278k
        Token * _literal;
2090
278k
        void *a;
2091
278k
        expr_ty b;
2092
278k
        void *c;
2093
278k
        if (
2094
278k
            (a = _tmp_11_rule(p))  // '(' single_target ')' | attribute_or_subscript_target
2095
3.41k
            &&
2096
3.41k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
2097
1.14k
            &&
2098
1.14k
            (b = expression_rule(p))  // expression
2099
1.07k
            &&
2100
1.07k
            (c = _tmp_10_rule(p), !p->error_indicator)  // ['=' annotated_rhs]
2101
278k
        )
2102
1.01k
        {
2103
1.01k
            D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('(' single_target ')' | attribute_or_subscript_target) ':' expression ['=' annotated_rhs]"));
2104
1.01k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2105
1.01k
            if (_token == NULL) {
2106
0
                p->level--;
2107
0
                return NULL;
2108
0
            }
2109
1.01k
            int _end_lineno = _token->end_lineno;
2110
1.01k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2111
1.01k
            int _end_col_offset = _token->end_col_offset;
2112
1.01k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2113
1.01k
            _res = CHECK_VERSION ( stmt_ty , 6 , "Variable annotations syntax is" , _PyAST_AnnAssign ( a , b , c , 0 , EXTRA ) );
2114
1.01k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
2115
0
                p->error_indicator = 1;
2116
0
                p->level--;
2117
0
                return NULL;
2118
0
            }
2119
1.01k
            goto done;
2120
1.01k
        }
2121
277k
        p->mark = _mark;
2122
277k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2123
277k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('(' single_target ')' | attribute_or_subscript_target) ':' expression ['=' annotated_rhs]"));
2124
277k
    }
2125
0
    { // ((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?
2126
277k
        if (p->error_indicator) {
2127
2.68k
            p->level--;
2128
2.68k
            return NULL;
2129
2.68k
        }
2130
274k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?"));
2131
274k
        asdl_expr_seq* a;
2132
274k
        expr_ty b;
2133
274k
        void *tc;
2134
274k
        if (
2135
274k
            (a = (asdl_expr_seq*)_loop1_12_rule(p))  // ((star_targets '='))+
2136
4.15k
            &&
2137
4.15k
            (b = annotated_rhs_rule(p))  // annotated_rhs
2138
3.85k
            &&
2139
3.85k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22)  // token='='
2140
3.84k
            &&
2141
3.84k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
2142
274k
        )
2143
3.84k
        {
2144
3.84k
            D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?"));
2145
3.84k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2146
3.84k
            if (_token == NULL) {
2147
0
                p->level--;
2148
0
                return NULL;
2149
0
            }
2150
3.84k
            int _end_lineno = _token->end_lineno;
2151
3.84k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2152
3.84k
            int _end_col_offset = _token->end_col_offset;
2153
3.84k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2154
3.84k
            _res = _PyAST_Assign ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
2155
3.84k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
2156
0
                p->error_indicator = 1;
2157
0
                p->level--;
2158
0
                return NULL;
2159
0
            }
2160
3.84k
            goto done;
2161
3.84k
        }
2162
270k
        p->mark = _mark;
2163
270k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2164
270k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?"));
2165
270k
    }
2166
0
    { // single_target augassign ~ annotated_rhs
2167
270k
        if (p->error_indicator) {
2168
236
            p->level--;
2169
236
            return NULL;
2170
236
        }
2171
270k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_target augassign ~ annotated_rhs"));
2172
270k
        int _cut_var = 0;
2173
270k
        expr_ty a;
2174
270k
        AugOperator* b;
2175
270k
        expr_ty c;
2176
270k
        if (
2177
270k
            (a = single_target_rule(p))  // single_target
2178
73.1k
            &&
2179
73.1k
            (b = augassign_rule(p))  // augassign
2180
3.46k
            &&
2181
3.46k
            (_cut_var = 1)
2182
3.46k
            &&
2183
3.46k
            (c = annotated_rhs_rule(p))  // annotated_rhs
2184
270k
        )
2185
3.31k
        {
2186
3.31k
            D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_target augassign ~ annotated_rhs"));
2187
3.31k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2188
3.31k
            if (_token == NULL) {
2189
0
                p->level--;
2190
0
                return NULL;
2191
0
            }
2192
3.31k
            int _end_lineno = _token->end_lineno;
2193
3.31k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2194
3.31k
            int _end_col_offset = _token->end_col_offset;
2195
3.31k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2196
3.31k
            _res = _PyAST_AugAssign ( a , b -> kind , c , EXTRA );
2197
3.31k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
2198
0
                p->error_indicator = 1;
2199
0
                p->level--;
2200
0
                return NULL;
2201
0
            }
2202
3.31k
            goto done;
2203
3.31k
        }
2204
267k
        p->mark = _mark;
2205
267k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2206
267k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_target augassign ~ annotated_rhs"));
2207
267k
        if (_cut_var) {
2208
155
            p->level--;
2209
155
            return NULL;
2210
155
        }
2211
267k
    }
2212
266k
    if (p->call_invalid_rules) { // invalid_assignment
2213
99.6k
        if (p->error_indicator) {
2214
0
            p->level--;
2215
0
            return NULL;
2216
0
        }
2217
99.6k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_assignment"));
2218
99.6k
        void *invalid_assignment_var;
2219
99.6k
        if (
2220
99.6k
            (invalid_assignment_var = invalid_assignment_rule(p))  // invalid_assignment
2221
99.6k
        )
2222
0
        {
2223
0
            D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_assignment"));
2224
0
            _res = invalid_assignment_var;
2225
0
            goto done;
2226
0
        }
2227
99.6k
        p->mark = _mark;
2228
99.6k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2229
99.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_assignment"));
2230
99.6k
    }
2231
266k
    _res = NULL;
2232
277k
  done:
2233
277k
    p->level--;
2234
277k
    return _res;
2235
266k
}
2236
2237
// annotated_rhs: yield_expr | star_expressions
2238
Py_LOCAL_SYMBOL expr_ty
2239
annotated_rhs_rule(Parser *p)
2240
49.8k
{
2241
49.8k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
2242
1
        _Pypegen_stack_overflow(p);
2243
1
    }
2244
49.8k
    if (p->error_indicator) {
2245
1
        p->level--;
2246
1
        return NULL;
2247
1
    }
2248
49.8k
    expr_ty _res = NULL;
2249
49.8k
    int _mark = p->mark;
2250
49.8k
    { // yield_expr
2251
49.8k
        if (p->error_indicator) {
2252
0
            p->level--;
2253
0
            return NULL;
2254
0
        }
2255
49.8k
        D(fprintf(stderr, "%*c> annotated_rhs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
2256
49.8k
        expr_ty yield_expr_var;
2257
49.8k
        if (
2258
49.8k
            (yield_expr_var = yield_expr_rule(p))  // yield_expr
2259
49.8k
        )
2260
130
        {
2261
130
            D(fprintf(stderr, "%*c+ annotated_rhs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
2262
130
            _res = yield_expr_var;
2263
130
            goto done;
2264
130
        }
2265
49.7k
        p->mark = _mark;
2266
49.7k
        D(fprintf(stderr, "%*c%s annotated_rhs[%d-%d]: %s failed!\n", p->level, ' ',
2267
49.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
2268
49.7k
    }
2269
0
    { // star_expressions
2270
49.7k
        if (p->error_indicator) {
2271
160
            p->level--;
2272
160
            return NULL;
2273
160
        }
2274
49.5k
        D(fprintf(stderr, "%*c> annotated_rhs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
2275
49.5k
        expr_ty star_expressions_var;
2276
49.5k
        if (
2277
49.5k
            (star_expressions_var = star_expressions_rule(p))  // star_expressions
2278
49.5k
        )
2279
40.6k
        {
2280
40.6k
            D(fprintf(stderr, "%*c+ annotated_rhs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
2281
40.6k
            _res = star_expressions_var;
2282
40.6k
            goto done;
2283
40.6k
        }
2284
8.88k
        p->mark = _mark;
2285
8.88k
        D(fprintf(stderr, "%*c%s annotated_rhs[%d-%d]: %s failed!\n", p->level, ' ',
2286
8.88k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
2287
8.88k
    }
2288
8.88k
    _res = NULL;
2289
49.6k
  done:
2290
49.6k
    p->level--;
2291
49.6k
    return _res;
2292
8.88k
}
2293
2294
// augassign:
2295
//     | '+='
2296
//     | '-='
2297
//     | '*='
2298
//     | '@='
2299
//     | '/='
2300
//     | '%='
2301
//     | '&='
2302
//     | '|='
2303
//     | '^='
2304
//     | '<<='
2305
//     | '>>='
2306
//     | '**='
2307
//     | '//='
2308
Py_LOCAL_SYMBOL AugOperator*
2309
augassign_rule(Parser *p)
2310
105k
{
2311
105k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
2312
0
        _Pypegen_stack_overflow(p);
2313
0
    }
2314
105k
    if (p->error_indicator) {
2315
0
        p->level--;
2316
0
        return NULL;
2317
0
    }
2318
105k
    AugOperator* _res = NULL;
2319
105k
    int _mark = p->mark;
2320
105k
    { // '+='
2321
105k
        if (p->error_indicator) {
2322
0
            p->level--;
2323
0
            return NULL;
2324
0
        }
2325
105k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+='"));
2326
105k
        Token * _literal;
2327
105k
        if (
2328
105k
            (_literal = _PyPegen_expect_token(p, 36))  // token='+='
2329
105k
        )
2330
246
        {
2331
246
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+='"));
2332
246
            _res = _PyPegen_augoperator ( p , Add );
2333
246
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
2334
0
                p->error_indicator = 1;
2335
0
                p->level--;
2336
0
                return NULL;
2337
0
            }
2338
246
            goto done;
2339
246
        }
2340
105k
        p->mark = _mark;
2341
105k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2342
105k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+='"));
2343
105k
    }
2344
0
    { // '-='
2345
105k
        if (p->error_indicator) {
2346
0
            p->level--;
2347
0
            return NULL;
2348
0
        }
2349
105k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-='"));
2350
105k
        Token * _literal;
2351
105k
        if (
2352
105k
            (_literal = _PyPegen_expect_token(p, 37))  // token='-='
2353
105k
        )
2354
240
        {
2355
240
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-='"));
2356
240
            _res = _PyPegen_augoperator ( p , Sub );
2357
240
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
2358
0
                p->error_indicator = 1;
2359
0
                p->level--;
2360
0
                return NULL;
2361
0
            }
2362
240
            goto done;
2363
240
        }
2364
105k
        p->mark = _mark;
2365
105k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2366
105k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-='"));
2367
105k
    }
2368
0
    { // '*='
2369
105k
        if (p->error_indicator) {
2370
0
            p->level--;
2371
0
            return NULL;
2372
0
        }
2373
105k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*='"));
2374
105k
        Token * _literal;
2375
105k
        if (
2376
105k
            (_literal = _PyPegen_expect_token(p, 38))  // token='*='
2377
105k
        )
2378
172
        {
2379
172
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*='"));
2380
172
            _res = _PyPegen_augoperator ( p , Mult );
2381
172
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
2382
0
                p->error_indicator = 1;
2383
0
                p->level--;
2384
0
                return NULL;
2385
0
            }
2386
172
            goto done;
2387
172
        }
2388
105k
        p->mark = _mark;
2389
105k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2390
105k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*='"));
2391
105k
    }
2392
0
    { // '@='
2393
105k
        if (p->error_indicator) {
2394
0
            p->level--;
2395
0
            return NULL;
2396
0
        }
2397
105k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@='"));
2398
105k
        Token * _literal;
2399
105k
        if (
2400
105k
            (_literal = _PyPegen_expect_token(p, 50))  // token='@='
2401
105k
        )
2402
87
        {
2403
87
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@='"));
2404
87
            _res = CHECK_VERSION ( AugOperator* , 5 , "The '@' operator is" , _PyPegen_augoperator ( p , MatMult ) );
2405
87
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
2406
0
                p->error_indicator = 1;
2407
0
                p->level--;
2408
0
                return NULL;
2409
0
            }
2410
87
            goto done;
2411
87
        }
2412
104k
        p->mark = _mark;
2413
104k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2414
104k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@='"));
2415
104k
    }
2416
0
    { // '/='
2417
104k
        if (p->error_indicator) {
2418
0
            p->level--;
2419
0
            return NULL;
2420
0
        }
2421
104k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/='"));
2422
104k
        Token * _literal;
2423
104k
        if (
2424
104k
            (_literal = _PyPegen_expect_token(p, 39))  // token='/='
2425
104k
        )
2426
371
        {
2427
371
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'/='"));
2428
371
            _res = _PyPegen_augoperator ( p , Div );
2429
371
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
2430
0
                p->error_indicator = 1;
2431
0
                p->level--;
2432
0
                return NULL;
2433
0
            }
2434
371
            goto done;
2435
371
        }
2436
104k
        p->mark = _mark;
2437
104k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2438
104k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'/='"));
2439
104k
    }
2440
0
    { // '%='
2441
104k
        if (p->error_indicator) {
2442
0
            p->level--;
2443
0
            return NULL;
2444
0
        }
2445
104k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'%='"));
2446
104k
        Token * _literal;
2447
104k
        if (
2448
104k
            (_literal = _PyPegen_expect_token(p, 40))  // token='%='
2449
104k
        )
2450
206
        {
2451
206
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'%='"));
2452
206
            _res = _PyPegen_augoperator ( p , Mod );
2453
206
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
2454
0
                p->error_indicator = 1;
2455
0
                p->level--;
2456
0
                return NULL;
2457
0
            }
2458
206
            goto done;
2459
206
        }
2460
104k
        p->mark = _mark;
2461
104k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2462
104k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'%='"));
2463
104k
    }
2464
0
    { // '&='
2465
104k
        if (p->error_indicator) {
2466
0
            p->level--;
2467
0
            return NULL;
2468
0
        }
2469
104k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'&='"));
2470
104k
        Token * _literal;
2471
104k
        if (
2472
104k
            (_literal = _PyPegen_expect_token(p, 41))  // token='&='
2473
104k
        )
2474
234
        {
2475
234
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'&='"));
2476
234
            _res = _PyPegen_augoperator ( p , BitAnd );
2477
234
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
2478
0
                p->error_indicator = 1;
2479
0
                p->level--;
2480
0
                return NULL;
2481
0
            }
2482
234
            goto done;
2483
234
        }
2484
104k
        p->mark = _mark;
2485
104k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2486
104k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'&='"));
2487
104k
    }
2488
0
    { // '|='
2489
104k
        if (p->error_indicator) {
2490
0
            p->level--;
2491
0
            return NULL;
2492
0
        }
2493
104k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|='"));
2494
104k
        Token * _literal;
2495
104k
        if (
2496
104k
            (_literal = _PyPegen_expect_token(p, 42))  // token='|='
2497
104k
        )
2498
61
        {
2499
61
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'|='"));
2500
61
            _res = _PyPegen_augoperator ( p , BitOr );
2501
61
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
2502
0
                p->error_indicator = 1;
2503
0
                p->level--;
2504
0
                return NULL;
2505
0
            }
2506
61
            goto done;
2507
61
        }
2508
104k
        p->mark = _mark;
2509
104k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2510
104k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|='"));
2511
104k
    }
2512
0
    { // '^='
2513
104k
        if (p->error_indicator) {
2514
0
            p->level--;
2515
0
            return NULL;
2516
0
        }
2517
104k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'^='"));
2518
104k
        Token * _literal;
2519
104k
        if (
2520
104k
            (_literal = _PyPegen_expect_token(p, 43))  // token='^='
2521
104k
        )
2522
972
        {
2523
972
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'^='"));
2524
972
            _res = _PyPegen_augoperator ( p , BitXor );
2525
972
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
2526
0
                p->error_indicator = 1;
2527
0
                p->level--;
2528
0
                return NULL;
2529
0
            }
2530
972
            goto done;
2531
972
        }
2532
103k
        p->mark = _mark;
2533
103k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2534
103k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'^='"));
2535
103k
    }
2536
0
    { // '<<='
2537
103k
        if (p->error_indicator) {
2538
0
            p->level--;
2539
0
            return NULL;
2540
0
        }
2541
103k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<<='"));
2542
103k
        Token * _literal;
2543
103k
        if (
2544
103k
            (_literal = _PyPegen_expect_token(p, 44))  // token='<<='
2545
103k
        )
2546
214
        {
2547
214
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<<='"));
2548
214
            _res = _PyPegen_augoperator ( p , LShift );
2549
214
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
2550
0
                p->error_indicator = 1;
2551
0
                p->level--;
2552
0
                return NULL;
2553
0
            }
2554
214
            goto done;
2555
214
        }
2556
102k
        p->mark = _mark;
2557
102k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2558
102k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<<='"));
2559
102k
    }
2560
0
    { // '>>='
2561
102k
        if (p->error_indicator) {
2562
0
            p->level--;
2563
0
            return NULL;
2564
0
        }
2565
102k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>>='"));
2566
102k
        Token * _literal;
2567
102k
        if (
2568
102k
            (_literal = _PyPegen_expect_token(p, 45))  // token='>>='
2569
102k
        )
2570
220
        {
2571
220
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>>='"));
2572
220
            _res = _PyPegen_augoperator ( p , RShift );
2573
220
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
2574
0
                p->error_indicator = 1;
2575
0
                p->level--;
2576
0
                return NULL;
2577
0
            }
2578
220
            goto done;
2579
220
        }
2580
102k
        p->mark = _mark;
2581
102k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2582
102k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>>='"));
2583
102k
    }
2584
0
    { // '**='
2585
102k
        if (p->error_indicator) {
2586
0
            p->level--;
2587
0
            return NULL;
2588
0
        }
2589
102k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**='"));
2590
102k
        Token * _literal;
2591
102k
        if (
2592
102k
            (_literal = _PyPegen_expect_token(p, 46))  // token='**='
2593
102k
        )
2594
328
        {
2595
328
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**='"));
2596
328
            _res = _PyPegen_augoperator ( p , Pow );
2597
328
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
2598
0
                p->error_indicator = 1;
2599
0
                p->level--;
2600
0
                return NULL;
2601
0
            }
2602
328
            goto done;
2603
328
        }
2604
102k
        p->mark = _mark;
2605
102k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2606
102k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**='"));
2607
102k
    }
2608
0
    { // '//='
2609
102k
        if (p->error_indicator) {
2610
0
            p->level--;
2611
0
            return NULL;
2612
0
        }
2613
102k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'//='"));
2614
102k
        Token * _literal;
2615
102k
        if (
2616
102k
            (_literal = _PyPegen_expect_token(p, 48))  // token='//='
2617
102k
        )
2618
208
        {
2619
208
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'//='"));
2620
208
            _res = _PyPegen_augoperator ( p , FloorDiv );
2621
208
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
2622
0
                p->error_indicator = 1;
2623
0
                p->level--;
2624
0
                return NULL;
2625
0
            }
2626
208
            goto done;
2627
208
        }
2628
102k
        p->mark = _mark;
2629
102k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2630
102k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'//='"));
2631
102k
    }
2632
102k
    _res = NULL;
2633
105k
  done:
2634
105k
    p->level--;
2635
105k
    return _res;
2636
102k
}
2637
2638
// return_stmt: 'return' star_expressions?
2639
static stmt_ty
2640
return_stmt_rule(Parser *p)
2641
2.75k
{
2642
2.75k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
2643
0
        _Pypegen_stack_overflow(p);
2644
0
    }
2645
2.75k
    if (p->error_indicator) {
2646
0
        p->level--;
2647
0
        return NULL;
2648
0
    }
2649
2.75k
    stmt_ty _res = NULL;
2650
2.75k
    int _mark = p->mark;
2651
2.75k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2652
0
        p->error_indicator = 1;
2653
0
        p->level--;
2654
0
        return NULL;
2655
0
    }
2656
2.75k
    int _start_lineno = p->tokens[_mark]->lineno;
2657
2.75k
    UNUSED(_start_lineno); // Only used by EXTRA macro
2658
2.75k
    int _start_col_offset = p->tokens[_mark]->col_offset;
2659
2.75k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
2660
2.75k
    { // 'return' star_expressions?
2661
2.75k
        if (p->error_indicator) {
2662
0
            p->level--;
2663
0
            return NULL;
2664
0
        }
2665
2.75k
        D(fprintf(stderr, "%*c> return_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'return' star_expressions?"));
2666
2.75k
        Token * _keyword;
2667
2.75k
        void *a;
2668
2.75k
        if (
2669
2.75k
            (_keyword = _PyPegen_expect_token(p, 502))  // token='return'
2670
2.75k
            &&
2671
2.75k
            (a = star_expressions_rule(p), !p->error_indicator)  // star_expressions?
2672
2.75k
        )
2673
2.69k
        {
2674
2.69k
            D(fprintf(stderr, "%*c+ return_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'return' star_expressions?"));
2675
2.69k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2676
2.69k
            if (_token == NULL) {
2677
0
                p->level--;
2678
0
                return NULL;
2679
0
            }
2680
2.69k
            int _end_lineno = _token->end_lineno;
2681
2.69k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2682
2.69k
            int _end_col_offset = _token->end_col_offset;
2683
2.69k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2684
2.69k
            _res = _PyAST_Return ( a , EXTRA );
2685
2.69k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
2686
0
                p->error_indicator = 1;
2687
0
                p->level--;
2688
0
                return NULL;
2689
0
            }
2690
2.69k
            goto done;
2691
2.69k
        }
2692
66
        p->mark = _mark;
2693
66
        D(fprintf(stderr, "%*c%s return_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2694
66
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'return' star_expressions?"));
2695
66
    }
2696
66
    _res = NULL;
2697
2.75k
  done:
2698
2.75k
    p->level--;
2699
2.75k
    return _res;
2700
66
}
2701
2702
// raise_stmt:
2703
//     | 'raise' expression 'from' expression
2704
//     | invalid_raise_stmt
2705
//     | 'raise' expression
2706
//     | 'raise'
2707
static stmt_ty
2708
raise_stmt_rule(Parser *p)
2709
2.25k
{
2710
2.25k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
2711
0
        _Pypegen_stack_overflow(p);
2712
0
    }
2713
2.25k
    if (p->error_indicator) {
2714
0
        p->level--;
2715
0
        return NULL;
2716
0
    }
2717
2.25k
    stmt_ty _res = NULL;
2718
2.25k
    int _mark = p->mark;
2719
2.25k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2720
0
        p->error_indicator = 1;
2721
0
        p->level--;
2722
0
        return NULL;
2723
0
    }
2724
2.25k
    int _start_lineno = p->tokens[_mark]->lineno;
2725
2.25k
    UNUSED(_start_lineno); // Only used by EXTRA macro
2726
2.25k
    int _start_col_offset = p->tokens[_mark]->col_offset;
2727
2.25k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
2728
2.25k
    { // 'raise' expression 'from' expression
2729
2.25k
        if (p->error_indicator) {
2730
0
            p->level--;
2731
0
            return NULL;
2732
0
        }
2733
2.25k
        D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' expression 'from' expression"));
2734
2.25k
        Token * _keyword;
2735
2.25k
        Token * _keyword_1;
2736
2.25k
        expr_ty a;
2737
2.25k
        expr_ty b;
2738
2.25k
        if (
2739
2.25k
            (_keyword = _PyPegen_expect_token(p, 503))  // token='raise'
2740
2.25k
            &&
2741
2.25k
            (a = expression_rule(p))  // expression
2742
1.42k
            &&
2743
1.42k
            (_keyword_1 = _PyPegen_expect_token(p, 501))  // token='from'
2744
386
            &&
2745
386
            (b = expression_rule(p))  // expression
2746
2.25k
        )
2747
383
        {
2748
383
            D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' expression 'from' expression"));
2749
383
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2750
383
            if (_token == NULL) {
2751
0
                p->level--;
2752
0
                return NULL;
2753
0
            }
2754
383
            int _end_lineno = _token->end_lineno;
2755
383
            UNUSED(_end_lineno); // Only used by EXTRA macro
2756
383
            int _end_col_offset = _token->end_col_offset;
2757
383
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2758
383
            _res = _PyAST_Raise ( a , b , EXTRA );
2759
383
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
2760
0
                p->error_indicator = 1;
2761
0
                p->level--;
2762
0
                return NULL;
2763
0
            }
2764
383
            goto done;
2765
383
        }
2766
1.86k
        p->mark = _mark;
2767
1.86k
        D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2768
1.86k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' expression 'from' expression"));
2769
1.86k
    }
2770
1.86k
    if (p->call_invalid_rules) { // invalid_raise_stmt
2771
581
        if (p->error_indicator) {
2772
68
            p->level--;
2773
68
            return NULL;
2774
68
        }
2775
513
        D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_raise_stmt"));
2776
513
        void *invalid_raise_stmt_var;
2777
513
        if (
2778
513
            (invalid_raise_stmt_var = invalid_raise_stmt_rule(p))  // invalid_raise_stmt
2779
513
        )
2780
0
        {
2781
0
            D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_raise_stmt"));
2782
0
            _res = invalid_raise_stmt_var;
2783
0
            goto done;
2784
0
        }
2785
513
        p->mark = _mark;
2786
513
        D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2787
513
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_raise_stmt"));
2788
513
    }
2789
1.80k
    { // 'raise' expression
2790
1.80k
        if (p->error_indicator) {
2791
4
            p->level--;
2792
4
            return NULL;
2793
4
        }
2794
1.79k
        D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' expression"));
2795
1.79k
        Token * _keyword;
2796
1.79k
        expr_ty a;
2797
1.79k
        if (
2798
1.79k
            (_keyword = _PyPegen_expect_token(p, 503))  // token='raise'
2799
1.79k
            &&
2800
1.79k
            (a = expression_rule(p))  // expression
2801
1.79k
        )
2802
1.03k
        {
2803
1.03k
            D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' expression"));
2804
1.03k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2805
1.03k
            if (_token == NULL) {
2806
0
                p->level--;
2807
0
                return NULL;
2808
0
            }
2809
1.03k
            int _end_lineno = _token->end_lineno;
2810
1.03k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2811
1.03k
            int _end_col_offset = _token->end_col_offset;
2812
1.03k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2813
1.03k
            _res = _PyAST_Raise ( a , NULL , EXTRA );
2814
1.03k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
2815
0
                p->error_indicator = 1;
2816
0
                p->level--;
2817
0
                return NULL;
2818
0
            }
2819
1.03k
            goto done;
2820
1.03k
        }
2821
761
        p->mark = _mark;
2822
761
        D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2823
761
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' expression"));
2824
761
    }
2825
0
    { // 'raise'
2826
761
        if (p->error_indicator) {
2827
0
            p->level--;
2828
0
            return NULL;
2829
0
        }
2830
761
        D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise'"));
2831
761
        Token * _keyword;
2832
761
        if (
2833
761
            (_keyword = _PyPegen_expect_token(p, 503))  // token='raise'
2834
761
        )
2835
761
        {
2836
761
            D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise'"));
2837
761
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2838
761
            if (_token == NULL) {
2839
0
                p->level--;
2840
0
                return NULL;
2841
0
            }
2842
761
            int _end_lineno = _token->end_lineno;
2843
761
            UNUSED(_end_lineno); // Only used by EXTRA macro
2844
761
            int _end_col_offset = _token->end_col_offset;
2845
761
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2846
761
            _res = _PyAST_Raise ( NULL , NULL , EXTRA );
2847
761
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
2848
0
                p->error_indicator = 1;
2849
0
                p->level--;
2850
0
                return NULL;
2851
0
            }
2852
761
            goto done;
2853
761
        }
2854
0
        p->mark = _mark;
2855
0
        D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2856
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise'"));
2857
0
    }
2858
0
    _res = NULL;
2859
2.18k
  done:
2860
2.18k
    p->level--;
2861
2.18k
    return _res;
2862
0
}
2863
2864
// pass_stmt: 'pass'
2865
Py_LOCAL_SYMBOL stmt_ty
2866
pass_stmt_rule(Parser *p)
2867
337k
{
2868
337k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
2869
0
        _Pypegen_stack_overflow(p);
2870
0
    }
2871
337k
    if (p->error_indicator) {
2872
0
        p->level--;
2873
0
        return NULL;
2874
0
    }
2875
337k
    stmt_ty _res = NULL;
2876
337k
    int _mark = p->mark;
2877
337k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2878
0
        p->error_indicator = 1;
2879
0
        p->level--;
2880
0
        return NULL;
2881
0
    }
2882
337k
    int _start_lineno = p->tokens[_mark]->lineno;
2883
337k
    UNUSED(_start_lineno); // Only used by EXTRA macro
2884
337k
    int _start_col_offset = p->tokens[_mark]->col_offset;
2885
337k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
2886
337k
    { // 'pass'
2887
337k
        if (p->error_indicator) {
2888
0
            p->level--;
2889
0
            return NULL;
2890
0
        }
2891
337k
        D(fprintf(stderr, "%*c> pass_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'pass'"));
2892
337k
        Token * _keyword;
2893
337k
        if (
2894
337k
            (_keyword = _PyPegen_expect_token(p, 504))  // token='pass'
2895
337k
        )
2896
1.44k
        {
2897
1.44k
            D(fprintf(stderr, "%*c+ pass_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'pass'"));
2898
1.44k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2899
1.44k
            if (_token == NULL) {
2900
0
                p->level--;
2901
0
                return NULL;
2902
0
            }
2903
1.44k
            int _end_lineno = _token->end_lineno;
2904
1.44k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2905
1.44k
            int _end_col_offset = _token->end_col_offset;
2906
1.44k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2907
1.44k
            _res = _PyAST_Pass ( EXTRA );
2908
1.44k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
2909
0
                p->error_indicator = 1;
2910
0
                p->level--;
2911
0
                return NULL;
2912
0
            }
2913
1.44k
            goto done;
2914
1.44k
        }
2915
336k
        p->mark = _mark;
2916
336k
        D(fprintf(stderr, "%*c%s pass_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2917
336k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'pass'"));
2918
336k
    }
2919
336k
    _res = NULL;
2920
337k
  done:
2921
337k
    p->level--;
2922
337k
    return _res;
2923
336k
}
2924
2925
// break_stmt: 'break'
2926
Py_LOCAL_SYMBOL stmt_ty
2927
break_stmt_rule(Parser *p)
2928
337k
{
2929
337k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
2930
0
        _Pypegen_stack_overflow(p);
2931
0
    }
2932
337k
    if (p->error_indicator) {
2933
0
        p->level--;
2934
0
        return NULL;
2935
0
    }
2936
337k
    stmt_ty _res = NULL;
2937
337k
    int _mark = p->mark;
2938
337k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2939
0
        p->error_indicator = 1;
2940
0
        p->level--;
2941
0
        return NULL;
2942
0
    }
2943
337k
    int _start_lineno = p->tokens[_mark]->lineno;
2944
337k
    UNUSED(_start_lineno); // Only used by EXTRA macro
2945
337k
    int _start_col_offset = p->tokens[_mark]->col_offset;
2946
337k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
2947
337k
    { // 'break'
2948
337k
        if (p->error_indicator) {
2949
0
            p->level--;
2950
0
            return NULL;
2951
0
        }
2952
337k
        D(fprintf(stderr, "%*c> break_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'break'"));
2953
337k
        Token * _keyword;
2954
337k
        if (
2955
337k
            (_keyword = _PyPegen_expect_token(p, 508))  // token='break'
2956
337k
        )
2957
1.47k
        {
2958
1.47k
            D(fprintf(stderr, "%*c+ break_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'break'"));
2959
1.47k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2960
1.47k
            if (_token == NULL) {
2961
0
                p->level--;
2962
0
                return NULL;
2963
0
            }
2964
1.47k
            int _end_lineno = _token->end_lineno;
2965
1.47k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2966
1.47k
            int _end_col_offset = _token->end_col_offset;
2967
1.47k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2968
1.47k
            _res = _PyAST_Break ( EXTRA );
2969
1.47k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
2970
0
                p->error_indicator = 1;
2971
0
                p->level--;
2972
0
                return NULL;
2973
0
            }
2974
1.47k
            goto done;
2975
1.47k
        }
2976
336k
        p->mark = _mark;
2977
336k
        D(fprintf(stderr, "%*c%s break_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2978
336k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'break'"));
2979
336k
    }
2980
336k
    _res = NULL;
2981
337k
  done:
2982
337k
    p->level--;
2983
337k
    return _res;
2984
336k
}
2985
2986
// continue_stmt: 'continue'
2987
Py_LOCAL_SYMBOL stmt_ty
2988
continue_stmt_rule(Parser *p)
2989
336k
{
2990
336k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
2991
0
        _Pypegen_stack_overflow(p);
2992
0
    }
2993
336k
    if (p->error_indicator) {
2994
0
        p->level--;
2995
0
        return NULL;
2996
0
    }
2997
336k
    stmt_ty _res = NULL;
2998
336k
    int _mark = p->mark;
2999
336k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3000
0
        p->error_indicator = 1;
3001
0
        p->level--;
3002
0
        return NULL;
3003
0
    }
3004
336k
    int _start_lineno = p->tokens[_mark]->lineno;
3005
336k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3006
336k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3007
336k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3008
336k
    { // 'continue'
3009
336k
        if (p->error_indicator) {
3010
0
            p->level--;
3011
0
            return NULL;
3012
0
        }
3013
336k
        D(fprintf(stderr, "%*c> continue_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'continue'"));
3014
336k
        Token * _keyword;
3015
336k
        if (
3016
336k
            (_keyword = _PyPegen_expect_token(p, 509))  // token='continue'
3017
336k
        )
3018
3.74k
        {
3019
3.74k
            D(fprintf(stderr, "%*c+ continue_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'continue'"));
3020
3.74k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3021
3.74k
            if (_token == NULL) {
3022
0
                p->level--;
3023
0
                return NULL;
3024
0
            }
3025
3.74k
            int _end_lineno = _token->end_lineno;
3026
3.74k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3027
3.74k
            int _end_col_offset = _token->end_col_offset;
3028
3.74k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3029
3.74k
            _res = _PyAST_Continue ( EXTRA );
3030
3.74k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
3031
0
                p->error_indicator = 1;
3032
0
                p->level--;
3033
0
                return NULL;
3034
0
            }
3035
3.74k
            goto done;
3036
3.74k
        }
3037
333k
        p->mark = _mark;
3038
333k
        D(fprintf(stderr, "%*c%s continue_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3039
333k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'continue'"));
3040
333k
    }
3041
333k
    _res = NULL;
3042
336k
  done:
3043
336k
    p->level--;
3044
336k
    return _res;
3045
333k
}
3046
3047
// global_stmt: 'global' ','.NAME+
3048
static stmt_ty
3049
global_stmt_rule(Parser *p)
3050
764
{
3051
764
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
3052
0
        _Pypegen_stack_overflow(p);
3053
0
    }
3054
764
    if (p->error_indicator) {
3055
0
        p->level--;
3056
0
        return NULL;
3057
0
    }
3058
764
    stmt_ty _res = NULL;
3059
764
    int _mark = p->mark;
3060
764
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3061
0
        p->error_indicator = 1;
3062
0
        p->level--;
3063
0
        return NULL;
3064
0
    }
3065
764
    int _start_lineno = p->tokens[_mark]->lineno;
3066
764
    UNUSED(_start_lineno); // Only used by EXTRA macro
3067
764
    int _start_col_offset = p->tokens[_mark]->col_offset;
3068
764
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3069
764
    { // 'global' ','.NAME+
3070
764
        if (p->error_indicator) {
3071
0
            p->level--;
3072
0
            return NULL;
3073
0
        }
3074
764
        D(fprintf(stderr, "%*c> global_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'global' ','.NAME+"));
3075
764
        Token * _keyword;
3076
764
        asdl_expr_seq* a;
3077
764
        if (
3078
764
            (_keyword = _PyPegen_expect_token(p, 510))  // token='global'
3079
764
            &&
3080
764
            (a = (asdl_expr_seq*)_gather_14_rule(p))  // ','.NAME+
3081
764
        )
3082
757
        {
3083
757
            D(fprintf(stderr, "%*c+ global_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'global' ','.NAME+"));
3084
757
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3085
757
            if (_token == NULL) {
3086
0
                p->level--;
3087
0
                return NULL;
3088
0
            }
3089
757
            int _end_lineno = _token->end_lineno;
3090
757
            UNUSED(_end_lineno); // Only used by EXTRA macro
3091
757
            int _end_col_offset = _token->end_col_offset;
3092
757
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3093
757
            _res = _PyAST_Global ( CHECK ( asdl_identifier_seq* , _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
3094
757
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
3095
1
                p->error_indicator = 1;
3096
1
                p->level--;
3097
1
                return NULL;
3098
1
            }
3099
756
            goto done;
3100
757
        }
3101
7
        p->mark = _mark;
3102
7
        D(fprintf(stderr, "%*c%s global_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3103
7
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'global' ','.NAME+"));
3104
7
    }
3105
7
    _res = NULL;
3106
763
  done:
3107
763
    p->level--;
3108
763
    return _res;
3109
7
}
3110
3111
// nonlocal_stmt: 'nonlocal' ','.NAME+
3112
static stmt_ty
3113
nonlocal_stmt_rule(Parser *p)
3114
385
{
3115
385
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
3116
0
        _Pypegen_stack_overflow(p);
3117
0
    }
3118
385
    if (p->error_indicator) {
3119
0
        p->level--;
3120
0
        return NULL;
3121
0
    }
3122
385
    stmt_ty _res = NULL;
3123
385
    int _mark = p->mark;
3124
385
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3125
0
        p->error_indicator = 1;
3126
0
        p->level--;
3127
0
        return NULL;
3128
0
    }
3129
385
    int _start_lineno = p->tokens[_mark]->lineno;
3130
385
    UNUSED(_start_lineno); // Only used by EXTRA macro
3131
385
    int _start_col_offset = p->tokens[_mark]->col_offset;
3132
385
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3133
385
    { // 'nonlocal' ','.NAME+
3134
385
        if (p->error_indicator) {
3135
0
            p->level--;
3136
0
            return NULL;
3137
0
        }
3138
385
        D(fprintf(stderr, "%*c> nonlocal_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'nonlocal' ','.NAME+"));
3139
385
        Token * _keyword;
3140
385
        asdl_expr_seq* a;
3141
385
        if (
3142
385
            (_keyword = _PyPegen_expect_token(p, 511))  // token='nonlocal'
3143
385
            &&
3144
385
            (a = (asdl_expr_seq*)_gather_14_rule(p))  // ','.NAME+
3145
385
        )
3146
380
        {
3147
380
            D(fprintf(stderr, "%*c+ nonlocal_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'nonlocal' ','.NAME+"));
3148
380
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3149
380
            if (_token == NULL) {
3150
0
                p->level--;
3151
0
                return NULL;
3152
0
            }
3153
380
            int _end_lineno = _token->end_lineno;
3154
380
            UNUSED(_end_lineno); // Only used by EXTRA macro
3155
380
            int _end_col_offset = _token->end_col_offset;
3156
380
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3157
380
            _res = _PyAST_Nonlocal ( CHECK ( asdl_identifier_seq* , _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
3158
380
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
3159
1
                p->error_indicator = 1;
3160
1
                p->level--;
3161
1
                return NULL;
3162
1
            }
3163
379
            goto done;
3164
380
        }
3165
5
        p->mark = _mark;
3166
5
        D(fprintf(stderr, "%*c%s nonlocal_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3167
5
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'nonlocal' ','.NAME+"));
3168
5
    }
3169
5
    _res = NULL;
3170
384
  done:
3171
384
    p->level--;
3172
384
    return _res;
3173
5
}
3174
3175
// del_stmt: 'del' del_targets &(';' | NEWLINE) | invalid_del_stmt
3176
static stmt_ty
3177
del_stmt_rule(Parser *p)
3178
1.00k
{
3179
1.00k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
3180
0
        _Pypegen_stack_overflow(p);
3181
0
    }
3182
1.00k
    if (p->error_indicator) {
3183
0
        p->level--;
3184
0
        return NULL;
3185
0
    }
3186
1.00k
    stmt_ty _res = NULL;
3187
1.00k
    int _mark = p->mark;
3188
1.00k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3189
0
        p->error_indicator = 1;
3190
0
        p->level--;
3191
0
        return NULL;
3192
0
    }
3193
1.00k
    int _start_lineno = p->tokens[_mark]->lineno;
3194
1.00k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3195
1.00k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3196
1.00k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3197
1.00k
    { // 'del' del_targets &(';' | NEWLINE)
3198
1.00k
        if (p->error_indicator) {
3199
0
            p->level--;
3200
0
            return NULL;
3201
0
        }
3202
1.00k
        D(fprintf(stderr, "%*c> del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3203
1.00k
        Token * _keyword;
3204
1.00k
        asdl_expr_seq* a;
3205
1.00k
        if (
3206
1.00k
            (_keyword = _PyPegen_expect_token(p, 505))  // token='del'
3207
1.00k
            &&
3208
1.00k
            (a = del_targets_rule(p))  // del_targets
3209
767
            &&
3210
767
            _PyPegen_lookahead(1, _tmp_15_rule, p)
3211
1.00k
        )
3212
619
        {
3213
619
            D(fprintf(stderr, "%*c+ del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3214
619
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3215
619
            if (_token == NULL) {
3216
0
                p->level--;
3217
0
                return NULL;
3218
0
            }
3219
619
            int _end_lineno = _token->end_lineno;
3220
619
            UNUSED(_end_lineno); // Only used by EXTRA macro
3221
619
            int _end_col_offset = _token->end_col_offset;
3222
619
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3223
619
            _res = _PyAST_Delete ( a , EXTRA );
3224
619
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
3225
0
                p->error_indicator = 1;
3226
0
                p->level--;
3227
0
                return NULL;
3228
0
            }
3229
619
            goto done;
3230
619
        }
3231
390
        p->mark = _mark;
3232
390
        D(fprintf(stderr, "%*c%s del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3233
390
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3234
390
    }
3235
390
    if (p->call_invalid_rules) { // invalid_del_stmt
3236
325
        if (p->error_indicator) {
3237
127
            p->level--;
3238
127
            return NULL;
3239
127
        }
3240
198
        D(fprintf(stderr, "%*c> del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_del_stmt"));
3241
198
        void *invalid_del_stmt_var;
3242
198
        if (
3243
198
            (invalid_del_stmt_var = invalid_del_stmt_rule(p))  // invalid_del_stmt
3244
198
        )
3245
0
        {
3246
0
            D(fprintf(stderr, "%*c+ del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_del_stmt"));
3247
0
            _res = invalid_del_stmt_var;
3248
0
            goto done;
3249
0
        }
3250
198
        p->mark = _mark;
3251
198
        D(fprintf(stderr, "%*c%s del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3252
198
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_del_stmt"));
3253
198
    }
3254
263
    _res = NULL;
3255
882
  done:
3256
882
    p->level--;
3257
882
    return _res;
3258
263
}
3259
3260
// yield_stmt: yield_expr
3261
static stmt_ty
3262
yield_stmt_rule(Parser *p)
3263
1.18k
{
3264
1.18k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
3265
0
        _Pypegen_stack_overflow(p);
3266
0
    }
3267
1.18k
    if (p->error_indicator) {
3268
0
        p->level--;
3269
0
        return NULL;
3270
0
    }
3271
1.18k
    stmt_ty _res = NULL;
3272
1.18k
    int _mark = p->mark;
3273
1.18k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3274
0
        p->error_indicator = 1;
3275
0
        p->level--;
3276
0
        return NULL;
3277
0
    }
3278
1.18k
    int _start_lineno = p->tokens[_mark]->lineno;
3279
1.18k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3280
1.18k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3281
1.18k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3282
1.18k
    { // yield_expr
3283
1.18k
        if (p->error_indicator) {
3284
0
            p->level--;
3285
0
            return NULL;
3286
0
        }
3287
1.18k
        D(fprintf(stderr, "%*c> yield_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
3288
1.18k
        expr_ty y;
3289
1.18k
        if (
3290
1.18k
            (y = yield_expr_rule(p))  // yield_expr
3291
1.18k
        )
3292
1.17k
        {
3293
1.17k
            D(fprintf(stderr, "%*c+ yield_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
3294
1.17k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3295
1.17k
            if (_token == NULL) {
3296
0
                p->level--;
3297
0
                return NULL;
3298
0
            }
3299
1.17k
            int _end_lineno = _token->end_lineno;
3300
1.17k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3301
1.17k
            int _end_col_offset = _token->end_col_offset;
3302
1.17k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3303
1.17k
            _res = _PyAST_Expr ( y , EXTRA );
3304
1.17k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
3305
0
                p->error_indicator = 1;
3306
0
                p->level--;
3307
0
                return NULL;
3308
0
            }
3309
1.17k
            goto done;
3310
1.17k
        }
3311
7
        p->mark = _mark;
3312
7
        D(fprintf(stderr, "%*c%s yield_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3313
7
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
3314
7
    }
3315
7
    _res = NULL;
3316
1.18k
  done:
3317
1.18k
    p->level--;
3318
1.18k
    return _res;
3319
7
}
3320
3321
// assert_stmt: invalid_assert_stmt | 'assert' expression [',' expression]
3322
static stmt_ty
3323
assert_stmt_rule(Parser *p)
3324
1.49k
{
3325
1.49k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
3326
0
        _Pypegen_stack_overflow(p);
3327
0
    }
3328
1.49k
    if (p->error_indicator) {
3329
0
        p->level--;
3330
0
        return NULL;
3331
0
    }
3332
1.49k
    stmt_ty _res = NULL;
3333
1.49k
    int _mark = p->mark;
3334
1.49k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3335
0
        p->error_indicator = 1;
3336
0
        p->level--;
3337
0
        return NULL;
3338
0
    }
3339
1.49k
    int _start_lineno = p->tokens[_mark]->lineno;
3340
1.49k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3341
1.49k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3342
1.49k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3343
1.49k
    if (p->call_invalid_rules) { // invalid_assert_stmt
3344
812
        if (p->error_indicator) {
3345
0
            p->level--;
3346
0
            return NULL;
3347
0
        }
3348
812
        D(fprintf(stderr, "%*c> assert_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_assert_stmt"));
3349
812
        void *invalid_assert_stmt_var;
3350
812
        if (
3351
812
            (invalid_assert_stmt_var = invalid_assert_stmt_rule(p))  // invalid_assert_stmt
3352
812
        )
3353
0
        {
3354
0
            D(fprintf(stderr, "%*c+ assert_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_assert_stmt"));
3355
0
            _res = invalid_assert_stmt_var;
3356
0
            goto done;
3357
0
        }
3358
812
        p->mark = _mark;
3359
812
        D(fprintf(stderr, "%*c%s assert_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3360
812
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_assert_stmt"));
3361
812
    }
3362
1.49k
    { // 'assert' expression [',' expression]
3363
1.49k
        if (p->error_indicator) {
3364
315
            p->level--;
3365
315
            return NULL;
3366
315
        }
3367
1.17k
        D(fprintf(stderr, "%*c> assert_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'assert' expression [',' expression]"));
3368
1.17k
        Token * _keyword;
3369
1.17k
        expr_ty a;
3370
1.17k
        void *b;
3371
1.17k
        if (
3372
1.17k
            (_keyword = _PyPegen_expect_token(p, 507))  // token='assert'
3373
1.17k
            &&
3374
1.17k
            (a = expression_rule(p))  // expression
3375
1.13k
            &&
3376
1.13k
            (b = _tmp_16_rule(p), !p->error_indicator)  // [',' expression]
3377
1.17k
        )
3378
1.13k
        {
3379
1.13k
            D(fprintf(stderr, "%*c+ assert_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'assert' expression [',' expression]"));
3380
1.13k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3381
1.13k
            if (_token == NULL) {
3382
0
                p->level--;
3383
0
                return NULL;
3384
0
            }
3385
1.13k
            int _end_lineno = _token->end_lineno;
3386
1.13k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3387
1.13k
            int _end_col_offset = _token->end_col_offset;
3388
1.13k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3389
1.13k
            _res = _PyAST_Assert ( a , b , EXTRA );
3390
1.13k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
3391
0
                p->error_indicator = 1;
3392
0
                p->level--;
3393
0
                return NULL;
3394
0
            }
3395
1.13k
            goto done;
3396
1.13k
        }
3397
47
        p->mark = _mark;
3398
47
        D(fprintf(stderr, "%*c%s assert_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3399
47
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'assert' expression [',' expression]"));
3400
47
    }
3401
47
    _res = NULL;
3402
1.17k
  done:
3403
1.17k
    p->level--;
3404
1.17k
    return _res;
3405
47
}
3406
3407
// import_stmt: invalid_import | import_name | import_from
3408
static stmt_ty
3409
import_stmt_rule(Parser *p)
3410
9.45k
{
3411
9.45k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
3412
0
        _Pypegen_stack_overflow(p);
3413
0
    }
3414
9.45k
    if (p->error_indicator) {
3415
0
        p->level--;
3416
0
        return NULL;
3417
0
    }
3418
9.45k
    stmt_ty _res = NULL;
3419
9.45k
    if (_PyPegen_is_memoized(p, import_stmt_type, &_res)) {
3420
0
        p->level--;
3421
0
        return _res;
3422
0
    }
3423
9.45k
    int _mark = p->mark;
3424
9.45k
    if (p->call_invalid_rules) { // invalid_import
3425
3.50k
        if (p->error_indicator) {
3426
0
            p->level--;
3427
0
            return NULL;
3428
0
        }
3429
3.50k
        D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_import"));
3430
3.50k
        void *invalid_import_var;
3431
3.50k
        if (
3432
3.50k
            (invalid_import_var = invalid_import_rule(p))  // invalid_import
3433
3.50k
        )
3434
0
        {
3435
0
            D(fprintf(stderr, "%*c+ import_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_import"));
3436
0
            _res = invalid_import_var;
3437
0
            goto done;
3438
0
        }
3439
3.50k
        p->mark = _mark;
3440
3.50k
        D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3441
3.50k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_import"));
3442
3.50k
    }
3443
9.45k
    { // import_name
3444
9.45k
        if (p->error_indicator) {
3445
10
            p->level--;
3446
10
            return NULL;
3447
10
        }
3448
9.44k
        D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_name"));
3449
9.44k
        stmt_ty import_name_var;
3450
9.44k
        if (
3451
9.44k
            (import_name_var = import_name_rule(p))  // import_name
3452
9.44k
        )
3453
2.53k
        {
3454
2.53k
            D(fprintf(stderr, "%*c+ import_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_name"));
3455
2.53k
            _res = import_name_var;
3456
2.53k
            goto done;
3457
2.53k
        }
3458
6.90k
        p->mark = _mark;
3459
6.90k
        D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3460
6.90k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_name"));
3461
6.90k
    }
3462
0
    { // import_from
3463
6.90k
        if (p->error_indicator) {
3464
173
            p->level--;
3465
173
            return NULL;
3466
173
        }
3467
6.73k
        D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from"));
3468
6.73k
        stmt_ty import_from_var;
3469
6.73k
        if (
3470
6.73k
            (import_from_var = import_from_rule(p))  // import_from
3471
6.73k
        )
3472
5.70k
        {
3473
5.70k
            D(fprintf(stderr, "%*c+ import_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from"));
3474
5.70k
            _res = import_from_var;
3475
5.70k
            goto done;
3476
5.70k
        }
3477
1.02k
        p->mark = _mark;
3478
1.02k
        D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3479
1.02k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from"));
3480
1.02k
    }
3481
1.02k
    _res = NULL;
3482
9.26k
  done:
3483
9.26k
    _PyPegen_insert_memo(p, _mark, import_stmt_type, _res);
3484
9.26k
    p->level--;
3485
9.26k
    return _res;
3486
1.02k
}
3487
3488
// import_name: "lazy" 'import' dotted_as_names | 'import' dotted_as_names
3489
static stmt_ty
3490
import_name_rule(Parser *p)
3491
9.44k
{
3492
9.44k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
3493
0
        _Pypegen_stack_overflow(p);
3494
0
    }
3495
9.44k
    if (p->error_indicator) {
3496
0
        p->level--;
3497
0
        return NULL;
3498
0
    }
3499
9.44k
    stmt_ty _res = NULL;
3500
9.44k
    int _mark = p->mark;
3501
9.44k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3502
0
        p->error_indicator = 1;
3503
0
        p->level--;
3504
0
        return NULL;
3505
0
    }
3506
9.44k
    int _start_lineno = p->tokens[_mark]->lineno;
3507
9.44k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3508
9.44k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3509
9.44k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3510
9.44k
    { // "lazy" 'import' dotted_as_names
3511
9.44k
        if (p->error_indicator) {
3512
0
            p->level--;
3513
0
            return NULL;
3514
0
        }
3515
9.44k
        D(fprintf(stderr, "%*c> import_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"lazy\" 'import' dotted_as_names"));
3516
9.44k
        expr_ty _keyword;
3517
9.44k
        Token * _keyword_1;
3518
9.44k
        asdl_alias_seq* a;
3519
9.44k
        if (
3520
9.44k
            (_keyword = _PyPegen_expect_soft_keyword(p, "lazy"))  // soft_keyword='"lazy"'
3521
605
            &&
3522
605
            (_keyword_1 = _PyPegen_expect_token(p, 500))  // token='import'
3523
15
            &&
3524
15
            (a = dotted_as_names_rule(p))  // dotted_as_names
3525
9.44k
        )
3526
11
        {
3527
11
            D(fprintf(stderr, "%*c+ import_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"lazy\" 'import' dotted_as_names"));
3528
11
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3529
11
            if (_token == NULL) {
3530
0
                p->level--;
3531
0
                return NULL;
3532
0
            }
3533
11
            int _end_lineno = _token->end_lineno;
3534
11
            UNUSED(_end_lineno); // Only used by EXTRA macro
3535
11
            int _end_col_offset = _token->end_col_offset;
3536
11
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3537
11
            _res = CHECK_VERSION ( stmt_ty , 15 , "Lazy imports are" , _PyAST_Import ( a , 1 , EXTRA ) );
3538
11
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
3539
0
                p->error_indicator = 1;
3540
0
                p->level--;
3541
0
                return NULL;
3542
0
            }
3543
11
            goto done;
3544
11
        }
3545
9.43k
        p->mark = _mark;
3546
9.43k
        D(fprintf(stderr, "%*c%s import_name[%d-%d]: %s failed!\n", p->level, ' ',
3547
9.43k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"lazy\" 'import' dotted_as_names"));
3548
9.43k
    }
3549
0
    { // 'import' dotted_as_names
3550
9.43k
        if (p->error_indicator) {
3551
2
            p->level--;
3552
2
            return NULL;
3553
2
        }
3554
9.42k
        D(fprintf(stderr, "%*c> import_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import' dotted_as_names"));
3555
9.42k
        Token * _keyword;
3556
9.42k
        asdl_alias_seq* a;
3557
9.42k
        if (
3558
9.42k
            (_keyword = _PyPegen_expect_token(p, 500))  // token='import'
3559
2.70k
            &&
3560
2.70k
            (a = dotted_as_names_rule(p))  // dotted_as_names
3561
9.42k
        )
3562
2.52k
        {
3563
2.52k
            D(fprintf(stderr, "%*c+ import_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import' dotted_as_names"));
3564
2.52k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3565
2.52k
            if (_token == NULL) {
3566
0
                p->level--;
3567
0
                return NULL;
3568
0
            }
3569
2.52k
            int _end_lineno = _token->end_lineno;
3570
2.52k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3571
2.52k
            int _end_col_offset = _token->end_col_offset;
3572
2.52k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3573
2.52k
            _res = _PyAST_Import ( a , 0 , EXTRA );
3574
2.52k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
3575
0
                p->error_indicator = 1;
3576
0
                p->level--;
3577
0
                return NULL;
3578
0
            }
3579
2.52k
            goto done;
3580
2.52k
        }
3581
6.90k
        p->mark = _mark;
3582
6.90k
        D(fprintf(stderr, "%*c%s import_name[%d-%d]: %s failed!\n", p->level, ' ',
3583
6.90k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import' dotted_as_names"));
3584
6.90k
    }
3585
6.90k
    _res = NULL;
3586
9.44k
  done:
3587
9.44k
    p->level--;
3588
9.44k
    return _res;
3589
6.90k
}
3590
3591
// import_from:
3592
//     | invalid_import_from
3593
//     | "lazy" 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
3594
//     | "lazy" 'from' (('.' | '...'))+ 'import' import_from_targets
3595
//     | 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
3596
//     | 'from' (('.' | '...'))+ 'import' import_from_targets
3597
static stmt_ty
3598
import_from_rule(Parser *p)
3599
6.73k
{
3600
6.73k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
3601
0
        _Pypegen_stack_overflow(p);
3602
0
    }
3603
6.73k
    if (p->error_indicator) {
3604
0
        p->level--;
3605
0
        return NULL;
3606
0
    }
3607
6.73k
    stmt_ty _res = NULL;
3608
6.73k
    int _mark = p->mark;
3609
6.73k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3610
0
        p->error_indicator = 1;
3611
0
        p->level--;
3612
0
        return NULL;
3613
0
    }
3614
6.73k
    int _start_lineno = p->tokens[_mark]->lineno;
3615
6.73k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3616
6.73k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3617
6.73k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3618
6.73k
    if (p->call_invalid_rules) { // invalid_import_from
3619
2.63k
        if (p->error_indicator) {
3620
0
            p->level--;
3621
0
            return NULL;
3622
0
        }
3623
2.63k
        D(fprintf(stderr, "%*c> import_from[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_import_from"));
3624
2.63k
        void *invalid_import_from_var;
3625
2.63k
        if (
3626
2.63k
            (invalid_import_from_var = invalid_import_from_rule(p))  // invalid_import_from
3627
2.63k
        )
3628
0
        {
3629
0
            D(fprintf(stderr, "%*c+ import_from[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_import_from"));
3630
0
            _res = invalid_import_from_var;
3631
0
            goto done;
3632
0
        }
3633
2.63k
        p->mark = _mark;
3634
2.63k
        D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3635
2.63k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_import_from"));
3636
2.63k
    }
3637
6.73k
    { // "lazy" 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
3638
6.73k
        if (p->error_indicator) {
3639
5
            p->level--;
3640
5
            return NULL;
3641
5
        }
3642
6.73k
        D(fprintf(stderr, "%*c> import_from[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"lazy\" 'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3643
6.73k
        Token * _keyword;
3644
6.73k
        Token * _keyword_1;
3645
6.73k
        asdl_seq * a;
3646
6.73k
        expr_ty b;
3647
6.73k
        asdl_alias_seq* c;
3648
6.73k
        expr_ty lazy;
3649
6.73k
        if (
3650
6.73k
            (lazy = _PyPegen_expect_soft_keyword(p, "lazy"))  // soft_keyword='"lazy"'
3651
592
            &&
3652
592
            (_keyword = _PyPegen_expect_token(p, 501))  // token='from'
3653
61
            &&
3654
61
            (a = _loop0_17_rule(p))  // (('.' | '...'))*
3655
61
            &&
3656
61
            (b = dotted_name_rule(p))  // dotted_name
3657
50
            &&
3658
50
            (_keyword_1 = _PyPegen_expect_token(p, 500))  // token='import'
3659
48
            &&
3660
48
            (c = import_from_targets_rule(p))  // import_from_targets
3661
6.73k
        )
3662
43
        {
3663
43
            D(fprintf(stderr, "%*c+ import_from[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"lazy\" 'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3664
43
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3665
43
            if (_token == NULL) {
3666
0
                p->level--;
3667
0
                return NULL;
3668
0
            }
3669
43
            int _end_lineno = _token->end_lineno;
3670
43
            UNUSED(_end_lineno); // Only used by EXTRA macro
3671
43
            int _end_col_offset = _token->end_col_offset;
3672
43
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3673
43
            _res = CHECK_VERSION ( stmt_ty , 15 , "Lazy imports are" , _PyPegen_checked_from_import ( p , a , b , c , lazy , EXTRA ) );
3674
43
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
3675
1
                p->error_indicator = 1;
3676
1
                p->level--;
3677
1
                return NULL;
3678
1
            }
3679
42
            goto done;
3680
43
        }
3681
6.68k
        p->mark = _mark;
3682
6.68k
        D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3683
6.68k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"lazy\" 'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3684
6.68k
    }
3685
0
    { // "lazy" 'from' (('.' | '...'))+ 'import' import_from_targets
3686
6.68k
        if (p->error_indicator) {
3687
4
            p->level--;
3688
4
            return NULL;
3689
4
        }
3690
6.68k
        D(fprintf(stderr, "%*c> import_from[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"lazy\" 'from' (('.' | '...'))+ 'import' import_from_targets"));
3691
6.68k
        expr_ty _keyword;
3692
6.68k
        Token * _keyword_1;
3693
6.68k
        Token * _keyword_2;
3694
6.68k
        asdl_seq * a;
3695
6.68k
        asdl_alias_seq* b;
3696
6.68k
        if (
3697
6.68k
            (_keyword = _PyPegen_expect_soft_keyword(p, "lazy"))  // soft_keyword='"lazy"'
3698
545
            &&
3699
545
            (_keyword_1 = _PyPegen_expect_token(p, 501))  // token='from'
3700
14
            &&
3701
14
            (a = _loop1_18_rule(p))  // (('.' | '...'))+
3702
9
            &&
3703
9
            (_keyword_2 = _PyPegen_expect_token(p, 500))  // token='import'
3704
6
            &&
3705
6
            (b = import_from_targets_rule(p))  // import_from_targets
3706
6.68k
        )
3707
3
        {
3708
3
            D(fprintf(stderr, "%*c+ import_from[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"lazy\" 'from' (('.' | '...'))+ 'import' import_from_targets"));
3709
3
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3710
3
            if (_token == NULL) {
3711
0
                p->level--;
3712
0
                return NULL;
3713
0
            }
3714
3
            int _end_lineno = _token->end_lineno;
3715
3
            UNUSED(_end_lineno); // Only used by EXTRA macro
3716
3
            int _end_col_offset = _token->end_col_offset;
3717
3
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3718
3
            _res = CHECK_VERSION ( stmt_ty , 15 , "Lazy imports are" , _PyAST_ImportFrom ( NULL , b , _PyPegen_seq_count_dots ( a ) , 1 , EXTRA ) );
3719
3
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
3720
0
                p->error_indicator = 1;
3721
0
                p->level--;
3722
0
                return NULL;
3723
0
            }
3724
3
            goto done;
3725
3
        }
3726
6.68k
        p->mark = _mark;
3727
6.68k
        D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3728
6.68k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"lazy\" 'from' (('.' | '...'))+ 'import' import_from_targets"));
3729
6.68k
    }
3730
0
    { // 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
3731
6.68k
        if (p->error_indicator) {
3732
1
            p->level--;
3733
1
            return NULL;
3734
1
        }
3735
6.67k
        D(fprintf(stderr, "%*c> import_from[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3736
6.67k
        Token * _keyword;
3737
6.67k
        Token * _keyword_1;
3738
6.67k
        asdl_seq * a;
3739
6.67k
        expr_ty b;
3740
6.67k
        asdl_alias_seq* c;
3741
6.67k
        if (
3742
6.67k
            (_keyword = _PyPegen_expect_token(p, 501))  // token='from'
3743
6.12k
            &&
3744
6.12k
            (a = _loop0_17_rule(p))  // (('.' | '...'))*
3745
6.12k
            &&
3746
6.12k
            (b = dotted_name_rule(p))  // dotted_name
3747
3.93k
            &&
3748
3.93k
            (_keyword_1 = _PyPegen_expect_token(p, 500))  // token='import'
3749
3.85k
            &&
3750
3.85k
            (c = import_from_targets_rule(p))  // import_from_targets
3751
6.67k
        )
3752
3.77k
        {
3753
3.77k
            D(fprintf(stderr, "%*c+ import_from[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3754
3.77k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3755
3.77k
            if (_token == NULL) {
3756
0
                p->level--;
3757
0
                return NULL;
3758
0
            }
3759
3.77k
            int _end_lineno = _token->end_lineno;
3760
3.77k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3761
3.77k
            int _end_col_offset = _token->end_col_offset;
3762
3.77k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3763
3.77k
            _res = _PyPegen_checked_from_import ( p , a , b , c , NULL , EXTRA );
3764
3.77k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
3765
0
                p->error_indicator = 1;
3766
0
                p->level--;
3767
0
                return NULL;
3768
0
            }
3769
3.77k
            goto done;
3770
3.77k
        }
3771
2.90k
        p->mark = _mark;
3772
2.90k
        D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3773
2.90k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3774
2.90k
    }
3775
0
    { // 'from' (('.' | '...'))+ 'import' import_from_targets
3776
2.90k
        if (p->error_indicator) {
3777
59
            p->level--;
3778
59
            return NULL;
3779
59
        }
3780
2.84k
        D(fprintf(stderr, "%*c> import_from[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3781
2.84k
        Token * _keyword;
3782
2.84k
        Token * _keyword_1;
3783
2.84k
        asdl_seq * a;
3784
2.84k
        asdl_alias_seq* b;
3785
2.84k
        if (
3786
2.84k
            (_keyword = _PyPegen_expect_token(p, 501))  // token='from'
3787
2.29k
            &&
3788
2.29k
            (a = _loop1_18_rule(p))  // (('.' | '...'))+
3789
2.22k
            &&
3790
2.22k
            (_keyword_1 = _PyPegen_expect_token(p, 500))  // token='import'
3791
2.11k
            &&
3792
2.11k
            (b = import_from_targets_rule(p))  // import_from_targets
3793
2.84k
        )
3794
1.88k
        {
3795
1.88k
            D(fprintf(stderr, "%*c+ import_from[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3796
1.88k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3797
1.88k
            if (_token == NULL) {
3798
0
                p->level--;
3799
0
                return NULL;
3800
0
            }
3801
1.88k
            int _end_lineno = _token->end_lineno;
3802
1.88k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3803
1.88k
            int _end_col_offset = _token->end_col_offset;
3804
1.88k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3805
1.88k
            _res = _PyAST_ImportFrom ( NULL , b , _PyPegen_seq_count_dots ( a ) , 0 , EXTRA );
3806
1.88k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
3807
0
                p->error_indicator = 1;
3808
0
                p->level--;
3809
0
                return NULL;
3810
0
            }
3811
1.88k
            goto done;
3812
1.88k
        }
3813
957
        p->mark = _mark;
3814
957
        D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3815
957
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3816
957
    }
3817
957
    _res = NULL;
3818
6.66k
  done:
3819
6.66k
    p->level--;
3820
6.66k
    return _res;
3821
957
}
3822
3823
// import_from_targets:
3824
//     | '(' import_from_as_names ','? ')'
3825
//     | import_from_as_names !','
3826
//     | '*'
3827
//     | invalid_import_from_targets
3828
Py_LOCAL_SYMBOL asdl_alias_seq*
3829
import_from_targets_rule(Parser *p)
3830
6.02k
{
3831
6.02k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
3832
0
        _Pypegen_stack_overflow(p);
3833
0
    }
3834
6.02k
    if (p->error_indicator) {
3835
0
        p->level--;
3836
0
        return NULL;
3837
0
    }
3838
6.02k
    asdl_alias_seq* _res = NULL;
3839
6.02k
    int _mark = p->mark;
3840
6.02k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3841
2
        p->error_indicator = 1;
3842
2
        p->level--;
3843
2
        return NULL;
3844
2
    }
3845
6.02k
    int _start_lineno = p->tokens[_mark]->lineno;
3846
6.02k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3847
6.02k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3848
6.02k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3849
6.02k
    { // '(' import_from_as_names ','? ')'
3850
6.02k
        if (p->error_indicator) {
3851
0
            p->level--;
3852
0
            return NULL;
3853
0
        }
3854
6.02k
        D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3855
6.02k
        Token * _literal;
3856
6.02k
        Token * _literal_1;
3857
6.02k
        void *_opt_var;
3858
6.02k
        UNUSED(_opt_var); // Silence compiler warnings
3859
6.02k
        asdl_alias_seq* a;
3860
6.02k
        if (
3861
6.02k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
3862
480
            &&
3863
480
            (a = import_from_as_names_rule(p))  // import_from_as_names
3864
409
            &&
3865
409
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
3866
409
            &&
3867
409
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
3868
6.02k
        )
3869
277
        {
3870
277
            D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3871
277
            _res = a;
3872
277
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
3873
0
                p->error_indicator = 1;
3874
0
                p->level--;
3875
0
                return NULL;
3876
0
            }
3877
277
            goto done;
3878
277
        }
3879
5.74k
        p->mark = _mark;
3880
5.74k
        D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3881
5.74k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3882
5.74k
    }
3883
0
    { // import_from_as_names !','
3884
5.74k
        if (p->error_indicator) {
3885
69
            p->level--;
3886
69
            return NULL;
3887
69
        }
3888
5.67k
        D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_names !','"));
3889
5.67k
        asdl_alias_seq* import_from_as_names_var;
3890
5.67k
        if (
3891
5.67k
            (import_from_as_names_var = import_from_as_names_rule(p))  // import_from_as_names
3892
3.72k
            &&
3893
3.72k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
3894
5.67k
        )
3895
3.68k
        {
3896
3.68k
            D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_names !','"));
3897
3.68k
            _res = import_from_as_names_var;
3898
3.68k
            goto done;
3899
3.68k
        }
3900
1.99k
        p->mark = _mark;
3901
1.99k
        D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3902
1.99k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_names !','"));
3903
1.99k
    }
3904
0
    { // '*'
3905
1.99k
        if (p->error_indicator) {
3906
38
            p->level--;
3907
38
            return NULL;
3908
38
        }
3909
1.95k
        D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
3910
1.95k
        Token * _literal;
3911
1.95k
        if (
3912
1.95k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
3913
1.95k
        )
3914
1.74k
        {
3915
1.74k
            D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
3916
1.74k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3917
1.74k
            if (_token == NULL) {
3918
0
                p->level--;
3919
0
                return NULL;
3920
0
            }
3921
1.74k
            int _end_lineno = _token->end_lineno;
3922
1.74k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3923
1.74k
            int _end_col_offset = _token->end_col_offset;
3924
1.74k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3925
1.74k
            _res = ( asdl_alias_seq* ) _PyPegen_singleton_seq ( p , CHECK ( alias_ty , _PyPegen_alias_for_star ( p , EXTRA ) ) );
3926
1.74k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
3927
0
                p->error_indicator = 1;
3928
0
                p->level--;
3929
0
                return NULL;
3930
0
            }
3931
1.74k
            goto done;
3932
1.74k
        }
3933
203
        p->mark = _mark;
3934
203
        D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3935
203
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
3936
203
    }
3937
203
    if (p->call_invalid_rules) { // invalid_import_from_targets
3938
148
        if (p->error_indicator) {
3939
0
            p->level--;
3940
0
            return NULL;
3941
0
        }
3942
148
        D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_import_from_targets"));
3943
148
        void *invalid_import_from_targets_var;
3944
148
        if (
3945
148
            (invalid_import_from_targets_var = invalid_import_from_targets_rule(p))  // invalid_import_from_targets
3946
148
        )
3947
0
        {
3948
0
            D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_import_from_targets"));
3949
0
            _res = invalid_import_from_targets_var;
3950
0
            goto done;
3951
0
        }
3952
148
        p->mark = _mark;
3953
148
        D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3954
148
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_import_from_targets"));
3955
148
    }
3956
203
    _res = NULL;
3957
5.91k
  done:
3958
5.91k
    p->level--;
3959
5.91k
    return _res;
3960
203
}
3961
3962
// import_from_as_names: ','.import_from_as_name+
3963
Py_LOCAL_SYMBOL asdl_alias_seq*
3964
import_from_as_names_rule(Parser *p)
3965
6.30k
{
3966
6.30k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
3967
0
        _Pypegen_stack_overflow(p);
3968
0
    }
3969
6.30k
    if (p->error_indicator) {
3970
0
        p->level--;
3971
0
        return NULL;
3972
0
    }
3973
6.30k
    asdl_alias_seq* _res = NULL;
3974
6.30k
    int _mark = p->mark;
3975
6.30k
    { // ','.import_from_as_name+
3976
6.30k
        if (p->error_indicator) {
3977
0
            p->level--;
3978
0
            return NULL;
3979
0
        }
3980
6.30k
        D(fprintf(stderr, "%*c> import_from_as_names[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.import_from_as_name+"));
3981
6.30k
        asdl_alias_seq* a;
3982
6.30k
        if (
3983
6.30k
            (a = (asdl_alias_seq*)_gather_20_rule(p))  // ','.import_from_as_name+
3984
6.30k
        )
3985
4.19k
        {
3986
4.19k
            D(fprintf(stderr, "%*c+ import_from_as_names[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.import_from_as_name+"));
3987
4.19k
            _res = a;
3988
4.19k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
3989
34
                p->error_indicator = 1;
3990
34
                p->level--;
3991
34
                return NULL;
3992
34
            }
3993
4.15k
            goto done;
3994
4.19k
        }
3995
2.11k
        p->mark = _mark;
3996
2.11k
        D(fprintf(stderr, "%*c%s import_from_as_names[%d-%d]: %s failed!\n", p->level, ' ',
3997
2.11k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.import_from_as_name+"));
3998
2.11k
    }
3999
2.11k
    _res = NULL;
4000
6.26k
  done:
4001
6.26k
    p->level--;
4002
6.26k
    return _res;
4003
2.11k
}
4004
4005
// import_from_as_name: invalid_import_from_as_name | NAME ['as' NAME]
4006
static alias_ty
4007
import_from_as_name_rule(Parser *p)
4008
9.02k
{
4009
9.02k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
4010
0
        _Pypegen_stack_overflow(p);
4011
0
    }
4012
9.02k
    if (p->error_indicator) {
4013
0
        p->level--;
4014
0
        return NULL;
4015
0
    }
4016
9.02k
    alias_ty _res = NULL;
4017
9.02k
    int _mark = p->mark;
4018
9.02k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4019
3
        p->error_indicator = 1;
4020
3
        p->level--;
4021
3
        return NULL;
4022
3
    }
4023
9.02k
    int _start_lineno = p->tokens[_mark]->lineno;
4024
9.02k
    UNUSED(_start_lineno); // Only used by EXTRA macro
4025
9.02k
    int _start_col_offset = p->tokens[_mark]->col_offset;
4026
9.02k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
4027
9.02k
    if (p->call_invalid_rules) { // invalid_import_from_as_name
4028
3.79k
        if (p->error_indicator) {
4029
0
            p->level--;
4030
0
            return NULL;
4031
0
        }
4032
3.79k
        D(fprintf(stderr, "%*c> import_from_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_import_from_as_name"));
4033
3.79k
        void *invalid_import_from_as_name_var;
4034
3.79k
        if (
4035
3.79k
            (invalid_import_from_as_name_var = invalid_import_from_as_name_rule(p))  // invalid_import_from_as_name
4036
3.79k
        )
4037
0
        {
4038
0
            D(fprintf(stderr, "%*c+ import_from_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_import_from_as_name"));
4039
0
            _res = invalid_import_from_as_name_var;
4040
0
            goto done;
4041
0
        }
4042
3.79k
        p->mark = _mark;
4043
3.79k
        D(fprintf(stderr, "%*c%s import_from_as_name[%d-%d]: %s failed!\n", p->level, ' ',
4044
3.79k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_import_from_as_name"));
4045
3.79k
    }
4046
9.02k
    { // NAME ['as' NAME]
4047
9.02k
        if (p->error_indicator) {
4048
101
            p->level--;
4049
101
            return NULL;
4050
101
        }
4051
8.92k
        D(fprintf(stderr, "%*c> import_from_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ['as' NAME]"));
4052
8.92k
        expr_ty a;
4053
8.92k
        void *b;
4054
8.92k
        if (
4055
8.92k
            (a = _PyPegen_name_token(p))  // NAME
4056
6.81k
            &&
4057
6.81k
            (b = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
4058
8.92k
        )
4059
6.81k
        {
4060
6.81k
            D(fprintf(stderr, "%*c+ import_from_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ['as' NAME]"));
4061
6.81k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4062
6.81k
            if (_token == NULL) {
4063
0
                p->level--;
4064
0
                return NULL;
4065
0
            }
4066
6.81k
            int _end_lineno = _token->end_lineno;
4067
6.81k
            UNUSED(_end_lineno); // Only used by EXTRA macro
4068
6.81k
            int _end_col_offset = _token->end_col_offset;
4069
6.81k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
4070
6.81k
            _res = _PyAST_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , EXTRA );
4071
6.81k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
4072
0
                p->error_indicator = 1;
4073
0
                p->level--;
4074
0
                return NULL;
4075
0
            }
4076
6.81k
            goto done;
4077
6.81k
        }
4078
2.11k
        p->mark = _mark;
4079
2.11k
        D(fprintf(stderr, "%*c%s import_from_as_name[%d-%d]: %s failed!\n", p->level, ' ',
4080
2.11k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ['as' NAME]"));
4081
2.11k
    }
4082
2.11k
    _res = NULL;
4083
8.92k
  done:
4084
8.92k
    p->level--;
4085
8.92k
    return _res;
4086
2.11k
}
4087
4088
// dotted_as_names: ','.dotted_as_name+
4089
static asdl_alias_seq*
4090
dotted_as_names_rule(Parser *p)
4091
2.72k
{
4092
2.72k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
4093
0
        _Pypegen_stack_overflow(p);
4094
0
    }
4095
2.72k
    if (p->error_indicator) {
4096
0
        p->level--;
4097
0
        return NULL;
4098
0
    }
4099
2.72k
    asdl_alias_seq* _res = NULL;
4100
2.72k
    int _mark = p->mark;
4101
2.72k
    { // ','.dotted_as_name+
4102
2.72k
        if (p->error_indicator) {
4103
0
            p->level--;
4104
0
            return NULL;
4105
0
        }
4106
2.72k
        D(fprintf(stderr, "%*c> dotted_as_names[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.dotted_as_name+"));
4107
2.72k
        asdl_alias_seq* a;
4108
2.72k
        if (
4109
2.72k
            (a = (asdl_alias_seq*)_gather_23_rule(p))  // ','.dotted_as_name+
4110
2.72k
        )
4111
2.57k
        {
4112
2.57k
            D(fprintf(stderr, "%*c+ dotted_as_names[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.dotted_as_name+"));
4113
2.57k
            _res = a;
4114
2.57k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
4115
36
                p->error_indicator = 1;
4116
36
                p->level--;
4117
36
                return NULL;
4118
36
            }
4119
2.53k
            goto done;
4120
2.57k
        }
4121
152
        p->mark = _mark;
4122
152
        D(fprintf(stderr, "%*c%s dotted_as_names[%d-%d]: %s failed!\n", p->level, ' ',
4123
152
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.dotted_as_name+"));
4124
152
    }
4125
152
    _res = NULL;
4126
2.68k
  done:
4127
2.68k
    p->level--;
4128
2.68k
    return _res;
4129
152
}
4130
4131
// dotted_as_name: invalid_dotted_as_name | dotted_name ['as' NAME]
4132
static alias_ty
4133
dotted_as_name_rule(Parser *p)
4134
7.56k
{
4135
7.56k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
4136
0
        _Pypegen_stack_overflow(p);
4137
0
    }
4138
7.56k
    if (p->error_indicator) {
4139
0
        p->level--;
4140
0
        return NULL;
4141
0
    }
4142
7.56k
    alias_ty _res = NULL;
4143
7.56k
    int _mark = p->mark;
4144
7.56k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4145
3
        p->error_indicator = 1;
4146
3
        p->level--;
4147
3
        return NULL;
4148
3
    }
4149
7.55k
    int _start_lineno = p->tokens[_mark]->lineno;
4150
7.55k
    UNUSED(_start_lineno); // Only used by EXTRA macro
4151
7.55k
    int _start_col_offset = p->tokens[_mark]->col_offset;
4152
7.55k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
4153
7.55k
    if (p->call_invalid_rules) { // invalid_dotted_as_name
4154
2.54k
        if (p->error_indicator) {
4155
0
            p->level--;
4156
0
            return NULL;
4157
0
        }
4158
2.54k
        D(fprintf(stderr, "%*c> dotted_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_dotted_as_name"));
4159
2.54k
        void *invalid_dotted_as_name_var;
4160
2.54k
        if (
4161
2.54k
            (invalid_dotted_as_name_var = invalid_dotted_as_name_rule(p))  // invalid_dotted_as_name
4162
2.54k
        )
4163
0
        {
4164
0
            D(fprintf(stderr, "%*c+ dotted_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_dotted_as_name"));
4165
0
            _res = invalid_dotted_as_name_var;
4166
0
            goto done;
4167
0
        }
4168
2.54k
        p->mark = _mark;
4169
2.54k
        D(fprintf(stderr, "%*c%s dotted_as_name[%d-%d]: %s failed!\n", p->level, ' ',
4170
2.54k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_dotted_as_name"));
4171
2.54k
    }
4172
7.55k
    { // dotted_name ['as' NAME]
4173
7.55k
        if (p->error_indicator) {
4174
167
            p->level--;
4175
167
            return NULL;
4176
167
        }
4177
7.39k
        D(fprintf(stderr, "%*c> dotted_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name ['as' NAME]"));
4178
7.39k
        expr_ty a;
4179
7.39k
        void *b;
4180
7.39k
        if (
4181
7.39k
            (a = dotted_name_rule(p))  // dotted_name
4182
7.31k
            &&
4183
7.31k
            (b = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
4184
7.39k
        )
4185
7.31k
        {
4186
7.31k
            D(fprintf(stderr, "%*c+ dotted_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name ['as' NAME]"));
4187
7.31k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4188
7.31k
            if (_token == NULL) {
4189
0
                p->level--;
4190
0
                return NULL;
4191
0
            }
4192
7.31k
            int _end_lineno = _token->end_lineno;
4193
7.31k
            UNUSED(_end_lineno); // Only used by EXTRA macro
4194
7.31k
            int _end_col_offset = _token->end_col_offset;
4195
7.31k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
4196
7.31k
            _res = _PyAST_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , EXTRA );
4197
7.31k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
4198
0
                p->error_indicator = 1;
4199
0
                p->level--;
4200
0
                return NULL;
4201
0
            }
4202
7.31k
            goto done;
4203
7.31k
        }
4204
76
        p->mark = _mark;
4205
76
        D(fprintf(stderr, "%*c%s dotted_as_name[%d-%d]: %s failed!\n", p->level, ' ',
4206
76
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name ['as' NAME]"));
4207
76
    }
4208
76
    _res = NULL;
4209
7.39k
  done:
4210
7.39k
    p->level--;
4211
7.39k
    return _res;
4212
76
}
4213
4214
// Left-recursive
4215
// dotted_name: dotted_name '.' NAME | NAME
4216
static expr_ty dotted_name_raw(Parser *);
4217
Py_LOCAL_SYMBOL expr_ty
4218
dotted_name_rule(Parser *p)
4219
50.6k
{
4220
50.6k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
4221
0
        _Pypegen_stack_overflow(p);
4222
0
    }
4223
50.6k
    expr_ty _res = NULL;
4224
50.6k
    if (_PyPegen_is_memoized(p, dotted_name_type, &_res)) {
4225
36.8k
        p->level--;
4226
36.8k
        return _res;
4227
36.8k
    }
4228
13.7k
    int _mark = p->mark;
4229
13.7k
    int _resmark = p->mark;
4230
13.7k
    Memo *_memo = _PyPegen_insert_memo_direct(p, _mark, dotted_name_type);
4231
13.7k
    if (_memo == NULL) {
4232
0
        p->level--;
4233
0
        return NULL;
4234
0
    }
4235
29.8k
    while (1) {
4236
29.8k
        _memo->node = _res;
4237
29.8k
        _memo->mark = p->mark;
4238
29.8k
        p->mark = _mark;
4239
29.8k
        void *_raw = dotted_name_raw(p);
4240
29.8k
        if (p->error_indicator) {
4241
16
            p->level--;
4242
16
            return NULL;
4243
16
        }
4244
29.8k
        if (_raw == NULL || p->mark <= _resmark)
4245
13.7k
            break;
4246
16.0k
        _resmark = p->mark;
4247
16.0k
        _res = _raw;
4248
16.0k
    }
4249
13.7k
    p->mark = _resmark;
4250
13.7k
    p->level--;
4251
13.7k
    return _res;
4252
13.7k
}
4253
static expr_ty
4254
dotted_name_raw(Parser *p)
4255
29.8k
{
4256
29.8k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
4257
0
        _Pypegen_stack_overflow(p);
4258
0
    }
4259
29.8k
    if (p->error_indicator) {
4260
9
        p->level--;
4261
9
        return NULL;
4262
9
    }
4263
29.8k
    expr_ty _res = NULL;
4264
29.8k
    int _mark = p->mark;
4265
29.8k
    { // dotted_name '.' NAME
4266
29.8k
        if (p->error_indicator) {
4267
0
            p->level--;
4268
0
            return NULL;
4269
0
        }
4270
29.8k
        D(fprintf(stderr, "%*c> dotted_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name '.' NAME"));
4271
29.8k
        Token * _literal;
4272
29.8k
        expr_ty a;
4273
29.8k
        expr_ty b;
4274
29.8k
        if (
4275
29.8k
            (a = dotted_name_rule(p))  // dotted_name
4276
16.0k
            &&
4277
16.0k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
4278
4.64k
            &&
4279
4.64k
            (b = _PyPegen_name_token(p))  // NAME
4280
29.8k
        )
4281
4.61k
        {
4282
4.61k
            D(fprintf(stderr, "%*c+ dotted_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name '.' NAME"));
4283
4.61k
            _res = _PyPegen_join_names_with_dot ( p , a , b );
4284
4.61k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
4285
0
                p->error_indicator = 1;
4286
0
                p->level--;
4287
0
                return NULL;
4288
0
            }
4289
4.61k
            goto done;
4290
4.61k
        }
4291
25.2k
        p->mark = _mark;
4292
25.2k
        D(fprintf(stderr, "%*c%s dotted_name[%d-%d]: %s failed!\n", p->level, ' ',
4293
25.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name '.' NAME"));
4294
25.2k
    }
4295
0
    { // NAME
4296
25.2k
        if (p->error_indicator) {
4297
7
            p->level--;
4298
7
            return NULL;
4299
7
        }
4300
25.2k
        D(fprintf(stderr, "%*c> dotted_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
4301
25.2k
        expr_ty name_var;
4302
25.2k
        if (
4303
25.2k
            (name_var = _PyPegen_name_token(p))  // NAME
4304
25.2k
        )
4305
22.9k
        {
4306
22.9k
            D(fprintf(stderr, "%*c+ dotted_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
4307
22.9k
            _res = name_var;
4308
22.9k
            goto done;
4309
22.9k
        }
4310
2.26k
        p->mark = _mark;
4311
2.26k
        D(fprintf(stderr, "%*c%s dotted_name[%d-%d]: %s failed!\n", p->level, ' ',
4312
2.26k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
4313
2.26k
    }
4314
2.26k
    _res = NULL;
4315
29.8k
  done:
4316
29.8k
    p->level--;
4317
29.8k
    return _res;
4318
2.26k
}
4319
4320
// block: NEWLINE INDENT statements DEDENT | simple_stmts | invalid_block
4321
Py_LOCAL_SYMBOL asdl_stmt_seq*
4322
block_rule(Parser *p)
4323
63.0k
{
4324
63.0k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
4325
0
        _Pypegen_stack_overflow(p);
4326
0
    }
4327
63.0k
    if (p->error_indicator) {
4328
0
        p->level--;
4329
0
        return NULL;
4330
0
    }
4331
63.0k
    asdl_stmt_seq* _res = NULL;
4332
63.0k
    if (_PyPegen_is_memoized(p, block_type, &_res)) {
4333
19.9k
        p->level--;
4334
19.9k
        return _res;
4335
19.9k
    }
4336
43.1k
    int _mark = p->mark;
4337
43.1k
    { // NEWLINE INDENT statements DEDENT
4338
43.1k
        if (p->error_indicator) {
4339
0
            p->level--;
4340
0
            return NULL;
4341
0
        }
4342
43.1k
        D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
4343
43.1k
        asdl_stmt_seq* a;
4344
43.1k
        Token * dedent_var;
4345
43.1k
        Token * indent_var;
4346
43.1k
        Token * newline_var;
4347
43.1k
        if (
4348
43.1k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
4349
10.3k
            &&
4350
10.3k
            (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
4351
10.2k
            &&
4352
10.2k
            (a = statements_rule(p))  // statements
4353
9.64k
            &&
4354
9.64k
            (dedent_var = _PyPegen_expect_token(p, DEDENT))  // token='DEDENT'
4355
43.1k
        )
4356
9.57k
        {
4357
9.57k
            D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
4358
9.57k
            _res = a;
4359
9.57k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
4360
0
                p->error_indicator = 1;
4361
0
                p->level--;
4362
0
                return NULL;
4363
0
            }
4364
9.57k
            goto done;
4365
9.57k
        }
4366
33.5k
        p->mark = _mark;
4367
33.5k
        D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
4368
33.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
4369
33.5k
    }
4370
0
    { // simple_stmts
4371
33.5k
        if (p->error_indicator) {
4372
170
            p->level--;
4373
170
            return NULL;
4374
170
        }
4375
33.3k
        D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
4376
33.3k
        asdl_stmt_seq* simple_stmts_var;
4377
33.3k
        if (
4378
33.3k
            (simple_stmts_var = simple_stmts_rule(p))  // simple_stmts
4379
33.3k
        )
4380
30.6k
        {
4381
30.6k
            D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
4382
30.6k
            _res = simple_stmts_var;
4383
30.6k
            goto done;
4384
30.6k
        }
4385
2.75k
        p->mark = _mark;
4386
2.75k
        D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
4387
2.75k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
4388
2.75k
    }
4389
2.75k
    if (p->call_invalid_rules) { // invalid_block
4390
2.17k
        if (p->error_indicator) {
4391
21
            p->level--;
4392
21
            return NULL;
4393
21
        }
4394
2.15k
        D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_block"));
4395
2.15k
        void *invalid_block_var;
4396
2.15k
        if (
4397
2.15k
            (invalid_block_var = invalid_block_rule(p))  // invalid_block
4398
2.15k
        )
4399
0
        {
4400
0
            D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_block"));
4401
0
            _res = invalid_block_var;
4402
0
            goto done;
4403
0
        }
4404
2.15k
        p->mark = _mark;
4405
2.15k
        D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
4406
2.15k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_block"));
4407
2.15k
    }
4408
2.73k
    _res = NULL;
4409
42.9k
  done:
4410
42.9k
    _PyPegen_insert_memo(p, _mark, block_type, _res);
4411
42.9k
    p->level--;
4412
42.9k
    return _res;
4413
2.73k
}
4414
4415
// decorators: (('@' named_expression NEWLINE))+
4416
static asdl_expr_seq*
4417
decorators_rule(Parser *p)
4418
14.9k
{
4419
14.9k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
4420
0
        _Pypegen_stack_overflow(p);
4421
0
    }
4422
14.9k
    if (p->error_indicator) {
4423
0
        p->level--;
4424
0
        return NULL;
4425
0
    }
4426
14.9k
    asdl_expr_seq* _res = NULL;
4427
14.9k
    int _mark = p->mark;
4428
14.9k
    { // (('@' named_expression NEWLINE))+
4429
14.9k
        if (p->error_indicator) {
4430
0
            p->level--;
4431
0
            return NULL;
4432
0
        }
4433
14.9k
        D(fprintf(stderr, "%*c> decorators[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(('@' named_expression NEWLINE))+"));
4434
14.9k
        asdl_expr_seq* a;
4435
14.9k
        if (
4436
14.9k
            (a = (asdl_expr_seq*)_loop1_24_rule(p))  // (('@' named_expression NEWLINE))+
4437
14.9k
        )
4438
1.57k
        {
4439
1.57k
            D(fprintf(stderr, "%*c+ decorators[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(('@' named_expression NEWLINE))+"));
4440
1.57k
            _res = a;
4441
1.57k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
4442
0
                p->error_indicator = 1;
4443
0
                p->level--;
4444
0
                return NULL;
4445
0
            }
4446
1.57k
            goto done;
4447
1.57k
        }
4448
13.3k
        p->mark = _mark;
4449
13.3k
        D(fprintf(stderr, "%*c%s decorators[%d-%d]: %s failed!\n", p->level, ' ',
4450
13.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(('@' named_expression NEWLINE))+"));
4451
13.3k
    }
4452
13.3k
    _res = NULL;
4453
14.9k
  done:
4454
14.9k
    p->level--;
4455
14.9k
    return _res;
4456
13.3k
}
4457
4458
// class_def: decorators class_def_raw | class_def_raw
4459
static stmt_ty
4460
class_def_rule(Parser *p)
4461
3.13k
{
4462
3.13k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
4463
0
        _Pypegen_stack_overflow(p);
4464
0
    }
4465
3.13k
    if (p->error_indicator) {
4466
0
        p->level--;
4467
0
        return NULL;
4468
0
    }
4469
3.13k
    stmt_ty _res = NULL;
4470
3.13k
    int _mark = p->mark;
4471
3.13k
    { // decorators class_def_raw
4472
3.13k
        if (p->error_indicator) {
4473
0
            p->level--;
4474
0
            return NULL;
4475
0
        }
4476
3.13k
        D(fprintf(stderr, "%*c> class_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "decorators class_def_raw"));
4477
3.13k
        asdl_expr_seq* a;
4478
3.13k
        stmt_ty b;
4479
3.13k
        if (
4480
3.13k
            (a = decorators_rule(p))  // decorators
4481
464
            &&
4482
464
            (b = class_def_raw_rule(p))  // class_def_raw
4483
3.13k
        )
4484
319
        {
4485
319
            D(fprintf(stderr, "%*c+ class_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "decorators class_def_raw"));
4486
319
            _res = _PyPegen_class_def_decorators ( p , a , b );
4487
319
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
4488
0
                p->error_indicator = 1;
4489
0
                p->level--;
4490
0
                return NULL;
4491
0
            }
4492
319
            goto done;
4493
319
        }
4494
2.81k
        p->mark = _mark;
4495
2.81k
        D(fprintf(stderr, "%*c%s class_def[%d-%d]: %s failed!\n", p->level, ' ',
4496
2.81k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "decorators class_def_raw"));
4497
2.81k
    }
4498
0
    { // class_def_raw
4499
2.81k
        if (p->error_indicator) {
4500
4
            p->level--;
4501
4
            return NULL;
4502
4
        }
4503
2.81k
        D(fprintf(stderr, "%*c> class_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "class_def_raw"));
4504
2.81k
        stmt_ty class_def_raw_var;
4505
2.81k
        if (
4506
2.81k
            (class_def_raw_var = class_def_raw_rule(p))  // class_def_raw
4507
2.81k
        )
4508
2.45k
        {
4509
2.45k
            D(fprintf(stderr, "%*c+ class_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "class_def_raw"));
4510
2.45k
            _res = class_def_raw_var;
4511
2.45k
            goto done;
4512
2.45k
        }
4513
363
        p->mark = _mark;
4514
363
        D(fprintf(stderr, "%*c%s class_def[%d-%d]: %s failed!\n", p->level, ' ',
4515
363
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "class_def_raw"));
4516
363
    }
4517
363
    _res = NULL;
4518
3.13k
  done:
4519
3.13k
    p->level--;
4520
3.13k
    return _res;
4521
363
}
4522
4523
// class_def_raw:
4524
//     | invalid_class_def_raw
4525
//     | 'class' NAME type_params? ['(' arguments? ')'] ':' block
4526
static stmt_ty
4527
class_def_raw_rule(Parser *p)
4528
3.27k
{
4529
3.27k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
4530
0
        _Pypegen_stack_overflow(p);
4531
0
    }
4532
3.27k
    if (p->error_indicator) {
4533
0
        p->level--;
4534
0
        return NULL;
4535
0
    }
4536
3.27k
    stmt_ty _res = NULL;
4537
3.27k
    int _mark = p->mark;
4538
3.27k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4539
0
        p->error_indicator = 1;
4540
0
        p->level--;
4541
0
        return NULL;
4542
0
    }
4543
3.27k
    int _start_lineno = p->tokens[_mark]->lineno;
4544
3.27k
    UNUSED(_start_lineno); // Only used by EXTRA macro
4545
3.27k
    int _start_col_offset = p->tokens[_mark]->col_offset;
4546
3.27k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
4547
3.27k
    if (p->call_invalid_rules) { // invalid_class_def_raw
4548
1.12k
        if (p->error_indicator) {
4549
0
            p->level--;
4550
0
            return NULL;
4551
0
        }
4552
1.12k
        D(fprintf(stderr, "%*c> class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_class_def_raw"));
4553
1.12k
        void *invalid_class_def_raw_var;
4554
1.12k
        if (
4555
1.12k
            (invalid_class_def_raw_var = invalid_class_def_raw_rule(p))  // invalid_class_def_raw
4556
1.12k
        )
4557
0
        {
4558
0
            D(fprintf(stderr, "%*c+ class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_class_def_raw"));
4559
0
            _res = invalid_class_def_raw_var;
4560
0
            goto done;
4561
0
        }
4562
1.12k
        p->mark = _mark;
4563
1.12k
        D(fprintf(stderr, "%*c%s class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4564
1.12k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_class_def_raw"));
4565
1.12k
    }
4566
3.27k
    { // 'class' NAME type_params? ['(' arguments? ')'] ':' block
4567
3.27k
        if (p->error_indicator) {
4568
19
            p->level--;
4569
19
            return NULL;
4570
19
        }
4571
3.25k
        D(fprintf(stderr, "%*c> class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] ':' block"));
4572
3.25k
        Token * _keyword;
4573
3.25k
        Token * _literal;
4574
3.25k
        expr_ty a;
4575
3.25k
        void *b;
4576
3.25k
        asdl_stmt_seq* c;
4577
3.25k
        void *t;
4578
3.25k
        if (
4579
3.25k
            (_keyword = _PyPegen_expect_token(p, 515))  // token='class'
4580
2.90k
            &&
4581
2.90k
            (a = _PyPegen_name_token(p))  // NAME
4582
2.89k
            &&
4583
2.89k
            (t = type_params_rule(p), !p->error_indicator)  // type_params?
4584
2.89k
            &&
4585
2.89k
            (b = _tmp_25_rule(p), !p->error_indicator)  // ['(' arguments? ')']
4586
2.89k
            &&
4587
2.89k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
4588
2.83k
            &&
4589
2.83k
            (c = block_rule(p))  // block
4590
3.25k
        )
4591
2.77k
        {
4592
2.77k
            D(fprintf(stderr, "%*c+ class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] ':' block"));
4593
2.77k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4594
2.77k
            if (_token == NULL) {
4595
0
                p->level--;
4596
0
                return NULL;
4597
0
            }
4598
2.77k
            int _end_lineno = _token->end_lineno;
4599
2.77k
            UNUSED(_end_lineno); // Only used by EXTRA macro
4600
2.77k
            int _end_col_offset = _token->end_col_offset;
4601
2.77k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
4602
2.77k
            _res = _PyAST_ClassDef ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , c , NULL , t , EXTRA );
4603
2.77k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
4604
0
                p->error_indicator = 1;
4605
0
                p->level--;
4606
0
                return NULL;
4607
0
            }
4608
2.77k
            goto done;
4609
2.77k
        }
4610
489
        p->mark = _mark;
4611
489
        D(fprintf(stderr, "%*c%s class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4612
489
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] ':' block"));
4613
489
    }
4614
489
    _res = NULL;
4615
3.25k
  done:
4616
3.25k
    p->level--;
4617
3.25k
    return _res;
4618
489
}
4619
4620
// function_def: decorators function_def_raw | function_def_raw
4621
static stmt_ty
4622
function_def_rule(Parser *p)
4623
11.8k
{
4624
11.8k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
4625
0
        _Pypegen_stack_overflow(p);
4626
0
    }
4627
11.8k
    if (p->error_indicator) {
4628
0
        p->level--;
4629
0
        return NULL;
4630
0
    }
4631
11.8k
    stmt_ty _res = NULL;
4632
11.8k
    int _mark = p->mark;
4633
11.8k
    { // decorators function_def_raw
4634
11.8k
        if (p->error_indicator) {
4635
0
            p->level--;
4636
0
            return NULL;
4637
0
        }
4638
11.8k
        D(fprintf(stderr, "%*c> function_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "decorators function_def_raw"));
4639
11.8k
        asdl_expr_seq* d;
4640
11.8k
        stmt_ty f;
4641
11.8k
        if (
4642
11.8k
            (d = decorators_rule(p))  // decorators
4643
1.10k
            &&
4644
1.10k
            (f = function_def_raw_rule(p))  // function_def_raw
4645
11.8k
        )
4646
638
        {
4647
638
            D(fprintf(stderr, "%*c+ function_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "decorators function_def_raw"));
4648
638
            _res = _PyPegen_function_def_decorators ( p , d , f );
4649
638
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
4650
0
                p->error_indicator = 1;
4651
0
                p->level--;
4652
0
                return NULL;
4653
0
            }
4654
638
            goto done;
4655
638
        }
4656
11.1k
        p->mark = _mark;
4657
11.1k
        D(fprintf(stderr, "%*c%s function_def[%d-%d]: %s failed!\n", p->level, ' ',
4658
11.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "decorators function_def_raw"));
4659
11.1k
    }
4660
0
    { // function_def_raw
4661
11.1k
        if (p->error_indicator) {
4662
38
            p->level--;
4663
38
            return NULL;
4664
38
        }
4665
11.1k
        D(fprintf(stderr, "%*c> function_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "function_def_raw"));
4666
11.1k
        stmt_ty function_def_raw_var;
4667
11.1k
        if (
4668
11.1k
            (function_def_raw_var = function_def_raw_rule(p))  // function_def_raw
4669
11.1k
        )
4670
8.58k
        {
4671
8.58k
            D(fprintf(stderr, "%*c+ function_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "function_def_raw"));
4672
8.58k
            _res = function_def_raw_var;
4673
8.58k
            goto done;
4674
8.58k
        }
4675
2.54k
        p->mark = _mark;
4676
2.54k
        D(fprintf(stderr, "%*c%s function_def[%d-%d]: %s failed!\n", p->level, ' ',
4677
2.54k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "function_def_raw"));
4678
2.54k
    }
4679
2.54k
    _res = NULL;
4680
11.7k
  done:
4681
11.7k
    p->level--;
4682
11.7k
    return _res;
4683
2.54k
}
4684
4685
// function_def_raw:
4686
//     | invalid_def_raw
4687
//     | 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block
4688
//     | 'async' 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block
4689
static stmt_ty
4690
function_def_raw_rule(Parser *p)
4691
12.2k
{
4692
12.2k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
4693
0
        _Pypegen_stack_overflow(p);
4694
0
    }
4695
12.2k
    if (p->error_indicator) {
4696
0
        p->level--;
4697
0
        return NULL;
4698
0
    }
4699
12.2k
    stmt_ty _res = NULL;
4700
12.2k
    int _mark = p->mark;
4701
12.2k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4702
0
        p->error_indicator = 1;
4703
0
        p->level--;
4704
0
        return NULL;
4705
0
    }
4706
12.2k
    int _start_lineno = p->tokens[_mark]->lineno;
4707
12.2k
    UNUSED(_start_lineno); // Only used by EXTRA macro
4708
12.2k
    int _start_col_offset = p->tokens[_mark]->col_offset;
4709
12.2k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
4710
12.2k
    if (p->call_invalid_rules) { // invalid_def_raw
4711
3.29k
        if (p->error_indicator) {
4712
0
            p->level--;
4713
0
            return NULL;
4714
0
        }
4715
3.29k
        D(fprintf(stderr, "%*c> function_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_def_raw"));
4716
3.29k
        void *invalid_def_raw_var;
4717
3.29k
        if (
4718
3.29k
            (invalid_def_raw_var = invalid_def_raw_rule(p))  // invalid_def_raw
4719
3.29k
        )
4720
2.00k
        {
4721
2.00k
            D(fprintf(stderr, "%*c+ function_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_def_raw"));
4722
2.00k
            _res = invalid_def_raw_var;
4723
2.00k
            goto done;
4724
2.00k
        }
4725
1.29k
        p->mark = _mark;
4726
1.29k
        D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4727
1.29k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_def_raw"));
4728
1.29k
    }
4729
10.2k
    { // 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block
4730
10.2k
        if (p->error_indicator) {
4731
244
            p->level--;
4732
244
            return NULL;
4733
244
        }
4734
9.99k
        D(fprintf(stderr, "%*c> function_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block"));
4735
9.99k
        Token * _keyword;
4736
9.99k
        Token * _literal;
4737
9.99k
        Token * _literal_1;
4738
9.99k
        Token * _literal_2;
4739
9.99k
        void *a;
4740
9.99k
        asdl_stmt_seq* b;
4741
9.99k
        expr_ty n;
4742
9.99k
        void *params;
4743
9.99k
        void *t;
4744
9.99k
        void *tc;
4745
9.99k
        if (
4746
9.99k
            (_keyword = _PyPegen_expect_token(p, 512))  // token='def'
4747
7.10k
            &&
4748
7.10k
            (n = _PyPegen_name_token(p))  // NAME
4749
7.08k
            &&
4750
7.08k
            (t = type_params_rule(p), !p->error_indicator)  // type_params?
4751
7.06k
            &&
4752
7.06k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
4753
6.98k
            &&
4754
6.98k
            (params = params_rule(p), !p->error_indicator)  // params?
4755
6.94k
            &&
4756
6.94k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
4757
6.62k
            &&
4758
6.62k
            (a = _tmp_26_rule(p), !p->error_indicator)  // ['->' expression]
4759
6.61k
            &&
4760
6.61k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
4761
6.55k
            &&
4762
6.55k
            (tc = func_type_comment_rule(p), !p->error_indicator)  // func_type_comment?
4763
6.55k
            &&
4764
6.55k
            (b = block_rule(p))  // block
4765
9.99k
        )
4766
6.40k
        {
4767
6.40k
            D(fprintf(stderr, "%*c+ function_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block"));
4768
6.40k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4769
6.40k
            if (_token == NULL) {
4770
0
                p->level--;
4771
0
                return NULL;
4772
0
            }
4773
6.40k
            int _end_lineno = _token->end_lineno;
4774
6.40k
            UNUSED(_end_lineno); // Only used by EXTRA macro
4775
6.40k
            int _end_col_offset = _token->end_col_offset;
4776
6.40k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
4777
6.40k
            _res = _PyAST_FunctionDef ( n -> v . Name . id , ( params ) ? params : CHECK ( arguments_ty , _PyPegen_empty_arguments ( p ) ) , b , NULL , a , NEW_TYPE_COMMENT ( p , tc ) , t , EXTRA );
4778
6.40k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
4779
0
                p->error_indicator = 1;
4780
0
                p->level--;
4781
0
                return NULL;
4782
0
            }
4783
6.40k
            goto done;
4784
6.40k
        }
4785
3.58k
        p->mark = _mark;
4786
3.58k
        D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4787
3.58k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block"));
4788
3.58k
    }
4789
0
    { // 'async' 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block
4790
3.58k
        if (p->error_indicator) {
4791
78
            p->level--;
4792
78
            return NULL;
4793
78
        }
4794
3.50k
        D(fprintf(stderr, "%*c> function_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async' 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block"));
4795
3.50k
        Token * _keyword;
4796
3.50k
        Token * _keyword_1;
4797
3.50k
        Token * _literal;
4798
3.50k
        Token * _literal_1;
4799
3.50k
        Token * _literal_2;
4800
3.50k
        void *a;
4801
3.50k
        asdl_stmt_seq* b;
4802
3.50k
        expr_ty n;
4803
3.50k
        void *params;
4804
3.50k
        void *t;
4805
3.50k
        void *tc;
4806
3.50k
        if (
4807
3.50k
            (_keyword = _PyPegen_expect_token(p, 513))  // token='async'
4808
1.90k
            &&
4809
1.90k
            (_keyword_1 = _PyPegen_expect_token(p, 512))  // token='def'
4810
863
            &&
4811
863
            (n = _PyPegen_name_token(p))  // NAME
4812
860
            &&
4813
860
            (t = type_params_rule(p), !p->error_indicator)  // type_params?
4814
859
            &&
4815
859
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
4816
856
            &&
4817
856
            (params = params_rule(p), !p->error_indicator)  // params?
4818
855
            &&
4819
855
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
4820
846
            &&
4821
846
            (a = _tmp_26_rule(p), !p->error_indicator)  // ['->' expression]
4822
845
            &&
4823
845
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
4824
844
            &&
4825
844
            (tc = func_type_comment_rule(p), !p->error_indicator)  // func_type_comment?
4826
843
            &&
4827
843
            (b = block_rule(p))  // block
4828
3.50k
        )
4829
817
        {
4830
817
            D(fprintf(stderr, "%*c+ function_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async' 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block"));
4831
817
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4832
817
            if (_token == NULL) {
4833
0
                p->level--;
4834
0
                return NULL;
4835
0
            }
4836
817
            int _end_lineno = _token->end_lineno;
4837
817
            UNUSED(_end_lineno); // Only used by EXTRA macro
4838
817
            int _end_col_offset = _token->end_col_offset;
4839
817
            UNUSED(_end_col_offset); // Only used by EXTRA macro
4840
817
            _res = CHECK_VERSION ( stmt_ty , 5 , "Async functions are" , _PyAST_AsyncFunctionDef ( n -> v . Name . id , ( params ) ? params : CHECK ( arguments_ty , _PyPegen_empty_arguments ( p ) ) , b , NULL , a , NEW_TYPE_COMMENT ( p , tc ) , t , EXTRA ) );
4841
817
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
4842
0
                p->error_indicator = 1;
4843
0
                p->level--;
4844
0
                return NULL;
4845
0
            }
4846
817
            goto done;
4847
817
        }
4848
2.69k
        p->mark = _mark;
4849
2.69k
        D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4850
2.69k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block"));
4851
2.69k
    }
4852
2.69k
    _res = NULL;
4853
11.9k
  done:
4854
11.9k
    p->level--;
4855
11.9k
    return _res;
4856
2.69k
}
4857
4858
// params: invalid_parameters | parameters
4859
Py_LOCAL_SYMBOL arguments_ty
4860
params_rule(Parser *p)
4861
12.4k
{
4862
12.4k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
4863
0
        _Pypegen_stack_overflow(p);
4864
0
    }
4865
12.4k
    if (p->error_indicator) {
4866
0
        p->level--;
4867
0
        return NULL;
4868
0
    }
4869
12.4k
    arguments_ty _res = NULL;
4870
12.4k
    int _mark = p->mark;
4871
12.4k
    if (p->call_invalid_rules) { // invalid_parameters
4872
4.85k
        if (p->error_indicator) {
4873
0
            p->level--;
4874
0
            return NULL;
4875
0
        }
4876
4.85k
        D(fprintf(stderr, "%*c> params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_parameters"));
4877
4.85k
        void *invalid_parameters_var;
4878
4.85k
        if (
4879
4.85k
            (invalid_parameters_var = invalid_parameters_rule(p))  // invalid_parameters
4880
4.85k
        )
4881
0
        {
4882
0
            D(fprintf(stderr, "%*c+ params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_parameters"));
4883
0
            _res = invalid_parameters_var;
4884
0
            goto done;
4885
0
        }
4886
4.85k
        p->mark = _mark;
4887
4.85k
        D(fprintf(stderr, "%*c%s params[%d-%d]: %s failed!\n", p->level, ' ',
4888
4.85k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_parameters"));
4889
4.85k
    }
4890
12.4k
    { // parameters
4891
12.4k
        if (p->error_indicator) {
4892
39
            p->level--;
4893
39
            return NULL;
4894
39
        }
4895
12.4k
        D(fprintf(stderr, "%*c> params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "parameters"));
4896
12.4k
        arguments_ty parameters_var;
4897
12.4k
        if (
4898
12.4k
            (parameters_var = parameters_rule(p))  // parameters
4899
12.4k
        )
4900
9.70k
        {
4901
9.70k
            D(fprintf(stderr, "%*c+ params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "parameters"));
4902
9.70k
            _res = parameters_var;
4903
9.70k
            goto done;
4904
9.70k
        }
4905
2.75k
        p->mark = _mark;
4906
2.75k
        D(fprintf(stderr, "%*c%s params[%d-%d]: %s failed!\n", p->level, ' ',
4907
2.75k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "parameters"));
4908
2.75k
    }
4909
2.75k
    _res = NULL;
4910
12.4k
  done:
4911
12.4k
    p->level--;
4912
12.4k
    return _res;
4913
2.75k
}
4914
4915
// parameters:
4916
//     | slash_no_default param_no_default* param_with_default* star_etc?
4917
//     | slash_with_default param_with_default* star_etc?
4918
//     | param_no_default+ param_with_default* star_etc?
4919
//     | param_with_default+ star_etc?
4920
//     | star_etc
4921
static arguments_ty
4922
parameters_rule(Parser *p)
4923
12.4k
{
4924
12.4k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
4925
0
        _Pypegen_stack_overflow(p);
4926
0
    }
4927
12.4k
    if (p->error_indicator) {
4928
0
        p->level--;
4929
0
        return NULL;
4930
0
    }
4931
12.4k
    arguments_ty _res = NULL;
4932
12.4k
    int _mark = p->mark;
4933
12.4k
    { // slash_no_default param_no_default* param_with_default* star_etc?
4934
12.4k
        if (p->error_indicator) {
4935
0
            p->level--;
4936
0
            return NULL;
4937
0
        }
4938
12.4k
        D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_no_default param_no_default* param_with_default* star_etc?"));
4939
12.4k
        asdl_arg_seq* a;
4940
12.4k
        asdl_arg_seq* b;
4941
12.4k
        asdl_seq * c;
4942
12.4k
        void *d;
4943
12.4k
        if (
4944
12.4k
            (a = slash_no_default_rule(p))  // slash_no_default
4945
794
            &&
4946
794
            (b = (asdl_arg_seq*)_loop0_27_rule(p))  // param_no_default*
4947
794
            &&
4948
794
            (c = _loop0_28_rule(p))  // param_with_default*
4949
793
            &&
4950
793
            (d = star_etc_rule(p), !p->error_indicator)  // star_etc?
4951
12.4k
        )
4952
791
        {
4953
791
            D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_no_default param_no_default* param_with_default* star_etc?"));
4954
791
            _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , a , NULL , b , c , d ) );
4955
791
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
4956
0
                p->error_indicator = 1;
4957
0
                p->level--;
4958
0
                return NULL;
4959
0
            }
4960
791
            goto done;
4961
791
        }
4962
11.6k
        p->mark = _mark;
4963
11.6k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4964
11.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_no_default param_no_default* param_with_default* star_etc?"));
4965
11.6k
    }
4966
0
    { // slash_with_default param_with_default* star_etc?
4967
11.6k
        if (p->error_indicator) {
4968
14
            p->level--;
4969
14
            return NULL;
4970
14
        }
4971
11.6k
        D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
4972
11.6k
        SlashWithDefault* a;
4973
11.6k
        asdl_seq * b;
4974
11.6k
        void *c;
4975
11.6k
        if (
4976
11.6k
            (a = slash_with_default_rule(p))  // slash_with_default
4977
530
            &&
4978
530
            (b = _loop0_28_rule(p))  // param_with_default*
4979
530
            &&
4980
530
            (c = star_etc_rule(p), !p->error_indicator)  // star_etc?
4981
11.6k
        )
4982
528
        {
4983
528
            D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
4984
528
            _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , NULL , a , NULL , b , c ) );
4985
528
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
4986
0
                p->error_indicator = 1;
4987
0
                p->level--;
4988
0
                return NULL;
4989
0
            }
4990
528
            goto done;
4991
528
        }
4992
11.1k
        p->mark = _mark;
4993
11.1k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4994
11.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
4995
11.1k
    }
4996
0
    { // param_no_default+ param_with_default* star_etc?
4997
11.1k
        if (p->error_indicator) {
4998
13
            p->level--;
4999
13
            return NULL;
5000
13
        }
5001
11.1k
        D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
5002
11.1k
        asdl_arg_seq* a;
5003
11.1k
        asdl_seq * b;
5004
11.1k
        void *c;
5005
11.1k
        if (
5006
11.1k
            (a = (asdl_arg_seq*)_loop1_29_rule(p))  // param_no_default+
5007
3.68k
            &&
5008
3.68k
            (b = _loop0_28_rule(p))  // param_with_default*
5009
3.68k
            &&
5010
3.68k
            (c = star_etc_rule(p), !p->error_indicator)  // star_etc?
5011
11.1k
        )
5012
3.68k
        {
5013
3.68k
            D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
5014
3.68k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
5015
3.68k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
5016
0
                p->error_indicator = 1;
5017
0
                p->level--;
5018
0
                return NULL;
5019
0
            }
5020
3.68k
            goto done;
5021
3.68k
        }
5022
7.42k
        p->mark = _mark;
5023
7.42k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
5024
7.42k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
5025
7.42k
    }
5026
0
    { // param_with_default+ star_etc?
5027
7.42k
        if (p->error_indicator) {
5028
2
            p->level--;
5029
2
            return NULL;
5030
2
        }
5031
7.42k
        D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+ star_etc?"));
5032
7.42k
        asdl_seq * a;
5033
7.42k
        void *b;
5034
7.42k
        if (
5035
7.42k
            (a = _loop1_30_rule(p))  // param_with_default+
5036
890
            &&
5037
890
            (b = star_etc_rule(p), !p->error_indicator)  // star_etc?
5038
7.42k
        )
5039
889
        {
5040
889
            D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+ star_etc?"));
5041
889
            _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
5042
889
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
5043
0
                p->error_indicator = 1;
5044
0
                p->level--;
5045
0
                return NULL;
5046
0
            }
5047
889
            goto done;
5048
889
        }
5049
6.53k
        p->mark = _mark;
5050
6.53k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
5051
6.53k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default+ star_etc?"));
5052
6.53k
    }
5053
0
    { // star_etc
5054
6.53k
        if (p->error_indicator) {
5055
1
            p->level--;
5056
1
            return NULL;
5057
1
        }
5058
6.53k
        D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_etc"));
5059
6.53k
        StarEtc* a;
5060
6.53k
        if (
5061
6.53k
            (a = star_etc_rule(p))  // star_etc
5062
6.53k
        )
5063
3.81k
        {
5064
3.81k
            D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_etc"));
5065
3.81k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
5066
3.81k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
5067
0
                p->error_indicator = 1;
5068
0
                p->level--;
5069
0
                return NULL;
5070
0
            }
5071
3.81k
            goto done;
5072
3.81k
        }
5073
2.72k
        p->mark = _mark;
5074
2.72k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
5075
2.72k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_etc"));
5076
2.72k
    }
5077
2.72k
    _res = NULL;
5078
12.4k
  done:
5079
12.4k
    p->level--;
5080
12.4k
    return _res;
5081
2.72k
}
5082
5083
// slash_no_default: param_no_default+ '/' ',' | param_no_default+ '/' &')'
5084
Py_LOCAL_SYMBOL asdl_arg_seq*
5085
slash_no_default_rule(Parser *p)
5086
26.9k
{
5087
26.9k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
5088
0
        _Pypegen_stack_overflow(p);
5089
0
    }
5090
26.9k
    if (p->error_indicator) {
5091
0
        p->level--;
5092
0
        return NULL;
5093
0
    }
5094
26.9k
    asdl_arg_seq* _res = NULL;
5095
26.9k
    int _mark = p->mark;
5096
26.9k
    { // param_no_default+ '/' ','
5097
26.9k
        if (p->error_indicator) {
5098
0
            p->level--;
5099
0
            return NULL;
5100
0
        }
5101
26.9k
        D(fprintf(stderr, "%*c> slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' ','"));
5102
26.9k
        Token * _literal;
5103
26.9k
        Token * _literal_1;
5104
26.9k
        asdl_arg_seq* a;
5105
26.9k
        if (
5106
26.9k
            (a = (asdl_arg_seq*)_loop1_29_rule(p))  // param_no_default+
5107
7.00k
            &&
5108
7.00k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
5109
1.61k
            &&
5110
1.61k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
5111
26.9k
        )
5112
155
        {
5113
155
            D(fprintf(stderr, "%*c+ slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' ','"));
5114
155
            _res = a;
5115
155
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
5116
0
                p->error_indicator = 1;
5117
0
                p->level--;
5118
0
                return NULL;
5119
0
            }
5120
155
            goto done;
5121
155
        }
5122
26.8k
        p->mark = _mark;
5123
26.8k
        D(fprintf(stderr, "%*c%s slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5124
26.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ '/' ','"));
5125
26.8k
    }
5126
0
    { // param_no_default+ '/' &')'
5127
26.8k
        if (p->error_indicator) {
5128
12
            p->level--;
5129
12
            return NULL;
5130
12
        }
5131
26.8k
        D(fprintf(stderr, "%*c> slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' &')'"));
5132
26.8k
        Token * _literal;
5133
26.8k
        asdl_arg_seq* a;
5134
26.8k
        if (
5135
26.8k
            (a = (asdl_arg_seq*)_loop1_29_rule(p))  // param_no_default+
5136
6.84k
            &&
5137
6.84k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
5138
1.45k
            &&
5139
1.45k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5140
26.8k
        )
5141
1.42k
        {
5142
1.42k
            D(fprintf(stderr, "%*c+ slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' &')'"));
5143
1.42k
            _res = a;
5144
1.42k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
5145
0
                p->error_indicator = 1;
5146
0
                p->level--;
5147
0
                return NULL;
5148
0
            }
5149
1.42k
            goto done;
5150
1.42k
        }
5151
25.3k
        p->mark = _mark;
5152
25.3k
        D(fprintf(stderr, "%*c%s slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5153
25.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ '/' &')'"));
5154
25.3k
    }
5155
25.3k
    _res = NULL;
5156
26.9k
  done:
5157
26.9k
    p->level--;
5158
26.9k
    return _res;
5159
25.3k
}
5160
5161
// slash_with_default:
5162
//     | param_no_default* param_with_default+ '/' ','
5163
//     | param_no_default* param_with_default+ '/' &')'
5164
Py_LOCAL_SYMBOL SlashWithDefault*
5165
slash_with_default_rule(Parser *p)
5166
25.6k
{
5167
25.6k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
5168
0
        _Pypegen_stack_overflow(p);
5169
0
    }
5170
25.6k
    if (p->error_indicator) {
5171
0
        p->level--;
5172
0
        return NULL;
5173
0
    }
5174
25.6k
    SlashWithDefault* _res = NULL;
5175
25.6k
    int _mark = p->mark;
5176
25.6k
    { // param_no_default* param_with_default+ '/' ','
5177
25.6k
        if (p->error_indicator) {
5178
0
            p->level--;
5179
0
            return NULL;
5180
0
        }
5181
25.6k
        D(fprintf(stderr, "%*c> slash_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
5182
25.6k
        Token * _literal;
5183
25.6k
        Token * _literal_1;
5184
25.6k
        asdl_seq * a;
5185
25.6k
        asdl_seq * b;
5186
25.6k
        if (
5187
25.6k
            (a = _loop0_27_rule(p))  // param_no_default*
5188
25.6k
            &&
5189
25.6k
            (b = _loop1_30_rule(p))  // param_with_default+
5190
4.93k
            &&
5191
4.93k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
5192
1.58k
            &&
5193
1.58k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
5194
25.6k
        )
5195
1.42k
        {
5196
1.42k
            D(fprintf(stderr, "%*c+ slash_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
5197
1.42k
            _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
5198
1.42k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
5199
0
                p->error_indicator = 1;
5200
0
                p->level--;
5201
0
                return NULL;
5202
0
            }
5203
1.42k
            goto done;
5204
1.42k
        }
5205
24.2k
        p->mark = _mark;
5206
24.2k
        D(fprintf(stderr, "%*c%s slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5207
24.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
5208
24.2k
    }
5209
0
    { // param_no_default* param_with_default+ '/' &')'
5210
24.2k
        if (p->error_indicator) {
5211
16
            p->level--;
5212
16
            return NULL;
5213
16
        }
5214
24.2k
        D(fprintf(stderr, "%*c> slash_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
5215
24.2k
        Token * _literal;
5216
24.2k
        asdl_seq * a;
5217
24.2k
        asdl_seq * b;
5218
24.2k
        if (
5219
24.2k
            (a = _loop0_27_rule(p))  // param_no_default*
5220
24.2k
            &&
5221
24.2k
            (b = _loop1_30_rule(p))  // param_with_default+
5222
3.50k
            &&
5223
3.50k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
5224
154
            &&
5225
154
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5226
24.2k
        )
5227
136
        {
5228
136
            D(fprintf(stderr, "%*c+ slash_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
5229
136
            _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
5230
136
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
5231
0
                p->error_indicator = 1;
5232
0
                p->level--;
5233
0
                return NULL;
5234
0
            }
5235
136
            goto done;
5236
136
        }
5237
24.0k
        p->mark = _mark;
5238
24.0k
        D(fprintf(stderr, "%*c%s slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5239
24.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
5240
24.0k
    }
5241
24.0k
    _res = NULL;
5242
25.6k
  done:
5243
25.6k
    p->level--;
5244
25.6k
    return _res;
5245
24.0k
}
5246
5247
// star_etc:
5248
//     | invalid_star_etc
5249
//     | '*' param_no_default param_maybe_default* kwds?
5250
//     | '*' param_no_default_star_annotation param_maybe_default* kwds?
5251
//     | '*' ',' param_maybe_default+ kwds?
5252
//     | kwds
5253
static StarEtc*
5254
star_etc_rule(Parser *p)
5255
12.4k
{
5256
12.4k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
5257
0
        _Pypegen_stack_overflow(p);
5258
0
    }
5259
12.4k
    if (p->error_indicator) {
5260
1
        p->level--;
5261
1
        return NULL;
5262
1
    }
5263
12.4k
    StarEtc* _res = NULL;
5264
12.4k
    int _mark = p->mark;
5265
12.4k
    if (p->call_invalid_rules) { // invalid_star_etc
5266
4.81k
        if (p->error_indicator) {
5267
0
            p->level--;
5268
0
            return NULL;
5269
0
        }
5270
4.81k
        D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_star_etc"));
5271
4.81k
        void *invalid_star_etc_var;
5272
4.81k
        if (
5273
4.81k
            (invalid_star_etc_var = invalid_star_etc_rule(p))  // invalid_star_etc
5274
4.81k
        )
5275
0
        {
5276
0
            D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_star_etc"));
5277
0
            _res = invalid_star_etc_var;
5278
0
            goto done;
5279
0
        }
5280
4.81k
        p->mark = _mark;
5281
4.81k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5282
4.81k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_star_etc"));
5283
4.81k
    }
5284
12.4k
    { // '*' param_no_default param_maybe_default* kwds?
5285
12.4k
        if (p->error_indicator) {
5286
10
            p->level--;
5287
10
            return NULL;
5288
10
        }
5289
12.4k
        D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
5290
12.4k
        Token * _literal;
5291
12.4k
        arg_ty a;
5292
12.4k
        asdl_seq * b;
5293
12.4k
        void *c;
5294
12.4k
        if (
5295
12.4k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
5296
3.17k
            &&
5297
3.17k
            (a = param_no_default_rule(p))  // param_no_default
5298
703
            &&
5299
703
            (b = _loop0_31_rule(p))  // param_maybe_default*
5300
703
            &&
5301
703
            (c = kwds_rule(p), !p->error_indicator)  // kwds?
5302
12.4k
        )
5303
700
        {
5304
700
            D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
5305
700
            _res = _PyPegen_star_etc ( p , a , b , c );
5306
700
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
5307
0
                p->error_indicator = 1;
5308
0
                p->level--;
5309
0
                return NULL;
5310
0
            }
5311
700
            goto done;
5312
700
        }
5313
11.7k
        p->mark = _mark;
5314
11.7k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5315
11.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
5316
11.7k
    }
5317
0
    { // '*' param_no_default_star_annotation param_maybe_default* kwds?
5318
11.7k
        if (p->error_indicator) {
5319
9
            p->level--;
5320
9
            return NULL;
5321
9
        }
5322
11.7k
        D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' param_no_default_star_annotation param_maybe_default* kwds?"));
5323
11.7k
        Token * _literal;
5324
11.7k
        arg_ty a;
5325
11.7k
        asdl_seq * b;
5326
11.7k
        void *c;
5327
11.7k
        if (
5328
11.7k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
5329
2.46k
            &&
5330
2.46k
            (a = param_no_default_star_annotation_rule(p))  // param_no_default_star_annotation
5331
1.48k
            &&
5332
1.48k
            (b = _loop0_31_rule(p))  // param_maybe_default*
5333
1.48k
            &&
5334
1.48k
            (c = kwds_rule(p), !p->error_indicator)  // kwds?
5335
11.7k
        )
5336
1.48k
        {
5337
1.48k
            D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' param_no_default_star_annotation param_maybe_default* kwds?"));
5338
1.48k
            _res = _PyPegen_star_etc ( p , a , b , c );
5339
1.48k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
5340
0
                p->error_indicator = 1;
5341
0
                p->level--;
5342
0
                return NULL;
5343
0
            }
5344
1.48k
            goto done;
5345
1.48k
        }
5346
10.2k
        p->mark = _mark;
5347
10.2k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5348
10.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' param_no_default_star_annotation param_maybe_default* kwds?"));
5349
10.2k
    }
5350
0
    { // '*' ',' param_maybe_default+ kwds?
5351
10.2k
        if (p->error_indicator) {
5352
5
            p->level--;
5353
5
            return NULL;
5354
5
        }
5355
10.2k
        D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
5356
10.2k
        Token * _literal;
5357
10.2k
        Token * _literal_1;
5358
10.2k
        asdl_seq * b;
5359
10.2k
        void *c;
5360
10.2k
        if (
5361
10.2k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
5362
974
            &&
5363
974
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
5364
915
            &&
5365
915
            (b = _loop1_32_rule(p))  // param_maybe_default+
5366
854
            &&
5367
854
            (c = kwds_rule(p), !p->error_indicator)  // kwds?
5368
10.2k
        )
5369
853
        {
5370
853
            D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
5371
853
            _res = _PyPegen_star_etc ( p , NULL , b , c );
5372
853
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
5373
0
                p->error_indicator = 1;
5374
0
                p->level--;
5375
0
                return NULL;
5376
0
            }
5377
853
            goto done;
5378
853
        }
5379
9.37k
        p->mark = _mark;
5380
9.37k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5381
9.37k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
5382
9.37k
    }
5383
0
    { // kwds
5384
9.37k
        if (p->error_indicator) {
5385
7
            p->level--;
5386
7
            return NULL;
5387
7
        }
5388
9.37k
        D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwds"));
5389
9.37k
        arg_ty a;
5390
9.37k
        if (
5391
9.37k
            (a = kwds_rule(p))  // kwds
5392
9.37k
        )
5393
1.00k
        {
5394
1.00k
            D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwds"));
5395
1.00k
            _res = _PyPegen_star_etc ( p , NULL , NULL , a );
5396
1.00k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
5397
0
                p->error_indicator = 1;
5398
0
                p->level--;
5399
0
                return NULL;
5400
0
            }
5401
1.00k
            goto done;
5402
1.00k
        }
5403
8.36k
        p->mark = _mark;
5404
8.36k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5405
8.36k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwds"));
5406
8.36k
    }
5407
8.36k
    _res = NULL;
5408
12.4k
  done:
5409
12.4k
    p->level--;
5410
12.4k
    return _res;
5411
8.36k
}
5412
5413
// kwds: invalid_kwds | '**' param_no_default
5414
static arg_ty
5415
kwds_rule(Parser *p)
5416
12.4k
{
5417
12.4k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
5418
0
        _Pypegen_stack_overflow(p);
5419
0
    }
5420
12.4k
    if (p->error_indicator) {
5421
4
        p->level--;
5422
4
        return NULL;
5423
4
    }
5424
12.4k
    arg_ty _res = NULL;
5425
12.4k
    int _mark = p->mark;
5426
12.4k
    if (p->call_invalid_rules) { // invalid_kwds
5427
4.80k
        if (p->error_indicator) {
5428
0
            p->level--;
5429
0
            return NULL;
5430
0
        }
5431
4.80k
        D(fprintf(stderr, "%*c> kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwds"));
5432
4.80k
        void *invalid_kwds_var;
5433
4.80k
        if (
5434
4.80k
            (invalid_kwds_var = invalid_kwds_rule(p))  // invalid_kwds
5435
4.80k
        )
5436
0
        {
5437
0
            D(fprintf(stderr, "%*c+ kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_kwds"));
5438
0
            _res = invalid_kwds_var;
5439
0
            goto done;
5440
0
        }
5441
4.80k
        p->mark = _mark;
5442
4.80k
        D(fprintf(stderr, "%*c%s kwds[%d-%d]: %s failed!\n", p->level, ' ',
5443
4.80k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwds"));
5444
4.80k
    }
5445
12.4k
    { // '**' param_no_default
5446
12.4k
        if (p->error_indicator) {
5447
8
            p->level--;
5448
8
            return NULL;
5449
8
        }
5450
12.3k
        D(fprintf(stderr, "%*c> kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param_no_default"));
5451
12.3k
        Token * _literal;
5452
12.3k
        arg_ty a;
5453
12.3k
        if (
5454
12.3k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
5455
1.05k
            &&
5456
1.05k
            (a = param_no_default_rule(p))  // param_no_default
5457
12.3k
        )
5458
1.03k
        {
5459
1.03k
            D(fprintf(stderr, "%*c+ kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' param_no_default"));
5460
1.03k
            _res = a;
5461
1.03k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
5462
0
                p->error_indicator = 1;
5463
0
                p->level--;
5464
0
                return NULL;
5465
0
            }
5466
1.03k
            goto done;
5467
1.03k
        }
5468
11.3k
        p->mark = _mark;
5469
11.3k
        D(fprintf(stderr, "%*c%s kwds[%d-%d]: %s failed!\n", p->level, ' ',
5470
11.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param_no_default"));
5471
11.3k
    }
5472
11.3k
    _res = NULL;
5473
12.3k
  done:
5474
12.3k
    p->level--;
5475
12.3k
    return _res;
5476
11.3k
}
5477
5478
// param_no_default: param ',' TYPE_COMMENT? | param TYPE_COMMENT? &')'
5479
Py_LOCAL_SYMBOL arg_ty
5480
param_no_default_rule(Parser *p)
5481
197k
{
5482
197k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
5483
0
        _Pypegen_stack_overflow(p);
5484
0
    }
5485
197k
    if (p->error_indicator) {
5486
0
        p->level--;
5487
0
        return NULL;
5488
0
    }
5489
197k
    arg_ty _res = NULL;
5490
197k
    int _mark = p->mark;
5491
197k
    { // param ',' TYPE_COMMENT?
5492
197k
        if (p->error_indicator) {
5493
0
            p->level--;
5494
0
            return NULL;
5495
0
        }
5496
197k
        D(fprintf(stderr, "%*c> param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param ',' TYPE_COMMENT?"));
5497
197k
        Token * _literal;
5498
197k
        arg_ty a;
5499
197k
        void *tc;
5500
197k
        if (
5501
197k
            (a = param_rule(p))  // param
5502
92.3k
            &&
5503
92.3k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
5504
45.4k
            &&
5505
45.4k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5506
197k
        )
5507
45.4k
        {
5508
45.4k
            D(fprintf(stderr, "%*c+ param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param ',' TYPE_COMMENT?"));
5509
45.4k
            _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5510
45.4k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
5511
0
                p->error_indicator = 1;
5512
0
                p->level--;
5513
0
                return NULL;
5514
0
            }
5515
45.4k
            goto done;
5516
45.4k
        }
5517
151k
        p->mark = _mark;
5518
151k
        D(fprintf(stderr, "%*c%s param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5519
151k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param ',' TYPE_COMMENT?"));
5520
151k
    }
5521
0
    { // param TYPE_COMMENT? &')'
5522
151k
        if (p->error_indicator) {
5523
31
            p->level--;
5524
31
            return NULL;
5525
31
        }
5526
151k
        D(fprintf(stderr, "%*c> param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param TYPE_COMMENT? &')'"));
5527
151k
        arg_ty a;
5528
151k
        void *tc;
5529
151k
        if (
5530
151k
            (a = param_rule(p))  // param
5531
46.8k
            &&
5532
46.8k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5533
46.8k
            &&
5534
46.8k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5535
151k
        )
5536
21.1k
        {
5537
21.1k
            D(fprintf(stderr, "%*c+ param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param TYPE_COMMENT? &')'"));
5538
21.1k
            _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5539
21.1k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
5540
0
                p->error_indicator = 1;
5541
0
                p->level--;
5542
0
                return NULL;
5543
0
            }
5544
21.1k
            goto done;
5545
21.1k
        }
5546
130k
        p->mark = _mark;
5547
130k
        D(fprintf(stderr, "%*c%s param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5548
130k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param TYPE_COMMENT? &')'"));
5549
130k
    }
5550
130k
    _res = NULL;
5551
197k
  done:
5552
197k
    p->level--;
5553
197k
    return _res;
5554
130k
}
5555
5556
// param_no_default_star_annotation:
5557
//     | param_star_annotation ',' TYPE_COMMENT?
5558
//     | param_star_annotation TYPE_COMMENT? &')'
5559
static arg_ty
5560
param_no_default_star_annotation_rule(Parser *p)
5561
2.46k
{
5562
2.46k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
5563
0
        _Pypegen_stack_overflow(p);
5564
0
    }
5565
2.46k
    if (p->error_indicator) {
5566
0
        p->level--;
5567
0
        return NULL;
5568
0
    }
5569
2.46k
    arg_ty _res = NULL;
5570
2.46k
    int _mark = p->mark;
5571
2.46k
    { // param_star_annotation ',' TYPE_COMMENT?
5572
2.46k
        if (p->error_indicator) {
5573
0
            p->level--;
5574
0
            return NULL;
5575
0
        }
5576
2.46k
        D(fprintf(stderr, "%*c> param_no_default_star_annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_star_annotation ',' TYPE_COMMENT?"));
5577
2.46k
        Token * _literal;
5578
2.46k
        arg_ty a;
5579
2.46k
        void *tc;
5580
2.46k
        if (
5581
2.46k
            (a = param_star_annotation_rule(p))  // param_star_annotation
5582
1.50k
            &&
5583
1.50k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
5584
56
            &&
5585
56
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5586
2.46k
        )
5587
55
        {
5588
55
            D(fprintf(stderr, "%*c+ param_no_default_star_annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_star_annotation ',' TYPE_COMMENT?"));
5589
55
            _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5590
55
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
5591
0
                p->error_indicator = 1;
5592
0
                p->level--;
5593
0
                return NULL;
5594
0
            }
5595
55
            goto done;
5596
55
        }
5597
2.40k
        p->mark = _mark;
5598
2.40k
        D(fprintf(stderr, "%*c%s param_no_default_star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
5599
2.40k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_star_annotation ',' TYPE_COMMENT?"));
5600
2.40k
    }
5601
0
    { // param_star_annotation TYPE_COMMENT? &')'
5602
2.40k
        if (p->error_indicator) {
5603
3
            p->level--;
5604
3
            return NULL;
5605
3
        }
5606
2.40k
        D(fprintf(stderr, "%*c> param_no_default_star_annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_star_annotation TYPE_COMMENT? &')'"));
5607
2.40k
        arg_ty a;
5608
2.40k
        void *tc;
5609
2.40k
        if (
5610
2.40k
            (a = param_star_annotation_rule(p))  // param_star_annotation
5611
1.44k
            &&
5612
1.44k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5613
1.44k
            &&
5614
1.44k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5615
2.40k
        )
5616
1.42k
        {
5617
1.42k
            D(fprintf(stderr, "%*c+ param_no_default_star_annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_star_annotation TYPE_COMMENT? &')'"));
5618
1.42k
            _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5619
1.42k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
5620
0
                p->error_indicator = 1;
5621
0
                p->level--;
5622
0
                return NULL;
5623
0
            }
5624
1.42k
            goto done;
5625
1.42k
        }
5626
974
        p->mark = _mark;
5627
974
        D(fprintf(stderr, "%*c%s param_no_default_star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
5628
974
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_star_annotation TYPE_COMMENT? &')'"));
5629
974
    }
5630
974
    _res = NULL;
5631
2.45k
  done:
5632
2.45k
    p->level--;
5633
2.45k
    return _res;
5634
974
}
5635
5636
// param_with_default: param default ',' TYPE_COMMENT? | param default TYPE_COMMENT? &')'
5637
Py_LOCAL_SYMBOL NameDefaultPair*
5638
param_with_default_rule(Parser *p)
5639
84.4k
{
5640
84.4k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
5641
0
        _Pypegen_stack_overflow(p);
5642
0
    }
5643
84.4k
    if (p->error_indicator) {
5644
0
        p->level--;
5645
0
        return NULL;
5646
0
    }
5647
84.4k
    NameDefaultPair* _res = NULL;
5648
84.4k
    int _mark = p->mark;
5649
84.4k
    { // param default ',' TYPE_COMMENT?
5650
84.4k
        if (p->error_indicator) {
5651
0
            p->level--;
5652
0
            return NULL;
5653
0
        }
5654
84.4k
        D(fprintf(stderr, "%*c> param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default ',' TYPE_COMMENT?"));
5655
84.4k
        Token * _literal;
5656
84.4k
        arg_ty a;
5657
84.4k
        expr_ty c;
5658
84.4k
        void *tc;
5659
84.4k
        if (
5660
84.4k
            (a = param_rule(p))  // param
5661
18.3k
            &&
5662
18.3k
            (c = default_rule(p))  // default
5663
17.8k
            &&
5664
17.8k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
5665
9.81k
            &&
5666
9.81k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5667
84.4k
        )
5668
9.81k
        {
5669
9.81k
            D(fprintf(stderr, "%*c+ param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default ',' TYPE_COMMENT?"));
5670
9.81k
            _res = _PyPegen_name_default_pair ( p , a , c , tc );
5671
9.81k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
5672
0
                p->error_indicator = 1;
5673
0
                p->level--;
5674
0
                return NULL;
5675
0
            }
5676
9.81k
            goto done;
5677
9.81k
        }
5678
74.6k
        p->mark = _mark;
5679
74.6k
        D(fprintf(stderr, "%*c%s param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5680
74.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default ',' TYPE_COMMENT?"));
5681
74.6k
    }
5682
0
    { // param default TYPE_COMMENT? &')'
5683
74.6k
        if (p->error_indicator) {
5684
16
            p->level--;
5685
16
            return NULL;
5686
16
        }
5687
74.6k
        D(fprintf(stderr, "%*c> param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default TYPE_COMMENT? &')'"));
5688
74.6k
        arg_ty a;
5689
74.6k
        expr_ty c;
5690
74.6k
        void *tc;
5691
74.6k
        if (
5692
74.6k
            (a = param_rule(p))  // param
5693
8.53k
            &&
5694
8.53k
            (c = default_rule(p))  // default
5695
8.00k
            &&
5696
8.00k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5697
8.00k
            &&
5698
8.00k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5699
74.6k
        )
5700
7.85k
        {
5701
7.85k
            D(fprintf(stderr, "%*c+ param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default TYPE_COMMENT? &')'"));
5702
7.85k
            _res = _PyPegen_name_default_pair ( p , a , c , tc );
5703
7.85k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
5704
0
                p->error_indicator = 1;
5705
0
                p->level--;
5706
0
                return NULL;
5707
0
            }
5708
7.85k
            goto done;
5709
7.85k
        }
5710
66.7k
        p->mark = _mark;
5711
66.7k
        D(fprintf(stderr, "%*c%s param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5712
66.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default TYPE_COMMENT? &')'"));
5713
66.7k
    }
5714
66.7k
    _res = NULL;
5715
84.4k
  done:
5716
84.4k
    p->level--;
5717
84.4k
    return _res;
5718
66.7k
}
5719
5720
// param_maybe_default:
5721
//     | param default? ',' TYPE_COMMENT?
5722
//     | param default? TYPE_COMMENT? &')'
5723
Py_LOCAL_SYMBOL NameDefaultPair*
5724
param_maybe_default_rule(Parser *p)
5725
36.4k
{
5726
36.4k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
5727
0
        _Pypegen_stack_overflow(p);
5728
0
    }
5729
36.4k
    if (p->error_indicator) {
5730
0
        p->level--;
5731
0
        return NULL;
5732
0
    }
5733
36.4k
    NameDefaultPair* _res = NULL;
5734
36.4k
    int _mark = p->mark;
5735
36.4k
    { // param default? ',' TYPE_COMMENT?
5736
36.4k
        if (p->error_indicator) {
5737
0
            p->level--;
5738
0
            return NULL;
5739
0
        }
5740
36.4k
        D(fprintf(stderr, "%*c> param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
5741
36.4k
        Token * _literal;
5742
36.4k
        arg_ty a;
5743
36.4k
        void *c;
5744
36.4k
        void *tc;
5745
36.4k
        if (
5746
36.4k
            (a = param_rule(p))  // param
5747
21.5k
            &&
5748
21.5k
            (c = default_rule(p), !p->error_indicator)  // default?
5749
21.5k
            &&
5750
21.5k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
5751
17.6k
            &&
5752
17.6k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5753
36.4k
        )
5754
17.6k
        {
5755
17.6k
            D(fprintf(stderr, "%*c+ param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
5756
17.6k
            _res = _PyPegen_name_default_pair ( p , a , c , tc );
5757
17.6k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
5758
0
                p->error_indicator = 1;
5759
0
                p->level--;
5760
0
                return NULL;
5761
0
            }
5762
17.6k
            goto done;
5763
17.6k
        }
5764
18.8k
        p->mark = _mark;
5765
18.8k
        D(fprintf(stderr, "%*c%s param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
5766
18.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
5767
18.8k
    }
5768
0
    { // param default? TYPE_COMMENT? &')'
5769
18.8k
        if (p->error_indicator) {
5770
12
            p->level--;
5771
12
            return NULL;
5772
12
        }
5773
18.7k
        D(fprintf(stderr, "%*c> param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
5774
18.7k
        arg_ty a;
5775
18.7k
        void *c;
5776
18.7k
        void *tc;
5777
18.7k
        if (
5778
18.7k
            (a = param_rule(p))  // param
5779
3.85k
            &&
5780
3.85k
            (c = default_rule(p), !p->error_indicator)  // default?
5781
3.85k
            &&
5782
3.85k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5783
3.85k
            &&
5784
3.85k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5785
18.7k
        )
5786
3.62k
        {
5787
3.62k
            D(fprintf(stderr, "%*c+ param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
5788
3.62k
            _res = _PyPegen_name_default_pair ( p , a , c , tc );
5789
3.62k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
5790
0
                p->error_indicator = 1;
5791
0
                p->level--;
5792
0
                return NULL;
5793
0
            }
5794
3.62k
            goto done;
5795
3.62k
        }
5796
15.1k
        p->mark = _mark;
5797
15.1k
        D(fprintf(stderr, "%*c%s param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
5798
15.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
5799
15.1k
    }
5800
15.1k
    _res = NULL;
5801
36.4k
  done:
5802
36.4k
    p->level--;
5803
36.4k
    return _res;
5804
15.1k
}
5805
5806
// param: NAME annotation?
5807
Py_LOCAL_SYMBOL arg_ty
5808
param_rule(Parser *p)
5809
566k
{
5810
566k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
5811
0
        _Pypegen_stack_overflow(p);
5812
0
    }
5813
566k
    if (p->error_indicator) {
5814
0
        p->level--;
5815
0
        return NULL;
5816
0
    }
5817
566k
    arg_ty _res = NULL;
5818
566k
    int _mark = p->mark;
5819
566k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5820
18
        p->error_indicator = 1;
5821
18
        p->level--;
5822
18
        return NULL;
5823
18
    }
5824
566k
    int _start_lineno = p->tokens[_mark]->lineno;
5825
566k
    UNUSED(_start_lineno); // Only used by EXTRA macro
5826
566k
    int _start_col_offset = p->tokens[_mark]->col_offset;
5827
566k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
5828
566k
    { // NAME annotation?
5829
566k
        if (p->error_indicator) {
5830
0
            p->level--;
5831
0
            return NULL;
5832
0
        }
5833
566k
        D(fprintf(stderr, "%*c> param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME annotation?"));
5834
566k
        expr_ty a;
5835
566k
        void *b;
5836
566k
        if (
5837
566k
            (a = _PyPegen_name_token(p))  // NAME
5838
193k
            &&
5839
193k
            (b = annotation_rule(p), !p->error_indicator)  // annotation?
5840
566k
        )
5841
193k
        {
5842
193k
            D(fprintf(stderr, "%*c+ param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME annotation?"));
5843
193k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5844
193k
            if (_token == NULL) {
5845
0
                p->level--;
5846
0
                return NULL;
5847
0
            }
5848
193k
            int _end_lineno = _token->end_lineno;
5849
193k
            UNUSED(_end_lineno); // Only used by EXTRA macro
5850
193k
            int _end_col_offset = _token->end_col_offset;
5851
193k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
5852
193k
            _res = _PyAST_arg ( a -> v . Name . id , b , NULL , EXTRA );
5853
193k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
5854
0
                p->error_indicator = 1;
5855
0
                p->level--;
5856
0
                return NULL;
5857
0
            }
5858
193k
            goto done;
5859
193k
        }
5860
372k
        p->mark = _mark;
5861
372k
        D(fprintf(stderr, "%*c%s param[%d-%d]: %s failed!\n", p->level, ' ',
5862
372k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME annotation?"));
5863
372k
    }
5864
372k
    _res = NULL;
5865
566k
  done:
5866
566k
    p->level--;
5867
566k
    return _res;
5868
372k
}
5869
5870
// param_star_annotation: NAME star_annotation
5871
static arg_ty
5872
param_star_annotation_rule(Parser *p)
5873
4.86k
{
5874
4.86k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
5875
0
        _Pypegen_stack_overflow(p);
5876
0
    }
5877
4.86k
    if (p->error_indicator) {
5878
0
        p->level--;
5879
0
        return NULL;
5880
0
    }
5881
4.86k
    arg_ty _res = NULL;
5882
4.86k
    int _mark = p->mark;
5883
4.86k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5884
0
        p->error_indicator = 1;
5885
0
        p->level--;
5886
0
        return NULL;
5887
0
    }
5888
4.86k
    int _start_lineno = p->tokens[_mark]->lineno;
5889
4.86k
    UNUSED(_start_lineno); // Only used by EXTRA macro
5890
4.86k
    int _start_col_offset = p->tokens[_mark]->col_offset;
5891
4.86k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
5892
4.86k
    { // NAME star_annotation
5893
4.86k
        if (p->error_indicator) {
5894
0
            p->level--;
5895
0
            return NULL;
5896
0
        }
5897
4.86k
        D(fprintf(stderr, "%*c> param_star_annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME star_annotation"));
5898
4.86k
        expr_ty a;
5899
4.86k
        expr_ty b;
5900
4.86k
        if (
5901
4.86k
            (a = _PyPegen_name_token(p))  // NAME
5902
3.00k
            &&
5903
3.00k
            (b = star_annotation_rule(p))  // star_annotation
5904
4.86k
        )
5905
2.95k
        {
5906
2.95k
            D(fprintf(stderr, "%*c+ param_star_annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME star_annotation"));
5907
2.95k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5908
2.95k
            if (_token == NULL) {
5909
0
                p->level--;
5910
0
                return NULL;
5911
0
            }
5912
2.95k
            int _end_lineno = _token->end_lineno;
5913
2.95k
            UNUSED(_end_lineno); // Only used by EXTRA macro
5914
2.95k
            int _end_col_offset = _token->end_col_offset;
5915
2.95k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
5916
2.95k
            _res = _PyAST_arg ( a -> v . Name . id , b , NULL , EXTRA );
5917
2.95k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
5918
0
                p->error_indicator = 1;
5919
0
                p->level--;
5920
0
                return NULL;
5921
0
            }
5922
2.95k
            goto done;
5923
2.95k
        }
5924
1.91k
        p->mark = _mark;
5925
1.91k
        D(fprintf(stderr, "%*c%s param_star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
5926
1.91k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME star_annotation"));
5927
1.91k
    }
5928
1.91k
    _res = NULL;
5929
4.86k
  done:
5930
4.86k
    p->level--;
5931
4.86k
    return _res;
5932
1.91k
}
5933
5934
// annotation: ':' expression
5935
static expr_ty
5936
annotation_rule(Parser *p)
5937
193k
{
5938
193k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
5939
0
        _Pypegen_stack_overflow(p);
5940
0
    }
5941
193k
    if (p->error_indicator) {
5942
0
        p->level--;
5943
0
        return NULL;
5944
0
    }
5945
193k
    expr_ty _res = NULL;
5946
193k
    int _mark = p->mark;
5947
193k
    { // ':' expression
5948
193k
        if (p->error_indicator) {
5949
0
            p->level--;
5950
0
            return NULL;
5951
0
        }
5952
193k
        D(fprintf(stderr, "%*c> annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression"));
5953
193k
        Token * _literal;
5954
193k
        expr_ty a;
5955
193k
        if (
5956
193k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5957
9.96k
            &&
5958
9.96k
            (a = expression_rule(p))  // expression
5959
193k
        )
5960
3.18k
        {
5961
3.18k
            D(fprintf(stderr, "%*c+ annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression"));
5962
3.18k
            _res = a;
5963
3.18k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
5964
0
                p->error_indicator = 1;
5965
0
                p->level--;
5966
0
                return NULL;
5967
0
            }
5968
3.18k
            goto done;
5969
3.18k
        }
5970
190k
        p->mark = _mark;
5971
190k
        D(fprintf(stderr, "%*c%s annotation[%d-%d]: %s failed!\n", p->level, ' ',
5972
190k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression"));
5973
190k
    }
5974
190k
    _res = NULL;
5975
193k
  done:
5976
193k
    p->level--;
5977
193k
    return _res;
5978
190k
}
5979
5980
// star_annotation: ':' star_expression
5981
static expr_ty
5982
star_annotation_rule(Parser *p)
5983
3.00k
{
5984
3.00k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
5985
0
        _Pypegen_stack_overflow(p);
5986
0
    }
5987
3.00k
    if (p->error_indicator) {
5988
0
        p->level--;
5989
0
        return NULL;
5990
0
    }
5991
3.00k
    expr_ty _res = NULL;
5992
3.00k
    int _mark = p->mark;
5993
3.00k
    { // ':' star_expression
5994
3.00k
        if (p->error_indicator) {
5995
0
            p->level--;
5996
0
            return NULL;
5997
0
        }
5998
3.00k
        D(fprintf(stderr, "%*c> star_annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' star_expression"));
5999
3.00k
        Token * _literal;
6000
3.00k
        expr_ty a;
6001
3.00k
        if (
6002
3.00k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6003
2.97k
            &&
6004
2.97k
            (a = star_expression_rule(p))  // star_expression
6005
3.00k
        )
6006
2.95k
        {
6007
2.95k
            D(fprintf(stderr, "%*c+ star_annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' star_expression"));
6008
2.95k
            _res = a;
6009
2.95k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
6010
0
                p->error_indicator = 1;
6011
0
                p->level--;
6012
0
                return NULL;
6013
0
            }
6014
2.95k
            goto done;
6015
2.95k
        }
6016
52
        p->mark = _mark;
6017
52
        D(fprintf(stderr, "%*c%s star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
6018
52
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' star_expression"));
6019
52
    }
6020
52
    _res = NULL;
6021
3.00k
  done:
6022
3.00k
    p->level--;
6023
3.00k
    return _res;
6024
52
}
6025
6026
// default: '=' expression | invalid_default
6027
static expr_ty
6028
default_rule(Parser *p)
6029
762k
{
6030
762k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
6031
0
        _Pypegen_stack_overflow(p);
6032
0
    }
6033
762k
    if (p->error_indicator) {
6034
0
        p->level--;
6035
0
        return NULL;
6036
0
    }
6037
762k
    expr_ty _res = NULL;
6038
762k
    int _mark = p->mark;
6039
762k
    { // '=' expression
6040
762k
        if (p->error_indicator) {
6041
0
            p->level--;
6042
0
            return NULL;
6043
0
        }
6044
762k
        D(fprintf(stderr, "%*c> default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' expression"));
6045
762k
        Token * _literal;
6046
762k
        expr_ty a;
6047
762k
        if (
6048
762k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
6049
93.2k
            &&
6050
93.2k
            (a = expression_rule(p))  // expression
6051
762k
        )
6052
72.3k
        {
6053
72.3k
            D(fprintf(stderr, "%*c+ default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' expression"));
6054
72.3k
            _res = a;
6055
72.3k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
6056
0
                p->error_indicator = 1;
6057
0
                p->level--;
6058
0
                return NULL;
6059
0
            }
6060
72.3k
            goto done;
6061
72.3k
        }
6062
690k
        p->mark = _mark;
6063
690k
        D(fprintf(stderr, "%*c%s default[%d-%d]: %s failed!\n", p->level, ' ',
6064
690k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' expression"));
6065
690k
    }
6066
690k
    if (p->call_invalid_rules) { // invalid_default
6067
680k
        if (p->error_indicator) {
6068
875
            p->level--;
6069
875
            return NULL;
6070
875
        }
6071
680k
        D(fprintf(stderr, "%*c> default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_default"));
6072
680k
        void *invalid_default_var;
6073
680k
        if (
6074
680k
            (invalid_default_var = invalid_default_rule(p))  // invalid_default
6075
680k
        )
6076
0
        {
6077
0
            D(fprintf(stderr, "%*c+ default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_default"));
6078
0
            _res = invalid_default_var;
6079
0
            goto done;
6080
0
        }
6081
680k
        p->mark = _mark;
6082
680k
        D(fprintf(stderr, "%*c%s default[%d-%d]: %s failed!\n", p->level, ' ',
6083
680k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_default"));
6084
680k
    }
6085
689k
    _res = NULL;
6086
761k
  done:
6087
761k
    p->level--;
6088
761k
    return _res;
6089
689k
}
6090
6091
// if_stmt:
6092
//     | invalid_if_stmt
6093
//     | 'if' named_expression ':' block elif_stmt
6094
//     | 'if' named_expression ':' block else_block?
6095
static stmt_ty
6096
if_stmt_rule(Parser *p)
6097
3.87k
{
6098
3.87k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
6099
0
        _Pypegen_stack_overflow(p);
6100
0
    }
6101
3.87k
    if (p->error_indicator) {
6102
0
        p->level--;
6103
0
        return NULL;
6104
0
    }
6105
3.87k
    stmt_ty _res = NULL;
6106
3.87k
    int _mark = p->mark;
6107
3.87k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6108
0
        p->error_indicator = 1;
6109
0
        p->level--;
6110
0
        return NULL;
6111
0
    }
6112
3.87k
    int _start_lineno = p->tokens[_mark]->lineno;
6113
3.87k
    UNUSED(_start_lineno); // Only used by EXTRA macro
6114
3.87k
    int _start_col_offset = p->tokens[_mark]->col_offset;
6115
3.87k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
6116
3.87k
    if (p->call_invalid_rules) { // invalid_if_stmt
6117
1.02k
        if (p->error_indicator) {
6118
0
            p->level--;
6119
0
            return NULL;
6120
0
        }
6121
1.02k
        D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_if_stmt"));
6122
1.02k
        void *invalid_if_stmt_var;
6123
1.02k
        if (
6124
1.02k
            (invalid_if_stmt_var = invalid_if_stmt_rule(p))  // invalid_if_stmt
6125
1.02k
        )
6126
0
        {
6127
0
            D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_if_stmt"));
6128
0
            _res = invalid_if_stmt_var;
6129
0
            goto done;
6130
0
        }
6131
1.02k
        p->mark = _mark;
6132
1.02k
        D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6133
1.02k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_if_stmt"));
6134
1.02k
    }
6135
3.87k
    { // 'if' named_expression ':' block elif_stmt
6136
3.87k
        if (p->error_indicator) {
6137
11
            p->level--;
6138
11
            return NULL;
6139
11
        }
6140
3.86k
        D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
6141
3.86k
        Token * _keyword;
6142
3.86k
        Token * _literal;
6143
3.86k
        expr_ty a;
6144
3.86k
        asdl_stmt_seq* b;
6145
3.86k
        stmt_ty c;
6146
3.86k
        if (
6147
3.86k
            (_keyword = _PyPegen_expect_token(p, 514))  // token='if'
6148
3.86k
            &&
6149
3.86k
            (a = named_expression_rule(p))  // named_expression
6150
3.83k
            &&
6151
3.83k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6152
3.83k
            &&
6153
3.83k
            (b = block_rule(p))  // block
6154
3.74k
            &&
6155
3.74k
            (c = elif_stmt_rule(p))  // elif_stmt
6156
3.86k
        )
6157
182
        {
6158
182
            D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
6159
182
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6160
182
            if (_token == NULL) {
6161
0
                p->level--;
6162
0
                return NULL;
6163
0
            }
6164
182
            int _end_lineno = _token->end_lineno;
6165
182
            UNUSED(_end_lineno); // Only used by EXTRA macro
6166
182
            int _end_col_offset = _token->end_col_offset;
6167
182
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6168
182
            _res = _PyAST_If ( a , b , CHECK ( asdl_stmt_seq* , _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
6169
182
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
6170
0
                p->error_indicator = 1;
6171
0
                p->level--;
6172
0
                return NULL;
6173
0
            }
6174
182
            goto done;
6175
182
        }
6176
3.68k
        p->mark = _mark;
6177
3.68k
        D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6178
3.68k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
6179
3.68k
    }
6180
0
    { // 'if' named_expression ':' block else_block?
6181
3.68k
        if (p->error_indicator) {
6182
46
            p->level--;
6183
46
            return NULL;
6184
46
        }
6185
3.63k
        D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block else_block?"));
6186
3.63k
        Token * _keyword;
6187
3.63k
        Token * _literal;
6188
3.63k
        expr_ty a;
6189
3.63k
        asdl_stmt_seq* b;
6190
3.63k
        void *c;
6191
3.63k
        if (
6192
3.63k
            (_keyword = _PyPegen_expect_token(p, 514))  // token='if'
6193
3.63k
            &&
6194
3.63k
            (a = named_expression_rule(p))  // named_expression
6195
3.61k
            &&
6196
3.61k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6197
3.60k
            &&
6198
3.60k
            (b = block_rule(p))  // block
6199
3.53k
            &&
6200
3.53k
            (c = else_block_rule(p), !p->error_indicator)  // else_block?
6201
3.63k
        )
6202
3.53k
        {
6203
3.53k
            D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block else_block?"));
6204
3.53k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6205
3.53k
            if (_token == NULL) {
6206
0
                p->level--;
6207
0
                return NULL;
6208
0
            }
6209
3.53k
            int _end_lineno = _token->end_lineno;
6210
3.53k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6211
3.53k
            int _end_col_offset = _token->end_col_offset;
6212
3.53k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6213
3.53k
            _res = _PyAST_If ( a , b , c , EXTRA );
6214
3.53k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
6215
0
                p->error_indicator = 1;
6216
0
                p->level--;
6217
0
                return NULL;
6218
0
            }
6219
3.53k
            goto done;
6220
3.53k
        }
6221
103
        p->mark = _mark;
6222
103
        D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6223
103
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' block else_block?"));
6224
103
    }
6225
103
    _res = NULL;
6226
3.81k
  done:
6227
3.81k
    p->level--;
6228
3.81k
    return _res;
6229
103
}
6230
6231
// elif_stmt:
6232
//     | invalid_elif_stmt
6233
//     | 'elif' named_expression ':' block elif_stmt
6234
//     | 'elif' named_expression ':' block else_block?
6235
static stmt_ty
6236
elif_stmt_rule(Parser *p)
6237
4.81k
{
6238
4.81k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
6239
0
        _Pypegen_stack_overflow(p);
6240
0
    }
6241
4.81k
    if (p->error_indicator) {
6242
0
        p->level--;
6243
0
        return NULL;
6244
0
    }
6245
4.81k
    stmt_ty _res = NULL;
6246
4.81k
    int _mark = p->mark;
6247
4.81k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6248
1
        p->error_indicator = 1;
6249
1
        p->level--;
6250
1
        return NULL;
6251
1
    }
6252
4.81k
    int _start_lineno = p->tokens[_mark]->lineno;
6253
4.81k
    UNUSED(_start_lineno); // Only used by EXTRA macro
6254
4.81k
    int _start_col_offset = p->tokens[_mark]->col_offset;
6255
4.81k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
6256
4.81k
    if (p->call_invalid_rules) { // invalid_elif_stmt
6257
1.32k
        if (p->error_indicator) {
6258
0
            p->level--;
6259
0
            return NULL;
6260
0
        }
6261
1.32k
        D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_elif_stmt"));
6262
1.32k
        void *invalid_elif_stmt_var;
6263
1.32k
        if (
6264
1.32k
            (invalid_elif_stmt_var = invalid_elif_stmt_rule(p))  // invalid_elif_stmt
6265
1.32k
        )
6266
0
        {
6267
0
            D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_elif_stmt"));
6268
0
            _res = invalid_elif_stmt_var;
6269
0
            goto done;
6270
0
        }
6271
1.32k
        p->mark = _mark;
6272
1.32k
        D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6273
1.32k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_elif_stmt"));
6274
1.32k
    }
6275
4.81k
    { // 'elif' named_expression ':' block elif_stmt
6276
4.81k
        if (p->error_indicator) {
6277
10
            p->level--;
6278
10
            return NULL;
6279
10
        }
6280
4.80k
        D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
6281
4.80k
        Token * _keyword;
6282
4.80k
        Token * _literal;
6283
4.80k
        expr_ty a;
6284
4.80k
        asdl_stmt_seq* b;
6285
4.80k
        stmt_ty c;
6286
4.80k
        if (
6287
4.80k
            (_keyword = _PyPegen_expect_token(p, 521))  // token='elif'
6288
1.11k
            &&
6289
1.11k
            (a = named_expression_rule(p))  // named_expression
6290
1.10k
            &&
6291
1.10k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6292
1.09k
            &&
6293
1.09k
            (b = block_rule(p))  // block
6294
1.07k
            &&
6295
1.07k
            (c = elif_stmt_rule(p))  // elif_stmt
6296
4.80k
        )
6297
679
        {
6298
679
            D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
6299
679
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6300
679
            if (_token == NULL) {
6301
0
                p->level--;
6302
0
                return NULL;
6303
0
            }
6304
679
            int _end_lineno = _token->end_lineno;
6305
679
            UNUSED(_end_lineno); // Only used by EXTRA macro
6306
679
            int _end_col_offset = _token->end_col_offset;
6307
679
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6308
679
            _res = _PyAST_If ( a , b , CHECK ( asdl_stmt_seq* , _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
6309
679
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
6310
0
                p->error_indicator = 1;
6311
0
                p->level--;
6312
0
                return NULL;
6313
0
            }
6314
679
            goto done;
6315
679
        }
6316
4.12k
        p->mark = _mark;
6317
4.12k
        D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6318
4.12k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
6319
4.12k
    }
6320
0
    { // 'elif' named_expression ':' block else_block?
6321
4.12k
        if (p->error_indicator) {
6322
218
            p->level--;
6323
218
            return NULL;
6324
218
        }
6325
3.90k
        D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block else_block?"));
6326
3.90k
        Token * _keyword;
6327
3.90k
        Token * _literal;
6328
3.90k
        expr_ty a;
6329
3.90k
        asdl_stmt_seq* b;
6330
3.90k
        void *c;
6331
3.90k
        if (
6332
3.90k
            (_keyword = _PyPegen_expect_token(p, 521))  // token='elif'
6333
214
            &&
6334
214
            (a = named_expression_rule(p))  // named_expression
6335
211
            &&
6336
211
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6337
203
            &&
6338
203
            (b = block_rule(p))  // block
6339
183
            &&
6340
183
            (c = else_block_rule(p), !p->error_indicator)  // else_block?
6341
3.90k
        )
6342
182
        {
6343
182
            D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block else_block?"));
6344
182
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6345
182
            if (_token == NULL) {
6346
0
                p->level--;
6347
0
                return NULL;
6348
0
            }
6349
182
            int _end_lineno = _token->end_lineno;
6350
182
            UNUSED(_end_lineno); // Only used by EXTRA macro
6351
182
            int _end_col_offset = _token->end_col_offset;
6352
182
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6353
182
            _res = _PyAST_If ( a , b , c , EXTRA );
6354
182
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
6355
0
                p->error_indicator = 1;
6356
0
                p->level--;
6357
0
                return NULL;
6358
0
            }
6359
182
            goto done;
6360
182
        }
6361
3.72k
        p->mark = _mark;
6362
3.72k
        D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6363
3.72k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' block else_block?"));
6364
3.72k
    }
6365
3.72k
    _res = NULL;
6366
4.58k
  done:
6367
4.58k
    p->level--;
6368
4.58k
    return _res;
6369
3.72k
}
6370
6371
// else_block: invalid_else_stmt | 'else' &&':' block
6372
static asdl_stmt_seq*
6373
else_block_rule(Parser *p)
6374
9.58k
{
6375
9.58k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
6376
0
        _Pypegen_stack_overflow(p);
6377
0
    }
6378
9.58k
    if (p->error_indicator) {
6379
0
        p->level--;
6380
0
        return NULL;
6381
0
    }
6382
9.58k
    asdl_stmt_seq* _res = NULL;
6383
9.58k
    int _mark = p->mark;
6384
9.58k
    if (p->call_invalid_rules) { // invalid_else_stmt
6385
2.88k
        if (p->error_indicator) {
6386
0
            p->level--;
6387
0
            return NULL;
6388
0
        }
6389
2.88k
        D(fprintf(stderr, "%*c> else_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_else_stmt"));
6390
2.88k
        void *invalid_else_stmt_var;
6391
2.88k
        if (
6392
2.88k
            (invalid_else_stmt_var = invalid_else_stmt_rule(p))  // invalid_else_stmt
6393
2.88k
        )
6394
0
        {
6395
0
            D(fprintf(stderr, "%*c+ else_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_else_stmt"));
6396
0
            _res = invalid_else_stmt_var;
6397
0
            goto done;
6398
0
        }
6399
2.88k
        p->mark = _mark;
6400
2.88k
        D(fprintf(stderr, "%*c%s else_block[%d-%d]: %s failed!\n", p->level, ' ',
6401
2.88k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_else_stmt"));
6402
2.88k
    }
6403
9.58k
    { // 'else' &&':' block
6404
9.58k
        if (p->error_indicator) {
6405
9
            p->level--;
6406
9
            return NULL;
6407
9
        }
6408
9.57k
        D(fprintf(stderr, "%*c> else_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else' &&':' block"));
6409
9.57k
        Token * _keyword;
6410
9.57k
        Token * _literal;
6411
9.57k
        asdl_stmt_seq* b;
6412
9.57k
        if (
6413
9.57k
            (_keyword = _PyPegen_expect_token(p, 522))  // token='else'
6414
576
            &&
6415
576
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
6416
572
            &&
6417
572
            (b = block_rule(p))  // block
6418
9.57k
        )
6419
547
        {
6420
547
            D(fprintf(stderr, "%*c+ else_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else' &&':' block"));
6421
547
            _res = b;
6422
547
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
6423
0
                p->error_indicator = 1;
6424
0
                p->level--;
6425
0
                return NULL;
6426
0
            }
6427
547
            goto done;
6428
547
        }
6429
9.03k
        p->mark = _mark;
6430
9.03k
        D(fprintf(stderr, "%*c%s else_block[%d-%d]: %s failed!\n", p->level, ' ',
6431
9.03k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else' &&':' block"));
6432
9.03k
    }
6433
9.03k
    _res = NULL;
6434
9.57k
  done:
6435
9.57k
    p->level--;
6436
9.57k
    return _res;
6437
9.03k
}
6438
6439
// while_stmt: invalid_while_stmt | 'while' named_expression ':' block else_block?
6440
static stmt_ty
6441
while_stmt_rule(Parser *p)
6442
1.02k
{
6443
1.02k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
6444
0
        _Pypegen_stack_overflow(p);
6445
0
    }
6446
1.02k
    if (p->error_indicator) {
6447
0
        p->level--;
6448
0
        return NULL;
6449
0
    }
6450
1.02k
    stmt_ty _res = NULL;
6451
1.02k
    int _mark = p->mark;
6452
1.02k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6453
0
        p->error_indicator = 1;
6454
0
        p->level--;
6455
0
        return NULL;
6456
0
    }
6457
1.02k
    int _start_lineno = p->tokens[_mark]->lineno;
6458
1.02k
    UNUSED(_start_lineno); // Only used by EXTRA macro
6459
1.02k
    int _start_col_offset = p->tokens[_mark]->col_offset;
6460
1.02k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
6461
1.02k
    if (p->call_invalid_rules) { // invalid_while_stmt
6462
348
        if (p->error_indicator) {
6463
0
            p->level--;
6464
0
            return NULL;
6465
0
        }
6466
348
        D(fprintf(stderr, "%*c> while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_while_stmt"));
6467
348
        void *invalid_while_stmt_var;
6468
348
        if (
6469
348
            (invalid_while_stmt_var = invalid_while_stmt_rule(p))  // invalid_while_stmt
6470
348
        )
6471
0
        {
6472
0
            D(fprintf(stderr, "%*c+ while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_while_stmt"));
6473
0
            _res = invalid_while_stmt_var;
6474
0
            goto done;
6475
0
        }
6476
348
        p->mark = _mark;
6477
348
        D(fprintf(stderr, "%*c%s while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6478
348
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_while_stmt"));
6479
348
    }
6480
1.02k
    { // 'while' named_expression ':' block else_block?
6481
1.02k
        if (p->error_indicator) {
6482
7
            p->level--;
6483
7
            return NULL;
6484
7
        }
6485
1.02k
        D(fprintf(stderr, "%*c> while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' block else_block?"));
6486
1.02k
        Token * _keyword;
6487
1.02k
        Token * _literal;
6488
1.02k
        expr_ty a;
6489
1.02k
        asdl_stmt_seq* b;
6490
1.02k
        void *c;
6491
1.02k
        if (
6492
1.02k
            (_keyword = _PyPegen_expect_token(p, 519))  // token='while'
6493
1.02k
            &&
6494
1.02k
            (a = named_expression_rule(p))  // named_expression
6495
1.01k
            &&
6496
1.01k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6497
1.00k
            &&
6498
1.00k
            (b = block_rule(p))  // block
6499
960
            &&
6500
960
            (c = else_block_rule(p), !p->error_indicator)  // else_block?
6501
1.02k
        )
6502
959
        {
6503
959
            D(fprintf(stderr, "%*c+ while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' block else_block?"));
6504
959
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6505
959
            if (_token == NULL) {
6506
0
                p->level--;
6507
0
                return NULL;
6508
0
            }
6509
959
            int _end_lineno = _token->end_lineno;
6510
959
            UNUSED(_end_lineno); // Only used by EXTRA macro
6511
959
            int _end_col_offset = _token->end_col_offset;
6512
959
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6513
959
            _res = _PyAST_While ( a , b , c , EXTRA );
6514
959
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
6515
0
                p->error_indicator = 1;
6516
0
                p->level--;
6517
0
                return NULL;
6518
0
            }
6519
959
            goto done;
6520
959
        }
6521
61
        p->mark = _mark;
6522
61
        D(fprintf(stderr, "%*c%s while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6523
61
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression ':' block else_block?"));
6524
61
    }
6525
61
    _res = NULL;
6526
1.02k
  done:
6527
1.02k
    p->level--;
6528
1.02k
    return _res;
6529
61
}
6530
6531
// for_stmt:
6532
//     | invalid_for_stmt
6533
//     | 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?
6534
//     | 'async' 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?
6535
//     | invalid_for_target
6536
static stmt_ty
6537
for_stmt_rule(Parser *p)
6538
1.48k
{
6539
1.48k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
6540
0
        _Pypegen_stack_overflow(p);
6541
0
    }
6542
1.48k
    if (p->error_indicator) {
6543
0
        p->level--;
6544
0
        return NULL;
6545
0
    }
6546
1.48k
    stmt_ty _res = NULL;
6547
1.48k
    int _mark = p->mark;
6548
1.48k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6549
0
        p->error_indicator = 1;
6550
0
        p->level--;
6551
0
        return NULL;
6552
0
    }
6553
1.48k
    int _start_lineno = p->tokens[_mark]->lineno;
6554
1.48k
    UNUSED(_start_lineno); // Only used by EXTRA macro
6555
1.48k
    int _start_col_offset = p->tokens[_mark]->col_offset;
6556
1.48k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
6557
1.48k
    if (p->call_invalid_rules) { // invalid_for_stmt
6558
437
        if (p->error_indicator) {
6559
0
            p->level--;
6560
0
            return NULL;
6561
0
        }
6562
437
        D(fprintf(stderr, "%*c> for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_stmt"));
6563
437
        void *invalid_for_stmt_var;
6564
437
        if (
6565
437
            (invalid_for_stmt_var = invalid_for_stmt_rule(p))  // invalid_for_stmt
6566
437
        )
6567
0
        {
6568
0
            D(fprintf(stderr, "%*c+ for_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_stmt"));
6569
0
            _res = invalid_for_stmt_var;
6570
0
            goto done;
6571
0
        }
6572
437
        p->mark = _mark;
6573
437
        D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6574
437
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_stmt"));
6575
437
    }
6576
1.48k
    { // 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?
6577
1.48k
        if (p->error_indicator) {
6578
9
            p->level--;
6579
9
            return NULL;
6580
9
        }
6581
1.47k
        D(fprintf(stderr, "%*c> for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?"));
6582
1.47k
        int _cut_var = 0;
6583
1.47k
        Token * _keyword;
6584
1.47k
        Token * _keyword_1;
6585
1.47k
        Token * _literal;
6586
1.47k
        asdl_stmt_seq* b;
6587
1.47k
        void *el;
6588
1.47k
        expr_ty ex;
6589
1.47k
        expr_ty t;
6590
1.47k
        void *tc;
6591
1.47k
        if (
6592
1.47k
            (_keyword = _PyPegen_expect_token(p, 517))  // token='for'
6593
1.10k
            &&
6594
1.10k
            (t = star_targets_rule(p))  // star_targets
6595
1.06k
            &&
6596
1.06k
            (_keyword_1 = _PyPegen_expect_token(p, 523))  // token='in'
6597
1.05k
            &&
6598
1.05k
            (_cut_var = 1)
6599
1.05k
            &&
6600
1.05k
            (ex = star_expressions_rule(p))  // star_expressions
6601
1.04k
            &&
6602
1.04k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6603
1.04k
            &&
6604
1.04k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6605
1.04k
            &&
6606
1.04k
            (b = block_rule(p))  // block
6607
993
            &&
6608
993
            (el = else_block_rule(p), !p->error_indicator)  // else_block?
6609
1.47k
        )
6610
991
        {
6611
991
            D(fprintf(stderr, "%*c+ for_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?"));
6612
991
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6613
991
            if (_token == NULL) {
6614
0
                p->level--;
6615
0
                return NULL;
6616
0
            }
6617
991
            int _end_lineno = _token->end_lineno;
6618
991
            UNUSED(_end_lineno); // Only used by EXTRA macro
6619
991
            int _end_col_offset = _token->end_col_offset;
6620
991
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6621
991
            _res = _PyAST_For ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
6622
991
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
6623
0
                p->error_indicator = 1;
6624
0
                p->level--;
6625
0
                return NULL;
6626
0
            }
6627
991
            goto done;
6628
991
        }
6629
487
        p->mark = _mark;
6630
487
        D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6631
487
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?"));
6632
487
        if (_cut_var) {
6633
62
            p->level--;
6634
62
            return NULL;
6635
62
        }
6636
487
    }
6637
425
    { // 'async' 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?
6638
425
        if (p->error_indicator) {
6639
3
            p->level--;
6640
3
            return NULL;
6641
3
        }
6642
422
        D(fprintf(stderr, "%*c> for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async' 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?"));
6643
422
        int _cut_var = 0;
6644
422
        Token * _keyword;
6645
422
        Token * _keyword_1;
6646
422
        Token * _keyword_2;
6647
422
        Token * _literal;
6648
422
        asdl_stmt_seq* b;
6649
422
        void *el;
6650
422
        expr_ty ex;
6651
422
        expr_ty t;
6652
422
        void *tc;
6653
422
        if (
6654
422
            (_keyword = _PyPegen_expect_token(p, 513))  // token='async'
6655
373
            &&
6656
373
            (_keyword_1 = _PyPegen_expect_token(p, 517))  // token='for'
6657
254
            &&
6658
254
            (t = star_targets_rule(p))  // star_targets
6659
250
            &&
6660
250
            (_keyword_2 = _PyPegen_expect_token(p, 523))  // token='in'
6661
247
            &&
6662
247
            (_cut_var = 1)
6663
247
            &&
6664
247
            (ex = star_expressions_rule(p))  // star_expressions
6665
244
            &&
6666
244
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6667
241
            &&
6668
241
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6669
240
            &&
6670
240
            (b = block_rule(p))  // block
6671
230
            &&
6672
230
            (el = else_block_rule(p), !p->error_indicator)  // else_block?
6673
422
        )
6674
229
        {
6675
229
            D(fprintf(stderr, "%*c+ for_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async' 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?"));
6676
229
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6677
229
            if (_token == NULL) {
6678
0
                p->level--;
6679
0
                return NULL;
6680
0
            }
6681
229
            int _end_lineno = _token->end_lineno;
6682
229
            UNUSED(_end_lineno); // Only used by EXTRA macro
6683
229
            int _end_col_offset = _token->end_col_offset;
6684
229
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6685
229
            _res = CHECK_VERSION ( stmt_ty , 5 , "Async for loops are" , _PyAST_AsyncFor ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
6686
229
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
6687
0
                p->error_indicator = 1;
6688
0
                p->level--;
6689
0
                return NULL;
6690
0
            }
6691
229
            goto done;
6692
229
        }
6693
193
        p->mark = _mark;
6694
193
        D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6695
193
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?"));
6696
193
        if (_cut_var) {
6697
18
            p->level--;
6698
18
            return NULL;
6699
18
        }
6700
193
    }
6701
175
    if (p->call_invalid_rules) { // invalid_for_target
6702
73
        if (p->error_indicator) {
6703
0
            p->level--;
6704
0
            return NULL;
6705
0
        }
6706
73
        D(fprintf(stderr, "%*c> for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
6707
73
        void *invalid_for_target_var;
6708
73
        if (
6709
73
            (invalid_for_target_var = invalid_for_target_rule(p))  // invalid_for_target
6710
73
        )
6711
0
        {
6712
0
            D(fprintf(stderr, "%*c+ for_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
6713
0
            _res = invalid_for_target_var;
6714
0
            goto done;
6715
0
        }
6716
73
        p->mark = _mark;
6717
73
        D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6718
73
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_target"));
6719
73
    }
6720
175
    _res = NULL;
6721
1.39k
  done:
6722
1.39k
    p->level--;
6723
1.39k
    return _res;
6724
175
}
6725
6726
// with_stmt:
6727
//     | invalid_with_stmt_indent
6728
//     | 'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block
6729
//     | 'with' ','.with_item+ ':' TYPE_COMMENT? block
6730
//     | 'async' 'with' '(' ','.with_item+ ','? ')' ':' block
6731
//     | 'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block
6732
//     | invalid_with_stmt
6733
static stmt_ty
6734
with_stmt_rule(Parser *p)
6735
5.46k
{
6736
5.46k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
6737
0
        _Pypegen_stack_overflow(p);
6738
0
    }
6739
5.46k
    if (p->error_indicator) {
6740
0
        p->level--;
6741
0
        return NULL;
6742
0
    }
6743
5.46k
    stmt_ty _res = NULL;
6744
5.46k
    int _mark = p->mark;
6745
5.46k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6746
0
        p->error_indicator = 1;
6747
0
        p->level--;
6748
0
        return NULL;
6749
0
    }
6750
5.46k
    int _start_lineno = p->tokens[_mark]->lineno;
6751
5.46k
    UNUSED(_start_lineno); // Only used by EXTRA macro
6752
5.46k
    int _start_col_offset = p->tokens[_mark]->col_offset;
6753
5.46k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
6754
5.46k
    if (p->call_invalid_rules) { // invalid_with_stmt_indent
6755
2.30k
        if (p->error_indicator) {
6756
0
            p->level--;
6757
0
            return NULL;
6758
0
        }
6759
2.30k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt_indent"));
6760
2.30k
        void *invalid_with_stmt_indent_var;
6761
2.30k
        if (
6762
2.30k
            (invalid_with_stmt_indent_var = invalid_with_stmt_indent_rule(p))  // invalid_with_stmt_indent
6763
2.30k
        )
6764
0
        {
6765
0
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt_indent"));
6766
0
            _res = invalid_with_stmt_indent_var;
6767
0
            goto done;
6768
0
        }
6769
2.30k
        p->mark = _mark;
6770
2.30k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6771
2.30k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_stmt_indent"));
6772
2.30k
    }
6773
5.46k
    { // 'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block
6774
5.46k
        if (p->error_indicator) {
6775
44
            p->level--;
6776
44
            return NULL;
6777
44
        }
6778
5.41k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block"));
6779
5.41k
        Token * _keyword;
6780
5.41k
        Token * _literal;
6781
5.41k
        Token * _literal_1;
6782
5.41k
        Token * _literal_2;
6783
5.41k
        void *_opt_var;
6784
5.41k
        UNUSED(_opt_var); // Silence compiler warnings
6785
5.41k
        asdl_withitem_seq* a;
6786
5.41k
        asdl_stmt_seq* b;
6787
5.41k
        void *tc;
6788
5.41k
        if (
6789
5.41k
            (_keyword = _PyPegen_expect_token(p, 516))  // token='with'
6790
4.34k
            &&
6791
4.34k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
6792
3.32k
            &&
6793
3.32k
            (a = (asdl_withitem_seq*)_gather_34_rule(p))  // ','.with_item+
6794
2.53k
            &&
6795
2.53k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
6796
2.53k
            &&
6797
2.53k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
6798
1.97k
            &&
6799
1.97k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
6800
1.09k
            &&
6801
1.09k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6802
1.09k
            &&
6803
1.09k
            (b = block_rule(p))  // block
6804
5.41k
        )
6805
1.07k
        {
6806
1.07k
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block"));
6807
1.07k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6808
1.07k
            if (_token == NULL) {
6809
0
                p->level--;
6810
0
                return NULL;
6811
0
            }
6812
1.07k
            int _end_lineno = _token->end_lineno;
6813
1.07k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6814
1.07k
            int _end_col_offset = _token->end_col_offset;
6815
1.07k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6816
1.07k
            _res = _PyAST_With ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
6817
1.07k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
6818
0
                p->error_indicator = 1;
6819
0
                p->level--;
6820
0
                return NULL;
6821
0
            }
6822
1.07k
            goto done;
6823
1.07k
        }
6824
4.34k
        p->mark = _mark;
6825
4.34k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6826
4.34k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block"));
6827
4.34k
    }
6828
0
    { // 'with' ','.with_item+ ':' TYPE_COMMENT? block
6829
4.34k
        if (p->error_indicator) {
6830
12
            p->level--;
6831
12
            return NULL;
6832
12
        }
6833
4.33k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6834
4.33k
        Token * _keyword;
6835
4.33k
        Token * _literal;
6836
4.33k
        asdl_withitem_seq* a;
6837
4.33k
        asdl_stmt_seq* b;
6838
4.33k
        void *tc;
6839
4.33k
        if (
6840
4.33k
            (_keyword = _PyPegen_expect_token(p, 516))  // token='with'
6841
3.26k
            &&
6842
3.26k
            (a = (asdl_withitem_seq*)_gather_34_rule(p))  // ','.with_item+
6843
3.10k
            &&
6844
3.10k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6845
2.96k
            &&
6846
2.96k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6847
2.96k
            &&
6848
2.96k
            (b = block_rule(p))  // block
6849
4.33k
        )
6850
2.85k
        {
6851
2.85k
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6852
2.85k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6853
2.85k
            if (_token == NULL) {
6854
0
                p->level--;
6855
0
                return NULL;
6856
0
            }
6857
2.85k
            int _end_lineno = _token->end_lineno;
6858
2.85k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6859
2.85k
            int _end_col_offset = _token->end_col_offset;
6860
2.85k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6861
2.85k
            _res = _PyAST_With ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
6862
2.85k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
6863
0
                p->error_indicator = 1;
6864
0
                p->level--;
6865
0
                return NULL;
6866
0
            }
6867
2.85k
            goto done;
6868
2.85k
        }
6869
1.48k
        p->mark = _mark;
6870
1.48k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6871
1.48k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6872
1.48k
    }
6873
0
    { // 'async' 'with' '(' ','.with_item+ ','? ')' ':' block
6874
1.48k
        if (p->error_indicator) {
6875
26
            p->level--;
6876
26
            return NULL;
6877
26
        }
6878
1.45k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async' 'with' '(' ','.with_item+ ','? ')' ':' block"));
6879
1.45k
        Token * _keyword;
6880
1.45k
        Token * _keyword_1;
6881
1.45k
        Token * _literal;
6882
1.45k
        Token * _literal_1;
6883
1.45k
        Token * _literal_2;
6884
1.45k
        void *_opt_var;
6885
1.45k
        UNUSED(_opt_var); // Silence compiler warnings
6886
1.45k
        asdl_withitem_seq* a;
6887
1.45k
        asdl_stmt_seq* b;
6888
1.45k
        if (
6889
1.45k
            (_keyword = _PyPegen_expect_token(p, 513))  // token='async'
6890
1.07k
            &&
6891
1.07k
            (_keyword_1 = _PyPegen_expect_token(p, 516))  // token='with'
6892
753
            &&
6893
753
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
6894
634
            &&
6895
634
            (a = (asdl_withitem_seq*)_gather_34_rule(p))  // ','.with_item+
6896
545
            &&
6897
545
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
6898
544
            &&
6899
544
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
6900
384
            &&
6901
384
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
6902
307
            &&
6903
307
            (b = block_rule(p))  // block
6904
1.45k
        )
6905
296
        {
6906
296
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async' 'with' '(' ','.with_item+ ','? ')' ':' block"));
6907
296
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6908
296
            if (_token == NULL) {
6909
0
                p->level--;
6910
0
                return NULL;
6911
0
            }
6912
296
            int _end_lineno = _token->end_lineno;
6913
296
            UNUSED(_end_lineno); // Only used by EXTRA macro
6914
296
            int _end_col_offset = _token->end_col_offset;
6915
296
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6916
296
            _res = CHECK_VERSION ( stmt_ty , 5 , "Async with statements are" , _PyAST_AsyncWith ( a , b , NULL , EXTRA ) );
6917
296
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
6918
0
                p->error_indicator = 1;
6919
0
                p->level--;
6920
0
                return NULL;
6921
0
            }
6922
296
            goto done;
6923
296
        }
6924
1.16k
        p->mark = _mark;
6925
1.16k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6926
1.16k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'with' '(' ','.with_item+ ','? ')' ':' block"));
6927
1.16k
    }
6928
0
    { // 'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block
6929
1.16k
        if (p->error_indicator) {
6930
6
            p->level--;
6931
6
            return NULL;
6932
6
        }
6933
1.15k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6934
1.15k
        Token * _keyword;
6935
1.15k
        Token * _keyword_1;
6936
1.15k
        Token * _literal;
6937
1.15k
        asdl_withitem_seq* a;
6938
1.15k
        asdl_stmt_seq* b;
6939
1.15k
        void *tc;
6940
1.15k
        if (
6941
1.15k
            (_keyword = _PyPegen_expect_token(p, 513))  // token='async'
6942
769
            &&
6943
769
            (_keyword_1 = _PyPegen_expect_token(p, 516))  // token='with'
6944
451
            &&
6945
451
            (a = (asdl_withitem_seq*)_gather_34_rule(p))  // ','.with_item+
6946
434
            &&
6947
434
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6948
408
            &&
6949
408
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6950
407
            &&
6951
407
            (b = block_rule(p))  // block
6952
1.15k
        )
6953
382
        {
6954
382
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6955
382
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6956
382
            if (_token == NULL) {
6957
0
                p->level--;
6958
0
                return NULL;
6959
0
            }
6960
382
            int _end_lineno = _token->end_lineno;
6961
382
            UNUSED(_end_lineno); // Only used by EXTRA macro
6962
382
            int _end_col_offset = _token->end_col_offset;
6963
382
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6964
382
            _res = CHECK_VERSION ( stmt_ty , 5 , "Async with statements are" , _PyAST_AsyncWith ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
6965
382
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
6966
0
                p->error_indicator = 1;
6967
0
                p->level--;
6968
0
                return NULL;
6969
0
            }
6970
382
            goto done;
6971
382
        }
6972
774
        p->mark = _mark;
6973
774
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6974
774
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6975
774
    }
6976
774
    if (p->call_invalid_rules) { // invalid_with_stmt
6977
306
        if (p->error_indicator) {
6978
5
            p->level--;
6979
5
            return NULL;
6980
5
        }
6981
301
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt"));
6982
301
        void *invalid_with_stmt_var;
6983
301
        if (
6984
301
            (invalid_with_stmt_var = invalid_with_stmt_rule(p))  // invalid_with_stmt
6985
301
        )
6986
0
        {
6987
0
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt"));
6988
0
            _res = invalid_with_stmt_var;
6989
0
            goto done;
6990
0
        }
6991
301
        p->mark = _mark;
6992
301
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6993
301
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_stmt"));
6994
301
    }
6995
769
    _res = NULL;
6996
5.36k
  done:
6997
5.36k
    p->level--;
6998
5.36k
    return _res;
6999
769
}
7000
7001
// with_item:
7002
//     | expression 'as' star_target &(',' | ')' | ':')
7003
//     | invalid_with_item
7004
//     | expression
7005
static withitem_ty
7006
with_item_rule(Parser *p)
7007
17.1k
{
7008
17.1k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
7009
0
        _Pypegen_stack_overflow(p);
7010
0
    }
7011
17.1k
    if (p->error_indicator) {
7012
0
        p->level--;
7013
0
        return NULL;
7014
0
    }
7015
17.1k
    withitem_ty _res = NULL;
7016
17.1k
    int _mark = p->mark;
7017
17.1k
    { // expression 'as' star_target &(',' | ')' | ':')
7018
17.1k
        if (p->error_indicator) {
7019
0
            p->level--;
7020
0
            return NULL;
7021
0
        }
7022
17.1k
        D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
7023
17.1k
        Token * _keyword;
7024
17.1k
        expr_ty e;
7025
17.1k
        expr_ty t;
7026
17.1k
        if (
7027
17.1k
            (e = expression_rule(p))  // expression
7028
15.0k
            &&
7029
15.0k
            (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
7030
1.65k
            &&
7031
1.65k
            (t = star_target_rule(p))  // star_target
7032
1.64k
            &&
7033
1.64k
            _PyPegen_lookahead(1, _tmp_35_rule, p)
7034
17.1k
        )
7035
1.63k
        {
7036
1.63k
            D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
7037
1.63k
            _res = _PyAST_withitem ( e , t , p -> arena );
7038
1.63k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
7039
0
                p->error_indicator = 1;
7040
0
                p->level--;
7041
0
                return NULL;
7042
0
            }
7043
1.63k
            goto done;
7044
1.63k
        }
7045
15.4k
        p->mark = _mark;
7046
15.4k
        D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
7047
15.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
7048
15.4k
    }
7049
15.4k
    if (p->call_invalid_rules) { // invalid_with_item
7050
6.75k
        if (p->error_indicator) {
7051
0
            p->level--;
7052
0
            return NULL;
7053
0
        }
7054
6.75k
        D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_item"));
7055
6.75k
        void *invalid_with_item_var;
7056
6.75k
        if (
7057
6.75k
            (invalid_with_item_var = invalid_with_item_rule(p))  // invalid_with_item
7058
6.75k
        )
7059
0
        {
7060
0
            D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_with_item"));
7061
0
            _res = invalid_with_item_var;
7062
0
            goto done;
7063
0
        }
7064
6.75k
        p->mark = _mark;
7065
6.75k
        D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
7066
6.75k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_item"));
7067
6.75k
    }
7068
15.4k
    { // expression
7069
15.4k
        if (p->error_indicator) {
7070
20
            p->level--;
7071
20
            return NULL;
7072
20
        }
7073
15.4k
        D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
7074
15.4k
        expr_ty e;
7075
15.4k
        if (
7076
15.4k
            (e = expression_rule(p))  // expression
7077
15.4k
        )
7078
13.4k
        {
7079
13.4k
            D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
7080
13.4k
            _res = _PyAST_withitem ( e , NULL , p -> arena );
7081
13.4k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
7082
0
                p->error_indicator = 1;
7083
0
                p->level--;
7084
0
                return NULL;
7085
0
            }
7086
13.4k
            goto done;
7087
13.4k
        }
7088
2.04k
        p->mark = _mark;
7089
2.04k
        D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
7090
2.04k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
7091
2.04k
    }
7092
2.04k
    _res = NULL;
7093
17.1k
  done:
7094
17.1k
    p->level--;
7095
17.1k
    return _res;
7096
2.04k
}
7097
7098
// try_stmt:
7099
//     | invalid_try_stmt
7100
//     | 'try' &&':' block finally_block
7101
//     | 'try' &&':' block except_block+ else_block? finally_block?
7102
//     | 'try' &&':' block except_star_block+ else_block? finally_block?
7103
static stmt_ty
7104
try_stmt_rule(Parser *p)
7105
5.15k
{
7106
5.15k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
7107
0
        _Pypegen_stack_overflow(p);
7108
0
    }
7109
5.15k
    if (p->error_indicator) {
7110
0
        p->level--;
7111
0
        return NULL;
7112
0
    }
7113
5.15k
    stmt_ty _res = NULL;
7114
5.15k
    int _mark = p->mark;
7115
5.15k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7116
0
        p->error_indicator = 1;
7117
0
        p->level--;
7118
0
        return NULL;
7119
0
    }
7120
5.15k
    int _start_lineno = p->tokens[_mark]->lineno;
7121
5.15k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7122
5.15k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7123
5.15k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7124
5.15k
    if (p->call_invalid_rules) { // invalid_try_stmt
7125
1.90k
        if (p->error_indicator) {
7126
0
            p->level--;
7127
0
            return NULL;
7128
0
        }
7129
1.90k
        D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_try_stmt"));
7130
1.90k
        void *invalid_try_stmt_var;
7131
1.90k
        if (
7132
1.90k
            (invalid_try_stmt_var = invalid_try_stmt_rule(p))  // invalid_try_stmt
7133
1.90k
        )
7134
0
        {
7135
0
            D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_try_stmt"));
7136
0
            _res = invalid_try_stmt_var;
7137
0
            goto done;
7138
0
        }
7139
1.90k
        p->mark = _mark;
7140
1.90k
        D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7141
1.90k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_try_stmt"));
7142
1.90k
    }
7143
5.15k
    { // 'try' &&':' block finally_block
7144
5.15k
        if (p->error_indicator) {
7145
152
            p->level--;
7146
152
            return NULL;
7147
152
        }
7148
4.99k
        D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block finally_block"));
7149
4.99k
        Token * _keyword;
7150
4.99k
        Token * _literal;
7151
4.99k
        asdl_stmt_seq* b;
7152
4.99k
        asdl_stmt_seq* f;
7153
4.99k
        if (
7154
4.99k
            (_keyword = _PyPegen_expect_token(p, 518))  // token='try'
7155
4.99k
            &&
7156
4.99k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
7157
4.99k
            &&
7158
4.99k
            (b = block_rule(p))  // block
7159
4.77k
            &&
7160
4.77k
            (f = finally_block_rule(p))  // finally_block
7161
4.99k
        )
7162
861
        {
7163
861
            D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' &&':' block finally_block"));
7164
861
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7165
861
            if (_token == NULL) {
7166
0
                p->level--;
7167
0
                return NULL;
7168
0
            }
7169
861
            int _end_lineno = _token->end_lineno;
7170
861
            UNUSED(_end_lineno); // Only used by EXTRA macro
7171
861
            int _end_col_offset = _token->end_col_offset;
7172
861
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7173
861
            _res = _PyAST_Try ( b , NULL , NULL , f , EXTRA );
7174
861
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
7175
0
                p->error_indicator = 1;
7176
0
                p->level--;
7177
0
                return NULL;
7178
0
            }
7179
861
            goto done;
7180
861
        }
7181
4.13k
        p->mark = _mark;
7182
4.13k
        D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7183
4.13k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block finally_block"));
7184
4.13k
    }
7185
0
    { // 'try' &&':' block except_block+ else_block? finally_block?
7186
4.13k
        if (p->error_indicator) {
7187
25
            p->level--;
7188
25
            return NULL;
7189
25
        }
7190
4.11k
        D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
7191
4.11k
        Token * _keyword;
7192
4.11k
        Token * _literal;
7193
4.11k
        asdl_stmt_seq* b;
7194
4.11k
        void *el;
7195
4.11k
        asdl_excepthandler_seq* ex;
7196
4.11k
        void *f;
7197
4.11k
        if (
7198
4.11k
            (_keyword = _PyPegen_expect_token(p, 518))  // token='try'
7199
4.11k
            &&
7200
4.11k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
7201
4.11k
            &&
7202
4.11k
            (b = block_rule(p))  // block
7203
3.91k
            &&
7204
3.91k
            (ex = (asdl_excepthandler_seq*)_loop1_36_rule(p))  // except_block+
7205
2.34k
            &&
7206
2.34k
            (el = else_block_rule(p), !p->error_indicator)  // else_block?
7207
2.33k
            &&
7208
2.33k
            (f = finally_block_rule(p), !p->error_indicator)  // finally_block?
7209
4.11k
        )
7210
2.33k
        {
7211
2.33k
            D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
7212
2.33k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7213
2.33k
            if (_token == NULL) {
7214
0
                p->level--;
7215
0
                return NULL;
7216
0
            }
7217
2.33k
            int _end_lineno = _token->end_lineno;
7218
2.33k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7219
2.33k
            int _end_col_offset = _token->end_col_offset;
7220
2.33k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7221
2.33k
            _res = _PyAST_Try ( b , ex , el , f , EXTRA );
7222
2.33k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
7223
0
                p->error_indicator = 1;
7224
0
                p->level--;
7225
0
                return NULL;
7226
0
            }
7227
2.33k
            goto done;
7228
2.33k
        }
7229
1.77k
        p->mark = _mark;
7230
1.77k
        D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7231
1.77k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
7232
1.77k
    }
7233
0
    { // 'try' &&':' block except_star_block+ else_block? finally_block?
7234
1.77k
        if (p->error_indicator) {
7235
16
            p->level--;
7236
16
            return NULL;
7237
16
        }
7238
1.75k
        D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_star_block+ else_block? finally_block?"));
7239
1.75k
        Token * _keyword;
7240
1.75k
        Token * _literal;
7241
1.75k
        asdl_stmt_seq* b;
7242
1.75k
        void *el;
7243
1.75k
        asdl_excepthandler_seq* ex;
7244
1.75k
        void *f;
7245
1.75k
        if (
7246
1.75k
            (_keyword = _PyPegen_expect_token(p, 518))  // token='try'
7247
1.75k
            &&
7248
1.75k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
7249
1.75k
            &&
7250
1.75k
            (b = block_rule(p))  // block
7251
1.55k
            &&
7252
1.55k
            (ex = (asdl_excepthandler_seq*)_loop1_37_rule(p))  // except_star_block+
7253
1.33k
            &&
7254
1.33k
            (el = else_block_rule(p), !p->error_indicator)  // else_block?
7255
1.33k
            &&
7256
1.33k
            (f = finally_block_rule(p), !p->error_indicator)  // finally_block?
7257
1.75k
        )
7258
1.33k
        {
7259
1.33k
            D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_star_block+ else_block? finally_block?"));
7260
1.33k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7261
1.33k
            if (_token == NULL) {
7262
0
                p->level--;
7263
0
                return NULL;
7264
0
            }
7265
1.33k
            int _end_lineno = _token->end_lineno;
7266
1.33k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7267
1.33k
            int _end_col_offset = _token->end_col_offset;
7268
1.33k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7269
1.33k
            _res = CHECK_VERSION ( stmt_ty , 11 , "Exception groups are" , _PyAST_TryStar ( b , ex , el , f , EXTRA ) );
7270
1.33k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
7271
0
                p->error_indicator = 1;
7272
0
                p->level--;
7273
0
                return NULL;
7274
0
            }
7275
1.33k
            goto done;
7276
1.33k
        }
7277
422
        p->mark = _mark;
7278
422
        D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7279
422
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block except_star_block+ else_block? finally_block?"));
7280
422
    }
7281
422
    _res = NULL;
7282
4.95k
  done:
7283
4.95k
    p->level--;
7284
4.95k
    return _res;
7285
422
}
7286
7287
// except_block:
7288
//     | invalid_except_stmt_indent
7289
//     | 'except' expression ':' block
7290
//     | 'except' expression 'as' NAME ':' block
7291
//     | 'except' expressions ':' block
7292
//     | 'except' ':' block
7293
//     | invalid_except_stmt
7294
Py_LOCAL_SYMBOL excepthandler_ty
7295
except_block_rule(Parser *p)
7296
11.5k
{
7297
11.5k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
7298
0
        _Pypegen_stack_overflow(p);
7299
0
    }
7300
11.5k
    if (p->error_indicator) {
7301
0
        p->level--;
7302
0
        return NULL;
7303
0
    }
7304
11.5k
    excepthandler_ty _res = NULL;
7305
11.5k
    int _mark = p->mark;
7306
11.5k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7307
4
        p->error_indicator = 1;
7308
4
        p->level--;
7309
4
        return NULL;
7310
4
    }
7311
11.5k
    int _start_lineno = p->tokens[_mark]->lineno;
7312
11.5k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7313
11.5k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7314
11.5k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7315
11.5k
    if (p->call_invalid_rules) { // invalid_except_stmt_indent
7316
6.44k
        if (p->error_indicator) {
7317
0
            p->level--;
7318
0
            return NULL;
7319
0
        }
7320
6.44k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt_indent"));
7321
6.44k
        void *invalid_except_stmt_indent_var;
7322
6.44k
        if (
7323
6.44k
            (invalid_except_stmt_indent_var = invalid_except_stmt_indent_rule(p))  // invalid_except_stmt_indent
7324
6.44k
        )
7325
0
        {
7326
0
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt_indent"));
7327
0
            _res = invalid_except_stmt_indent_var;
7328
0
            goto done;
7329
0
        }
7330
6.44k
        p->mark = _mark;
7331
6.44k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7332
6.44k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_stmt_indent"));
7333
6.44k
    }
7334
11.5k
    { // 'except' expression ':' block
7335
11.5k
        if (p->error_indicator) {
7336
8
            p->level--;
7337
8
            return NULL;
7338
8
        }
7339
11.5k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ':' block"));
7340
11.5k
        Token * _keyword;
7341
11.5k
        Token * _literal;
7342
11.5k
        asdl_stmt_seq* b;
7343
11.5k
        expr_ty e;
7344
11.5k
        if (
7345
11.5k
            (_keyword = _PyPegen_expect_token(p, 524))  // token='except'
7346
8.01k
            &&
7347
8.01k
            (e = expression_rule(p))  // expression
7348
2.54k
            &&
7349
2.54k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7350
1.36k
            &&
7351
1.36k
            (b = block_rule(p))  // block
7352
11.5k
        )
7353
1.29k
        {
7354
1.29k
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ':' block"));
7355
1.29k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7356
1.29k
            if (_token == NULL) {
7357
0
                p->level--;
7358
0
                return NULL;
7359
0
            }
7360
1.29k
            int _end_lineno = _token->end_lineno;
7361
1.29k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7362
1.29k
            int _end_col_offset = _token->end_col_offset;
7363
1.29k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7364
1.29k
            _res = _PyAST_ExceptHandler ( e , NULL , b , EXTRA );
7365
1.29k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
7366
0
                p->error_indicator = 1;
7367
0
                p->level--;
7368
0
                return NULL;
7369
0
            }
7370
1.29k
            goto done;
7371
1.29k
        }
7372
10.2k
        p->mark = _mark;
7373
10.2k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7374
10.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ':' block"));
7375
10.2k
    }
7376
0
    { // 'except' expression 'as' NAME ':' block
7377
10.2k
        if (p->error_indicator) {
7378
14
            p->level--;
7379
14
            return NULL;
7380
14
        }
7381
10.2k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression 'as' NAME ':' block"));
7382
10.2k
        Token * _keyword;
7383
10.2k
        Token * _keyword_1;
7384
10.2k
        Token * _literal;
7385
10.2k
        asdl_stmt_seq* b;
7386
10.2k
        expr_ty e;
7387
10.2k
        expr_ty t;
7388
10.2k
        if (
7389
10.2k
            (_keyword = _PyPegen_expect_token(p, 524))  // token='except'
7390
6.70k
            &&
7391
6.70k
            (e = expression_rule(p))  // expression
7392
1.23k
            &&
7393
1.23k
            (_keyword_1 = _PyPegen_expect_token(p, 520))  // token='as'
7394
306
            &&
7395
306
            (t = _PyPegen_name_token(p))  // NAME
7396
294
            &&
7397
294
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7398
288
            &&
7399
288
            (b = block_rule(p))  // block
7400
10.2k
        )
7401
272
        {
7402
272
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression 'as' NAME ':' block"));
7403
272
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7404
272
            if (_token == NULL) {
7405
0
                p->level--;
7406
0
                return NULL;
7407
0
            }
7408
272
            int _end_lineno = _token->end_lineno;
7409
272
            UNUSED(_end_lineno); // Only used by EXTRA macro
7410
272
            int _end_col_offset = _token->end_col_offset;
7411
272
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7412
272
            _res = _PyAST_ExceptHandler ( e , ( ( expr_ty ) t ) -> v . Name . id , b , EXTRA );
7413
272
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
7414
0
                p->error_indicator = 1;
7415
0
                p->level--;
7416
0
                return NULL;
7417
0
            }
7418
272
            goto done;
7419
272
        }
7420
9.94k
        p->mark = _mark;
7421
9.94k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7422
9.94k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression 'as' NAME ':' block"));
7423
9.94k
    }
7424
0
    { // 'except' expressions ':' block
7425
9.94k
        if (p->error_indicator) {
7426
4
            p->level--;
7427
4
            return NULL;
7428
4
        }
7429
9.94k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expressions ':' block"));
7430
9.94k
        Token * _keyword;
7431
9.94k
        Token * _literal;
7432
9.94k
        asdl_stmt_seq* b;
7433
9.94k
        expr_ty e;
7434
9.94k
        if (
7435
9.94k
            (_keyword = _PyPegen_expect_token(p, 524))  // token='except'
7436
6.42k
            &&
7437
6.42k
            (e = expressions_rule(p))  // expressions
7438
959
            &&
7439
959
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7440
864
            &&
7441
864
            (b = block_rule(p))  // block
7442
9.94k
        )
7443
797
        {
7444
797
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expressions ':' block"));
7445
797
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7446
797
            if (_token == NULL) {
7447
0
                p->level--;
7448
0
                return NULL;
7449
0
            }
7450
797
            int _end_lineno = _token->end_lineno;
7451
797
            UNUSED(_end_lineno); // Only used by EXTRA macro
7452
797
            int _end_col_offset = _token->end_col_offset;
7453
797
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7454
797
            _res = CHECK_VERSION ( excepthandler_ty , 14 , "except expressions without parentheses are" , _PyAST_ExceptHandler ( e , NULL , b , EXTRA ) );
7455
797
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
7456
0
                p->error_indicator = 1;
7457
0
                p->level--;
7458
0
                return NULL;
7459
0
            }
7460
797
            goto done;
7461
797
        }
7462
9.14k
        p->mark = _mark;
7463
9.14k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7464
9.14k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expressions ':' block"));
7465
9.14k
    }
7466
0
    { // 'except' ':' block
7467
9.14k
        if (p->error_indicator) {
7468
4
            p->level--;
7469
4
            return NULL;
7470
4
        }
7471
9.13k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' ':' block"));
7472
9.13k
        Token * _keyword;
7473
9.13k
        Token * _literal;
7474
9.13k
        asdl_stmt_seq* b;
7475
9.13k
        if (
7476
9.13k
            (_keyword = _PyPegen_expect_token(p, 524))  // token='except'
7477
5.62k
            &&
7478
5.62k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7479
3.48k
            &&
7480
3.48k
            (b = block_rule(p))  // block
7481
9.13k
        )
7482
3.41k
        {
7483
3.41k
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' ':' block"));
7484
3.41k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7485
3.41k
            if (_token == NULL) {
7486
0
                p->level--;
7487
0
                return NULL;
7488
0
            }
7489
3.41k
            int _end_lineno = _token->end_lineno;
7490
3.41k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7491
3.41k
            int _end_col_offset = _token->end_col_offset;
7492
3.41k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7493
3.41k
            _res = _PyAST_ExceptHandler ( NULL , NULL , b , EXTRA );
7494
3.41k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
7495
0
                p->error_indicator = 1;
7496
0
                p->level--;
7497
0
                return NULL;
7498
0
            }
7499
3.41k
            goto done;
7500
3.41k
        }
7501
5.72k
        p->mark = _mark;
7502
5.72k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7503
5.72k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' ':' block"));
7504
5.72k
    }
7505
5.72k
    if (p->call_invalid_rules) { // invalid_except_stmt
7506
3.18k
        if (p->error_indicator) {
7507
8
            p->level--;
7508
8
            return NULL;
7509
8
        }
7510
3.17k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt"));
7511
3.17k
        void *invalid_except_stmt_var;
7512
3.17k
        if (
7513
3.17k
            (invalid_except_stmt_var = invalid_except_stmt_rule(p))  // invalid_except_stmt
7514
3.17k
        )
7515
0
        {
7516
0
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt"));
7517
0
            _res = invalid_except_stmt_var;
7518
0
            goto done;
7519
0
        }
7520
3.17k
        p->mark = _mark;
7521
3.17k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7522
3.17k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_stmt"));
7523
3.17k
    }
7524
5.71k
    _res = NULL;
7525
11.4k
  done:
7526
11.4k
    p->level--;
7527
11.4k
    return _res;
7528
5.71k
}
7529
7530
// except_star_block:
7531
//     | invalid_except_star_stmt_indent
7532
//     | 'except' '*' expression ':' block
7533
//     | 'except' '*' expression 'as' NAME ':' block
7534
//     | 'except' '*' expressions ':' block
7535
//     | invalid_except_star_stmt
7536
Py_LOCAL_SYMBOL excepthandler_ty
7537
except_star_block_rule(Parser *p)
7538
7.67k
{
7539
7.67k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
7540
0
        _Pypegen_stack_overflow(p);
7541
0
    }
7542
7.67k
    if (p->error_indicator) {
7543
0
        p->level--;
7544
0
        return NULL;
7545
0
    }
7546
7.67k
    excepthandler_ty _res = NULL;
7547
7.67k
    int _mark = p->mark;
7548
7.67k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7549
2
        p->error_indicator = 1;
7550
2
        p->level--;
7551
2
        return NULL;
7552
2
    }
7553
7.67k
    int _start_lineno = p->tokens[_mark]->lineno;
7554
7.67k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7555
7.67k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7556
7.67k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7557
7.67k
    if (p->call_invalid_rules) { // invalid_except_star_stmt_indent
7558
4.76k
        if (p->error_indicator) {
7559
0
            p->level--;
7560
0
            return NULL;
7561
0
        }
7562
4.76k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_star_stmt_indent"));
7563
4.76k
        void *invalid_except_star_stmt_indent_var;
7564
4.76k
        if (
7565
4.76k
            (invalid_except_star_stmt_indent_var = invalid_except_star_stmt_indent_rule(p))  // invalid_except_star_stmt_indent
7566
4.76k
        )
7567
0
        {
7568
0
            D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_star_stmt_indent"));
7569
0
            _res = invalid_except_star_stmt_indent_var;
7570
0
            goto done;
7571
0
        }
7572
4.76k
        p->mark = _mark;
7573
4.76k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7574
4.76k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_star_stmt_indent"));
7575
4.76k
    }
7576
7.67k
    { // 'except' '*' expression ':' block
7577
7.67k
        if (p->error_indicator) {
7578
4
            p->level--;
7579
4
            return NULL;
7580
4
        }
7581
7.67k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ':' block"));
7582
7.67k
        Token * _keyword;
7583
7.67k
        Token * _literal;
7584
7.67k
        Token * _literal_1;
7585
7.67k
        asdl_stmt_seq* b;
7586
7.67k
        expr_ty e;
7587
7.67k
        if (
7588
7.67k
            (_keyword = _PyPegen_expect_token(p, 524))  // token='except'
7589
5.50k
            &&
7590
5.50k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
7591
4.49k
            &&
7592
4.49k
            (e = expression_rule(p))  // expression
7593
4.48k
            &&
7594
4.48k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
7595
3.75k
            &&
7596
3.75k
            (b = block_rule(p))  // block
7597
7.67k
        )
7598
3.72k
        {
7599
3.72k
            D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ':' block"));
7600
3.72k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7601
3.72k
            if (_token == NULL) {
7602
0
                p->level--;
7603
0
                return NULL;
7604
0
            }
7605
3.72k
            int _end_lineno = _token->end_lineno;
7606
3.72k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7607
3.72k
            int _end_col_offset = _token->end_col_offset;
7608
3.72k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7609
3.72k
            _res = _PyAST_ExceptHandler ( e , NULL , b , EXTRA );
7610
3.72k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
7611
0
                p->error_indicator = 1;
7612
0
                p->level--;
7613
0
                return NULL;
7614
0
            }
7615
3.72k
            goto done;
7616
3.72k
        }
7617
3.94k
        p->mark = _mark;
7618
3.94k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7619
3.94k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression ':' block"));
7620
3.94k
    }
7621
0
    { // 'except' '*' expression 'as' NAME ':' block
7622
3.94k
        if (p->error_indicator) {
7623
7
            p->level--;
7624
7
            return NULL;
7625
7
        }
7626
3.94k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression 'as' NAME ':' block"));
7627
3.94k
        Token * _keyword;
7628
3.94k
        Token * _keyword_1;
7629
3.94k
        Token * _literal;
7630
3.94k
        Token * _literal_1;
7631
3.94k
        asdl_stmt_seq* b;
7632
3.94k
        expr_ty e;
7633
3.94k
        expr_ty t;
7634
3.94k
        if (
7635
3.94k
            (_keyword = _PyPegen_expect_token(p, 524))  // token='except'
7636
1.77k
            &&
7637
1.77k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
7638
766
            &&
7639
766
            (e = expression_rule(p))  // expression
7640
750
            &&
7641
750
            (_keyword_1 = _PyPegen_expect_token(p, 520))  // token='as'
7642
494
            &&
7643
494
            (t = _PyPegen_name_token(p))  // NAME
7644
484
            &&
7645
484
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
7646
475
            &&
7647
475
            (b = block_rule(p))  // block
7648
3.94k
        )
7649
460
        {
7650
460
            D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expression 'as' NAME ':' block"));
7651
460
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7652
460
            if (_token == NULL) {
7653
0
                p->level--;
7654
0
                return NULL;
7655
0
            }
7656
460
            int _end_lineno = _token->end_lineno;
7657
460
            UNUSED(_end_lineno); // Only used by EXTRA macro
7658
460
            int _end_col_offset = _token->end_col_offset;
7659
460
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7660
460
            _res = _PyAST_ExceptHandler ( e , ( ( expr_ty ) t ) -> v . Name . id , b , EXTRA );
7661
460
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
7662
0
                p->error_indicator = 1;
7663
0
                p->level--;
7664
0
                return NULL;
7665
0
            }
7666
460
            goto done;
7667
460
        }
7668
3.48k
        p->mark = _mark;
7669
3.48k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7670
3.48k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression 'as' NAME ':' block"));
7671
3.48k
    }
7672
0
    { // 'except' '*' expressions ':' block
7673
3.48k
        if (p->error_indicator) {
7674
2
            p->level--;
7675
2
            return NULL;
7676
2
        }
7677
3.47k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expressions ':' block"));
7678
3.47k
        Token * _keyword;
7679
3.47k
        Token * _literal;
7680
3.47k
        Token * _literal_1;
7681
3.47k
        asdl_stmt_seq* b;
7682
3.47k
        expr_ty e;
7683
3.47k
        if (
7684
3.47k
            (_keyword = _PyPegen_expect_token(p, 524))  // token='except'
7685
1.31k
            &&
7686
1.31k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
7687
304
            &&
7688
304
            (e = expressions_rule(p))  // expressions
7689
286
            &&
7690
286
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
7691
178
            &&
7692
178
            (b = block_rule(p))  // block
7693
3.47k
        )
7694
142
        {
7695
142
            D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expressions ':' block"));
7696
142
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7697
142
            if (_token == NULL) {
7698
0
                p->level--;
7699
0
                return NULL;
7700
0
            }
7701
142
            int _end_lineno = _token->end_lineno;
7702
142
            UNUSED(_end_lineno); // Only used by EXTRA macro
7703
142
            int _end_col_offset = _token->end_col_offset;
7704
142
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7705
142
            _res = CHECK_VERSION ( excepthandler_ty , 14 , "except expressions without parentheses are" , _PyAST_ExceptHandler ( e , NULL , b , EXTRA ) );
7706
142
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
7707
0
                p->error_indicator = 1;
7708
0
                p->level--;
7709
0
                return NULL;
7710
0
            }
7711
142
            goto done;
7712
142
        }
7713
3.33k
        p->mark = _mark;
7714
3.33k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7715
3.33k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expressions ':' block"));
7716
3.33k
    }
7717
3.33k
    if (p->call_invalid_rules) { // invalid_except_star_stmt
7718
2.31k
        if (p->error_indicator) {
7719
8
            p->level--;
7720
8
            return NULL;
7721
8
        }
7722
2.30k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_star_stmt"));
7723
2.30k
        void *invalid_except_star_stmt_var;
7724
2.30k
        if (
7725
2.30k
            (invalid_except_star_stmt_var = invalid_except_star_stmt_rule(p))  // invalid_except_star_stmt
7726
2.30k
        )
7727
0
        {
7728
0
            D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_star_stmt"));
7729
0
            _res = invalid_except_star_stmt_var;
7730
0
            goto done;
7731
0
        }
7732
2.30k
        p->mark = _mark;
7733
2.30k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7734
2.30k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_star_stmt"));
7735
2.30k
    }
7736
3.32k
    _res = NULL;
7737
7.65k
  done:
7738
7.65k
    p->level--;
7739
7.65k
    return _res;
7740
3.32k
}
7741
7742
// finally_block: invalid_finally_stmt | 'finally' &&':' block
7743
static asdl_stmt_seq*
7744
finally_block_rule(Parser *p)
7745
8.45k
{
7746
8.45k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
7747
0
        _Pypegen_stack_overflow(p);
7748
0
    }
7749
8.45k
    if (p->error_indicator) {
7750
0
        p->level--;
7751
0
        return NULL;
7752
0
    }
7753
8.45k
    asdl_stmt_seq* _res = NULL;
7754
8.45k
    int _mark = p->mark;
7755
8.45k
    if (p->call_invalid_rules) { // invalid_finally_stmt
7756
2.96k
        if (p->error_indicator) {
7757
0
            p->level--;
7758
0
            return NULL;
7759
0
        }
7760
2.96k
        D(fprintf(stderr, "%*c> finally_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_finally_stmt"));
7761
2.96k
        void *invalid_finally_stmt_var;
7762
2.96k
        if (
7763
2.96k
            (invalid_finally_stmt_var = invalid_finally_stmt_rule(p))  // invalid_finally_stmt
7764
2.96k
        )
7765
0
        {
7766
0
            D(fprintf(stderr, "%*c+ finally_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_finally_stmt"));
7767
0
            _res = invalid_finally_stmt_var;
7768
0
            goto done;
7769
0
        }
7770
2.96k
        p->mark = _mark;
7771
2.96k
        D(fprintf(stderr, "%*c%s finally_block[%d-%d]: %s failed!\n", p->level, ' ',
7772
2.96k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_finally_stmt"));
7773
2.96k
    }
7774
8.45k
    { // 'finally' &&':' block
7775
8.45k
        if (p->error_indicator) {
7776
2
            p->level--;
7777
2
            return NULL;
7778
2
        }
7779
8.44k
        D(fprintf(stderr, "%*c> finally_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally' &&':' block"));
7780
8.44k
        Token * _keyword;
7781
8.44k
        Token * _literal;
7782
8.44k
        asdl_stmt_seq* a;
7783
8.44k
        if (
7784
8.44k
            (_keyword = _PyPegen_expect_token(p, 525))  // token='finally'
7785
897
            &&
7786
897
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
7787
894
            &&
7788
894
            (a = block_rule(p))  // block
7789
8.44k
        )
7790
874
        {
7791
874
            D(fprintf(stderr, "%*c+ finally_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally' &&':' block"));
7792
874
            _res = a;
7793
874
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
7794
0
                p->error_indicator = 1;
7795
0
                p->level--;
7796
0
                return NULL;
7797
0
            }
7798
874
            goto done;
7799
874
        }
7800
7.57k
        p->mark = _mark;
7801
7.57k
        D(fprintf(stderr, "%*c%s finally_block[%d-%d]: %s failed!\n", p->level, ' ',
7802
7.57k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally' &&':' block"));
7803
7.57k
    }
7804
7.57k
    _res = NULL;
7805
8.44k
  done:
7806
8.44k
    p->level--;
7807
8.44k
    return _res;
7808
7.57k
}
7809
7810
// match_stmt:
7811
//     | "match" subject_expr ':' NEWLINE INDENT case_block+ DEDENT
7812
//     | invalid_match_stmt
7813
static stmt_ty
7814
match_stmt_rule(Parser *p)
7815
207k
{
7816
207k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
7817
0
        _Pypegen_stack_overflow(p);
7818
0
    }
7819
207k
    if (p->error_indicator) {
7820
0
        p->level--;
7821
0
        return NULL;
7822
0
    }
7823
207k
    stmt_ty _res = NULL;
7824
207k
    int _mark = p->mark;
7825
207k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7826
0
        p->error_indicator = 1;
7827
0
        p->level--;
7828
0
        return NULL;
7829
0
    }
7830
207k
    int _start_lineno = p->tokens[_mark]->lineno;
7831
207k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7832
207k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7833
207k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7834
207k
    { // "match" subject_expr ':' NEWLINE INDENT case_block+ DEDENT
7835
207k
        if (p->error_indicator) {
7836
0
            p->level--;
7837
0
            return NULL;
7838
0
        }
7839
207k
        D(fprintf(stderr, "%*c> match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
7840
207k
        expr_ty _keyword;
7841
207k
        Token * _literal;
7842
207k
        asdl_match_case_seq* cases;
7843
207k
        Token * dedent_var;
7844
207k
        Token * indent_var;
7845
207k
        Token * newline_var;
7846
207k
        expr_ty subject;
7847
207k
        if (
7848
207k
            (_keyword = _PyPegen_expect_soft_keyword(p, "match"))  // soft_keyword='"match"'
7849
3.73k
            &&
7850
3.73k
            (subject = subject_expr_rule(p))  // subject_expr
7851
3.05k
            &&
7852
3.05k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7853
2.36k
            &&
7854
2.36k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
7855
1.71k
            &&
7856
1.71k
            (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
7857
1.71k
            &&
7858
1.71k
            (cases = (asdl_match_case_seq*)_loop1_38_rule(p))  // case_block+
7859
858
            &&
7860
858
            (dedent_var = _PyPegen_expect_token(p, DEDENT))  // token='DEDENT'
7861
207k
        )
7862
756
        {
7863
756
            D(fprintf(stderr, "%*c+ match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
7864
756
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7865
756
            if (_token == NULL) {
7866
0
                p->level--;
7867
0
                return NULL;
7868
0
            }
7869
756
            int _end_lineno = _token->end_lineno;
7870
756
            UNUSED(_end_lineno); // Only used by EXTRA macro
7871
756
            int _end_col_offset = _token->end_col_offset;
7872
756
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7873
756
            _res = CHECK_VERSION ( stmt_ty , 10 , "Pattern matching is" , _PyAST_Match ( subject , cases , EXTRA ) );
7874
756
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
7875
0
                p->error_indicator = 1;
7876
0
                p->level--;
7877
0
                return NULL;
7878
0
            }
7879
756
            goto done;
7880
756
        }
7881
207k
        p->mark = _mark;
7882
207k
        D(fprintf(stderr, "%*c%s match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7883
207k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
7884
207k
    }
7885
207k
    if (p->call_invalid_rules) { // invalid_match_stmt
7886
80.4k
        if (p->error_indicator) {
7887
107
            p->level--;
7888
107
            return NULL;
7889
107
        }
7890
80.3k
        D(fprintf(stderr, "%*c> match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_match_stmt"));
7891
80.3k
        void *invalid_match_stmt_var;
7892
80.3k
        if (
7893
80.3k
            (invalid_match_stmt_var = invalid_match_stmt_rule(p))  // invalid_match_stmt
7894
80.3k
        )
7895
0
        {
7896
0
            D(fprintf(stderr, "%*c+ match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_match_stmt"));
7897
0
            _res = invalid_match_stmt_var;
7898
0
            goto done;
7899
0
        }
7900
80.3k
        p->mark = _mark;
7901
80.3k
        D(fprintf(stderr, "%*c%s match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7902
80.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_match_stmt"));
7903
80.3k
    }
7904
207k
    _res = NULL;
7905
207k
  done:
7906
207k
    p->level--;
7907
207k
    return _res;
7908
207k
}
7909
7910
// subject_expr: star_named_expression ',' star_named_expressions? | named_expression
7911
Py_LOCAL_SYMBOL expr_ty
7912
subject_expr_rule(Parser *p)
7913
6.29k
{
7914
6.29k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
7915
0
        _Pypegen_stack_overflow(p);
7916
0
    }
7917
6.29k
    if (p->error_indicator) {
7918
0
        p->level--;
7919
0
        return NULL;
7920
0
    }
7921
6.29k
    expr_ty _res = NULL;
7922
6.29k
    int _mark = p->mark;
7923
6.29k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7924
1
        p->error_indicator = 1;
7925
1
        p->level--;
7926
1
        return NULL;
7927
1
    }
7928
6.28k
    int _start_lineno = p->tokens[_mark]->lineno;
7929
6.28k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7930
6.28k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7931
6.28k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7932
6.28k
    { // star_named_expression ',' star_named_expressions?
7933
6.28k
        if (p->error_indicator) {
7934
0
            p->level--;
7935
0
            return NULL;
7936
0
        }
7937
6.28k
        D(fprintf(stderr, "%*c> subject_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
7938
6.28k
        Token * _literal;
7939
6.28k
        expr_ty value;
7940
6.28k
        void *values;
7941
6.28k
        if (
7942
6.28k
            (value = star_named_expression_rule(p))  // star_named_expression
7943
4.97k
            &&
7944
4.97k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
7945
319
            &&
7946
319
            (values = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
7947
6.28k
        )
7948
318
        {
7949
318
            D(fprintf(stderr, "%*c+ subject_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
7950
318
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7951
318
            if (_token == NULL) {
7952
0
                p->level--;
7953
0
                return NULL;
7954
0
            }
7955
318
            int _end_lineno = _token->end_lineno;
7956
318
            UNUSED(_end_lineno); // Only used by EXTRA macro
7957
318
            int _end_col_offset = _token->end_col_offset;
7958
318
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7959
318
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , value , values ) ) , Load , EXTRA );
7960
318
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
7961
0
                p->error_indicator = 1;
7962
0
                p->level--;
7963
0
                return NULL;
7964
0
            }
7965
318
            goto done;
7966
318
        }
7967
5.97k
        p->mark = _mark;
7968
5.97k
        D(fprintf(stderr, "%*c%s subject_expr[%d-%d]: %s failed!\n", p->level, ' ',
7969
5.97k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
7970
5.97k
    }
7971
0
    { // named_expression
7972
5.97k
        if (p->error_indicator) {
7973
6
            p->level--;
7974
6
            return NULL;
7975
6
        }
7976
5.96k
        D(fprintf(stderr, "%*c> subject_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
7977
5.96k
        expr_ty named_expression_var;
7978
5.96k
        if (
7979
5.96k
            (named_expression_var = named_expression_rule(p))  // named_expression
7980
5.96k
        )
7981
4.62k
        {
7982
4.62k
            D(fprintf(stderr, "%*c+ subject_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
7983
4.62k
            _res = named_expression_var;
7984
4.62k
            goto done;
7985
4.62k
        }
7986
1.34k
        p->mark = _mark;
7987
1.34k
        D(fprintf(stderr, "%*c%s subject_expr[%d-%d]: %s failed!\n", p->level, ' ',
7988
1.34k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
7989
1.34k
    }
7990
1.34k
    _res = NULL;
7991
6.28k
  done:
7992
6.28k
    p->level--;
7993
6.28k
    return _res;
7994
1.34k
}
7995
7996
// case_block: invalid_case_block | "case" patterns guard? ':' block
7997
static match_case_ty
7998
case_block_rule(Parser *p)
7999
4.71k
{
8000
4.71k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
8001
0
        _Pypegen_stack_overflow(p);
8002
0
    }
8003
4.71k
    if (p->error_indicator) {
8004
0
        p->level--;
8005
0
        return NULL;
8006
0
    }
8007
4.71k
    match_case_ty _res = NULL;
8008
4.71k
    int _mark = p->mark;
8009
4.71k
    if (p->call_invalid_rules) { // invalid_case_block
8010
1.75k
        if (p->error_indicator) {
8011
0
            p->level--;
8012
0
            return NULL;
8013
0
        }
8014
1.75k
        D(fprintf(stderr, "%*c> case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_case_block"));
8015
1.75k
        void *invalid_case_block_var;
8016
1.75k
        if (
8017
1.75k
            (invalid_case_block_var = invalid_case_block_rule(p))  // invalid_case_block
8018
1.75k
        )
8019
0
        {
8020
0
            D(fprintf(stderr, "%*c+ case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_case_block"));
8021
0
            _res = invalid_case_block_var;
8022
0
            goto done;
8023
0
        }
8024
1.75k
        p->mark = _mark;
8025
1.75k
        D(fprintf(stderr, "%*c%s case_block[%d-%d]: %s failed!\n", p->level, ' ',
8026
1.75k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_case_block"));
8027
1.75k
    }
8028
4.71k
    { // "case" patterns guard? ':' block
8029
4.71k
        if (p->error_indicator) {
8030
100
            p->level--;
8031
100
            return NULL;
8032
100
        }
8033
4.61k
        D(fprintf(stderr, "%*c> case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' block"));
8034
4.61k
        expr_ty _keyword;
8035
4.61k
        Token * _literal;
8036
4.61k
        asdl_stmt_seq* body;
8037
4.61k
        void *guard;
8038
4.61k
        pattern_ty pattern;
8039
4.61k
        if (
8040
4.61k
            (_keyword = _PyPegen_expect_soft_keyword(p, "case"))  // soft_keyword='"case"'
8041
3.80k
            &&
8042
3.80k
            (pattern = patterns_rule(p))  // patterns
8043
3.32k
            &&
8044
3.32k
            (guard = guard_rule(p), !p->error_indicator)  // guard?
8045
3.31k
            &&
8046
3.31k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
8047
3.05k
            &&
8048
3.05k
            (body = block_rule(p))  // block
8049
4.61k
        )
8050
3.00k
        {
8051
3.00k
            D(fprintf(stderr, "%*c+ case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' block"));
8052
3.00k
            _res = _PyAST_match_case ( pattern , guard , body , p -> arena );
8053
3.00k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
8054
0
                p->error_indicator = 1;
8055
0
                p->level--;
8056
0
                return NULL;
8057
0
            }
8058
3.00k
            goto done;
8059
3.00k
        }
8060
1.61k
        p->mark = _mark;
8061
1.61k
        D(fprintf(stderr, "%*c%s case_block[%d-%d]: %s failed!\n", p->level, ' ',
8062
1.61k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"case\" patterns guard? ':' block"));
8063
1.61k
    }
8064
1.61k
    _res = NULL;
8065
4.61k
  done:
8066
4.61k
    p->level--;
8067
4.61k
    return _res;
8068
1.61k
}
8069
8070
// guard: 'if' named_expression
8071
Py_LOCAL_SYMBOL expr_ty
8072
guard_rule(Parser *p)
8073
5.97k
{
8074
5.97k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
8075
0
        _Pypegen_stack_overflow(p);
8076
0
    }
8077
5.97k
    if (p->error_indicator) {
8078
0
        p->level--;
8079
0
        return NULL;
8080
0
    }
8081
5.97k
    expr_ty _res = NULL;
8082
5.97k
    int _mark = p->mark;
8083
5.97k
    { // 'if' named_expression
8084
5.97k
        if (p->error_indicator) {
8085
0
            p->level--;
8086
0
            return NULL;
8087
0
        }
8088
5.97k
        D(fprintf(stderr, "%*c> guard[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression"));
8089
5.97k
        Token * _keyword;
8090
5.97k
        expr_ty guard;
8091
5.97k
        if (
8092
5.97k
            (_keyword = _PyPegen_expect_token(p, 514))  // token='if'
8093
283
            &&
8094
283
            (guard = named_expression_rule(p))  // named_expression
8095
5.97k
        )
8096
274
        {
8097
274
            D(fprintf(stderr, "%*c+ guard[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression"));
8098
274
            _res = guard;
8099
274
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
8100
0
                p->error_indicator = 1;
8101
0
                p->level--;
8102
0
                return NULL;
8103
0
            }
8104
274
            goto done;
8105
274
        }
8106
5.70k
        p->mark = _mark;
8107
5.70k
        D(fprintf(stderr, "%*c%s guard[%d-%d]: %s failed!\n", p->level, ' ',
8108
5.70k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression"));
8109
5.70k
    }
8110
5.70k
    _res = NULL;
8111
5.97k
  done:
8112
5.97k
    p->level--;
8113
5.97k
    return _res;
8114
5.70k
}
8115
8116
// patterns: open_sequence_pattern | pattern
8117
Py_LOCAL_SYMBOL pattern_ty
8118
patterns_rule(Parser *p)
8119
8.04k
{
8120
8.04k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
8121
0
        _Pypegen_stack_overflow(p);
8122
0
    }
8123
8.04k
    if (p->error_indicator) {
8124
0
        p->level--;
8125
0
        return NULL;
8126
0
    }
8127
8.04k
    pattern_ty _res = NULL;
8128
8.04k
    int _mark = p->mark;
8129
8.04k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8130
2
        p->error_indicator = 1;
8131
2
        p->level--;
8132
2
        return NULL;
8133
2
    }
8134
8.04k
    int _start_lineno = p->tokens[_mark]->lineno;
8135
8.04k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8136
8.04k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8137
8.04k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8138
8.04k
    { // open_sequence_pattern
8139
8.04k
        if (p->error_indicator) {
8140
0
            p->level--;
8141
0
            return NULL;
8142
0
        }
8143
8.04k
        D(fprintf(stderr, "%*c> patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "open_sequence_pattern"));
8144
8.04k
        asdl_pattern_seq* patterns;
8145
8.04k
        if (
8146
8.04k
            (patterns = (asdl_pattern_seq*)open_sequence_pattern_rule(p))  // open_sequence_pattern
8147
8.04k
        )
8148
1.83k
        {
8149
1.83k
            D(fprintf(stderr, "%*c+ patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "open_sequence_pattern"));
8150
1.83k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8151
1.83k
            if (_token == NULL) {
8152
0
                p->level--;
8153
0
                return NULL;
8154
0
            }
8155
1.83k
            int _end_lineno = _token->end_lineno;
8156
1.83k
            UNUSED(_end_lineno); // Only used by EXTRA macro
8157
1.83k
            int _end_col_offset = _token->end_col_offset;
8158
1.83k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8159
1.83k
            _res = _PyAST_MatchSequence ( patterns , EXTRA );
8160
1.83k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
8161
0
                p->error_indicator = 1;
8162
0
                p->level--;
8163
0
                return NULL;
8164
0
            }
8165
1.83k
            goto done;
8166
1.83k
        }
8167
6.21k
        p->mark = _mark;
8168
6.21k
        D(fprintf(stderr, "%*c%s patterns[%d-%d]: %s failed!\n", p->level, ' ',
8169
6.21k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "open_sequence_pattern"));
8170
6.21k
    }
8171
0
    { // pattern
8172
6.21k
        if (p->error_indicator) {
8173
217
            p->level--;
8174
217
            return NULL;
8175
217
        }
8176
6.00k
        D(fprintf(stderr, "%*c> patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern"));
8177
6.00k
        pattern_ty pattern_var;
8178
6.00k
        if (
8179
6.00k
            (pattern_var = pattern_rule(p))  // pattern
8180
6.00k
        )
8181
4.14k
        {
8182
4.14k
            D(fprintf(stderr, "%*c+ patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern"));
8183
4.14k
            _res = pattern_var;
8184
4.14k
            goto done;
8185
4.14k
        }
8186
1.85k
        p->mark = _mark;
8187
1.85k
        D(fprintf(stderr, "%*c%s patterns[%d-%d]: %s failed!\n", p->level, ' ',
8188
1.85k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern"));
8189
1.85k
    }
8190
1.85k
    _res = NULL;
8191
7.83k
  done:
8192
7.83k
    p->level--;
8193
7.83k
    return _res;
8194
1.85k
}
8195
8196
// pattern: as_pattern | or_pattern
8197
static pattern_ty
8198
pattern_rule(Parser *p)
8199
85.8k
{
8200
85.8k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
8201
0
        _Pypegen_stack_overflow(p);
8202
0
    }
8203
85.8k
    if (p->error_indicator) {
8204
0
        p->level--;
8205
0
        return NULL;
8206
0
    }
8207
85.8k
    pattern_ty _res = NULL;
8208
85.8k
    int _mark = p->mark;
8209
85.8k
    { // as_pattern
8210
85.8k
        if (p->error_indicator) {
8211
0
            p->level--;
8212
0
            return NULL;
8213
0
        }
8214
85.8k
        D(fprintf(stderr, "%*c> pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "as_pattern"));
8215
85.8k
        pattern_ty as_pattern_var;
8216
85.8k
        if (
8217
85.8k
            (as_pattern_var = as_pattern_rule(p))  // as_pattern
8218
85.8k
        )
8219
263
        {
8220
263
            D(fprintf(stderr, "%*c+ pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "as_pattern"));
8221
263
            _res = as_pattern_var;
8222
263
            goto done;
8223
263
        }
8224
85.5k
        p->mark = _mark;
8225
85.5k
        D(fprintf(stderr, "%*c%s pattern[%d-%d]: %s failed!\n", p->level, ' ',
8226
85.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "as_pattern"));
8227
85.5k
    }
8228
0
    { // or_pattern
8229
85.5k
        if (p->error_indicator) {
8230
4.27k
            p->level--;
8231
4.27k
            return NULL;
8232
4.27k
        }
8233
81.3k
        D(fprintf(stderr, "%*c> pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern"));
8234
81.3k
        pattern_ty or_pattern_var;
8235
81.3k
        if (
8236
81.3k
            (or_pattern_var = or_pattern_rule(p))  // or_pattern
8237
81.3k
        )
8238
49.4k
        {
8239
49.4k
            D(fprintf(stderr, "%*c+ pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern"));
8240
49.4k
            _res = or_pattern_var;
8241
49.4k
            goto done;
8242
49.4k
        }
8243
31.9k
        p->mark = _mark;
8244
31.9k
        D(fprintf(stderr, "%*c%s pattern[%d-%d]: %s failed!\n", p->level, ' ',
8245
31.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern"));
8246
31.9k
    }
8247
31.9k
    _res = NULL;
8248
81.5k
  done:
8249
81.5k
    p->level--;
8250
81.5k
    return _res;
8251
31.9k
}
8252
8253
// as_pattern: or_pattern 'as' pattern_capture_target | invalid_as_pattern
8254
static pattern_ty
8255
as_pattern_rule(Parser *p)
8256
85.8k
{
8257
85.8k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
8258
0
        _Pypegen_stack_overflow(p);
8259
0
    }
8260
85.8k
    if (p->error_indicator) {
8261
0
        p->level--;
8262
0
        return NULL;
8263
0
    }
8264
85.8k
    pattern_ty _res = NULL;
8265
85.8k
    int _mark = p->mark;
8266
85.8k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8267
47
        p->error_indicator = 1;
8268
47
        p->level--;
8269
47
        return NULL;
8270
47
    }
8271
85.8k
    int _start_lineno = p->tokens[_mark]->lineno;
8272
85.8k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8273
85.8k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8274
85.8k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8275
85.8k
    { // or_pattern 'as' pattern_capture_target
8276
85.8k
        if (p->error_indicator) {
8277
0
            p->level--;
8278
0
            return NULL;
8279
0
        }
8280
85.8k
        D(fprintf(stderr, "%*c> as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
8281
85.8k
        Token * _keyword;
8282
85.8k
        pattern_ty pattern;
8283
85.8k
        expr_ty target;
8284
85.8k
        if (
8285
85.8k
            (pattern = or_pattern_rule(p))  // or_pattern
8286
49.6k
            &&
8287
49.6k
            (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
8288
285
            &&
8289
285
            (target = pattern_capture_target_rule(p))  // pattern_capture_target
8290
85.8k
        )
8291
263
        {
8292
263
            D(fprintf(stderr, "%*c+ as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
8293
263
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8294
263
            if (_token == NULL) {
8295
0
                p->level--;
8296
0
                return NULL;
8297
0
            }
8298
263
            int _end_lineno = _token->end_lineno;
8299
263
            UNUSED(_end_lineno); // Only used by EXTRA macro
8300
263
            int _end_col_offset = _token->end_col_offset;
8301
263
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8302
263
            _res = _PyAST_MatchAs ( pattern , target -> v . Name . id , EXTRA );
8303
263
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
8304
0
                p->error_indicator = 1;
8305
0
                p->level--;
8306
0
                return NULL;
8307
0
            }
8308
263
            goto done;
8309
263
        }
8310
85.5k
        p->mark = _mark;
8311
85.5k
        D(fprintf(stderr, "%*c%s as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8312
85.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
8313
85.5k
    }
8314
85.5k
    if (p->call_invalid_rules) { // invalid_as_pattern
8315
48.7k
        if (p->error_indicator) {
8316
1.96k
            p->level--;
8317
1.96k
            return NULL;
8318
1.96k
        }
8319
46.8k
        D(fprintf(stderr, "%*c> as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_as_pattern"));
8320
46.8k
        void *invalid_as_pattern_var;
8321
46.8k
        if (
8322
46.8k
            (invalid_as_pattern_var = invalid_as_pattern_rule(p))  // invalid_as_pattern
8323
46.8k
        )
8324
0
        {
8325
0
            D(fprintf(stderr, "%*c+ as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_as_pattern"));
8326
0
            _res = invalid_as_pattern_var;
8327
0
            goto done;
8328
0
        }
8329
46.8k
        p->mark = _mark;
8330
46.8k
        D(fprintf(stderr, "%*c%s as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8331
46.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_as_pattern"));
8332
46.8k
    }
8333
83.5k
    _res = NULL;
8334
83.8k
  done:
8335
83.8k
    p->level--;
8336
83.8k
    return _res;
8337
83.5k
}
8338
8339
// or_pattern: '|'.closed_pattern+
8340
Py_LOCAL_SYMBOL pattern_ty
8341
or_pattern_rule(Parser *p)
8342
260k
{
8343
260k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
8344
0
        _Pypegen_stack_overflow(p);
8345
0
    }
8346
260k
    if (p->error_indicator) {
8347
0
        p->level--;
8348
0
        return NULL;
8349
0
    }
8350
260k
    pattern_ty _res = NULL;
8351
260k
    int _mark = p->mark;
8352
260k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8353
0
        p->error_indicator = 1;
8354
0
        p->level--;
8355
0
        return NULL;
8356
0
    }
8357
260k
    int _start_lineno = p->tokens[_mark]->lineno;
8358
260k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8359
260k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8360
260k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8361
260k
    { // '|'.closed_pattern+
8362
260k
        if (p->error_indicator) {
8363
0
            p->level--;
8364
0
            return NULL;
8365
0
        }
8366
260k
        D(fprintf(stderr, "%*c> or_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|'.closed_pattern+"));
8367
260k
        asdl_pattern_seq* patterns;
8368
260k
        if (
8369
260k
            (patterns = (asdl_pattern_seq*)_gather_40_rule(p))  // '|'.closed_pattern+
8370
260k
        )
8371
151k
        {
8372
151k
            D(fprintf(stderr, "%*c+ or_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'|'.closed_pattern+"));
8373
151k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8374
151k
            if (_token == NULL) {
8375
0
                p->level--;
8376
0
                return NULL;
8377
0
            }
8378
151k
            int _end_lineno = _token->end_lineno;
8379
151k
            UNUSED(_end_lineno); // Only used by EXTRA macro
8380
151k
            int _end_col_offset = _token->end_col_offset;
8381
151k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8382
151k
            _res = asdl_seq_LEN ( patterns ) == 1 ? asdl_seq_GET ( patterns , 0 ) : _PyAST_MatchOr ( patterns , EXTRA );
8383
151k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
8384
212
                p->error_indicator = 1;
8385
212
                p->level--;
8386
212
                return NULL;
8387
212
            }
8388
151k
            goto done;
8389
151k
        }
8390
109k
        p->mark = _mark;
8391
109k
        D(fprintf(stderr, "%*c%s or_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8392
109k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|'.closed_pattern+"));
8393
109k
    }
8394
109k
    _res = NULL;
8395
260k
  done:
8396
260k
    p->level--;
8397
260k
    return _res;
8398
109k
}
8399
8400
// closed_pattern:
8401
//     | literal_pattern
8402
//     | capture_pattern
8403
//     | wildcard_pattern
8404
//     | value_pattern
8405
//     | group_pattern
8406
//     | sequence_pattern
8407
//     | mapping_pattern
8408
//     | class_pattern
8409
static pattern_ty
8410
closed_pattern_rule(Parser *p)
8411
281k
{
8412
281k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
8413
0
        _Pypegen_stack_overflow(p);
8414
0
    }
8415
281k
    if (p->error_indicator) {
8416
0
        p->level--;
8417
0
        return NULL;
8418
0
    }
8419
281k
    pattern_ty _res = NULL;
8420
281k
    if (_PyPegen_is_memoized(p, closed_pattern_type, &_res)) {
8421
226k
        p->level--;
8422
226k
        return _res;
8423
226k
    }
8424
55.4k
    int _mark = p->mark;
8425
55.4k
    { // literal_pattern
8426
55.4k
        if (p->error_indicator) {
8427
0
            p->level--;
8428
0
            return NULL;
8429
0
        }
8430
55.4k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "literal_pattern"));
8431
55.4k
        pattern_ty literal_pattern_var;
8432
55.4k
        if (
8433
55.4k
            (literal_pattern_var = literal_pattern_rule(p))  // literal_pattern
8434
55.4k
        )
8435
8.04k
        {
8436
8.04k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "literal_pattern"));
8437
8.04k
            _res = literal_pattern_var;
8438
8.04k
            goto done;
8439
8.04k
        }
8440
47.4k
        p->mark = _mark;
8441
47.4k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8442
47.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "literal_pattern"));
8443
47.4k
    }
8444
0
    { // capture_pattern
8445
47.4k
        if (p->error_indicator) {
8446
23
            p->level--;
8447
23
            return NULL;
8448
23
        }
8449
47.4k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "capture_pattern"));
8450
47.4k
        pattern_ty capture_pattern_var;
8451
47.4k
        if (
8452
47.4k
            (capture_pattern_var = capture_pattern_rule(p))  // capture_pattern
8453
47.4k
        )
8454
13.2k
        {
8455
13.2k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "capture_pattern"));
8456
13.2k
            _res = capture_pattern_var;
8457
13.2k
            goto done;
8458
13.2k
        }
8459
34.1k
        p->mark = _mark;
8460
34.1k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8461
34.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "capture_pattern"));
8462
34.1k
    }
8463
0
    { // wildcard_pattern
8464
34.1k
        if (p->error_indicator) {
8465
22
            p->level--;
8466
22
            return NULL;
8467
22
        }
8468
34.1k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "wildcard_pattern"));
8469
34.1k
        pattern_ty wildcard_pattern_var;
8470
34.1k
        if (
8471
34.1k
            (wildcard_pattern_var = wildcard_pattern_rule(p))  // wildcard_pattern
8472
34.1k
        )
8473
6.88k
        {
8474
6.88k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "wildcard_pattern"));
8475
6.88k
            _res = wildcard_pattern_var;
8476
6.88k
            goto done;
8477
6.88k
        }
8478
27.2k
        p->mark = _mark;
8479
27.2k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8480
27.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "wildcard_pattern"));
8481
27.2k
    }
8482
0
    { // value_pattern
8483
27.2k
        if (p->error_indicator) {
8484
0
            p->level--;
8485
0
            return NULL;
8486
0
        }
8487
27.2k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "value_pattern"));
8488
27.2k
        pattern_ty value_pattern_var;
8489
27.2k
        if (
8490
27.2k
            (value_pattern_var = value_pattern_rule(p))  // value_pattern
8491
27.2k
        )
8492
328
        {
8493
328
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "value_pattern"));
8494
328
            _res = value_pattern_var;
8495
328
            goto done;
8496
328
        }
8497
26.9k
        p->mark = _mark;
8498
26.9k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8499
26.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "value_pattern"));
8500
26.9k
    }
8501
0
    { // group_pattern
8502
26.9k
        if (p->error_indicator) {
8503
1
            p->level--;
8504
1
            return NULL;
8505
1
        }
8506
26.8k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "group_pattern"));
8507
26.8k
        pattern_ty group_pattern_var;
8508
26.8k
        if (
8509
26.8k
            (group_pattern_var = group_pattern_rule(p))  // group_pattern
8510
26.8k
        )
8511
281
        {
8512
281
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "group_pattern"));
8513
281
            _res = group_pattern_var;
8514
281
            goto done;
8515
281
        }
8516
26.6k
        p->mark = _mark;
8517
26.6k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8518
26.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "group_pattern"));
8519
26.6k
    }
8520
0
    { // sequence_pattern
8521
26.6k
        if (p->error_indicator) {
8522
341
            p->level--;
8523
341
            return NULL;
8524
341
        }
8525
26.2k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sequence_pattern"));
8526
26.2k
        pattern_ty sequence_pattern_var;
8527
26.2k
        if (
8528
26.2k
            (sequence_pattern_var = sequence_pattern_rule(p))  // sequence_pattern
8529
26.2k
        )
8530
1.78k
        {
8531
1.78k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sequence_pattern"));
8532
1.78k
            _res = sequence_pattern_var;
8533
1.78k
            goto done;
8534
1.78k
        }
8535
24.4k
        p->mark = _mark;
8536
24.4k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8537
24.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sequence_pattern"));
8538
24.4k
    }
8539
0
    { // mapping_pattern
8540
24.4k
        if (p->error_indicator) {
8541
1.05k
            p->level--;
8542
1.05k
            return NULL;
8543
1.05k
        }
8544
23.4k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "mapping_pattern"));
8545
23.4k
        pattern_ty mapping_pattern_var;
8546
23.4k
        if (
8547
23.4k
            (mapping_pattern_var = mapping_pattern_rule(p))  // mapping_pattern
8548
23.4k
        )
8549
1.35k
        {
8550
1.35k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "mapping_pattern"));
8551
1.35k
            _res = mapping_pattern_var;
8552
1.35k
            goto done;
8553
1.35k
        }
8554
22.0k
        p->mark = _mark;
8555
22.0k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8556
22.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "mapping_pattern"));
8557
22.0k
    }
8558
0
    { // class_pattern
8559
22.0k
        if (p->error_indicator) {
8560
874
            p->level--;
8561
874
            return NULL;
8562
874
        }
8563
21.2k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "class_pattern"));
8564
21.2k
        pattern_ty class_pattern_var;
8565
21.2k
        if (
8566
21.2k
            (class_pattern_var = class_pattern_rule(p))  // class_pattern
8567
21.2k
        )
8568
2.30k
        {
8569
2.30k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "class_pattern"));
8570
2.30k
            _res = class_pattern_var;
8571
2.30k
            goto done;
8572
2.30k
        }
8573
18.9k
        p->mark = _mark;
8574
18.9k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8575
18.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "class_pattern"));
8576
18.9k
    }
8577
18.9k
    _res = NULL;
8578
53.1k
  done:
8579
53.1k
    _PyPegen_insert_memo(p, _mark, closed_pattern_type, _res);
8580
53.1k
    p->level--;
8581
53.1k
    return _res;
8582
18.9k
}
8583
8584
// literal_pattern:
8585
//     | signed_number !('+' | '-')
8586
//     | complex_number
8587
//     | strings
8588
//     | 'None'
8589
//     | 'True'
8590
//     | 'False'
8591
static pattern_ty
8592
literal_pattern_rule(Parser *p)
8593
55.4k
{
8594
55.4k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
8595
0
        _Pypegen_stack_overflow(p);
8596
0
    }
8597
55.4k
    if (p->error_indicator) {
8598
0
        p->level--;
8599
0
        return NULL;
8600
0
    }
8601
55.4k
    pattern_ty _res = NULL;
8602
55.4k
    int _mark = p->mark;
8603
55.4k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8604
0
        p->error_indicator = 1;
8605
0
        p->level--;
8606
0
        return NULL;
8607
0
    }
8608
55.4k
    int _start_lineno = p->tokens[_mark]->lineno;
8609
55.4k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8610
55.4k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8611
55.4k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8612
55.4k
    { // signed_number !('+' | '-')
8613
55.4k
        if (p->error_indicator) {
8614
0
            p->level--;
8615
0
            return NULL;
8616
0
        }
8617
55.4k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8618
55.4k
        expr_ty value;
8619
55.4k
        if (
8620
55.4k
            (value = signed_number_rule(p))  // signed_number
8621
7.37k
            &&
8622
7.37k
            _PyPegen_lookahead(0, _tmp_41_rule, p)
8623
55.4k
        )
8624
6.37k
        {
8625
6.37k
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8626
6.37k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8627
6.37k
            if (_token == NULL) {
8628
0
                p->level--;
8629
0
                return NULL;
8630
0
            }
8631
6.37k
            int _end_lineno = _token->end_lineno;
8632
6.37k
            UNUSED(_end_lineno); // Only used by EXTRA macro
8633
6.37k
            int _end_col_offset = _token->end_col_offset;
8634
6.37k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8635
6.37k
            _res = _PyAST_MatchValue ( value , EXTRA );
8636
6.37k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
8637
7
                p->error_indicator = 1;
8638
7
                p->level--;
8639
7
                return NULL;
8640
7
            }
8641
6.37k
            goto done;
8642
6.37k
        }
8643
49.1k
        p->mark = _mark;
8644
49.1k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8645
49.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_number !('+' | '-')"));
8646
49.1k
    }
8647
0
    { // complex_number
8648
49.1k
        if (p->error_indicator) {
8649
2
            p->level--;
8650
2
            return NULL;
8651
2
        }
8652
49.1k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "complex_number"));
8653
49.1k
        expr_ty value;
8654
49.1k
        if (
8655
49.1k
            (value = complex_number_rule(p))  // complex_number
8656
49.1k
        )
8657
597
        {
8658
597
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "complex_number"));
8659
597
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8660
597
            if (_token == NULL) {
8661
0
                p->level--;
8662
0
                return NULL;
8663
0
            }
8664
597
            int _end_lineno = _token->end_lineno;
8665
597
            UNUSED(_end_lineno); // Only used by EXTRA macro
8666
597
            int _end_col_offset = _token->end_col_offset;
8667
597
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8668
597
            _res = _PyAST_MatchValue ( value , EXTRA );
8669
597
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
8670
0
                p->error_indicator = 1;
8671
0
                p->level--;
8672
0
                return NULL;
8673
0
            }
8674
597
            goto done;
8675
597
        }
8676
48.5k
        p->mark = _mark;
8677
48.5k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8678
48.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "complex_number"));
8679
48.5k
    }
8680
0
    { // strings
8681
48.5k
        if (p->error_indicator) {
8682
8
            p->level--;
8683
8
            return NULL;
8684
8
        }
8685
48.5k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "strings"));
8686
48.5k
        expr_ty value;
8687
48.5k
        if (
8688
48.5k
            (value = strings_rule(p))  // strings
8689
48.5k
        )
8690
248
        {
8691
248
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "strings"));
8692
248
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8693
248
            if (_token == NULL) {
8694
0
                p->level--;
8695
0
                return NULL;
8696
0
            }
8697
248
            int _end_lineno = _token->end_lineno;
8698
248
            UNUSED(_end_lineno); // Only used by EXTRA macro
8699
248
            int _end_col_offset = _token->end_col_offset;
8700
248
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8701
248
            _res = _PyAST_MatchValue ( value , EXTRA );
8702
248
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
8703
0
                p->error_indicator = 1;
8704
0
                p->level--;
8705
0
                return NULL;
8706
0
            }
8707
248
            goto done;
8708
248
        }
8709
48.2k
        p->mark = _mark;
8710
48.2k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8711
48.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "strings"));
8712
48.2k
    }
8713
0
    { // 'None'
8714
48.2k
        if (p->error_indicator) {
8715
6
            p->level--;
8716
6
            return NULL;
8717
6
        }
8718
48.2k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
8719
48.2k
        Token * _keyword;
8720
48.2k
        if (
8721
48.2k
            (_keyword = _PyPegen_expect_token(p, 526))  // token='None'
8722
48.2k
        )
8723
517
        {
8724
517
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
8725
517
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8726
517
            if (_token == NULL) {
8727
0
                p->level--;
8728
0
                return NULL;
8729
0
            }
8730
517
            int _end_lineno = _token->end_lineno;
8731
517
            UNUSED(_end_lineno); // Only used by EXTRA macro
8732
517
            int _end_col_offset = _token->end_col_offset;
8733
517
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8734
517
            _res = _PyAST_MatchSingleton ( Py_None , EXTRA );
8735
517
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
8736
0
                p->error_indicator = 1;
8737
0
                p->level--;
8738
0
                return NULL;
8739
0
            }
8740
517
            goto done;
8741
517
        }
8742
47.7k
        p->mark = _mark;
8743
47.7k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8744
47.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
8745
47.7k
    }
8746
0
    { // 'True'
8747
47.7k
        if (p->error_indicator) {
8748
0
            p->level--;
8749
0
            return NULL;
8750
0
        }
8751
47.7k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
8752
47.7k
        Token * _keyword;
8753
47.7k
        if (
8754
47.7k
            (_keyword = _PyPegen_expect_token(p, 527))  // token='True'
8755
47.7k
        )
8756
69
        {
8757
69
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
8758
69
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8759
69
            if (_token == NULL) {
8760
0
                p->level--;
8761
0
                return NULL;
8762
0
            }
8763
69
            int _end_lineno = _token->end_lineno;
8764
69
            UNUSED(_end_lineno); // Only used by EXTRA macro
8765
69
            int _end_col_offset = _token->end_col_offset;
8766
69
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8767
69
            _res = _PyAST_MatchSingleton ( Py_True , EXTRA );
8768
69
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
8769
0
                p->error_indicator = 1;
8770
0
                p->level--;
8771
0
                return NULL;
8772
0
            }
8773
69
            goto done;
8774
69
        }
8775
47.6k
        p->mark = _mark;
8776
47.6k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8777
47.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
8778
47.6k
    }
8779
0
    { // 'False'
8780
47.6k
        if (p->error_indicator) {
8781
0
            p->level--;
8782
0
            return NULL;
8783
0
        }
8784
47.6k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
8785
47.6k
        Token * _keyword;
8786
47.6k
        if (
8787
47.6k
            (_keyword = _PyPegen_expect_token(p, 528))  // token='False'
8788
47.6k
        )
8789
246
        {
8790
246
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
8791
246
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8792
246
            if (_token == NULL) {
8793
0
                p->level--;
8794
0
                return NULL;
8795
0
            }
8796
246
            int _end_lineno = _token->end_lineno;
8797
246
            UNUSED(_end_lineno); // Only used by EXTRA macro
8798
246
            int _end_col_offset = _token->end_col_offset;
8799
246
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8800
246
            _res = _PyAST_MatchSingleton ( Py_False , EXTRA );
8801
246
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
8802
0
                p->error_indicator = 1;
8803
0
                p->level--;
8804
0
                return NULL;
8805
0
            }
8806
246
            goto done;
8807
246
        }
8808
47.4k
        p->mark = _mark;
8809
47.4k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8810
47.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
8811
47.4k
    }
8812
47.4k
    _res = NULL;
8813
55.4k
  done:
8814
55.4k
    p->level--;
8815
55.4k
    return _res;
8816
47.4k
}
8817
8818
// literal_expr:
8819
//     | signed_number !('+' | '-')
8820
//     | complex_number
8821
//     | &(STRING | FSTRING_START | TSTRING_START) strings
8822
//     | 'None'
8823
//     | 'True'
8824
//     | 'False'
8825
static expr_ty
8826
literal_expr_rule(Parser *p)
8827
19.0k
{
8828
19.0k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
8829
0
        _Pypegen_stack_overflow(p);
8830
0
    }
8831
19.0k
    if (p->error_indicator) {
8832
0
        p->level--;
8833
0
        return NULL;
8834
0
    }
8835
19.0k
    expr_ty _res = NULL;
8836
19.0k
    int _mark = p->mark;
8837
19.0k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8838
6
        p->error_indicator = 1;
8839
6
        p->level--;
8840
6
        return NULL;
8841
6
    }
8842
19.0k
    int _start_lineno = p->tokens[_mark]->lineno;
8843
19.0k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8844
19.0k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8845
19.0k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8846
19.0k
    { // signed_number !('+' | '-')
8847
19.0k
        if (p->error_indicator) {
8848
0
            p->level--;
8849
0
            return NULL;
8850
0
        }
8851
19.0k
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8852
19.0k
        expr_ty signed_number_var;
8853
19.0k
        if (
8854
19.0k
            (signed_number_var = signed_number_rule(p))  // signed_number
8855
14.9k
            &&
8856
14.9k
            _PyPegen_lookahead(0, _tmp_41_rule, p)
8857
19.0k
        )
8858
14.0k
        {
8859
14.0k
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8860
14.0k
            _res = signed_number_var;
8861
14.0k
            goto done;
8862
14.0k
        }
8863
5.03k
        p->mark = _mark;
8864
5.03k
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8865
5.03k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_number !('+' | '-')"));
8866
5.03k
    }
8867
0
    { // complex_number
8868
5.03k
        if (p->error_indicator) {
8869
3
            p->level--;
8870
3
            return NULL;
8871
3
        }
8872
5.03k
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "complex_number"));
8873
5.03k
        expr_ty complex_number_var;
8874
5.03k
        if (
8875
5.03k
            (complex_number_var = complex_number_rule(p))  // complex_number
8876
5.03k
        )
8877
873
        {
8878
873
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "complex_number"));
8879
873
            _res = complex_number_var;
8880
873
            goto done;
8881
873
        }
8882
4.16k
        p->mark = _mark;
8883
4.16k
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8884
4.16k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "complex_number"));
8885
4.16k
    }
8886
0
    { // &(STRING | FSTRING_START | TSTRING_START) strings
8887
4.16k
        if (p->error_indicator) {
8888
7
            p->level--;
8889
7
            return NULL;
8890
7
        }
8891
4.15k
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
8892
4.15k
        expr_ty strings_var;
8893
4.15k
        if (
8894
4.15k
            _PyPegen_lookahead(1, _tmp_42_rule, p)
8895
994
            &&
8896
994
            (strings_var = strings_rule(p))  // strings
8897
4.15k
        )
8898
986
        {
8899
986
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
8900
986
            _res = strings_var;
8901
986
            goto done;
8902
986
        }
8903
3.16k
        p->mark = _mark;
8904
3.16k
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8905
3.16k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
8906
3.16k
    }
8907
0
    { // 'None'
8908
3.16k
        if (p->error_indicator) {
8909
6
            p->level--;
8910
6
            return NULL;
8911
6
        }
8912
3.16k
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
8913
3.16k
        Token * _keyword;
8914
3.16k
        if (
8915
3.16k
            (_keyword = _PyPegen_expect_token(p, 526))  // token='None'
8916
3.16k
        )
8917
21
        {
8918
21
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
8919
21
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8920
21
            if (_token == NULL) {
8921
0
                p->level--;
8922
0
                return NULL;
8923
0
            }
8924
21
            int _end_lineno = _token->end_lineno;
8925
21
            UNUSED(_end_lineno); // Only used by EXTRA macro
8926
21
            int _end_col_offset = _token->end_col_offset;
8927
21
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8928
21
            _res = _PyAST_Constant ( Py_None , NULL , EXTRA );
8929
21
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
8930
0
                p->error_indicator = 1;
8931
0
                p->level--;
8932
0
                return NULL;
8933
0
            }
8934
21
            goto done;
8935
21
        }
8936
3.14k
        p->mark = _mark;
8937
3.14k
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8938
3.14k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
8939
3.14k
    }
8940
0
    { // 'True'
8941
3.14k
        if (p->error_indicator) {
8942
0
            p->level--;
8943
0
            return NULL;
8944
0
        }
8945
3.14k
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
8946
3.14k
        Token * _keyword;
8947
3.14k
        if (
8948
3.14k
            (_keyword = _PyPegen_expect_token(p, 527))  // token='True'
8949
3.14k
        )
8950
124
        {
8951
124
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
8952
124
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8953
124
            if (_token == NULL) {
8954
0
                p->level--;
8955
0
                return NULL;
8956
0
            }
8957
124
            int _end_lineno = _token->end_lineno;
8958
124
            UNUSED(_end_lineno); // Only used by EXTRA macro
8959
124
            int _end_col_offset = _token->end_col_offset;
8960
124
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8961
124
            _res = _PyAST_Constant ( Py_True , NULL , EXTRA );
8962
124
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
8963
0
                p->error_indicator = 1;
8964
0
                p->level--;
8965
0
                return NULL;
8966
0
            }
8967
124
            goto done;
8968
124
        }
8969
3.01k
        p->mark = _mark;
8970
3.01k
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8971
3.01k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
8972
3.01k
    }
8973
0
    { // 'False'
8974
3.01k
        if (p->error_indicator) {
8975
0
            p->level--;
8976
0
            return NULL;
8977
0
        }
8978
3.01k
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
8979
3.01k
        Token * _keyword;
8980
3.01k
        if (
8981
3.01k
            (_keyword = _PyPegen_expect_token(p, 528))  // token='False'
8982
3.01k
        )
8983
81
        {
8984
81
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
8985
81
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8986
81
            if (_token == NULL) {
8987
0
                p->level--;
8988
0
                return NULL;
8989
0
            }
8990
81
            int _end_lineno = _token->end_lineno;
8991
81
            UNUSED(_end_lineno); // Only used by EXTRA macro
8992
81
            int _end_col_offset = _token->end_col_offset;
8993
81
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8994
81
            _res = _PyAST_Constant ( Py_False , NULL , EXTRA );
8995
81
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
8996
0
                p->error_indicator = 1;
8997
0
                p->level--;
8998
0
                return NULL;
8999
0
            }
9000
81
            goto done;
9001
81
        }
9002
2.93k
        p->mark = _mark;
9003
2.93k
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
9004
2.93k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
9005
2.93k
    }
9006
2.93k
    _res = NULL;
9007
19.0k
  done:
9008
19.0k
    p->level--;
9009
19.0k
    return _res;
9010
2.93k
}
9011
9012
// complex_number:
9013
//     | signed_real_number '+' imaginary_number
9014
//     | signed_real_number '-' imaginary_number
9015
static expr_ty
9016
complex_number_rule(Parser *p)
9017
54.1k
{
9018
54.1k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
9019
0
        _Pypegen_stack_overflow(p);
9020
0
    }
9021
54.1k
    if (p->error_indicator) {
9022
0
        p->level--;
9023
0
        return NULL;
9024
0
    }
9025
54.1k
    expr_ty _res = NULL;
9026
54.1k
    int _mark = p->mark;
9027
54.1k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9028
0
        p->error_indicator = 1;
9029
0
        p->level--;
9030
0
        return NULL;
9031
0
    }
9032
54.1k
    int _start_lineno = p->tokens[_mark]->lineno;
9033
54.1k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9034
54.1k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9035
54.1k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9036
54.1k
    { // signed_real_number '+' imaginary_number
9037
54.1k
        if (p->error_indicator) {
9038
0
            p->level--;
9039
0
            return NULL;
9040
0
        }
9041
54.1k
        D(fprintf(stderr, "%*c> complex_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_real_number '+' imaginary_number"));
9042
54.1k
        Token * _literal;
9043
54.1k
        expr_ty imag;
9044
54.1k
        expr_ty real;
9045
54.1k
        if (
9046
54.1k
            (real = signed_real_number_rule(p))  // signed_real_number
9047
1.93k
            &&
9048
1.93k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
9049
550
            &&
9050
550
            (imag = imaginary_number_rule(p))  // imaginary_number
9051
54.1k
        )
9052
463
        {
9053
463
            D(fprintf(stderr, "%*c+ complex_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_real_number '+' imaginary_number"));
9054
463
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9055
463
            if (_token == NULL) {
9056
0
                p->level--;
9057
0
                return NULL;
9058
0
            }
9059
463
            int _end_lineno = _token->end_lineno;
9060
463
            UNUSED(_end_lineno); // Only used by EXTRA macro
9061
463
            int _end_col_offset = _token->end_col_offset;
9062
463
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9063
463
            _res = _PyAST_BinOp ( real , Add , imag , EXTRA );
9064
463
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
9065
0
                p->error_indicator = 1;
9066
0
                p->level--;
9067
0
                return NULL;
9068
0
            }
9069
463
            goto done;
9070
463
        }
9071
53.6k
        p->mark = _mark;
9072
53.6k
        D(fprintf(stderr, "%*c%s complex_number[%d-%d]: %s failed!\n", p->level, ' ',
9073
53.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_real_number '+' imaginary_number"));
9074
53.6k
    }
9075
0
    { // signed_real_number '-' imaginary_number
9076
53.6k
        if (p->error_indicator) {
9077
12
            p->level--;
9078
12
            return NULL;
9079
12
        }
9080
53.6k
        D(fprintf(stderr, "%*c> complex_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_real_number '-' imaginary_number"));
9081
53.6k
        Token * _literal;
9082
53.6k
        expr_ty imag;
9083
53.6k
        expr_ty real;
9084
53.6k
        if (
9085
53.6k
            (real = signed_real_number_rule(p))  // signed_real_number
9086
1.46k
            &&
9087
1.46k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
9088
1.38k
            &&
9089
1.38k
            (imag = imaginary_number_rule(p))  // imaginary_number
9090
53.6k
        )
9091
1.00k
        {
9092
1.00k
            D(fprintf(stderr, "%*c+ complex_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_real_number '-' imaginary_number"));
9093
1.00k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9094
1.00k
            if (_token == NULL) {
9095
0
                p->level--;
9096
0
                return NULL;
9097
0
            }
9098
1.00k
            int _end_lineno = _token->end_lineno;
9099
1.00k
            UNUSED(_end_lineno); // Only used by EXTRA macro
9100
1.00k
            int _end_col_offset = _token->end_col_offset;
9101
1.00k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9102
1.00k
            _res = _PyAST_BinOp ( real , Sub , imag , EXTRA );
9103
1.00k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
9104
0
                p->error_indicator = 1;
9105
0
                p->level--;
9106
0
                return NULL;
9107
0
            }
9108
1.00k
            goto done;
9109
1.00k
        }
9110
52.6k
        p->mark = _mark;
9111
52.6k
        D(fprintf(stderr, "%*c%s complex_number[%d-%d]: %s failed!\n", p->level, ' ',
9112
52.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_real_number '-' imaginary_number"));
9113
52.6k
    }
9114
52.6k
    _res = NULL;
9115
54.1k
  done:
9116
54.1k
    p->level--;
9117
54.1k
    return _res;
9118
52.6k
}
9119
9120
// signed_number: NUMBER | '+' NUMBER | '-' NUMBER
9121
static expr_ty
9122
signed_number_rule(Parser *p)
9123
74.5k
{
9124
74.5k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
9125
0
        _Pypegen_stack_overflow(p);
9126
0
    }
9127
74.5k
    if (p->error_indicator) {
9128
0
        p->level--;
9129
0
        return NULL;
9130
0
    }
9131
74.5k
    expr_ty _res = NULL;
9132
74.5k
    int _mark = p->mark;
9133
74.5k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9134
0
        p->error_indicator = 1;
9135
0
        p->level--;
9136
0
        return NULL;
9137
0
    }
9138
74.5k
    int _start_lineno = p->tokens[_mark]->lineno;
9139
74.5k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9140
74.5k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9141
74.5k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9142
74.5k
    { // NUMBER
9143
74.5k
        if (p->error_indicator) {
9144
0
            p->level--;
9145
0
            return NULL;
9146
0
        }
9147
74.5k
        D(fprintf(stderr, "%*c> signed_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9148
74.5k
        expr_ty number_var;
9149
74.5k
        if (
9150
74.5k
            (number_var = _PyPegen_number_token(p))  // NUMBER
9151
74.5k
        )
9152
19.7k
        {
9153
19.7k
            D(fprintf(stderr, "%*c+ signed_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9154
19.7k
            _res = number_var;
9155
19.7k
            goto done;
9156
19.7k
        }
9157
54.8k
        p->mark = _mark;
9158
54.8k
        D(fprintf(stderr, "%*c%s signed_number[%d-%d]: %s failed!\n", p->level, ' ',
9159
54.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
9160
54.8k
    }
9161
0
    { // '+' NUMBER
9162
54.8k
        if (p->error_indicator) {
9163
0
            p->level--;
9164
0
            return NULL;
9165
0
        }
9166
54.8k
        D(fprintf(stderr, "%*c> signed_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+' NUMBER"));
9167
54.8k
        Token * _literal;
9168
54.8k
        expr_ty number;
9169
54.8k
        if (
9170
54.8k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
9171
194
            &&
9172
194
            (number = _PyPegen_number_token(p))  // NUMBER
9173
54.8k
        )
9174
167
        {
9175
167
            D(fprintf(stderr, "%*c+ signed_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+' NUMBER"));
9176
167
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9177
167
            if (_token == NULL) {
9178
0
                p->level--;
9179
0
                return NULL;
9180
0
            }
9181
167
            int _end_lineno = _token->end_lineno;
9182
167
            UNUSED(_end_lineno); // Only used by EXTRA macro
9183
167
            int _end_col_offset = _token->end_col_offset;
9184
167
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9185
167
            _res = _PyAST_UnaryOp ( UAdd , number , EXTRA );
9186
167
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
9187
0
                p->error_indicator = 1;
9188
0
                p->level--;
9189
0
                return NULL;
9190
0
            }
9191
167
            goto done;
9192
167
        }
9193
54.6k
        p->mark = _mark;
9194
54.6k
        D(fprintf(stderr, "%*c%s signed_number[%d-%d]: %s failed!\n", p->level, ' ',
9195
54.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+' NUMBER"));
9196
54.6k
    }
9197
0
    { // '-' NUMBER
9198
54.6k
        if (p->error_indicator) {
9199
4
            p->level--;
9200
4
            return NULL;
9201
4
        }
9202
54.6k
        D(fprintf(stderr, "%*c> signed_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' NUMBER"));
9203
54.6k
        Token * _literal;
9204
54.6k
        expr_ty number;
9205
54.6k
        if (
9206
54.6k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
9207
2.79k
            &&
9208
2.79k
            (number = _PyPegen_number_token(p))  // NUMBER
9209
54.6k
        )
9210
2.45k
        {
9211
2.45k
            D(fprintf(stderr, "%*c+ signed_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' NUMBER"));
9212
2.45k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9213
2.45k
            if (_token == NULL) {
9214
0
                p->level--;
9215
0
                return NULL;
9216
0
            }
9217
2.45k
            int _end_lineno = _token->end_lineno;
9218
2.45k
            UNUSED(_end_lineno); // Only used by EXTRA macro
9219
2.45k
            int _end_col_offset = _token->end_col_offset;
9220
2.45k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9221
2.45k
            _res = _PyAST_UnaryOp ( USub , number , EXTRA );
9222
2.45k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
9223
0
                p->error_indicator = 1;
9224
0
                p->level--;
9225
0
                return NULL;
9226
0
            }
9227
2.45k
            goto done;
9228
2.45k
        }
9229
52.2k
        p->mark = _mark;
9230
52.2k
        D(fprintf(stderr, "%*c%s signed_number[%d-%d]: %s failed!\n", p->level, ' ',
9231
52.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' NUMBER"));
9232
52.2k
    }
9233
52.2k
    _res = NULL;
9234
74.5k
  done:
9235
74.5k
    p->level--;
9236
74.5k
    return _res;
9237
52.2k
}
9238
9239
// signed_real_number: real_number | '+' real_number | '-' real_number
9240
static expr_ty
9241
signed_real_number_rule(Parser *p)
9242
107k
{
9243
107k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
9244
0
        _Pypegen_stack_overflow(p);
9245
0
    }
9246
107k
    if (p->error_indicator) {
9247
0
        p->level--;
9248
0
        return NULL;
9249
0
    }
9250
107k
    expr_ty _res = NULL;
9251
107k
    int _mark = p->mark;
9252
107k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9253
0
        p->error_indicator = 1;
9254
0
        p->level--;
9255
0
        return NULL;
9256
0
    }
9257
107k
    int _start_lineno = p->tokens[_mark]->lineno;
9258
107k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9259
107k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9260
107k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9261
107k
    { // real_number
9262
107k
        if (p->error_indicator) {
9263
0
            p->level--;
9264
0
            return NULL;
9265
0
        }
9266
107k
        D(fprintf(stderr, "%*c> signed_real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "real_number"));
9267
107k
        expr_ty real_number_var;
9268
107k
        if (
9269
107k
            (real_number_var = real_number_rule(p))  // real_number
9270
107k
        )
9271
1.90k
        {
9272
1.90k
            D(fprintf(stderr, "%*c+ signed_real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "real_number"));
9273
1.90k
            _res = real_number_var;
9274
1.90k
            goto done;
9275
1.90k
        }
9276
105k
        p->mark = _mark;
9277
105k
        D(fprintf(stderr, "%*c%s signed_real_number[%d-%d]: %s failed!\n", p->level, ' ',
9278
105k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "real_number"));
9279
105k
    }
9280
0
    { // '+' real_number
9281
105k
        if (p->error_indicator) {
9282
1
            p->level--;
9283
1
            return NULL;
9284
1
        }
9285
105k
        D(fprintf(stderr, "%*c> signed_real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+' real_number"));
9286
105k
        Token * _literal;
9287
105k
        expr_ty real;
9288
105k
        if (
9289
105k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
9290
315
            &&
9291
315
            (real = real_number_rule(p))  // real_number
9292
105k
        )
9293
268
        {
9294
268
            D(fprintf(stderr, "%*c+ signed_real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+' real_number"));
9295
268
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9296
268
            if (_token == NULL) {
9297
0
                p->level--;
9298
0
                return NULL;
9299
0
            }
9300
268
            int _end_lineno = _token->end_lineno;
9301
268
            UNUSED(_end_lineno); // Only used by EXTRA macro
9302
268
            int _end_col_offset = _token->end_col_offset;
9303
268
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9304
268
            _res = _PyAST_UnaryOp ( UAdd , real , EXTRA );
9305
268
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
9306
0
                p->error_indicator = 1;
9307
0
                p->level--;
9308
0
                return NULL;
9309
0
            }
9310
268
            goto done;
9311
268
        }
9312
105k
        p->mark = _mark;
9313
105k
        D(fprintf(stderr, "%*c%s signed_real_number[%d-%d]: %s failed!\n", p->level, ' ',
9314
105k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+' real_number"));
9315
105k
    }
9316
0
    { // '-' real_number
9317
105k
        if (p->error_indicator) {
9318
1
            p->level--;
9319
1
            return NULL;
9320
1
        }
9321
105k
        D(fprintf(stderr, "%*c> signed_real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' real_number"));
9322
105k
        Token * _literal;
9323
105k
        expr_ty real;
9324
105k
        if (
9325
105k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
9326
1.91k
            &&
9327
1.91k
            (real = real_number_rule(p))  // real_number
9328
105k
        )
9329
1.22k
        {
9330
1.22k
            D(fprintf(stderr, "%*c+ signed_real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' real_number"));
9331
1.22k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9332
1.22k
            if (_token == NULL) {
9333
0
                p->level--;
9334
0
                return NULL;
9335
0
            }
9336
1.22k
            int _end_lineno = _token->end_lineno;
9337
1.22k
            UNUSED(_end_lineno); // Only used by EXTRA macro
9338
1.22k
            int _end_col_offset = _token->end_col_offset;
9339
1.22k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9340
1.22k
            _res = _PyAST_UnaryOp ( USub , real , EXTRA );
9341
1.22k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
9342
0
                p->error_indicator = 1;
9343
0
                p->level--;
9344
0
                return NULL;
9345
0
            }
9346
1.22k
            goto done;
9347
1.22k
        }
9348
104k
        p->mark = _mark;
9349
104k
        D(fprintf(stderr, "%*c%s signed_real_number[%d-%d]: %s failed!\n", p->level, ' ',
9350
104k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' real_number"));
9351
104k
    }
9352
104k
    _res = NULL;
9353
107k
  done:
9354
107k
    p->level--;
9355
107k
    return _res;
9356
104k
}
9357
9358
// real_number: NUMBER
9359
static expr_ty
9360
real_number_rule(Parser *p)
9361
110k
{
9362
110k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
9363
0
        _Pypegen_stack_overflow(p);
9364
0
    }
9365
110k
    if (p->error_indicator) {
9366
0
        p->level--;
9367
0
        return NULL;
9368
0
    }
9369
110k
    expr_ty _res = NULL;
9370
110k
    int _mark = p->mark;
9371
110k
    { // NUMBER
9372
110k
        if (p->error_indicator) {
9373
0
            p->level--;
9374
0
            return NULL;
9375
0
        }
9376
110k
        D(fprintf(stderr, "%*c> real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9377
110k
        expr_ty real;
9378
110k
        if (
9379
110k
            (real = _PyPegen_number_token(p))  // NUMBER
9380
110k
        )
9381
3.40k
        {
9382
3.40k
            D(fprintf(stderr, "%*c+ real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9383
3.40k
            _res = _PyPegen_ensure_real ( p , real );
9384
3.40k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
9385
4
                p->error_indicator = 1;
9386
4
                p->level--;
9387
4
                return NULL;
9388
4
            }
9389
3.39k
            goto done;
9390
3.40k
        }
9391
106k
        p->mark = _mark;
9392
106k
        D(fprintf(stderr, "%*c%s real_number[%d-%d]: %s failed!\n", p->level, ' ',
9393
106k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
9394
106k
    }
9395
106k
    _res = NULL;
9396
110k
  done:
9397
110k
    p->level--;
9398
110k
    return _res;
9399
106k
}
9400
9401
// imaginary_number: NUMBER
9402
static expr_ty
9403
imaginary_number_rule(Parser *p)
9404
1.93k
{
9405
1.93k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
9406
0
        _Pypegen_stack_overflow(p);
9407
0
    }
9408
1.93k
    if (p->error_indicator) {
9409
0
        p->level--;
9410
0
        return NULL;
9411
0
    }
9412
1.93k
    expr_ty _res = NULL;
9413
1.93k
    int _mark = p->mark;
9414
1.93k
    { // NUMBER
9415
1.93k
        if (p->error_indicator) {
9416
0
            p->level--;
9417
0
            return NULL;
9418
0
        }
9419
1.93k
        D(fprintf(stderr, "%*c> imaginary_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9420
1.93k
        expr_ty imag;
9421
1.93k
        if (
9422
1.93k
            (imag = _PyPegen_number_token(p))  // NUMBER
9423
1.93k
        )
9424
1.47k
        {
9425
1.47k
            D(fprintf(stderr, "%*c+ imaginary_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9426
1.47k
            _res = _PyPegen_ensure_imaginary ( p , imag );
9427
1.47k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
9428
7
                p->error_indicator = 1;
9429
7
                p->level--;
9430
7
                return NULL;
9431
7
            }
9432
1.47k
            goto done;
9433
1.47k
        }
9434
457
        p->mark = _mark;
9435
457
        D(fprintf(stderr, "%*c%s imaginary_number[%d-%d]: %s failed!\n", p->level, ' ',
9436
457
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
9437
457
    }
9438
457
    _res = NULL;
9439
1.92k
  done:
9440
1.92k
    p->level--;
9441
1.92k
    return _res;
9442
457
}
9443
9444
// capture_pattern: pattern_capture_target
9445
static pattern_ty
9446
capture_pattern_rule(Parser *p)
9447
47.4k
{
9448
47.4k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
9449
0
        _Pypegen_stack_overflow(p);
9450
0
    }
9451
47.4k
    if (p->error_indicator) {
9452
0
        p->level--;
9453
0
        return NULL;
9454
0
    }
9455
47.4k
    pattern_ty _res = NULL;
9456
47.4k
    int _mark = p->mark;
9457
47.4k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9458
0
        p->error_indicator = 1;
9459
0
        p->level--;
9460
0
        return NULL;
9461
0
    }
9462
47.4k
    int _start_lineno = p->tokens[_mark]->lineno;
9463
47.4k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9464
47.4k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9465
47.4k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9466
47.4k
    { // pattern_capture_target
9467
47.4k
        if (p->error_indicator) {
9468
0
            p->level--;
9469
0
            return NULL;
9470
0
        }
9471
47.4k
        D(fprintf(stderr, "%*c> capture_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern_capture_target"));
9472
47.4k
        expr_ty target;
9473
47.4k
        if (
9474
47.4k
            (target = pattern_capture_target_rule(p))  // pattern_capture_target
9475
47.4k
        )
9476
13.2k
        {
9477
13.2k
            D(fprintf(stderr, "%*c+ capture_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern_capture_target"));
9478
13.2k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9479
13.2k
            if (_token == NULL) {
9480
0
                p->level--;
9481
0
                return NULL;
9482
0
            }
9483
13.2k
            int _end_lineno = _token->end_lineno;
9484
13.2k
            UNUSED(_end_lineno); // Only used by EXTRA macro
9485
13.2k
            int _end_col_offset = _token->end_col_offset;
9486
13.2k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9487
13.2k
            _res = _PyAST_MatchAs ( NULL , target -> v . Name . id , EXTRA );
9488
13.2k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
9489
0
                p->error_indicator = 1;
9490
0
                p->level--;
9491
0
                return NULL;
9492
0
            }
9493
13.2k
            goto done;
9494
13.2k
        }
9495
34.1k
        p->mark = _mark;
9496
34.1k
        D(fprintf(stderr, "%*c%s capture_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9497
34.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern_capture_target"));
9498
34.1k
    }
9499
34.1k
    _res = NULL;
9500
47.4k
  done:
9501
47.4k
    p->level--;
9502
47.4k
    return _res;
9503
34.1k
}
9504
9505
// pattern_capture_target: !"_" NAME !('.' | '(' | '=')
9506
static expr_ty
9507
pattern_capture_target_rule(Parser *p)
9508
51.6k
{
9509
51.6k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
9510
0
        _Pypegen_stack_overflow(p);
9511
0
    }
9512
51.6k
    if (p->error_indicator) {
9513
0
        p->level--;
9514
0
        return NULL;
9515
0
    }
9516
51.6k
    expr_ty _res = NULL;
9517
51.6k
    int _mark = p->mark;
9518
51.6k
    { // !"_" NAME !('.' | '(' | '=')
9519
51.6k
        if (p->error_indicator) {
9520
0
            p->level--;
9521
0
            return NULL;
9522
0
        }
9523
51.6k
        D(fprintf(stderr, "%*c> pattern_capture_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
9524
51.6k
        expr_ty name;
9525
51.6k
        if (
9526
51.6k
            _PyPegen_lookahead_with_string(0, _PyPegen_expect_soft_keyword, p, "_")
9527
43.9k
            &&
9528
43.9k
            (name = _PyPegen_name_token(p))  // NAME
9529
28.7k
            &&
9530
28.7k
            _PyPegen_lookahead(0, _tmp_43_rule, p)
9531
51.6k
        )
9532
16.5k
        {
9533
16.5k
            D(fprintf(stderr, "%*c+ pattern_capture_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
9534
16.5k
            _res = _PyPegen_set_expr_context ( p , name , Store );
9535
16.5k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
9536
22
                p->error_indicator = 1;
9537
22
                p->level--;
9538
22
                return NULL;
9539
22
            }
9540
16.5k
            goto done;
9541
16.5k
        }
9542
35.1k
        p->mark = _mark;
9543
35.1k
        D(fprintf(stderr, "%*c%s pattern_capture_target[%d-%d]: %s failed!\n", p->level, ' ',
9544
35.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
9545
35.1k
    }
9546
35.1k
    _res = NULL;
9547
51.6k
  done:
9548
51.6k
    p->level--;
9549
51.6k
    return _res;
9550
35.1k
}
9551
9552
// wildcard_pattern: "_"
9553
static pattern_ty
9554
wildcard_pattern_rule(Parser *p)
9555
35.0k
{
9556
35.0k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
9557
0
        _Pypegen_stack_overflow(p);
9558
0
    }
9559
35.0k
    if (p->error_indicator) {
9560
0
        p->level--;
9561
0
        return NULL;
9562
0
    }
9563
35.0k
    pattern_ty _res = NULL;
9564
35.0k
    int _mark = p->mark;
9565
35.0k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9566
0
        p->error_indicator = 1;
9567
0
        p->level--;
9568
0
        return NULL;
9569
0
    }
9570
35.0k
    int _start_lineno = p->tokens[_mark]->lineno;
9571
35.0k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9572
35.0k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9573
35.0k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9574
35.0k
    { // "_"
9575
35.0k
        if (p->error_indicator) {
9576
0
            p->level--;
9577
0
            return NULL;
9578
0
        }
9579
35.0k
        D(fprintf(stderr, "%*c> wildcard_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"_\""));
9580
35.0k
        expr_ty _keyword;
9581
35.0k
        if (
9582
35.0k
            (_keyword = _PyPegen_expect_soft_keyword(p, "_"))  // soft_keyword='"_"'
9583
35.0k
        )
9584
7.66k
        {
9585
7.66k
            D(fprintf(stderr, "%*c+ wildcard_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"_\""));
9586
7.66k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9587
7.66k
            if (_token == NULL) {
9588
0
                p->level--;
9589
0
                return NULL;
9590
0
            }
9591
7.66k
            int _end_lineno = _token->end_lineno;
9592
7.66k
            UNUSED(_end_lineno); // Only used by EXTRA macro
9593
7.66k
            int _end_col_offset = _token->end_col_offset;
9594
7.66k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9595
7.66k
            _res = _PyAST_MatchAs ( NULL , NULL , EXTRA );
9596
7.66k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
9597
0
                p->error_indicator = 1;
9598
0
                p->level--;
9599
0
                return NULL;
9600
0
            }
9601
7.66k
            goto done;
9602
7.66k
        }
9603
27.4k
        p->mark = _mark;
9604
27.4k
        D(fprintf(stderr, "%*c%s wildcard_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9605
27.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"_\""));
9606
27.4k
    }
9607
27.4k
    _res = NULL;
9608
35.0k
  done:
9609
35.0k
    p->level--;
9610
35.0k
    return _res;
9611
27.4k
}
9612
9613
// value_pattern: attr !('.' | '(' | '=')
9614
static pattern_ty
9615
value_pattern_rule(Parser *p)
9616
27.2k
{
9617
27.2k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
9618
0
        _Pypegen_stack_overflow(p);
9619
0
    }
9620
27.2k
    if (p->error_indicator) {
9621
0
        p->level--;
9622
0
        return NULL;
9623
0
    }
9624
27.2k
    pattern_ty _res = NULL;
9625
27.2k
    int _mark = p->mark;
9626
27.2k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9627
0
        p->error_indicator = 1;
9628
0
        p->level--;
9629
0
        return NULL;
9630
0
    }
9631
27.2k
    int _start_lineno = p->tokens[_mark]->lineno;
9632
27.2k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9633
27.2k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9634
27.2k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9635
27.2k
    { // attr !('.' | '(' | '=')
9636
27.2k
        if (p->error_indicator) {
9637
0
            p->level--;
9638
0
            return NULL;
9639
0
        }
9640
27.2k
        D(fprintf(stderr, "%*c> value_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr !('.' | '(' | '=')"));
9641
27.2k
        expr_ty attr;
9642
27.2k
        if (
9643
27.2k
            (attr = attr_rule(p))  // attr
9644
439
            &&
9645
439
            _PyPegen_lookahead(0, _tmp_43_rule, p)
9646
27.2k
        )
9647
328
        {
9648
328
            D(fprintf(stderr, "%*c+ value_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr !('.' | '(' | '=')"));
9649
328
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9650
328
            if (_token == NULL) {
9651
0
                p->level--;
9652
0
                return NULL;
9653
0
            }
9654
328
            int _end_lineno = _token->end_lineno;
9655
328
            UNUSED(_end_lineno); // Only used by EXTRA macro
9656
328
            int _end_col_offset = _token->end_col_offset;
9657
328
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9658
328
            _res = _PyAST_MatchValue ( attr , EXTRA );
9659
328
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
9660
0
                p->error_indicator = 1;
9661
0
                p->level--;
9662
0
                return NULL;
9663
0
            }
9664
328
            goto done;
9665
328
        }
9666
26.9k
        p->mark = _mark;
9667
26.9k
        D(fprintf(stderr, "%*c%s value_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9668
26.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr !('.' | '(' | '=')"));
9669
26.9k
    }
9670
26.9k
    _res = NULL;
9671
27.2k
  done:
9672
27.2k
    p->level--;
9673
27.2k
    return _res;
9674
26.9k
}
9675
9676
// Left-recursive
9677
// attr: name_or_attr '.' NAME
9678
static expr_ty attr_raw(Parser *);
9679
static expr_ty
9680
attr_rule(Parser *p)
9681
147k
{
9682
147k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
9683
0
        _Pypegen_stack_overflow(p);
9684
0
    }
9685
147k
    expr_ty _res = NULL;
9686
147k
    if (_PyPegen_is_memoized(p, attr_type, &_res)) {
9687
119k
        p->level--;
9688
119k
        return _res;
9689
119k
    }
9690
28.4k
    int _mark = p->mark;
9691
28.4k
    int _resmark = p->mark;
9692
28.4k
    Memo *_memo = _PyPegen_insert_memo_direct(p, _mark, attr_type);
9693
28.4k
    if (_memo == NULL) {
9694
0
        p->level--;
9695
0
        return NULL;
9696
0
    }
9697
29.3k
    while (1) {
9698
29.3k
        _memo->node = _res;
9699
29.3k
        _memo->mark = p->mark;
9700
29.3k
        p->mark = _mark;
9701
29.3k
        void *_raw = attr_raw(p);
9702
29.3k
        if (p->error_indicator) {
9703
8
            p->level--;
9704
8
            return NULL;
9705
8
        }
9706
29.3k
        if (_raw == NULL || p->mark <= _resmark)
9707
28.4k
            break;
9708
883
        _resmark = p->mark;
9709
883
        _res = _raw;
9710
883
    }
9711
28.4k
    p->mark = _resmark;
9712
28.4k
    p->level--;
9713
28.4k
    return _res;
9714
28.4k
}
9715
static expr_ty
9716
attr_raw(Parser *p)
9717
29.3k
{
9718
29.3k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
9719
0
        _Pypegen_stack_overflow(p);
9720
0
    }
9721
29.3k
    if (p->error_indicator) {
9722
0
        p->level--;
9723
0
        return NULL;
9724
0
    }
9725
29.3k
    expr_ty _res = NULL;
9726
29.3k
    int _mark = p->mark;
9727
29.3k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9728
0
        p->error_indicator = 1;
9729
0
        p->level--;
9730
0
        return NULL;
9731
0
    }
9732
29.3k
    int _start_lineno = p->tokens[_mark]->lineno;
9733
29.3k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9734
29.3k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9735
29.3k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9736
29.3k
    { // name_or_attr '.' NAME
9737
29.3k
        if (p->error_indicator) {
9738
0
            p->level--;
9739
0
            return NULL;
9740
0
        }
9741
29.3k
        D(fprintf(stderr, "%*c> attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '.' NAME"));
9742
29.3k
        Token * _literal;
9743
29.3k
        expr_ty attr;
9744
29.3k
        expr_ty value;
9745
29.3k
        if (
9746
29.3k
            (value = name_or_attr_rule(p))  // name_or_attr
9747
12.9k
            &&
9748
12.9k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
9749
898
            &&
9750
898
            (attr = _PyPegen_name_token(p))  // NAME
9751
29.3k
        )
9752
883
        {
9753
883
            D(fprintf(stderr, "%*c+ attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '.' NAME"));
9754
883
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9755
883
            if (_token == NULL) {
9756
0
                p->level--;
9757
0
                return NULL;
9758
0
            }
9759
883
            int _end_lineno = _token->end_lineno;
9760
883
            UNUSED(_end_lineno); // Only used by EXTRA macro
9761
883
            int _end_col_offset = _token->end_col_offset;
9762
883
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9763
883
            _res = _PyAST_Attribute ( value , attr -> v . Name . id , Load , EXTRA );
9764
883
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
9765
0
                p->error_indicator = 1;
9766
0
                p->level--;
9767
0
                return NULL;
9768
0
            }
9769
883
            goto done;
9770
883
        }
9771
28.4k
        p->mark = _mark;
9772
28.4k
        D(fprintf(stderr, "%*c%s attr[%d-%d]: %s failed!\n", p->level, ' ',
9773
28.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '.' NAME"));
9774
28.4k
    }
9775
28.4k
    _res = NULL;
9776
29.3k
  done:
9777
29.3k
    p->level--;
9778
29.3k
    return _res;
9779
28.4k
}
9780
9781
// Left-recursive
9782
// name_or_attr: attr | NAME
9783
Py_LOCAL_SYMBOL expr_ty
9784
name_or_attr_rule(Parser *p)
9785
117k
{
9786
117k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
9787
0
        _Pypegen_stack_overflow(p);
9788
0
    }
9789
117k
    if (p->error_indicator) {
9790
0
        p->level--;
9791
0
        return NULL;
9792
0
    }
9793
117k
    expr_ty _res = NULL;
9794
117k
    int _mark = p->mark;
9795
117k
    { // attr
9796
117k
        if (p->error_indicator) {
9797
0
            p->level--;
9798
0
            return NULL;
9799
0
        }
9800
117k
        D(fprintf(stderr, "%*c> name_or_attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr"));
9801
117k
        expr_ty attr_var;
9802
117k
        if (
9803
117k
            (attr_var = attr_rule(p))  // attr
9804
117k
        )
9805
1.38k
        {
9806
1.38k
            D(fprintf(stderr, "%*c+ name_or_attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr"));
9807
1.38k
            _res = attr_var;
9808
1.38k
            goto done;
9809
1.38k
        }
9810
116k
        p->mark = _mark;
9811
116k
        D(fprintf(stderr, "%*c%s name_or_attr[%d-%d]: %s failed!\n", p->level, ' ',
9812
116k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr"));
9813
116k
    }
9814
0
    { // NAME
9815
116k
        if (p->error_indicator) {
9816
0
            p->level--;
9817
0
            return NULL;
9818
0
        }
9819
116k
        D(fprintf(stderr, "%*c> name_or_attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
9820
116k
        expr_ty name_var;
9821
116k
        if (
9822
116k
            (name_var = _PyPegen_name_token(p))  // NAME
9823
116k
        )
9824
56.0k
        {
9825
56.0k
            D(fprintf(stderr, "%*c+ name_or_attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
9826
56.0k
            _res = name_var;
9827
56.0k
            goto done;
9828
56.0k
        }
9829
60.0k
        p->mark = _mark;
9830
60.0k
        D(fprintf(stderr, "%*c%s name_or_attr[%d-%d]: %s failed!\n", p->level, ' ',
9831
60.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
9832
60.0k
    }
9833
60.0k
    _res = NULL;
9834
117k
  done:
9835
117k
    p->level--;
9836
117k
    return _res;
9837
60.0k
}
9838
9839
// group_pattern: '(' pattern ')'
9840
static pattern_ty
9841
group_pattern_rule(Parser *p)
9842
26.8k
{
9843
26.8k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
9844
0
        _Pypegen_stack_overflow(p);
9845
0
    }
9846
26.8k
    if (p->error_indicator) {
9847
0
        p->level--;
9848
0
        return NULL;
9849
0
    }
9850
26.8k
    pattern_ty _res = NULL;
9851
26.8k
    int _mark = p->mark;
9852
26.8k
    { // '(' pattern ')'
9853
26.8k
        if (p->error_indicator) {
9854
0
            p->level--;
9855
0
            return NULL;
9856
0
        }
9857
26.8k
        D(fprintf(stderr, "%*c> group_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' pattern ')'"));
9858
26.8k
        Token * _literal;
9859
26.8k
        Token * _literal_1;
9860
26.8k
        pattern_ty pattern;
9861
26.8k
        if (
9862
26.8k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
9863
4.34k
            &&
9864
4.34k
            (pattern = pattern_rule(p))  // pattern
9865
1.20k
            &&
9866
1.20k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
9867
26.8k
        )
9868
281
        {
9869
281
            D(fprintf(stderr, "%*c+ group_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' pattern ')'"));
9870
281
            _res = pattern;
9871
281
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
9872
0
                p->error_indicator = 1;
9873
0
                p->level--;
9874
0
                return NULL;
9875
0
            }
9876
281
            goto done;
9877
281
        }
9878
26.6k
        p->mark = _mark;
9879
26.6k
        D(fprintf(stderr, "%*c%s group_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9880
26.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' pattern ')'"));
9881
26.6k
    }
9882
26.6k
    _res = NULL;
9883
26.8k
  done:
9884
26.8k
    p->level--;
9885
26.8k
    return _res;
9886
26.6k
}
9887
9888
// sequence_pattern: '[' maybe_sequence_pattern? ']' | '(' open_sequence_pattern? ')'
9889
static pattern_ty
9890
sequence_pattern_rule(Parser *p)
9891
26.2k
{
9892
26.2k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
9893
0
        _Pypegen_stack_overflow(p);
9894
0
    }
9895
26.2k
    if (p->error_indicator) {
9896
0
        p->level--;
9897
0
        return NULL;
9898
0
    }
9899
26.2k
    pattern_ty _res = NULL;
9900
26.2k
    int _mark = p->mark;
9901
26.2k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9902
0
        p->error_indicator = 1;
9903
0
        p->level--;
9904
0
        return NULL;
9905
0
    }
9906
26.2k
    int _start_lineno = p->tokens[_mark]->lineno;
9907
26.2k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9908
26.2k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9909
26.2k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9910
26.2k
    { // '[' maybe_sequence_pattern? ']'
9911
26.2k
        if (p->error_indicator) {
9912
0
            p->level--;
9913
0
            return NULL;
9914
0
        }
9915
26.2k
        D(fprintf(stderr, "%*c> sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
9916
26.2k
        Token * _literal;
9917
26.2k
        Token * _literal_1;
9918
26.2k
        void *patterns;
9919
26.2k
        if (
9920
26.2k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
9921
2.31k
            &&
9922
2.31k
            (patterns = maybe_sequence_pattern_rule(p), !p->error_indicator)  // maybe_sequence_pattern?
9923
1.63k
            &&
9924
1.63k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
9925
26.2k
        )
9926
221
        {
9927
221
            D(fprintf(stderr, "%*c+ sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
9928
221
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9929
221
            if (_token == NULL) {
9930
0
                p->level--;
9931
0
                return NULL;
9932
0
            }
9933
221
            int _end_lineno = _token->end_lineno;
9934
221
            UNUSED(_end_lineno); // Only used by EXTRA macro
9935
221
            int _end_col_offset = _token->end_col_offset;
9936
221
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9937
221
            _res = _PyAST_MatchSequence ( patterns , EXTRA );
9938
221
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
9939
0
                p->error_indicator = 1;
9940
0
                p->level--;
9941
0
                return NULL;
9942
0
            }
9943
221
            goto done;
9944
221
        }
9945
26.0k
        p->mark = _mark;
9946
26.0k
        D(fprintf(stderr, "%*c%s sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9947
26.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
9948
26.0k
    }
9949
0
    { // '(' open_sequence_pattern? ')'
9950
26.0k
        if (p->error_indicator) {
9951
679
            p->level--;
9952
679
            return NULL;
9953
679
        }
9954
25.3k
        D(fprintf(stderr, "%*c> sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' open_sequence_pattern? ')'"));
9955
25.3k
        Token * _literal;
9956
25.3k
        Token * _literal_1;
9957
25.3k
        void *patterns;
9958
25.3k
        if (
9959
25.3k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
9960
3.72k
            &&
9961
3.72k
            (patterns = open_sequence_pattern_rule(p), !p->error_indicator)  // open_sequence_pattern?
9962
3.34k
            &&
9963
3.34k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
9964
25.3k
        )
9965
1.56k
        {
9966
1.56k
            D(fprintf(stderr, "%*c+ sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' open_sequence_pattern? ')'"));
9967
1.56k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9968
1.56k
            if (_token == NULL) {
9969
0
                p->level--;
9970
0
                return NULL;
9971
0
            }
9972
1.56k
            int _end_lineno = _token->end_lineno;
9973
1.56k
            UNUSED(_end_lineno); // Only used by EXTRA macro
9974
1.56k
            int _end_col_offset = _token->end_col_offset;
9975
1.56k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9976
1.56k
            _res = _PyAST_MatchSequence ( patterns , EXTRA );
9977
1.56k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
9978
0
                p->error_indicator = 1;
9979
0
                p->level--;
9980
0
                return NULL;
9981
0
            }
9982
1.56k
            goto done;
9983
1.56k
        }
9984
23.8k
        p->mark = _mark;
9985
23.8k
        D(fprintf(stderr, "%*c%s sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9986
23.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' open_sequence_pattern? ')'"));
9987
23.8k
    }
9988
23.8k
    _res = NULL;
9989
25.5k
  done:
9990
25.5k
    p->level--;
9991
25.5k
    return _res;
9992
23.8k
}
9993
9994
// open_sequence_pattern: maybe_star_pattern ',' maybe_sequence_pattern?
9995
static asdl_seq*
9996
open_sequence_pattern_rule(Parser *p)
9997
11.7k
{
9998
11.7k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
9999
0
        _Pypegen_stack_overflow(p);
10000
0
    }
10001
11.7k
    if (p->error_indicator) {
10002
0
        p->level--;
10003
0
        return NULL;
10004
0
    }
10005
11.7k
    asdl_seq* _res = NULL;
10006
11.7k
    int _mark = p->mark;
10007
11.7k
    { // maybe_star_pattern ',' maybe_sequence_pattern?
10008
11.7k
        if (p->error_indicator) {
10009
0
            p->level--;
10010
0
            return NULL;
10011
0
        }
10012
11.7k
        D(fprintf(stderr, "%*c> open_sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
10013
11.7k
        Token * _literal;
10014
11.7k
        pattern_ty pattern;
10015
11.7k
        void *patterns;
10016
11.7k
        if (
10017
11.7k
            (pattern = maybe_star_pattern_rule(p))  // maybe_star_pattern
10018
6.92k
            &&
10019
6.92k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
10020
2.74k
            &&
10021
2.74k
            (patterns = maybe_sequence_pattern_rule(p), !p->error_indicator)  // maybe_sequence_pattern?
10022
11.7k
        )
10023
2.34k
        {
10024
2.34k
            D(fprintf(stderr, "%*c+ open_sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
10025
2.34k
            _res = _PyPegen_seq_insert_in_front ( p , pattern , patterns );
10026
2.34k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
10027
0
                p->error_indicator = 1;
10028
0
                p->level--;
10029
0
                return NULL;
10030
0
            }
10031
2.34k
            goto done;
10032
2.34k
        }
10033
9.42k
        p->mark = _mark;
10034
9.42k
        D(fprintf(stderr, "%*c%s open_sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10035
9.42k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
10036
9.42k
    }
10037
9.42k
    _res = NULL;
10038
11.7k
  done:
10039
11.7k
    p->level--;
10040
11.7k
    return _res;
10041
9.42k
}
10042
10043
// maybe_sequence_pattern: ','.maybe_star_pattern+ ','?
10044
static asdl_seq*
10045
maybe_sequence_pattern_rule(Parser *p)
10046
5.05k
{
10047
5.05k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
10048
0
        _Pypegen_stack_overflow(p);
10049
0
    }
10050
5.05k
    if (p->error_indicator) {
10051
0
        p->level--;
10052
0
        return NULL;
10053
0
    }
10054
5.05k
    asdl_seq* _res = NULL;
10055
5.05k
    int _mark = p->mark;
10056
5.05k
    { // ','.maybe_star_pattern+ ','?
10057
5.05k
        if (p->error_indicator) {
10058
0
            p->level--;
10059
0
            return NULL;
10060
0
        }
10061
5.05k
        D(fprintf(stderr, "%*c> maybe_sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.maybe_star_pattern+ ','?"));
10062
5.05k
        void *_opt_var;
10063
5.05k
        UNUSED(_opt_var); // Silence compiler warnings
10064
5.05k
        asdl_seq * patterns;
10065
5.05k
        if (
10066
5.05k
            (patterns = _gather_45_rule(p))  // ','.maybe_star_pattern+
10067
2.10k
            &&
10068
2.10k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10069
5.05k
        )
10070
1.69k
        {
10071
1.69k
            D(fprintf(stderr, "%*c+ maybe_sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.maybe_star_pattern+ ','?"));
10072
1.69k
            _res = patterns;
10073
1.69k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
10074
0
                p->error_indicator = 1;
10075
0
                p->level--;
10076
0
                return NULL;
10077
0
            }
10078
1.69k
            goto done;
10079
1.69k
        }
10080
3.35k
        p->mark = _mark;
10081
3.35k
        D(fprintf(stderr, "%*c%s maybe_sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10082
3.35k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.maybe_star_pattern+ ','?"));
10083
3.35k
    }
10084
3.35k
    _res = NULL;
10085
5.05k
  done:
10086
5.05k
    p->level--;
10087
5.05k
    return _res;
10088
3.35k
}
10089
10090
// maybe_star_pattern: star_pattern | pattern
10091
static pattern_ty
10092
maybe_star_pattern_rule(Parser *p)
10093
27.8k
{
10094
27.8k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
10095
0
        _Pypegen_stack_overflow(p);
10096
0
    }
10097
27.8k
    if (p->error_indicator) {
10098
0
        p->level--;
10099
0
        return NULL;
10100
0
    }
10101
27.8k
    pattern_ty _res = NULL;
10102
27.8k
    int _mark = p->mark;
10103
27.8k
    { // star_pattern
10104
27.8k
        if (p->error_indicator) {
10105
0
            p->level--;
10106
0
            return NULL;
10107
0
        }
10108
27.8k
        D(fprintf(stderr, "%*c> maybe_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_pattern"));
10109
27.8k
        pattern_ty star_pattern_var;
10110
27.8k
        if (
10111
27.8k
            (star_pattern_var = star_pattern_rule(p))  // star_pattern
10112
27.8k
        )
10113
2.44k
        {
10114
2.44k
            D(fprintf(stderr, "%*c+ maybe_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_pattern"));
10115
2.44k
            _res = star_pattern_var;
10116
2.44k
            goto done;
10117
2.44k
        }
10118
25.3k
        p->mark = _mark;
10119
25.3k
        D(fprintf(stderr, "%*c%s maybe_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10120
25.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_pattern"));
10121
25.3k
    }
10122
0
    { // pattern
10123
25.3k
        if (p->error_indicator) {
10124
21
            p->level--;
10125
21
            return NULL;
10126
21
        }
10127
25.3k
        D(fprintf(stderr, "%*c> maybe_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern"));
10128
25.3k
        pattern_ty pattern_var;
10129
25.3k
        if (
10130
25.3k
            (pattern_var = pattern_rule(p))  // pattern
10131
25.3k
        )
10132
16.2k
        {
10133
16.2k
            D(fprintf(stderr, "%*c+ maybe_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern"));
10134
16.2k
            _res = pattern_var;
10135
16.2k
            goto done;
10136
16.2k
        }
10137
9.08k
        p->mark = _mark;
10138
9.08k
        D(fprintf(stderr, "%*c%s maybe_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10139
9.08k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern"));
10140
9.08k
    }
10141
9.08k
    _res = NULL;
10142
27.7k
  done:
10143
27.7k
    p->level--;
10144
27.7k
    return _res;
10145
9.08k
}
10146
10147
// star_pattern: '*' pattern_capture_target | '*' wildcard_pattern
10148
static pattern_ty
10149
star_pattern_rule(Parser *p)
10150
27.8k
{
10151
27.8k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
10152
0
        _Pypegen_stack_overflow(p);
10153
0
    }
10154
27.8k
    if (p->error_indicator) {
10155
0
        p->level--;
10156
0
        return NULL;
10157
0
    }
10158
27.8k
    pattern_ty _res = NULL;
10159
27.8k
    if (_PyPegen_is_memoized(p, star_pattern_type, &_res)) {
10160
4.38k
        p->level--;
10161
4.38k
        return _res;
10162
4.38k
    }
10163
23.4k
    int _mark = p->mark;
10164
23.4k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10165
0
        p->error_indicator = 1;
10166
0
        p->level--;
10167
0
        return NULL;
10168
0
    }
10169
23.4k
    int _start_lineno = p->tokens[_mark]->lineno;
10170
23.4k
    UNUSED(_start_lineno); // Only used by EXTRA macro
10171
23.4k
    int _start_col_offset = p->tokens[_mark]->col_offset;
10172
23.4k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
10173
23.4k
    { // '*' pattern_capture_target
10174
23.4k
        if (p->error_indicator) {
10175
0
            p->level--;
10176
0
            return NULL;
10177
0
        }
10178
23.4k
        D(fprintf(stderr, "%*c> star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' pattern_capture_target"));
10179
23.4k
        Token * _literal;
10180
23.4k
        expr_ty target;
10181
23.4k
        if (
10182
23.4k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
10183
1.86k
            &&
10184
1.86k
            (target = pattern_capture_target_rule(p))  // pattern_capture_target
10185
23.4k
        )
10186
875
        {
10187
875
            D(fprintf(stderr, "%*c+ star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' pattern_capture_target"));
10188
875
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10189
875
            if (_token == NULL) {
10190
0
                p->level--;
10191
0
                return NULL;
10192
0
            }
10193
875
            int _end_lineno = _token->end_lineno;
10194
875
            UNUSED(_end_lineno); // Only used by EXTRA macro
10195
875
            int _end_col_offset = _token->end_col_offset;
10196
875
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10197
875
            _res = _PyAST_MatchStar ( target -> v . Name . id , EXTRA );
10198
875
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
10199
0
                p->error_indicator = 1;
10200
0
                p->level--;
10201
0
                return NULL;
10202
0
            }
10203
875
            goto done;
10204
875
        }
10205
22.5k
        p->mark = _mark;
10206
22.5k
        D(fprintf(stderr, "%*c%s star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10207
22.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' pattern_capture_target"));
10208
22.5k
    }
10209
0
    { // '*' wildcard_pattern
10210
22.5k
        if (p->error_indicator) {
10211
1
            p->level--;
10212
1
            return NULL;
10213
1
        }
10214
22.5k
        D(fprintf(stderr, "%*c> star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' wildcard_pattern"));
10215
22.5k
        Token * _literal;
10216
22.5k
        pattern_ty wildcard_pattern_var;
10217
22.5k
        if (
10218
22.5k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
10219
989
            &&
10220
989
            (wildcard_pattern_var = wildcard_pattern_rule(p))  // wildcard_pattern
10221
22.5k
        )
10222
789
        {
10223
789
            D(fprintf(stderr, "%*c+ star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' wildcard_pattern"));
10224
789
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10225
789
            if (_token == NULL) {
10226
0
                p->level--;
10227
0
                return NULL;
10228
0
            }
10229
789
            int _end_lineno = _token->end_lineno;
10230
789
            UNUSED(_end_lineno); // Only used by EXTRA macro
10231
789
            int _end_col_offset = _token->end_col_offset;
10232
789
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10233
789
            _res = _PyAST_MatchStar ( NULL , EXTRA );
10234
789
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
10235
0
                p->error_indicator = 1;
10236
0
                p->level--;
10237
0
                return NULL;
10238
0
            }
10239
789
            goto done;
10240
789
        }
10241
21.7k
        p->mark = _mark;
10242
21.7k
        D(fprintf(stderr, "%*c%s star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10243
21.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' wildcard_pattern"));
10244
21.7k
    }
10245
21.7k
    _res = NULL;
10246
23.4k
  done:
10247
23.4k
    _PyPegen_insert_memo(p, _mark, star_pattern_type, _res);
10248
23.4k
    p->level--;
10249
23.4k
    return _res;
10250
21.7k
}
10251
10252
// mapping_pattern:
10253
//     | '{' '}'
10254
//     | '{' double_star_pattern ','? '}'
10255
//     | '{' items_pattern ',' double_star_pattern ','? '}'
10256
//     | '{' items_pattern ','? '}'
10257
//     | invalid_mapping_pattern
10258
static pattern_ty
10259
mapping_pattern_rule(Parser *p)
10260
23.4k
{
10261
23.4k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
10262
0
        _Pypegen_stack_overflow(p);
10263
0
    }
10264
23.4k
    if (p->error_indicator) {
10265
0
        p->level--;
10266
0
        return NULL;
10267
0
    }
10268
23.4k
    pattern_ty _res = NULL;
10269
23.4k
    int _mark = p->mark;
10270
23.4k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10271
0
        p->error_indicator = 1;
10272
0
        p->level--;
10273
0
        return NULL;
10274
0
    }
10275
23.4k
    int _start_lineno = p->tokens[_mark]->lineno;
10276
23.4k
    UNUSED(_start_lineno); // Only used by EXTRA macro
10277
23.4k
    int _start_col_offset = p->tokens[_mark]->col_offset;
10278
23.4k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
10279
23.4k
    { // '{' '}'
10280
23.4k
        if (p->error_indicator) {
10281
0
            p->level--;
10282
0
            return NULL;
10283
0
        }
10284
23.4k
        D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
10285
23.4k
        Token * _literal;
10286
23.4k
        Token * _literal_1;
10287
23.4k
        if (
10288
23.4k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
10289
5.20k
            &&
10290
5.20k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
10291
23.4k
        )
10292
394
        {
10293
394
            D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
10294
394
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10295
394
            if (_token == NULL) {
10296
0
                p->level--;
10297
0
                return NULL;
10298
0
            }
10299
394
            int _end_lineno = _token->end_lineno;
10300
394
            UNUSED(_end_lineno); // Only used by EXTRA macro
10301
394
            int _end_col_offset = _token->end_col_offset;
10302
394
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10303
394
            _res = _PyAST_MatchMapping ( NULL , NULL , NULL , EXTRA );
10304
394
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
10305
0
                p->error_indicator = 1;
10306
0
                p->level--;
10307
0
                return NULL;
10308
0
            }
10309
394
            goto done;
10310
394
        }
10311
23.0k
        p->mark = _mark;
10312
23.0k
        D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10313
23.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '}'"));
10314
23.0k
    }
10315
0
    { // '{' double_star_pattern ','? '}'
10316
23.0k
        if (p->error_indicator) {
10317
3
            p->level--;
10318
3
            return NULL;
10319
3
        }
10320
23.0k
        D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' double_star_pattern ','? '}'"));
10321
23.0k
        Token * _literal;
10322
23.0k
        Token * _literal_1;
10323
23.0k
        void *_opt_var;
10324
23.0k
        UNUSED(_opt_var); // Silence compiler warnings
10325
23.0k
        expr_ty rest;
10326
23.0k
        if (
10327
23.0k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
10328
4.80k
            &&
10329
4.80k
            (rest = double_star_pattern_rule(p))  // double_star_pattern
10330
920
            &&
10331
920
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10332
920
            &&
10333
920
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
10334
23.0k
        )
10335
215
        {
10336
215
            D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' double_star_pattern ','? '}'"));
10337
215
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10338
215
            if (_token == NULL) {
10339
0
                p->level--;
10340
0
                return NULL;
10341
0
            }
10342
215
            int _end_lineno = _token->end_lineno;
10343
215
            UNUSED(_end_lineno); // Only used by EXTRA macro
10344
215
            int _end_col_offset = _token->end_col_offset;
10345
215
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10346
215
            _res = _PyAST_MatchMapping ( NULL , NULL , rest -> v . Name . id , EXTRA );
10347
215
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
10348
0
                p->error_indicator = 1;
10349
0
                p->level--;
10350
0
                return NULL;
10351
0
            }
10352
215
            goto done;
10353
215
        }
10354
22.8k
        p->mark = _mark;
10355
22.8k
        D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10356
22.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' double_star_pattern ','? '}'"));
10357
22.8k
    }
10358
0
    { // '{' items_pattern ',' double_star_pattern ','? '}'
10359
22.8k
        if (p->error_indicator) {
10360
4
            p->level--;
10361
4
            return NULL;
10362
4
        }
10363
22.8k
        D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
10364
22.8k
        Token * _literal;
10365
22.8k
        Token * _literal_1;
10366
22.8k
        Token * _literal_2;
10367
22.8k
        void *_opt_var;
10368
22.8k
        UNUSED(_opt_var); // Silence compiler warnings
10369
22.8k
        asdl_seq* items;
10370
22.8k
        expr_ty rest;
10371
22.8k
        if (
10372
22.8k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
10373
4.58k
            &&
10374
4.58k
            (items = items_pattern_rule(p))  // items_pattern
10375
2.47k
            &&
10376
2.47k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
10377
1.68k
            &&
10378
1.68k
            (rest = double_star_pattern_rule(p))  // double_star_pattern
10379
416
            &&
10380
416
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10381
416
            &&
10382
416
            (_literal_2 = _PyPegen_expect_token(p, 26))  // token='}'
10383
22.8k
        )
10384
348
        {
10385
348
            D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
10386
348
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10387
348
            if (_token == NULL) {
10388
0
                p->level--;
10389
0
                return NULL;
10390
0
            }
10391
348
            int _end_lineno = _token->end_lineno;
10392
348
            UNUSED(_end_lineno); // Only used by EXTRA macro
10393
348
            int _end_col_offset = _token->end_col_offset;
10394
348
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10395
348
            _res = _PyAST_MatchMapping ( CHECK ( asdl_expr_seq* , _PyPegen_get_pattern_keys ( p , items ) ) , CHECK ( asdl_pattern_seq* , _PyPegen_get_patterns ( p , items ) ) , rest -> v . Name . id , EXTRA );
10396
348
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
10397
0
                p->error_indicator = 1;
10398
0
                p->level--;
10399
0
                return NULL;
10400
0
            }
10401
348
            goto done;
10402
348
        }
10403
22.4k
        p->mark = _mark;
10404
22.4k
        D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10405
22.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
10406
22.4k
    }
10407
0
    { // '{' items_pattern ','? '}'
10408
22.4k
        if (p->error_indicator) {
10409
428
            p->level--;
10410
428
            return NULL;
10411
428
        }
10412
22.0k
        D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ','? '}'"));
10413
22.0k
        Token * _literal;
10414
22.0k
        Token * _literal_1;
10415
22.0k
        void *_opt_var;
10416
22.0k
        UNUSED(_opt_var); // Silence compiler warnings
10417
22.0k
        asdl_seq* items;
10418
22.0k
        if (
10419
22.0k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
10420
3.81k
            &&
10421
3.81k
            (items = items_pattern_rule(p))  // items_pattern
10422
1.86k
            &&
10423
1.86k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10424
1.86k
            &&
10425
1.86k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
10426
22.0k
        )
10427
393
        {
10428
393
            D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ','? '}'"));
10429
393
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10430
393
            if (_token == NULL) {
10431
0
                p->level--;
10432
0
                return NULL;
10433
0
            }
10434
393
            int _end_lineno = _token->end_lineno;
10435
393
            UNUSED(_end_lineno); // Only used by EXTRA macro
10436
393
            int _end_col_offset = _token->end_col_offset;
10437
393
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10438
393
            _res = _PyAST_MatchMapping ( CHECK ( asdl_expr_seq* , _PyPegen_get_pattern_keys ( p , items ) ) , CHECK ( asdl_pattern_seq* , _PyPegen_get_patterns ( p , items ) ) , NULL , EXTRA );
10439
393
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
10440
0
                p->error_indicator = 1;
10441
0
                p->level--;
10442
0
                return NULL;
10443
0
            }
10444
393
            goto done;
10445
393
        }
10446
21.6k
        p->mark = _mark;
10447
21.6k
        D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10448
21.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' items_pattern ','? '}'"));
10449
21.6k
    }
10450
21.6k
    if (p->call_invalid_rules) { // invalid_mapping_pattern
10451
11.6k
        if (p->error_indicator) {
10452
0
            p->level--;
10453
0
            return NULL;
10454
0
        }
10455
11.6k
        D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_mapping_pattern"));
10456
11.6k
        void *invalid_mapping_pattern_var;
10457
11.6k
        if (
10458
11.6k
            (invalid_mapping_pattern_var = invalid_mapping_pattern_rule(p))  // invalid_mapping_pattern
10459
11.6k
        )
10460
0
        {
10461
0
            D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_mapping_pattern"));
10462
0
            _res = invalid_mapping_pattern_var;
10463
0
            goto done;
10464
0
        }
10465
11.6k
        p->mark = _mark;
10466
11.6k
        D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10467
11.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_mapping_pattern"));
10468
11.6k
    }
10469
21.6k
    _res = NULL;
10470
23.0k
  done:
10471
23.0k
    p->level--;
10472
23.0k
    return _res;
10473
21.6k
}
10474
10475
// items_pattern: ','.key_value_pattern+
10476
Py_LOCAL_SYMBOL asdl_seq*
10477
items_pattern_rule(Parser *p)
10478
11.4k
{
10479
11.4k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
10480
0
        _Pypegen_stack_overflow(p);
10481
0
    }
10482
11.4k
    if (p->error_indicator) {
10483
0
        p->level--;
10484
0
        return NULL;
10485
0
    }
10486
11.4k
    asdl_seq* _res = NULL;
10487
11.4k
    int _mark = p->mark;
10488
11.4k
    { // ','.key_value_pattern+
10489
11.4k
        if (p->error_indicator) {
10490
0
            p->level--;
10491
0
            return NULL;
10492
0
        }
10493
11.4k
        D(fprintf(stderr, "%*c> items_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.key_value_pattern+"));
10494
11.4k
        asdl_seq * _gather_47_var;
10495
11.4k
        if (
10496
11.4k
            (_gather_47_var = _gather_47_rule(p))  // ','.key_value_pattern+
10497
11.4k
        )
10498
5.94k
        {
10499
5.94k
            D(fprintf(stderr, "%*c+ items_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.key_value_pattern+"));
10500
5.94k
            _res = _gather_47_var;
10501
5.94k
            goto done;
10502
5.94k
        }
10503
5.50k
        p->mark = _mark;
10504
5.50k
        D(fprintf(stderr, "%*c%s items_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10505
5.50k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.key_value_pattern+"));
10506
5.50k
    }
10507
5.50k
    _res = NULL;
10508
11.4k
  done:
10509
11.4k
    p->level--;
10510
11.4k
    return _res;
10511
5.50k
}
10512
10513
// key_value_pattern: (literal_expr | attr) ':' pattern
10514
static KeyPatternPair*
10515
key_value_pattern_rule(Parser *p)
10516
19.0k
{
10517
19.0k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
10518
0
        _Pypegen_stack_overflow(p);
10519
0
    }
10520
19.0k
    if (p->error_indicator) {
10521
0
        p->level--;
10522
0
        return NULL;
10523
0
    }
10524
19.0k
    KeyPatternPair* _res = NULL;
10525
19.0k
    int _mark = p->mark;
10526
19.0k
    { // (literal_expr | attr) ':' pattern
10527
19.0k
        if (p->error_indicator) {
10528
0
            p->level--;
10529
0
            return NULL;
10530
0
        }
10531
19.0k
        D(fprintf(stderr, "%*c> key_value_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(literal_expr | attr) ':' pattern"));
10532
19.0k
        Token * _literal;
10533
19.0k
        void *key;
10534
19.0k
        pattern_ty pattern;
10535
19.0k
        if (
10536
19.0k
            (key = _tmp_48_rule(p))  // literal_expr | attr
10537
16.1k
            &&
10538
16.1k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
10539
16.0k
            &&
10540
16.0k
            (pattern = pattern_rule(p))  // pattern
10541
19.0k
        )
10542
9.58k
        {
10543
9.58k
            D(fprintf(stderr, "%*c+ key_value_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(literal_expr | attr) ':' pattern"));
10544
9.58k
            _res = _PyPegen_key_pattern_pair ( p , key , pattern );
10545
9.58k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
10546
0
                p->error_indicator = 1;
10547
0
                p->level--;
10548
0
                return NULL;
10549
0
            }
10550
9.58k
            goto done;
10551
9.58k
        }
10552
9.46k
        p->mark = _mark;
10553
9.46k
        D(fprintf(stderr, "%*c%s key_value_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10554
9.46k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(literal_expr | attr) ':' pattern"));
10555
9.46k
    }
10556
9.46k
    _res = NULL;
10557
19.0k
  done:
10558
19.0k
    p->level--;
10559
19.0k
    return _res;
10560
9.46k
}
10561
10562
// double_star_pattern: '**' pattern_capture_target
10563
Py_LOCAL_SYMBOL expr_ty
10564
double_star_pattern_rule(Parser *p)
10565
8.79k
{
10566
8.79k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
10567
0
        _Pypegen_stack_overflow(p);
10568
0
    }
10569
8.79k
    if (p->error_indicator) {
10570
252
        p->level--;
10571
252
        return NULL;
10572
252
    }
10573
8.54k
    expr_ty _res = NULL;
10574
8.54k
    int _mark = p->mark;
10575
8.54k
    { // '**' pattern_capture_target
10576
8.54k
        if (p->error_indicator) {
10577
0
            p->level--;
10578
0
            return NULL;
10579
0
        }
10580
8.54k
        D(fprintf(stderr, "%*c> double_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' pattern_capture_target"));
10581
8.54k
        Token * _literal;
10582
8.54k
        expr_ty target;
10583
8.54k
        if (
10584
8.54k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
10585
2.08k
            &&
10586
2.08k
            (target = pattern_capture_target_rule(p))  // pattern_capture_target
10587
8.54k
        )
10588
2.07k
        {
10589
2.07k
            D(fprintf(stderr, "%*c+ double_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' pattern_capture_target"));
10590
2.07k
            _res = target;
10591
2.07k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
10592
0
                p->error_indicator = 1;
10593
0
                p->level--;
10594
0
                return NULL;
10595
0
            }
10596
2.07k
            goto done;
10597
2.07k
        }
10598
6.47k
        p->mark = _mark;
10599
6.47k
        D(fprintf(stderr, "%*c%s double_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10600
6.47k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' pattern_capture_target"));
10601
6.47k
    }
10602
6.47k
    _res = NULL;
10603
8.54k
  done:
10604
8.54k
    p->level--;
10605
8.54k
    return _res;
10606
6.47k
}
10607
10608
// class_pattern:
10609
//     | name_or_attr '(' ')'
10610
//     | name_or_attr '(' positional_patterns ','? ')'
10611
//     | name_or_attr '(' keyword_patterns ','? ')'
10612
//     | name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'
10613
//     | invalid_class_pattern
10614
static pattern_ty
10615
class_pattern_rule(Parser *p)
10616
21.2k
{
10617
21.2k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
10618
0
        _Pypegen_stack_overflow(p);
10619
0
    }
10620
21.2k
    if (p->error_indicator) {
10621
0
        p->level--;
10622
0
        return NULL;
10623
0
    }
10624
21.2k
    pattern_ty _res = NULL;
10625
21.2k
    int _mark = p->mark;
10626
21.2k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10627
0
        p->error_indicator = 1;
10628
0
        p->level--;
10629
0
        return NULL;
10630
0
    }
10631
21.2k
    int _start_lineno = p->tokens[_mark]->lineno;
10632
21.2k
    UNUSED(_start_lineno); // Only used by EXTRA macro
10633
21.2k
    int _start_col_offset = p->tokens[_mark]->col_offset;
10634
21.2k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
10635
21.2k
    { // name_or_attr '(' ')'
10636
21.2k
        if (p->error_indicator) {
10637
0
            p->level--;
10638
0
            return NULL;
10639
0
        }
10640
21.2k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' ')'"));
10641
21.2k
        Token * _literal;
10642
21.2k
        Token * _literal_1;
10643
21.2k
        expr_ty cls;
10644
21.2k
        if (
10645
21.2k
            (cls = name_or_attr_rule(p))  // name_or_attr
10646
11.6k
            &&
10647
11.6k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
10648
8.69k
            &&
10649
8.69k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
10650
21.2k
        )
10651
997
        {
10652
997
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' ')'"));
10653
997
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10654
997
            if (_token == NULL) {
10655
0
                p->level--;
10656
0
                return NULL;
10657
0
            }
10658
997
            int _end_lineno = _token->end_lineno;
10659
997
            UNUSED(_end_lineno); // Only used by EXTRA macro
10660
997
            int _end_col_offset = _token->end_col_offset;
10661
997
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10662
997
            _res = _PyAST_MatchClass ( cls , NULL , NULL , NULL , EXTRA );
10663
997
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
10664
0
                p->error_indicator = 1;
10665
0
                p->level--;
10666
0
                return NULL;
10667
0
            }
10668
997
            goto done;
10669
997
        }
10670
20.2k
        p->mark = _mark;
10671
20.2k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10672
20.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' ')'"));
10673
20.2k
    }
10674
0
    { // name_or_attr '(' positional_patterns ','? ')'
10675
20.2k
        if (p->error_indicator) {
10676
8
            p->level--;
10677
8
            return NULL;
10678
8
        }
10679
20.2k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
10680
20.2k
        Token * _literal;
10681
20.2k
        Token * _literal_1;
10682
20.2k
        void *_opt_var;
10683
20.2k
        UNUSED(_opt_var); // Silence compiler warnings
10684
20.2k
        expr_ty cls;
10685
20.2k
        asdl_pattern_seq* patterns;
10686
20.2k
        if (
10687
20.2k
            (cls = name_or_attr_rule(p))  // name_or_attr
10688
10.6k
            &&
10689
10.6k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
10690
7.68k
            &&
10691
7.68k
            (patterns = positional_patterns_rule(p))  // positional_patterns
10692
3.55k
            &&
10693
3.55k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10694
3.55k
            &&
10695
3.55k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
10696
20.2k
        )
10697
488
        {
10698
488
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
10699
488
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10700
488
            if (_token == NULL) {
10701
0
                p->level--;
10702
0
                return NULL;
10703
0
            }
10704
488
            int _end_lineno = _token->end_lineno;
10705
488
            UNUSED(_end_lineno); // Only used by EXTRA macro
10706
488
            int _end_col_offset = _token->end_col_offset;
10707
488
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10708
488
            _res = _PyAST_MatchClass ( cls , patterns , NULL , NULL , EXTRA );
10709
488
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
10710
0
                p->error_indicator = 1;
10711
0
                p->level--;
10712
0
                return NULL;
10713
0
            }
10714
488
            goto done;
10715
488
        }
10716
19.7k
        p->mark = _mark;
10717
19.7k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10718
19.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
10719
19.7k
    }
10720
0
    { // name_or_attr '(' keyword_patterns ','? ')'
10721
19.7k
        if (p->error_indicator) {
10722
667
            p->level--;
10723
667
            return NULL;
10724
667
        }
10725
19.0k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
10726
19.0k
        Token * _literal;
10727
19.0k
        Token * _literal_1;
10728
19.0k
        void *_opt_var;
10729
19.0k
        UNUSED(_opt_var); // Silence compiler warnings
10730
19.0k
        expr_ty cls;
10731
19.0k
        asdl_seq* keywords;
10732
19.0k
        if (
10733
19.0k
            (cls = name_or_attr_rule(p))  // name_or_attr
10734
9.53k
            &&
10735
9.53k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
10736
6.53k
            &&
10737
6.53k
            (keywords = keyword_patterns_rule(p))  // keyword_patterns
10738
1.74k
            &&
10739
1.74k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10740
1.66k
            &&
10741
1.66k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
10742
19.0k
        )
10743
714
        {
10744
714
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
10745
714
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10746
714
            if (_token == NULL) {
10747
0
                p->level--;
10748
0
                return NULL;
10749
0
            }
10750
714
            int _end_lineno = _token->end_lineno;
10751
714
            UNUSED(_end_lineno); // Only used by EXTRA macro
10752
714
            int _end_col_offset = _token->end_col_offset;
10753
714
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10754
714
            _res = _PyAST_MatchClass ( cls , NULL , CHECK ( asdl_identifier_seq* , _PyPegen_map_names_to_ids ( p , CHECK ( asdl_expr_seq* , _PyPegen_get_pattern_keys ( p , keywords ) ) ) ) , CHECK ( asdl_pattern_seq* , _PyPegen_get_patterns ( p , keywords ) ) , EXTRA );
10755
714
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
10756
0
                p->error_indicator = 1;
10757
0
                p->level--;
10758
0
                return NULL;
10759
0
            }
10760
714
            goto done;
10761
714
        }
10762
18.3k
        p->mark = _mark;
10763
18.3k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10764
18.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
10765
18.3k
    }
10766
0
    { // name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'
10767
18.3k
        if (p->error_indicator) {
10768
572
            p->level--;
10769
572
            return NULL;
10770
572
        }
10771
17.7k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
10772
17.7k
        Token * _literal;
10773
17.7k
        Token * _literal_1;
10774
17.7k
        Token * _literal_2;
10775
17.7k
        void *_opt_var;
10776
17.7k
        UNUSED(_opt_var); // Silence compiler warnings
10777
17.7k
        expr_ty cls;
10778
17.7k
        asdl_seq* keywords;
10779
17.7k
        asdl_pattern_seq* patterns;
10780
17.7k
        if (
10781
17.7k
            (cls = name_or_attr_rule(p))  // name_or_attr
10782
8.25k
            &&
10783
8.25k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
10784
5.24k
            &&
10785
5.24k
            (patterns = positional_patterns_rule(p))  // positional_patterns
10786
2.88k
            &&
10787
2.88k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
10788
1.94k
            &&
10789
1.94k
            (keywords = keyword_patterns_rule(p))  // keyword_patterns
10790
684
            &&
10791
684
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10792
374
            &&
10793
374
            (_literal_2 = _PyPegen_expect_token(p, 8))  // token=')'
10794
17.7k
        )
10795
102
        {
10796
102
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
10797
102
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10798
102
            if (_token == NULL) {
10799
0
                p->level--;
10800
0
                return NULL;
10801
0
            }
10802
102
            int _end_lineno = _token->end_lineno;
10803
102
            UNUSED(_end_lineno); // Only used by EXTRA macro
10804
102
            int _end_col_offset = _token->end_col_offset;
10805
102
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10806
102
            _res = _PyAST_MatchClass ( cls , patterns , CHECK ( asdl_identifier_seq* , _PyPegen_map_names_to_ids ( p , CHECK ( asdl_expr_seq* , _PyPegen_get_pattern_keys ( p , keywords ) ) ) ) , CHECK ( asdl_pattern_seq* , _PyPegen_get_patterns ( p , keywords ) ) , EXTRA );
10807
102
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
10808
0
                p->error_indicator = 1;
10809
0
                p->level--;
10810
0
                return NULL;
10811
0
            }
10812
102
            goto done;
10813
102
        }
10814
17.6k
        p->mark = _mark;
10815
17.6k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10816
17.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
10817
17.6k
    }
10818
17.6k
    if (p->call_invalid_rules) { // invalid_class_pattern
10819
10.2k
        if (p->error_indicator) {
10820
355
            p->level--;
10821
355
            return NULL;
10822
355
        }
10823
9.90k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_class_pattern"));
10824
9.90k
        void *invalid_class_pattern_var;
10825
9.90k
        if (
10826
9.90k
            (invalid_class_pattern_var = invalid_class_pattern_rule(p))  // invalid_class_pattern
10827
9.90k
        )
10828
0
        {
10829
0
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_class_pattern"));
10830
0
            _res = invalid_class_pattern_var;
10831
0
            goto done;
10832
0
        }
10833
9.90k
        p->mark = _mark;
10834
9.90k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10835
9.90k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_class_pattern"));
10836
9.90k
    }
10837
17.3k
    _res = NULL;
10838
19.6k
  done:
10839
19.6k
    p->level--;
10840
19.6k
    return _res;
10841
17.3k
}
10842
10843
// positional_patterns: ','.pattern+
10844
Py_LOCAL_SYMBOL asdl_pattern_seq*
10845
positional_patterns_rule(Parser *p)
10846
16.1k
{
10847
16.1k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
10848
0
        _Pypegen_stack_overflow(p);
10849
0
    }
10850
16.1k
    if (p->error_indicator) {
10851
0
        p->level--;
10852
0
        return NULL;
10853
0
    }
10854
16.1k
    asdl_pattern_seq* _res = NULL;
10855
16.1k
    int _mark = p->mark;
10856
16.1k
    { // ','.pattern+
10857
16.1k
        if (p->error_indicator) {
10858
0
            p->level--;
10859
0
            return NULL;
10860
0
        }
10861
16.1k
        D(fprintf(stderr, "%*c> positional_patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.pattern+"));
10862
16.1k
        asdl_pattern_seq* args;
10863
16.1k
        if (
10864
16.1k
            (args = (asdl_pattern_seq*)_gather_50_rule(p))  // ','.pattern+
10865
16.1k
        )
10866
8.37k
        {
10867
8.37k
            D(fprintf(stderr, "%*c+ positional_patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.pattern+"));
10868
8.37k
            _res = args;
10869
8.37k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
10870
422
                p->error_indicator = 1;
10871
422
                p->level--;
10872
422
                return NULL;
10873
422
            }
10874
7.95k
            goto done;
10875
8.37k
        }
10876
7.74k
        p->mark = _mark;
10877
7.74k
        D(fprintf(stderr, "%*c%s positional_patterns[%d-%d]: %s failed!\n", p->level, ' ',
10878
7.74k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.pattern+"));
10879
7.74k
    }
10880
7.74k
    _res = NULL;
10881
15.7k
  done:
10882
15.7k
    p->level--;
10883
15.7k
    return _res;
10884
7.74k
}
10885
10886
// keyword_patterns: ','.keyword_pattern+
10887
Py_LOCAL_SYMBOL asdl_seq*
10888
keyword_patterns_rule(Parser *p)
10889
11.3k
{
10890
11.3k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
10891
0
        _Pypegen_stack_overflow(p);
10892
0
    }
10893
11.3k
    if (p->error_indicator) {
10894
0
        p->level--;
10895
0
        return NULL;
10896
0
    }
10897
11.3k
    asdl_seq* _res = NULL;
10898
11.3k
    int _mark = p->mark;
10899
11.3k
    { // ','.keyword_pattern+
10900
11.3k
        if (p->error_indicator) {
10901
0
            p->level--;
10902
0
            return NULL;
10903
0
        }
10904
11.3k
        D(fprintf(stderr, "%*c> keyword_patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.keyword_pattern+"));
10905
11.3k
        asdl_seq * _gather_52_var;
10906
11.3k
        if (
10907
11.3k
            (_gather_52_var = _gather_52_rule(p))  // ','.keyword_pattern+
10908
11.3k
        )
10909
3.12k
        {
10910
3.12k
            D(fprintf(stderr, "%*c+ keyword_patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.keyword_pattern+"));
10911
3.12k
            _res = _gather_52_var;
10912
3.12k
            goto done;
10913
3.12k
        }
10914
8.20k
        p->mark = _mark;
10915
8.20k
        D(fprintf(stderr, "%*c%s keyword_patterns[%d-%d]: %s failed!\n", p->level, ' ',
10916
8.20k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.keyword_pattern+"));
10917
8.20k
    }
10918
8.20k
    _res = NULL;
10919
11.3k
  done:
10920
11.3k
    p->level--;
10921
11.3k
    return _res;
10922
8.20k
}
10923
10924
// keyword_pattern: NAME '=' pattern
10925
static KeyPatternPair*
10926
keyword_pattern_rule(Parser *p)
10927
13.4k
{
10928
13.4k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
10929
0
        _Pypegen_stack_overflow(p);
10930
0
    }
10931
13.4k
    if (p->error_indicator) {
10932
0
        p->level--;
10933
0
        return NULL;
10934
0
    }
10935
13.4k
    KeyPatternPair* _res = NULL;
10936
13.4k
    int _mark = p->mark;
10937
13.4k
    { // NAME '=' pattern
10938
13.4k
        if (p->error_indicator) {
10939
0
            p->level--;
10940
0
            return NULL;
10941
0
        }
10942
13.4k
        D(fprintf(stderr, "%*c> keyword_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' pattern"));
10943
13.4k
        Token * _literal;
10944
13.4k
        expr_ty arg;
10945
13.4k
        pattern_ty value;
10946
13.4k
        if (
10947
13.4k
            (arg = _PyPegen_name_token(p))  // NAME
10948
12.8k
            &&
10949
12.8k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
10950
6.63k
            &&
10951
6.63k
            (value = pattern_rule(p))  // pattern
10952
13.4k
        )
10953
4.01k
        {
10954
4.01k
            D(fprintf(stderr, "%*c+ keyword_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' pattern"));
10955
4.01k
            _res = _PyPegen_key_pattern_pair ( p , arg , value );
10956
4.01k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
10957
0
                p->error_indicator = 1;
10958
0
                p->level--;
10959
0
                return NULL;
10960
0
            }
10961
4.01k
            goto done;
10962
4.01k
        }
10963
9.48k
        p->mark = _mark;
10964
9.48k
        D(fprintf(stderr, "%*c%s keyword_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10965
9.48k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' pattern"));
10966
9.48k
    }
10967
9.48k
    _res = NULL;
10968
13.4k
  done:
10969
13.4k
    p->level--;
10970
13.4k
    return _res;
10971
9.48k
}
10972
10973
// type_alias: "type" NAME type_params? '=' expression
10974
static stmt_ty
10975
type_alias_rule(Parser *p)
10976
965
{
10977
965
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
10978
0
        _Pypegen_stack_overflow(p);
10979
0
    }
10980
965
    if (p->error_indicator) {
10981
0
        p->level--;
10982
0
        return NULL;
10983
0
    }
10984
965
    stmt_ty _res = NULL;
10985
965
    int _mark = p->mark;
10986
965
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10987
0
        p->error_indicator = 1;
10988
0
        p->level--;
10989
0
        return NULL;
10990
0
    }
10991
965
    int _start_lineno = p->tokens[_mark]->lineno;
10992
965
    UNUSED(_start_lineno); // Only used by EXTRA macro
10993
965
    int _start_col_offset = p->tokens[_mark]->col_offset;
10994
965
    UNUSED(_start_col_offset); // Only used by EXTRA macro
10995
965
    { // "type" NAME type_params? '=' expression
10996
965
        if (p->error_indicator) {
10997
0
            p->level--;
10998
0
            return NULL;
10999
0
        }
11000
965
        D(fprintf(stderr, "%*c> type_alias[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"type\" NAME type_params? '=' expression"));
11001
965
        expr_ty _keyword;
11002
965
        Token * _literal;
11003
965
        expr_ty b;
11004
965
        expr_ty n;
11005
965
        void *t;
11006
965
        if (
11007
965
            (_keyword = _PyPegen_expect_soft_keyword(p, "type"))  // soft_keyword='"type"'
11008
965
            &&
11009
965
            (n = _PyPegen_name_token(p))  // NAME
11010
767
            &&
11011
767
            (t = type_params_rule(p), !p->error_indicator)  // type_params?
11012
468
            &&
11013
468
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
11014
438
            &&
11015
438
            (b = expression_rule(p))  // expression
11016
965
        )
11017
404
        {
11018
404
            D(fprintf(stderr, "%*c+ type_alias[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"type\" NAME type_params? '=' expression"));
11019
404
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11020
404
            if (_token == NULL) {
11021
0
                p->level--;
11022
0
                return NULL;
11023
0
            }
11024
404
            int _end_lineno = _token->end_lineno;
11025
404
            UNUSED(_end_lineno); // Only used by EXTRA macro
11026
404
            int _end_col_offset = _token->end_col_offset;
11027
404
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11028
404
            _res = CHECK_VERSION ( stmt_ty , 12 , "Type statement is" , _PyAST_TypeAlias ( CHECK ( expr_ty , _PyPegen_set_expr_context ( p , n , Store ) ) , t , b , EXTRA ) );
11029
404
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
11030
0
                p->error_indicator = 1;
11031
0
                p->level--;
11032
0
                return NULL;
11033
0
            }
11034
404
            goto done;
11035
404
        }
11036
561
        p->mark = _mark;
11037
561
        D(fprintf(stderr, "%*c%s type_alias[%d-%d]: %s failed!\n", p->level, ' ',
11038
561
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"type\" NAME type_params? '=' expression"));
11039
561
    }
11040
561
    _res = NULL;
11041
965
  done:
11042
965
    p->level--;
11043
965
    return _res;
11044
561
}
11045
11046
// type_params: invalid_type_params | '[' type_param_seq ']'
11047
Py_LOCAL_SYMBOL asdl_type_param_seq*
11048
type_params_rule(Parser *p)
11049
18.3k
{
11050
18.3k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
11051
0
        _Pypegen_stack_overflow(p);
11052
0
    }
11053
18.3k
    if (p->error_indicator) {
11054
0
        p->level--;
11055
0
        return NULL;
11056
0
    }
11057
18.3k
    asdl_type_param_seq* _res = NULL;
11058
18.3k
    int _mark = p->mark;
11059
18.3k
    if (p->call_invalid_rules) { // invalid_type_params
11060
8.28k
        if (p->error_indicator) {
11061
0
            p->level--;
11062
0
            return NULL;
11063
0
        }
11064
8.28k
        D(fprintf(stderr, "%*c> type_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_type_params"));
11065
8.28k
        void *invalid_type_params_var;
11066
8.28k
        if (
11067
8.28k
            (invalid_type_params_var = invalid_type_params_rule(p))  // invalid_type_params
11068
8.28k
        )
11069
0
        {
11070
0
            D(fprintf(stderr, "%*c+ type_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_type_params"));
11071
0
            _res = invalid_type_params_var;
11072
0
            goto done;
11073
0
        }
11074
8.28k
        p->mark = _mark;
11075
8.28k
        D(fprintf(stderr, "%*c%s type_params[%d-%d]: %s failed!\n", p->level, ' ',
11076
8.28k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_type_params"));
11077
8.28k
    }
11078
18.3k
    { // '[' type_param_seq ']'
11079
18.3k
        if (p->error_indicator) {
11080
3
            p->level--;
11081
3
            return NULL;
11082
3
        }
11083
18.3k
        D(fprintf(stderr, "%*c> type_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' type_param_seq ']'"));
11084
18.3k
        Token * _literal;
11085
18.3k
        Token * _literal_1;
11086
18.3k
        asdl_type_param_seq* t;
11087
18.3k
        if (
11088
18.3k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
11089
1.64k
            &&
11090
1.64k
            (t = type_param_seq_rule(p))  // type_param_seq
11091
1.29k
            &&
11092
1.29k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
11093
18.3k
        )
11094
1.09k
        {
11095
1.09k
            D(fprintf(stderr, "%*c+ type_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' type_param_seq ']'"));
11096
1.09k
            _res = CHECK_VERSION ( asdl_type_param_seq* , 12 , "Type parameter lists are" , t );
11097
1.09k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
11098
0
                p->error_indicator = 1;
11099
0
                p->level--;
11100
0
                return NULL;
11101
0
            }
11102
1.09k
            goto done;
11103
1.09k
        }
11104
17.2k
        p->mark = _mark;
11105
17.2k
        D(fprintf(stderr, "%*c%s type_params[%d-%d]: %s failed!\n", p->level, ' ',
11106
17.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' type_param_seq ']'"));
11107
17.2k
    }
11108
17.2k
    _res = NULL;
11109
18.3k
  done:
11110
18.3k
    p->level--;
11111
18.3k
    return _res;
11112
17.2k
}
11113
11114
// type_param_seq: ','.type_param+ ','?
11115
static asdl_type_param_seq*
11116
type_param_seq_rule(Parser *p)
11117
1.64k
{
11118
1.64k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
11119
0
        _Pypegen_stack_overflow(p);
11120
0
    }
11121
1.64k
    if (p->error_indicator) {
11122
0
        p->level--;
11123
0
        return NULL;
11124
0
    }
11125
1.64k
    asdl_type_param_seq* _res = NULL;
11126
1.64k
    int _mark = p->mark;
11127
1.64k
    { // ','.type_param+ ','?
11128
1.64k
        if (p->error_indicator) {
11129
0
            p->level--;
11130
0
            return NULL;
11131
0
        }
11132
1.64k
        D(fprintf(stderr, "%*c> type_param_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.type_param+ ','?"));
11133
1.64k
        void *_opt_var;
11134
1.64k
        UNUSED(_opt_var); // Silence compiler warnings
11135
1.64k
        asdl_type_param_seq* a;
11136
1.64k
        if (
11137
1.64k
            (a = (asdl_type_param_seq*)_gather_54_rule(p))  // ','.type_param+
11138
1.53k
            &&
11139
1.53k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
11140
1.64k
        )
11141
1.29k
        {
11142
1.29k
            D(fprintf(stderr, "%*c+ type_param_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.type_param+ ','?"));
11143
1.29k
            _res = a;
11144
1.29k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
11145
0
                p->error_indicator = 1;
11146
0
                p->level--;
11147
0
                return NULL;
11148
0
            }
11149
1.29k
            goto done;
11150
1.29k
        }
11151
353
        p->mark = _mark;
11152
353
        D(fprintf(stderr, "%*c%s type_param_seq[%d-%d]: %s failed!\n", p->level, ' ',
11153
353
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.type_param+ ','?"));
11154
353
    }
11155
353
    _res = NULL;
11156
1.64k
  done:
11157
1.64k
    p->level--;
11158
1.64k
    return _res;
11159
353
}
11160
11161
// type_param:
11162
//     | NAME type_param_bound? type_param_default?
11163
//     | invalid_type_param
11164
//     | '*' NAME type_param_starred_default?
11165
//     | '**' NAME type_param_default?
11166
static type_param_ty
11167
type_param_rule(Parser *p)
11168
13.7k
{
11169
13.7k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
11170
0
        _Pypegen_stack_overflow(p);
11171
0
    }
11172
13.7k
    if (p->error_indicator) {
11173
0
        p->level--;
11174
0
        return NULL;
11175
0
    }
11176
13.7k
    type_param_ty _res = NULL;
11177
13.7k
    if (_PyPegen_is_memoized(p, type_param_type, &_res)) {
11178
2.40k
        p->level--;
11179
2.40k
        return _res;
11180
2.40k
    }
11181
11.3k
    int _mark = p->mark;
11182
11.3k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11183
0
        p->error_indicator = 1;
11184
0
        p->level--;
11185
0
        return NULL;
11186
0
    }
11187
11.3k
    int _start_lineno = p->tokens[_mark]->lineno;
11188
11.3k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11189
11.3k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11190
11.3k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11191
11.3k
    { // NAME type_param_bound? type_param_default?
11192
11.3k
        if (p->error_indicator) {
11193
0
            p->level--;
11194
0
            return NULL;
11195
0
        }
11196
11.3k
        D(fprintf(stderr, "%*c> type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME type_param_bound? type_param_default?"));
11197
11.3k
        expr_ty a;
11198
11.3k
        void *b;
11199
11.3k
        void *c;
11200
11.3k
        if (
11201
11.3k
            (a = _PyPegen_name_token(p))  // NAME
11202
7.25k
            &&
11203
7.25k
            (b = type_param_bound_rule(p), !p->error_indicator)  // type_param_bound?
11204
7.21k
            &&
11205
7.21k
            (c = type_param_default_rule(p), !p->error_indicator)  // type_param_default?
11206
11.3k
        )
11207
7.14k
        {
11208
7.14k
            D(fprintf(stderr, "%*c+ type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME type_param_bound? type_param_default?"));
11209
7.14k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11210
7.14k
            if (_token == NULL) {
11211
0
                p->level--;
11212
0
                return NULL;
11213
0
            }
11214
7.14k
            int _end_lineno = _token->end_lineno;
11215
7.14k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11216
7.14k
            int _end_col_offset = _token->end_col_offset;
11217
7.14k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11218
7.14k
            _res = _PyAST_TypeVar ( a -> v . Name . id , b , c , EXTRA );
11219
7.14k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
11220
0
                p->error_indicator = 1;
11221
0
                p->level--;
11222
0
                return NULL;
11223
0
            }
11224
7.14k
            goto done;
11225
7.14k
        }
11226
4.22k
        p->mark = _mark;
11227
4.22k
        D(fprintf(stderr, "%*c%s type_param[%d-%d]: %s failed!\n", p->level, ' ',
11228
4.22k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME type_param_bound? type_param_default?"));
11229
4.22k
    }
11230
4.22k
    if (p->call_invalid_rules) { // invalid_type_param
11231
1.35k
        if (p->error_indicator) {
11232
104
            p->level--;
11233
104
            return NULL;
11234
104
        }
11235
1.25k
        D(fprintf(stderr, "%*c> type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_type_param"));
11236
1.25k
        void *invalid_type_param_var;
11237
1.25k
        if (
11238
1.25k
            (invalid_type_param_var = invalid_type_param_rule(p))  // invalid_type_param
11239
1.25k
        )
11240
0
        {
11241
0
            D(fprintf(stderr, "%*c+ type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_type_param"));
11242
0
            _res = invalid_type_param_var;
11243
0
            goto done;
11244
0
        }
11245
1.25k
        p->mark = _mark;
11246
1.25k
        D(fprintf(stderr, "%*c%s type_param[%d-%d]: %s failed!\n", p->level, ' ',
11247
1.25k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_type_param"));
11248
1.25k
    }
11249
4.12k
    { // '*' NAME type_param_starred_default?
11250
4.12k
        if (p->error_indicator) {
11251
139
            p->level--;
11252
139
            return NULL;
11253
139
        }
11254
3.98k
        D(fprintf(stderr, "%*c> type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' NAME type_param_starred_default?"));
11255
3.98k
        Token * _literal;
11256
3.98k
        expr_ty a;
11257
3.98k
        void *b;
11258
3.98k
        if (
11259
3.98k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
11260
1.72k
            &&
11261
1.72k
            (a = _PyPegen_name_token(p))  // NAME
11262
1.72k
            &&
11263
1.72k
            (b = type_param_starred_default_rule(p), !p->error_indicator)  // type_param_starred_default?
11264
3.98k
        )
11265
1.68k
        {
11266
1.68k
            D(fprintf(stderr, "%*c+ type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' NAME type_param_starred_default?"));
11267
1.68k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11268
1.68k
            if (_token == NULL) {
11269
0
                p->level--;
11270
0
                return NULL;
11271
0
            }
11272
1.68k
            int _end_lineno = _token->end_lineno;
11273
1.68k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11274
1.68k
            int _end_col_offset = _token->end_col_offset;
11275
1.68k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11276
1.68k
            _res = _PyAST_TypeVarTuple ( a -> v . Name . id , b , EXTRA );
11277
1.68k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
11278
0
                p->error_indicator = 1;
11279
0
                p->level--;
11280
0
                return NULL;
11281
0
            }
11282
1.68k
            goto done;
11283
1.68k
        }
11284
2.29k
        p->mark = _mark;
11285
2.29k
        D(fprintf(stderr, "%*c%s type_param[%d-%d]: %s failed!\n", p->level, ' ',
11286
2.29k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' NAME type_param_starred_default?"));
11287
2.29k
    }
11288
0
    { // '**' NAME type_param_default?
11289
2.29k
        if (p->error_indicator) {
11290
39
            p->level--;
11291
39
            return NULL;
11292
39
        }
11293
2.25k
        D(fprintf(stderr, "%*c> type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' NAME type_param_default?"));
11294
2.25k
        Token * _literal;
11295
2.25k
        expr_ty a;
11296
2.25k
        void *b;
11297
2.25k
        if (
11298
2.25k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
11299
1.82k
            &&
11300
1.82k
            (a = _PyPegen_name_token(p))  // NAME
11301
1.82k
            &&
11302
1.82k
            (b = type_param_default_rule(p), !p->error_indicator)  // type_param_default?
11303
2.25k
        )
11304
1.78k
        {
11305
1.78k
            D(fprintf(stderr, "%*c+ type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' NAME type_param_default?"));
11306
1.78k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11307
1.78k
            if (_token == NULL) {
11308
0
                p->level--;
11309
0
                return NULL;
11310
0
            }
11311
1.78k
            int _end_lineno = _token->end_lineno;
11312
1.78k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11313
1.78k
            int _end_col_offset = _token->end_col_offset;
11314
1.78k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11315
1.78k
            _res = _PyAST_ParamSpec ( a -> v . Name . id , b , EXTRA );
11316
1.78k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
11317
0
                p->error_indicator = 1;
11318
0
                p->level--;
11319
0
                return NULL;
11320
0
            }
11321
1.78k
            goto done;
11322
1.78k
        }
11323
469
        p->mark = _mark;
11324
469
        D(fprintf(stderr, "%*c%s type_param[%d-%d]: %s failed!\n", p->level, ' ',
11325
469
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' NAME type_param_default?"));
11326
469
    }
11327
469
    _res = NULL;
11328
11.0k
  done:
11329
11.0k
    _PyPegen_insert_memo(p, _mark, type_param_type, _res);
11330
11.0k
    p->level--;
11331
11.0k
    return _res;
11332
469
}
11333
11334
// type_param_bound: ':' expression
11335
static expr_ty
11336
type_param_bound_rule(Parser *p)
11337
7.25k
{
11338
7.25k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
11339
0
        _Pypegen_stack_overflow(p);
11340
0
    }
11341
7.25k
    if (p->error_indicator) {
11342
0
        p->level--;
11343
0
        return NULL;
11344
0
    }
11345
7.25k
    expr_ty _res = NULL;
11346
7.25k
    int _mark = p->mark;
11347
7.25k
    { // ':' expression
11348
7.25k
        if (p->error_indicator) {
11349
0
            p->level--;
11350
0
            return NULL;
11351
0
        }
11352
7.25k
        D(fprintf(stderr, "%*c> type_param_bound[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression"));
11353
7.25k
        Token * _literal;
11354
7.25k
        expr_ty e;
11355
7.25k
        if (
11356
7.25k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
11357
2.15k
            &&
11358
2.15k
            (e = expression_rule(p))  // expression
11359
7.25k
        )
11360
2.11k
        {
11361
2.11k
            D(fprintf(stderr, "%*c+ type_param_bound[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression"));
11362
2.11k
            _res = e;
11363
2.11k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
11364
0
                p->error_indicator = 1;
11365
0
                p->level--;
11366
0
                return NULL;
11367
0
            }
11368
2.11k
            goto done;
11369
2.11k
        }
11370
5.13k
        p->mark = _mark;
11371
5.13k
        D(fprintf(stderr, "%*c%s type_param_bound[%d-%d]: %s failed!\n", p->level, ' ',
11372
5.13k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression"));
11373
5.13k
    }
11374
5.13k
    _res = NULL;
11375
7.25k
  done:
11376
7.25k
    p->level--;
11377
7.25k
    return _res;
11378
5.13k
}
11379
11380
// type_param_default: '=' expression
11381
static expr_ty
11382
type_param_default_rule(Parser *p)
11383
9.04k
{
11384
9.04k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
11385
0
        _Pypegen_stack_overflow(p);
11386
0
    }
11387
9.04k
    if (p->error_indicator) {
11388
0
        p->level--;
11389
0
        return NULL;
11390
0
    }
11391
9.04k
    expr_ty _res = NULL;
11392
9.04k
    int _mark = p->mark;
11393
9.04k
    { // '=' expression
11394
9.04k
        if (p->error_indicator) {
11395
0
            p->level--;
11396
0
            return NULL;
11397
0
        }
11398
9.04k
        D(fprintf(stderr, "%*c> type_param_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' expression"));
11399
9.04k
        Token * _literal;
11400
9.04k
        expr_ty e;
11401
9.04k
        if (
11402
9.04k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
11403
1.46k
            &&
11404
1.46k
            (e = expression_rule(p))  // expression
11405
9.04k
        )
11406
1.35k
        {
11407
1.35k
            D(fprintf(stderr, "%*c+ type_param_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' expression"));
11408
1.35k
            _res = CHECK_VERSION ( expr_ty , 13 , "Type parameter defaults are" , e );
11409
1.35k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
11410
0
                p->error_indicator = 1;
11411
0
                p->level--;
11412
0
                return NULL;
11413
0
            }
11414
1.35k
            goto done;
11415
1.35k
        }
11416
7.68k
        p->mark = _mark;
11417
7.68k
        D(fprintf(stderr, "%*c%s type_param_default[%d-%d]: %s failed!\n", p->level, ' ',
11418
7.68k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' expression"));
11419
7.68k
    }
11420
7.68k
    _res = NULL;
11421
9.04k
  done:
11422
9.04k
    p->level--;
11423
9.04k
    return _res;
11424
7.68k
}
11425
11426
// type_param_starred_default: '=' star_expression
11427
static expr_ty
11428
type_param_starred_default_rule(Parser *p)
11429
1.72k
{
11430
1.72k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
11431
0
        _Pypegen_stack_overflow(p);
11432
0
    }
11433
1.72k
    if (p->error_indicator) {
11434
0
        p->level--;
11435
0
        return NULL;
11436
0
    }
11437
1.72k
    expr_ty _res = NULL;
11438
1.72k
    int _mark = p->mark;
11439
1.72k
    { // '=' star_expression
11440
1.72k
        if (p->error_indicator) {
11441
0
            p->level--;
11442
0
            return NULL;
11443
0
        }
11444
1.72k
        D(fprintf(stderr, "%*c> type_param_starred_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' star_expression"));
11445
1.72k
        Token * _literal;
11446
1.72k
        expr_ty e;
11447
1.72k
        if (
11448
1.72k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
11449
1.09k
            &&
11450
1.09k
            (e = star_expression_rule(p))  // star_expression
11451
1.72k
        )
11452
1.05k
        {
11453
1.05k
            D(fprintf(stderr, "%*c+ type_param_starred_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' star_expression"));
11454
1.05k
            _res = CHECK_VERSION ( expr_ty , 13 , "Type parameter defaults are" , e );
11455
1.05k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
11456
0
                p->error_indicator = 1;
11457
0
                p->level--;
11458
0
                return NULL;
11459
0
            }
11460
1.05k
            goto done;
11461
1.05k
        }
11462
670
        p->mark = _mark;
11463
670
        D(fprintf(stderr, "%*c%s type_param_starred_default[%d-%d]: %s failed!\n", p->level, ' ',
11464
670
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' star_expression"));
11465
670
    }
11466
670
    _res = NULL;
11467
1.72k
  done:
11468
1.72k
    p->level--;
11469
1.72k
    return _res;
11470
670
}
11471
11472
// expressions: expression ((',' expression))+ ','? | expression ',' | expression
11473
Py_LOCAL_SYMBOL expr_ty
11474
expressions_rule(Parser *p)
11475
10.0k
{
11476
10.0k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
11477
0
        _Pypegen_stack_overflow(p);
11478
0
    }
11479
10.0k
    if (p->error_indicator) {
11480
0
        p->level--;
11481
0
        return NULL;
11482
0
    }
11483
10.0k
    expr_ty _res = NULL;
11484
10.0k
    int _mark = p->mark;
11485
10.0k
    expr_ty _prefix_0_result = NULL;
11486
10.0k
    int _prefix_0_end = 0, _prefix_0_valid = 0;
11487
10.0k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11488
8
        p->error_indicator = 1;
11489
8
        p->level--;
11490
8
        return NULL;
11491
8
    }
11492
10.0k
    int _start_lineno = p->tokens[_mark]->lineno;
11493
10.0k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11494
10.0k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11495
10.0k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11496
10.0k
    { // expression ((',' expression))+ ','?
11497
10.0k
        if (p->error_indicator) {
11498
0
            p->level--;
11499
0
            return NULL;
11500
0
        }
11501
10.0k
        D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ((',' expression))+ ','?"));
11502
10.0k
        void *_opt_var;
11503
10.0k
        UNUSED(_opt_var); // Silence compiler warnings
11504
10.0k
        expr_ty a;
11505
10.0k
        asdl_seq * b;
11506
10.0k
        if (
11507
10.0k
            (a = ((!p->call_invalid_rules && _prefix_0_valid) ? (p->mark = _prefix_0_end, _prefix_0_result) : (_prefix_0_result = expression_rule(p), _prefix_0_end = p->mark, _prefix_0_valid = 1, _prefix_0_result)))  // expression
11508
4.07k
            &&
11509
4.07k
            (b = _loop1_55_rule(p))  // ((',' expression))+
11510
1.37k
            &&
11511
1.37k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
11512
10.0k
        )
11513
1.37k
        {
11514
1.37k
            D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ((',' expression))+ ','?"));
11515
1.37k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11516
1.37k
            if (_token == NULL) {
11517
0
                p->level--;
11518
0
                return NULL;
11519
0
            }
11520
1.37k
            int _end_lineno = _token->end_lineno;
11521
1.37k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11522
1.37k
            int _end_col_offset = _token->end_col_offset;
11523
1.37k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11524
1.37k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
11525
1.37k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
11526
0
                p->error_indicator = 1;
11527
0
                p->level--;
11528
0
                return NULL;
11529
0
            }
11530
1.37k
            goto done;
11531
1.37k
        }
11532
8.67k
        p->mark = _mark;
11533
8.67k
        D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
11534
8.67k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ((',' expression))+ ','?"));
11535
8.67k
    }
11536
0
    { // expression ','
11537
8.67k
        if (p->error_indicator) {
11538
8
            p->level--;
11539
8
            return NULL;
11540
8
        }
11541
8.67k
        D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ','"));
11542
8.67k
        Token * _literal;
11543
8.67k
        expr_ty a;
11544
8.67k
        if (
11545
8.67k
            (a = ((!p->call_invalid_rules && _prefix_0_valid) ? (p->mark = _prefix_0_end, _prefix_0_result) : (_prefix_0_result = expression_rule(p), _prefix_0_end = p->mark, _prefix_0_valid = 1, _prefix_0_result)))  // expression
11546
2.69k
            &&
11547
2.69k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
11548
8.67k
        )
11549
1.54k
        {
11550
1.54k
            D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ','"));
11551
1.54k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11552
1.54k
            if (_token == NULL) {
11553
0
                p->level--;
11554
0
                return NULL;
11555
0
            }
11556
1.54k
            int _end_lineno = _token->end_lineno;
11557
1.54k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11558
1.54k
            int _end_col_offset = _token->end_col_offset;
11559
1.54k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11560
1.54k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
11561
1.54k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
11562
0
                p->error_indicator = 1;
11563
0
                p->level--;
11564
0
                return NULL;
11565
0
            }
11566
1.54k
            goto done;
11567
1.54k
        }
11568
7.12k
        p->mark = _mark;
11569
7.12k
        D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
11570
7.12k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ','"));
11571
7.12k
    }
11572
0
    { // expression
11573
7.12k
        if (p->error_indicator) {
11574
0
            p->level--;
11575
0
            return NULL;
11576
0
        }
11577
7.12k
        D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
11578
7.12k
        expr_ty expression_var;
11579
7.12k
        if (
11580
7.12k
            (expression_var = ((!p->call_invalid_rules && _prefix_0_valid) ? (p->mark = _prefix_0_end, _prefix_0_result) : (_prefix_0_result = expression_rule(p), _prefix_0_end = p->mark, _prefix_0_valid = 1, _prefix_0_result)))  // expression
11581
7.12k
        )
11582
1.15k
        {
11583
1.15k
            D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
11584
1.15k
            _res = expression_var;
11585
1.15k
            goto done;
11586
1.15k
        }
11587
5.97k
        p->mark = _mark;
11588
5.97k
        D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
11589
5.97k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
11590
5.97k
    }
11591
5.97k
    _res = NULL;
11592
10.0k
  done:
11593
10.0k
    p->level--;
11594
10.0k
    return _res;
11595
5.97k
}
11596
11597
// expression:
11598
//     | invalid_if_expression
11599
//     | invalid_expression
11600
//     | invalid_legacy_expression
11601
//     | if_expression
11602
//     | disjunction
11603
//     | lambdef
11604
Py_LOCAL_SYMBOL expr_ty
11605
expression_rule(Parser *p)
11606
1.95M
{
11607
1.95M
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
11608
1
        _Pypegen_stack_overflow(p);
11609
1
    }
11610
1.95M
    if (p->error_indicator) {
11611
7
        p->level--;
11612
7
        return NULL;
11613
7
    }
11614
1.95M
    expr_ty _res = NULL;
11615
1.95M
    if (_PyPegen_is_memoized(p, expression_type, &_res)) {
11616
1.14M
        p->level--;
11617
1.14M
        return _res;
11618
1.14M
    }
11619
813k
    int _mark = p->mark;
11620
813k
    if (p->call_invalid_rules) { // invalid_if_expression
11621
376k
        if (p->error_indicator) {
11622
0
            p->level--;
11623
0
            return NULL;
11624
0
        }
11625
376k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_if_expression"));
11626
376k
        void *invalid_if_expression_var;
11627
376k
        if (
11628
376k
            (invalid_if_expression_var = invalid_if_expression_rule(p))  // invalid_if_expression
11629
376k
        )
11630
0
        {
11631
0
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_if_expression"));
11632
0
            _res = invalid_if_expression_var;
11633
0
            goto done;
11634
0
        }
11635
376k
        p->mark = _mark;
11636
376k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11637
376k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_if_expression"));
11638
376k
    }
11639
813k
    if (p->call_invalid_rules) { // invalid_expression
11640
376k
        if (p->error_indicator) {
11641
32.4k
            p->level--;
11642
32.4k
            return NULL;
11643
32.4k
        }
11644
343k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_expression"));
11645
343k
        void *invalid_expression_var;
11646
343k
        if (
11647
343k
            (invalid_expression_var = invalid_expression_rule(p))  // invalid_expression
11648
343k
        )
11649
0
        {
11650
0
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_expression"));
11651
0
            _res = invalid_expression_var;
11652
0
            goto done;
11653
0
        }
11654
343k
        p->mark = _mark;
11655
343k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11656
343k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_expression"));
11657
343k
    }
11658
781k
    if (p->call_invalid_rules) { // invalid_legacy_expression
11659
343k
        if (p->error_indicator) {
11660
4.09k
            p->level--;
11661
4.09k
            return NULL;
11662
4.09k
        }
11663
339k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_legacy_expression"));
11664
339k
        void *invalid_legacy_expression_var;
11665
339k
        if (
11666
339k
            (invalid_legacy_expression_var = invalid_legacy_expression_rule(p))  // invalid_legacy_expression
11667
339k
        )
11668
0
        {
11669
0
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_legacy_expression"));
11670
0
            _res = invalid_legacy_expression_var;
11671
0
            goto done;
11672
0
        }
11673
339k
        p->mark = _mark;
11674
339k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11675
339k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_legacy_expression"));
11676
339k
    }
11677
777k
    { // if_expression
11678
777k
        if (p->error_indicator) {
11679
1.90k
            p->level--;
11680
1.90k
            return NULL;
11681
1.90k
        }
11682
775k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "if_expression"));
11683
775k
        expr_ty if_expression_var;
11684
775k
        if (
11685
775k
            (if_expression_var = if_expression_rule(p))  // if_expression
11686
775k
        )
11687
899
        {
11688
899
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "if_expression"));
11689
899
            _res = if_expression_var;
11690
899
            goto done;
11691
899
        }
11692
774k
        p->mark = _mark;
11693
774k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11694
774k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "if_expression"));
11695
774k
    }
11696
0
    { // disjunction
11697
774k
        if (p->error_indicator) {
11698
8.97k
            p->level--;
11699
8.97k
            return NULL;
11700
8.97k
        }
11701
765k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction"));
11702
765k
        expr_ty disjunction_var;
11703
765k
        if (
11704
765k
            (disjunction_var = disjunction_rule(p))  // disjunction
11705
765k
        )
11706
352k
        {
11707
352k
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction"));
11708
352k
            _res = disjunction_var;
11709
352k
            goto done;
11710
352k
        }
11711
413k
        p->mark = _mark;
11712
413k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11713
413k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction"));
11714
413k
    }
11715
0
    { // lambdef
11716
413k
        if (p->error_indicator) {
11717
0
            p->level--;
11718
0
            return NULL;
11719
0
        }
11720
413k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambdef"));
11721
413k
        expr_ty lambdef_var;
11722
413k
        if (
11723
413k
            (lambdef_var = lambdef_rule(p))  // lambdef
11724
413k
        )
11725
3.11k
        {
11726
3.11k
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambdef"));
11727
3.11k
            _res = lambdef_var;
11728
3.11k
            goto done;
11729
3.11k
        }
11730
410k
        p->mark = _mark;
11731
410k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11732
410k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambdef"));
11733
410k
    }
11734
410k
    _res = NULL;
11735
766k
  done:
11736
766k
    _PyPegen_insert_memo(p, _mark, expression_type, _res);
11737
766k
    p->level--;
11738
766k
    return _res;
11739
410k
}
11740
11741
// if_expression: disjunction 'if' disjunction 'else' expression
11742
Py_LOCAL_SYMBOL expr_ty
11743
if_expression_rule(Parser *p)
11744
790k
{
11745
790k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
11746
1
        _Pypegen_stack_overflow(p);
11747
1
    }
11748
790k
    if (p->error_indicator) {
11749
1
        p->level--;
11750
1
        return NULL;
11751
1
    }
11752
790k
    expr_ty _res = NULL;
11753
790k
    int _mark = p->mark;
11754
790k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11755
22
        p->error_indicator = 1;
11756
22
        p->level--;
11757
22
        return NULL;
11758
22
    }
11759
790k
    int _start_lineno = p->tokens[_mark]->lineno;
11760
790k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11761
790k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11762
790k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11763
790k
    { // disjunction 'if' disjunction 'else' expression
11764
790k
        if (p->error_indicator) {
11765
0
            p->level--;
11766
0
            return NULL;
11767
0
        }
11768
790k
        D(fprintf(stderr, "%*c> if_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
11769
790k
        Token * _keyword;
11770
790k
        Token * _keyword_1;
11771
790k
        expr_ty a;
11772
790k
        expr_ty b;
11773
790k
        expr_ty c;
11774
790k
        if (
11775
790k
            (a = disjunction_rule(p))  // disjunction
11776
365k
            &&
11777
365k
            (_keyword = _PyPegen_expect_token(p, 514))  // token='if'
11778
1.90k
            &&
11779
1.90k
            (b = disjunction_rule(p))  // disjunction
11780
1.26k
            &&
11781
1.26k
            (_keyword_1 = _PyPegen_expect_token(p, 522))  // token='else'
11782
1.17k
            &&
11783
1.17k
            (c = expression_rule(p))  // expression
11784
790k
        )
11785
901
        {
11786
901
            D(fprintf(stderr, "%*c+ if_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
11787
901
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11788
901
            if (_token == NULL) {
11789
0
                p->level--;
11790
0
                return NULL;
11791
0
            }
11792
901
            int _end_lineno = _token->end_lineno;
11793
901
            UNUSED(_end_lineno); // Only used by EXTRA macro
11794
901
            int _end_col_offset = _token->end_col_offset;
11795
901
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11796
901
            _res = _PyAST_IfExp ( b , a , c , EXTRA );
11797
901
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
11798
0
                p->error_indicator = 1;
11799
0
                p->level--;
11800
0
                return NULL;
11801
0
            }
11802
901
            goto done;
11803
901
        }
11804
789k
        p->mark = _mark;
11805
789k
        D(fprintf(stderr, "%*c%s if_expression[%d-%d]: %s failed!\n", p->level, ' ',
11806
789k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
11807
789k
    }
11808
789k
    _res = NULL;
11809
790k
  done:
11810
790k
    p->level--;
11811
790k
    return _res;
11812
789k
}
11813
11814
// yield_expr: 'yield' 'from' expression | 'yield' star_expressions?
11815
Py_LOCAL_SYMBOL expr_ty
11816
yield_expr_rule(Parser *p)
11817
173k
{
11818
173k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
11819
1
        _Pypegen_stack_overflow(p);
11820
1
    }
11821
173k
    if (p->error_indicator) {
11822
1
        p->level--;
11823
1
        return NULL;
11824
1
    }
11825
173k
    expr_ty _res = NULL;
11826
173k
    int _mark = p->mark;
11827
173k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11828
69
        p->error_indicator = 1;
11829
69
        p->level--;
11830
69
        return NULL;
11831
69
    }
11832
173k
    int _start_lineno = p->tokens[_mark]->lineno;
11833
173k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11834
173k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11835
173k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11836
173k
    { // 'yield' 'from' expression
11837
173k
        if (p->error_indicator) {
11838
0
            p->level--;
11839
0
            return NULL;
11840
0
        }
11841
173k
        D(fprintf(stderr, "%*c> yield_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'yield' 'from' expression"));
11842
173k
        Token * _keyword;
11843
173k
        Token * _keyword_1;
11844
173k
        expr_ty a;
11845
173k
        if (
11846
173k
            (_keyword = _PyPegen_expect_token(p, 506))  // token='yield'
11847
2.56k
            &&
11848
2.56k
            (_keyword_1 = _PyPegen_expect_token(p, 501))  // token='from'
11849
438
            &&
11850
438
            (a = expression_rule(p))  // expression
11851
173k
        )
11852
276
        {
11853
276
            D(fprintf(stderr, "%*c+ yield_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'yield' 'from' expression"));
11854
276
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11855
276
            if (_token == NULL) {
11856
0
                p->level--;
11857
0
                return NULL;
11858
0
            }
11859
276
            int _end_lineno = _token->end_lineno;
11860
276
            UNUSED(_end_lineno); // Only used by EXTRA macro
11861
276
            int _end_col_offset = _token->end_col_offset;
11862
276
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11863
276
            _res = _PyAST_YieldFrom ( a , EXTRA );
11864
276
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
11865
0
                p->error_indicator = 1;
11866
0
                p->level--;
11867
0
                return NULL;
11868
0
            }
11869
276
            goto done;
11870
276
        }
11871
172k
        p->mark = _mark;
11872
172k
        D(fprintf(stderr, "%*c%s yield_expr[%d-%d]: %s failed!\n", p->level, ' ',
11873
172k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'yield' 'from' expression"));
11874
172k
    }
11875
0
    { // 'yield' star_expressions?
11876
172k
        if (p->error_indicator) {
11877
87
            p->level--;
11878
87
            return NULL;
11879
87
        }
11880
172k
        D(fprintf(stderr, "%*c> yield_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'yield' star_expressions?"));
11881
172k
        Token * _keyword;
11882
172k
        void *a;
11883
172k
        if (
11884
172k
            (_keyword = _PyPegen_expect_token(p, 506))  // token='yield'
11885
2.20k
            &&
11886
2.20k
            (a = star_expressions_rule(p), !p->error_indicator)  // star_expressions?
11887
172k
        )
11888
1.85k
        {
11889
1.85k
            D(fprintf(stderr, "%*c+ yield_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'yield' star_expressions?"));
11890
1.85k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11891
1.85k
            if (_token == NULL) {
11892
0
                p->level--;
11893
0
                return NULL;
11894
0
            }
11895
1.85k
            int _end_lineno = _token->end_lineno;
11896
1.85k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11897
1.85k
            int _end_col_offset = _token->end_col_offset;
11898
1.85k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11899
1.85k
            _res = _PyAST_Yield ( a , EXTRA );
11900
1.85k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
11901
0
                p->error_indicator = 1;
11902
0
                p->level--;
11903
0
                return NULL;
11904
0
            }
11905
1.85k
            goto done;
11906
1.85k
        }
11907
170k
        p->mark = _mark;
11908
170k
        D(fprintf(stderr, "%*c%s yield_expr[%d-%d]: %s failed!\n", p->level, ' ',
11909
170k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'yield' star_expressions?"));
11910
170k
    }
11911
170k
    _res = NULL;
11912
173k
  done:
11913
173k
    p->level--;
11914
173k
    return _res;
11915
170k
}
11916
11917
// star_expressions:
11918
//     | star_expression ((',' star_expression))+ ','?
11919
//     | star_expression ','
11920
//     | star_expression
11921
Py_LOCAL_SYMBOL expr_ty
11922
star_expressions_rule(Parser *p)
11923
585k
{
11924
585k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
11925
0
        _Pypegen_stack_overflow(p);
11926
0
    }
11927
585k
    if (p->error_indicator) {
11928
0
        p->level--;
11929
0
        return NULL;
11930
0
    }
11931
585k
    expr_ty _res = NULL;
11932
585k
    int _mark = p->mark;
11933
585k
    expr_ty _prefix_1_result = NULL;
11934
585k
    int _prefix_1_end = 0, _prefix_1_valid = 0;
11935
585k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11936
6
        p->error_indicator = 1;
11937
6
        p->level--;
11938
6
        return NULL;
11939
6
    }
11940
585k
    int _start_lineno = p->tokens[_mark]->lineno;
11941
585k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11942
585k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11943
585k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11944
585k
    { // star_expression ((',' star_expression))+ ','?
11945
585k
        if (p->error_indicator) {
11946
0
            p->level--;
11947
0
            return NULL;
11948
0
        }
11949
585k
        D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
11950
585k
        void *_opt_var;
11951
585k
        UNUSED(_opt_var); // Silence compiler warnings
11952
585k
        expr_ty a;
11953
585k
        asdl_seq * b;
11954
585k
        if (
11955
585k
            (a = ((!p->call_invalid_rules && _prefix_1_valid) ? (p->mark = _prefix_1_end, _prefix_1_result) : (_prefix_1_result = star_expression_rule(p), _prefix_1_end = p->mark, _prefix_1_valid = 1, _prefix_1_result)))  // star_expression
11956
229k
            &&
11957
229k
            (b = _loop1_56_rule(p))  // ((',' star_expression))+
11958
6.68k
            &&
11959
6.68k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
11960
585k
        )
11961
6.68k
        {
11962
6.68k
            D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
11963
6.68k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11964
6.68k
            if (_token == NULL) {
11965
0
                p->level--;
11966
0
                return NULL;
11967
0
            }
11968
6.68k
            int _end_lineno = _token->end_lineno;
11969
6.68k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11970
6.68k
            int _end_col_offset = _token->end_col_offset;
11971
6.68k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11972
6.68k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
11973
6.68k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
11974
0
                p->error_indicator = 1;
11975
0
                p->level--;
11976
0
                return NULL;
11977
0
            }
11978
6.68k
            goto done;
11979
6.68k
        }
11980
579k
        p->mark = _mark;
11981
579k
        D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
11982
579k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
11983
579k
    }
11984
0
    { // star_expression ','
11985
579k
        if (p->error_indicator) {
11986
9.29k
            p->level--;
11987
9.29k
            return NULL;
11988
9.29k
        }
11989
569k
        D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression ','"));
11990
569k
        Token * _literal;
11991
569k
        expr_ty a;
11992
569k
        if (
11993
569k
            (a = ((!p->call_invalid_rules && _prefix_1_valid) ? (p->mark = _prefix_1_end, _prefix_1_result) : (_prefix_1_result = star_expression_rule(p), _prefix_1_end = p->mark, _prefix_1_valid = 1, _prefix_1_result)))  // star_expression
11994
221k
            &&
11995
221k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
11996
569k
        )
11997
3.36k
        {
11998
3.36k
            D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression ','"));
11999
3.36k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12000
3.36k
            if (_token == NULL) {
12001
0
                p->level--;
12002
0
                return NULL;
12003
0
            }
12004
3.36k
            int _end_lineno = _token->end_lineno;
12005
3.36k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12006
3.36k
            int _end_col_offset = _token->end_col_offset;
12007
3.36k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12008
3.36k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
12009
3.36k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
12010
0
                p->error_indicator = 1;
12011
0
                p->level--;
12012
0
                return NULL;
12013
0
            }
12014
3.36k
            goto done;
12015
3.36k
        }
12016
566k
        p->mark = _mark;
12017
566k
        D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
12018
566k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression ','"));
12019
566k
    }
12020
0
    { // star_expression
12021
566k
        if (p->error_indicator) {
12022
0
            p->level--;
12023
0
            return NULL;
12024
0
        }
12025
566k
        D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression"));
12026
566k
        expr_ty star_expression_var;
12027
566k
        if (
12028
566k
            (star_expression_var = ((!p->call_invalid_rules && _prefix_1_valid) ? (p->mark = _prefix_1_end, _prefix_1_result) : (_prefix_1_result = star_expression_rule(p), _prefix_1_end = p->mark, _prefix_1_valid = 1, _prefix_1_result)))  // star_expression
12029
566k
        )
12030
218k
        {
12031
218k
            D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression"));
12032
218k
            _res = star_expression_var;
12033
218k
            goto done;
12034
218k
        }
12035
347k
        p->mark = _mark;
12036
347k
        D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
12037
347k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression"));
12038
347k
    }
12039
347k
    _res = NULL;
12040
576k
  done:
12041
576k
    p->level--;
12042
576k
    return _res;
12043
347k
}
12044
12045
// star_expression: '*' bitwise_or | expression
12046
static expr_ty
12047
star_expression_rule(Parser *p)
12048
1.35M
{
12049
1.35M
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
12050
1
        _Pypegen_stack_overflow(p);
12051
1
    }
12052
1.35M
    if (p->error_indicator) {
12053
1
        p->level--;
12054
1
        return NULL;
12055
1
    }
12056
1.35M
    expr_ty _res = NULL;
12057
1.35M
    if (_PyPegen_is_memoized(p, star_expression_type, &_res)) {
12058
950k
        p->level--;
12059
950k
        return _res;
12060
950k
    }
12061
403k
    int _mark = p->mark;
12062
403k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12063
0
        p->error_indicator = 1;
12064
0
        p->level--;
12065
0
        return NULL;
12066
0
    }
12067
403k
    int _start_lineno = p->tokens[_mark]->lineno;
12068
403k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12069
403k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12070
403k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12071
403k
    { // '*' bitwise_or
12072
403k
        if (p->error_indicator) {
12073
0
            p->level--;
12074
0
            return NULL;
12075
0
        }
12076
403k
        D(fprintf(stderr, "%*c> star_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
12077
403k
        Token * _literal;
12078
403k
        expr_ty a;
12079
403k
        if (
12080
403k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
12081
4.50k
            &&
12082
4.50k
            (a = bitwise_or_rule(p))  // bitwise_or
12083
403k
        )
12084
3.48k
        {
12085
3.48k
            D(fprintf(stderr, "%*c+ star_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
12086
3.48k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12087
3.48k
            if (_token == NULL) {
12088
0
                p->level--;
12089
0
                return NULL;
12090
0
            }
12091
3.48k
            int _end_lineno = _token->end_lineno;
12092
3.48k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12093
3.48k
            int _end_col_offset = _token->end_col_offset;
12094
3.48k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12095
3.48k
            _res = _PyAST_Starred ( a , Load , EXTRA );
12096
3.48k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
12097
0
                p->error_indicator = 1;
12098
0
                p->level--;
12099
0
                return NULL;
12100
0
            }
12101
3.48k
            goto done;
12102
3.48k
        }
12103
400k
        p->mark = _mark;
12104
400k
        D(fprintf(stderr, "%*c%s star_expression[%d-%d]: %s failed!\n", p->level, ' ',
12105
400k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' bitwise_or"));
12106
400k
    }
12107
0
    { // expression
12108
400k
        if (p->error_indicator) {
12109
331
            p->level--;
12110
331
            return NULL;
12111
331
        }
12112
399k
        D(fprintf(stderr, "%*c> star_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
12113
399k
        expr_ty expression_var;
12114
399k
        if (
12115
399k
            (expression_var = expression_rule(p))  // expression
12116
399k
        )
12117
169k
        {
12118
169k
            D(fprintf(stderr, "%*c+ star_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
12119
169k
            _res = expression_var;
12120
169k
            goto done;
12121
169k
        }
12122
230k
        p->mark = _mark;
12123
230k
        D(fprintf(stderr, "%*c%s star_expression[%d-%d]: %s failed!\n", p->level, ' ',
12124
230k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
12125
230k
    }
12126
230k
    _res = NULL;
12127
403k
  done:
12128
403k
    _PyPegen_insert_memo(p, _mark, star_expression_type, _res);
12129
403k
    p->level--;
12130
403k
    return _res;
12131
230k
}
12132
12133
// star_named_expressions: ','.star_named_expression+ ','?
12134
Py_LOCAL_SYMBOL asdl_expr_seq*
12135
star_named_expressions_rule(Parser *p)
12136
7.83k
{
12137
7.83k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
12138
0
        _Pypegen_stack_overflow(p);
12139
0
    }
12140
7.83k
    if (p->error_indicator) {
12141
0
        p->level--;
12142
0
        return NULL;
12143
0
    }
12144
7.83k
    asdl_expr_seq* _res = NULL;
12145
7.83k
    int _mark = p->mark;
12146
7.83k
    { // ','.star_named_expression+ ','?
12147
7.83k
        if (p->error_indicator) {
12148
0
            p->level--;
12149
0
            return NULL;
12150
0
        }
12151
7.83k
        D(fprintf(stderr, "%*c> star_named_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.star_named_expression+ ','?"));
12152
7.83k
        void *_opt_var;
12153
7.83k
        UNUSED(_opt_var); // Silence compiler warnings
12154
7.83k
        asdl_expr_seq* a;
12155
7.83k
        if (
12156
7.83k
            (a = (asdl_expr_seq*)_gather_58_rule(p))  // ','.star_named_expression+
12157
5.50k
            &&
12158
5.50k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
12159
7.83k
        )
12160
5.28k
        {
12161
5.28k
            D(fprintf(stderr, "%*c+ star_named_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_named_expression+ ','?"));
12162
5.28k
            _res = a;
12163
5.28k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
12164
0
                p->error_indicator = 1;
12165
0
                p->level--;
12166
0
                return NULL;
12167
0
            }
12168
5.28k
            goto done;
12169
5.28k
        }
12170
2.54k
        p->mark = _mark;
12171
2.54k
        D(fprintf(stderr, "%*c%s star_named_expressions[%d-%d]: %s failed!\n", p->level, ' ',
12172
2.54k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.star_named_expression+ ','?"));
12173
2.54k
    }
12174
2.54k
    _res = NULL;
12175
7.83k
  done:
12176
7.83k
    p->level--;
12177
7.83k
    return _res;
12178
2.54k
}
12179
12180
// star_named_expression: '*' bitwise_or | named_expression
12181
Py_LOCAL_SYMBOL expr_ty
12182
star_named_expression_rule(Parser *p)
12183
393k
{
12184
393k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
12185
1
        _Pypegen_stack_overflow(p);
12186
1
    }
12187
393k
    if (p->error_indicator) {
12188
1
        p->level--;
12189
1
        return NULL;
12190
1
    }
12191
393k
    expr_ty _res = NULL;
12192
393k
    int _mark = p->mark;
12193
393k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12194
282
        p->error_indicator = 1;
12195
282
        p->level--;
12196
282
        return NULL;
12197
282
    }
12198
393k
    int _start_lineno = p->tokens[_mark]->lineno;
12199
393k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12200
393k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12201
393k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12202
393k
    { // '*' bitwise_or
12203
393k
        if (p->error_indicator) {
12204
0
            p->level--;
12205
0
            return NULL;
12206
0
        }
12207
393k
        D(fprintf(stderr, "%*c> star_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
12208
393k
        Token * _literal;
12209
393k
        expr_ty a;
12210
393k
        if (
12211
393k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
12212
10.8k
            &&
12213
10.8k
            (a = bitwise_or_rule(p))  // bitwise_or
12214
393k
        )
12215
7.49k
        {
12216
7.49k
            D(fprintf(stderr, "%*c+ star_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
12217
7.49k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12218
7.49k
            if (_token == NULL) {
12219
0
                p->level--;
12220
0
                return NULL;
12221
0
            }
12222
7.49k
            int _end_lineno = _token->end_lineno;
12223
7.49k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12224
7.49k
            int _end_col_offset = _token->end_col_offset;
12225
7.49k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12226
7.49k
            _res = _PyAST_Starred ( a , Load , EXTRA );
12227
7.49k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
12228
0
                p->error_indicator = 1;
12229
0
                p->level--;
12230
0
                return NULL;
12231
0
            }
12232
7.49k
            goto done;
12233
7.49k
        }
12234
385k
        p->mark = _mark;
12235
385k
        D(fprintf(stderr, "%*c%s star_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
12236
385k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' bitwise_or"));
12237
385k
    }
12238
0
    { // named_expression
12239
385k
        if (p->error_indicator) {
12240
621
            p->level--;
12241
621
            return NULL;
12242
621
        }
12243
385k
        D(fprintf(stderr, "%*c> star_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
12244
385k
        expr_ty named_expression_var;
12245
385k
        if (
12246
385k
            (named_expression_var = named_expression_rule(p))  // named_expression
12247
385k
        )
12248
172k
        {
12249
172k
            D(fprintf(stderr, "%*c+ star_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
12250
172k
            _res = named_expression_var;
12251
172k
            goto done;
12252
172k
        }
12253
212k
        p->mark = _mark;
12254
212k
        D(fprintf(stderr, "%*c%s star_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
12255
212k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
12256
212k
    }
12257
212k
    _res = NULL;
12258
392k
  done:
12259
392k
    p->level--;
12260
392k
    return _res;
12261
212k
}
12262
12263
// assignment_expression: NAME ':=' ~ expression
12264
Py_LOCAL_SYMBOL expr_ty
12265
assignment_expression_rule(Parser *p)
12266
635k
{
12267
635k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
12268
1
        _Pypegen_stack_overflow(p);
12269
1
    }
12270
635k
    if (p->error_indicator) {
12271
1
        p->level--;
12272
1
        return NULL;
12273
1
    }
12274
635k
    expr_ty _res = NULL;
12275
635k
    int _mark = p->mark;
12276
635k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12277
146
        p->error_indicator = 1;
12278
146
        p->level--;
12279
146
        return NULL;
12280
146
    }
12281
635k
    int _start_lineno = p->tokens[_mark]->lineno;
12282
635k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12283
635k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12284
635k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12285
635k
    { // NAME ':=' ~ expression
12286
635k
        if (p->error_indicator) {
12287
0
            p->level--;
12288
0
            return NULL;
12289
0
        }
12290
635k
        D(fprintf(stderr, "%*c> assignment_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ':=' ~ expression"));
12291
635k
        int _cut_var = 0;
12292
635k
        Token * _literal;
12293
635k
        expr_ty a;
12294
635k
        expr_ty b;
12295
635k
        if (
12296
635k
            (a = _PyPegen_name_token(p))  // NAME
12297
221k
            &&
12298
221k
            (_literal = _PyPegen_expect_token(p, 53))  // token=':='
12299
6.08k
            &&
12300
6.08k
            (_cut_var = 1)
12301
6.08k
            &&
12302
6.08k
            (b = expression_rule(p))  // expression
12303
635k
        )
12304
3.33k
        {
12305
3.33k
            D(fprintf(stderr, "%*c+ assignment_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ':=' ~ expression"));
12306
3.33k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12307
3.33k
            if (_token == NULL) {
12308
0
                p->level--;
12309
0
                return NULL;
12310
0
            }
12311
3.33k
            int _end_lineno = _token->end_lineno;
12312
3.33k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12313
3.33k
            int _end_col_offset = _token->end_col_offset;
12314
3.33k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12315
3.33k
            _res = CHECK_VERSION ( expr_ty , 8 , "Assignment expressions are" , _PyAST_NamedExpr ( CHECK ( expr_ty , _PyPegen_set_expr_context ( p , a , Store ) ) , b , EXTRA ) );
12316
3.33k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
12317
0
                p->error_indicator = 1;
12318
0
                p->level--;
12319
0
                return NULL;
12320
0
            }
12321
3.33k
            goto done;
12322
3.33k
        }
12323
631k
        p->mark = _mark;
12324
631k
        D(fprintf(stderr, "%*c%s assignment_expression[%d-%d]: %s failed!\n", p->level, ' ',
12325
631k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ':=' ~ expression"));
12326
631k
        if (_cut_var) {
12327
2.74k
            p->level--;
12328
2.74k
            return NULL;
12329
2.74k
        }
12330
631k
    }
12331
629k
    _res = NULL;
12332
632k
  done:
12333
632k
    p->level--;
12334
632k
    return _res;
12335
629k
}
12336
12337
// named_expression: assignment_expression | invalid_named_expression | expression !':='
12338
Py_LOCAL_SYMBOL expr_ty
12339
named_expression_rule(Parser *p)
12340
447k
{
12341
447k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
12342
1
        _Pypegen_stack_overflow(p);
12343
1
    }
12344
447k
    if (p->error_indicator) {
12345
1
        p->level--;
12346
1
        return NULL;
12347
1
    }
12348
447k
    expr_ty _res = NULL;
12349
447k
    int _mark = p->mark;
12350
447k
    { // assignment_expression
12351
447k
        if (p->error_indicator) {
12352
0
            p->level--;
12353
0
            return NULL;
12354
0
        }
12355
447k
        D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
12356
447k
        expr_ty assignment_expression_var;
12357
447k
        if (
12358
447k
            (assignment_expression_var = assignment_expression_rule(p))  // assignment_expression
12359
447k
        )
12360
1.07k
        {
12361
1.07k
            D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
12362
1.07k
            _res = assignment_expression_var;
12363
1.07k
            goto done;
12364
1.07k
        }
12365
446k
        p->mark = _mark;
12366
446k
        D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
12367
446k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression"));
12368
446k
    }
12369
446k
    if (p->call_invalid_rules) { // invalid_named_expression
12370
294k
        if (p->error_indicator) {
12371
234
            p->level--;
12372
234
            return NULL;
12373
234
        }
12374
294k
        D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_named_expression"));
12375
294k
        void *invalid_named_expression_var;
12376
294k
        if (
12377
294k
            (invalid_named_expression_var = invalid_named_expression_rule(p))  // invalid_named_expression
12378
294k
        )
12379
0
        {
12380
0
            D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_named_expression"));
12381
0
            _res = invalid_named_expression_var;
12382
0
            goto done;
12383
0
        }
12384
294k
        p->mark = _mark;
12385
294k
        D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
12386
294k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_named_expression"));
12387
294k
    }
12388
446k
    { // expression !':='
12389
446k
        if (p->error_indicator) {
12390
18.3k
            p->level--;
12391
18.3k
            return NULL;
12392
18.3k
        }
12393
428k
        D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
12394
428k
        expr_ty expression_var;
12395
428k
        if (
12396
428k
            (expression_var = expression_rule(p))  // expression
12397
222k
            &&
12398
222k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53)  // token=':='
12399
428k
        )
12400
221k
        {
12401
221k
            D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='"));
12402
221k
            _res = expression_var;
12403
221k
            goto done;
12404
221k
        }
12405
206k
        p->mark = _mark;
12406
206k
        D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
12407
206k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
12408
206k
    }
12409
206k
    _res = NULL;
12410
429k
  done:
12411
429k
    p->level--;
12412
429k
    return _res;
12413
206k
}
12414
12415
// disjunction: conjunction (('or' conjunction))+ | conjunction
12416
Py_LOCAL_SYMBOL expr_ty
12417
disjunction_rule(Parser *p)
12418
3.42M
{
12419
3.42M
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
12420
1
        _Pypegen_stack_overflow(p);
12421
1
    }
12422
3.42M
    if (p->error_indicator) {
12423
1
        p->level--;
12424
1
        return NULL;
12425
1
    }
12426
3.42M
    expr_ty _res = NULL;
12427
3.42M
    if (_PyPegen_atom_fast_path(p, &_res)) {
12428
812k
        p->level--;
12429
812k
        return _res;
12430
812k
    }
12431
2.61M
    if (_PyPegen_is_memoized(p, disjunction_type, &_res)) {
12432
1.96M
        p->level--;
12433
1.96M
        return _res;
12434
1.96M
    }
12435
642k
    int _mark = p->mark;
12436
642k
    expr_ty _prefix_2_result = NULL;
12437
642k
    int _prefix_2_end = 0, _prefix_2_valid = 0;
12438
642k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12439
0
        p->error_indicator = 1;
12440
0
        p->level--;
12441
0
        return NULL;
12442
0
    }
12443
642k
    int _start_lineno = p->tokens[_mark]->lineno;
12444
642k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12445
642k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12446
642k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12447
642k
    { // conjunction (('or' conjunction))+
12448
642k
        if (p->error_indicator) {
12449
0
            p->level--;
12450
0
            return NULL;
12451
0
        }
12452
642k
        D(fprintf(stderr, "%*c> disjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "conjunction (('or' conjunction))+"));
12453
642k
        expr_ty a;
12454
642k
        asdl_seq * b;
12455
642k
        if (
12456
642k
            (a = ((!p->call_invalid_rules && _prefix_2_valid) ? (p->mark = _prefix_2_end, _prefix_2_result) : (_prefix_2_result = conjunction_rule(p), _prefix_2_end = p->mark, _prefix_2_valid = 1, _prefix_2_result)))  // conjunction
12457
139k
            &&
12458
139k
            (b = _loop1_59_rule(p))  // (('or' conjunction))+
12459
642k
        )
12460
1.13k
        {
12461
1.13k
            D(fprintf(stderr, "%*c+ disjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "conjunction (('or' conjunction))+"));
12462
1.13k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12463
1.13k
            if (_token == NULL) {
12464
0
                p->level--;
12465
0
                return NULL;
12466
0
            }
12467
1.13k
            int _end_lineno = _token->end_lineno;
12468
1.13k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12469
1.13k
            int _end_col_offset = _token->end_col_offset;
12470
1.13k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12471
1.13k
            _res = _PyAST_BoolOp ( Or , CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
12472
1.13k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
12473
0
                p->error_indicator = 1;
12474
0
                p->level--;
12475
0
                return NULL;
12476
0
            }
12477
1.13k
            goto done;
12478
1.13k
        }
12479
641k
        p->mark = _mark;
12480
641k
        D(fprintf(stderr, "%*c%s disjunction[%d-%d]: %s failed!\n", p->level, ' ',
12481
641k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "conjunction (('or' conjunction))+"));
12482
641k
    }
12483
0
    { // conjunction
12484
641k
        if (p->error_indicator) {
12485
43.2k
            p->level--;
12486
43.2k
            return NULL;
12487
43.2k
        }
12488
597k
        D(fprintf(stderr, "%*c> disjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "conjunction"));
12489
597k
        expr_ty conjunction_var;
12490
597k
        if (
12491
597k
            (conjunction_var = ((!p->call_invalid_rules && _prefix_2_valid) ? (p->mark = _prefix_2_end, _prefix_2_result) : (_prefix_2_result = conjunction_rule(p), _prefix_2_end = p->mark, _prefix_2_valid = 1, _prefix_2_result)))  // conjunction
12492
597k
        )
12493
138k
        {
12494
138k
            D(fprintf(stderr, "%*c+ disjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "conjunction"));
12495
138k
            _res = conjunction_var;
12496
138k
            goto done;
12497
138k
        }
12498
459k
        p->mark = _mark;
12499
459k
        D(fprintf(stderr, "%*c%s disjunction[%d-%d]: %s failed!\n", p->level, ' ',
12500
459k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "conjunction"));
12501
459k
    }
12502
459k
    _res = NULL;
12503
599k
  done:
12504
599k
    _PyPegen_insert_memo(p, _mark, disjunction_type, _res);
12505
599k
    p->level--;
12506
599k
    return _res;
12507
459k
}
12508
12509
// conjunction: inversion (('and' inversion))+ | inversion
12510
static expr_ty
12511
conjunction_rule(Parser *p)
12512
860k
{
12513
860k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
12514
1
        _Pypegen_stack_overflow(p);
12515
1
    }
12516
860k
    if (p->error_indicator) {
12517
1
        p->level--;
12518
1
        return NULL;
12519
1
    }
12520
860k
    expr_ty _res = NULL;
12521
860k
    if (_PyPegen_is_memoized(p, conjunction_type, &_res)) {
12522
213k
        p->level--;
12523
213k
        return _res;
12524
213k
    }
12525
646k
    int _mark = p->mark;
12526
646k
    expr_ty _prefix_3_result = NULL;
12527
646k
    int _prefix_3_end = 0, _prefix_3_valid = 0;
12528
646k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12529
0
        p->error_indicator = 1;
12530
0
        p->level--;
12531
0
        return NULL;
12532
0
    }
12533
646k
    int _start_lineno = p->tokens[_mark]->lineno;
12534
646k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12535
646k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12536
646k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12537
646k
    { // inversion (('and' inversion))+
12538
646k
        if (p->error_indicator) {
12539
0
            p->level--;
12540
0
            return NULL;
12541
0
        }
12542
646k
        D(fprintf(stderr, "%*c> conjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "inversion (('and' inversion))+"));
12543
646k
        expr_ty a;
12544
646k
        asdl_seq * b;
12545
646k
        if (
12546
646k
            (a = ((!p->call_invalid_rules && _prefix_3_valid) ? (p->mark = _prefix_3_end, _prefix_3_result) : (_prefix_3_result = inversion_rule(p), _prefix_3_end = p->mark, _prefix_3_valid = 1, _prefix_3_result)))  // inversion
12547
143k
            &&
12548
143k
            (b = _loop1_60_rule(p))  // (('and' inversion))+
12549
646k
        )
12550
746
        {
12551
746
            D(fprintf(stderr, "%*c+ conjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "inversion (('and' inversion))+"));
12552
746
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12553
746
            if (_token == NULL) {
12554
0
                p->level--;
12555
0
                return NULL;
12556
0
            }
12557
746
            int _end_lineno = _token->end_lineno;
12558
746
            UNUSED(_end_lineno); // Only used by EXTRA macro
12559
746
            int _end_col_offset = _token->end_col_offset;
12560
746
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12561
746
            _res = _PyAST_BoolOp ( And , CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
12562
746
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
12563
0
                p->error_indicator = 1;
12564
0
                p->level--;
12565
0
                return NULL;
12566
0
            }
12567
746
            goto done;
12568
746
        }
12569
646k
        p->mark = _mark;
12570
646k
        D(fprintf(stderr, "%*c%s conjunction[%d-%d]: %s failed!\n", p->level, ' ',
12571
646k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "inversion (('and' inversion))+"));
12572
646k
    }
12573
0
    { // inversion
12574
646k
        if (p->error_indicator) {
12575
43.2k
            p->level--;
12576
43.2k
            return NULL;
12577
43.2k
        }
12578
602k
        D(fprintf(stderr, "%*c> conjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "inversion"));
12579
602k
        expr_ty inversion_var;
12580
602k
        if (
12581
602k
            (inversion_var = ((!p->call_invalid_rules && _prefix_3_valid) ? (p->mark = _prefix_3_end, _prefix_3_result) : (_prefix_3_result = inversion_rule(p), _prefix_3_end = p->mark, _prefix_3_valid = 1, _prefix_3_result)))  // inversion
12582
602k
        )
12583
143k
        {
12584
143k
            D(fprintf(stderr, "%*c+ conjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "inversion"));
12585
143k
            _res = inversion_var;
12586
143k
            goto done;
12587
143k
        }
12588
459k
        p->mark = _mark;
12589
459k
        D(fprintf(stderr, "%*c%s conjunction[%d-%d]: %s failed!\n", p->level, ' ',
12590
459k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "inversion"));
12591
459k
    }
12592
459k
    _res = NULL;
12593
603k
  done:
12594
603k
    _PyPegen_insert_memo(p, _mark, conjunction_type, _res);
12595
603k
    p->level--;
12596
603k
    return _res;
12597
459k
}
12598
12599
// inversion: 'not' inversion | comparison
12600
Py_LOCAL_SYMBOL expr_ty
12601
inversion_rule(Parser *p)
12602
864k
{
12603
864k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
12604
1
        _Pypegen_stack_overflow(p);
12605
1
    }
12606
864k
    if (p->error_indicator) {
12607
1
        p->level--;
12608
1
        return NULL;
12609
1
    }
12610
864k
    expr_ty _res = NULL;
12611
864k
    if (_PyPegen_atom_fast_path(p, &_res)) {
12612
1.20k
        p->level--;
12613
1.20k
        return _res;
12614
1.20k
    }
12615
863k
    if (_PyPegen_is_memoized(p, inversion_type, &_res)) {
12616
214k
        p->level--;
12617
214k
        return _res;
12618
214k
    }
12619
649k
    int _mark = p->mark;
12620
649k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12621
0
        p->error_indicator = 1;
12622
0
        p->level--;
12623
0
        return NULL;
12624
0
    }
12625
649k
    int _start_lineno = p->tokens[_mark]->lineno;
12626
649k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12627
649k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12628
649k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12629
649k
    { // 'not' inversion
12630
649k
        if (p->error_indicator) {
12631
0
            p->level--;
12632
0
            return NULL;
12633
0
        }
12634
649k
        D(fprintf(stderr, "%*c> inversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'not' inversion"));
12635
649k
        Token * _keyword;
12636
649k
        expr_ty a;
12637
649k
        if (
12638
649k
            (_keyword = _PyPegen_expect_token(p, 531))  // token='not'
12639
1.27k
            &&
12640
1.27k
            (a = inversion_rule(p))  // inversion
12641
649k
        )
12642
653
        {
12643
653
            D(fprintf(stderr, "%*c+ inversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'not' inversion"));
12644
653
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12645
653
            if (_token == NULL) {
12646
0
                p->level--;
12647
0
                return NULL;
12648
0
            }
12649
653
            int _end_lineno = _token->end_lineno;
12650
653
            UNUSED(_end_lineno); // Only used by EXTRA macro
12651
653
            int _end_col_offset = _token->end_col_offset;
12652
653
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12653
653
            _res = _PyAST_UnaryOp ( Not , a , EXTRA );
12654
653
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
12655
0
                p->error_indicator = 1;
12656
0
                p->level--;
12657
0
                return NULL;
12658
0
            }
12659
653
            goto done;
12660
653
        }
12661
648k
        p->mark = _mark;
12662
648k
        D(fprintf(stderr, "%*c%s inversion[%d-%d]: %s failed!\n", p->level, ' ',
12663
648k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'not' inversion"));
12664
648k
    }
12665
0
    { // comparison
12666
648k
        if (p->error_indicator) {
12667
354
            p->level--;
12668
354
            return NULL;
12669
354
        }
12670
648k
        D(fprintf(stderr, "%*c> inversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "comparison"));
12671
648k
        expr_ty comparison_var;
12672
648k
        if (
12673
648k
            (comparison_var = comparison_rule(p))  // comparison
12674
648k
        )
12675
144k
        {
12676
144k
            D(fprintf(stderr, "%*c+ inversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "comparison"));
12677
144k
            _res = comparison_var;
12678
144k
            goto done;
12679
144k
        }
12680
503k
        p->mark = _mark;
12681
503k
        D(fprintf(stderr, "%*c%s inversion[%d-%d]: %s failed!\n", p->level, ' ',
12682
503k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "comparison"));
12683
503k
    }
12684
503k
    _res = NULL;
12685
648k
  done:
12686
648k
    _PyPegen_insert_memo(p, _mark, inversion_type, _res);
12687
648k
    p->level--;
12688
648k
    return _res;
12689
503k
}
12690
12691
// comparison: bitwise_or compare_op_bitwise_or_pair+ | bitwise_or
12692
static expr_ty
12693
comparison_rule(Parser *p)
12694
648k
{
12695
648k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
12696
1
        _Pypegen_stack_overflow(p);
12697
1
    }
12698
648k
    if (p->error_indicator) {
12699
1
        p->level--;
12700
1
        return NULL;
12701
1
    }
12702
648k
    expr_ty _res = NULL;
12703
648k
    int _mark = p->mark;
12704
648k
    expr_ty _prefix_4_result = NULL;
12705
648k
    int _prefix_4_end = 0, _prefix_4_valid = 0;
12706
648k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12707
0
        p->error_indicator = 1;
12708
0
        p->level--;
12709
0
        return NULL;
12710
0
    }
12711
648k
    int _start_lineno = p->tokens[_mark]->lineno;
12712
648k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12713
648k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12714
648k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12715
648k
    { // bitwise_or compare_op_bitwise_or_pair+
12716
648k
        if (p->error_indicator) {
12717
0
            p->level--;
12718
0
            return NULL;
12719
0
        }
12720
648k
        D(fprintf(stderr, "%*c> comparison[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
12721
648k
        expr_ty a;
12722
648k
        asdl_seq * b;
12723
648k
        if (
12724
648k
            (a = ((!p->call_invalid_rules && _prefix_4_valid) ? (p->mark = _prefix_4_end, _prefix_4_result) : (_prefix_4_result = bitwise_or_rule(p), _prefix_4_end = p->mark, _prefix_4_valid = 1, _prefix_4_result)))  // bitwise_or
12725
147k
            &&
12726
147k
            (b = _loop1_61_rule(p))  // compare_op_bitwise_or_pair+
12727
648k
        )
12728
5.70k
        {
12729
5.70k
            D(fprintf(stderr, "%*c+ comparison[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
12730
5.70k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12731
5.70k
            if (_token == NULL) {
12732
0
                p->level--;
12733
0
                return NULL;
12734
0
            }
12735
5.70k
            int _end_lineno = _token->end_lineno;
12736
5.70k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12737
5.70k
            int _end_col_offset = _token->end_col_offset;
12738
5.70k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12739
5.70k
            _res = _PyAST_Compare ( a , CHECK ( asdl_int_seq* , _PyPegen_get_cmpops ( p , b ) ) , CHECK ( asdl_expr_seq* , _PyPegen_get_exprs ( p , b ) ) , EXTRA );
12740
5.70k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
12741
0
                p->error_indicator = 1;
12742
0
                p->level--;
12743
0
                return NULL;
12744
0
            }
12745
5.70k
            goto done;
12746
5.70k
        }
12747
642k
        p->mark = _mark;
12748
642k
        D(fprintf(stderr, "%*c%s comparison[%d-%d]: %s failed!\n", p->level, ' ',
12749
642k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
12750
642k
    }
12751
0
    { // bitwise_or
12752
642k
        if (p->error_indicator) {
12753
43.2k
            p->level--;
12754
43.2k
            return NULL;
12755
43.2k
        }
12756
599k
        D(fprintf(stderr, "%*c> comparison[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or"));
12757
599k
        expr_ty bitwise_or_var;
12758
599k
        if (
12759
599k
            (bitwise_or_var = ((!p->call_invalid_rules && _prefix_4_valid) ? (p->mark = _prefix_4_end, _prefix_4_result) : (_prefix_4_result = bitwise_or_rule(p), _prefix_4_end = p->mark, _prefix_4_valid = 1, _prefix_4_result)))  // bitwise_or
12760
599k
        )
12761
138k
        {
12762
138k
            D(fprintf(stderr, "%*c+ comparison[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or"));
12763
138k
            _res = bitwise_or_var;
12764
138k
            goto done;
12765
138k
        }
12766
460k
        p->mark = _mark;
12767
460k
        D(fprintf(stderr, "%*c%s comparison[%d-%d]: %s failed!\n", p->level, ' ',
12768
460k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or"));
12769
460k
    }
12770
460k
    _res = NULL;
12771
604k
  done:
12772
604k
    p->level--;
12773
604k
    return _res;
12774
460k
}
12775
12776
// compare_op_bitwise_or_pair:
12777
//     | '==' bitwise_or
12778
//     | ('!=') bitwise_or
12779
//     | '<=' bitwise_or
12780
//     | invalid_noteq
12781
//     | '<' bitwise_or
12782
//     | '>=' bitwise_or
12783
//     | '>' bitwise_or
12784
//     | 'not' 'in' bitwise_or
12785
//     | 'in' bitwise_or
12786
//     | 'is' 'not' bitwise_or
12787
//     | 'is' bitwise_or
12788
static CmpopExprPair*
12789
compare_op_bitwise_or_pair_rule(Parser *p)
12790
165k
{
12791
165k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
12792
0
        _Pypegen_stack_overflow(p);
12793
0
    }
12794
165k
    if (p->error_indicator) {
12795
0
        p->level--;
12796
0
        return NULL;
12797
0
    }
12798
165k
    CmpopExprPair* _res = NULL;
12799
165k
    int _mark = p->mark;
12800
165k
    { // '==' bitwise_or
12801
165k
        if (p->error_indicator) {
12802
0
            p->level--;
12803
0
            return NULL;
12804
0
        }
12805
165k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'==' bitwise_or"));
12806
165k
        Token * _literal;
12807
165k
        expr_ty a;
12808
165k
        if (
12809
165k
            (_literal = _PyPegen_expect_token(p, 27))  // token='=='
12810
2.17k
            &&
12811
2.17k
            (a = bitwise_or_rule(p))  // bitwise_or
12812
165k
        )
12813
1.75k
        {
12814
1.75k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'==' bitwise_or"));
12815
1.75k
            _res = _PyPegen_cmpop_expr_pair ( p , Eq , a );
12816
1.75k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
12817
0
                p->error_indicator = 1;
12818
0
                p->level--;
12819
0
                return NULL;
12820
0
            }
12821
1.75k
            goto done;
12822
1.75k
        }
12823
164k
        p->mark = _mark;
12824
164k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12825
164k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'==' bitwise_or"));
12826
164k
    }
12827
0
    { // ('!=') bitwise_or
12828
164k
        if (p->error_indicator) {
12829
267
            p->level--;
12830
267
            return NULL;
12831
267
        }
12832
163k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('!=') bitwise_or"));
12833
163k
        void *_tmp_62_var;
12834
163k
        expr_ty a;
12835
163k
        if (
12836
163k
            (_tmp_62_var = _tmp_62_rule(p))  // '!='
12837
1.20k
            &&
12838
1.20k
            (a = bitwise_or_rule(p))  // bitwise_or
12839
163k
        )
12840
782
        {
12841
782
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('!=') bitwise_or"));
12842
782
            _res = _PyPegen_cmpop_expr_pair ( p , NotEq , a );
12843
782
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
12844
0
                p->error_indicator = 1;
12845
0
                p->level--;
12846
0
                return NULL;
12847
0
            }
12848
782
            goto done;
12849
782
        }
12850
163k
        p->mark = _mark;
12851
163k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12852
163k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('!=') bitwise_or"));
12853
163k
    }
12854
0
    { // '<=' bitwise_or
12855
163k
        if (p->error_indicator) {
12856
202
            p->level--;
12857
202
            return NULL;
12858
202
        }
12859
162k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<=' bitwise_or"));
12860
162k
        Token * _literal;
12861
162k
        expr_ty a;
12862
162k
        if (
12863
162k
            (_literal = _PyPegen_expect_token(p, 29))  // token='<='
12864
1.02k
            &&
12865
1.02k
            (a = bitwise_or_rule(p))  // bitwise_or
12866
162k
        )
12867
543
        {
12868
543
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<=' bitwise_or"));
12869
543
            _res = _PyPegen_cmpop_expr_pair ( p , LtE , a );
12870
543
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
12871
0
                p->error_indicator = 1;
12872
0
                p->level--;
12873
0
                return NULL;
12874
0
            }
12875
543
            goto done;
12876
543
        }
12877
162k
        p->mark = _mark;
12878
162k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12879
162k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<=' bitwise_or"));
12880
162k
    }
12881
162k
    if (p->call_invalid_rules) { // invalid_noteq
12882
53.9k
        if (p->error_indicator) {
12883
194
            p->level--;
12884
194
            return NULL;
12885
194
        }
12886
53.7k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_noteq"));
12887
53.7k
        void *invalid_noteq_var;
12888
53.7k
        if (
12889
53.7k
            (invalid_noteq_var = invalid_noteq_rule(p))  // invalid_noteq
12890
53.7k
        )
12891
0
        {
12892
0
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_noteq"));
12893
0
            _res = invalid_noteq_var;
12894
0
            goto done;
12895
0
        }
12896
53.7k
        p->mark = _mark;
12897
53.7k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12898
53.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_noteq"));
12899
53.7k
    }
12900
162k
    { // '<' bitwise_or
12901
162k
        if (p->error_indicator) {
12902
81
            p->level--;
12903
81
            return NULL;
12904
81
        }
12905
162k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<' bitwise_or"));
12906
162k
        Token * _literal;
12907
162k
        expr_ty a;
12908
162k
        if (
12909
162k
            (_literal = _PyPegen_expect_token(p, 20))  // token='<'
12910
4.97k
            &&
12911
4.97k
            (a = bitwise_or_rule(p))  // bitwise_or
12912
162k
        )
12913
4.28k
        {
12914
4.28k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<' bitwise_or"));
12915
4.28k
            _res = _PyPegen_cmpop_expr_pair ( p , Lt , a );
12916
4.28k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
12917
0
                p->error_indicator = 1;
12918
0
                p->level--;
12919
0
                return NULL;
12920
0
            }
12921
4.28k
            goto done;
12922
4.28k
        }
12923
157k
        p->mark = _mark;
12924
157k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12925
157k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<' bitwise_or"));
12926
157k
    }
12927
0
    { // '>=' bitwise_or
12928
157k
        if (p->error_indicator) {
12929
322
            p->level--;
12930
322
            return NULL;
12931
322
        }
12932
157k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>=' bitwise_or"));
12933
157k
        Token * _literal;
12934
157k
        expr_ty a;
12935
157k
        if (
12936
157k
            (_literal = _PyPegen_expect_token(p, 30))  // token='>='
12937
1.19k
            &&
12938
1.19k
            (a = bitwise_or_rule(p))  // bitwise_or
12939
157k
        )
12940
749
        {
12941
749
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>=' bitwise_or"));
12942
749
            _res = _PyPegen_cmpop_expr_pair ( p , GtE , a );
12943
749
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
12944
0
                p->error_indicator = 1;
12945
0
                p->level--;
12946
0
                return NULL;
12947
0
            }
12948
749
            goto done;
12949
749
        }
12950
156k
        p->mark = _mark;
12951
156k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12952
156k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>=' bitwise_or"));
12953
156k
    }
12954
0
    { // '>' bitwise_or
12955
156k
        if (p->error_indicator) {
12956
293
            p->level--;
12957
293
            return NULL;
12958
293
        }
12959
156k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>' bitwise_or"));
12960
156k
        Token * _literal;
12961
156k
        expr_ty a;
12962
156k
        if (
12963
156k
            (_literal = _PyPegen_expect_token(p, 21))  // token='>'
12964
8.45k
            &&
12965
8.45k
            (a = bitwise_or_rule(p))  // bitwise_or
12966
156k
        )
12967
7.70k
        {
12968
7.70k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>' bitwise_or"));
12969
7.70k
            _res = _PyPegen_cmpop_expr_pair ( p , Gt , a );
12970
7.70k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
12971
0
                p->error_indicator = 1;
12972
0
                p->level--;
12973
0
                return NULL;
12974
0
            }
12975
7.70k
            goto done;
12976
7.70k
        }
12977
148k
        p->mark = _mark;
12978
148k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12979
148k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>' bitwise_or"));
12980
148k
    }
12981
0
    { // 'not' 'in' bitwise_or
12982
148k
        if (p->error_indicator) {
12983
430
            p->level--;
12984
430
            return NULL;
12985
430
        }
12986
148k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'not' 'in' bitwise_or"));
12987
148k
        Token * _keyword;
12988
148k
        Token * _keyword_1;
12989
148k
        expr_ty a;
12990
148k
        if (
12991
148k
            (_keyword = _PyPegen_expect_token(p, 531))  // token='not'
12992
1.12k
            &&
12993
1.12k
            (_keyword_1 = _PyPegen_expect_token(p, 523))  // token='in'
12994
888
            &&
12995
888
            (a = bitwise_or_rule(p))  // bitwise_or
12996
148k
        )
12997
372
        {
12998
372
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'not' 'in' bitwise_or"));
12999
372
            _res = _PyPegen_cmpop_expr_pair ( p , NotIn , a );
13000
372
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
13001
0
                p->error_indicator = 1;
13002
0
                p->level--;
13003
0
                return NULL;
13004
0
            }
13005
372
            goto done;
13006
372
        }
13007
147k
        p->mark = _mark;
13008
147k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
13009
147k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'not' 'in' bitwise_or"));
13010
147k
    }
13011
0
    { // 'in' bitwise_or
13012
147k
        if (p->error_indicator) {
13013
277
            p->level--;
13014
277
            return NULL;
13015
277
        }
13016
147k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'in' bitwise_or"));
13017
147k
        Token * _keyword;
13018
147k
        expr_ty a;
13019
147k
        if (
13020
147k
            (_keyword = _PyPegen_expect_token(p, 523))  // token='in'
13021
1.41k
            &&
13022
1.41k
            (a = bitwise_or_rule(p))  // bitwise_or
13023
147k
        )
13024
921
        {
13025
921
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'in' bitwise_or"));
13026
921
            _res = _PyPegen_cmpop_expr_pair ( p , In , a );
13027
921
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
13028
0
                p->error_indicator = 1;
13029
0
                p->level--;
13030
0
                return NULL;
13031
0
            }
13032
921
            goto done;
13033
921
        }
13034
146k
        p->mark = _mark;
13035
146k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
13036
146k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'in' bitwise_or"));
13037
146k
    }
13038
0
    { // 'is' 'not' bitwise_or
13039
146k
        if (p->error_indicator) {
13040
274
            p->level--;
13041
274
            return NULL;
13042
274
        }
13043
146k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'is' 'not' bitwise_or"));
13044
146k
        Token * _keyword;
13045
146k
        Token * _keyword_1;
13046
146k
        expr_ty a;
13047
146k
        if (
13048
146k
            (_keyword = _PyPegen_expect_token(p, 532))  // token='is'
13049
2.17k
            &&
13050
2.17k
            (_keyword_1 = _PyPegen_expect_token(p, 531))  // token='not'
13051
857
            &&
13052
857
            (a = bitwise_or_rule(p))  // bitwise_or
13053
146k
        )
13054
239
        {
13055
239
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'is' 'not' bitwise_or"));
13056
239
            _res = _PyPegen_cmpop_expr_pair ( p , IsNot , a );
13057
239
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
13058
0
                p->error_indicator = 1;
13059
0
                p->level--;
13060
0
                return NULL;
13061
0
            }
13062
239
            goto done;
13063
239
        }
13064
146k
        p->mark = _mark;
13065
146k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
13066
146k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'is' 'not' bitwise_or"));
13067
146k
    }
13068
0
    { // 'is' bitwise_or
13069
146k
        if (p->error_indicator) {
13070
272
            p->level--;
13071
272
            return NULL;
13072
272
        }
13073
145k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'is' bitwise_or"));
13074
145k
        Token * _keyword;
13075
145k
        expr_ty a;
13076
145k
        if (
13077
145k
            (_keyword = _PyPegen_expect_token(p, 532))  // token='is'
13078
1.66k
            &&
13079
1.66k
            (a = bitwise_or_rule(p))  // bitwise_or
13080
145k
        )
13081
1.19k
        {
13082
1.19k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'is' bitwise_or"));
13083
1.19k
            _res = _PyPegen_cmpop_expr_pair ( p , Is , a );
13084
1.19k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
13085
0
                p->error_indicator = 1;
13086
0
                p->level--;
13087
0
                return NULL;
13088
0
            }
13089
1.19k
            goto done;
13090
1.19k
        }
13091
144k
        p->mark = _mark;
13092
144k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
13093
144k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'is' bitwise_or"));
13094
144k
    }
13095
144k
    _res = NULL;
13096
163k
  done:
13097
163k
    p->level--;
13098
163k
    return _res;
13099
144k
}
13100
13101
// Left-recursive
13102
// bitwise_or: bitwise_or '|' bitwise_xor | invalid_bitwise_or | bitwise_xor
13103
static expr_ty bitwise_or_raw(Parser *);
13104
Py_LOCAL_SYMBOL expr_ty
13105
bitwise_or_rule(Parser *p)
13106
2.40M
{
13107
2.40M
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
13108
2
        _Pypegen_stack_overflow(p);
13109
2
    }
13110
2.40M
    expr_ty _res = NULL;
13111
2.40M
    if (_PyPegen_is_memoized(p, bitwise_or_type, &_res)) {
13112
1.67M
        p->level--;
13113
1.67M
        return _res;
13114
1.67M
    }
13115
723k
    int _mark = p->mark;
13116
723k
    int _resmark = p->mark;
13117
723k
    Memo *_memo = _PyPegen_insert_memo_direct(p, _mark, bitwise_or_type);
13118
723k
    if (_memo == NULL) {
13119
0
        p->level--;
13120
0
        return NULL;
13121
0
    }
13122
939k
    while (1) {
13123
939k
        _memo->node = _res;
13124
939k
        _memo->mark = p->mark;
13125
939k
        p->mark = _mark;
13126
939k
        void *_raw = bitwise_or_raw(p);
13127
939k
        if (p->error_indicator) {
13128
45.7k
            p->level--;
13129
45.7k
            return NULL;
13130
45.7k
        }
13131
893k
        if (_raw == NULL || p->mark <= _resmark)
13132
677k
            break;
13133
215k
        _resmark = p->mark;
13134
215k
        _res = _raw;
13135
215k
    }
13136
677k
    p->mark = _resmark;
13137
677k
    p->level--;
13138
677k
    return _res;
13139
723k
}
13140
static expr_ty
13141
bitwise_or_raw(Parser *p)
13142
939k
{
13143
939k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
13144
1
        _Pypegen_stack_overflow(p);
13145
1
    }
13146
939k
    if (p->error_indicator) {
13147
2
        p->level--;
13148
2
        return NULL;
13149
2
    }
13150
939k
    expr_ty _res = NULL;
13151
939k
    int _mark = p->mark;
13152
939k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13153
0
        p->error_indicator = 1;
13154
0
        p->level--;
13155
0
        return NULL;
13156
0
    }
13157
939k
    int _start_lineno = p->tokens[_mark]->lineno;
13158
939k
    UNUSED(_start_lineno); // Only used by EXTRA macro
13159
939k
    int _start_col_offset = p->tokens[_mark]->col_offset;
13160
939k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13161
939k
    { // bitwise_or '|' bitwise_xor
13162
939k
        if (p->error_indicator) {
13163
0
            p->level--;
13164
0
            return NULL;
13165
0
        }
13166
939k
        D(fprintf(stderr, "%*c> bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or '|' bitwise_xor"));
13167
939k
        Token * _literal;
13168
939k
        expr_ty a;
13169
939k
        expr_ty b;
13170
939k
        if (
13171
939k
            (a = bitwise_or_rule(p))  // bitwise_or
13172
215k
            &&
13173
215k
            (_literal = _PyPegen_expect_token(p, 18))  // token='|'
13174
4.42k
            &&
13175
4.42k
            (b = bitwise_xor_rule(p))  // bitwise_xor
13176
939k
        )
13177
2.40k
        {
13178
2.40k
            D(fprintf(stderr, "%*c+ bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or '|' bitwise_xor"));
13179
2.40k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13180
2.40k
            if (_token == NULL) {
13181
0
                p->level--;
13182
0
                return NULL;
13183
0
            }
13184
2.40k
            int _end_lineno = _token->end_lineno;
13185
2.40k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13186
2.40k
            int _end_col_offset = _token->end_col_offset;
13187
2.40k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13188
2.40k
            _res = _PyAST_BinOp ( a , BitOr , b , EXTRA );
13189
2.40k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
13190
0
                p->error_indicator = 1;
13191
0
                p->level--;
13192
0
                return NULL;
13193
0
            }
13194
2.40k
            goto done;
13195
2.40k
        }
13196
937k
        p->mark = _mark;
13197
937k
        D(fprintf(stderr, "%*c%s bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13198
937k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or '|' bitwise_xor"));
13199
937k
    }
13200
937k
    if (p->call_invalid_rules) { // invalid_bitwise_or
13201
401k
        if (p->error_indicator) {
13202
703
            p->level--;
13203
703
            return NULL;
13204
703
        }
13205
400k
        D(fprintf(stderr, "%*c> bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_bitwise_or"));
13206
400k
        void *invalid_bitwise_or_var;
13207
400k
        if (
13208
400k
            (invalid_bitwise_or_var = invalid_bitwise_or_rule(p))  // invalid_bitwise_or
13209
400k
        )
13210
0
        {
13211
0
            D(fprintf(stderr, "%*c+ bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_bitwise_or"));
13212
0
            _res = invalid_bitwise_or_var;
13213
0
            goto done;
13214
0
        }
13215
400k
        p->mark = _mark;
13216
400k
        D(fprintf(stderr, "%*c%s bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13217
400k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_bitwise_or"));
13218
400k
    }
13219
936k
    { // bitwise_xor
13220
936k
        if (p->error_indicator) {
13221
217
            p->level--;
13222
217
            return NULL;
13223
217
        }
13224
936k
        D(fprintf(stderr, "%*c> bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_xor"));
13225
936k
        expr_ty bitwise_xor_var;
13226
936k
        if (
13227
936k
            (bitwise_xor_var = bitwise_xor_rule(p))  // bitwise_xor
13228
936k
        )
13229
425k
        {
13230
425k
            D(fprintf(stderr, "%*c+ bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_xor"));
13231
425k
            _res = bitwise_xor_var;
13232
425k
            goto done;
13233
425k
        }
13234
510k
        p->mark = _mark;
13235
510k
        D(fprintf(stderr, "%*c%s bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13236
510k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_xor"));
13237
510k
    }
13238
510k
    _res = NULL;
13239
938k
  done:
13240
938k
    p->level--;
13241
938k
    return _res;
13242
510k
}
13243
13244
// Left-recursive
13245
// bitwise_xor: bitwise_xor '^' bitwise_and | bitwise_and
13246
static expr_ty bitwise_xor_raw(Parser *);
13247
static expr_ty
13248
bitwise_xor_rule(Parser *p)
13249
1.88M
{
13250
1.88M
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
13251
1
        _Pypegen_stack_overflow(p);
13252
1
    }
13253
1.88M
    expr_ty _res = NULL;
13254
1.88M
    if (_PyPegen_is_memoized(p, bitwise_xor_type, &_res)) {
13255
1.15M
        p->level--;
13256
1.15M
        return _res;
13257
1.15M
    }
13258
728k
    int _mark = p->mark;
13259
728k
    int _resmark = p->mark;
13260
728k
    Memo *_memo = _PyPegen_insert_memo_direct(p, _mark, bitwise_xor_type);
13261
728k
    if (_memo == NULL) {
13262
0
        p->level--;
13263
0
        return NULL;
13264
0
    }
13265
945k
    while (1) {
13266
945k
        _memo->node = _res;
13267
945k
        _memo->mark = p->mark;
13268
945k
        p->mark = _mark;
13269
945k
        void *_raw = bitwise_xor_raw(p);
13270
945k
        if (p->error_indicator) {
13271
45.7k
            p->level--;
13272
45.7k
            return NULL;
13273
45.7k
        }
13274
899k
        if (_raw == NULL || p->mark <= _resmark)
13275
682k
            break;
13276
217k
        _resmark = p->mark;
13277
217k
        _res = _raw;
13278
217k
    }
13279
682k
    p->mark = _resmark;
13280
682k
    p->level--;
13281
682k
    return _res;
13282
728k
}
13283
static expr_ty
13284
bitwise_xor_raw(Parser *p)
13285
945k
{
13286
945k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
13287
1
        _Pypegen_stack_overflow(p);
13288
1
    }
13289
945k
    if (p->error_indicator) {
13290
1
        p->level--;
13291
1
        return NULL;
13292
1
    }
13293
945k
    expr_ty _res = NULL;
13294
945k
    int _mark = p->mark;
13295
945k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13296
0
        p->error_indicator = 1;
13297
0
        p->level--;
13298
0
        return NULL;
13299
0
    }
13300
945k
    int _start_lineno = p->tokens[_mark]->lineno;
13301
945k
    UNUSED(_start_lineno); // Only used by EXTRA macro
13302
945k
    int _start_col_offset = p->tokens[_mark]->col_offset;
13303
945k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13304
945k
    { // bitwise_xor '^' bitwise_and
13305
945k
        if (p->error_indicator) {
13306
0
            p->level--;
13307
0
            return NULL;
13308
0
        }
13309
945k
        D(fprintf(stderr, "%*c> bitwise_xor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_xor '^' bitwise_and"));
13310
945k
        Token * _literal;
13311
945k
        expr_ty a;
13312
945k
        expr_ty b;
13313
945k
        if (
13314
945k
            (a = bitwise_xor_rule(p))  // bitwise_xor
13315
217k
            &&
13316
217k
            (_literal = _PyPegen_expect_token(p, 32))  // token='^'
13317
1.66k
            &&
13318
1.66k
            (b = bitwise_and_rule(p))  // bitwise_and
13319
945k
        )
13320
1.09k
        {
13321
1.09k
            D(fprintf(stderr, "%*c+ bitwise_xor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_xor '^' bitwise_and"));
13322
1.09k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13323
1.09k
            if (_token == NULL) {
13324
0
                p->level--;
13325
0
                return NULL;
13326
0
            }
13327
1.09k
            int _end_lineno = _token->end_lineno;
13328
1.09k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13329
1.09k
            int _end_col_offset = _token->end_col_offset;
13330
1.09k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13331
1.09k
            _res = _PyAST_BinOp ( a , BitXor , b , EXTRA );
13332
1.09k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
13333
0
                p->error_indicator = 1;
13334
0
                p->level--;
13335
0
                return NULL;
13336
0
            }
13337
1.09k
            goto done;
13338
1.09k
        }
13339
944k
        p->mark = _mark;
13340
944k
        D(fprintf(stderr, "%*c%s bitwise_xor[%d-%d]: %s failed!\n", p->level, ' ',
13341
944k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_xor '^' bitwise_and"));
13342
944k
    }
13343
0
    { // bitwise_and
13344
944k
        if (p->error_indicator) {
13345
275
            p->level--;
13346
275
            return NULL;
13347
275
        }
13348
943k
        D(fprintf(stderr, "%*c> bitwise_xor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_and"));
13349
943k
        expr_ty bitwise_and_var;
13350
943k
        if (
13351
943k
            (bitwise_and_var = bitwise_and_rule(p))  // bitwise_and
13352
943k
        )
13353
431k
        {
13354
431k
            D(fprintf(stderr, "%*c+ bitwise_xor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_and"));
13355
431k
            _res = bitwise_and_var;
13356
431k
            goto done;
13357
431k
        }
13358
512k
        p->mark = _mark;
13359
512k
        D(fprintf(stderr, "%*c%s bitwise_xor[%d-%d]: %s failed!\n", p->level, ' ',
13360
512k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_and"));
13361
512k
    }
13362
512k
    _res = NULL;
13363
944k
  done:
13364
944k
    p->level--;
13365
944k
    return _res;
13366
512k
}
13367
13368
// Left-recursive
13369
// bitwise_and: bitwise_and '&' shift_expr | invalid_bitwise_and | shift_expr
13370
static expr_ty bitwise_and_raw(Parser *);
13371
Py_LOCAL_SYMBOL expr_ty
13372
bitwise_and_rule(Parser *p)
13373
2.30M
{
13374
2.30M
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
13375
2
        _Pypegen_stack_overflow(p);
13376
2
    }
13377
2.30M
    expr_ty _res = NULL;
13378
2.30M
    if (_PyPegen_is_memoized(p, bitwise_and_type, &_res)) {
13379
1.57M
        p->level--;
13380
1.57M
        return _res;
13381
1.57M
    }
13382
729k
    int _mark = p->mark;
13383
729k
    int _resmark = p->mark;
13384
729k
    Memo *_memo = _PyPegen_insert_memo_direct(p, _mark, bitwise_and_type);
13385
729k
    if (_memo == NULL) {
13386
0
        p->level--;
13387
0
        return NULL;
13388
0
    }
13389
949k
    while (1) {
13390
949k
        _memo->node = _res;
13391
949k
        _memo->mark = p->mark;
13392
949k
        p->mark = _mark;
13393
949k
        void *_raw = bitwise_and_raw(p);
13394
949k
        if (p->error_indicator) {
13395
45.7k
            p->level--;
13396
45.7k
            return NULL;
13397
45.7k
        }
13398
904k
        if (_raw == NULL || p->mark <= _resmark)
13399
683k
            break;
13400
220k
        _resmark = p->mark;
13401
220k
        _res = _raw;
13402
220k
    }
13403
683k
    p->mark = _resmark;
13404
683k
    p->level--;
13405
683k
    return _res;
13406
729k
}
13407
static expr_ty
13408
bitwise_and_raw(Parser *p)
13409
949k
{
13410
949k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
13411
1
        _Pypegen_stack_overflow(p);
13412
1
    }
13413
949k
    if (p->error_indicator) {
13414
1
        p->level--;
13415
1
        return NULL;
13416
1
    }
13417
949k
    expr_ty _res = NULL;
13418
949k
    int _mark = p->mark;
13419
949k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13420
0
        p->error_indicator = 1;
13421
0
        p->level--;
13422
0
        return NULL;
13423
0
    }
13424
949k
    int _start_lineno = p->tokens[_mark]->lineno;
13425
949k
    UNUSED(_start_lineno); // Only used by EXTRA macro
13426
949k
    int _start_col_offset = p->tokens[_mark]->col_offset;
13427
949k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13428
949k
    { // bitwise_and '&' shift_expr
13429
949k
        if (p->error_indicator) {
13430
0
            p->level--;
13431
0
            return NULL;
13432
0
        }
13433
949k
        D(fprintf(stderr, "%*c> bitwise_and[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_and '&' shift_expr"));
13434
949k
        Token * _literal;
13435
949k
        expr_ty a;
13436
949k
        expr_ty b;
13437
949k
        if (
13438
949k
            (a = bitwise_and_rule(p))  // bitwise_and
13439
220k
            &&
13440
220k
            (_literal = _PyPegen_expect_token(p, 19))  // token='&'
13441
3.83k
            &&
13442
3.83k
            (b = shift_expr_rule(p))  // shift_expr
13443
949k
        )
13444
2.51k
        {
13445
2.51k
            D(fprintf(stderr, "%*c+ bitwise_and[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_and '&' shift_expr"));
13446
2.51k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13447
2.51k
            if (_token == NULL) {
13448
0
                p->level--;
13449
0
                return NULL;
13450
0
            }
13451
2.51k
            int _end_lineno = _token->end_lineno;
13452
2.51k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13453
2.51k
            int _end_col_offset = _token->end_col_offset;
13454
2.51k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13455
2.51k
            _res = _PyAST_BinOp ( a , BitAnd , b , EXTRA );
13456
2.51k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
13457
0
                p->error_indicator = 1;
13458
0
                p->level--;
13459
0
                return NULL;
13460
0
            }
13461
2.51k
            goto done;
13462
2.51k
        }
13463
947k
        p->mark = _mark;
13464
947k
        D(fprintf(stderr, "%*c%s bitwise_and[%d-%d]: %s failed!\n", p->level, ' ',
13465
947k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_and '&' shift_expr"));
13466
947k
    }
13467
947k
    if (p->call_invalid_rules) { // invalid_bitwise_and
13468
405k
        if (p->error_indicator) {
13469
322
            p->level--;
13470
322
            return NULL;
13471
322
        }
13472
404k
        D(fprintf(stderr, "%*c> bitwise_and[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_bitwise_and"));
13473
404k
        void *invalid_bitwise_and_var;
13474
404k
        if (
13475
404k
            (invalid_bitwise_and_var = invalid_bitwise_and_rule(p))  // invalid_bitwise_and
13476
404k
        )
13477
0
        {
13478
0
            D(fprintf(stderr, "%*c+ bitwise_and[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_bitwise_and"));
13479
0
            _res = invalid_bitwise_and_var;
13480
0
            goto done;
13481
0
        }
13482
404k
        p->mark = _mark;
13483
404k
        D(fprintf(stderr, "%*c%s bitwise_and[%d-%d]: %s failed!\n", p->level, ' ',
13484
404k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_bitwise_and"));
13485
404k
    }
13486
946k
    { // shift_expr
13487
946k
        if (p->error_indicator) {
13488
215
            p->level--;
13489
215
            return NULL;
13490
215
        }
13491
946k
        D(fprintf(stderr, "%*c> bitwise_and[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr"));
13492
946k
        expr_ty shift_expr_var;
13493
946k
        if (
13494
946k
            (shift_expr_var = shift_expr_rule(p))  // shift_expr
13495
946k
        )
13496
434k
        {
13497
434k
            D(fprintf(stderr, "%*c+ bitwise_and[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr"));
13498
434k
            _res = shift_expr_var;
13499
434k
            goto done;
13500
434k
        }
13501
512k
        p->mark = _mark;
13502
512k
        D(fprintf(stderr, "%*c%s bitwise_and[%d-%d]: %s failed!\n", p->level, ' ',
13503
512k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr"));
13504
512k
    }
13505
512k
    _res = NULL;
13506
949k
  done:
13507
949k
    p->level--;
13508
949k
    return _res;
13509
512k
}
13510
13511
// Left-recursive
13512
// shift_expr: shift_expr '<<' sum | shift_expr '>>' sum | sum
13513
static expr_ty shift_expr_raw(Parser *);
13514
static expr_ty
13515
shift_expr_rule(Parser *p)
13516
2.31M
{
13517
2.31M
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
13518
1
        _Pypegen_stack_overflow(p);
13519
1
    }
13520
2.31M
    expr_ty _res = NULL;
13521
2.31M
    if (_PyPegen_is_memoized(p, shift_expr_type, &_res)) {
13522
1.58M
        p->level--;
13523
1.58M
        return _res;
13524
1.58M
    }
13525
733k
    int _mark = p->mark;
13526
733k
    int _resmark = p->mark;
13527
733k
    Memo *_memo = _PyPegen_insert_memo_direct(p, _mark, shift_expr_type);
13528
733k
    if (_memo == NULL) {
13529
0
        p->level--;
13530
0
        return NULL;
13531
0
    }
13532
955k
    while (1) {
13533
955k
        _memo->node = _res;
13534
955k
        _memo->mark = p->mark;
13535
955k
        p->mark = _mark;
13536
955k
        void *_raw = shift_expr_raw(p);
13537
955k
        if (p->error_indicator) {
13538
45.7k
            p->level--;
13539
45.7k
            return NULL;
13540
45.7k
        }
13541
910k
        if (_raw == NULL || p->mark <= _resmark)
13542
687k
            break;
13543
222k
        _resmark = p->mark;
13544
222k
        _res = _raw;
13545
222k
    }
13546
687k
    p->mark = _resmark;
13547
687k
    p->level--;
13548
687k
    return _res;
13549
733k
}
13550
static expr_ty
13551
shift_expr_raw(Parser *p)
13552
955k
{
13553
955k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
13554
1
        _Pypegen_stack_overflow(p);
13555
1
    }
13556
955k
    if (p->error_indicator) {
13557
1
        p->level--;
13558
1
        return NULL;
13559
1
    }
13560
955k
    expr_ty _res = NULL;
13561
955k
    int _mark = p->mark;
13562
955k
    expr_ty _prefix_5_result = NULL;
13563
955k
    int _prefix_5_end = 0, _prefix_5_valid = 0;
13564
955k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13565
0
        p->error_indicator = 1;
13566
0
        p->level--;
13567
0
        return NULL;
13568
0
    }
13569
955k
    int _start_lineno = p->tokens[_mark]->lineno;
13570
955k
    UNUSED(_start_lineno); // Only used by EXTRA macro
13571
955k
    int _start_col_offset = p->tokens[_mark]->col_offset;
13572
955k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13573
955k
    { // shift_expr '<<' sum
13574
955k
        if (p->error_indicator) {
13575
0
            p->level--;
13576
0
            return NULL;
13577
0
        }
13578
955k
        D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr '<<' sum"));
13579
955k
        Token * _literal;
13580
955k
        expr_ty a;
13581
955k
        expr_ty b;
13582
955k
        if (
13583
955k
            (a = ((!p->call_invalid_rules && _prefix_5_valid) ? (p->mark = _prefix_5_end, _prefix_5_result) : (_prefix_5_result = shift_expr_rule(p), _prefix_5_end = p->mark, _prefix_5_valid = 1, _prefix_5_result)))  // shift_expr
13584
222k
            &&
13585
222k
            (_literal = _PyPegen_expect_token(p, 33))  // token='<<'
13586
1.78k
            &&
13587
1.78k
            (b = sum_rule(p))  // sum
13588
955k
        )
13589
1.36k
        {
13590
1.36k
            D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr '<<' sum"));
13591
1.36k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13592
1.36k
            if (_token == NULL) {
13593
0
                p->level--;
13594
0
                return NULL;
13595
0
            }
13596
1.36k
            int _end_lineno = _token->end_lineno;
13597
1.36k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13598
1.36k
            int _end_col_offset = _token->end_col_offset;
13599
1.36k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13600
1.36k
            _res = _PyAST_BinOp ( a , LShift , b , EXTRA );
13601
1.36k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
13602
0
                p->error_indicator = 1;
13603
0
                p->level--;
13604
0
                return NULL;
13605
0
            }
13606
1.36k
            goto done;
13607
1.36k
        }
13608
954k
        p->mark = _mark;
13609
954k
        D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13610
954k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr '<<' sum"));
13611
954k
    }
13612
0
    { // shift_expr '>>' sum
13613
954k
        if (p->error_indicator) {
13614
195
            p->level--;
13615
195
            return NULL;
13616
195
        }
13617
954k
        D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr '>>' sum"));
13618
954k
        Token * _literal;
13619
954k
        expr_ty a;
13620
954k
        expr_ty b;
13621
954k
        if (
13622
954k
            (a = ((!p->call_invalid_rules && _prefix_5_valid) ? (p->mark = _prefix_5_end, _prefix_5_result) : (_prefix_5_result = shift_expr_rule(p), _prefix_5_end = p->mark, _prefix_5_valid = 1, _prefix_5_result)))  // shift_expr
13623
220k
            &&
13624
220k
            (_literal = _PyPegen_expect_token(p, 34))  // token='>>'
13625
1.02k
            &&
13626
1.02k
            (b = sum_rule(p))  // sum
13627
954k
        )
13628
604
        {
13629
604
            D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr '>>' sum"));
13630
604
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13631
604
            if (_token == NULL) {
13632
0
                p->level--;
13633
0
                return NULL;
13634
0
            }
13635
604
            int _end_lineno = _token->end_lineno;
13636
604
            UNUSED(_end_lineno); // Only used by EXTRA macro
13637
604
            int _end_col_offset = _token->end_col_offset;
13638
604
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13639
604
            _res = _PyAST_BinOp ( a , RShift , b , EXTRA );
13640
604
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
13641
0
                p->error_indicator = 1;
13642
0
                p->level--;
13643
0
                return NULL;
13644
0
            }
13645
604
            goto done;
13646
604
        }
13647
953k
        p->mark = _mark;
13648
953k
        D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13649
953k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr '>>' sum"));
13650
953k
    }
13651
0
    { // sum
13652
953k
        if (p->error_indicator) {
13653
262
            p->level--;
13654
262
            return NULL;
13655
262
        }
13656
953k
        D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum"));
13657
953k
        expr_ty sum_var;
13658
953k
        if (
13659
953k
            (sum_var = sum_rule(p))  // sum
13660
953k
        )
13661
440k
        {
13662
440k
            D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum"));
13663
440k
            _res = sum_var;
13664
440k
            goto done;
13665
440k
        }
13666
513k
        p->mark = _mark;
13667
513k
        D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13668
513k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum"));
13669
513k
    }
13670
513k
    _res = NULL;
13671
955k
  done:
13672
955k
    p->level--;
13673
955k
    return _res;
13674
513k
}
13675
13676
// Left-recursive
13677
// sum: sum '+' term | sum '-' term | invalid_arithmetic | term
13678
static expr_ty sum_raw(Parser *);
13679
Py_LOCAL_SYMBOL expr_ty
13680
sum_rule(Parser *p)
13681
2.77M
{
13682
2.77M
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
13683
1
        _Pypegen_stack_overflow(p);
13684
1
    }
13685
2.77M
    expr_ty _res = NULL;
13686
2.77M
    if (_PyPegen_is_memoized(p, sum_type, &_res)) {
13687
2.03M
        p->level--;
13688
2.03M
        return _res;
13689
2.03M
    }
13690
736k
    int _mark = p->mark;
13691
736k
    int _resmark = p->mark;
13692
736k
    Memo *_memo = _PyPegen_insert_memo_direct(p, _mark, sum_type);
13693
736k
    if (_memo == NULL) {
13694
0
        p->level--;
13695
0
        return NULL;
13696
0
    }
13697
989k
    while (1) {
13698
989k
        _memo->node = _res;
13699
989k
        _memo->mark = p->mark;
13700
989k
        p->mark = _mark;
13701
989k
        void *_raw = sum_raw(p);
13702
989k
        if (p->error_indicator) {
13703
45.7k
            p->level--;
13704
45.7k
            return NULL;
13705
45.7k
        }
13706
943k
        if (_raw == NULL || p->mark <= _resmark)
13707
690k
            break;
13708
253k
        _resmark = p->mark;
13709
253k
        _res = _raw;
13710
253k
    }
13711
690k
    p->mark = _resmark;
13712
690k
    p->level--;
13713
690k
    return _res;
13714
736k
}
13715
static expr_ty
13716
sum_raw(Parser *p)
13717
989k
{
13718
989k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
13719
1
        _Pypegen_stack_overflow(p);
13720
1
    }
13721
989k
    if (p->error_indicator) {
13722
1
        p->level--;
13723
1
        return NULL;
13724
1
    }
13725
989k
    expr_ty _res = NULL;
13726
989k
    int _mark = p->mark;
13727
989k
    expr_ty _prefix_6_result = NULL;
13728
989k
    int _prefix_6_end = 0, _prefix_6_valid = 0;
13729
989k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13730
0
        p->error_indicator = 1;
13731
0
        p->level--;
13732
0
        return NULL;
13733
0
    }
13734
989k
    int _start_lineno = p->tokens[_mark]->lineno;
13735
989k
    UNUSED(_start_lineno); // Only used by EXTRA macro
13736
989k
    int _start_col_offset = p->tokens[_mark]->col_offset;
13737
989k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13738
989k
    { // sum '+' term
13739
989k
        if (p->error_indicator) {
13740
0
            p->level--;
13741
0
            return NULL;
13742
0
        }
13743
989k
        D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum '+' term"));
13744
989k
        Token * _literal;
13745
989k
        expr_ty a;
13746
989k
        expr_ty b;
13747
989k
        if (
13748
989k
            (a = ((!p->call_invalid_rules && _prefix_6_valid) ? (p->mark = _prefix_6_end, _prefix_6_result) : (_prefix_6_result = sum_rule(p), _prefix_6_end = p->mark, _prefix_6_valid = 1, _prefix_6_result)))  // sum
13749
253k
            &&
13750
253k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
13751
11.2k
            &&
13752
11.2k
            (b = term_rule(p))  // term
13753
989k
        )
13754
9.82k
        {
13755
9.82k
            D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum '+' term"));
13756
9.82k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13757
9.82k
            if (_token == NULL) {
13758
0
                p->level--;
13759
0
                return NULL;
13760
0
            }
13761
9.82k
            int _end_lineno = _token->end_lineno;
13762
9.82k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13763
9.82k
            int _end_col_offset = _token->end_col_offset;
13764
9.82k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13765
9.82k
            _res = _PyAST_BinOp ( a , Add , b , EXTRA );
13766
9.82k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
13767
0
                p->error_indicator = 1;
13768
0
                p->level--;
13769
0
                return NULL;
13770
0
            }
13771
9.82k
            goto done;
13772
9.82k
        }
13773
979k
        p->mark = _mark;
13774
979k
        D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13775
979k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum '+' term"));
13776
979k
    }
13777
0
    { // sum '-' term
13778
979k
        if (p->error_indicator) {
13779
561
            p->level--;
13780
561
            return NULL;
13781
561
        }
13782
979k
        D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum '-' term"));
13783
979k
        Token * _literal;
13784
979k
        expr_ty a;
13785
979k
        expr_ty b;
13786
979k
        if (
13787
979k
            (a = ((!p->call_invalid_rules && _prefix_6_valid) ? (p->mark = _prefix_6_end, _prefix_6_result) : (_prefix_6_result = sum_rule(p), _prefix_6_end = p->mark, _prefix_6_valid = 1, _prefix_6_result)))  // sum
13788
242k
            &&
13789
242k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
13790
21.5k
            &&
13791
21.5k
            (b = term_rule(p))  // term
13792
979k
        )
13793
19.4k
        {
13794
19.4k
            D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum '-' term"));
13795
19.4k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13796
19.4k
            if (_token == NULL) {
13797
0
                p->level--;
13798
0
                return NULL;
13799
0
            }
13800
19.4k
            int _end_lineno = _token->end_lineno;
13801
19.4k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13802
19.4k
            int _end_col_offset = _token->end_col_offset;
13803
19.4k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13804
19.4k
            _res = _PyAST_BinOp ( a , Sub , b , EXTRA );
13805
19.4k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
13806
0
                p->error_indicator = 1;
13807
0
                p->level--;
13808
0
                return NULL;
13809
0
            }
13810
19.4k
            goto done;
13811
19.4k
        }
13812
959k
        p->mark = _mark;
13813
959k
        D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13814
959k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum '-' term"));
13815
959k
    }
13816
959k
    if (p->call_invalid_rules) { // invalid_arithmetic
13817
409k
        if (p->error_indicator) {
13818
666
            p->level--;
13819
666
            return NULL;
13820
666
        }
13821
409k
        D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_arithmetic"));
13822
409k
        void *invalid_arithmetic_var;
13823
409k
        if (
13824
409k
            (invalid_arithmetic_var = invalid_arithmetic_rule(p))  // invalid_arithmetic
13825
409k
        )
13826
0
        {
13827
0
            D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_arithmetic"));
13828
0
            _res = invalid_arithmetic_var;
13829
0
            goto done;
13830
0
        }
13831
409k
        p->mark = _mark;
13832
409k
        D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13833
409k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_arithmetic"));
13834
409k
    }
13835
958k
    { // term
13836
958k
        if (p->error_indicator) {
13837
272
            p->level--;
13838
272
            return NULL;
13839
272
        }
13840
958k
        D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term"));
13841
958k
        expr_ty term_var;
13842
958k
        if (
13843
958k
            (term_var = term_rule(p))  // term
13844
958k
        )
13845
446k
        {
13846
446k
            D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term"));
13847
446k
            _res = term_var;
13848
446k
            goto done;
13849
446k
        }
13850
512k
        p->mark = _mark;
13851
512k
        D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13852
512k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term"));
13853
512k
    }
13854
512k
    _res = NULL;
13855
987k
  done:
13856
987k
    p->level--;
13857
987k
    return _res;
13858
512k
}
13859
13860
// Left-recursive
13861
// term:
13862
//     | term '*' factor
13863
//     | term '/' factor
13864
//     | term '//' factor
13865
//     | term '%' factor
13866
//     | term '@' factor
13867
//     | factor
13868
static expr_ty term_raw(Parser *);
13869
static expr_ty
13870
term_rule(Parser *p)
13871
3.74M
{
13872
3.74M
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
13873
1
        _Pypegen_stack_overflow(p);
13874
1
    }
13875
3.74M
    expr_ty _res = NULL;
13876
3.74M
    if (_PyPegen_is_memoized(p, term_type, &_res)) {
13877
2.97M
        p->level--;
13878
2.97M
        return _res;
13879
2.97M
    }
13880
768k
    int _mark = p->mark;
13881
768k
    int _resmark = p->mark;
13882
768k
    Memo *_memo = _PyPegen_insert_memo_direct(p, _mark, term_type);
13883
768k
    if (_memo == NULL) {
13884
0
        p->level--;
13885
0
        return NULL;
13886
0
    }
13887
1.04M
    while (1) {
13888
1.04M
        _memo->node = _res;
13889
1.04M
        _memo->mark = p->mark;
13890
1.04M
        p->mark = _mark;
13891
1.04M
        void *_raw = term_raw(p);
13892
1.04M
        if (p->error_indicator) {
13893
45.6k
            p->level--;
13894
45.6k
            return NULL;
13895
45.6k
        }
13896
996k
        if (_raw == NULL || p->mark <= _resmark)
13897
722k
            break;
13898
273k
        _resmark = p->mark;
13899
273k
        _res = _raw;
13900
273k
    }
13901
722k
    p->mark = _resmark;
13902
722k
    p->level--;
13903
722k
    return _res;
13904
768k
}
13905
static expr_ty
13906
term_raw(Parser *p)
13907
1.04M
{
13908
1.04M
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
13909
1
        _Pypegen_stack_overflow(p);
13910
1
    }
13911
1.04M
    if (p->error_indicator) {
13912
1
        p->level--;
13913
1
        return NULL;
13914
1
    }
13915
1.04M
    expr_ty _res = NULL;
13916
1.04M
    int _mark = p->mark;
13917
1.04M
    expr_ty _prefix_7_result = NULL;
13918
1.04M
    int _prefix_7_end = 0, _prefix_7_valid = 0;
13919
1.04M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13920
0
        p->error_indicator = 1;
13921
0
        p->level--;
13922
0
        return NULL;
13923
0
    }
13924
1.04M
    int _start_lineno = p->tokens[_mark]->lineno;
13925
1.04M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13926
1.04M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13927
1.04M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13928
1.04M
    { // term '*' factor
13929
1.04M
        if (p->error_indicator) {
13930
0
            p->level--;
13931
0
            return NULL;
13932
0
        }
13933
1.04M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '*' factor"));
13934
1.04M
        Token * _literal;
13935
1.04M
        expr_ty a;
13936
1.04M
        expr_ty b;
13937
1.04M
        if (
13938
1.04M
            (a = ((!p->call_invalid_rules && _prefix_7_valid) ? (p->mark = _prefix_7_end, _prefix_7_result) : (_prefix_7_result = term_rule(p), _prefix_7_end = p->mark, _prefix_7_valid = 1, _prefix_7_result)))  // term
13939
273k
            &&
13940
273k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
13941
14.0k
            &&
13942
14.0k
            (b = factor_rule(p))  // factor
13943
1.04M
        )
13944
11.7k
        {
13945
11.7k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '*' factor"));
13946
11.7k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13947
11.7k
            if (_token == NULL) {
13948
0
                p->level--;
13949
0
                return NULL;
13950
0
            }
13951
11.7k
            int _end_lineno = _token->end_lineno;
13952
11.7k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13953
11.7k
            int _end_col_offset = _token->end_col_offset;
13954
11.7k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13955
11.7k
            _res = _PyAST_BinOp ( a , Mult , b , EXTRA );
13956
11.7k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
13957
0
                p->error_indicator = 1;
13958
0
                p->level--;
13959
0
                return NULL;
13960
0
            }
13961
11.7k
            goto done;
13962
11.7k
        }
13963
1.03M
        p->mark = _mark;
13964
1.03M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
13965
1.03M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '*' factor"));
13966
1.03M
    }
13967
0
    { // term '/' factor
13968
1.03M
        if (p->error_indicator) {
13969
870
            p->level--;
13970
870
            return NULL;
13971
870
        }
13972
1.02M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '/' factor"));
13973
1.02M
        Token * _literal;
13974
1.02M
        expr_ty a;
13975
1.02M
        expr_ty b;
13976
1.02M
        if (
13977
1.02M
            (a = ((!p->call_invalid_rules && _prefix_7_valid) ? (p->mark = _prefix_7_end, _prefix_7_result) : (_prefix_7_result = term_rule(p), _prefix_7_end = p->mark, _prefix_7_valid = 1, _prefix_7_result)))  // term
13978
261k
            &&
13979
261k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
13980
3.39k
            &&
13981
3.39k
            (b = factor_rule(p))  // factor
13982
1.02M
        )
13983
2.52k
        {
13984
2.52k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '/' factor"));
13985
2.52k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13986
2.52k
            if (_token == NULL) {
13987
0
                p->level--;
13988
0
                return NULL;
13989
0
            }
13990
2.52k
            int _end_lineno = _token->end_lineno;
13991
2.52k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13992
2.52k
            int _end_col_offset = _token->end_col_offset;
13993
2.52k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13994
2.52k
            _res = _PyAST_BinOp ( a , Div , b , EXTRA );
13995
2.52k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
13996
0
                p->error_indicator = 1;
13997
0
                p->level--;
13998
0
                return NULL;
13999
0
            }
14000
2.52k
            goto done;
14001
2.52k
        }
14002
1.02M
        p->mark = _mark;
14003
1.02M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14004
1.02M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '/' factor"));
14005
1.02M
    }
14006
0
    { // term '//' factor
14007
1.02M
        if (p->error_indicator) {
14008
291
            p->level--;
14009
291
            return NULL;
14010
291
        }
14011
1.02M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '//' factor"));
14012
1.02M
        Token * _literal;
14013
1.02M
        expr_ty a;
14014
1.02M
        expr_ty b;
14015
1.02M
        if (
14016
1.02M
            (a = ((!p->call_invalid_rules && _prefix_7_valid) ? (p->mark = _prefix_7_end, _prefix_7_result) : (_prefix_7_result = term_rule(p), _prefix_7_end = p->mark, _prefix_7_valid = 1, _prefix_7_result)))  // term
14017
258k
            &&
14018
258k
            (_literal = _PyPegen_expect_token(p, 47))  // token='//'
14019
1.30k
            &&
14020
1.30k
            (b = factor_rule(p))  // factor
14021
1.02M
        )
14022
552
        {
14023
552
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '//' factor"));
14024
552
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14025
552
            if (_token == NULL) {
14026
0
                p->level--;
14027
0
                return NULL;
14028
0
            }
14029
552
            int _end_lineno = _token->end_lineno;
14030
552
            UNUSED(_end_lineno); // Only used by EXTRA macro
14031
552
            int _end_col_offset = _token->end_col_offset;
14032
552
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14033
552
            _res = _PyAST_BinOp ( a , FloorDiv , b , EXTRA );
14034
552
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
14035
0
                p->error_indicator = 1;
14036
0
                p->level--;
14037
0
                return NULL;
14038
0
            }
14039
552
            goto done;
14040
552
        }
14041
1.02M
        p->mark = _mark;
14042
1.02M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14043
1.02M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '//' factor"));
14044
1.02M
    }
14045
0
    { // term '%' factor
14046
1.02M
        if (p->error_indicator) {
14047
205
            p->level--;
14048
205
            return NULL;
14049
205
        }
14050
1.02M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '%' factor"));
14051
1.02M
        Token * _literal;
14052
1.02M
        expr_ty a;
14053
1.02M
        expr_ty b;
14054
1.02M
        if (
14055
1.02M
            (a = ((!p->call_invalid_rules && _prefix_7_valid) ? (p->mark = _prefix_7_end, _prefix_7_result) : (_prefix_7_result = term_rule(p), _prefix_7_end = p->mark, _prefix_7_valid = 1, _prefix_7_result)))  // term
14056
257k
            &&
14057
257k
            (_literal = _PyPegen_expect_token(p, 24))  // token='%'
14058
3.52k
            &&
14059
3.52k
            (b = factor_rule(p))  // factor
14060
1.02M
        )
14061
2.43k
        {
14062
2.43k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '%' factor"));
14063
2.43k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14064
2.43k
            if (_token == NULL) {
14065
0
                p->level--;
14066
0
                return NULL;
14067
0
            }
14068
2.43k
            int _end_lineno = _token->end_lineno;
14069
2.43k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14070
2.43k
            int _end_col_offset = _token->end_col_offset;
14071
2.43k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14072
2.43k
            _res = _PyAST_BinOp ( a , Mod , b , EXTRA );
14073
2.43k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
14074
0
                p->error_indicator = 1;
14075
0
                p->level--;
14076
0
                return NULL;
14077
0
            }
14078
2.43k
            goto done;
14079
2.43k
        }
14080
1.02M
        p->mark = _mark;
14081
1.02M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14082
1.02M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '%' factor"));
14083
1.02M
    }
14084
0
    { // term '@' factor
14085
1.02M
        if (p->error_indicator) {
14086
469
            p->level--;
14087
469
            return NULL;
14088
469
        }
14089
1.02M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '@' factor"));
14090
1.02M
        Token * _literal;
14091
1.02M
        expr_ty a;
14092
1.02M
        expr_ty b;
14093
1.02M
        if (
14094
1.02M
            (a = ((!p->call_invalid_rules && _prefix_7_valid) ? (p->mark = _prefix_7_end, _prefix_7_result) : (_prefix_7_result = term_rule(p), _prefix_7_end = p->mark, _prefix_7_valid = 1, _prefix_7_result)))  // term
14095
254k
            &&
14096
254k
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
14097
3.05k
            &&
14098
3.05k
            (b = factor_rule(p))  // factor
14099
1.02M
        )
14100
2.21k
        {
14101
2.21k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '@' factor"));
14102
2.21k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14103
2.21k
            if (_token == NULL) {
14104
0
                p->level--;
14105
0
                return NULL;
14106
0
            }
14107
2.21k
            int _end_lineno = _token->end_lineno;
14108
2.21k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14109
2.21k
            int _end_col_offset = _token->end_col_offset;
14110
2.21k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14111
2.21k
            _res = CHECK_VERSION ( expr_ty , 5 , "The '@' operator is" , _PyAST_BinOp ( a , MatMult , b , EXTRA ) );
14112
2.21k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
14113
0
                p->error_indicator = 1;
14114
0
                p->level--;
14115
0
                return NULL;
14116
0
            }
14117
2.21k
            goto done;
14118
2.21k
        }
14119
1.02M
        p->mark = _mark;
14120
1.02M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14121
1.02M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '@' factor"));
14122
1.02M
    }
14123
0
    { // factor
14124
1.02M
        if (p->error_indicator) {
14125
267
            p->level--;
14126
267
            return NULL;
14127
267
        }
14128
1.02M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "factor"));
14129
1.02M
        expr_ty factor_var;
14130
1.02M
        if (
14131
1.02M
            (factor_var = factor_rule(p))  // factor
14132
1.02M
        )
14133
506k
        {
14134
506k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "factor"));
14135
506k
            _res = factor_var;
14136
506k
            goto done;
14137
506k
        }
14138
513k
        p->mark = _mark;
14139
513k
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14140
513k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "factor"));
14141
513k
    }
14142
513k
    _res = NULL;
14143
1.03M
  done:
14144
1.03M
    p->level--;
14145
1.03M
    return _res;
14146
513k
}
14147
14148
// factor: '+' factor | '-' factor | '~' factor | power | invalid_factor
14149
Py_LOCAL_SYMBOL expr_ty
14150
factor_rule(Parser *p)
14151
1.19M
{
14152
1.19M
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
14153
1
        _Pypegen_stack_overflow(p);
14154
1
    }
14155
1.19M
    if (p->error_indicator) {
14156
1
        p->level--;
14157
1
        return NULL;
14158
1
    }
14159
1.19M
    expr_ty _res = NULL;
14160
1.19M
    if (_PyPegen_is_memoized(p, factor_type, &_res)) {
14161
257k
        p->level--;
14162
257k
        return _res;
14163
257k
    }
14164
939k
    int _mark = p->mark;
14165
939k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14166
0
        p->error_indicator = 1;
14167
0
        p->level--;
14168
0
        return NULL;
14169
0
    }
14170
939k
    int _start_lineno = p->tokens[_mark]->lineno;
14171
939k
    UNUSED(_start_lineno); // Only used by EXTRA macro
14172
939k
    int _start_col_offset = p->tokens[_mark]->col_offset;
14173
939k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14174
939k
    { // '+' factor
14175
939k
        if (p->error_indicator) {
14176
0
            p->level--;
14177
0
            return NULL;
14178
0
        }
14179
939k
        D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+' factor"));
14180
939k
        Token * _literal;
14181
939k
        expr_ty a;
14182
939k
        if (
14183
939k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
14184
54.4k
            &&
14185
54.4k
            (a = factor_rule(p))  // factor
14186
939k
        )
14187
51.5k
        {
14188
51.5k
            D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+' factor"));
14189
51.5k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14190
51.5k
            if (_token == NULL) {
14191
0
                p->level--;
14192
0
                return NULL;
14193
0
            }
14194
51.5k
            int _end_lineno = _token->end_lineno;
14195
51.5k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14196
51.5k
            int _end_col_offset = _token->end_col_offset;
14197
51.5k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14198
51.5k
            _res = _PyAST_UnaryOp ( UAdd , a , EXTRA );
14199
51.5k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
14200
0
                p->error_indicator = 1;
14201
0
                p->level--;
14202
0
                return NULL;
14203
0
            }
14204
51.5k
            goto done;
14205
51.5k
        }
14206
887k
        p->mark = _mark;
14207
887k
        D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14208
887k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+' factor"));
14209
887k
    }
14210
0
    { // '-' factor
14211
887k
        if (p->error_indicator) {
14212
1.04k
            p->level--;
14213
1.04k
            return NULL;
14214
1.04k
        }
14215
886k
        D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' factor"));
14216
886k
        Token * _literal;
14217
886k
        expr_ty a;
14218
886k
        if (
14219
886k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
14220
49.2k
            &&
14221
49.2k
            (a = factor_rule(p))  // factor
14222
886k
        )
14223
45.0k
        {
14224
45.0k
            D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' factor"));
14225
45.0k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14226
45.0k
            if (_token == NULL) {
14227
0
                p->level--;
14228
0
                return NULL;
14229
0
            }
14230
45.0k
            int _end_lineno = _token->end_lineno;
14231
45.0k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14232
45.0k
            int _end_col_offset = _token->end_col_offset;
14233
45.0k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14234
45.0k
            _res = _PyAST_UnaryOp ( USub , a , EXTRA );
14235
45.0k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
14236
0
                p->error_indicator = 1;
14237
0
                p->level--;
14238
0
                return NULL;
14239
0
            }
14240
45.0k
            goto done;
14241
45.0k
        }
14242
841k
        p->mark = _mark;
14243
841k
        D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14244
841k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' factor"));
14245
841k
    }
14246
0
    { // '~' factor
14247
841k
        if (p->error_indicator) {
14248
1.58k
            p->level--;
14249
1.58k
            return NULL;
14250
1.58k
        }
14251
840k
        D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'~' factor"));
14252
840k
        Token * _literal;
14253
840k
        expr_ty a;
14254
840k
        if (
14255
840k
            (_literal = _PyPegen_expect_token(p, 31))  // token='~'
14256
45.3k
            &&
14257
45.3k
            (a = factor_rule(p))  // factor
14258
840k
        )
14259
41.6k
        {
14260
41.6k
            D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'~' factor"));
14261
41.6k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14262
41.6k
            if (_token == NULL) {
14263
0
                p->level--;
14264
0
                return NULL;
14265
0
            }
14266
41.6k
            int _end_lineno = _token->end_lineno;
14267
41.6k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14268
41.6k
            int _end_col_offset = _token->end_col_offset;
14269
41.6k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14270
41.6k
            _res = _PyAST_UnaryOp ( Invert , a , EXTRA );
14271
41.6k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
14272
0
                p->error_indicator = 1;
14273
0
                p->level--;
14274
0
                return NULL;
14275
0
            }
14276
41.6k
            goto done;
14277
41.6k
        }
14278
798k
        p->mark = _mark;
14279
798k
        D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14280
798k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'~' factor"));
14281
798k
    }
14282
0
    { // power
14283
798k
        if (p->error_indicator) {
14284
889
            p->level--;
14285
889
            return NULL;
14286
889
        }
14287
797k
        D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "power"));
14288
797k
        expr_ty power_var;
14289
797k
        if (
14290
797k
            (power_var = power_rule(p))  // power
14291
797k
        )
14292
271k
        {
14293
271k
            D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "power"));
14294
271k
            _res = power_var;
14295
271k
            goto done;
14296
271k
        }
14297
525k
        p->mark = _mark;
14298
525k
        D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14299
525k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "power"));
14300
525k
    }
14301
525k
    if (p->call_invalid_rules) { // invalid_factor
14302
210k
        if (p->error_indicator) {
14303
36.6k
            p->level--;
14304
36.6k
            return NULL;
14305
36.6k
        }
14306
174k
        D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_factor"));
14307
174k
        void *invalid_factor_var;
14308
174k
        if (
14309
174k
            (invalid_factor_var = invalid_factor_rule(p))  // invalid_factor
14310
174k
        )
14311
0
        {
14312
0
            D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_factor"));
14313
0
            _res = invalid_factor_var;
14314
0
            goto done;
14315
0
        }
14316
174k
        p->mark = _mark;
14317
174k
        D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14318
174k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_factor"));
14319
174k
    }
14320
489k
    _res = NULL;
14321
899k
  done:
14322
899k
    _PyPegen_insert_memo(p, _mark, factor_type, _res);
14323
899k
    p->level--;
14324
899k
    return _res;
14325
489k
}
14326
14327
// power: await_primary '**' factor | await_primary
14328
static expr_ty
14329
power_rule(Parser *p)
14330
797k
{
14331
797k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
14332
1
        _Pypegen_stack_overflow(p);
14333
1
    }
14334
797k
    if (p->error_indicator) {
14335
1
        p->level--;
14336
1
        return NULL;
14337
1
    }
14338
797k
    expr_ty _res = NULL;
14339
797k
    int _mark = p->mark;
14340
797k
    expr_ty _prefix_8_result = NULL;
14341
797k
    int _prefix_8_end = 0, _prefix_8_valid = 0;
14342
797k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14343
0
        p->error_indicator = 1;
14344
0
        p->level--;
14345
0
        return NULL;
14346
0
    }
14347
797k
    int _start_lineno = p->tokens[_mark]->lineno;
14348
797k
    UNUSED(_start_lineno); // Only used by EXTRA macro
14349
797k
    int _start_col_offset = p->tokens[_mark]->col_offset;
14350
797k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14351
797k
    { // await_primary '**' factor
14352
797k
        if (p->error_indicator) {
14353
0
            p->level--;
14354
0
            return NULL;
14355
0
        }
14356
797k
        D(fprintf(stderr, "%*c> power[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "await_primary '**' factor"));
14357
797k
        Token * _literal;
14358
797k
        expr_ty a;
14359
797k
        expr_ty b;
14360
797k
        if (
14361
797k
            (a = ((!p->call_invalid_rules && _prefix_8_valid) ? (p->mark = _prefix_8_end, _prefix_8_result) : (_prefix_8_result = await_primary_rule(p), _prefix_8_end = p->mark, _prefix_8_valid = 1, _prefix_8_result)))  // await_primary
14362
272k
            &&
14363
272k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
14364
2.23k
            &&
14365
2.23k
            (b = factor_rule(p))  // factor
14366
797k
        )
14367
1.85k
        {
14368
1.85k
            D(fprintf(stderr, "%*c+ power[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "await_primary '**' factor"));
14369
1.85k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14370
1.85k
            if (_token == NULL) {
14371
0
                p->level--;
14372
0
                return NULL;
14373
0
            }
14374
1.85k
            int _end_lineno = _token->end_lineno;
14375
1.85k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14376
1.85k
            int _end_col_offset = _token->end_col_offset;
14377
1.85k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14378
1.85k
            _res = _PyAST_BinOp ( a , Pow , b , EXTRA );
14379
1.85k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
14380
0
                p->error_indicator = 1;
14381
0
                p->level--;
14382
0
                return NULL;
14383
0
            }
14384
1.85k
            goto done;
14385
1.85k
        }
14386
795k
        p->mark = _mark;
14387
795k
        D(fprintf(stderr, "%*c%s power[%d-%d]: %s failed!\n", p->level, ' ',
14388
795k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "await_primary '**' factor"));
14389
795k
    }
14390
0
    { // await_primary
14391
795k
        if (p->error_indicator) {
14392
45.7k
            p->level--;
14393
45.7k
            return NULL;
14394
45.7k
        }
14395
749k
        D(fprintf(stderr, "%*c> power[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "await_primary"));
14396
749k
        expr_ty await_primary_var;
14397
749k
        if (
14398
749k
            (await_primary_var = ((!p->call_invalid_rules && _prefix_8_valid) ? (p->mark = _prefix_8_end, _prefix_8_result) : (_prefix_8_result = await_primary_rule(p), _prefix_8_end = p->mark, _prefix_8_valid = 1, _prefix_8_result)))  // await_primary
14399
749k
        )
14400
270k
        {
14401
270k
            D(fprintf(stderr, "%*c+ power[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "await_primary"));
14402
270k
            _res = await_primary_var;
14403
270k
            goto done;
14404
270k
        }
14405
479k
        p->mark = _mark;
14406
479k
        D(fprintf(stderr, "%*c%s power[%d-%d]: %s failed!\n", p->level, ' ',
14407
479k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "await_primary"));
14408
479k
    }
14409
479k
    _res = NULL;
14410
751k
  done:
14411
751k
    p->level--;
14412
751k
    return _res;
14413
479k
}
14414
14415
// await_primary: 'await' primary | primary
14416
static expr_ty
14417
await_primary_rule(Parser *p)
14418
1.08M
{
14419
1.08M
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
14420
1
        _Pypegen_stack_overflow(p);
14421
1
    }
14422
1.08M
    if (p->error_indicator) {
14423
1
        p->level--;
14424
1
        return NULL;
14425
1
    }
14426
1.08M
    expr_ty _res = NULL;
14427
1.08M
    if (_PyPegen_is_memoized(p, await_primary_type, &_res)) {
14428
287k
        p->level--;
14429
287k
        return _res;
14430
287k
    }
14431
797k
    int _mark = p->mark;
14432
797k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14433
0
        p->error_indicator = 1;
14434
0
        p->level--;
14435
0
        return NULL;
14436
0
    }
14437
797k
    int _start_lineno = p->tokens[_mark]->lineno;
14438
797k
    UNUSED(_start_lineno); // Only used by EXTRA macro
14439
797k
    int _start_col_offset = p->tokens[_mark]->col_offset;
14440
797k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14441
797k
    { // 'await' primary
14442
797k
        if (p->error_indicator) {
14443
0
            p->level--;
14444
0
            return NULL;
14445
0
        }
14446
797k
        D(fprintf(stderr, "%*c> await_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'await' primary"));
14447
797k
        Token * _keyword;
14448
797k
        expr_ty a;
14449
797k
        if (
14450
797k
            (_keyword = _PyPegen_expect_token(p, 533))  // token='await'
14451
750
            &&
14452
750
            (a = primary_rule(p))  // primary
14453
797k
        )
14454
259
        {
14455
259
            D(fprintf(stderr, "%*c+ await_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'await' primary"));
14456
259
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14457
259
            if (_token == NULL) {
14458
0
                p->level--;
14459
0
                return NULL;
14460
0
            }
14461
259
            int _end_lineno = _token->end_lineno;
14462
259
            UNUSED(_end_lineno); // Only used by EXTRA macro
14463
259
            int _end_col_offset = _token->end_col_offset;
14464
259
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14465
259
            _res = CHECK_VERSION ( expr_ty , 5 , "Await expressions are" , _PyAST_Await ( a , EXTRA ) );
14466
259
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
14467
0
                p->error_indicator = 1;
14468
0
                p->level--;
14469
0
                return NULL;
14470
0
            }
14471
259
            goto done;
14472
259
        }
14473
797k
        p->mark = _mark;
14474
797k
        D(fprintf(stderr, "%*c%s await_primary[%d-%d]: %s failed!\n", p->level, ' ',
14475
797k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'await' primary"));
14476
797k
    }
14477
0
    { // primary
14478
797k
        if (p->error_indicator) {
14479
224
            p->level--;
14480
224
            return NULL;
14481
224
        }
14482
797k
        D(fprintf(stderr, "%*c> await_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary"));
14483
797k
        expr_ty primary_var;
14484
797k
        if (
14485
797k
            (primary_var = primary_rule(p))  // primary
14486
797k
        )
14487
271k
        {
14488
271k
            D(fprintf(stderr, "%*c+ await_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary"));
14489
271k
            _res = primary_var;
14490
271k
            goto done;
14491
271k
        }
14492
525k
        p->mark = _mark;
14493
525k
        D(fprintf(stderr, "%*c%s await_primary[%d-%d]: %s failed!\n", p->level, ' ',
14494
525k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary"));
14495
525k
    }
14496
525k
    _res = NULL;
14497
797k
  done:
14498
797k
    _PyPegen_insert_memo(p, _mark, await_primary_type, _res);
14499
797k
    p->level--;
14500
797k
    return _res;
14501
525k
}
14502
14503
// Left-recursive
14504
// primary:
14505
//     | primary '.' NAME
14506
//     | primary genexp
14507
//     | primary '(' arguments? ')'
14508
//     | primary '[' slices ']'
14509
//     | atom
14510
static expr_ty primary_raw(Parser *);
14511
static expr_ty
14512
primary_rule(Parser *p)
14513
4.33M
{
14514
4.33M
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
14515
1
        _Pypegen_stack_overflow(p);
14516
1
    }
14517
4.33M
    expr_ty _res = NULL;
14518
4.33M
    if (_PyPegen_is_memoized(p, primary_type, &_res)) {
14519
3.44M
        p->level--;
14520
3.44M
        return _res;
14521
3.44M
    }
14522
891k
    int _mark = p->mark;
14523
891k
    int _resmark = p->mark;
14524
891k
    Memo *_memo = _PyPegen_insert_memo_direct(p, _mark, primary_type);
14525
891k
    if (_memo == NULL) {
14526
0
        p->level--;
14527
0
        return NULL;
14528
0
    }
14529
1.29M
    while (1) {
14530
1.29M
        _memo->node = _res;
14531
1.29M
        _memo->mark = p->mark;
14532
1.29M
        p->mark = _mark;
14533
1.29M
        void *_raw = primary_raw(p);
14534
1.29M
        if (p->error_indicator) {
14535
49.2k
            p->level--;
14536
49.2k
            return NULL;
14537
49.2k
        }
14538
1.24M
        if (_raw == NULL || p->mark <= _resmark)
14539
842k
            break;
14540
403k
        _resmark = p->mark;
14541
403k
        _res = _raw;
14542
403k
    }
14543
842k
    p->mark = _resmark;
14544
842k
    p->level--;
14545
842k
    return _res;
14546
891k
}
14547
static expr_ty
14548
primary_raw(Parser *p)
14549
1.29M
{
14550
1.29M
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
14551
1
        _Pypegen_stack_overflow(p);
14552
1
    }
14553
1.29M
    if (p->error_indicator) {
14554
2
        p->level--;
14555
2
        return NULL;
14556
2
    }
14557
1.29M
    expr_ty _res = NULL;
14558
1.29M
    int _mark = p->mark;
14559
1.29M
    expr_ty _prefix_9_result = NULL;
14560
1.29M
    int _prefix_9_end = 0, _prefix_9_valid = 0;
14561
1.29M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14562
0
        p->error_indicator = 1;
14563
0
        p->level--;
14564
0
        return NULL;
14565
0
    }
14566
1.29M
    int _start_lineno = p->tokens[_mark]->lineno;
14567
1.29M
    UNUSED(_start_lineno); // Only used by EXTRA macro
14568
1.29M
    int _start_col_offset = p->tokens[_mark]->col_offset;
14569
1.29M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14570
1.29M
    { // primary '.' NAME
14571
1.29M
        if (p->error_indicator) {
14572
0
            p->level--;
14573
0
            return NULL;
14574
0
        }
14575
1.29M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '.' NAME"));
14576
1.29M
        Token * _literal;
14577
1.29M
        expr_ty a;
14578
1.29M
        expr_ty b;
14579
1.29M
        if (
14580
1.29M
            (a = ((!p->call_invalid_rules && _prefix_9_valid) ? (p->mark = _prefix_9_end, _prefix_9_result) : (_prefix_9_result = primary_rule(p), _prefix_9_end = p->mark, _prefix_9_valid = 1, _prefix_9_result)))  // primary
14581
403k
            &&
14582
403k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
14583
18.4k
            &&
14584
18.4k
            (b = _PyPegen_name_token(p))  // NAME
14585
1.29M
        )
14586
18.0k
        {
14587
18.0k
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '.' NAME"));
14588
18.0k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14589
18.0k
            if (_token == NULL) {
14590
0
                p->level--;
14591
0
                return NULL;
14592
0
            }
14593
18.0k
            int _end_lineno = _token->end_lineno;
14594
18.0k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14595
18.0k
            int _end_col_offset = _token->end_col_offset;
14596
18.0k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14597
18.0k
            _res = _PyAST_Attribute ( a , b -> v . Name . id , Load , EXTRA );
14598
18.0k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
14599
0
                p->error_indicator = 1;
14600
0
                p->level--;
14601
0
                return NULL;
14602
0
            }
14603
18.0k
            goto done;
14604
18.0k
        }
14605
1.27M
        p->mark = _mark;
14606
1.27M
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14607
1.27M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '.' NAME"));
14608
1.27M
    }
14609
0
    { // primary genexp
14610
1.27M
        if (p->error_indicator) {
14611
228
            p->level--;
14612
228
            return NULL;
14613
228
        }
14614
1.27M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary genexp"));
14615
1.27M
        expr_ty a;
14616
1.27M
        expr_ty b;
14617
1.27M
        if (
14618
1.27M
            (a = ((!p->call_invalid_rules && _prefix_9_valid) ? (p->mark = _prefix_9_end, _prefix_9_result) : (_prefix_9_result = primary_rule(p), _prefix_9_end = p->mark, _prefix_9_valid = 1, _prefix_9_result)))  // primary
14619
385k
            &&
14620
385k
            (b = genexp_rule(p))  // genexp
14621
1.27M
        )
14622
491
        {
14623
491
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary genexp"));
14624
491
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14625
491
            if (_token == NULL) {
14626
0
                p->level--;
14627
0
                return NULL;
14628
0
            }
14629
491
            int _end_lineno = _token->end_lineno;
14630
491
            UNUSED(_end_lineno); // Only used by EXTRA macro
14631
491
            int _end_col_offset = _token->end_col_offset;
14632
491
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14633
491
            _res = _PyAST_Call ( a , CHECK ( asdl_expr_seq* , ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
14634
491
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
14635
0
                p->error_indicator = 1;
14636
0
                p->level--;
14637
0
                return NULL;
14638
0
            }
14639
491
            goto done;
14640
491
        }
14641
1.27M
        p->mark = _mark;
14642
1.27M
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14643
1.27M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary genexp"));
14644
1.27M
    }
14645
0
    { // primary '(' arguments? ')'
14646
1.27M
        if (p->error_indicator) {
14647
7.11k
            p->level--;
14648
7.11k
            return NULL;
14649
7.11k
        }
14650
1.26M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '(' arguments? ')'"));
14651
1.26M
        Token * _literal;
14652
1.26M
        Token * _literal_1;
14653
1.26M
        expr_ty a;
14654
1.26M
        void *b;
14655
1.26M
        if (
14656
1.26M
            (a = ((!p->call_invalid_rules && _prefix_9_valid) ? (p->mark = _prefix_9_end, _prefix_9_result) : (_prefix_9_result = primary_rule(p), _prefix_9_end = p->mark, _prefix_9_valid = 1, _prefix_9_result)))  // primary
14657
377k
            &&
14658
377k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
14659
29.8k
            &&
14660
29.8k
            (b = arguments_rule(p), !p->error_indicator)  // arguments?
14661
26.0k
            &&
14662
26.0k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
14663
1.26M
        )
14664
16.4k
        {
14665
16.4k
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '(' arguments? ')'"));
14666
16.4k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14667
16.4k
            if (_token == NULL) {
14668
0
                p->level--;
14669
0
                return NULL;
14670
0
            }
14671
16.4k
            int _end_lineno = _token->end_lineno;
14672
16.4k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14673
16.4k
            int _end_col_offset = _token->end_col_offset;
14674
16.4k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14675
16.4k
            _res = _PyAST_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
14676
16.4k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
14677
0
                p->error_indicator = 1;
14678
0
                p->level--;
14679
0
                return NULL;
14680
0
            }
14681
16.4k
            goto done;
14682
16.4k
        }
14683
1.25M
        p->mark = _mark;
14684
1.25M
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14685
1.25M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '(' arguments? ')'"));
14686
1.25M
    }
14687
0
    { // primary '[' slices ']'
14688
1.25M
        if (p->error_indicator) {
14689
3.79k
            p->level--;
14690
3.79k
            return NULL;
14691
3.79k
        }
14692
1.24M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '[' slices ']'"));
14693
1.24M
        Token * _literal;
14694
1.24M
        Token * _literal_1;
14695
1.24M
        expr_ty a;
14696
1.24M
        expr_ty b;
14697
1.24M
        if (
14698
1.24M
            (a = ((!p->call_invalid_rules && _prefix_9_valid) ? (p->mark = _prefix_9_end, _prefix_9_result) : (_prefix_9_result = primary_rule(p), _prefix_9_end = p->mark, _prefix_9_valid = 1, _prefix_9_result)))  // primary
14699
357k
            &&
14700
357k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
14701
10.2k
            &&
14702
10.2k
            (b = slices_rule(p))  // slices
14703
7.76k
            &&
14704
7.76k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
14705
1.24M
        )
14706
3.57k
        {
14707
3.57k
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '[' slices ']'"));
14708
3.57k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14709
3.57k
            if (_token == NULL) {
14710
0
                p->level--;
14711
0
                return NULL;
14712
0
            }
14713
3.57k
            int _end_lineno = _token->end_lineno;
14714
3.57k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14715
3.57k
            int _end_col_offset = _token->end_col_offset;
14716
3.57k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14717
3.57k
            _res = _PyAST_Subscript ( a , b , Load , EXTRA );
14718
3.57k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
14719
0
                p->error_indicator = 1;
14720
0
                p->level--;
14721
0
                return NULL;
14722
0
            }
14723
3.57k
            goto done;
14724
3.57k
        }
14725
1.24M
        p->mark = _mark;
14726
1.24M
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14727
1.24M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '[' slices ']'"));
14728
1.24M
    }
14729
0
    { // atom
14730
1.24M
        if (p->error_indicator) {
14731
1.05k
            p->level--;
14732
1.05k
            return NULL;
14733
1.05k
        }
14734
1.24M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "atom"));
14735
1.24M
        expr_ty atom_var;
14736
1.24M
        if (
14737
1.24M
            (atom_var = atom_rule(p))  // atom
14738
1.24M
        )
14739
717k
        {
14740
717k
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "atom"));
14741
717k
            _res = atom_var;
14742
717k
            goto done;
14743
717k
        }
14744
526k
        p->mark = _mark;
14745
526k
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14746
526k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "atom"));
14747
526k
    }
14748
526k
    _res = NULL;
14749
1.28M
  done:
14750
1.28M
    p->level--;
14751
1.28M
    return _res;
14752
526k
}
14753
14754
// slices: slice !',' | ','.(slice | starred_expression)+ ','?
14755
static expr_ty
14756
slices_rule(Parser *p)
14757
10.2k
{
14758
10.2k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
14759
0
        _Pypegen_stack_overflow(p);
14760
0
    }
14761
10.2k
    if (p->error_indicator) {
14762
0
        p->level--;
14763
0
        return NULL;
14764
0
    }
14765
10.2k
    expr_ty _res = NULL;
14766
10.2k
    int _mark = p->mark;
14767
10.2k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14768
24
        p->error_indicator = 1;
14769
24
        p->level--;
14770
24
        return NULL;
14771
24
    }
14772
10.2k
    int _start_lineno = p->tokens[_mark]->lineno;
14773
10.2k
    UNUSED(_start_lineno); // Only used by EXTRA macro
14774
10.2k
    int _start_col_offset = p->tokens[_mark]->col_offset;
14775
10.2k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14776
10.2k
    { // slice !','
14777
10.2k
        if (p->error_indicator) {
14778
0
            p->level--;
14779
0
            return NULL;
14780
0
        }
14781
10.2k
        D(fprintf(stderr, "%*c> slices[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice !','"));
14782
10.2k
        expr_ty a;
14783
10.2k
        if (
14784
10.2k
            (a = slice_rule(p))  // slice
14785
7.08k
            &&
14786
7.08k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
14787
10.2k
        )
14788
4.90k
        {
14789
4.90k
            D(fprintf(stderr, "%*c+ slices[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice !','"));
14790
4.90k
            _res = a;
14791
4.90k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
14792
0
                p->error_indicator = 1;
14793
0
                p->level--;
14794
0
                return NULL;
14795
0
            }
14796
4.90k
            goto done;
14797
4.90k
        }
14798
5.29k
        p->mark = _mark;
14799
5.29k
        D(fprintf(stderr, "%*c%s slices[%d-%d]: %s failed!\n", p->level, ' ',
14800
5.29k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice !','"));
14801
5.29k
    }
14802
0
    { // ','.(slice | starred_expression)+ ','?
14803
5.29k
        if (p->error_indicator) {
14804
796
            p->level--;
14805
796
            return NULL;
14806
796
        }
14807
4.50k
        D(fprintf(stderr, "%*c> slices[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.(slice | starred_expression)+ ','?"));
14808
4.50k
        void *_opt_var;
14809
4.50k
        UNUSED(_opt_var); // Silence compiler warnings
14810
4.50k
        asdl_expr_seq* a;
14811
4.50k
        if (
14812
4.50k
            (a = (asdl_expr_seq*)_gather_64_rule(p))  // ','.(slice | starred_expression)+
14813
3.07k
            &&
14814
3.07k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
14815
4.50k
        )
14816
2.85k
        {
14817
2.85k
            D(fprintf(stderr, "%*c+ slices[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.(slice | starred_expression)+ ','?"));
14818
2.85k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14819
2.85k
            if (_token == NULL) {
14820
0
                p->level--;
14821
0
                return NULL;
14822
0
            }
14823
2.85k
            int _end_lineno = _token->end_lineno;
14824
2.85k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14825
2.85k
            int _end_col_offset = _token->end_col_offset;
14826
2.85k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14827
2.85k
            _res = _PyAST_Tuple ( a , Load , EXTRA );
14828
2.85k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
14829
0
                p->error_indicator = 1;
14830
0
                p->level--;
14831
0
                return NULL;
14832
0
            }
14833
2.85k
            goto done;
14834
2.85k
        }
14835
1.64k
        p->mark = _mark;
14836
1.64k
        D(fprintf(stderr, "%*c%s slices[%d-%d]: %s failed!\n", p->level, ' ',
14837
1.64k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.(slice | starred_expression)+ ','?"));
14838
1.64k
    }
14839
1.64k
    _res = NULL;
14840
9.40k
  done:
14841
9.40k
    p->level--;
14842
9.40k
    return _res;
14843
1.64k
}
14844
14845
// slice: expression? ':' expression? [':' expression?] | named_expression
14846
static expr_ty
14847
slice_rule(Parser *p)
14848
21.8k
{
14849
21.8k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
14850
1
        _Pypegen_stack_overflow(p);
14851
1
    }
14852
21.8k
    if (p->error_indicator) {
14853
1
        p->level--;
14854
1
        return NULL;
14855
1
    }
14856
21.8k
    expr_ty _res = NULL;
14857
21.8k
    int _mark = p->mark;
14858
21.8k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14859
12
        p->error_indicator = 1;
14860
12
        p->level--;
14861
12
        return NULL;
14862
12
    }
14863
21.8k
    int _start_lineno = p->tokens[_mark]->lineno;
14864
21.8k
    UNUSED(_start_lineno); // Only used by EXTRA macro
14865
21.8k
    int _start_col_offset = p->tokens[_mark]->col_offset;
14866
21.8k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14867
21.8k
    { // expression? ':' expression? [':' expression?]
14868
21.8k
        if (p->error_indicator) {
14869
0
            p->level--;
14870
0
            return NULL;
14871
0
        }
14872
21.8k
        D(fprintf(stderr, "%*c> slice[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14873
21.8k
        Token * _literal;
14874
21.8k
        void *a;
14875
21.8k
        void *b;
14876
21.8k
        void *c;
14877
21.8k
        if (
14878
21.8k
            (a = expression_rule(p), !p->error_indicator)  // expression?
14879
21.1k
            &&
14880
21.1k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
14881
5.51k
            &&
14882
5.51k
            (b = expression_rule(p), !p->error_indicator)  // expression?
14883
5.29k
            &&
14884
5.29k
            (c = _tmp_65_rule(p), !p->error_indicator)  // [':' expression?]
14885
21.8k
        )
14886
5.22k
        {
14887
5.22k
            D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14888
5.22k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14889
5.22k
            if (_token == NULL) {
14890
0
                p->level--;
14891
0
                return NULL;
14892
0
            }
14893
5.22k
            int _end_lineno = _token->end_lineno;
14894
5.22k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14895
5.22k
            int _end_col_offset = _token->end_col_offset;
14896
5.22k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14897
5.22k
            _res = _PyAST_Slice ( a , b , c , EXTRA );
14898
5.22k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
14899
0
                p->error_indicator = 1;
14900
0
                p->level--;
14901
0
                return NULL;
14902
0
            }
14903
5.22k
            goto done;
14904
5.22k
        }
14905
16.6k
        p->mark = _mark;
14906
16.6k
        D(fprintf(stderr, "%*c%s slice[%d-%d]: %s failed!\n", p->level, ' ',
14907
16.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14908
16.6k
    }
14909
0
    { // named_expression
14910
16.6k
        if (p->error_indicator) {
14911
994
            p->level--;
14912
994
            return NULL;
14913
994
        }
14914
15.6k
        D(fprintf(stderr, "%*c> slice[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
14915
15.6k
        expr_ty a;
14916
15.6k
        if (
14917
15.6k
            (a = named_expression_rule(p))  // named_expression
14918
15.6k
        )
14919
10.3k
        {
14920
10.3k
            D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
14921
10.3k
            _res = a;
14922
10.3k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
14923
0
                p->error_indicator = 1;
14924
0
                p->level--;
14925
0
                return NULL;
14926
0
            }
14927
10.3k
            goto done;
14928
10.3k
        }
14929
5.31k
        p->mark = _mark;
14930
5.31k
        D(fprintf(stderr, "%*c%s slice[%d-%d]: %s failed!\n", p->level, ' ',
14931
5.31k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
14932
5.31k
    }
14933
5.31k
    _res = NULL;
14934
20.8k
  done:
14935
20.8k
    p->level--;
14936
20.8k
    return _res;
14937
5.31k
}
14938
14939
// atom:
14940
//     | NAME
14941
//     | 'True'
14942
//     | 'False'
14943
//     | 'None'
14944
//     | &(STRING | FSTRING_START | TSTRING_START) strings
14945
//     | NUMBER
14946
//     | &'(' (genexp | tuple | group)
14947
//     | &'[' (listcomp | list)
14948
//     | &'{' (dictcomp | setcomp | dict | set)
14949
//     | '...'
14950
static expr_ty
14951
atom_rule(Parser *p)
14952
1.24M
{
14953
1.24M
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
14954
0
        _Pypegen_stack_overflow(p);
14955
0
    }
14956
1.24M
    if (p->error_indicator) {
14957
0
        p->level--;
14958
0
        return NULL;
14959
0
    }
14960
1.24M
    expr_ty _res = NULL;
14961
1.24M
    int _mark = p->mark;
14962
1.24M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14963
0
        p->error_indicator = 1;
14964
0
        p->level--;
14965
0
        return NULL;
14966
0
    }
14967
1.24M
    int _start_lineno = p->tokens[_mark]->lineno;
14968
1.24M
    UNUSED(_start_lineno); // Only used by EXTRA macro
14969
1.24M
    int _start_col_offset = p->tokens[_mark]->col_offset;
14970
1.24M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14971
1.24M
    { // NAME
14972
1.24M
        if (p->error_indicator) {
14973
0
            p->level--;
14974
0
            return NULL;
14975
0
        }
14976
1.24M
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
14977
1.24M
        expr_ty name_var;
14978
1.24M
        if (
14979
1.24M
            (name_var = _PyPegen_name_token(p))  // NAME
14980
1.24M
        )
14981
415k
        {
14982
415k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
14983
415k
            _res = name_var;
14984
415k
            goto done;
14985
415k
        }
14986
828k
        p->mark = _mark;
14987
828k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14988
828k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
14989
828k
    }
14990
0
    { // 'True'
14991
828k
        if (p->error_indicator) {
14992
1
            p->level--;
14993
1
            return NULL;
14994
1
        }
14995
828k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
14996
828k
        Token * _keyword;
14997
828k
        if (
14998
828k
            (_keyword = _PyPegen_expect_token(p, 527))  // token='True'
14999
828k
        )
15000
1.90k
        {
15001
1.90k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
15002
1.90k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15003
1.90k
            if (_token == NULL) {
15004
0
                p->level--;
15005
0
                return NULL;
15006
0
            }
15007
1.90k
            int _end_lineno = _token->end_lineno;
15008
1.90k
            UNUSED(_end_lineno); // Only used by EXTRA macro
15009
1.90k
            int _end_col_offset = _token->end_col_offset;
15010
1.90k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15011
1.90k
            _res = _PyAST_Constant ( Py_True , NULL , EXTRA );
15012
1.90k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
15013
0
                p->error_indicator = 1;
15014
0
                p->level--;
15015
0
                return NULL;
15016
0
            }
15017
1.90k
            goto done;
15018
1.90k
        }
15019
826k
        p->mark = _mark;
15020
826k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15021
826k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
15022
826k
    }
15023
0
    { // 'False'
15024
826k
        if (p->error_indicator) {
15025
0
            p->level--;
15026
0
            return NULL;
15027
0
        }
15028
826k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
15029
826k
        Token * _keyword;
15030
826k
        if (
15031
826k
            (_keyword = _PyPegen_expect_token(p, 528))  // token='False'
15032
826k
        )
15033
1.41k
        {
15034
1.41k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
15035
1.41k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15036
1.41k
            if (_token == NULL) {
15037
0
                p->level--;
15038
0
                return NULL;
15039
0
            }
15040
1.41k
            int _end_lineno = _token->end_lineno;
15041
1.41k
            UNUSED(_end_lineno); // Only used by EXTRA macro
15042
1.41k
            int _end_col_offset = _token->end_col_offset;
15043
1.41k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15044
1.41k
            _res = _PyAST_Constant ( Py_False , NULL , EXTRA );
15045
1.41k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
15046
0
                p->error_indicator = 1;
15047
0
                p->level--;
15048
0
                return NULL;
15049
0
            }
15050
1.41k
            goto done;
15051
1.41k
        }
15052
824k
        p->mark = _mark;
15053
824k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15054
824k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
15055
824k
    }
15056
0
    { // 'None'
15057
824k
        if (p->error_indicator) {
15058
0
            p->level--;
15059
0
            return NULL;
15060
0
        }
15061
824k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
15062
824k
        Token * _keyword;
15063
824k
        if (
15064
824k
            (_keyword = _PyPegen_expect_token(p, 526))  // token='None'
15065
824k
        )
15066
2.70k
        {
15067
2.70k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
15068
2.70k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15069
2.70k
            if (_token == NULL) {
15070
0
                p->level--;
15071
0
                return NULL;
15072
0
            }
15073
2.70k
            int _end_lineno = _token->end_lineno;
15074
2.70k
            UNUSED(_end_lineno); // Only used by EXTRA macro
15075
2.70k
            int _end_col_offset = _token->end_col_offset;
15076
2.70k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15077
2.70k
            _res = _PyAST_Constant ( Py_None , NULL , EXTRA );
15078
2.70k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
15079
0
                p->error_indicator = 1;
15080
0
                p->level--;
15081
0
                return NULL;
15082
0
            }
15083
2.70k
            goto done;
15084
2.70k
        }
15085
822k
        p->mark = _mark;
15086
822k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15087
822k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
15088
822k
    }
15089
0
    { // &(STRING | FSTRING_START | TSTRING_START) strings
15090
822k
        if (p->error_indicator) {
15091
0
            p->level--;
15092
0
            return NULL;
15093
0
        }
15094
822k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
15095
822k
        expr_ty strings_var;
15096
822k
        if (
15097
822k
            _PyPegen_lookahead(1, _tmp_42_rule, p)
15098
66.4k
            &&
15099
66.4k
            (strings_var = strings_rule(p))  // strings
15100
822k
        )
15101
56.8k
        {
15102
56.8k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
15103
56.8k
            _res = strings_var;
15104
56.8k
            goto done;
15105
56.8k
        }
15106
765k
        p->mark = _mark;
15107
765k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15108
765k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
15109
765k
    }
15110
0
    { // NUMBER
15111
765k
        if (p->error_indicator) {
15112
7.37k
            p->level--;
15113
7.37k
            return NULL;
15114
7.37k
        }
15115
757k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
15116
757k
        expr_ty number_var;
15117
757k
        if (
15118
757k
            (number_var = _PyPegen_number_token(p))  // NUMBER
15119
757k
        )
15120
178k
        {
15121
178k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
15122
178k
            _res = number_var;
15123
178k
            goto done;
15124
178k
        }
15125
579k
        p->mark = _mark;
15126
579k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15127
579k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
15128
579k
    }
15129
0
    { // &'(' (genexp | tuple | group)
15130
579k
        if (p->error_indicator) {
15131
0
            p->level--;
15132
0
            return NULL;
15133
0
        }
15134
579k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'(' (genexp | tuple | group)"));
15135
579k
        void *_tmp_66_var;
15136
579k
        if (
15137
579k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 7)  // token='('
15138
65.1k
            &&
15139
65.1k
            (_tmp_66_var = _tmp_66_rule(p))  // genexp | tuple | group
15140
579k
        )
15141
42.4k
        {
15142
42.4k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'(' (genexp | tuple | group)"));
15143
42.4k
            _res = _tmp_66_var;
15144
42.4k
            goto done;
15145
42.4k
        }
15146
537k
        p->mark = _mark;
15147
537k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15148
537k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'(' (genexp | tuple | group)"));
15149
537k
    }
15150
0
    { // &'[' (listcomp | list)
15151
537k
        if (p->error_indicator) {
15152
6.94k
            p->level--;
15153
6.94k
            return NULL;
15154
6.94k
        }
15155
530k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'[' (listcomp | list)"));
15156
530k
        void *_tmp_67_var;
15157
530k
        if (
15158
530k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 9)  // token='['
15159
44.0k
            &&
15160
44.0k
            (_tmp_67_var = _tmp_67_rule(p))  // listcomp | list
15161
530k
        )
15162
8.85k
        {
15163
8.85k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'[' (listcomp | list)"));
15164
8.85k
            _res = _tmp_67_var;
15165
8.85k
            goto done;
15166
8.85k
        }
15167
521k
        p->mark = _mark;
15168
521k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15169
521k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'[' (listcomp | list)"));
15170
521k
    }
15171
0
    { // &'{' (dictcomp | setcomp | dict | set)
15172
521k
        if (p->error_indicator) {
15173
16.1k
            p->level--;
15174
16.1k
            return NULL;
15175
16.1k
        }
15176
505k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'{' (dictcomp | setcomp | dict | set)"));
15177
505k
        void *_tmp_68_var;
15178
505k
        if (
15179
505k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 25)  // token='{'
15180
25.1k
            &&
15181
25.1k
            (_tmp_68_var = _tmp_68_rule(p))  // dictcomp | setcomp | dict | set
15182
505k
        )
15183
8.48k
        {
15184
8.48k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'{' (dictcomp | setcomp | dict | set)"));
15185
8.48k
            _res = _tmp_68_var;
15186
8.48k
            goto done;
15187
8.48k
        }
15188
496k
        p->mark = _mark;
15189
496k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15190
496k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'{' (dictcomp | setcomp | dict | set)"));
15191
496k
    }
15192
0
    { // '...'
15193
496k
        if (p->error_indicator) {
15194
6.64k
            p->level--;
15195
6.64k
            return NULL;
15196
6.64k
        }
15197
490k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
15198
490k
        Token * _literal;
15199
490k
        if (
15200
490k
            (_literal = _PyPegen_expect_token(p, 52))  // token='...'
15201
490k
        )
15202
946
        {
15203
946
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
15204
946
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15205
946
            if (_token == NULL) {
15206
0
                p->level--;
15207
0
                return NULL;
15208
0
            }
15209
946
            int _end_lineno = _token->end_lineno;
15210
946
            UNUSED(_end_lineno); // Only used by EXTRA macro
15211
946
            int _end_col_offset = _token->end_col_offset;
15212
946
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15213
946
            _res = _PyAST_Constant ( Py_Ellipsis , NULL , EXTRA );
15214
946
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
15215
0
                p->error_indicator = 1;
15216
0
                p->level--;
15217
0
                return NULL;
15218
0
            }
15219
946
            goto done;
15220
946
        }
15221
489k
        p->mark = _mark;
15222
489k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15223
489k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
15224
489k
    }
15225
489k
    _res = NULL;
15226
1.20M
  done:
15227
1.20M
    p->level--;
15228
1.20M
    return _res;
15229
489k
}
15230
15231
// group: '(' (yield_expr | named_expression) ')' | invalid_group
15232
static expr_ty
15233
group_rule(Parser *p)
15234
23.7k
{
15235
23.7k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
15236
0
        _Pypegen_stack_overflow(p);
15237
0
    }
15238
23.7k
    if (p->error_indicator) {
15239
0
        p->level--;
15240
0
        return NULL;
15241
0
    }
15242
23.7k
    expr_ty _res = NULL;
15243
23.7k
    int _mark = p->mark;
15244
23.7k
    { // '(' (yield_expr | named_expression) ')'
15245
23.7k
        if (p->error_indicator) {
15246
0
            p->level--;
15247
0
            return NULL;
15248
0
        }
15249
23.7k
        D(fprintf(stderr, "%*c> group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
15250
23.7k
        Token * _literal;
15251
23.7k
        Token * _literal_1;
15252
23.7k
        void *a;
15253
23.7k
        if (
15254
23.7k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
15255
23.7k
            &&
15256
23.7k
            (a = _tmp_69_rule(p))  // yield_expr | named_expression
15257
17.2k
            &&
15258
17.2k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
15259
23.7k
        )
15260
7.71k
        {
15261
7.71k
            D(fprintf(stderr, "%*c+ group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
15262
7.71k
            _res = a;
15263
7.71k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
15264
0
                p->error_indicator = 1;
15265
0
                p->level--;
15266
0
                return NULL;
15267
0
            }
15268
7.71k
            goto done;
15269
7.71k
        }
15270
16.0k
        p->mark = _mark;
15271
16.0k
        D(fprintf(stderr, "%*c%s group[%d-%d]: %s failed!\n", p->level, ' ',
15272
16.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
15273
16.0k
    }
15274
16.0k
    if (p->call_invalid_rules) { // invalid_group
15275
5.29k
        if (p->error_indicator) {
15276
238
            p->level--;
15277
238
            return NULL;
15278
238
        }
15279
5.05k
        D(fprintf(stderr, "%*c> group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_group"));
15280
5.05k
        void *invalid_group_var;
15281
5.05k
        if (
15282
5.05k
            (invalid_group_var = invalid_group_rule(p))  // invalid_group
15283
5.05k
        )
15284
0
        {
15285
0
            D(fprintf(stderr, "%*c+ group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_group"));
15286
0
            _res = invalid_group_var;
15287
0
            goto done;
15288
0
        }
15289
5.05k
        p->mark = _mark;
15290
5.05k
        D(fprintf(stderr, "%*c%s group[%d-%d]: %s failed!\n", p->level, ' ',
15291
5.05k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_group"));
15292
5.05k
    }
15293
15.7k
    _res = NULL;
15294
23.4k
  done:
15295
23.4k
    p->level--;
15296
23.4k
    return _res;
15297
15.7k
}
15298
15299
// lambdef: 'lambda' lambda_params? ':' expression
15300
Py_LOCAL_SYMBOL expr_ty
15301
lambdef_rule(Parser *p)
15302
519k
{
15303
519k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
15304
0
        _Pypegen_stack_overflow(p);
15305
0
    }
15306
519k
    if (p->error_indicator) {
15307
0
        p->level--;
15308
0
        return NULL;
15309
0
    }
15310
519k
    expr_ty _res = NULL;
15311
519k
    int _mark = p->mark;
15312
519k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15313
0
        p->error_indicator = 1;
15314
0
        p->level--;
15315
0
        return NULL;
15316
0
    }
15317
519k
    int _start_lineno = p->tokens[_mark]->lineno;
15318
519k
    UNUSED(_start_lineno); // Only used by EXTRA macro
15319
519k
    int _start_col_offset = p->tokens[_mark]->col_offset;
15320
519k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
15321
519k
    { // 'lambda' lambda_params? ':' expression
15322
519k
        if (p->error_indicator) {
15323
0
            p->level--;
15324
0
            return NULL;
15325
0
        }
15326
519k
        D(fprintf(stderr, "%*c> lambdef[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' expression"));
15327
519k
        Token * _keyword;
15328
519k
        Token * _literal;
15329
519k
        void *a;
15330
519k
        expr_ty b;
15331
519k
        if (
15332
519k
            (_keyword = _PyPegen_expect_token(p, 534))  // token='lambda'
15333
113k
            &&
15334
113k
            (a = lambda_params_rule(p), !p->error_indicator)  // lambda_params?
15335
112k
            &&
15336
112k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
15337
109k
            &&
15338
109k
            (b = expression_rule(p))  // expression
15339
519k
        )
15340
3.31k
        {
15341
3.31k
            D(fprintf(stderr, "%*c+ lambdef[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' expression"));
15342
3.31k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15343
3.31k
            if (_token == NULL) {
15344
0
                p->level--;
15345
0
                return NULL;
15346
0
            }
15347
3.31k
            int _end_lineno = _token->end_lineno;
15348
3.31k
            UNUSED(_end_lineno); // Only used by EXTRA macro
15349
3.31k
            int _end_col_offset = _token->end_col_offset;
15350
3.31k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15351
3.31k
            _res = _PyAST_Lambda ( ( a ) ? a : CHECK ( arguments_ty , _PyPegen_empty_arguments ( p ) ) , b , EXTRA );
15352
3.31k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
15353
0
                p->error_indicator = 1;
15354
0
                p->level--;
15355
0
                return NULL;
15356
0
            }
15357
3.31k
            goto done;
15358
3.31k
        }
15359
516k
        p->mark = _mark;
15360
516k
        D(fprintf(stderr, "%*c%s lambdef[%d-%d]: %s failed!\n", p->level, ' ',
15361
516k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'lambda' lambda_params? ':' expression"));
15362
516k
    }
15363
516k
    _res = NULL;
15364
519k
  done:
15365
519k
    p->level--;
15366
519k
    return _res;
15367
516k
}
15368
15369
// lambda_params: invalid_lambda_parameters | lambda_parameters
15370
Py_LOCAL_SYMBOL arguments_ty
15371
lambda_params_rule(Parser *p)
15372
224k
{
15373
224k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
15374
0
        _Pypegen_stack_overflow(p);
15375
0
    }
15376
224k
    if (p->error_indicator) {
15377
0
        p->level--;
15378
0
        return NULL;
15379
0
    }
15380
224k
    arguments_ty _res = NULL;
15381
224k
    int _mark = p->mark;
15382
224k
    if (p->call_invalid_rules) { // invalid_lambda_parameters
15383
166k
        if (p->error_indicator) {
15384
0
            p->level--;
15385
0
            return NULL;
15386
0
        }
15387
166k
        D(fprintf(stderr, "%*c> lambda_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_parameters"));
15388
166k
        void *invalid_lambda_parameters_var;
15389
166k
        if (
15390
166k
            (invalid_lambda_parameters_var = invalid_lambda_parameters_rule(p))  // invalid_lambda_parameters
15391
166k
        )
15392
0
        {
15393
0
            D(fprintf(stderr, "%*c+ lambda_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_lambda_parameters"));
15394
0
            _res = invalid_lambda_parameters_var;
15395
0
            goto done;
15396
0
        }
15397
166k
        p->mark = _mark;
15398
166k
        D(fprintf(stderr, "%*c%s lambda_params[%d-%d]: %s failed!\n", p->level, ' ',
15399
166k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_parameters"));
15400
166k
    }
15401
224k
    { // lambda_parameters
15402
224k
        if (p->error_indicator) {
15403
928
            p->level--;
15404
928
            return NULL;
15405
928
        }
15406
223k
        D(fprintf(stderr, "%*c> lambda_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_parameters"));
15407
223k
        arguments_ty lambda_parameters_var;
15408
223k
        if (
15409
223k
            (lambda_parameters_var = lambda_parameters_rule(p))  // lambda_parameters
15410
223k
        )
15411
217k
        {
15412
217k
            D(fprintf(stderr, "%*c+ lambda_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_parameters"));
15413
217k
            _res = lambda_parameters_var;
15414
217k
            goto done;
15415
217k
        }
15416
6.06k
        p->mark = _mark;
15417
6.06k
        D(fprintf(stderr, "%*c%s lambda_params[%d-%d]: %s failed!\n", p->level, ' ',
15418
6.06k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_parameters"));
15419
6.06k
    }
15420
6.06k
    _res = NULL;
15421
223k
  done:
15422
223k
    p->level--;
15423
223k
    return _res;
15424
6.06k
}
15425
15426
// lambda_parameters:
15427
//     | lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
15428
//     | lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
15429
//     | lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
15430
//     | lambda_param_with_default+ lambda_star_etc?
15431
//     | lambda_star_etc
15432
static arguments_ty
15433
lambda_parameters_rule(Parser *p)
15434
223k
{
15435
223k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
15436
0
        _Pypegen_stack_overflow(p);
15437
0
    }
15438
223k
    if (p->error_indicator) {
15439
0
        p->level--;
15440
0
        return NULL;
15441
0
    }
15442
223k
    arguments_ty _res = NULL;
15443
223k
    int _mark = p->mark;
15444
223k
    { // lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
15445
223k
        if (p->error_indicator) {
15446
0
            p->level--;
15447
0
            return NULL;
15448
0
        }
15449
223k
        D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?"));
15450
223k
        asdl_arg_seq* a;
15451
223k
        asdl_arg_seq* b;
15452
223k
        asdl_seq * c;
15453
223k
        void *d;
15454
223k
        if (
15455
223k
            (a = lambda_slash_no_default_rule(p))  // lambda_slash_no_default
15456
793
            &&
15457
793
            (b = (asdl_arg_seq*)_loop0_70_rule(p))  // lambda_param_no_default*
15458
793
            &&
15459
793
            (c = _loop0_71_rule(p))  // lambda_param_with_default*
15460
792
            &&
15461
792
            (d = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
15462
223k
        )
15463
655
        {
15464
655
            D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?"));
15465
655
            _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , a , NULL , b , c , d ) );
15466
655
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
15467
0
                p->error_indicator = 1;
15468
0
                p->level--;
15469
0
                return NULL;
15470
0
            }
15471
655
            goto done;
15472
655
        }
15473
223k
        p->mark = _mark;
15474
223k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15475
223k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?"));
15476
223k
    }
15477
0
    { // lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
15478
223k
        if (p->error_indicator) {
15479
155
            p->level--;
15480
155
            return NULL;
15481
155
        }
15482
223k
        D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default lambda_param_with_default* lambda_star_etc?"));
15483
223k
        SlashWithDefault* a;
15484
223k
        asdl_seq * b;
15485
223k
        void *c;
15486
223k
        if (
15487
223k
            (a = lambda_slash_with_default_rule(p))  // lambda_slash_with_default
15488
1.42k
            &&
15489
1.42k
            (b = _loop0_71_rule(p))  // lambda_param_with_default*
15490
1.42k
            &&
15491
1.42k
            (c = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
15492
223k
        )
15493
1.26k
        {
15494
1.26k
            D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default lambda_param_with_default* lambda_star_etc?"));
15495
1.26k
            _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , NULL , a , NULL , b , c ) );
15496
1.26k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
15497
0
                p->error_indicator = 1;
15498
0
                p->level--;
15499
0
                return NULL;
15500
0
            }
15501
1.26k
            goto done;
15502
1.26k
        }
15503
221k
        p->mark = _mark;
15504
221k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15505
221k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default lambda_param_with_default* lambda_star_etc?"));
15506
221k
    }
15507
0
    { // lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
15508
221k
        if (p->error_indicator) {
15509
436
            p->level--;
15510
436
            return NULL;
15511
436
        }
15512
221k
        D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?"));
15513
221k
        asdl_arg_seq* a;
15514
221k
        asdl_seq * b;
15515
221k
        void *c;
15516
221k
        if (
15517
221k
            (a = (asdl_arg_seq*)_loop1_72_rule(p))  // lambda_param_no_default+
15518
212k
            &&
15519
212k
            (b = _loop0_71_rule(p))  // lambda_param_with_default*
15520
212k
            &&
15521
212k
            (c = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
15522
221k
        )
15523
211k
        {
15524
211k
            D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?"));
15525
211k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
15526
211k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
15527
0
                p->error_indicator = 1;
15528
0
                p->level--;
15529
0
                return NULL;
15530
0
            }
15531
211k
            goto done;
15532
211k
        }
15533
9.44k
        p->mark = _mark;
15534
9.44k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15535
9.44k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?"));
15536
9.44k
    }
15537
0
    { // lambda_param_with_default+ lambda_star_etc?
15538
9.44k
        if (p->error_indicator) {
15539
104
            p->level--;
15540
104
            return NULL;
15541
104
        }
15542
9.34k
        D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
15543
9.34k
        asdl_seq * a;
15544
9.34k
        void *b;
15545
9.34k
        if (
15546
9.34k
            (a = _loop1_73_rule(p))  // lambda_param_with_default+
15547
1.54k
            &&
15548
1.54k
            (b = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
15549
9.34k
        )
15550
1.51k
        {
15551
1.51k
            D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
15552
1.51k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
15553
1.51k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
15554
0
                p->error_indicator = 1;
15555
0
                p->level--;
15556
0
                return NULL;
15557
0
            }
15558
1.51k
            goto done;
15559
1.51k
        }
15560
7.82k
        p->mark = _mark;
15561
7.82k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15562
7.82k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
15563
7.82k
    }
15564
0
    { // lambda_star_etc
15565
7.82k
        if (p->error_indicator) {
15566
29
            p->level--;
15567
29
            return NULL;
15568
29
        }
15569
7.79k
        D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_star_etc"));
15570
7.79k
        StarEtc* a;
15571
7.79k
        if (
15572
7.79k
            (a = lambda_star_etc_rule(p))  // lambda_star_etc
15573
7.79k
        )
15574
2.45k
        {
15575
2.45k
            D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_star_etc"));
15576
2.45k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
15577
2.45k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
15578
0
                p->error_indicator = 1;
15579
0
                p->level--;
15580
0
                return NULL;
15581
0
            }
15582
2.45k
            goto done;
15583
2.45k
        }
15584
5.34k
        p->mark = _mark;
15585
5.34k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15586
5.34k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_star_etc"));
15587
5.34k
    }
15588
5.34k
    _res = NULL;
15589
223k
  done:
15590
223k
    p->level--;
15591
223k
    return _res;
15592
5.34k
}
15593
15594
// lambda_slash_no_default:
15595
//     | lambda_param_no_default+ '/' ','
15596
//     | lambda_param_no_default+ '/' &':'
15597
Py_LOCAL_SYMBOL asdl_arg_seq*
15598
lambda_slash_no_default_rule(Parser *p)
15599
721k
{
15600
721k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
15601
0
        _Pypegen_stack_overflow(p);
15602
0
    }
15603
721k
    if (p->error_indicator) {
15604
0
        p->level--;
15605
0
        return NULL;
15606
0
    }
15607
721k
    asdl_arg_seq* _res = NULL;
15608
721k
    int _mark = p->mark;
15609
721k
    { // lambda_param_no_default+ '/' ','
15610
721k
        if (p->error_indicator) {
15611
0
            p->level--;
15612
0
            return NULL;
15613
0
        }
15614
721k
        D(fprintf(stderr, "%*c> lambda_slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' ','"));
15615
721k
        Token * _literal;
15616
721k
        Token * _literal_1;
15617
721k
        asdl_arg_seq* a;
15618
721k
        if (
15619
721k
            (a = (asdl_arg_seq*)_loop1_72_rule(p))  // lambda_param_no_default+
15620
691k
            &&
15621
691k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
15622
2.25k
            &&
15623
2.25k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
15624
721k
        )
15625
1.72k
        {
15626
1.72k
            D(fprintf(stderr, "%*c+ lambda_slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' ','"));
15627
1.72k
            _res = a;
15628
1.72k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
15629
0
                p->error_indicator = 1;
15630
0
                p->level--;
15631
0
                return NULL;
15632
0
            }
15633
1.72k
            goto done;
15634
1.72k
        }
15635
720k
        p->mark = _mark;
15636
720k
        D(fprintf(stderr, "%*c%s lambda_slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
15637
720k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ '/' ','"));
15638
720k
    }
15639
0
    { // lambda_param_no_default+ '/' &':'
15640
720k
        if (p->error_indicator) {
15641
19
            p->level--;
15642
19
            return NULL;
15643
19
        }
15644
720k
        D(fprintf(stderr, "%*c> lambda_slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
15645
720k
        Token * _literal;
15646
720k
        asdl_arg_seq* a;
15647
720k
        if (
15648
720k
            (a = (asdl_arg_seq*)_loop1_72_rule(p))  // lambda_param_no_default+
15649
689k
            &&
15650
689k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
15651
529
            &&
15652
529
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
15653
720k
        )
15654
467
        {
15655
467
            D(fprintf(stderr, "%*c+ lambda_slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
15656
467
            _res = a;
15657
467
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
15658
0
                p->error_indicator = 1;
15659
0
                p->level--;
15660
0
                return NULL;
15661
0
            }
15662
467
            goto done;
15663
467
        }
15664
719k
        p->mark = _mark;
15665
719k
        D(fprintf(stderr, "%*c%s lambda_slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
15666
719k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
15667
719k
    }
15668
719k
    _res = NULL;
15669
721k
  done:
15670
721k
    p->level--;
15671
721k
    return _res;
15672
719k
}
15673
15674
// lambda_slash_with_default:
15675
//     | lambda_param_no_default* lambda_param_with_default+ '/' ','
15676
//     | lambda_param_no_default* lambda_param_with_default+ '/' &':'
15677
Py_LOCAL_SYMBOL SlashWithDefault*
15678
lambda_slash_with_default_rule(Parser *p)
15679
720k
{
15680
720k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
15681
0
        _Pypegen_stack_overflow(p);
15682
0
    }
15683
720k
    if (p->error_indicator) {
15684
0
        p->level--;
15685
0
        return NULL;
15686
0
    }
15687
720k
    SlashWithDefault* _res = NULL;
15688
720k
    int _mark = p->mark;
15689
720k
    { // lambda_param_no_default* lambda_param_with_default+ '/' ','
15690
720k
        if (p->error_indicator) {
15691
0
            p->level--;
15692
0
            return NULL;
15693
0
        }
15694
720k
        D(fprintf(stderr, "%*c> lambda_slash_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' ','"));
15695
720k
        Token * _literal;
15696
720k
        Token * _literal_1;
15697
720k
        asdl_seq * a;
15698
720k
        asdl_seq * b;
15699
720k
        if (
15700
720k
            (a = _loop0_70_rule(p))  // lambda_param_no_default*
15701
720k
            &&
15702
720k
            (b = _loop1_73_rule(p))  // lambda_param_with_default+
15703
8.76k
            &&
15704
8.76k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
15705
4.07k
            &&
15706
4.07k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
15707
720k
        )
15708
2.03k
        {
15709
2.03k
            D(fprintf(stderr, "%*c+ lambda_slash_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' ','"));
15710
2.03k
            _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
15711
2.03k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
15712
0
                p->error_indicator = 1;
15713
0
                p->level--;
15714
0
                return NULL;
15715
0
            }
15716
2.03k
            goto done;
15717
2.03k
        }
15718
718k
        p->mark = _mark;
15719
718k
        D(fprintf(stderr, "%*c%s lambda_slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
15720
718k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' ','"));
15721
718k
    }
15722
0
    { // lambda_param_no_default* lambda_param_with_default+ '/' &':'
15723
718k
        if (p->error_indicator) {
15724
743
            p->level--;
15725
743
            return NULL;
15726
743
        }
15727
717k
        D(fprintf(stderr, "%*c> lambda_slash_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' &':'"));
15728
717k
        Token * _literal;
15729
717k
        asdl_seq * a;
15730
717k
        asdl_seq * b;
15731
717k
        if (
15732
717k
            (a = _loop0_70_rule(p))  // lambda_param_no_default*
15733
717k
            &&
15734
717k
            (b = _loop1_73_rule(p))  // lambda_param_with_default+
15735
6.73k
            &&
15736
6.73k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
15737
2.03k
            &&
15738
2.03k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
15739
717k
        )
15740
2.01k
        {
15741
2.01k
            D(fprintf(stderr, "%*c+ lambda_slash_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' &':'"));
15742
2.01k
            _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
15743
2.01k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
15744
0
                p->error_indicator = 1;
15745
0
                p->level--;
15746
0
                return NULL;
15747
0
            }
15748
2.01k
            goto done;
15749
2.01k
        }
15750
715k
        p->mark = _mark;
15751
715k
        D(fprintf(stderr, "%*c%s lambda_slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
15752
715k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' &':'"));
15753
715k
    }
15754
715k
    _res = NULL;
15755
719k
  done:
15756
719k
    p->level--;
15757
719k
    return _res;
15758
715k
}
15759
15760
// lambda_star_etc:
15761
//     | invalid_lambda_star_etc
15762
//     | '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
15763
//     | '*' ',' lambda_param_maybe_default+ lambda_kwds?
15764
//     | lambda_kwds
15765
static StarEtc*
15766
lambda_star_etc_rule(Parser *p)
15767
223k
{
15768
223k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
15769
0
        _Pypegen_stack_overflow(p);
15770
0
    }
15771
223k
    if (p->error_indicator) {
15772
288
        p->level--;
15773
288
        return NULL;
15774
288
    }
15775
223k
    StarEtc* _res = NULL;
15776
223k
    int _mark = p->mark;
15777
223k
    if (p->call_invalid_rules) { // invalid_lambda_star_etc
15778
165k
        if (p->error_indicator) {
15779
0
            p->level--;
15780
0
            return NULL;
15781
0
        }
15782
165k
        D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_star_etc"));
15783
165k
        void *invalid_lambda_star_etc_var;
15784
165k
        if (
15785
165k
            (invalid_lambda_star_etc_var = invalid_lambda_star_etc_rule(p))  // invalid_lambda_star_etc
15786
165k
        )
15787
0
        {
15788
0
            D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_lambda_star_etc"));
15789
0
            _res = invalid_lambda_star_etc_var;
15790
0
            goto done;
15791
0
        }
15792
165k
        p->mark = _mark;
15793
165k
        D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15794
165k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_star_etc"));
15795
165k
    }
15796
223k
    { // '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
15797
223k
        if (p->error_indicator) {
15798
19
            p->level--;
15799
19
            return NULL;
15800
19
        }
15801
223k
        D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?"));
15802
223k
        Token * _literal;
15803
223k
        arg_ty a;
15804
223k
        asdl_seq * b;
15805
223k
        void *c;
15806
223k
        if (
15807
223k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
15808
4.81k
            &&
15809
4.81k
            (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
15810
2.04k
            &&
15811
2.04k
            (b = _loop0_74_rule(p))  // lambda_param_maybe_default*
15812
2.04k
            &&
15813
2.04k
            (c = lambda_kwds_rule(p), !p->error_indicator)  // lambda_kwds?
15814
223k
        )
15815
1.83k
        {
15816
1.83k
            D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?"));
15817
1.83k
            _res = _PyPegen_star_etc ( p , a , b , c );
15818
1.83k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
15819
0
                p->error_indicator = 1;
15820
0
                p->level--;
15821
0
                return NULL;
15822
0
            }
15823
1.83k
            goto done;
15824
1.83k
        }
15825
221k
        p->mark = _mark;
15826
221k
        D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15827
221k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?"));
15828
221k
    }
15829
0
    { // '*' ',' lambda_param_maybe_default+ lambda_kwds?
15830
221k
        if (p->error_indicator) {
15831
220
            p->level--;
15832
220
            return NULL;
15833
220
        }
15834
221k
        D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
15835
221k
        Token * _literal;
15836
221k
        Token * _literal_1;
15837
221k
        asdl_seq * b;
15838
221k
        void *c;
15839
221k
        if (
15840
221k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
15841
2.75k
            &&
15842
2.75k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
15843
2.22k
            &&
15844
2.22k
            (b = _loop1_75_rule(p))  // lambda_param_maybe_default+
15845
348
            &&
15846
348
            (c = lambda_kwds_rule(p), !p->error_indicator)  // lambda_kwds?
15847
221k
        )
15848
347
        {
15849
347
            D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
15850
347
            _res = _PyPegen_star_etc ( p , NULL , b , c );
15851
347
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
15852
0
                p->error_indicator = 1;
15853
0
                p->level--;
15854
0
                return NULL;
15855
0
            }
15856
347
            goto done;
15857
347
        }
15858
220k
        p->mark = _mark;
15859
220k
        D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15860
220k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
15861
220k
    }
15862
0
    { // lambda_kwds
15863
220k
        if (p->error_indicator) {
15864
305
            p->level--;
15865
305
            return NULL;
15866
305
        }
15867
220k
        D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_kwds"));
15868
220k
        arg_ty a;
15869
220k
        if (
15870
220k
            (a = lambda_kwds_rule(p))  // lambda_kwds
15871
220k
        )
15872
547
        {
15873
547
            D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_kwds"));
15874
547
            _res = _PyPegen_star_etc ( p , NULL , NULL , a );
15875
547
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
15876
0
                p->error_indicator = 1;
15877
0
                p->level--;
15878
0
                return NULL;
15879
0
            }
15880
547
            goto done;
15881
547
        }
15882
220k
        p->mark = _mark;
15883
220k
        D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15884
220k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_kwds"));
15885
220k
    }
15886
220k
    _res = NULL;
15887
222k
  done:
15888
222k
    p->level--;
15889
222k
    return _res;
15890
220k
}
15891
15892
// lambda_kwds: invalid_lambda_kwds | '**' lambda_param_no_default
15893
static arg_ty
15894
lambda_kwds_rule(Parser *p)
15895
222k
{
15896
222k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
15897
0
        _Pypegen_stack_overflow(p);
15898
0
    }
15899
222k
    if (p->error_indicator) {
15900
212
        p->level--;
15901
212
        return NULL;
15902
212
    }
15903
222k
    arg_ty _res = NULL;
15904
222k
    int _mark = p->mark;
15905
222k
    if (p->call_invalid_rules) { // invalid_lambda_kwds
15906
165k
        if (p->error_indicator) {
15907
0
            p->level--;
15908
0
            return NULL;
15909
0
        }
15910
165k
        D(fprintf(stderr, "%*c> lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_kwds"));
15911
165k
        void *invalid_lambda_kwds_var;
15912
165k
        if (
15913
165k
            (invalid_lambda_kwds_var = invalid_lambda_kwds_rule(p))  // invalid_lambda_kwds
15914
165k
        )
15915
0
        {
15916
0
            D(fprintf(stderr, "%*c+ lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_lambda_kwds"));
15917
0
            _res = invalid_lambda_kwds_var;
15918
0
            goto done;
15919
0
        }
15920
165k
        p->mark = _mark;
15921
165k
        D(fprintf(stderr, "%*c%s lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
15922
165k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_kwds"));
15923
165k
    }
15924
222k
    { // '**' lambda_param_no_default
15925
222k
        if (p->error_indicator) {
15926
9
            p->level--;
15927
9
            return NULL;
15928
9
        }
15929
222k
        D(fprintf(stderr, "%*c> lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param_no_default"));
15930
222k
        Token * _literal;
15931
222k
        arg_ty a;
15932
222k
        if (
15933
222k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
15934
577
            &&
15935
577
            (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
15936
222k
        )
15937
549
        {
15938
549
            D(fprintf(stderr, "%*c+ lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' lambda_param_no_default"));
15939
549
            _res = a;
15940
549
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
15941
0
                p->error_indicator = 1;
15942
0
                p->level--;
15943
0
                return NULL;
15944
0
            }
15945
549
            goto done;
15946
549
        }
15947
222k
        p->mark = _mark;
15948
222k
        D(fprintf(stderr, "%*c%s lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
15949
222k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param_no_default"));
15950
222k
    }
15951
222k
    _res = NULL;
15952
222k
  done:
15953
222k
    p->level--;
15954
222k
    return _res;
15955
222k
}
15956
15957
// lambda_param_no_default: lambda_param ',' | lambda_param &':'
15958
Py_LOCAL_SYMBOL arg_ty
15959
lambda_param_no_default_rule(Parser *p)
15960
6.51M
{
15961
6.51M
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
15962
0
        _Pypegen_stack_overflow(p);
15963
0
    }
15964
6.51M
    if (p->error_indicator) {
15965
0
        p->level--;
15966
0
        return NULL;
15967
0
    }
15968
6.51M
    arg_ty _res = NULL;
15969
6.51M
    int _mark = p->mark;
15970
6.51M
    { // lambda_param ','
15971
6.51M
        if (p->error_indicator) {
15972
0
            p->level--;
15973
0
            return NULL;
15974
0
        }
15975
6.51M
        D(fprintf(stderr, "%*c> lambda_param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param ','"));
15976
6.51M
        Token * _literal;
15977
6.51M
        arg_ty a;
15978
6.51M
        if (
15979
6.51M
            (a = lambda_param_rule(p))  // lambda_param
15980
3.11M
            &&
15981
3.11M
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
15982
6.51M
        )
15983
109k
        {
15984
109k
            D(fprintf(stderr, "%*c+ lambda_param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param ','"));
15985
109k
            _res = a;
15986
109k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
15987
0
                p->error_indicator = 1;
15988
0
                p->level--;
15989
0
                return NULL;
15990
0
            }
15991
109k
            goto done;
15992
109k
        }
15993
6.40M
        p->mark = _mark;
15994
6.40M
        D(fprintf(stderr, "%*c%s lambda_param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
15995
6.40M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param ','"));
15996
6.40M
    }
15997
0
    { // lambda_param &':'
15998
6.40M
        if (p->error_indicator) {
15999
30
            p->level--;
16000
30
            return NULL;
16001
30
        }
16002
6.40M
        D(fprintf(stderr, "%*c> lambda_param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param &':'"));
16003
6.40M
        arg_ty a;
16004
6.40M
        if (
16005
6.40M
            (a = lambda_param_rule(p))  // lambda_param
16006
3.00M
            &&
16007
3.00M
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
16008
6.40M
        )
16009
2.96M
        {
16010
2.96M
            D(fprintf(stderr, "%*c+ lambda_param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param &':'"));
16011
2.96M
            _res = a;
16012
2.96M
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
16013
0
                p->error_indicator = 1;
16014
0
                p->level--;
16015
0
                return NULL;
16016
0
            }
16017
2.96M
            goto done;
16018
2.96M
        }
16019
3.44M
        p->mark = _mark;
16020
3.44M
        D(fprintf(stderr, "%*c%s lambda_param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
16021
3.44M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param &':'"));
16022
3.44M
    }
16023
3.44M
    _res = NULL;
16024
6.51M
  done:
16025
6.51M
    p->level--;
16026
6.51M
    return _res;
16027
3.44M
}
16028
16029
// lambda_param_with_default: lambda_param default ',' | lambda_param default &':'
16030
Py_LOCAL_SYMBOL NameDefaultPair*
16031
lambda_param_with_default_rule(Parser *p)
16032
1.85M
{
16033
1.85M
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
16034
0
        _Pypegen_stack_overflow(p);
16035
0
    }
16036
1.85M
    if (p->error_indicator) {
16037
0
        p->level--;
16038
0
        return NULL;
16039
0
    }
16040
1.85M
    NameDefaultPair* _res = NULL;
16041
1.85M
    int _mark = p->mark;
16042
1.85M
    { // lambda_param default ','
16043
1.85M
        if (p->error_indicator) {
16044
0
            p->level--;
16045
0
            return NULL;
16046
0
        }
16047
1.85M
        D(fprintf(stderr, "%*c> lambda_param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default ','"));
16048
1.85M
        Token * _literal;
16049
1.85M
        arg_ty a;
16050
1.85M
        expr_ty c;
16051
1.85M
        if (
16052
1.85M
            (a = lambda_param_rule(p))  // lambda_param
16053
33.0k
            &&
16054
33.0k
            (c = default_rule(p))  // default
16055
27.7k
            &&
16056
27.7k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
16057
1.85M
        )
16058
21.8k
        {
16059
21.8k
            D(fprintf(stderr, "%*c+ lambda_param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default ','"));
16060
21.8k
            _res = _PyPegen_name_default_pair ( p , a , c , NULL );
16061
21.8k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
16062
0
                p->error_indicator = 1;
16063
0
                p->level--;
16064
0
                return NULL;
16065
0
            }
16066
21.8k
            goto done;
16067
21.8k
        }
16068
1.83M
        p->mark = _mark;
16069
1.83M
        D(fprintf(stderr, "%*c%s lambda_param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
16070
1.83M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default ','"));
16071
1.83M
    }
16072
0
    { // lambda_param default &':'
16073
1.83M
        if (p->error_indicator) {
16074
1.03k
            p->level--;
16075
1.03k
            return NULL;
16076
1.03k
        }
16077
1.83M
        D(fprintf(stderr, "%*c> lambda_param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default &':'"));
16078
1.83M
        arg_ty a;
16079
1.83M
        expr_ty c;
16080
1.83M
        if (
16081
1.83M
            (a = lambda_param_rule(p))  // lambda_param
16082
10.2k
            &&
16083
10.2k
            (c = default_rule(p))  // default
16084
5.89k
            &&
16085
5.89k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
16086
1.83M
        )
16087
5.20k
        {
16088
5.20k
            D(fprintf(stderr, "%*c+ lambda_param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default &':'"));
16089
5.20k
            _res = _PyPegen_name_default_pair ( p , a , c , NULL );
16090
5.20k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
16091
0
                p->error_indicator = 1;
16092
0
                p->level--;
16093
0
                return NULL;
16094
0
            }
16095
5.20k
            goto done;
16096
5.20k
        }
16097
1.82M
        p->mark = _mark;
16098
1.82M
        D(fprintf(stderr, "%*c%s lambda_param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
16099
1.82M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default &':'"));
16100
1.82M
    }
16101
1.82M
    _res = NULL;
16102
1.85M
  done:
16103
1.85M
    p->level--;
16104
1.85M
    return _res;
16105
1.82M
}
16106
16107
// lambda_param_maybe_default: lambda_param default? ',' | lambda_param default? &':'
16108
Py_LOCAL_SYMBOL NameDefaultPair*
16109
lambda_param_maybe_default_rule(Parser *p)
16110
677k
{
16111
677k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
16112
0
        _Pypegen_stack_overflow(p);
16113
0
    }
16114
677k
    if (p->error_indicator) {
16115
0
        p->level--;
16116
0
        return NULL;
16117
0
    }
16118
677k
    NameDefaultPair* _res = NULL;
16119
677k
    int _mark = p->mark;
16120
677k
    { // lambda_param default? ','
16121
677k
        if (p->error_indicator) {
16122
0
            p->level--;
16123
0
            return NULL;
16124
0
        }
16125
677k
        D(fprintf(stderr, "%*c> lambda_param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default? ','"));
16126
677k
        Token * _literal;
16127
677k
        arg_ty a;
16128
677k
        void *c;
16129
677k
        if (
16130
677k
            (a = lambda_param_rule(p))  // lambda_param
16131
342k
            &&
16132
342k
            (c = default_rule(p), !p->error_indicator)  // default?
16133
341k
            &&
16134
341k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
16135
677k
        )
16136
17.8k
        {
16137
17.8k
            D(fprintf(stderr, "%*c+ lambda_param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default? ','"));
16138
17.8k
            _res = _PyPegen_name_default_pair ( p , a , c , NULL );
16139
17.8k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
16140
0
                p->error_indicator = 1;
16141
0
                p->level--;
16142
0
                return NULL;
16143
0
            }
16144
17.8k
            goto done;
16145
17.8k
        }
16146
659k
        p->mark = _mark;
16147
659k
        D(fprintf(stderr, "%*c%s lambda_param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
16148
659k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default? ','"));
16149
659k
    }
16150
0
    { // lambda_param default? &':'
16151
659k
        if (p->error_indicator) {
16152
940
            p->level--;
16153
940
            return NULL;
16154
940
        }
16155
658k
        D(fprintf(stderr, "%*c> lambda_param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default? &':'"));
16156
658k
        arg_ty a;
16157
658k
        void *c;
16158
658k
        if (
16159
658k
            (a = lambda_param_rule(p))  // lambda_param
16160
324k
            &&
16161
324k
            (c = default_rule(p), !p->error_indicator)  // default?
16162
324k
            &&
16163
324k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
16164
658k
        )
16165
317k
        {
16166
317k
            D(fprintf(stderr, "%*c+ lambda_param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default? &':'"));
16167
317k
            _res = _PyPegen_name_default_pair ( p , a , c , NULL );
16168
317k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
16169
0
                p->error_indicator = 1;
16170
0
                p->level--;
16171
0
                return NULL;
16172
0
            }
16173
317k
            goto done;
16174
317k
        }
16175
341k
        p->mark = _mark;
16176
341k
        D(fprintf(stderr, "%*c%s lambda_param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
16177
341k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default? &':'"));
16178
341k
    }
16179
341k
    _res = NULL;
16180
676k
  done:
16181
676k
    p->level--;
16182
676k
    return _res;
16183
341k
}
16184
16185
// lambda_param: NAME
16186
Py_LOCAL_SYMBOL arg_ty
16187
lambda_param_rule(Parser *p)
16188
17.9M
{
16189
17.9M
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
16190
0
        _Pypegen_stack_overflow(p);
16191
0
    }
16192
17.9M
    if (p->error_indicator) {
16193
0
        p->level--;
16194
0
        return NULL;
16195
0
    }
16196
17.9M
    arg_ty _res = NULL;
16197
17.9M
    int _mark = p->mark;
16198
17.9M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16199
57
        p->error_indicator = 1;
16200
57
        p->level--;
16201
57
        return NULL;
16202
57
    }
16203
17.9M
    int _start_lineno = p->tokens[_mark]->lineno;
16204
17.9M
    UNUSED(_start_lineno); // Only used by EXTRA macro
16205
17.9M
    int _start_col_offset = p->tokens[_mark]->col_offset;
16206
17.9M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16207
17.9M
    { // NAME
16208
17.9M
        if (p->error_indicator) {
16209
0
            p->level--;
16210
0
            return NULL;
16211
0
        }
16212
17.9M
        D(fprintf(stderr, "%*c> lambda_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
16213
17.9M
        expr_ty a;
16214
17.9M
        if (
16215
17.9M
            (a = _PyPegen_name_token(p))  // NAME
16216
17.9M
        )
16217
6.84M
        {
16218
6.84M
            D(fprintf(stderr, "%*c+ lambda_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
16219
6.84M
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16220
6.84M
            if (_token == NULL) {
16221
0
                p->level--;
16222
0
                return NULL;
16223
0
            }
16224
6.84M
            int _end_lineno = _token->end_lineno;
16225
6.84M
            UNUSED(_end_lineno); // Only used by EXTRA macro
16226
6.84M
            int _end_col_offset = _token->end_col_offset;
16227
6.84M
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16228
6.84M
            _res = _PyAST_arg ( a -> v . Name . id , NULL , NULL , EXTRA );
16229
6.84M
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
16230
0
                p->error_indicator = 1;
16231
0
                p->level--;
16232
0
                return NULL;
16233
0
            }
16234
6.84M
            goto done;
16235
6.84M
        }
16236
11.0M
        p->mark = _mark;
16237
11.0M
        D(fprintf(stderr, "%*c%s lambda_param[%d-%d]: %s failed!\n", p->level, ' ',
16238
11.0M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
16239
11.0M
    }
16240
11.0M
    _res = NULL;
16241
17.9M
  done:
16242
17.9M
    p->level--;
16243
17.9M
    return _res;
16244
11.0M
}
16245
16246
// fstring_middle: fstring_replacement_field | FSTRING_MIDDLE
16247
static expr_ty
16248
fstring_middle_rule(Parser *p)
16249
65.6k
{
16250
65.6k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
16251
2
        _Pypegen_stack_overflow(p);
16252
2
    }
16253
65.6k
    if (p->error_indicator) {
16254
2
        p->level--;
16255
2
        return NULL;
16256
2
    }
16257
65.6k
    expr_ty _res = NULL;
16258
65.6k
    int _mark = p->mark;
16259
65.6k
    { // fstring_replacement_field
16260
65.6k
        if (p->error_indicator) {
16261
0
            p->level--;
16262
0
            return NULL;
16263
0
        }
16264
65.6k
        D(fprintf(stderr, "%*c> fstring_middle[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field"));
16265
65.6k
        expr_ty fstring_replacement_field_var;
16266
65.6k
        if (
16267
65.6k
            (fstring_replacement_field_var = fstring_replacement_field_rule(p))  // fstring_replacement_field
16268
65.6k
        )
16269
17.6k
        {
16270
17.6k
            D(fprintf(stderr, "%*c+ fstring_middle[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field"));
16271
17.6k
            _res = fstring_replacement_field_var;
16272
17.6k
            goto done;
16273
17.6k
        }
16274
48.0k
        p->mark = _mark;
16275
48.0k
        D(fprintf(stderr, "%*c%s fstring_middle[%d-%d]: %s failed!\n", p->level, ' ',
16276
48.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_replacement_field"));
16277
48.0k
    }
16278
0
    { // FSTRING_MIDDLE
16279
48.0k
        if (p->error_indicator) {
16280
4.76k
            p->level--;
16281
4.76k
            return NULL;
16282
4.76k
        }
16283
43.3k
        D(fprintf(stderr, "%*c> fstring_middle[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE"));
16284
43.3k
        Token * t;
16285
43.3k
        if (
16286
43.3k
            (t = _PyPegen_expect_token(p, FSTRING_MIDDLE))  // token='FSTRING_MIDDLE'
16287
43.3k
        )
16288
25.4k
        {
16289
25.4k
            D(fprintf(stderr, "%*c+ fstring_middle[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE"));
16290
25.4k
            _res = _PyPegen_constant_from_token ( p , t );
16291
25.4k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
16292
0
                p->error_indicator = 1;
16293
0
                p->level--;
16294
0
                return NULL;
16295
0
            }
16296
25.4k
            goto done;
16297
25.4k
        }
16298
17.8k
        p->mark = _mark;
16299
17.8k
        D(fprintf(stderr, "%*c%s fstring_middle[%d-%d]: %s failed!\n", p->level, ' ',
16300
17.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_MIDDLE"));
16301
17.8k
    }
16302
17.8k
    _res = NULL;
16303
60.9k
  done:
16304
60.9k
    p->level--;
16305
60.9k
    return _res;
16306
17.8k
}
16307
16308
// fstring_replacement_field:
16309
//     | '{' annotated_rhs '='? fstring_conversion? fstring_full_format_spec? '}'
16310
//     | invalid_fstring_replacement_field
16311
static expr_ty
16312
fstring_replacement_field_rule(Parser *p)
16313
72.7k
{
16314
72.7k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
16315
1
        _Pypegen_stack_overflow(p);
16316
1
    }
16317
72.7k
    if (p->error_indicator) {
16318
1
        p->level--;
16319
1
        return NULL;
16320
1
    }
16321
72.7k
    expr_ty _res = NULL;
16322
72.7k
    int _mark = p->mark;
16323
72.7k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16324
108
        p->error_indicator = 1;
16325
108
        p->level--;
16326
108
        return NULL;
16327
108
    }
16328
72.6k
    int _start_lineno = p->tokens[_mark]->lineno;
16329
72.6k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16330
72.6k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16331
72.6k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16332
72.6k
    { // '{' annotated_rhs '='? fstring_conversion? fstring_full_format_spec? '}'
16333
72.6k
        if (p->error_indicator) {
16334
0
            p->level--;
16335
0
            return NULL;
16336
0
        }
16337
72.6k
        D(fprintf(stderr, "%*c> fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? fstring_full_format_spec? '}'"));
16338
72.6k
        Token * _literal;
16339
72.6k
        expr_ty a;
16340
72.6k
        void *conversion;
16341
72.6k
        void *debug_expr;
16342
72.6k
        void *format;
16343
72.6k
        Token * rbrace;
16344
72.6k
        if (
16345
72.6k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
16346
27.7k
            &&
16347
27.7k
            (a = annotated_rhs_rule(p))  // annotated_rhs
16348
22.1k
            &&
16349
22.1k
            (debug_expr = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
16350
22.1k
            &&
16351
22.1k
            (conversion = fstring_conversion_rule(p), !p->error_indicator)  // fstring_conversion?
16352
22.1k
            &&
16353
22.1k
            (format = fstring_full_format_spec_rule(p), !p->error_indicator)  // fstring_full_format_spec?
16354
21.6k
            &&
16355
21.6k
            (rbrace = _PyPegen_expect_token(p, 26))  // token='}'
16356
72.6k
        )
16357
20.8k
        {
16358
20.8k
            D(fprintf(stderr, "%*c+ fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? fstring_full_format_spec? '}'"));
16359
20.8k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16360
20.8k
            if (_token == NULL) {
16361
0
                p->level--;
16362
0
                return NULL;
16363
0
            }
16364
20.8k
            int _end_lineno = _token->end_lineno;
16365
20.8k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16366
20.8k
            int _end_col_offset = _token->end_col_offset;
16367
20.8k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16368
20.8k
            _res = _PyPegen_formatted_value ( p , a , debug_expr , conversion , format , rbrace , EXTRA );
16369
20.8k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
16370
0
                p->error_indicator = 1;
16371
0
                p->level--;
16372
0
                return NULL;
16373
0
            }
16374
20.8k
            goto done;
16375
20.8k
        }
16376
51.8k
        p->mark = _mark;
16377
51.8k
        D(fprintf(stderr, "%*c%s fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16378
51.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? fstring_full_format_spec? '}'"));
16379
51.8k
    }
16380
51.8k
    if (p->call_invalid_rules) { // invalid_fstring_replacement_field
16381
18.4k
        if (p->error_indicator) {
16382
3.94k
            p->level--;
16383
3.94k
            return NULL;
16384
3.94k
        }
16385
14.5k
        D(fprintf(stderr, "%*c> fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_fstring_replacement_field"));
16386
14.5k
        void *invalid_fstring_replacement_field_var;
16387
14.5k
        if (
16388
14.5k
            (invalid_fstring_replacement_field_var = invalid_fstring_replacement_field_rule(p))  // invalid_fstring_replacement_field
16389
14.5k
        )
16390
0
        {
16391
0
            D(fprintf(stderr, "%*c+ fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_fstring_replacement_field"));
16392
0
            _res = invalid_fstring_replacement_field_var;
16393
0
            goto done;
16394
0
        }
16395
14.5k
        p->mark = _mark;
16396
14.5k
        D(fprintf(stderr, "%*c%s fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16397
14.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_fstring_replacement_field"));
16398
14.5k
    }
16399
47.8k
    _res = NULL;
16400
68.7k
  done:
16401
68.7k
    p->level--;
16402
68.7k
    return _res;
16403
47.8k
}
16404
16405
// fstring_conversion: "!" NAME
16406
static ResultTokenWithMetadata*
16407
fstring_conversion_rule(Parser *p)
16408
32.0k
{
16409
32.0k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
16410
0
        _Pypegen_stack_overflow(p);
16411
0
    }
16412
32.0k
    if (p->error_indicator) {
16413
0
        p->level--;
16414
0
        return NULL;
16415
0
    }
16416
32.0k
    ResultTokenWithMetadata* _res = NULL;
16417
32.0k
    int _mark = p->mark;
16418
32.0k
    { // "!" NAME
16419
32.0k
        if (p->error_indicator) {
16420
0
            p->level--;
16421
0
            return NULL;
16422
0
        }
16423
32.0k
        D(fprintf(stderr, "%*c> fstring_conversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"!\" NAME"));
16424
32.0k
        expr_ty conv;
16425
32.0k
        Token * conv_token;
16426
32.0k
        if (
16427
32.0k
            (conv_token = _PyPegen_expect_token(p, 54))  // token='!'
16428
2.20k
            &&
16429
2.20k
            (conv = _PyPegen_name_token(p))  // NAME
16430
32.0k
        )
16431
2.17k
        {
16432
2.17k
            D(fprintf(stderr, "%*c+ fstring_conversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"!\" NAME"));
16433
2.17k
            _res = _PyPegen_check_fstring_conversion ( p , conv_token , conv );
16434
2.17k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
16435
61
                p->error_indicator = 1;
16436
61
                p->level--;
16437
61
                return NULL;
16438
61
            }
16439
2.11k
            goto done;
16440
2.17k
        }
16441
29.8k
        p->mark = _mark;
16442
29.8k
        D(fprintf(stderr, "%*c%s fstring_conversion[%d-%d]: %s failed!\n", p->level, ' ',
16443
29.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"!\" NAME"));
16444
29.8k
    }
16445
29.8k
    _res = NULL;
16446
31.9k
  done:
16447
31.9k
    p->level--;
16448
31.9k
    return _res;
16449
29.8k
}
16450
16451
// fstring_full_format_spec: ':' fstring_format_spec*
16452
static ResultTokenWithMetadata*
16453
fstring_full_format_spec_rule(Parser *p)
16454
22.1k
{
16455
22.1k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
16456
0
        _Pypegen_stack_overflow(p);
16457
0
    }
16458
22.1k
    if (p->error_indicator) {
16459
0
        p->level--;
16460
0
        return NULL;
16461
0
    }
16462
22.1k
    ResultTokenWithMetadata* _res = NULL;
16463
22.1k
    int _mark = p->mark;
16464
22.1k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16465
3
        p->error_indicator = 1;
16466
3
        p->level--;
16467
3
        return NULL;
16468
3
    }
16469
22.1k
    int _start_lineno = p->tokens[_mark]->lineno;
16470
22.1k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16471
22.1k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16472
22.1k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16473
22.1k
    { // ':' fstring_format_spec*
16474
22.1k
        if (p->error_indicator) {
16475
0
            p->level--;
16476
0
            return NULL;
16477
0
        }
16478
22.1k
        D(fprintf(stderr, "%*c> fstring_full_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' fstring_format_spec*"));
16479
22.1k
        Token * colon;
16480
22.1k
        asdl_seq * spec;
16481
22.1k
        if (
16482
22.1k
            (colon = _PyPegen_expect_token(p, 11))  // token=':'
16483
3.76k
            &&
16484
3.76k
            (spec = _loop0_76_rule(p))  // fstring_format_spec*
16485
22.1k
        )
16486
3.76k
        {
16487
3.76k
            D(fprintf(stderr, "%*c+ fstring_full_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' fstring_format_spec*"));
16488
3.76k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16489
3.76k
            if (_token == NULL) {
16490
0
                p->level--;
16491
0
                return NULL;
16492
0
            }
16493
3.76k
            int _end_lineno = _token->end_lineno;
16494
3.76k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16495
3.76k
            int _end_col_offset = _token->end_col_offset;
16496
3.76k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16497
3.76k
            _res = _PyPegen_setup_full_format_spec ( p , colon , ( asdl_expr_seq* ) spec , EXTRA );
16498
3.76k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
16499
456
                p->error_indicator = 1;
16500
456
                p->level--;
16501
456
                return NULL;
16502
456
            }
16503
3.30k
            goto done;
16504
3.76k
        }
16505
18.3k
        p->mark = _mark;
16506
18.3k
        D(fprintf(stderr, "%*c%s fstring_full_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16507
18.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' fstring_format_spec*"));
16508
18.3k
    }
16509
18.3k
    _res = NULL;
16510
21.6k
  done:
16511
21.6k
    p->level--;
16512
21.6k
    return _res;
16513
18.3k
}
16514
16515
// fstring_format_spec: FSTRING_MIDDLE | fstring_replacement_field
16516
Py_LOCAL_SYMBOL expr_ty
16517
fstring_format_spec_rule(Parser *p)
16518
12.5k
{
16519
12.5k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
16520
0
        _Pypegen_stack_overflow(p);
16521
0
    }
16522
12.5k
    if (p->error_indicator) {
16523
0
        p->level--;
16524
0
        return NULL;
16525
0
    }
16526
12.5k
    expr_ty _res = NULL;
16527
12.5k
    int _mark = p->mark;
16528
12.5k
    { // FSTRING_MIDDLE
16529
12.5k
        if (p->error_indicator) {
16530
0
            p->level--;
16531
0
            return NULL;
16532
0
        }
16533
12.5k
        D(fprintf(stderr, "%*c> fstring_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE"));
16534
12.5k
        Token * t;
16535
12.5k
        if (
16536
12.5k
            (t = _PyPegen_expect_token(p, FSTRING_MIDDLE))  // token='FSTRING_MIDDLE'
16537
12.5k
        )
16538
5.41k
        {
16539
5.41k
            D(fprintf(stderr, "%*c+ fstring_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE"));
16540
5.41k
            _res = _PyPegen_decoded_constant_from_token ( p , t );
16541
5.41k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
16542
3
                p->error_indicator = 1;
16543
3
                p->level--;
16544
3
                return NULL;
16545
3
            }
16546
5.41k
            goto done;
16547
5.41k
        }
16548
7.09k
        p->mark = _mark;
16549
7.09k
        D(fprintf(stderr, "%*c%s fstring_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16550
7.09k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_MIDDLE"));
16551
7.09k
    }
16552
0
    { // fstring_replacement_field
16553
7.09k
        if (p->error_indicator) {
16554
10
            p->level--;
16555
10
            return NULL;
16556
10
        }
16557
7.08k
        D(fprintf(stderr, "%*c> fstring_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field"));
16558
7.08k
        expr_ty fstring_replacement_field_var;
16559
7.08k
        if (
16560
7.08k
            (fstring_replacement_field_var = fstring_replacement_field_rule(p))  // fstring_replacement_field
16561
7.08k
        )
16562
3.21k
        {
16563
3.21k
            D(fprintf(stderr, "%*c+ fstring_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field"));
16564
3.21k
            _res = fstring_replacement_field_var;
16565
3.21k
            goto done;
16566
3.21k
        }
16567
3.86k
        p->mark = _mark;
16568
3.86k
        D(fprintf(stderr, "%*c%s fstring_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16569
3.86k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_replacement_field"));
16570
3.86k
    }
16571
3.86k
    _res = NULL;
16572
12.4k
  done:
16573
12.4k
    p->level--;
16574
12.4k
    return _res;
16575
3.86k
}
16576
16577
// fstring: FSTRING_START fstring_middle* FSTRING_END
16578
Py_LOCAL_SYMBOL expr_ty
16579
fstring_rule(Parser *p)
16580
186k
{
16581
186k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
16582
1
        _Pypegen_stack_overflow(p);
16583
1
    }
16584
186k
    if (p->error_indicator) {
16585
1
        p->level--;
16586
1
        return NULL;
16587
1
    }
16588
186k
    expr_ty _res = NULL;
16589
186k
    int _mark = p->mark;
16590
186k
    { // FSTRING_START fstring_middle* FSTRING_END
16591
186k
        if (p->error_indicator) {
16592
0
            p->level--;
16593
0
            return NULL;
16594
0
        }
16595
186k
        D(fprintf(stderr, "%*c> fstring[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_START fstring_middle* FSTRING_END"));
16596
186k
        Token * a;
16597
186k
        asdl_seq * b;
16598
186k
        Token * c;
16599
186k
        if (
16600
186k
            (a = _PyPegen_expect_token(p, FSTRING_START))  // token='FSTRING_START'
16601
22.6k
            &&
16602
22.6k
            (b = _loop0_77_rule(p))  // fstring_middle*
16603
22.6k
            &&
16604
22.6k
            (c = _PyPegen_expect_token(p, FSTRING_END))  // token='FSTRING_END'
16605
186k
        )
16606
16.3k
        {
16607
16.3k
            D(fprintf(stderr, "%*c+ fstring[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_START fstring_middle* FSTRING_END"));
16608
16.3k
            _res = _PyPegen_joined_str ( p , a , ( asdl_expr_seq* ) b , c );
16609
16.3k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
16610
5
                p->error_indicator = 1;
16611
5
                p->level--;
16612
5
                return NULL;
16613
5
            }
16614
16.3k
            goto done;
16615
16.3k
        }
16616
170k
        p->mark = _mark;
16617
170k
        D(fprintf(stderr, "%*c%s fstring[%d-%d]: %s failed!\n", p->level, ' ',
16618
170k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_START fstring_middle* FSTRING_END"));
16619
170k
    }
16620
170k
    _res = NULL;
16621
186k
  done:
16622
186k
    p->level--;
16623
186k
    return _res;
16624
170k
}
16625
16626
// tstring_format_spec_replacement_field:
16627
//     | '{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'
16628
//     | invalid_tstring_replacement_field
16629
static expr_ty
16630
tstring_format_spec_replacement_field_rule(Parser *p)
16631
4.09k
{
16632
4.09k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
16633
0
        _Pypegen_stack_overflow(p);
16634
0
    }
16635
4.09k
    if (p->error_indicator) {
16636
0
        p->level--;
16637
0
        return NULL;
16638
0
    }
16639
4.09k
    expr_ty _res = NULL;
16640
4.09k
    int _mark = p->mark;
16641
4.09k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16642
0
        p->error_indicator = 1;
16643
0
        p->level--;
16644
0
        return NULL;
16645
0
    }
16646
4.09k
    int _start_lineno = p->tokens[_mark]->lineno;
16647
4.09k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16648
4.09k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16649
4.09k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16650
4.09k
    { // '{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'
16651
4.09k
        if (p->error_indicator) {
16652
0
            p->level--;
16653
0
            return NULL;
16654
0
        }
16655
4.09k
        D(fprintf(stderr, "%*c> tstring_format_spec_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'"));
16656
4.09k
        Token * _literal;
16657
4.09k
        expr_ty a;
16658
4.09k
        void *conversion;
16659
4.09k
        void *debug_expr;
16660
4.09k
        void *format;
16661
4.09k
        Token * rbrace;
16662
4.09k
        if (
16663
4.09k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
16664
1.82k
            &&
16665
1.82k
            (a = annotated_rhs_rule(p))  // annotated_rhs
16666
1.28k
            &&
16667
1.28k
            (debug_expr = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
16668
1.28k
            &&
16669
1.28k
            (conversion = fstring_conversion_rule(p), !p->error_indicator)  // fstring_conversion?
16670
1.28k
            &&
16671
1.28k
            (format = tstring_full_format_spec_rule(p), !p->error_indicator)  // tstring_full_format_spec?
16672
1.07k
            &&
16673
1.07k
            (rbrace = _PyPegen_expect_token(p, 26))  // token='}'
16674
4.09k
        )
16675
883
        {
16676
883
            D(fprintf(stderr, "%*c+ tstring_format_spec_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'"));
16677
883
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16678
883
            if (_token == NULL) {
16679
0
                p->level--;
16680
0
                return NULL;
16681
0
            }
16682
883
            int _end_lineno = _token->end_lineno;
16683
883
            UNUSED(_end_lineno); // Only used by EXTRA macro
16684
883
            int _end_col_offset = _token->end_col_offset;
16685
883
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16686
883
            _res = _PyPegen_formatted_value ( p , a , debug_expr , conversion , format , rbrace , EXTRA );
16687
883
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
16688
0
                p->error_indicator = 1;
16689
0
                p->level--;
16690
0
                return NULL;
16691
0
            }
16692
883
            goto done;
16693
883
        }
16694
3.21k
        p->mark = _mark;
16695
3.21k
        D(fprintf(stderr, "%*c%s tstring_format_spec_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16696
3.21k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'"));
16697
3.21k
    }
16698
3.21k
    if (p->call_invalid_rules) { // invalid_tstring_replacement_field
16699
1.38k
        if (p->error_indicator) {
16700
412
            p->level--;
16701
412
            return NULL;
16702
412
        }
16703
972
        D(fprintf(stderr, "%*c> tstring_format_spec_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_tstring_replacement_field"));
16704
972
        void *invalid_tstring_replacement_field_var;
16705
972
        if (
16706
972
            (invalid_tstring_replacement_field_var = invalid_tstring_replacement_field_rule(p))  // invalid_tstring_replacement_field
16707
972
        )
16708
0
        {
16709
0
            D(fprintf(stderr, "%*c+ tstring_format_spec_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_tstring_replacement_field"));
16710
0
            _res = invalid_tstring_replacement_field_var;
16711
0
            goto done;
16712
0
        }
16713
972
        p->mark = _mark;
16714
972
        D(fprintf(stderr, "%*c%s tstring_format_spec_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16715
972
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_tstring_replacement_field"));
16716
972
    }
16717
2.80k
    _res = NULL;
16718
3.68k
  done:
16719
3.68k
    p->level--;
16720
3.68k
    return _res;
16721
2.80k
}
16722
16723
// tstring_format_spec: TSTRING_MIDDLE | tstring_format_spec_replacement_field
16724
static expr_ty
16725
tstring_format_spec_rule(Parser *p)
16726
7.13k
{
16727
7.13k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
16728
0
        _Pypegen_stack_overflow(p);
16729
0
    }
16730
7.13k
    if (p->error_indicator) {
16731
0
        p->level--;
16732
0
        return NULL;
16733
0
    }
16734
7.13k
    expr_ty _res = NULL;
16735
7.13k
    int _mark = p->mark;
16736
7.13k
    { // TSTRING_MIDDLE
16737
7.13k
        if (p->error_indicator) {
16738
0
            p->level--;
16739
0
            return NULL;
16740
0
        }
16741
7.13k
        D(fprintf(stderr, "%*c> tstring_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TSTRING_MIDDLE"));
16742
7.13k
        Token * t;
16743
7.13k
        if (
16744
7.13k
            (t = _PyPegen_expect_token(p, TSTRING_MIDDLE))  // token='TSTRING_MIDDLE'
16745
7.13k
        )
16746
3.02k
        {
16747
3.02k
            D(fprintf(stderr, "%*c+ tstring_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TSTRING_MIDDLE"));
16748
3.02k
            _res = _PyPegen_decoded_constant_from_token ( p , t );
16749
3.02k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
16750
1
                p->error_indicator = 1;
16751
1
                p->level--;
16752
1
                return NULL;
16753
1
            }
16754
3.02k
            goto done;
16755
3.02k
        }
16756
4.11k
        p->mark = _mark;
16757
4.11k
        D(fprintf(stderr, "%*c%s tstring_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16758
4.11k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TSTRING_MIDDLE"));
16759
4.11k
    }
16760
0
    { // tstring_format_spec_replacement_field
16761
4.11k
        if (p->error_indicator) {
16762
18
            p->level--;
16763
18
            return NULL;
16764
18
        }
16765
4.09k
        D(fprintf(stderr, "%*c> tstring_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring_format_spec_replacement_field"));
16766
4.09k
        expr_ty tstring_format_spec_replacement_field_var;
16767
4.09k
        if (
16768
4.09k
            (tstring_format_spec_replacement_field_var = tstring_format_spec_replacement_field_rule(p))  // tstring_format_spec_replacement_field
16769
4.09k
        )
16770
883
        {
16771
883
            D(fprintf(stderr, "%*c+ tstring_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tstring_format_spec_replacement_field"));
16772
883
            _res = tstring_format_spec_replacement_field_var;
16773
883
            goto done;
16774
883
        }
16775
3.21k
        p->mark = _mark;
16776
3.21k
        D(fprintf(stderr, "%*c%s tstring_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16777
3.21k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring_format_spec_replacement_field"));
16778
3.21k
    }
16779
3.21k
    _res = NULL;
16780
7.11k
  done:
16781
7.11k
    p->level--;
16782
7.11k
    return _res;
16783
3.21k
}
16784
16785
// tstring_full_format_spec: ':' tstring_format_spec*
16786
static ResultTokenWithMetadata*
16787
tstring_full_format_spec_rule(Parser *p)
16788
9.84k
{
16789
9.84k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
16790
0
        _Pypegen_stack_overflow(p);
16791
0
    }
16792
9.84k
    if (p->error_indicator) {
16793
0
        p->level--;
16794
0
        return NULL;
16795
0
    }
16796
9.84k
    ResultTokenWithMetadata* _res = NULL;
16797
9.84k
    int _mark = p->mark;
16798
9.84k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16799
1
        p->error_indicator = 1;
16800
1
        p->level--;
16801
1
        return NULL;
16802
1
    }
16803
9.84k
    int _start_lineno = p->tokens[_mark]->lineno;
16804
9.84k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16805
9.84k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16806
9.84k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16807
9.84k
    { // ':' tstring_format_spec*
16808
9.84k
        if (p->error_indicator) {
16809
0
            p->level--;
16810
0
            return NULL;
16811
0
        }
16812
9.84k
        D(fprintf(stderr, "%*c> tstring_full_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' tstring_format_spec*"));
16813
9.84k
        Token * colon;
16814
9.84k
        asdl_seq * spec;
16815
9.84k
        if (
16816
9.84k
            (colon = _PyPegen_expect_token(p, 11))  // token=':'
16817
3.23k
            &&
16818
3.23k
            (spec = _loop0_78_rule(p))  // tstring_format_spec*
16819
9.84k
        )
16820
3.23k
        {
16821
3.23k
            D(fprintf(stderr, "%*c+ tstring_full_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' tstring_format_spec*"));
16822
3.23k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16823
3.23k
            if (_token == NULL) {
16824
0
                p->level--;
16825
0
                return NULL;
16826
0
            }
16827
3.23k
            int _end_lineno = _token->end_lineno;
16828
3.23k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16829
3.23k
            int _end_col_offset = _token->end_col_offset;
16830
3.23k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16831
3.23k
            _res = _PyPegen_setup_full_format_spec ( p , colon , ( asdl_expr_seq* ) spec , EXTRA );
16832
3.23k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
16833
556
                p->error_indicator = 1;
16834
556
                p->level--;
16835
556
                return NULL;
16836
556
            }
16837
2.67k
            goto done;
16838
3.23k
        }
16839
6.60k
        p->mark = _mark;
16840
6.60k
        D(fprintf(stderr, "%*c%s tstring_full_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16841
6.60k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' tstring_format_spec*"));
16842
6.60k
    }
16843
6.60k
    _res = NULL;
16844
9.28k
  done:
16845
9.28k
    p->level--;
16846
9.28k
    return _res;
16847
6.60k
}
16848
16849
// tstring_replacement_field:
16850
//     | '{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'
16851
//     | invalid_tstring_replacement_field
16852
static expr_ty
16853
tstring_replacement_field_rule(Parser *p)
16854
23.3k
{
16855
23.3k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
16856
2
        _Pypegen_stack_overflow(p);
16857
2
    }
16858
23.3k
    if (p->error_indicator) {
16859
2
        p->level--;
16860
2
        return NULL;
16861
2
    }
16862
23.3k
    expr_ty _res = NULL;
16863
23.3k
    int _mark = p->mark;
16864
23.3k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16865
88
        p->error_indicator = 1;
16866
88
        p->level--;
16867
88
        return NULL;
16868
88
    }
16869
23.2k
    int _start_lineno = p->tokens[_mark]->lineno;
16870
23.2k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16871
23.2k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16872
23.2k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16873
23.2k
    { // '{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'
16874
23.2k
        if (p->error_indicator) {
16875
0
            p->level--;
16876
0
            return NULL;
16877
0
        }
16878
23.2k
        D(fprintf(stderr, "%*c> tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'"));
16879
23.2k
        Token * _literal;
16880
23.2k
        expr_ty a;
16881
23.2k
        void *conversion;
16882
23.2k
        void *debug_expr;
16883
23.2k
        void *format;
16884
23.2k
        Token * rbrace;
16885
23.2k
        if (
16886
23.2k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
16887
10.7k
            &&
16888
10.7k
            (a = annotated_rhs_rule(p))  // annotated_rhs
16889
8.59k
            &&
16890
8.59k
            (debug_expr = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
16891
8.59k
            &&
16892
8.59k
            (conversion = fstring_conversion_rule(p), !p->error_indicator)  // fstring_conversion?
16893
8.56k
            &&
16894
8.56k
            (format = tstring_full_format_spec_rule(p), !p->error_indicator)  // tstring_full_format_spec?
16895
8.20k
            &&
16896
8.20k
            (rbrace = _PyPegen_expect_token(p, 26))  // token='}'
16897
23.2k
        )
16898
7.57k
        {
16899
7.57k
            D(fprintf(stderr, "%*c+ tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'"));
16900
7.57k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16901
7.57k
            if (_token == NULL) {
16902
0
                p->level--;
16903
0
                return NULL;
16904
0
            }
16905
7.57k
            int _end_lineno = _token->end_lineno;
16906
7.57k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16907
7.57k
            int _end_col_offset = _token->end_col_offset;
16908
7.57k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16909
7.57k
            _res = _PyPegen_interpolation ( p , a , debug_expr , conversion , format , rbrace , EXTRA );
16910
7.57k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
16911
0
                p->error_indicator = 1;
16912
0
                p->level--;
16913
0
                return NULL;
16914
0
            }
16915
7.57k
            goto done;
16916
7.57k
        }
16917
15.6k
        p->mark = _mark;
16918
15.6k
        D(fprintf(stderr, "%*c%s tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16919
15.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'"));
16920
15.6k
    }
16921
15.6k
    if (p->call_invalid_rules) { // invalid_tstring_replacement_field
16922
5.58k
        if (p->error_indicator) {
16923
1.84k
            p->level--;
16924
1.84k
            return NULL;
16925
1.84k
        }
16926
3.74k
        D(fprintf(stderr, "%*c> tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_tstring_replacement_field"));
16927
3.74k
        void *invalid_tstring_replacement_field_var;
16928
3.74k
        if (
16929
3.74k
            (invalid_tstring_replacement_field_var = invalid_tstring_replacement_field_rule(p))  // invalid_tstring_replacement_field
16930
3.74k
        )
16931
0
        {
16932
0
            D(fprintf(stderr, "%*c+ tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_tstring_replacement_field"));
16933
0
            _res = invalid_tstring_replacement_field_var;
16934
0
            goto done;
16935
0
        }
16936
3.74k
        p->mark = _mark;
16937
3.74k
        D(fprintf(stderr, "%*c%s tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16938
3.74k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_tstring_replacement_field"));
16939
3.74k
    }
16940
13.8k
    _res = NULL;
16941
21.3k
  done:
16942
21.3k
    p->level--;
16943
21.3k
    return _res;
16944
13.8k
}
16945
16946
// tstring_middle: tstring_replacement_field | TSTRING_MIDDLE
16947
static expr_ty
16948
tstring_middle_rule(Parser *p)
16949
23.3k
{
16950
23.3k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
16951
1
        _Pypegen_stack_overflow(p);
16952
1
    }
16953
23.3k
    if (p->error_indicator) {
16954
1
        p->level--;
16955
1
        return NULL;
16956
1
    }
16957
23.3k
    expr_ty _res = NULL;
16958
23.3k
    int _mark = p->mark;
16959
23.3k
    { // tstring_replacement_field
16960
23.3k
        if (p->error_indicator) {
16961
0
            p->level--;
16962
0
            return NULL;
16963
0
        }
16964
23.3k
        D(fprintf(stderr, "%*c> tstring_middle[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring_replacement_field"));
16965
23.3k
        expr_ty tstring_replacement_field_var;
16966
23.3k
        if (
16967
23.3k
            (tstring_replacement_field_var = tstring_replacement_field_rule(p))  // tstring_replacement_field
16968
23.3k
        )
16969
7.57k
        {
16970
7.57k
            D(fprintf(stderr, "%*c+ tstring_middle[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tstring_replacement_field"));
16971
7.57k
            _res = tstring_replacement_field_var;
16972
7.57k
            goto done;
16973
7.57k
        }
16974
15.7k
        p->mark = _mark;
16975
15.7k
        D(fprintf(stderr, "%*c%s tstring_middle[%d-%d]: %s failed!\n", p->level, ' ',
16976
15.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring_replacement_field"));
16977
15.7k
    }
16978
0
    { // TSTRING_MIDDLE
16979
15.7k
        if (p->error_indicator) {
16980
2.38k
            p->level--;
16981
2.38k
            return NULL;
16982
2.38k
        }
16983
13.3k
        D(fprintf(stderr, "%*c> tstring_middle[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TSTRING_MIDDLE"));
16984
13.3k
        Token * t;
16985
13.3k
        if (
16986
13.3k
            (t = _PyPegen_expect_token(p, TSTRING_MIDDLE))  // token='TSTRING_MIDDLE'
16987
13.3k
        )
16988
8.99k
        {
16989
8.99k
            D(fprintf(stderr, "%*c+ tstring_middle[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TSTRING_MIDDLE"));
16990
8.99k
            _res = _PyPegen_constant_from_token ( p , t );
16991
8.99k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
16992
0
                p->error_indicator = 1;
16993
0
                p->level--;
16994
0
                return NULL;
16995
0
            }
16996
8.99k
            goto done;
16997
8.99k
        }
16998
4.38k
        p->mark = _mark;
16999
4.38k
        D(fprintf(stderr, "%*c%s tstring_middle[%d-%d]: %s failed!\n", p->level, ' ',
17000
4.38k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TSTRING_MIDDLE"));
17001
4.38k
    }
17002
4.38k
    _res = NULL;
17003
20.9k
  done:
17004
20.9k
    p->level--;
17005
20.9k
    return _res;
17006
4.38k
}
17007
17008
// tstring: TSTRING_START tstring_middle* TSTRING_END
17009
Py_LOCAL_SYMBOL expr_ty
17010
tstring_rule(Parser *p)
17011
93.1k
{
17012
93.1k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
17013
0
        _Pypegen_stack_overflow(p);
17014
0
    }
17015
93.1k
    if (p->error_indicator) {
17016
0
        p->level--;
17017
0
        return NULL;
17018
0
    }
17019
93.1k
    expr_ty _res = NULL;
17020
93.1k
    if (_PyPegen_is_memoized(p, tstring_type, &_res)) {
17021
21.4k
        p->level--;
17022
21.4k
        return _res;
17023
21.4k
    }
17024
71.6k
    int _mark = p->mark;
17025
71.6k
    { // TSTRING_START tstring_middle* TSTRING_END
17026
71.6k
        if (p->error_indicator) {
17027
0
            p->level--;
17028
0
            return NULL;
17029
0
        }
17030
71.6k
        D(fprintf(stderr, "%*c> tstring[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TSTRING_START tstring_middle* TSTRING_END"));
17031
71.6k
        Token * a;
17032
71.6k
        asdl_seq * b;
17033
71.6k
        Token * c;
17034
71.6k
        if (
17035
71.6k
            (a = _PyPegen_expect_token(p, TSTRING_START))  // token='TSTRING_START'
17036
6.76k
            &&
17037
6.76k
            (b = _loop0_79_rule(p))  // tstring_middle*
17038
6.76k
            &&
17039
6.76k
            (c = _PyPegen_expect_token(p, TSTRING_END))  // token='TSTRING_END'
17040
71.6k
        )
17041
3.44k
        {
17042
3.44k
            D(fprintf(stderr, "%*c+ tstring[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TSTRING_START tstring_middle* TSTRING_END"));
17043
3.44k
            _res = CHECK_VERSION ( expr_ty , 14 , "t-strings are" , _PyPegen_template_str ( p , a , ( asdl_expr_seq* ) b , c ) );
17044
3.44k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
17045
6
                p->error_indicator = 1;
17046
6
                p->level--;
17047
6
                return NULL;
17048
6
            }
17049
3.43k
            goto done;
17050
3.44k
        }
17051
68.2k
        p->mark = _mark;
17052
68.2k
        D(fprintf(stderr, "%*c%s tstring[%d-%d]: %s failed!\n", p->level, ' ',
17053
68.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TSTRING_START tstring_middle* TSTRING_END"));
17054
68.2k
    }
17055
68.2k
    _res = NULL;
17056
71.6k
  done:
17057
71.6k
    _PyPegen_insert_memo(p, _mark, tstring_type, _res);
17058
71.6k
    p->level--;
17059
71.6k
    return _res;
17060
68.2k
}
17061
17062
// string: STRING
17063
Py_LOCAL_SYMBOL expr_ty
17064
string_rule(Parser *p)
17065
165k
{
17066
165k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
17067
0
        _Pypegen_stack_overflow(p);
17068
0
    }
17069
165k
    if (p->error_indicator) {
17070
0
        p->level--;
17071
0
        return NULL;
17072
0
    }
17073
165k
    expr_ty _res = NULL;
17074
165k
    int _mark = p->mark;
17075
165k
    { // STRING
17076
165k
        if (p->error_indicator) {
17077
0
            p->level--;
17078
0
            return NULL;
17079
0
        }
17080
165k
        D(fprintf(stderr, "%*c> string[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING"));
17081
165k
        Token* s;
17082
165k
        if (
17083
165k
            (s = (Token*)_PyPegen_string_token(p))  // STRING
17084
165k
        )
17085
54.9k
        {
17086
54.9k
            D(fprintf(stderr, "%*c+ string[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING"));
17087
54.9k
            _res = _PyPegen_constant_from_string ( p , s );
17088
54.9k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
17089
120
                p->error_indicator = 1;
17090
120
                p->level--;
17091
120
                return NULL;
17092
120
            }
17093
54.7k
            goto done;
17094
54.9k
        }
17095
110k
        p->mark = _mark;
17096
110k
        D(fprintf(stderr, "%*c%s string[%d-%d]: %s failed!\n", p->level, ' ',
17097
110k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING"));
17098
110k
    }
17099
110k
    _res = NULL;
17100
165k
  done:
17101
165k
    p->level--;
17102
165k
    return _res;
17103
110k
}
17104
17105
// strings: invalid_string_tstring_concat | ((fstring | string))+ | tstring+
17106
static expr_ty
17107
strings_rule(Parser *p)
17108
115k
{
17109
115k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
17110
0
        _Pypegen_stack_overflow(p);
17111
0
    }
17112
115k
    if (p->error_indicator) {
17113
0
        p->level--;
17114
0
        return NULL;
17115
0
    }
17116
115k
    expr_ty _res = NULL;
17117
115k
    if (_PyPegen_is_memoized(p, strings_type, &_res)) {
17118
28.3k
        p->level--;
17119
28.3k
        return _res;
17120
28.3k
    }
17121
87.5k
    int _mark = p->mark;
17122
87.5k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17123
0
        p->error_indicator = 1;
17124
0
        p->level--;
17125
0
        return NULL;
17126
0
    }
17127
87.5k
    int _start_lineno = p->tokens[_mark]->lineno;
17128
87.5k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17129
87.5k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17130
87.5k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17131
87.5k
    if (p->call_invalid_rules) { // invalid_string_tstring_concat
17132
33.3k
        if (p->error_indicator) {
17133
0
            p->level--;
17134
0
            return NULL;
17135
0
        }
17136
33.3k
        D(fprintf(stderr, "%*c> strings[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_string_tstring_concat"));
17137
33.3k
        void *invalid_string_tstring_concat_var;
17138
33.3k
        if (
17139
33.3k
            (invalid_string_tstring_concat_var = invalid_string_tstring_concat_rule(p))  // invalid_string_tstring_concat
17140
33.3k
        )
17141
0
        {
17142
0
            D(fprintf(stderr, "%*c+ strings[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_string_tstring_concat"));
17143
0
            _res = invalid_string_tstring_concat_var;
17144
0
            goto done;
17145
0
        }
17146
33.3k
        p->mark = _mark;
17147
33.3k
        D(fprintf(stderr, "%*c%s strings[%d-%d]: %s failed!\n", p->level, ' ',
17148
33.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_string_tstring_concat"));
17149
33.3k
    }
17150
87.5k
    { // ((fstring | string))+
17151
87.5k
        if (p->error_indicator) {
17152
6.07k
            p->level--;
17153
6.07k
            return NULL;
17154
6.07k
        }
17155
81.5k
        D(fprintf(stderr, "%*c> strings[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((fstring | string))+"));
17156
81.5k
        asdl_expr_seq* a;
17157
81.5k
        if (
17158
81.5k
            (a = (asdl_expr_seq*)_loop1_80_rule(p))  // ((fstring | string))+
17159
81.5k
        )
17160
27.9k
        {
17161
27.9k
            D(fprintf(stderr, "%*c+ strings[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((fstring | string))+"));
17162
27.9k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17163
27.9k
            if (_token == NULL) {
17164
0
                p->level--;
17165
0
                return NULL;
17166
0
            }
17167
27.9k
            int _end_lineno = _token->end_lineno;
17168
27.9k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17169
27.9k
            int _end_col_offset = _token->end_col_offset;
17170
27.9k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17171
27.9k
            _res = _PyPegen_concatenate_strings ( p , a , EXTRA );
17172
27.9k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
17173
4
                p->error_indicator = 1;
17174
4
                p->level--;
17175
4
                return NULL;
17176
4
            }
17177
27.9k
            goto done;
17178
27.9k
        }
17179
53.5k
        p->mark = _mark;
17180
53.5k
        D(fprintf(stderr, "%*c%s strings[%d-%d]: %s failed!\n", p->level, ' ',
17181
53.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((fstring | string))+"));
17182
53.5k
    }
17183
0
    { // tstring+
17184
53.5k
        if (p->error_indicator) {
17185
945
            p->level--;
17186
945
            return NULL;
17187
945
        }
17188
52.5k
        D(fprintf(stderr, "%*c> strings[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring+"));
17189
52.5k
        asdl_expr_seq* a;
17190
52.5k
        if (
17191
52.5k
            (a = (asdl_expr_seq*)_loop1_81_rule(p))  // tstring+
17192
52.5k
        )
17193
1.68k
        {
17194
1.68k
            D(fprintf(stderr, "%*c+ strings[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tstring+"));
17195
1.68k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17196
1.68k
            if (_token == NULL) {
17197
0
                p->level--;
17198
0
                return NULL;
17199
0
            }
17200
1.68k
            int _end_lineno = _token->end_lineno;
17201
1.68k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17202
1.68k
            int _end_col_offset = _token->end_col_offset;
17203
1.68k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17204
1.68k
            _res = _PyPegen_concatenate_tstrings ( p , a , EXTRA );
17205
1.68k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
17206
0
                p->error_indicator = 1;
17207
0
                p->level--;
17208
0
                return NULL;
17209
0
            }
17210
1.68k
            goto done;
17211
1.68k
        }
17212
50.9k
        p->mark = _mark;
17213
50.9k
        D(fprintf(stderr, "%*c%s strings[%d-%d]: %s failed!\n", p->level, ' ',
17214
50.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring+"));
17215
50.9k
    }
17216
50.9k
    _res = NULL;
17217
80.5k
  done:
17218
80.5k
    _PyPegen_insert_memo(p, _mark, strings_type, _res);
17219
80.5k
    p->level--;
17220
80.5k
    return _res;
17221
50.9k
}
17222
17223
// display_items: ','.display_item+ ','?
17224
static asdl_expr_seq*
17225
display_items_rule(Parser *p)
17226
57.5k
{
17227
57.5k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
17228
0
        _Pypegen_stack_overflow(p);
17229
0
    }
17230
57.5k
    if (p->error_indicator) {
17231
0
        p->level--;
17232
0
        return NULL;
17233
0
    }
17234
57.5k
    asdl_expr_seq* _res = NULL;
17235
57.5k
    int _mark = p->mark;
17236
57.5k
    { // ','.display_item+ ','?
17237
57.5k
        if (p->error_indicator) {
17238
0
            p->level--;
17239
0
            return NULL;
17240
0
        }
17241
57.5k
        D(fprintf(stderr, "%*c> display_items[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.display_item+ ','?"));
17242
57.5k
        void *_opt_var;
17243
57.5k
        UNUSED(_opt_var); // Silence compiler warnings
17244
57.5k
        asdl_expr_seq* a;
17245
57.5k
        if (
17246
57.5k
            (a = (asdl_expr_seq*)_gather_83_rule(p))  // ','.display_item+
17247
26.8k
            &&
17248
26.8k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
17249
57.5k
        )
17250
26.5k
        {
17251
26.5k
            D(fprintf(stderr, "%*c+ display_items[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.display_item+ ','?"));
17252
26.5k
            _res = a;
17253
26.5k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
17254
0
                p->error_indicator = 1;
17255
0
                p->level--;
17256
0
                return NULL;
17257
0
            }
17258
26.5k
            goto done;
17259
26.5k
        }
17260
31.0k
        p->mark = _mark;
17261
31.0k
        D(fprintf(stderr, "%*c%s display_items[%d-%d]: %s failed!\n", p->level, ' ',
17262
31.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.display_item+ ','?"));
17263
31.0k
    }
17264
31.0k
    _res = NULL;
17265
57.5k
  done:
17266
57.5k
    p->level--;
17267
57.5k
    return _res;
17268
31.0k
}
17269
17270
// display_item: invalid_starred_expression_unpacking_sequence | star_named_expression
17271
static expr_ty
17272
display_item_rule(Parser *p)
17273
150k
{
17274
150k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
17275
0
        _Pypegen_stack_overflow(p);
17276
0
    }
17277
150k
    if (p->error_indicator) {
17278
0
        p->level--;
17279
0
        return NULL;
17280
0
    }
17281
150k
    expr_ty _res = NULL;
17282
150k
    int _mark = p->mark;
17283
150k
    if (p->call_invalid_rules) { // invalid_starred_expression_unpacking_sequence
17284
66.7k
        if (p->error_indicator) {
17285
0
            p->level--;
17286
0
            return NULL;
17287
0
        }
17288
66.7k
        D(fprintf(stderr, "%*c> display_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_starred_expression_unpacking_sequence"));
17289
66.7k
        void *invalid_starred_expression_unpacking_sequence_var;
17290
66.7k
        if (
17291
66.7k
            (invalid_starred_expression_unpacking_sequence_var = invalid_starred_expression_unpacking_sequence_rule(p))  // invalid_starred_expression_unpacking_sequence
17292
66.7k
        )
17293
0
        {
17294
0
            D(fprintf(stderr, "%*c+ display_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_starred_expression_unpacking_sequence"));
17295
0
            _res = invalid_starred_expression_unpacking_sequence_var;
17296
0
            goto done;
17297
0
        }
17298
66.7k
        p->mark = _mark;
17299
66.7k
        D(fprintf(stderr, "%*c%s display_item[%d-%d]: %s failed!\n", p->level, ' ',
17300
66.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_starred_expression_unpacking_sequence"));
17301
66.7k
    }
17302
150k
    { // star_named_expression
17303
150k
        if (p->error_indicator) {
17304
334
            p->level--;
17305
334
            return NULL;
17306
334
        }
17307
150k
        D(fprintf(stderr, "%*c> display_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression"));
17308
150k
        expr_ty star_named_expression_var;
17309
150k
        if (
17310
150k
            (star_named_expression_var = star_named_expression_rule(p))  // star_named_expression
17311
150k
        )
17312
80.0k
        {
17313
80.0k
            D(fprintf(stderr, "%*c+ display_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression"));
17314
80.0k
            _res = star_named_expression_var;
17315
80.0k
            goto done;
17316
80.0k
        }
17317
70.2k
        p->mark = _mark;
17318
70.2k
        D(fprintf(stderr, "%*c%s display_item[%d-%d]: %s failed!\n", p->level, ' ',
17319
70.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression"));
17320
70.2k
    }
17321
70.2k
    _res = NULL;
17322
150k
  done:
17323
150k
    p->level--;
17324
150k
    return _res;
17325
70.2k
}
17326
17327
// list: '[' display_items? ']'
17328
Py_LOCAL_SYMBOL expr_ty
17329
list_rule(Parser *p)
17330
280k
{
17331
280k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
17332
0
        _Pypegen_stack_overflow(p);
17333
0
    }
17334
280k
    if (p->error_indicator) {
17335
0
        p->level--;
17336
0
        return NULL;
17337
0
    }
17338
280k
    expr_ty _res = NULL;
17339
280k
    int _mark = p->mark;
17340
280k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17341
0
        p->error_indicator = 1;
17342
0
        p->level--;
17343
0
        return NULL;
17344
0
    }
17345
280k
    int _start_lineno = p->tokens[_mark]->lineno;
17346
280k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17347
280k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17348
280k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17349
280k
    { // '[' display_items? ']'
17350
280k
        if (p->error_indicator) {
17351
0
            p->level--;
17352
0
            return NULL;
17353
0
        }
17354
280k
        D(fprintf(stderr, "%*c> list[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' display_items? ']'"));
17355
280k
        Token * _literal;
17356
280k
        Token * _literal_1;
17357
280k
        void *a;
17358
280k
        if (
17359
280k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
17360
34.1k
            &&
17361
34.1k
            (a = display_items_rule(p), !p->error_indicator)  // display_items?
17362
33.5k
            &&
17363
33.5k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
17364
280k
        )
17365
9.31k
        {
17366
9.31k
            D(fprintf(stderr, "%*c+ list[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' display_items? ']'"));
17367
9.31k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17368
9.31k
            if (_token == NULL) {
17369
0
                p->level--;
17370
0
                return NULL;
17371
0
            }
17372
9.31k
            int _end_lineno = _token->end_lineno;
17373
9.31k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17374
9.31k
            int _end_col_offset = _token->end_col_offset;
17375
9.31k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17376
9.31k
            _res = _PyAST_List ( a , Load , EXTRA );
17377
9.31k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
17378
0
                p->error_indicator = 1;
17379
0
                p->level--;
17380
0
                return NULL;
17381
0
            }
17382
9.31k
            goto done;
17383
9.31k
        }
17384
270k
        p->mark = _mark;
17385
270k
        D(fprintf(stderr, "%*c%s list[%d-%d]: %s failed!\n", p->level, ' ',
17386
270k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' display_items? ']'"));
17387
270k
    }
17388
270k
    _res = NULL;
17389
280k
  done:
17390
280k
    p->level--;
17391
280k
    return _res;
17392
270k
}
17393
17394
// tuple: '(' [display_item ',' display_items?] ')'
17395
Py_LOCAL_SYMBOL expr_ty
17396
tuple_rule(Parser *p)
17397
308k
{
17398
308k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
17399
0
        _Pypegen_stack_overflow(p);
17400
0
    }
17401
308k
    if (p->error_indicator) {
17402
0
        p->level--;
17403
0
        return NULL;
17404
0
    }
17405
308k
    expr_ty _res = NULL;
17406
308k
    int _mark = p->mark;
17407
308k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17408
0
        p->error_indicator = 1;
17409
0
        p->level--;
17410
0
        return NULL;
17411
0
    }
17412
308k
    int _start_lineno = p->tokens[_mark]->lineno;
17413
308k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17414
308k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17415
308k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17416
308k
    { // '(' [display_item ',' display_items?] ')'
17417
308k
        if (p->error_indicator) {
17418
0
            p->level--;
17419
0
            return NULL;
17420
0
        }
17421
308k
        D(fprintf(stderr, "%*c> tuple[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' [display_item ',' display_items?] ')'"));
17422
308k
        Token * _literal;
17423
308k
        Token * _literal_1;
17424
308k
        void *a;
17425
308k
        if (
17426
308k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
17427
66.6k
            &&
17428
66.6k
            (a = _tmp_84_rule(p), !p->error_indicator)  // [display_item ',' display_items?]
17429
65.4k
            &&
17430
65.4k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
17431
308k
        )
17432
37.2k
        {
17433
37.2k
            D(fprintf(stderr, "%*c+ tuple[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' [display_item ',' display_items?] ')'"));
17434
37.2k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17435
37.2k
            if (_token == NULL) {
17436
0
                p->level--;
17437
0
                return NULL;
17438
0
            }
17439
37.2k
            int _end_lineno = _token->end_lineno;
17440
37.2k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17441
37.2k
            int _end_col_offset = _token->end_col_offset;
17442
37.2k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17443
37.2k
            _res = _PyAST_Tuple ( a , Load , EXTRA );
17444
37.2k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
17445
0
                p->error_indicator = 1;
17446
0
                p->level--;
17447
0
                return NULL;
17448
0
            }
17449
37.2k
            goto done;
17450
37.2k
        }
17451
271k
        p->mark = _mark;
17452
271k
        D(fprintf(stderr, "%*c%s tuple[%d-%d]: %s failed!\n", p->level, ' ',
17453
271k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' [display_item ',' display_items?] ')'"));
17454
271k
    }
17455
271k
    _res = NULL;
17456
308k
  done:
17457
308k
    p->level--;
17458
308k
    return _res;
17459
271k
}
17460
17461
// set: '{' display_items '}'
17462
static expr_ty
17463
set_rule(Parser *p)
17464
12.5k
{
17465
12.5k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
17466
0
        _Pypegen_stack_overflow(p);
17467
0
    }
17468
12.5k
    if (p->error_indicator) {
17469
0
        p->level--;
17470
0
        return NULL;
17471
0
    }
17472
12.5k
    expr_ty _res = NULL;
17473
12.5k
    int _mark = p->mark;
17474
12.5k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17475
0
        p->error_indicator = 1;
17476
0
        p->level--;
17477
0
        return NULL;
17478
0
    }
17479
12.5k
    int _start_lineno = p->tokens[_mark]->lineno;
17480
12.5k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17481
12.5k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17482
12.5k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17483
12.5k
    { // '{' display_items '}'
17484
12.5k
        if (p->error_indicator) {
17485
0
            p->level--;
17486
0
            return NULL;
17487
0
        }
17488
12.5k
        D(fprintf(stderr, "%*c> set[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' display_items '}'"));
17489
12.5k
        Token * _literal;
17490
12.5k
        Token * _literal_1;
17491
12.5k
        asdl_expr_seq* a;
17492
12.5k
        if (
17493
12.5k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
17494
12.5k
            &&
17495
12.5k
            (a = display_items_rule(p))  // display_items
17496
7.84k
            &&
17497
7.84k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
17498
12.5k
        )
17499
2.40k
        {
17500
2.40k
            D(fprintf(stderr, "%*c+ set[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' display_items '}'"));
17501
2.40k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17502
2.40k
            if (_token == NULL) {
17503
0
                p->level--;
17504
0
                return NULL;
17505
0
            }
17506
2.40k
            int _end_lineno = _token->end_lineno;
17507
2.40k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17508
2.40k
            int _end_col_offset = _token->end_col_offset;
17509
2.40k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17510
2.40k
            _res = _PyAST_Set ( a , EXTRA );
17511
2.40k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
17512
0
                p->error_indicator = 1;
17513
0
                p->level--;
17514
0
                return NULL;
17515
0
            }
17516
2.40k
            goto done;
17517
2.40k
        }
17518
10.1k
        p->mark = _mark;
17519
10.1k
        D(fprintf(stderr, "%*c%s set[%d-%d]: %s failed!\n", p->level, ' ',
17520
10.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' display_items '}'"));
17521
10.1k
    }
17522
10.1k
    _res = NULL;
17523
12.5k
  done:
17524
12.5k
    p->level--;
17525
12.5k
    return _res;
17526
10.1k
}
17527
17528
// dict: '{' double_starred_kvpairs? '}' | '{' invalid_double_starred_kvpairs '}'
17529
static expr_ty
17530
dict_rule(Parser *p)
17531
18.7k
{
17532
18.7k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
17533
0
        _Pypegen_stack_overflow(p);
17534
0
    }
17535
18.7k
    if (p->error_indicator) {
17536
0
        p->level--;
17537
0
        return NULL;
17538
0
    }
17539
18.7k
    expr_ty _res = NULL;
17540
18.7k
    int _mark = p->mark;
17541
18.7k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17542
0
        p->error_indicator = 1;
17543
0
        p->level--;
17544
0
        return NULL;
17545
0
    }
17546
18.7k
    int _start_lineno = p->tokens[_mark]->lineno;
17547
18.7k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17548
18.7k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17549
18.7k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17550
18.7k
    { // '{' double_starred_kvpairs? '}'
17551
18.7k
        if (p->error_indicator) {
17552
0
            p->level--;
17553
0
            return NULL;
17554
0
        }
17555
18.7k
        D(fprintf(stderr, "%*c> dict[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
17556
18.7k
        Token * _literal;
17557
18.7k
        Token * _literal_1;
17558
18.7k
        void *a;
17559
18.7k
        if (
17560
18.7k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
17561
18.7k
            &&
17562
18.7k
            (a = double_starred_kvpairs_rule(p), !p->error_indicator)  // double_starred_kvpairs?
17563
17.6k
            &&
17564
17.6k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
17565
18.7k
        )
17566
4.03k
        {
17567
4.03k
            D(fprintf(stderr, "%*c+ dict[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
17568
4.03k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17569
4.03k
            if (_token == NULL) {
17570
0
                p->level--;
17571
0
                return NULL;
17572
0
            }
17573
4.03k
            int _end_lineno = _token->end_lineno;
17574
4.03k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17575
4.03k
            int _end_col_offset = _token->end_col_offset;
17576
4.03k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17577
4.03k
            _res = _PyAST_Dict ( CHECK ( asdl_expr_seq* , _PyPegen_get_keys ( p , a ) ) , CHECK ( asdl_expr_seq* , _PyPegen_get_values ( p , a ) ) , EXTRA );
17578
4.03k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
17579
0
                p->error_indicator = 1;
17580
0
                p->level--;
17581
0
                return NULL;
17582
0
            }
17583
4.03k
            goto done;
17584
4.03k
        }
17585
14.7k
        p->mark = _mark;
17586
14.7k
        D(fprintf(stderr, "%*c%s dict[%d-%d]: %s failed!\n", p->level, ' ',
17587
14.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
17588
14.7k
    }
17589
0
    { // '{' invalid_double_starred_kvpairs '}'
17590
14.7k
        if (p->error_indicator) {
17591
1.15k
            p->level--;
17592
1.15k
            return NULL;
17593
1.15k
        }
17594
13.5k
        D(fprintf(stderr, "%*c> dict[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
17595
13.5k
        Token * _literal;
17596
13.5k
        Token * _literal_1;
17597
13.5k
        void *invalid_double_starred_kvpairs_var;
17598
13.5k
        if (
17599
13.5k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
17600
13.5k
            &&
17601
13.5k
            (invalid_double_starred_kvpairs_var = invalid_double_starred_kvpairs_rule(p))  // invalid_double_starred_kvpairs
17602
0
            &&
17603
0
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
17604
13.5k
        )
17605
0
        {
17606
0
            D(fprintf(stderr, "%*c+ dict[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
17607
0
            _res = _PyPegen_dummy_name(p, _literal, invalid_double_starred_kvpairs_var, _literal_1);
17608
0
            goto done;
17609
0
        }
17610
13.5k
        p->mark = _mark;
17611
13.5k
        D(fprintf(stderr, "%*c%s dict[%d-%d]: %s failed!\n", p->level, ' ',
17612
13.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
17613
13.5k
    }
17614
13.5k
    _res = NULL;
17615
17.6k
  done:
17616
17.6k
    p->level--;
17617
17.6k
    return _res;
17618
13.5k
}
17619
17620
// double_starred_kvpairs: ','.double_starred_kvpair+ ','?
17621
static asdl_seq*
17622
double_starred_kvpairs_rule(Parser *p)
17623
18.7k
{
17624
18.7k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
17625
0
        _Pypegen_stack_overflow(p);
17626
0
    }
17627
18.7k
    if (p->error_indicator) {
17628
0
        p->level--;
17629
0
        return NULL;
17630
0
    }
17631
18.7k
    asdl_seq* _res = NULL;
17632
18.7k
    int _mark = p->mark;
17633
18.7k
    { // ','.double_starred_kvpair+ ','?
17634
18.7k
        if (p->error_indicator) {
17635
0
            p->level--;
17636
0
            return NULL;
17637
0
        }
17638
18.7k
        D(fprintf(stderr, "%*c> double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ','?"));
17639
18.7k
        void *_opt_var;
17640
18.7k
        UNUSED(_opt_var); // Silence compiler warnings
17641
18.7k
        asdl_seq * a;
17642
18.7k
        if (
17643
18.7k
            (a = _gather_86_rule(p))  // ','.double_starred_kvpair+
17644
5.74k
            &&
17645
5.74k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
17646
18.7k
        )
17647
4.58k
        {
17648
4.58k
            D(fprintf(stderr, "%*c+ double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ','?"));
17649
4.58k
            _res = a;
17650
4.58k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
17651
0
                p->error_indicator = 1;
17652
0
                p->level--;
17653
0
                return NULL;
17654
0
            }
17655
4.58k
            goto done;
17656
4.58k
        }
17657
14.1k
        p->mark = _mark;
17658
14.1k
        D(fprintf(stderr, "%*c%s double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
17659
14.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.double_starred_kvpair+ ','?"));
17660
14.1k
    }
17661
14.1k
    _res = NULL;
17662
18.7k
  done:
17663
18.7k
    p->level--;
17664
18.7k
    return _res;
17665
14.1k
}
17666
17667
// double_starred_kvpair: '**' bitwise_or | kvpair
17668
Py_LOCAL_SYMBOL KeyValuePair*
17669
double_starred_kvpair_rule(Parser *p)
17670
54.0k
{
17671
54.0k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
17672
0
        _Pypegen_stack_overflow(p);
17673
0
    }
17674
54.0k
    if (p->error_indicator) {
17675
0
        p->level--;
17676
0
        return NULL;
17677
0
    }
17678
54.0k
    KeyValuePair* _res = NULL;
17679
54.0k
    int _mark = p->mark;
17680
54.0k
    { // '**' bitwise_or
17681
54.0k
        if (p->error_indicator) {
17682
0
            p->level--;
17683
0
            return NULL;
17684
0
        }
17685
54.0k
        D(fprintf(stderr, "%*c> double_starred_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' bitwise_or"));
17686
54.0k
        Token * _literal;
17687
54.0k
        expr_ty a;
17688
54.0k
        if (
17689
54.0k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
17690
5.17k
            &&
17691
5.17k
            (a = bitwise_or_rule(p))  // bitwise_or
17692
54.0k
        )
17693
3.23k
        {
17694
3.23k
            D(fprintf(stderr, "%*c+ double_starred_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' bitwise_or"));
17695
3.23k
            _res = _PyPegen_key_value_pair ( p , NULL , a );
17696
3.23k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
17697
0
                p->error_indicator = 1;
17698
0
                p->level--;
17699
0
                return NULL;
17700
0
            }
17701
3.23k
            goto done;
17702
3.23k
        }
17703
50.8k
        p->mark = _mark;
17704
50.8k
        D(fprintf(stderr, "%*c%s double_starred_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
17705
50.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' bitwise_or"));
17706
50.8k
    }
17707
0
    { // kvpair
17708
50.8k
        if (p->error_indicator) {
17709
205
            p->level--;
17710
205
            return NULL;
17711
205
        }
17712
50.6k
        D(fprintf(stderr, "%*c> double_starred_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kvpair"));
17713
50.6k
        KeyValuePair* kvpair_var;
17714
50.6k
        if (
17715
50.6k
            (kvpair_var = kvpair_rule(p))  // kvpair
17716
50.6k
        )
17717
22.4k
        {
17718
22.4k
            D(fprintf(stderr, "%*c+ double_starred_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kvpair"));
17719
22.4k
            _res = kvpair_var;
17720
22.4k
            goto done;
17721
22.4k
        }
17722
28.1k
        p->mark = _mark;
17723
28.1k
        D(fprintf(stderr, "%*c%s double_starred_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
17724
28.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kvpair"));
17725
28.1k
    }
17726
28.1k
    _res = NULL;
17727
53.8k
  done:
17728
53.8k
    p->level--;
17729
53.8k
    return _res;
17730
28.1k
}
17731
17732
// kvpair: expression ':' expression
17733
static KeyValuePair*
17734
kvpair_rule(Parser *p)
17735
75.7k
{
17736
75.7k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
17737
1
        _Pypegen_stack_overflow(p);
17738
1
    }
17739
75.7k
    if (p->error_indicator) {
17740
1
        p->level--;
17741
1
        return NULL;
17742
1
    }
17743
75.7k
    KeyValuePair* _res = NULL;
17744
75.7k
    int _mark = p->mark;
17745
75.7k
    { // expression ':' expression
17746
75.7k
        if (p->error_indicator) {
17747
0
            p->level--;
17748
0
            return NULL;
17749
0
        }
17750
75.7k
        D(fprintf(stderr, "%*c> kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
17751
75.7k
        Token * _literal;
17752
75.7k
        expr_ty a;
17753
75.7k
        expr_ty b;
17754
75.7k
        if (
17755
75.7k
            (a = expression_rule(p))  // expression
17756
49.7k
            &&
17757
49.7k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
17758
32.5k
            &&
17759
32.5k
            (b = expression_rule(p))  // expression
17760
75.7k
        )
17761
27.8k
        {
17762
27.8k
            D(fprintf(stderr, "%*c+ kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
17763
27.8k
            _res = _PyPegen_key_value_pair ( p , a , b );
17764
27.8k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
17765
0
                p->error_indicator = 1;
17766
0
                p->level--;
17767
0
                return NULL;
17768
0
            }
17769
27.8k
            goto done;
17770
27.8k
        }
17771
47.9k
        p->mark = _mark;
17772
47.9k
        D(fprintf(stderr, "%*c%s kvpair[%d-%d]: %s failed!\n", p->level, ' ',
17773
47.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' expression"));
17774
47.9k
    }
17775
47.9k
    _res = NULL;
17776
75.7k
  done:
17777
75.7k
    p->level--;
17778
75.7k
    return _res;
17779
47.9k
}
17780
17781
// for_if_clauses: for_if_clause+
17782
Py_LOCAL_SYMBOL asdl_comprehension_seq*
17783
for_if_clauses_rule(Parser *p)
17784
107k
{
17785
107k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
17786
0
        _Pypegen_stack_overflow(p);
17787
0
    }
17788
107k
    if (p->error_indicator) {
17789
0
        p->level--;
17790
0
        return NULL;
17791
0
    }
17792
107k
    asdl_comprehension_seq* _res = NULL;
17793
107k
    int _mark = p->mark;
17794
107k
    { // for_if_clause+
17795
107k
        if (p->error_indicator) {
17796
0
            p->level--;
17797
0
            return NULL;
17798
0
        }
17799
107k
        D(fprintf(stderr, "%*c> for_if_clauses[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause+"));
17800
107k
        asdl_comprehension_seq* a;
17801
107k
        if (
17802
107k
            (a = (asdl_comprehension_seq*)_loop1_87_rule(p))  // for_if_clause+
17803
107k
        )
17804
7.10k
        {
17805
7.10k
            D(fprintf(stderr, "%*c+ for_if_clauses[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "for_if_clause+"));
17806
7.10k
            _res = a;
17807
7.10k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
17808
0
                p->error_indicator = 1;
17809
0
                p->level--;
17810
0
                return NULL;
17811
0
            }
17812
7.10k
            goto done;
17813
7.10k
        }
17814
99.9k
        p->mark = _mark;
17815
99.9k
        D(fprintf(stderr, "%*c%s for_if_clauses[%d-%d]: %s failed!\n", p->level, ' ',
17816
99.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause+"));
17817
99.9k
    }
17818
99.9k
    _res = NULL;
17819
107k
  done:
17820
107k
    p->level--;
17821
107k
    return _res;
17822
99.9k
}
17823
17824
// for_if_clause:
17825
//     | 'async' 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
17826
//     | 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
17827
//     | invalid_for_if_clause
17828
//     | invalid_for_target
17829
static comprehension_ty
17830
for_if_clause_rule(Parser *p)
17831
114k
{
17832
114k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
17833
0
        _Pypegen_stack_overflow(p);
17834
0
    }
17835
114k
    if (p->error_indicator) {
17836
0
        p->level--;
17837
0
        return NULL;
17838
0
    }
17839
114k
    comprehension_ty _res = NULL;
17840
114k
    int _mark = p->mark;
17841
114k
    { // 'async' 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
17842
114k
        if (p->error_indicator) {
17843
0
            p->level--;
17844
0
            return NULL;
17845
0
        }
17846
114k
        D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async' 'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
17847
114k
        int _cut_var = 0;
17848
114k
        Token * _keyword;
17849
114k
        Token * _keyword_1;
17850
114k
        Token * _keyword_2;
17851
114k
        expr_ty a;
17852
114k
        expr_ty b;
17853
114k
        asdl_expr_seq* c;
17854
114k
        if (
17855
114k
            (_keyword = _PyPegen_expect_token(p, 513))  // token='async'
17856
1.61k
            &&
17857
1.61k
            (_keyword_1 = _PyPegen_expect_token(p, 517))  // token='for'
17858
1.58k
            &&
17859
1.58k
            (a = star_targets_rule(p))  // star_targets
17860
765
            &&
17861
765
            (_keyword_2 = _PyPegen_expect_token(p, 523))  // token='in'
17862
673
            &&
17863
673
            (_cut_var = 1)
17864
673
            &&
17865
673
            (b = disjunction_rule(p))  // disjunction
17866
502
            &&
17867
502
            (c = (asdl_expr_seq*)_loop0_88_rule(p))  // (('if' disjunction))*
17868
114k
        )
17869
502
        {
17870
502
            D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async' 'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
17871
502
            _res = CHECK_VERSION ( comprehension_ty , 6 , "Async comprehensions are" , _PyAST_comprehension ( a , b , c , 1 , p -> arena ) );
17872
502
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
17873
100
                p->error_indicator = 1;
17874
100
                p->level--;
17875
100
                return NULL;
17876
100
            }
17877
402
            goto done;
17878
502
        }
17879
114k
        p->mark = _mark;
17880
114k
        D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
17881
114k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
17882
114k
        if (_cut_var) {
17883
171
            p->level--;
17884
171
            return NULL;
17885
171
        }
17886
114k
    }
17887
114k
    { // 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
17888
114k
        if (p->error_indicator) {
17889
288
            p->level--;
17890
288
            return NULL;
17891
288
        }
17892
113k
        D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
17893
113k
        int _cut_var = 0;
17894
113k
        Token * _keyword;
17895
113k
        Token * _keyword_1;
17896
113k
        expr_ty a;
17897
113k
        expr_ty b;
17898
113k
        asdl_expr_seq* c;
17899
113k
        if (
17900
113k
            (_keyword = _PyPegen_expect_token(p, 517))  // token='for'
17901
11.1k
            &&
17902
11.1k
            (a = star_targets_rule(p))  // star_targets
17903
8.45k
            &&
17904
8.45k
            (_keyword_1 = _PyPegen_expect_token(p, 523))  // token='in'
17905
7.73k
            &&
17906
7.73k
            (_cut_var = 1)
17907
7.73k
            &&
17908
7.73k
            (b = disjunction_rule(p))  // disjunction
17909
7.40k
            &&
17910
7.40k
            (c = (asdl_expr_seq*)_loop0_88_rule(p))  // (('if' disjunction))*
17911
113k
        )
17912
7.40k
        {
17913
7.40k
            D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
17914
7.40k
            _res = _PyAST_comprehension ( a , b , c , 0 , p -> arena );
17915
7.40k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
17916
109
                p->error_indicator = 1;
17917
109
                p->level--;
17918
109
                return NULL;
17919
109
            }
17920
7.29k
            goto done;
17921
7.40k
        }
17922
106k
        p->mark = _mark;
17923
106k
        D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
17924
106k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
17925
106k
        if (_cut_var) {
17926
332
            p->level--;
17927
332
            return NULL;
17928
332
        }
17929
106k
    }
17930
106k
    if (p->call_invalid_rules) { // invalid_for_if_clause
17931
56.0k
        if (p->error_indicator) {
17932
691
            p->level--;
17933
691
            return NULL;
17934
691
        }
17935
55.3k
        D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_if_clause"));
17936
55.3k
        void *invalid_for_if_clause_var;
17937
55.3k
        if (
17938
55.3k
            (invalid_for_if_clause_var = invalid_for_if_clause_rule(p))  // invalid_for_if_clause
17939
55.3k
        )
17940
0
        {
17941
0
            D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_if_clause"));
17942
0
            _res = invalid_for_if_clause_var;
17943
0
            goto done;
17944
0
        }
17945
55.3k
        p->mark = _mark;
17946
55.3k
        D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
17947
55.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_if_clause"));
17948
55.3k
    }
17949
105k
    if (p->call_invalid_rules) { // invalid_for_target
17950
55.3k
        if (p->error_indicator) {
17951
590
            p->level--;
17952
590
            return NULL;
17953
590
        }
17954
54.7k
        D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
17955
54.7k
        void *invalid_for_target_var;
17956
54.7k
        if (
17957
54.7k
            (invalid_for_target_var = invalid_for_target_rule(p))  // invalid_for_target
17958
54.7k
        )
17959
0
        {
17960
0
            D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
17961
0
            _res = invalid_for_target_var;
17962
0
            goto done;
17963
0
        }
17964
54.7k
        p->mark = _mark;
17965
54.7k
        D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
17966
54.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_target"));
17967
54.7k
    }
17968
104k
    _res = NULL;
17969
112k
  done:
17970
112k
    p->level--;
17971
112k
    return _res;
17972
104k
}
17973
17974
// listcomp: '[' star_named_expression for_if_clauses ']' | invalid_comprehension
17975
static expr_ty
17976
listcomp_rule(Parser *p)
17977
44.0k
{
17978
44.0k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
17979
1
        _Pypegen_stack_overflow(p);
17980
1
    }
17981
44.0k
    if (p->error_indicator) {
17982
1
        p->level--;
17983
1
        return NULL;
17984
1
    }
17985
44.0k
    expr_ty _res = NULL;
17986
44.0k
    int _mark = p->mark;
17987
44.0k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17988
0
        p->error_indicator = 1;
17989
0
        p->level--;
17990
0
        return NULL;
17991
0
    }
17992
44.0k
    int _start_lineno = p->tokens[_mark]->lineno;
17993
44.0k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17994
44.0k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17995
44.0k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17996
44.0k
    { // '[' star_named_expression for_if_clauses ']'
17997
44.0k
        if (p->error_indicator) {
17998
0
            p->level--;
17999
0
            return NULL;
18000
0
        }
18001
44.0k
        D(fprintf(stderr, "%*c> listcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' star_named_expression for_if_clauses ']'"));
18002
44.0k
        Token * _literal;
18003
44.0k
        Token * _literal_1;
18004
44.0k
        expr_ty a;
18005
44.0k
        asdl_comprehension_seq* b;
18006
44.0k
        if (
18007
44.0k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
18008
44.0k
            &&
18009
44.0k
            (a = star_named_expression_rule(p))  // star_named_expression
18010
13.7k
            &&
18011
13.7k
            (b = for_if_clauses_rule(p))  // for_if_clauses
18012
1.14k
            &&
18013
1.14k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
18014
44.0k
        )
18015
918
        {
18016
918
            D(fprintf(stderr, "%*c+ listcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' star_named_expression for_if_clauses ']'"));
18017
918
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18018
918
            if (_token == NULL) {
18019
0
                p->level--;
18020
0
                return NULL;
18021
0
            }
18022
918
            int _end_lineno = _token->end_lineno;
18023
918
            UNUSED(_end_lineno); // Only used by EXTRA macro
18024
918
            int _end_col_offset = _token->end_col_offset;
18025
918
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18026
918
            _res = _PyAST_ListComp ( a , b , EXTRA );
18027
918
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
18028
0
                p->error_indicator = 1;
18029
0
                p->level--;
18030
0
                return NULL;
18031
0
            }
18032
918
            goto done;
18033
918
        }
18034
43.1k
        p->mark = _mark;
18035
43.1k
        D(fprintf(stderr, "%*c%s listcomp[%d-%d]: %s failed!\n", p->level, ' ',
18036
43.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' star_named_expression for_if_clauses ']'"));
18037
43.1k
    }
18038
43.1k
    if (p->call_invalid_rules) { // invalid_comprehension
18039
22.7k
        if (p->error_indicator) {
18040
12.8k
            p->level--;
18041
12.8k
            return NULL;
18042
12.8k
        }
18043
9.96k
        D(fprintf(stderr, "%*c> listcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
18044
9.96k
        void *invalid_comprehension_var;
18045
9.96k
        if (
18046
9.96k
            (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
18047
9.96k
        )
18048
0
        {
18049
0
            D(fprintf(stderr, "%*c+ listcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
18050
0
            _res = invalid_comprehension_var;
18051
0
            goto done;
18052
0
        }
18053
9.96k
        p->mark = _mark;
18054
9.96k
        D(fprintf(stderr, "%*c%s listcomp[%d-%d]: %s failed!\n", p->level, ' ',
18055
9.96k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
18056
9.96k
    }
18057
30.2k
    _res = NULL;
18058
31.1k
  done:
18059
31.1k
    p->level--;
18060
31.1k
    return _res;
18061
30.2k
}
18062
18063
// setcomp: '{' star_named_expression for_if_clauses '}' | invalid_comprehension
18064
static expr_ty
18065
setcomp_rule(Parser *p)
18066
20.2k
{
18067
20.2k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
18068
0
        _Pypegen_stack_overflow(p);
18069
0
    }
18070
20.2k
    if (p->error_indicator) {
18071
0
        p->level--;
18072
0
        return NULL;
18073
0
    }
18074
20.2k
    expr_ty _res = NULL;
18075
20.2k
    int _mark = p->mark;
18076
20.2k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18077
0
        p->error_indicator = 1;
18078
0
        p->level--;
18079
0
        return NULL;
18080
0
    }
18081
20.2k
    int _start_lineno = p->tokens[_mark]->lineno;
18082
20.2k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18083
20.2k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18084
20.2k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18085
20.2k
    { // '{' star_named_expression for_if_clauses '}'
18086
20.2k
        if (p->error_indicator) {
18087
0
            p->level--;
18088
0
            return NULL;
18089
0
        }
18090
20.2k
        D(fprintf(stderr, "%*c> setcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' star_named_expression for_if_clauses '}'"));
18091
20.2k
        Token * _literal;
18092
20.2k
        Token * _literal_1;
18093
20.2k
        expr_ty a;
18094
20.2k
        asdl_comprehension_seq* b;
18095
20.2k
        if (
18096
20.2k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
18097
20.2k
            &&
18098
20.2k
            (a = star_named_expression_rule(p))  // star_named_expression
18099
11.9k
            &&
18100
11.9k
            (b = for_if_clauses_rule(p))  // for_if_clauses
18101
861
            &&
18102
861
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
18103
20.2k
        )
18104
780
        {
18105
780
            D(fprintf(stderr, "%*c+ setcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' star_named_expression for_if_clauses '}'"));
18106
780
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18107
780
            if (_token == NULL) {
18108
0
                p->level--;
18109
0
                return NULL;
18110
0
            }
18111
780
            int _end_lineno = _token->end_lineno;
18112
780
            UNUSED(_end_lineno); // Only used by EXTRA macro
18113
780
            int _end_col_offset = _token->end_col_offset;
18114
780
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18115
780
            _res = _PyAST_SetComp ( a , b , EXTRA );
18116
780
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
18117
0
                p->error_indicator = 1;
18118
0
                p->level--;
18119
0
                return NULL;
18120
0
            }
18121
780
            goto done;
18122
780
        }
18123
19.4k
        p->mark = _mark;
18124
19.4k
        D(fprintf(stderr, "%*c%s setcomp[%d-%d]: %s failed!\n", p->level, ' ',
18125
19.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' star_named_expression for_if_clauses '}'"));
18126
19.4k
    }
18127
19.4k
    if (p->call_invalid_rules) { // invalid_comprehension
18128
7.64k
        if (p->error_indicator) {
18129
604
            p->level--;
18130
604
            return NULL;
18131
604
        }
18132
7.04k
        D(fprintf(stderr, "%*c> setcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
18133
7.04k
        void *invalid_comprehension_var;
18134
7.04k
        if (
18135
7.04k
            (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
18136
7.04k
        )
18137
0
        {
18138
0
            D(fprintf(stderr, "%*c+ setcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
18139
0
            _res = invalid_comprehension_var;
18140
0
            goto done;
18141
0
        }
18142
7.04k
        p->mark = _mark;
18143
7.04k
        D(fprintf(stderr, "%*c%s setcomp[%d-%d]: %s failed!\n", p->level, ' ',
18144
7.04k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
18145
7.04k
    }
18146
18.8k
    _res = NULL;
18147
19.6k
  done:
18148
19.6k
    p->level--;
18149
19.6k
    return _res;
18150
18.8k
}
18151
18152
// genexp:
18153
//     | '(' (assignment_expression | expression !':=' | starred_expression) for_if_clauses ')'
18154
//     | invalid_comprehension
18155
Py_LOCAL_SYMBOL expr_ty
18156
genexp_rule(Parser *p)
18157
596k
{
18158
596k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
18159
1
        _Pypegen_stack_overflow(p);
18160
1
    }
18161
596k
    if (p->error_indicator) {
18162
1
        p->level--;
18163
1
        return NULL;
18164
1
    }
18165
596k
    expr_ty _res = NULL;
18166
596k
    int _mark = p->mark;
18167
596k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18168
0
        p->error_indicator = 1;
18169
0
        p->level--;
18170
0
        return NULL;
18171
0
    }
18172
596k
    int _start_lineno = p->tokens[_mark]->lineno;
18173
596k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18174
596k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18175
596k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18176
596k
    { // '(' (assignment_expression | expression !':=' | starred_expression) for_if_clauses ')'
18177
596k
        if (p->error_indicator) {
18178
0
            p->level--;
18179
0
            return NULL;
18180
0
        }
18181
596k
        D(fprintf(stderr, "%*c> genexp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' (assignment_expression | expression !':=' | starred_expression) for_if_clauses ')'"));
18182
596k
        Token * _literal;
18183
596k
        Token * _literal_1;
18184
596k
        void *a;
18185
596k
        asdl_comprehension_seq* b;
18186
596k
        if (
18187
596k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
18188
101k
            &&
18189
101k
            (a = _tmp_89_rule(p))  // assignment_expression | expression !':=' | starred_expression
18190
48.7k
            &&
18191
48.7k
            (b = for_if_clauses_rule(p))  // for_if_clauses
18192
3.22k
            &&
18193
3.22k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
18194
596k
        )
18195
2.43k
        {
18196
2.43k
            D(fprintf(stderr, "%*c+ genexp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' (assignment_expression | expression !':=' | starred_expression) for_if_clauses ')'"));
18197
2.43k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18198
2.43k
            if (_token == NULL) {
18199
0
                p->level--;
18200
0
                return NULL;
18201
0
            }
18202
2.43k
            int _end_lineno = _token->end_lineno;
18203
2.43k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18204
2.43k
            int _end_col_offset = _token->end_col_offset;
18205
2.43k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18206
2.43k
            _res = _PyAST_GeneratorExp ( a , b , EXTRA );
18207
2.43k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
18208
0
                p->error_indicator = 1;
18209
0
                p->level--;
18210
0
                return NULL;
18211
0
            }
18212
2.43k
            goto done;
18213
2.43k
        }
18214
594k
        p->mark = _mark;
18215
594k
        D(fprintf(stderr, "%*c%s genexp[%d-%d]: %s failed!\n", p->level, ' ',
18216
594k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' (assignment_expression | expression !':=' | starred_expression) for_if_clauses ')'"));
18217
594k
    }
18218
594k
    if (p->call_invalid_rules) { // invalid_comprehension
18219
306k
        if (p->error_indicator) {
18220
5.76k
            p->level--;
18221
5.76k
            return NULL;
18222
5.76k
        }
18223
300k
        D(fprintf(stderr, "%*c> genexp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
18224
300k
        void *invalid_comprehension_var;
18225
300k
        if (
18226
300k
            (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
18227
300k
        )
18228
0
        {
18229
0
            D(fprintf(stderr, "%*c+ genexp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
18230
0
            _res = invalid_comprehension_var;
18231
0
            goto done;
18232
0
        }
18233
300k
        p->mark = _mark;
18234
300k
        D(fprintf(stderr, "%*c%s genexp[%d-%d]: %s failed!\n", p->level, ' ',
18235
300k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
18236
300k
    }
18237
588k
    _res = NULL;
18238
590k
  done:
18239
590k
    p->level--;
18240
590k
    return _res;
18241
588k
}
18242
18243
// dictcomp: '{' kvpair for_if_clauses '}' | '{' '**' expression for_if_clauses '}'
18244
static expr_ty
18245
dictcomp_rule(Parser *p)
18246
25.1k
{
18247
25.1k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
18248
1
        _Pypegen_stack_overflow(p);
18249
1
    }
18250
25.1k
    if (p->error_indicator) {
18251
1
        p->level--;
18252
1
        return NULL;
18253
1
    }
18254
25.1k
    expr_ty _res = NULL;
18255
25.1k
    int _mark = p->mark;
18256
25.1k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18257
0
        p->error_indicator = 1;
18258
0
        p->level--;
18259
0
        return NULL;
18260
0
    }
18261
25.1k
    int _start_lineno = p->tokens[_mark]->lineno;
18262
25.1k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18263
25.1k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18264
25.1k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18265
25.1k
    { // '{' kvpair for_if_clauses '}'
18266
25.1k
        if (p->error_indicator) {
18267
0
            p->level--;
18268
0
            return NULL;
18269
0
        }
18270
25.1k
        D(fprintf(stderr, "%*c> dictcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
18271
25.1k
        Token * _literal;
18272
25.1k
        Token * _literal_1;
18273
25.1k
        KeyValuePair* a;
18274
25.1k
        asdl_comprehension_seq* b;
18275
25.1k
        if (
18276
25.1k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
18277
25.1k
            &&
18278
25.1k
            (a = kvpair_rule(p))  // kvpair
18279
5.37k
            &&
18280
5.37k
            (b = for_if_clauses_rule(p))  // for_if_clauses
18281
996
            &&
18282
996
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
18283
25.1k
        )
18284
930
        {
18285
930
            D(fprintf(stderr, "%*c+ dictcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
18286
930
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18287
930
            if (_token == NULL) {
18288
0
                p->level--;
18289
0
                return NULL;
18290
0
            }
18291
930
            int _end_lineno = _token->end_lineno;
18292
930
            UNUSED(_end_lineno); // Only used by EXTRA macro
18293
930
            int _end_col_offset = _token->end_col_offset;
18294
930
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18295
930
            _res = _PyAST_DictComp ( a -> key , a -> value , b , EXTRA );
18296
930
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
18297
0
                p->error_indicator = 1;
18298
0
                p->level--;
18299
0
                return NULL;
18300
0
            }
18301
930
            goto done;
18302
930
        }
18303
24.2k
        p->mark = _mark;
18304
24.2k
        D(fprintf(stderr, "%*c%s dictcomp[%d-%d]: %s failed!\n", p->level, ' ',
18305
24.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
18306
24.2k
    }
18307
0
    { // '{' '**' expression for_if_clauses '}'
18308
24.2k
        if (p->error_indicator) {
18309
3.50k
            p->level--;
18310
3.50k
            return NULL;
18311
3.50k
        }
18312
20.7k
        D(fprintf(stderr, "%*c> dictcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '**' expression for_if_clauses '}'"));
18313
20.7k
        Token * _literal;
18314
20.7k
        Token * _literal_1;
18315
20.7k
        Token * _literal_2;
18316
20.7k
        expr_ty a;
18317
20.7k
        asdl_comprehension_seq* b;
18318
20.7k
        if (
18319
20.7k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
18320
20.7k
            &&
18321
20.7k
            (_literal_1 = _PyPegen_expect_token(p, 35))  // token='**'
18322
2.44k
            &&
18323
2.44k
            (a = expression_rule(p))  // expression
18324
1.84k
            &&
18325
1.84k
            (b = for_if_clauses_rule(p))  // for_if_clauses
18326
350
            &&
18327
350
            (_literal_2 = _PyPegen_expect_token(p, 26))  // token='}'
18328
20.7k
        )
18329
330
        {
18330
330
            D(fprintf(stderr, "%*c+ dictcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '**' expression for_if_clauses '}'"));
18331
330
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18332
330
            if (_token == NULL) {
18333
0
                p->level--;
18334
0
                return NULL;
18335
0
            }
18336
330
            int _end_lineno = _token->end_lineno;
18337
330
            UNUSED(_end_lineno); // Only used by EXTRA macro
18338
330
            int _end_col_offset = _token->end_col_offset;
18339
330
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18340
330
            _res = _PyAST_DictComp ( a , NULL , b , EXTRA );
18341
330
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
18342
0
                p->error_indicator = 1;
18343
0
                p->level--;
18344
0
                return NULL;
18345
0
            }
18346
330
            goto done;
18347
330
        }
18348
20.4k
        p->mark = _mark;
18349
20.4k
        D(fprintf(stderr, "%*c%s dictcomp[%d-%d]: %s failed!\n", p->level, ' ',
18350
20.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '**' expression for_if_clauses '}'"));
18351
20.4k
    }
18352
20.4k
    _res = NULL;
18353
21.6k
  done:
18354
21.6k
    p->level--;
18355
21.6k
    return _res;
18356
20.4k
}
18357
18358
// arguments: args ','? &')' | invalid_arguments
18359
Py_LOCAL_SYMBOL expr_ty
18360
arguments_rule(Parser *p)
18361
31.4k
{
18362
31.4k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
18363
0
        _Pypegen_stack_overflow(p);
18364
0
    }
18365
31.4k
    if (p->error_indicator) {
18366
0
        p->level--;
18367
0
        return NULL;
18368
0
    }
18369
31.4k
    expr_ty _res = NULL;
18370
31.4k
    if (_PyPegen_is_memoized(p, arguments_type, &_res)) {
18371
667
        p->level--;
18372
667
        return _res;
18373
667
    }
18374
30.7k
    int _mark = p->mark;
18375
30.7k
    { // args ','? &')'
18376
30.7k
        if (p->error_indicator) {
18377
0
            p->level--;
18378
0
            return NULL;
18379
0
        }
18380
30.7k
        D(fprintf(stderr, "%*c> arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ','? &')'"));
18381
30.7k
        void *_opt_var;
18382
30.7k
        UNUSED(_opt_var); // Silence compiler warnings
18383
30.7k
        expr_ty a;
18384
30.7k
        if (
18385
30.7k
            (a = args_rule(p))  // args
18386
18.5k
            &&
18387
18.5k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
18388
18.5k
            &&
18389
18.5k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
18390
30.7k
        )
18391
8.75k
        {
18392
8.75k
            D(fprintf(stderr, "%*c+ arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ','? &')'"));
18393
8.75k
            _res = a;
18394
8.75k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
18395
0
                p->error_indicator = 1;
18396
0
                p->level--;
18397
0
                return NULL;
18398
0
            }
18399
8.75k
            goto done;
18400
8.75k
        }
18401
22.0k
        p->mark = _mark;
18402
22.0k
        D(fprintf(stderr, "%*c%s arguments[%d-%d]: %s failed!\n", p->level, ' ',
18403
22.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ','? &')'"));
18404
22.0k
    }
18405
22.0k
    if (p->call_invalid_rules) { // invalid_arguments
18406
10.2k
        if (p->error_indicator) {
18407
1.61k
            p->level--;
18408
1.61k
            return NULL;
18409
1.61k
        }
18410
8.66k
        D(fprintf(stderr, "%*c> arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_arguments"));
18411
8.66k
        void *invalid_arguments_var;
18412
8.66k
        if (
18413
8.66k
            (invalid_arguments_var = invalid_arguments_rule(p))  // invalid_arguments
18414
8.66k
        )
18415
0
        {
18416
0
            D(fprintf(stderr, "%*c+ arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_arguments"));
18417
0
            _res = invalid_arguments_var;
18418
0
            goto done;
18419
0
        }
18420
8.66k
        p->mark = _mark;
18421
8.66k
        D(fprintf(stderr, "%*c%s arguments[%d-%d]: %s failed!\n", p->level, ' ',
18422
8.66k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_arguments"));
18423
8.66k
    }
18424
20.4k
    _res = NULL;
18425
29.1k
  done:
18426
29.1k
    _PyPegen_insert_memo(p, _mark, arguments_type, _res);
18427
29.1k
    p->level--;
18428
29.1k
    return _res;
18429
20.4k
}
18430
18431
// args:
18432
//     | ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]
18433
//     | kwargs
18434
Py_LOCAL_SYMBOL expr_ty
18435
args_rule(Parser *p)
18436
61.3k
{
18437
61.3k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
18438
0
        _Pypegen_stack_overflow(p);
18439
0
    }
18440
61.3k
    if (p->error_indicator) {
18441
0
        p->level--;
18442
0
        return NULL;
18443
0
    }
18444
61.3k
    expr_ty _res = NULL;
18445
61.3k
    int _mark = p->mark;
18446
61.3k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18447
2
        p->error_indicator = 1;
18448
2
        p->level--;
18449
2
        return NULL;
18450
2
    }
18451
61.3k
    int _start_lineno = p->tokens[_mark]->lineno;
18452
61.3k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18453
61.3k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18454
61.3k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18455
61.3k
    { // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]
18456
61.3k
        if (p->error_indicator) {
18457
0
            p->level--;
18458
0
            return NULL;
18459
0
        }
18460
61.3k
        D(fprintf(stderr, "%*c> args[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
18461
61.3k
        asdl_expr_seq* a;
18462
61.3k
        void *b;
18463
61.3k
        if (
18464
61.3k
            (a = (asdl_expr_seq*)_gather_91_rule(p))  // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+
18465
29.0k
            &&
18466
29.0k
            (b = _tmp_92_rule(p), !p->error_indicator)  // [',' kwargs]
18467
61.3k
        )
18468
27.8k
        {
18469
27.8k
            D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
18470
27.8k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18471
27.8k
            if (_token == NULL) {
18472
0
                p->level--;
18473
0
                return NULL;
18474
0
            }
18475
27.8k
            int _end_lineno = _token->end_lineno;
18476
27.8k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18477
27.8k
            int _end_col_offset = _token->end_col_offset;
18478
27.8k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18479
27.8k
            _res = _PyPegen_collect_call_seqs ( p , a , b , EXTRA );
18480
27.8k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
18481
0
                p->error_indicator = 1;
18482
0
                p->level--;
18483
0
                return NULL;
18484
0
            }
18485
27.8k
            goto done;
18486
27.8k
        }
18487
33.5k
        p->mark = _mark;
18488
33.5k
        D(fprintf(stderr, "%*c%s args[%d-%d]: %s failed!\n", p->level, ' ',
18489
33.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
18490
33.5k
    }
18491
0
    { // kwargs
18492
33.5k
        if (p->error_indicator) {
18493
1.34k
            p->level--;
18494
1.34k
            return NULL;
18495
1.34k
        }
18496
32.1k
        D(fprintf(stderr, "%*c> args[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwargs"));
18497
32.1k
        asdl_seq* a;
18498
32.1k
        if (
18499
32.1k
            (a = kwargs_rule(p))  // kwargs
18500
32.1k
        )
18501
7.93k
        {
18502
7.93k
            D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwargs"));
18503
7.93k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18504
7.93k
            if (_token == NULL) {
18505
0
                p->level--;
18506
0
                return NULL;
18507
0
            }
18508
7.93k
            int _end_lineno = _token->end_lineno;
18509
7.93k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18510
7.93k
            int _end_col_offset = _token->end_col_offset;
18511
7.93k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18512
7.93k
            _res = _PyAST_Call ( _PyPegen_dummy_name ( p ) , CHECK_NULL_ALLOWED ( asdl_expr_seq* , _PyPegen_seq_extract_starred_exprs ( p , a ) ) , CHECK_NULL_ALLOWED ( asdl_keyword_seq* , _PyPegen_seq_delete_starred_exprs ( p , a ) ) , EXTRA );
18513
7.93k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
18514
379
                p->error_indicator = 1;
18515
379
                p->level--;
18516
379
                return NULL;
18517
379
            }
18518
7.55k
            goto done;
18519
7.93k
        }
18520
24.2k
        p->mark = _mark;
18521
24.2k
        D(fprintf(stderr, "%*c%s args[%d-%d]: %s failed!\n", p->level, ' ',
18522
24.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwargs"));
18523
24.2k
    }
18524
24.2k
    _res = NULL;
18525
59.6k
  done:
18526
59.6k
    p->level--;
18527
59.6k
    return _res;
18528
24.2k
}
18529
18530
// kwargs:
18531
//     | ','.kwarg_or_starred+ [',' ','.kwarg_or_double_starred+]
18532
//     | ','.kwarg_or_double_starred+
18533
Py_LOCAL_SYMBOL asdl_seq*
18534
kwargs_rule(Parser *p)
18535
45.5k
{
18536
45.5k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
18537
0
        _Pypegen_stack_overflow(p);
18538
0
    }
18539
45.5k
    if (p->error_indicator) {
18540
0
        p->level--;
18541
0
        return NULL;
18542
0
    }
18543
45.5k
    asdl_seq* _res = NULL;
18544
45.5k
    int _mark = p->mark;
18545
45.5k
    { // ','.kwarg_or_starred+ [',' ','.kwarg_or_double_starred+]
18546
45.5k
        if (p->error_indicator) {
18547
0
            p->level--;
18548
0
            return NULL;
18549
0
        }
18550
45.5k
        D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+ [',' ','.kwarg_or_double_starred+]"));
18551
45.5k
        asdl_seq * a;
18552
45.5k
        void *b;
18553
45.5k
        if (
18554
45.5k
            (a = _gather_94_rule(p))  // ','.kwarg_or_starred+
18555
9.62k
            &&
18556
9.62k
            (b = _tmp_95_rule(p), !p->error_indicator)  // [',' ','.kwarg_or_double_starred+]
18557
45.5k
        )
18558
9.18k
        {
18559
9.18k
            D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+ [',' ','.kwarg_or_double_starred+]"));
18560
9.18k
            _res = b ? _PyPegen_join_sequences ( p , a , b ) : a;
18561
9.18k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
18562
0
                p->error_indicator = 1;
18563
0
                p->level--;
18564
0
                return NULL;
18565
0
            }
18566
9.18k
            goto done;
18567
9.18k
        }
18568
36.3k
        p->mark = _mark;
18569
36.3k
        D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
18570
36.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_starred+ [',' ','.kwarg_or_double_starred+]"));
18571
36.3k
    }
18572
0
    { // ','.kwarg_or_double_starred+
18573
36.3k
        if (p->error_indicator) {
18574
896
            p->level--;
18575
896
            return NULL;
18576
896
        }
18577
35.4k
        D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_double_starred+"));
18578
35.4k
        asdl_seq * _gather_97_var;
18579
35.4k
        if (
18580
35.4k
            (_gather_97_var = _gather_97_rule(p))  // ','.kwarg_or_double_starred+
18581
35.4k
        )
18582
3.99k
        {
18583
3.99k
            D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_double_starred+"));
18584
3.99k
            _res = _gather_97_var;
18585
3.99k
            goto done;
18586
3.99k
        }
18587
31.4k
        p->mark = _mark;
18588
31.4k
        D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
18589
31.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_double_starred+"));
18590
31.4k
    }
18591
31.4k
    _res = NULL;
18592
44.6k
  done:
18593
44.6k
    p->level--;
18594
44.6k
    return _res;
18595
31.4k
}
18596
18597
// starred_expression:
18598
//     | invalid_starred_expression_unpacking
18599
//     | '*' expression
18600
//     | invalid_starred_expression
18601
Py_LOCAL_SYMBOL expr_ty
18602
starred_expression_rule(Parser *p)
18603
192k
{
18604
192k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
18605
0
        _Pypegen_stack_overflow(p);
18606
0
    }
18607
192k
    if (p->error_indicator) {
18608
0
        p->level--;
18609
0
        return NULL;
18610
0
    }
18611
192k
    expr_ty _res = NULL;
18612
192k
    int _mark = p->mark;
18613
192k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18614
46
        p->error_indicator = 1;
18615
46
        p->level--;
18616
46
        return NULL;
18617
46
    }
18618
192k
    int _start_lineno = p->tokens[_mark]->lineno;
18619
192k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18620
192k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18621
192k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18622
192k
    if (p->call_invalid_rules) { // invalid_starred_expression_unpacking
18623
127k
        if (p->error_indicator) {
18624
0
            p->level--;
18625
0
            return NULL;
18626
0
        }
18627
127k
        D(fprintf(stderr, "%*c> starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_starred_expression_unpacking"));
18628
127k
        void *invalid_starred_expression_unpacking_var;
18629
127k
        if (
18630
127k
            (invalid_starred_expression_unpacking_var = invalid_starred_expression_unpacking_rule(p))  // invalid_starred_expression_unpacking
18631
127k
        )
18632
0
        {
18633
0
            D(fprintf(stderr, "%*c+ starred_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_starred_expression_unpacking"));
18634
0
            _res = invalid_starred_expression_unpacking_var;
18635
0
            goto done;
18636
0
        }
18637
127k
        p->mark = _mark;
18638
127k
        D(fprintf(stderr, "%*c%s starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
18639
127k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_starred_expression_unpacking"));
18640
127k
    }
18641
192k
    { // '*' expression
18642
192k
        if (p->error_indicator) {
18643
1.29k
            p->level--;
18644
1.29k
            return NULL;
18645
1.29k
        }
18646
190k
        D(fprintf(stderr, "%*c> starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression"));
18647
190k
        Token * _literal;
18648
190k
        expr_ty a;
18649
190k
        if (
18650
190k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
18651
12.9k
            &&
18652
12.9k
            (a = expression_rule(p))  // expression
18653
190k
        )
18654
12.6k
        {
18655
12.6k
            D(fprintf(stderr, "%*c+ starred_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression"));
18656
12.6k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18657
12.6k
            if (_token == NULL) {
18658
0
                p->level--;
18659
0
                return NULL;
18660
0
            }
18661
12.6k
            int _end_lineno = _token->end_lineno;
18662
12.6k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18663
12.6k
            int _end_col_offset = _token->end_col_offset;
18664
12.6k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18665
12.6k
            _res = _PyAST_Starred ( a , Load , EXTRA );
18666
12.6k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
18667
0
                p->error_indicator = 1;
18668
0
                p->level--;
18669
0
                return NULL;
18670
0
            }
18671
12.6k
            goto done;
18672
12.6k
        }
18673
178k
        p->mark = _mark;
18674
178k
        D(fprintf(stderr, "%*c%s starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
18675
178k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression"));
18676
178k
    }
18677
178k
    if (p->call_invalid_rules) { // invalid_starred_expression
18678
115k
        if (p->error_indicator) {
18679
0
            p->level--;
18680
0
            return NULL;
18681
0
        }
18682
115k
        D(fprintf(stderr, "%*c> starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_starred_expression"));
18683
115k
        void *invalid_starred_expression_var;
18684
115k
        if (
18685
115k
            (invalid_starred_expression_var = invalid_starred_expression_rule(p))  // invalid_starred_expression
18686
115k
        )
18687
0
        {
18688
0
            D(fprintf(stderr, "%*c+ starred_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_starred_expression"));
18689
0
            _res = invalid_starred_expression_var;
18690
0
            goto done;
18691
0
        }
18692
115k
        p->mark = _mark;
18693
115k
        D(fprintf(stderr, "%*c%s starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
18694
115k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_starred_expression"));
18695
115k
    }
18696
178k
    _res = NULL;
18697
190k
  done:
18698
190k
    p->level--;
18699
190k
    return _res;
18700
178k
}
18701
18702
// kwarg_or_starred: invalid_kwarg | NAME '=' expression | starred_expression
18703
static KeywordOrStarred*
18704
kwarg_or_starred_rule(Parser *p)
18705
54.2k
{
18706
54.2k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
18707
0
        _Pypegen_stack_overflow(p);
18708
0
    }
18709
54.2k
    if (p->error_indicator) {
18710
0
        p->level--;
18711
0
        return NULL;
18712
0
    }
18713
54.2k
    KeywordOrStarred* _res = NULL;
18714
54.2k
    int _mark = p->mark;
18715
54.2k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18716
5
        p->error_indicator = 1;
18717
5
        p->level--;
18718
5
        return NULL;
18719
5
    }
18720
54.2k
    int _start_lineno = p->tokens[_mark]->lineno;
18721
54.2k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18722
54.2k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18723
54.2k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18724
54.2k
    if (p->call_invalid_rules) { // invalid_kwarg
18725
42.7k
        if (p->error_indicator) {
18726
0
            p->level--;
18727
0
            return NULL;
18728
0
        }
18729
42.7k
        D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
18730
42.7k
        void *invalid_kwarg_var;
18731
42.7k
        if (
18732
42.7k
            (invalid_kwarg_var = invalid_kwarg_rule(p))  // invalid_kwarg
18733
42.7k
        )
18734
0
        {
18735
0
            D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
18736
0
            _res = invalid_kwarg_var;
18737
0
            goto done;
18738
0
        }
18739
42.7k
        p->mark = _mark;
18740
42.7k
        D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
18741
42.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwarg"));
18742
42.7k
    }
18743
54.2k
    { // NAME '=' expression
18744
54.2k
        if (p->error_indicator) {
18745
480
            p->level--;
18746
480
            return NULL;
18747
480
        }
18748
53.7k
        D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
18749
53.7k
        Token * _literal;
18750
53.7k
        expr_ty a;
18751
53.7k
        expr_ty b;
18752
53.7k
        if (
18753
53.7k
            (a = _PyPegen_name_token(p))  // NAME
18754
16.8k
            &&
18755
16.8k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
18756
12.6k
            &&
18757
12.6k
            (b = expression_rule(p))  // expression
18758
53.7k
        )
18759
11.2k
        {
18760
11.2k
            D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
18761
11.2k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18762
11.2k
            if (_token == NULL) {
18763
0
                p->level--;
18764
0
                return NULL;
18765
0
            }
18766
11.2k
            int _end_lineno = _token->end_lineno;
18767
11.2k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18768
11.2k
            int _end_col_offset = _token->end_col_offset;
18769
11.2k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18770
11.2k
            _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
18771
11.2k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
18772
0
                p->error_indicator = 1;
18773
0
                p->level--;
18774
0
                return NULL;
18775
0
            }
18776
11.2k
            goto done;
18777
11.2k
        }
18778
42.4k
        p->mark = _mark;
18779
42.4k
        D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
18780
42.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression"));
18781
42.4k
    }
18782
0
    { // starred_expression
18783
42.4k
        if (p->error_indicator) {
18784
201
            p->level--;
18785
201
            return NULL;
18786
201
        }
18787
42.2k
        D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
18788
42.2k
        expr_ty a;
18789
42.2k
        if (
18790
42.2k
            (a = starred_expression_rule(p))  // starred_expression
18791
42.2k
        )
18792
3.21k
        {
18793
3.21k
            D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
18794
3.21k
            _res = _PyPegen_keyword_or_starred ( p , a , 0 );
18795
3.21k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
18796
0
                p->error_indicator = 1;
18797
0
                p->level--;
18798
0
                return NULL;
18799
0
            }
18800
3.21k
            goto done;
18801
3.21k
        }
18802
39.0k
        p->mark = _mark;
18803
39.0k
        D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
18804
39.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
18805
39.0k
    }
18806
39.0k
    _res = NULL;
18807
53.5k
  done:
18808
53.5k
    p->level--;
18809
53.5k
    return _res;
18810
39.0k
}
18811
18812
// kwarg_or_double_starred: invalid_kwarg | NAME '=' expression | '**' expression
18813
static KeywordOrStarred*
18814
kwarg_or_double_starred_rule(Parser *p)
18815
50.8k
{
18816
50.8k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
18817
0
        _Pypegen_stack_overflow(p);
18818
0
    }
18819
50.8k
    if (p->error_indicator) {
18820
0
        p->level--;
18821
0
        return NULL;
18822
0
    }
18823
50.8k
    KeywordOrStarred* _res = NULL;
18824
50.8k
    int _mark = p->mark;
18825
50.8k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18826
15
        p->error_indicator = 1;
18827
15
        p->level--;
18828
15
        return NULL;
18829
15
    }
18830
50.8k
    int _start_lineno = p->tokens[_mark]->lineno;
18831
50.8k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18832
50.8k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18833
50.8k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18834
50.8k
    if (p->call_invalid_rules) { // invalid_kwarg
18835
39.7k
        if (p->error_indicator) {
18836
0
            p->level--;
18837
0
            return NULL;
18838
0
        }
18839
39.7k
        D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
18840
39.7k
        void *invalid_kwarg_var;
18841
39.7k
        if (
18842
39.7k
            (invalid_kwarg_var = invalid_kwarg_rule(p))  // invalid_kwarg
18843
39.7k
        )
18844
0
        {
18845
0
            D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
18846
0
            _res = invalid_kwarg_var;
18847
0
            goto done;
18848
0
        }
18849
39.7k
        p->mark = _mark;
18850
39.7k
        D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
18851
39.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwarg"));
18852
39.7k
    }
18853
50.8k
    { // NAME '=' expression
18854
50.8k
        if (p->error_indicator) {
18855
667
            p->level--;
18856
667
            return NULL;
18857
667
        }
18858
50.1k
        D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
18859
50.1k
        Token * _literal;
18860
50.1k
        expr_ty a;
18861
50.1k
        expr_ty b;
18862
50.1k
        if (
18863
50.1k
            (a = _PyPegen_name_token(p))  // NAME
18864
9.16k
            &&
18865
9.16k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
18866
4.79k
            &&
18867
4.79k
            (b = expression_rule(p))  // expression
18868
50.1k
        )
18869
3.53k
        {
18870
3.53k
            D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
18871
3.53k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18872
3.53k
            if (_token == NULL) {
18873
0
                p->level--;
18874
0
                return NULL;
18875
0
            }
18876
3.53k
            int _end_lineno = _token->end_lineno;
18877
3.53k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18878
3.53k
            int _end_col_offset = _token->end_col_offset;
18879
3.53k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18880
3.53k
            _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
18881
3.53k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
18882
0
                p->error_indicator = 1;
18883
0
                p->level--;
18884
0
                return NULL;
18885
0
            }
18886
3.53k
            goto done;
18887
3.53k
        }
18888
46.6k
        p->mark = _mark;
18889
46.6k
        D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
18890
46.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression"));
18891
46.6k
    }
18892
0
    { // '**' expression
18893
46.6k
        if (p->error_indicator) {
18894
94
            p->level--;
18895
94
            return NULL;
18896
94
        }
18897
46.5k
        D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' expression"));
18898
46.5k
        Token * _literal;
18899
46.5k
        expr_ty a;
18900
46.5k
        if (
18901
46.5k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
18902
10.6k
            &&
18903
10.6k
            (a = expression_rule(p))  // expression
18904
46.5k
        )
18905
10.2k
        {
18906
10.2k
            D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' expression"));
18907
10.2k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18908
10.2k
            if (_token == NULL) {
18909
0
                p->level--;
18910
0
                return NULL;
18911
0
            }
18912
10.2k
            int _end_lineno = _token->end_lineno;
18913
10.2k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18914
10.2k
            int _end_col_offset = _token->end_col_offset;
18915
10.2k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18916
10.2k
            _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( NULL , a , EXTRA ) ) , 1 );
18917
10.2k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
18918
0
                p->error_indicator = 1;
18919
0
                p->level--;
18920
0
                return NULL;
18921
0
            }
18922
10.2k
            goto done;
18923
10.2k
        }
18924
36.2k
        p->mark = _mark;
18925
36.2k
        D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
18926
36.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression"));
18927
36.2k
    }
18928
36.2k
    _res = NULL;
18929
50.0k
  done:
18930
50.0k
    p->level--;
18931
50.0k
    return _res;
18932
36.2k
}
18933
18934
// star_targets: star_target !',' | star_target ((',' star_target))* ','?
18935
Py_LOCAL_SYMBOL expr_ty
18936
star_targets_rule(Parser *p)
18937
492k
{
18938
492k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
18939
0
        _Pypegen_stack_overflow(p);
18940
0
    }
18941
492k
    if (p->error_indicator) {
18942
0
        p->level--;
18943
0
        return NULL;
18944
0
    }
18945
492k
    expr_ty _res = NULL;
18946
492k
    int _mark = p->mark;
18947
492k
    expr_ty _prefix_10_result = NULL;
18948
492k
    int _prefix_10_end = 0, _prefix_10_valid = 0;
18949
492k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18950
30
        p->error_indicator = 1;
18951
30
        p->level--;
18952
30
        return NULL;
18953
30
    }
18954
492k
    int _start_lineno = p->tokens[_mark]->lineno;
18955
492k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18956
492k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18957
492k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18958
492k
    { // star_target !','
18959
492k
        if (p->error_indicator) {
18960
0
            p->level--;
18961
0
            return NULL;
18962
0
        }
18963
492k
        D(fprintf(stderr, "%*c> star_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target !','"));
18964
492k
        expr_ty a;
18965
492k
        if (
18966
492k
            (a = ((!p->call_invalid_rules && _prefix_10_valid) ? (p->mark = _prefix_10_end, _prefix_10_result) : (_prefix_10_result = star_target_rule(p), _prefix_10_end = p->mark, _prefix_10_valid = 1, _prefix_10_result)))  // star_target
18967
137k
            &&
18968
137k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
18969
492k
        )
18970
131k
        {
18971
131k
            D(fprintf(stderr, "%*c+ star_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target !','"));
18972
131k
            _res = a;
18973
131k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
18974
0
                p->error_indicator = 1;
18975
0
                p->level--;
18976
0
                return NULL;
18977
0
            }
18978
131k
            goto done;
18979
131k
        }
18980
361k
        p->mark = _mark;
18981
361k
        D(fprintf(stderr, "%*c%s star_targets[%d-%d]: %s failed!\n", p->level, ' ',
18982
361k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target !','"));
18983
361k
    }
18984
0
    { // star_target ((',' star_target))* ','?
18985
361k
        if (p->error_indicator) {
18986
875
            p->level--;
18987
875
            return NULL;
18988
875
        }
18989
360k
        D(fprintf(stderr, "%*c> star_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))* ','?"));
18990
360k
        void *_opt_var;
18991
360k
        UNUSED(_opt_var); // Silence compiler warnings
18992
360k
        expr_ty a;
18993
360k
        asdl_seq * b;
18994
360k
        if (
18995
360k
            (a = ((!p->call_invalid_rules && _prefix_10_valid) ? (p->mark = _prefix_10_end, _prefix_10_result) : (_prefix_10_result = star_target_rule(p), _prefix_10_end = p->mark, _prefix_10_valid = 1, _prefix_10_result)))  // star_target
18996
6.31k
            &&
18997
6.31k
            (b = _loop0_98_rule(p))  // ((',' star_target))*
18998
6.31k
            &&
18999
6.31k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
19000
360k
        )
19001
6.02k
        {
19002
6.02k
            D(fprintf(stderr, "%*c+ star_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))* ','?"));
19003
6.02k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19004
6.02k
            if (_token == NULL) {
19005
0
                p->level--;
19006
0
                return NULL;
19007
0
            }
19008
6.02k
            int _end_lineno = _token->end_lineno;
19009
6.02k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19010
6.02k
            int _end_col_offset = _token->end_col_offset;
19011
6.02k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19012
6.02k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Store , EXTRA );
19013
6.02k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
19014
0
                p->error_indicator = 1;
19015
0
                p->level--;
19016
0
                return NULL;
19017
0
            }
19018
6.02k
            goto done;
19019
6.02k
        }
19020
354k
        p->mark = _mark;
19021
354k
        D(fprintf(stderr, "%*c%s star_targets[%d-%d]: %s failed!\n", p->level, ' ',
19022
354k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ((',' star_target))* ','?"));
19023
354k
    }
19024
354k
    _res = NULL;
19025
491k
  done:
19026
491k
    p->level--;
19027
491k
    return _res;
19028
354k
}
19029
19030
// star_target: '*' (!'*' star_target) | target
19031
Py_LOCAL_SYMBOL expr_ty
19032
star_target_rule(Parser *p)
19033
743k
{
19034
743k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
19035
0
        _Pypegen_stack_overflow(p);
19036
0
    }
19037
743k
    if (p->error_indicator) {
19038
11
        p->level--;
19039
11
        return NULL;
19040
11
    }
19041
743k
    expr_ty _res = NULL;
19042
743k
    if (_PyPegen_is_memoized(p, star_target_type, &_res)) {
19043
444k
        p->level--;
19044
444k
        return _res;
19045
444k
    }
19046
299k
    int _mark = p->mark;
19047
299k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
19048
0
        p->error_indicator = 1;
19049
0
        p->level--;
19050
0
        return NULL;
19051
0
    }
19052
299k
    int _start_lineno = p->tokens[_mark]->lineno;
19053
299k
    UNUSED(_start_lineno); // Only used by EXTRA macro
19054
299k
    int _start_col_offset = p->tokens[_mark]->col_offset;
19055
299k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
19056
299k
    { // '*' (!'*' star_target)
19057
299k
        if (p->error_indicator) {
19058
0
            p->level--;
19059
0
            return NULL;
19060
0
        }
19061
299k
        D(fprintf(stderr, "%*c> star_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (!'*' star_target)"));
19062
299k
        Token * _literal;
19063
299k
        void *a;
19064
299k
        if (
19065
299k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
19066
1.93k
            &&
19067
1.93k
            (a = _tmp_99_rule(p))  // !'*' star_target
19068
299k
        )
19069
843
        {
19070
843
            D(fprintf(stderr, "%*c+ star_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (!'*' star_target)"));
19071
843
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19072
843
            if (_token == NULL) {
19073
0
                p->level--;
19074
0
                return NULL;
19075
0
            }
19076
843
            int _end_lineno = _token->end_lineno;
19077
843
            UNUSED(_end_lineno); // Only used by EXTRA macro
19078
843
            int _end_col_offset = _token->end_col_offset;
19079
843
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19080
843
            _res = _PyAST_Starred ( a , Store , EXTRA );
19081
843
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
19082
0
                p->error_indicator = 1;
19083
0
                p->level--;
19084
0
                return NULL;
19085
0
            }
19086
843
            goto done;
19087
843
        }
19088
298k
        p->mark = _mark;
19089
298k
        D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
19090
298k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (!'*' star_target)"));
19091
298k
    }
19092
0
    { // target
19093
298k
        if (p->error_indicator) {
19094
295
            p->level--;
19095
295
            return NULL;
19096
295
        }
19097
298k
        D(fprintf(stderr, "%*c> star_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "target"));
19098
298k
        expr_ty target_var;
19099
298k
        if (
19100
298k
            (target_var = target_rule(p))  // target
19101
298k
        )
19102
95.1k
        {
19103
95.1k
            D(fprintf(stderr, "%*c+ star_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "target"));
19104
95.1k
            _res = target_var;
19105
95.1k
            goto done;
19106
95.1k
        }
19107
203k
        p->mark = _mark;
19108
203k
        D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
19109
203k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "target"));
19110
203k
    }
19111
203k
    _res = NULL;
19112
299k
  done:
19113
299k
    _PyPegen_insert_memo(p, _mark, star_target_type, _res);
19114
299k
    p->level--;
19115
299k
    return _res;
19116
203k
}
19117
19118
// target: target_value
19119
static expr_ty
19120
target_rule(Parser *p)
19121
298k
{
19122
298k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
19123
0
        _Pypegen_stack_overflow(p);
19124
0
    }
19125
298k
    if (p->error_indicator) {
19126
0
        p->level--;
19127
0
        return NULL;
19128
0
    }
19129
298k
    expr_ty _res = NULL;
19130
298k
    if (_PyPegen_is_memoized(p, target_type, &_res)) {
19131
0
        p->level--;
19132
0
        return _res;
19133
0
    }
19134
298k
    int _mark = p->mark;
19135
298k
    { // target_value
19136
298k
        if (p->error_indicator) {
19137
0
            p->level--;
19138
0
            return NULL;
19139
0
        }
19140
298k
        D(fprintf(stderr, "%*c> target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "target_value"));
19141
298k
        expr_ty a;
19142
298k
        if (
19143
298k
            (a = target_value_rule(p))  // target_value
19144
298k
        )
19145
134k
        {
19146
134k
            D(fprintf(stderr, "%*c+ target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "target_value"));
19147
134k
            _res = _PyPegen_make_target ( p , a , STAR_TARGETS );
19148
134k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
19149
0
                p->error_indicator = 1;
19150
0
                p->level--;
19151
0
                return NULL;
19152
0
            }
19153
134k
            goto done;
19154
134k
        }
19155
164k
        p->mark = _mark;
19156
164k
        D(fprintf(stderr, "%*c%s target[%d-%d]: %s failed!\n", p->level, ' ',
19157
164k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "target_value"));
19158
164k
    }
19159
164k
    _res = NULL;
19160
298k
  done:
19161
298k
    _PyPegen_insert_memo(p, _mark, target_type, _res);
19162
298k
    p->level--;
19163
298k
    return _res;
19164
164k
}
19165
19166
// single_target: target_value
19167
static expr_ty
19168
single_target_rule(Parser *p)
19169
274k
{
19170
274k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
19171
0
        _Pypegen_stack_overflow(p);
19172
0
    }
19173
274k
    if (p->error_indicator) {
19174
0
        p->level--;
19175
0
        return NULL;
19176
0
    }
19177
274k
    expr_ty _res = NULL;
19178
274k
    int _mark = p->mark;
19179
274k
    { // target_value
19180
274k
        if (p->error_indicator) {
19181
0
            p->level--;
19182
0
            return NULL;
19183
0
        }
19184
274k
        D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "target_value"));
19185
274k
        expr_ty a;
19186
274k
        if (
19187
274k
            (a = target_value_rule(p))  // target_value
19188
274k
        )
19189
114k
        {
19190
114k
            D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "target_value"));
19191
114k
            _res = _PyPegen_make_target ( p , a , SINGLE_TARGETS );
19192
114k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
19193
0
                p->error_indicator = 1;
19194
0
                p->level--;
19195
0
                return NULL;
19196
0
            }
19197
114k
            goto done;
19198
114k
        }
19199
159k
        p->mark = _mark;
19200
159k
        D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
19201
159k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "target_value"));
19202
159k
    }
19203
159k
    _res = NULL;
19204
274k
  done:
19205
274k
    p->level--;
19206
274k
    return _res;
19207
159k
}
19208
19209
// attribute_or_subscript_target: target_value
19210
static expr_ty
19211
attribute_or_subscript_target_rule(Parser *p)
19212
277k
{
19213
277k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
19214
0
        _Pypegen_stack_overflow(p);
19215
0
    }
19216
277k
    if (p->error_indicator) {
19217
0
        p->level--;
19218
0
        return NULL;
19219
0
    }
19220
277k
    expr_ty _res = NULL;
19221
277k
    int _mark = p->mark;
19222
277k
    { // target_value
19223
277k
        if (p->error_indicator) {
19224
0
            p->level--;
19225
0
            return NULL;
19226
0
        }
19227
277k
        D(fprintf(stderr, "%*c> attribute_or_subscript_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "target_value"));
19228
277k
        expr_ty a;
19229
277k
        if (
19230
277k
            (a = target_value_rule(p))  // target_value
19231
277k
        )
19232
116k
        {
19233
116k
            D(fprintf(stderr, "%*c+ attribute_or_subscript_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "target_value"));
19234
116k
            _res = _PyPegen_make_target ( p , a , ATTRIBUTE_OR_SUBSCRIPT_TARGETS );
19235
116k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
19236
0
                p->error_indicator = 1;
19237
0
                p->level--;
19238
0
                return NULL;
19239
0
            }
19240
116k
            goto done;
19241
116k
        }
19242
161k
        p->mark = _mark;
19243
161k
        D(fprintf(stderr, "%*c%s attribute_or_subscript_target[%d-%d]: %s failed!\n", p->level, ' ',
19244
161k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "target_value"));
19245
161k
    }
19246
161k
    _res = NULL;
19247
277k
  done:
19248
277k
    p->level--;
19249
277k
    return _res;
19250
161k
}
19251
19252
// target_value: primary !('(' | '[' | '.')
19253
static expr_ty
19254
target_value_rule(Parser *p)
19255
852k
{
19256
852k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
19257
0
        _Pypegen_stack_overflow(p);
19258
0
    }
19259
852k
    if (p->error_indicator) {
19260
0
        p->level--;
19261
0
        return NULL;
19262
0
    }
19263
852k
    expr_ty _res = NULL;
19264
852k
    int _mark = p->mark;
19265
852k
    { // primary !('(' | '[' | '.')
19266
852k
        if (p->error_indicator) {
19267
0
            p->level--;
19268
0
            return NULL;
19269
0
        }
19270
852k
        D(fprintf(stderr, "%*c> target_value[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary !('(' | '[' | '.')"));
19271
852k
        expr_ty a;
19272
852k
        if (
19273
852k
            (a = primary_rule(p))  // primary
19274
372k
            &&
19275
372k
            _PyPegen_lookahead(0, _tmp_100_rule, p)
19276
852k
        )
19277
367k
        {
19278
367k
            D(fprintf(stderr, "%*c+ target_value[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary !('(' | '[' | '.')"));
19279
367k
            _res = a;
19280
367k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
19281
0
                p->error_indicator = 1;
19282
0
                p->level--;
19283
0
                return NULL;
19284
0
            }
19285
367k
            goto done;
19286
367k
        }
19287
485k
        p->mark = _mark;
19288
485k
        D(fprintf(stderr, "%*c%s target_value[%d-%d]: %s failed!\n", p->level, ' ',
19289
485k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary !('(' | '[' | '.')"));
19290
485k
    }
19291
485k
    _res = NULL;
19292
852k
  done:
19293
852k
    p->level--;
19294
852k
    return _res;
19295
485k
}
19296
19297
// del_targets: ','.del_target+ ','?
19298
static asdl_expr_seq*
19299
del_targets_rule(Parser *p)
19300
1.00k
{
19301
1.00k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
19302
0
        _Pypegen_stack_overflow(p);
19303
0
    }
19304
1.00k
    if (p->error_indicator) {
19305
0
        p->level--;
19306
0
        return NULL;
19307
0
    }
19308
1.00k
    asdl_expr_seq* _res = NULL;
19309
1.00k
    int _mark = p->mark;
19310
1.00k
    { // ','.del_target+ ','?
19311
1.00k
        if (p->error_indicator) {
19312
0
            p->level--;
19313
0
            return NULL;
19314
0
        }
19315
1.00k
        D(fprintf(stderr, "%*c> del_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.del_target+ ','?"));
19316
1.00k
        void *_opt_var;
19317
1.00k
        UNUSED(_opt_var); // Silence compiler warnings
19318
1.00k
        asdl_expr_seq* a;
19319
1.00k
        if (
19320
1.00k
            (a = (asdl_expr_seq*)_gather_102_rule(p))  // ','.del_target+
19321
809
            &&
19322
809
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
19323
1.00k
        )
19324
767
        {
19325
767
            D(fprintf(stderr, "%*c+ del_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.del_target+ ','?"));
19326
767
            _res = a;
19327
767
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
19328
0
                p->error_indicator = 1;
19329
0
                p->level--;
19330
0
                return NULL;
19331
0
            }
19332
767
            goto done;
19333
767
        }
19334
242
        p->mark = _mark;
19335
242
        D(fprintf(stderr, "%*c%s del_targets[%d-%d]: %s failed!\n", p->level, ' ',
19336
242
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.del_target+ ','?"));
19337
242
    }
19338
242
    _res = NULL;
19339
1.00k
  done:
19340
1.00k
    p->level--;
19341
1.00k
    return _res;
19342
242
}
19343
19344
// del_target: target_value
19345
static expr_ty
19346
del_target_rule(Parser *p)
19347
2.19k
{
19348
2.19k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
19349
0
        _Pypegen_stack_overflow(p);
19350
0
    }
19351
2.19k
    if (p->error_indicator) {
19352
0
        p->level--;
19353
0
        return NULL;
19354
0
    }
19355
2.19k
    expr_ty _res = NULL;
19356
2.19k
    if (_PyPegen_is_memoized(p, del_target_type, &_res)) {
19357
2
        p->level--;
19358
2
        return _res;
19359
2
    }
19360
2.19k
    int _mark = p->mark;
19361
2.19k
    { // target_value
19362
2.19k
        if (p->error_indicator) {
19363
0
            p->level--;
19364
0
            return NULL;
19365
0
        }
19366
2.19k
        D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "target_value"));
19367
2.19k
        expr_ty a;
19368
2.19k
        if (
19369
2.19k
            (a = target_value_rule(p))  // target_value
19370
2.19k
        )
19371
1.90k
        {
19372
1.90k
            D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "target_value"));
19373
1.90k
            _res = _PyPegen_make_target ( p , a , DEL_TARGETS );
19374
1.90k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
19375
0
                p->error_indicator = 1;
19376
0
                p->level--;
19377
0
                return NULL;
19378
0
            }
19379
1.90k
            goto done;
19380
1.90k
        }
19381
290
        p->mark = _mark;
19382
290
        D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
19383
290
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "target_value"));
19384
290
    }
19385
290
    _res = NULL;
19386
2.19k
  done:
19387
2.19k
    _PyPegen_insert_memo(p, _mark, del_target_type, _res);
19388
2.19k
    p->level--;
19389
2.19k
    return _res;
19390
290
}
19391
19392
// type_expressions:
19393
//     | ','.expression+ ',' '*' expression ',' '**' expression
19394
//     | ','.expression+ ',' '*' expression
19395
//     | ','.expression+ ',' '**' expression
19396
//     | '*' expression ',' '**' expression
19397
//     | '*' expression
19398
//     | '**' expression
19399
//     | ','.expression+
19400
static asdl_expr_seq*
19401
type_expressions_rule(Parser *p)
19402
0
{
19403
0
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
19404
0
        _Pypegen_stack_overflow(p);
19405
0
    }
19406
0
    if (p->error_indicator) {
19407
0
        p->level--;
19408
0
        return NULL;
19409
0
    }
19410
0
    asdl_expr_seq* _res = NULL;
19411
0
    int _mark = p->mark;
19412
0
    { // ','.expression+ ',' '*' expression ',' '**' expression
19413
0
        if (p->error_indicator) {
19414
0
            p->level--;
19415
0
            return NULL;
19416
0
        }
19417
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
19418
0
        Token * _literal;
19419
0
        Token * _literal_1;
19420
0
        Token * _literal_2;
19421
0
        Token * _literal_3;
19422
0
        asdl_seq * a;
19423
0
        expr_ty b;
19424
0
        expr_ty c;
19425
0
        if (
19426
0
            (a = _gather_104_rule(p))  // ','.expression+
19427
0
            &&
19428
0
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
19429
0
            &&
19430
0
            (_literal_1 = _PyPegen_expect_token(p, 16))  // token='*'
19431
0
            &&
19432
0
            (b = expression_rule(p))  // expression
19433
0
            &&
19434
0
            (_literal_2 = _PyPegen_expect_token(p, 12))  // token=','
19435
0
            &&
19436
0
            (_literal_3 = _PyPegen_expect_token(p, 35))  // token='**'
19437
0
            &&
19438
0
            (c = expression_rule(p))  // expression
19439
0
        )
19440
0
        {
19441
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
19442
0
            _res = ( asdl_expr_seq* ) _PyPegen_seq_append_to_end ( p , CHECK ( asdl_seq* , _PyPegen_seq_append_to_end ( p , a , b ) ) , c );
19443
0
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
19444
0
                p->error_indicator = 1;
19445
0
                p->level--;
19446
0
                return NULL;
19447
0
            }
19448
0
            goto done;
19449
0
        }
19450
0
        p->mark = _mark;
19451
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
19452
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
19453
0
    }
19454
0
    { // ','.expression+ ',' '*' expression
19455
0
        if (p->error_indicator) {
19456
0
            p->level--;
19457
0
            return NULL;
19458
0
        }
19459
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression"));
19460
0
        Token * _literal;
19461
0
        Token * _literal_1;
19462
0
        asdl_seq * a;
19463
0
        expr_ty b;
19464
0
        if (
19465
0
            (a = _gather_104_rule(p))  // ','.expression+
19466
0
            &&
19467
0
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
19468
0
            &&
19469
0
            (_literal_1 = _PyPegen_expect_token(p, 16))  // token='*'
19470
0
            &&
19471
0
            (b = expression_rule(p))  // expression
19472
0
        )
19473
0
        {
19474
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression"));
19475
0
            _res = ( asdl_expr_seq* ) _PyPegen_seq_append_to_end ( p , a , b );
19476
0
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
19477
0
                p->error_indicator = 1;
19478
0
                p->level--;
19479
0
                return NULL;
19480
0
            }
19481
0
            goto done;
19482
0
        }
19483
0
        p->mark = _mark;
19484
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
19485
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '*' expression"));
19486
0
    }
19487
0
    { // ','.expression+ ',' '**' expression
19488
0
        if (p->error_indicator) {
19489
0
            p->level--;
19490
0
            return NULL;
19491
0
        }
19492
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '**' expression"));
19493
0
        Token * _literal;
19494
0
        Token * _literal_1;
19495
0
        asdl_seq * a;
19496
0
        expr_ty b;
19497
0
        if (
19498
0
            (a = _gather_104_rule(p))  // ','.expression+
19499
0
            &&
19500
0
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
19501
0
            &&
19502
0
            (_literal_1 = _PyPegen_expect_token(p, 35))  // token='**'
19503
0
            &&
19504
0
            (b = expression_rule(p))  // expression
19505
0
        )
19506
0
        {
19507
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '**' expression"));
19508
0
            _res = ( asdl_expr_seq* ) _PyPegen_seq_append_to_end ( p , a , b );
19509
0
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
19510
0
                p->error_indicator = 1;
19511
0
                p->level--;
19512
0
                return NULL;
19513
0
            }
19514
0
            goto done;
19515
0
        }
19516
0
        p->mark = _mark;
19517
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
19518
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '**' expression"));
19519
0
    }
19520
0
    { // '*' expression ',' '**' expression
19521
0
        if (p->error_indicator) {
19522
0
            p->level--;
19523
0
            return NULL;
19524
0
        }
19525
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression ',' '**' expression"));
19526
0
        Token * _literal;
19527
0
        Token * _literal_1;
19528
0
        Token * _literal_2;
19529
0
        expr_ty a;
19530
0
        expr_ty b;
19531
0
        if (
19532
0
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
19533
0
            &&
19534
0
            (a = expression_rule(p))  // expression
19535
0
            &&
19536
0
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
19537
0
            &&
19538
0
            (_literal_2 = _PyPegen_expect_token(p, 35))  // token='**'
19539
0
            &&
19540
0
            (b = expression_rule(p))  // expression
19541
0
        )
19542
0
        {
19543
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression ',' '**' expression"));
19544
0
            _res = ( asdl_expr_seq* ) _PyPegen_seq_append_to_end ( p , CHECK ( asdl_seq* , _PyPegen_singleton_seq ( p , a ) ) , b );
19545
0
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
19546
0
                p->error_indicator = 1;
19547
0
                p->level--;
19548
0
                return NULL;
19549
0
            }
19550
0
            goto done;
19551
0
        }
19552
0
        p->mark = _mark;
19553
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
19554
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression ',' '**' expression"));
19555
0
    }
19556
0
    { // '*' expression
19557
0
        if (p->error_indicator) {
19558
0
            p->level--;
19559
0
            return NULL;
19560
0
        }
19561
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression"));
19562
0
        Token * _literal;
19563
0
        expr_ty a;
19564
0
        if (
19565
0
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
19566
0
            &&
19567
0
            (a = expression_rule(p))  // expression
19568
0
        )
19569
0
        {
19570
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression"));
19571
0
            _res = ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , a );
19572
0
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
19573
0
                p->error_indicator = 1;
19574
0
                p->level--;
19575
0
                return NULL;
19576
0
            }
19577
0
            goto done;
19578
0
        }
19579
0
        p->mark = _mark;
19580
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
19581
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression"));
19582
0
    }
19583
0
    { // '**' expression
19584
0
        if (p->error_indicator) {
19585
0
            p->level--;
19586
0
            return NULL;
19587
0
        }
19588
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' expression"));
19589
0
        Token * _literal;
19590
0
        expr_ty a;
19591
0
        if (
19592
0
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
19593
0
            &&
19594
0
            (a = expression_rule(p))  // expression
19595
0
        )
19596
0
        {
19597
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' expression"));
19598
0
            _res = ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , a );
19599
0
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
19600
0
                p->error_indicator = 1;
19601
0
                p->level--;
19602
0
                return NULL;
19603
0
            }
19604
0
            goto done;
19605
0
        }
19606
0
        p->mark = _mark;
19607
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
19608
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression"));
19609
0
    }
19610
0
    { // ','.expression+
19611
0
        if (p->error_indicator) {
19612
0
            p->level--;
19613
0
            return NULL;
19614
0
        }
19615
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+"));
19616
0
        asdl_expr_seq* a;
19617
0
        if (
19618
0
            (a = (asdl_expr_seq*)_gather_104_rule(p))  // ','.expression+
19619
0
        )
19620
0
        {
19621
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+"));
19622
0
            _res = a;
19623
0
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
19624
0
                p->error_indicator = 1;
19625
0
                p->level--;
19626
0
                return NULL;
19627
0
            }
19628
0
            goto done;
19629
0
        }
19630
0
        p->mark = _mark;
19631
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
19632
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+"));
19633
0
    }
19634
0
    _res = NULL;
19635
0
  done:
19636
0
    p->level--;
19637
0
    return _res;
19638
0
}
19639
19640
// func_type_comment:
19641
//     | NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
19642
//     | invalid_double_type_comments
19643
//     | TYPE_COMMENT
19644
Py_LOCAL_SYMBOL Token*
19645
func_type_comment_rule(Parser *p)
19646
9.48k
{
19647
9.48k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
19648
0
        _Pypegen_stack_overflow(p);
19649
0
    }
19650
9.48k
    if (p->error_indicator) {
19651
0
        p->level--;
19652
0
        return NULL;
19653
0
    }
19654
9.48k
    Token* _res = NULL;
19655
9.48k
    int _mark = p->mark;
19656
9.48k
    { // NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
19657
9.48k
        if (p->error_indicator) {
19658
0
            p->level--;
19659
0
            return NULL;
19660
0
        }
19661
9.48k
        D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
19662
9.48k
        Token * newline_var;
19663
9.48k
        Token * t;
19664
9.48k
        if (
19665
9.48k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
19666
2.98k
            &&
19667
2.98k
            (t = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
19668
0
            &&
19669
0
            _PyPegen_lookahead(1, _tmp_105_rule, p)
19670
9.48k
        )
19671
0
        {
19672
0
            D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
19673
0
            _res = t;
19674
0
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
19675
0
                p->error_indicator = 1;
19676
0
                p->level--;
19677
0
                return NULL;
19678
0
            }
19679
0
            goto done;
19680
0
        }
19681
9.48k
        p->mark = _mark;
19682
9.48k
        D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
19683
9.48k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
19684
9.48k
    }
19685
9.48k
    if (p->call_invalid_rules) { // invalid_double_type_comments
19686
2.14k
        if (p->error_indicator) {
19687
0
            p->level--;
19688
0
            return NULL;
19689
0
        }
19690
2.14k
        D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_double_type_comments"));
19691
2.14k
        void *invalid_double_type_comments_var;
19692
2.14k
        if (
19693
2.14k
            (invalid_double_type_comments_var = invalid_double_type_comments_rule(p))  // invalid_double_type_comments
19694
2.14k
        )
19695
0
        {
19696
0
            D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_double_type_comments"));
19697
0
            _res = invalid_double_type_comments_var;
19698
0
            goto done;
19699
0
        }
19700
2.14k
        p->mark = _mark;
19701
2.14k
        D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
19702
2.14k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_double_type_comments"));
19703
2.14k
    }
19704
9.48k
    { // TYPE_COMMENT
19705
9.48k
        if (p->error_indicator) {
19706
2
            p->level--;
19707
2
            return NULL;
19708
2
        }
19709
9.47k
        D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT"));
19710
9.47k
        Token * type_comment_var;
19711
9.47k
        if (
19712
9.47k
            (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
19713
9.47k
        )
19714
0
        {
19715
0
            D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT"));
19716
0
            _res = type_comment_var;
19717
0
            goto done;
19718
0
        }
19719
9.47k
        p->mark = _mark;
19720
9.47k
        D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
19721
9.47k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TYPE_COMMENT"));
19722
9.47k
    }
19723
9.47k
    _res = NULL;
19724
9.47k
  done:
19725
9.47k
    p->level--;
19726
9.47k
    return _res;
19727
9.47k
}
19728
19729
// _loop0_1: NEWLINE
19730
static asdl_seq *
19731
_loop0_1_rule(Parser *p)
19732
172
{
19733
172
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
19734
0
        _Pypegen_stack_overflow(p);
19735
0
    }
19736
172
    if (p->error_indicator) {
19737
0
        p->level--;
19738
0
        return NULL;
19739
0
    }
19740
172
    void *_res = NULL;
19741
172
    int _mark = p->mark;
19742
172
    void **_children = NULL;
19743
172
    Py_ssize_t _children_capacity = 0;
19744
172
    Py_ssize_t _n = 0;
19745
172
    { // NEWLINE
19746
172
        if (p->error_indicator) {
19747
0
            p->level--;
19748
0
            return NULL;
19749
0
        }
19750
172
        D(fprintf(stderr, "%*c> _loop0_1[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
19751
172
        Token * newline_var;
19752
172
        while (
19753
172
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
19754
172
        )
19755
0
        {
19756
0
            _res = newline_var;
19757
0
            if (_n == _children_capacity) {
19758
0
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
19759
0
                    p->error_indicator = 1;
19760
0
                    PyErr_NoMemory();
19761
0
                    PyMem_Free(_children);
19762
0
                    p->level--;
19763
0
                    return NULL;
19764
0
                }
19765
0
            }
19766
0
            _children[_n++] = _res;
19767
0
            _mark = p->mark;
19768
0
        }
19769
172
        p->mark = _mark;
19770
172
        D(fprintf(stderr, "%*c%s _loop0_1[%d-%d]: %s failed!\n", p->level, ' ',
19771
172
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
19772
172
    }
19773
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
19774
172
    if (!_seq) {
19775
0
        p->error_indicator = 1;
19776
0
        PyErr_NoMemory();
19777
0
        PyMem_Free(_children);
19778
0
        p->level--;
19779
0
        return NULL;
19780
0
    }
19781
172
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
19782
172
    PyMem_Free(_children);
19783
172
    p->level--;
19784
172
    return _seq;
19785
172
}
19786
19787
// _loop1_2: statement
19788
static asdl_seq *
19789
_loop1_2_rule(Parser *p)
19790
145k
{
19791
145k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
19792
0
        _Pypegen_stack_overflow(p);
19793
0
    }
19794
145k
    if (p->error_indicator) {
19795
0
        p->level--;
19796
0
        return NULL;
19797
0
    }
19798
145k
    void *_res = NULL;
19799
145k
    int _mark = p->mark;
19800
145k
    void **_children = NULL;
19801
145k
    Py_ssize_t _children_capacity = 0;
19802
145k
    Py_ssize_t _n = 0;
19803
145k
    { // statement
19804
145k
        if (p->error_indicator) {
19805
0
            p->level--;
19806
0
            return NULL;
19807
0
        }
19808
145k
        D(fprintf(stderr, "%*c> _loop1_2[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement"));
19809
145k
        asdl_stmt_seq* statement_var;
19810
145k
        while (
19811
236k
            (statement_var = statement_rule(p))  // statement
19812
145k
        )
19813
90.7k
        {
19814
90.7k
            _res = statement_var;
19815
90.7k
            if (_n == _children_capacity) {
19816
33.7k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
19817
0
                    p->error_indicator = 1;
19818
0
                    PyErr_NoMemory();
19819
0
                    PyMem_Free(_children);
19820
0
                    p->level--;
19821
0
                    return NULL;
19822
0
                }
19823
33.7k
            }
19824
90.7k
            _children[_n++] = _res;
19825
90.7k
            _mark = p->mark;
19826
90.7k
        }
19827
145k
        p->mark = _mark;
19828
145k
        D(fprintf(stderr, "%*c%s _loop1_2[%d-%d]: %s failed!\n", p->level, ' ',
19829
145k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement"));
19830
145k
    }
19831
145k
    if (_n == 0 || p->error_indicator) {
19832
127k
        PyMem_Free(_children);
19833
127k
        p->level--;
19834
127k
        return NULL;
19835
127k
    }
19836
18.5k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
19837
18.5k
    if (!_seq) {
19838
0
        p->error_indicator = 1;
19839
0
        PyErr_NoMemory();
19840
0
        PyMem_Free(_children);
19841
0
        p->level--;
19842
0
        return NULL;
19843
0
    }
19844
105k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
19845
18.5k
    PyMem_Free(_children);
19846
18.5k
    p->level--;
19847
18.5k
    return _seq;
19848
18.5k
}
19849
19850
// _loop0_3: ';' simple_stmt
19851
static asdl_seq *
19852
_loop0_3_rule(Parser *p)
19853
13.4k
{
19854
13.4k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
19855
0
        _Pypegen_stack_overflow(p);
19856
0
    }
19857
13.4k
    if (p->error_indicator) {
19858
0
        p->level--;
19859
0
        return NULL;
19860
0
    }
19861
13.4k
    void *_res = NULL;
19862
13.4k
    int _mark = p->mark;
19863
13.4k
    void **_children = NULL;
19864
13.4k
    Py_ssize_t _children_capacity = 0;
19865
13.4k
    Py_ssize_t _n = 0;
19866
13.4k
    { // ';' simple_stmt
19867
13.4k
        if (p->error_indicator) {
19868
0
            p->level--;
19869
0
            return NULL;
19870
0
        }
19871
13.4k
        D(fprintf(stderr, "%*c> _loop0_3[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';' simple_stmt"));
19872
13.4k
        Token * _literal;
19873
13.4k
        stmt_ty elem;
19874
13.4k
        while (
19875
50.2k
            (_literal = _PyPegen_expect_token(p, 13))  // token=';'
19876
38.1k
            &&
19877
38.1k
            (elem = simple_stmt_rule(p))  // simple_stmt
19878
13.4k
        )
19879
36.8k
        {
19880
36.8k
            _res = elem;
19881
36.8k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
19882
0
                p->error_indicator = 1;
19883
0
                PyMem_Free(_children);
19884
0
                p->level--;
19885
0
                return NULL;
19886
0
            }
19887
36.8k
            if (_n == _children_capacity) {
19888
5.95k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
19889
0
                    p->error_indicator = 1;
19890
0
                    PyErr_NoMemory();
19891
0
                    PyMem_Free(_children);
19892
0
                    p->level--;
19893
0
                    return NULL;
19894
0
                }
19895
5.95k
            }
19896
36.8k
            _children[_n++] = _res;
19897
36.8k
            _mark = p->mark;
19898
36.8k
        }
19899
13.4k
        p->mark = _mark;
19900
13.4k
        D(fprintf(stderr, "%*c%s _loop0_3[%d-%d]: %s failed!\n", p->level, ' ',
19901
13.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';' simple_stmt"));
19902
13.4k
    }
19903
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
19904
13.4k
    if (!_seq) {
19905
0
        p->error_indicator = 1;
19906
0
        PyErr_NoMemory();
19907
0
        PyMem_Free(_children);
19908
0
        p->level--;
19909
0
        return NULL;
19910
0
    }
19911
50.2k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
19912
13.4k
    PyMem_Free(_children);
19913
13.4k
    p->level--;
19914
13.4k
    return _seq;
19915
13.4k
}
19916
19917
// _gather_4: simple_stmt _loop0_3
19918
static asdl_seq *
19919
_gather_4_rule(Parser *p)
19920
145k
{
19921
145k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
19922
0
        _Pypegen_stack_overflow(p);
19923
0
    }
19924
145k
    if (p->error_indicator) {
19925
0
        p->level--;
19926
0
        return NULL;
19927
0
    }
19928
145k
    asdl_seq * _res = NULL;
19929
145k
    int _mark = p->mark;
19930
145k
    { // simple_stmt _loop0_3
19931
145k
        if (p->error_indicator) {
19932
0
            p->level--;
19933
0
            return NULL;
19934
0
        }
19935
145k
        D(fprintf(stderr, "%*c> _gather_4[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt _loop0_3"));
19936
145k
        stmt_ty elem;
19937
145k
        asdl_seq * seq;
19938
145k
        if (
19939
145k
            (elem = simple_stmt_rule(p))  // simple_stmt
19940
13.4k
            &&
19941
13.4k
            (seq = _loop0_3_rule(p))  // _loop0_3
19942
145k
        )
19943
13.4k
        {
19944
13.4k
            D(fprintf(stderr, "%*c+ _gather_4[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt _loop0_3"));
19945
13.4k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
19946
13.4k
            goto done;
19947
13.4k
        }
19948
131k
        p->mark = _mark;
19949
131k
        D(fprintf(stderr, "%*c%s _gather_4[%d-%d]: %s failed!\n", p->level, ' ',
19950
131k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt _loop0_3"));
19951
131k
    }
19952
131k
    _res = NULL;
19953
145k
  done:
19954
145k
    p->level--;
19955
145k
    return _res;
19956
131k
}
19957
19958
// _tmp_5: 'import' | 'from' | "lazy"
19959
static void *
19960
_tmp_5_rule(Parser *p)
19961
265k
{
19962
265k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
19963
0
        _Pypegen_stack_overflow(p);
19964
0
    }
19965
265k
    if (p->error_indicator) {
19966
0
        p->level--;
19967
0
        return NULL;
19968
0
    }
19969
265k
    void * _res = NULL;
19970
265k
    int _mark = p->mark;
19971
265k
    { // 'import'
19972
265k
        if (p->error_indicator) {
19973
0
            p->level--;
19974
0
            return NULL;
19975
0
        }
19976
265k
        D(fprintf(stderr, "%*c> _tmp_5[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import'"));
19977
265k
        Token * _keyword;
19978
265k
        if (
19979
265k
            (_keyword = _PyPegen_expect_token(p, 500))  // token='import'
19980
265k
        )
19981
2.71k
        {
19982
2.71k
            D(fprintf(stderr, "%*c+ _tmp_5[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import'"));
19983
2.71k
            _res = _keyword;
19984
2.71k
            goto done;
19985
2.71k
        }
19986
262k
        p->mark = _mark;
19987
262k
        D(fprintf(stderr, "%*c%s _tmp_5[%d-%d]: %s failed!\n", p->level, ' ',
19988
262k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import'"));
19989
262k
    }
19990
0
    { // 'from'
19991
262k
        if (p->error_indicator) {
19992
0
            p->level--;
19993
0
            return NULL;
19994
0
        }
19995
262k
        D(fprintf(stderr, "%*c> _tmp_5[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from'"));
19996
262k
        Token * _keyword;
19997
262k
        if (
19998
262k
            (_keyword = _PyPegen_expect_token(p, 501))  // token='from'
19999
262k
        )
20000
6.13k
        {
20001
6.13k
            D(fprintf(stderr, "%*c+ _tmp_5[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from'"));
20002
6.13k
            _res = _keyword;
20003
6.13k
            goto done;
20004
6.13k
        }
20005
256k
        p->mark = _mark;
20006
256k
        D(fprintf(stderr, "%*c%s _tmp_5[%d-%d]: %s failed!\n", p->level, ' ',
20007
256k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from'"));
20008
256k
    }
20009
0
    { // "lazy"
20010
256k
        if (p->error_indicator) {
20011
0
            p->level--;
20012
0
            return NULL;
20013
0
        }
20014
256k
        D(fprintf(stderr, "%*c> _tmp_5[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"lazy\""));
20015
256k
        expr_ty _keyword;
20016
256k
        if (
20017
256k
            (_keyword = _PyPegen_expect_soft_keyword(p, "lazy"))  // soft_keyword='"lazy"'
20018
256k
        )
20019
605
        {
20020
605
            D(fprintf(stderr, "%*c+ _tmp_5[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"lazy\""));
20021
605
            _res = _keyword;
20022
605
            goto done;
20023
605
        }
20024
255k
        p->mark = _mark;
20025
255k
        D(fprintf(stderr, "%*c%s _tmp_5[%d-%d]: %s failed!\n", p->level, ' ',
20026
255k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"lazy\""));
20027
255k
    }
20028
255k
    _res = NULL;
20029
265k
  done:
20030
265k
    p->level--;
20031
265k
    return _res;
20032
255k
}
20033
20034
// _tmp_6: 'def' | '@' | 'async'
20035
static void *
20036
_tmp_6_rule(Parser *p)
20037
236k
{
20038
236k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
20039
0
        _Pypegen_stack_overflow(p);
20040
0
    }
20041
236k
    if (p->error_indicator) {
20042
0
        p->level--;
20043
0
        return NULL;
20044
0
    }
20045
236k
    void * _res = NULL;
20046
236k
    int _mark = p->mark;
20047
236k
    { // 'def'
20048
236k
        if (p->error_indicator) {
20049
0
            p->level--;
20050
0
            return NULL;
20051
0
        }
20052
236k
        D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'def'"));
20053
236k
        Token * _keyword;
20054
236k
        if (
20055
236k
            (_keyword = _PyPegen_expect_token(p, 512))  // token='def'
20056
236k
        )
20057
8.87k
        {
20058
8.87k
            D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'def'"));
20059
8.87k
            _res = _keyword;
20060
8.87k
            goto done;
20061
8.87k
        }
20062
227k
        p->mark = _mark;
20063
227k
        D(fprintf(stderr, "%*c%s _tmp_6[%d-%d]: %s failed!\n", p->level, ' ',
20064
227k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'def'"));
20065
227k
    }
20066
0
    { // '@'
20067
227k
        if (p->error_indicator) {
20068
825
            p->level--;
20069
825
            return NULL;
20070
825
        }
20071
226k
        D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
20072
226k
        Token * _literal;
20073
226k
        if (
20074
226k
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
20075
226k
        )
20076
1.21k
        {
20077
1.21k
            D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
20078
1.21k
            _res = _literal;
20079
1.21k
            goto done;
20080
1.21k
        }
20081
225k
        p->mark = _mark;
20082
225k
        D(fprintf(stderr, "%*c%s _tmp_6[%d-%d]: %s failed!\n", p->level, ' ',
20083
225k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
20084
225k
    }
20085
0
    { // 'async'
20086
225k
        if (p->error_indicator) {
20087
0
            p->level--;
20088
0
            return NULL;
20089
0
        }
20090
225k
        D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'"));
20091
225k
        Token * _keyword;
20092
225k
        if (
20093
225k
            (_keyword = _PyPegen_expect_token(p, 513))  // token='async'
20094
225k
        )
20095
1.71k
        {
20096
1.71k
            D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'"));
20097
1.71k
            _res = _keyword;
20098
1.71k
            goto done;
20099
1.71k
        }
20100
224k
        p->mark = _mark;
20101
224k
        D(fprintf(stderr, "%*c%s _tmp_6[%d-%d]: %s failed!\n", p->level, ' ',
20102
224k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'"));
20103
224k
    }
20104
224k
    _res = NULL;
20105
235k
  done:
20106
235k
    p->level--;
20107
235k
    return _res;
20108
224k
}
20109
20110
// _tmp_7: 'class' | '@'
20111
static void *
20112
_tmp_7_rule(Parser *p)
20113
222k
{
20114
222k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
20115
0
        _Pypegen_stack_overflow(p);
20116
0
    }
20117
222k
    if (p->error_indicator) {
20118
0
        p->level--;
20119
0
        return NULL;
20120
0
    }
20121
222k
    void * _res = NULL;
20122
222k
    int _mark = p->mark;
20123
222k
    { // 'class'
20124
222k
        if (p->error_indicator) {
20125
0
            p->level--;
20126
0
            return NULL;
20127
0
        }
20128
222k
        D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class'"));
20129
222k
        Token * _keyword;
20130
222k
        if (
20131
222k
            (_keyword = _PyPegen_expect_token(p, 515))  // token='class'
20132
222k
        )
20133
2.60k
        {
20134
2.60k
            D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class'"));
20135
2.60k
            _res = _keyword;
20136
2.60k
            goto done;
20137
2.60k
        }
20138
219k
        p->mark = _mark;
20139
219k
        D(fprintf(stderr, "%*c%s _tmp_7[%d-%d]: %s failed!\n", p->level, ' ',
20140
219k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class'"));
20141
219k
    }
20142
0
    { // '@'
20143
219k
        if (p->error_indicator) {
20144
0
            p->level--;
20145
0
            return NULL;
20146
0
        }
20147
219k
        D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
20148
219k
        Token * _literal;
20149
219k
        if (
20150
219k
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
20151
219k
        )
20152
537
        {
20153
537
            D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
20154
537
            _res = _literal;
20155
537
            goto done;
20156
537
        }
20157
219k
        p->mark = _mark;
20158
219k
        D(fprintf(stderr, "%*c%s _tmp_7[%d-%d]: %s failed!\n", p->level, ' ',
20159
219k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
20160
219k
    }
20161
219k
    _res = NULL;
20162
222k
  done:
20163
222k
    p->level--;
20164
222k
    return _res;
20165
219k
}
20166
20167
// _tmp_8: 'with' | 'async'
20168
static void *
20169
_tmp_8_rule(Parser *p)
20170
219k
{
20171
219k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
20172
0
        _Pypegen_stack_overflow(p);
20173
0
    }
20174
219k
    if (p->error_indicator) {
20175
0
        p->level--;
20176
0
        return NULL;
20177
0
    }
20178
219k
    void * _res = NULL;
20179
219k
    int _mark = p->mark;
20180
219k
    { // 'with'
20181
219k
        if (p->error_indicator) {
20182
0
            p->level--;
20183
0
            return NULL;
20184
0
        }
20185
219k
        D(fprintf(stderr, "%*c> _tmp_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with'"));
20186
219k
        Token * _keyword;
20187
219k
        if (
20188
219k
            (_keyword = _PyPegen_expect_token(p, 516))  // token='with'
20189
219k
        )
20190
4.38k
        {
20191
4.38k
            D(fprintf(stderr, "%*c+ _tmp_8[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with'"));
20192
4.38k
            _res = _keyword;
20193
4.38k
            goto done;
20194
4.38k
        }
20195
215k
        p->mark = _mark;
20196
215k
        D(fprintf(stderr, "%*c%s _tmp_8[%d-%d]: %s failed!\n", p->level, ' ',
20197
215k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with'"));
20198
215k
    }
20199
0
    { // 'async'
20200
215k
        if (p->error_indicator) {
20201
0
            p->level--;
20202
0
            return NULL;
20203
0
        }
20204
215k
        D(fprintf(stderr, "%*c> _tmp_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'"));
20205
215k
        Token * _keyword;
20206
215k
        if (
20207
215k
            (_keyword = _PyPegen_expect_token(p, 513))  // token='async'
20208
215k
        )
20209
1.07k
        {
20210
1.07k
            D(fprintf(stderr, "%*c+ _tmp_8[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'"));
20211
1.07k
            _res = _keyword;
20212
1.07k
            goto done;
20213
1.07k
        }
20214
214k
        p->mark = _mark;
20215
214k
        D(fprintf(stderr, "%*c%s _tmp_8[%d-%d]: %s failed!\n", p->level, ' ',
20216
214k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'"));
20217
214k
    }
20218
214k
    _res = NULL;
20219
219k
  done:
20220
219k
    p->level--;
20221
219k
    return _res;
20222
214k
}
20223
20224
// _tmp_9: 'for' | 'async'
20225
static void *
20226
_tmp_9_rule(Parser *p)
20227
214k
{
20228
214k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
20229
0
        _Pypegen_stack_overflow(p);
20230
0
    }
20231
214k
    if (p->error_indicator) {
20232
0
        p->level--;
20233
0
        return NULL;
20234
0
    }
20235
214k
    void * _res = NULL;
20236
214k
    int _mark = p->mark;
20237
214k
    { // 'for'
20238
214k
        if (p->error_indicator) {
20239
0
            p->level--;
20240
0
            return NULL;
20241
0
        }
20242
214k
        D(fprintf(stderr, "%*c> _tmp_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for'"));
20243
214k
        Token * _keyword;
20244
214k
        if (
20245
214k
            (_keyword = _PyPegen_expect_token(p, 517))  // token='for'
20246
214k
        )
20247
1.11k
        {
20248
1.11k
            D(fprintf(stderr, "%*c+ _tmp_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for'"));
20249
1.11k
            _res = _keyword;
20250
1.11k
            goto done;
20251
1.11k
        }
20252
213k
        p->mark = _mark;
20253
213k
        D(fprintf(stderr, "%*c%s _tmp_9[%d-%d]: %s failed!\n", p->level, ' ',
20254
213k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for'"));
20255
213k
    }
20256
0
    { // 'async'
20257
213k
        if (p->error_indicator) {
20258
0
            p->level--;
20259
0
            return NULL;
20260
0
        }
20261
213k
        D(fprintf(stderr, "%*c> _tmp_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'"));
20262
213k
        Token * _keyword;
20263
213k
        if (
20264
213k
            (_keyword = _PyPegen_expect_token(p, 513))  // token='async'
20265
213k
        )
20266
377
        {
20267
377
            D(fprintf(stderr, "%*c+ _tmp_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'"));
20268
377
            _res = _keyword;
20269
377
            goto done;
20270
377
        }
20271
213k
        p->mark = _mark;
20272
213k
        D(fprintf(stderr, "%*c%s _tmp_9[%d-%d]: %s failed!\n", p->level, ' ',
20273
213k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'"));
20274
213k
    }
20275
213k
    _res = NULL;
20276
214k
  done:
20277
214k
    p->level--;
20278
214k
    return _res;
20279
213k
}
20280
20281
// _tmp_10: '=' annotated_rhs
20282
static void *
20283
_tmp_10_rule(Parser *p)
20284
3.45k
{
20285
3.45k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
20286
0
        _Pypegen_stack_overflow(p);
20287
0
    }
20288
3.45k
    if (p->error_indicator) {
20289
0
        p->level--;
20290
0
        return NULL;
20291
0
    }
20292
3.45k
    void * _res = NULL;
20293
3.45k
    int _mark = p->mark;
20294
3.45k
    { // '=' annotated_rhs
20295
3.45k
        if (p->error_indicator) {
20296
0
            p->level--;
20297
0
            return NULL;
20298
0
        }
20299
3.45k
        D(fprintf(stderr, "%*c> _tmp_10[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
20300
3.45k
        Token * _literal;
20301
3.45k
        expr_ty d;
20302
3.45k
        if (
20303
3.45k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
20304
734
            &&
20305
734
            (d = annotated_rhs_rule(p))  // annotated_rhs
20306
3.45k
        )
20307
598
        {
20308
598
            D(fprintf(stderr, "%*c+ _tmp_10[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
20309
598
            _res = d;
20310
598
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
20311
0
                p->error_indicator = 1;
20312
0
                p->level--;
20313
0
                return NULL;
20314
0
            }
20315
598
            goto done;
20316
598
        }
20317
2.85k
        p->mark = _mark;
20318
2.85k
        D(fprintf(stderr, "%*c%s _tmp_10[%d-%d]: %s failed!\n", p->level, ' ',
20319
2.85k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' annotated_rhs"));
20320
2.85k
    }
20321
2.85k
    _res = NULL;
20322
3.45k
  done:
20323
3.45k
    p->level--;
20324
3.45k
    return _res;
20325
2.85k
}
20326
20327
// _tmp_11: '(' single_target ')' | attribute_or_subscript_target
20328
static void *
20329
_tmp_11_rule(Parser *p)
20330
278k
{
20331
278k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
20332
0
        _Pypegen_stack_overflow(p);
20333
0
    }
20334
278k
    if (p->error_indicator) {
20335
0
        p->level--;
20336
0
        return NULL;
20337
0
    }
20338
278k
    void * _res = NULL;
20339
278k
    int _mark = p->mark;
20340
278k
    { // '(' single_target ')'
20341
278k
        if (p->error_indicator) {
20342
0
            p->level--;
20343
0
            return NULL;
20344
0
        }
20345
278k
        D(fprintf(stderr, "%*c> _tmp_11[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
20346
278k
        Token * _literal;
20347
278k
        Token * _literal_1;
20348
278k
        expr_ty b;
20349
278k
        if (
20350
278k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
20351
3.89k
            &&
20352
3.89k
            (b = single_target_rule(p))  // single_target
20353
1.65k
            &&
20354
1.65k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
20355
278k
        )
20356
376
        {
20357
376
            D(fprintf(stderr, "%*c+ _tmp_11[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
20358
376
            _res = b;
20359
376
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
20360
0
                p->error_indicator = 1;
20361
0
                p->level--;
20362
0
                return NULL;
20363
0
            }
20364
376
            goto done;
20365
376
        }
20366
277k
        p->mark = _mark;
20367
277k
        D(fprintf(stderr, "%*c%s _tmp_11[%d-%d]: %s failed!\n", p->level, ' ',
20368
277k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' single_target ')'"));
20369
277k
    }
20370
0
    { // attribute_or_subscript_target
20371
277k
        if (p->error_indicator) {
20372
166
            p->level--;
20373
166
            return NULL;
20374
166
        }
20375
277k
        D(fprintf(stderr, "%*c> _tmp_11[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attribute_or_subscript_target"));
20376
277k
        expr_ty attribute_or_subscript_target_var;
20377
277k
        if (
20378
277k
            (attribute_or_subscript_target_var = attribute_or_subscript_target_rule(p))  // attribute_or_subscript_target
20379
277k
        )
20380
3.03k
        {
20381
3.03k
            D(fprintf(stderr, "%*c+ _tmp_11[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attribute_or_subscript_target"));
20382
3.03k
            _res = attribute_or_subscript_target_var;
20383
3.03k
            goto done;
20384
3.03k
        }
20385
274k
        p->mark = _mark;
20386
274k
        D(fprintf(stderr, "%*c%s _tmp_11[%d-%d]: %s failed!\n", p->level, ' ',
20387
274k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attribute_or_subscript_target"));
20388
274k
    }
20389
274k
    _res = NULL;
20390
278k
  done:
20391
278k
    p->level--;
20392
278k
    return _res;
20393
274k
}
20394
20395
// _loop1_12: (star_targets '=')
20396
static asdl_seq *
20397
_loop1_12_rule(Parser *p)
20398
274k
{
20399
274k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
20400
0
        _Pypegen_stack_overflow(p);
20401
0
    }
20402
274k
    if (p->error_indicator) {
20403
0
        p->level--;
20404
0
        return NULL;
20405
0
    }
20406
274k
    void *_res = NULL;
20407
274k
    int _mark = p->mark;
20408
274k
    void **_children = NULL;
20409
274k
    Py_ssize_t _children_capacity = 0;
20410
274k
    Py_ssize_t _n = 0;
20411
274k
    { // (star_targets '=')
20412
274k
        if (p->error_indicator) {
20413
0
            p->level--;
20414
0
            return NULL;
20415
0
        }
20416
274k
        D(fprintf(stderr, "%*c> _loop1_12[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
20417
274k
        void *_tmp_178_var;
20418
274k
        while (
20419
279k
            (_tmp_178_var = _tmp_178_rule(p))  // star_targets '='
20420
274k
        )
20421
5.40k
        {
20422
5.40k
            _res = _tmp_178_var;
20423
5.40k
            if (_n == _children_capacity) {
20424
4.57k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
20425
0
                    p->error_indicator = 1;
20426
0
                    PyErr_NoMemory();
20427
0
                    PyMem_Free(_children);
20428
0
                    p->level--;
20429
0
                    return NULL;
20430
0
                }
20431
4.57k
            }
20432
5.40k
            _children[_n++] = _res;
20433
5.40k
            _mark = p->mark;
20434
5.40k
        }
20435
274k
        p->mark = _mark;
20436
274k
        D(fprintf(stderr, "%*c%s _loop1_12[%d-%d]: %s failed!\n", p->level, ' ',
20437
274k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
20438
274k
    }
20439
274k
    if (_n == 0 || p->error_indicator) {
20440
270k
        PyMem_Free(_children);
20441
270k
        p->level--;
20442
270k
        return NULL;
20443
270k
    }
20444
4.15k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
20445
4.15k
    if (!_seq) {
20446
0
        p->error_indicator = 1;
20447
0
        PyErr_NoMemory();
20448
0
        PyMem_Free(_children);
20449
0
        p->level--;
20450
0
        return NULL;
20451
0
    }
20452
9.43k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
20453
4.15k
    PyMem_Free(_children);
20454
4.15k
    p->level--;
20455
4.15k
    return _seq;
20456
4.15k
}
20457
20458
// _loop0_13: ',' NAME
20459
static asdl_seq *
20460
_loop0_13_rule(Parser *p)
20461
1.13k
{
20462
1.13k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
20463
0
        _Pypegen_stack_overflow(p);
20464
0
    }
20465
1.13k
    if (p->error_indicator) {
20466
0
        p->level--;
20467
0
        return NULL;
20468
0
    }
20469
1.13k
    void *_res = NULL;
20470
1.13k
    int _mark = p->mark;
20471
1.13k
    void **_children = NULL;
20472
1.13k
    Py_ssize_t _children_capacity = 0;
20473
1.13k
    Py_ssize_t _n = 0;
20474
1.13k
    { // ',' NAME
20475
1.13k
        if (p->error_indicator) {
20476
0
            p->level--;
20477
0
            return NULL;
20478
0
        }
20479
1.13k
        D(fprintf(stderr, "%*c> _loop0_13[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' NAME"));
20480
1.13k
        Token * _literal;
20481
1.13k
        expr_ty elem;
20482
1.13k
        while (
20483
4.00k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20484
2.90k
            &&
20485
2.90k
            (elem = _PyPegen_name_token(p))  // NAME
20486
1.13k
        )
20487
2.86k
        {
20488
2.86k
            _res = elem;
20489
2.86k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
20490
0
                p->error_indicator = 1;
20491
0
                PyMem_Free(_children);
20492
0
                p->level--;
20493
0
                return NULL;
20494
0
            }
20495
2.86k
            if (_n == _children_capacity) {
20496
1.42k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
20497
0
                    p->error_indicator = 1;
20498
0
                    PyErr_NoMemory();
20499
0
                    PyMem_Free(_children);
20500
0
                    p->level--;
20501
0
                    return NULL;
20502
0
                }
20503
1.42k
            }
20504
2.86k
            _children[_n++] = _res;
20505
2.86k
            _mark = p->mark;
20506
2.86k
        }
20507
1.13k
        p->mark = _mark;
20508
1.13k
        D(fprintf(stderr, "%*c%s _loop0_13[%d-%d]: %s failed!\n", p->level, ' ',
20509
1.13k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' NAME"));
20510
1.13k
    }
20511
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
20512
1.13k
    if (!_seq) {
20513
0
        p->error_indicator = 1;
20514
0
        PyErr_NoMemory();
20515
0
        PyMem_Free(_children);
20516
0
        p->level--;
20517
0
        return NULL;
20518
0
    }
20519
4.00k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
20520
1.13k
    PyMem_Free(_children);
20521
1.13k
    p->level--;
20522
1.13k
    return _seq;
20523
1.13k
}
20524
20525
// _gather_14: NAME _loop0_13
20526
static asdl_seq *
20527
_gather_14_rule(Parser *p)
20528
1.14k
{
20529
1.14k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
20530
0
        _Pypegen_stack_overflow(p);
20531
0
    }
20532
1.14k
    if (p->error_indicator) {
20533
0
        p->level--;
20534
0
        return NULL;
20535
0
    }
20536
1.14k
    asdl_seq * _res = NULL;
20537
1.14k
    int _mark = p->mark;
20538
1.14k
    { // NAME _loop0_13
20539
1.14k
        if (p->error_indicator) {
20540
0
            p->level--;
20541
0
            return NULL;
20542
0
        }
20543
1.14k
        D(fprintf(stderr, "%*c> _gather_14[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME _loop0_13"));
20544
1.14k
        expr_ty elem;
20545
1.14k
        asdl_seq * seq;
20546
1.14k
        if (
20547
1.14k
            (elem = _PyPegen_name_token(p))  // NAME
20548
1.13k
            &&
20549
1.13k
            (seq = _loop0_13_rule(p))  // _loop0_13
20550
1.14k
        )
20551
1.13k
        {
20552
1.13k
            D(fprintf(stderr, "%*c+ _gather_14[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME _loop0_13"));
20553
1.13k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
20554
1.13k
            goto done;
20555
1.13k
        }
20556
12
        p->mark = _mark;
20557
12
        D(fprintf(stderr, "%*c%s _gather_14[%d-%d]: %s failed!\n", p->level, ' ',
20558
12
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME _loop0_13"));
20559
12
    }
20560
12
    _res = NULL;
20561
1.14k
  done:
20562
1.14k
    p->level--;
20563
1.14k
    return _res;
20564
12
}
20565
20566
// _tmp_15: ';' | NEWLINE
20567
static void *
20568
_tmp_15_rule(Parser *p)
20569
767
{
20570
767
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
20571
0
        _Pypegen_stack_overflow(p);
20572
0
    }
20573
767
    if (p->error_indicator) {
20574
0
        p->level--;
20575
0
        return NULL;
20576
0
    }
20577
767
    void * _res = NULL;
20578
767
    int _mark = p->mark;
20579
767
    { // ';'
20580
767
        if (p->error_indicator) {
20581
0
            p->level--;
20582
0
            return NULL;
20583
0
        }
20584
767
        D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';'"));
20585
767
        Token * _literal;
20586
767
        if (
20587
767
            (_literal = _PyPegen_expect_token(p, 13))  // token=';'
20588
767
        )
20589
275
        {
20590
275
            D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "';'"));
20591
275
            _res = _literal;
20592
275
            goto done;
20593
275
        }
20594
492
        p->mark = _mark;
20595
492
        D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
20596
492
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';'"));
20597
492
    }
20598
0
    { // NEWLINE
20599
492
        if (p->error_indicator) {
20600
0
            p->level--;
20601
0
            return NULL;
20602
0
        }
20603
492
        D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
20604
492
        Token * newline_var;
20605
492
        if (
20606
492
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20607
492
        )
20608
344
        {
20609
344
            D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
20610
344
            _res = newline_var;
20611
344
            goto done;
20612
344
        }
20613
148
        p->mark = _mark;
20614
148
        D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
20615
148
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
20616
148
    }
20617
148
    _res = NULL;
20618
767
  done:
20619
767
    p->level--;
20620
767
    return _res;
20621
148
}
20622
20623
// _tmp_16: ',' expression
20624
static void *
20625
_tmp_16_rule(Parser *p)
20626
9.16k
{
20627
9.16k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
20628
0
        _Pypegen_stack_overflow(p);
20629
0
    }
20630
9.16k
    if (p->error_indicator) {
20631
0
        p->level--;
20632
0
        return NULL;
20633
0
    }
20634
9.16k
    void * _res = NULL;
20635
9.16k
    int _mark = p->mark;
20636
9.16k
    { // ',' expression
20637
9.16k
        if (p->error_indicator) {
20638
0
            p->level--;
20639
0
            return NULL;
20640
0
        }
20641
9.16k
        D(fprintf(stderr, "%*c> _tmp_16[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
20642
9.16k
        Token * _literal;
20643
9.16k
        expr_ty z;
20644
9.16k
        if (
20645
9.16k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20646
6.09k
            &&
20647
6.09k
            (z = expression_rule(p))  // expression
20648
9.16k
        )
20649
4.18k
        {
20650
4.18k
            D(fprintf(stderr, "%*c+ _tmp_16[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression"));
20651
4.18k
            _res = z;
20652
4.18k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
20653
0
                p->error_indicator = 1;
20654
0
                p->level--;
20655
0
                return NULL;
20656
0
            }
20657
4.18k
            goto done;
20658
4.18k
        }
20659
4.97k
        p->mark = _mark;
20660
4.97k
        D(fprintf(stderr, "%*c%s _tmp_16[%d-%d]: %s failed!\n", p->level, ' ',
20661
4.97k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
20662
4.97k
    }
20663
4.97k
    _res = NULL;
20664
9.16k
  done:
20665
9.16k
    p->level--;
20666
9.16k
    return _res;
20667
4.97k
}
20668
20669
// _loop0_17: ('.' | '...')
20670
static asdl_seq *
20671
_loop0_17_rule(Parser *p)
20672
6.18k
{
20673
6.18k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
20674
0
        _Pypegen_stack_overflow(p);
20675
0
    }
20676
6.18k
    if (p->error_indicator) {
20677
0
        p->level--;
20678
0
        return NULL;
20679
0
    }
20680
6.18k
    void *_res = NULL;
20681
6.18k
    int _mark = p->mark;
20682
6.18k
    void **_children = NULL;
20683
6.18k
    Py_ssize_t _children_capacity = 0;
20684
6.18k
    Py_ssize_t _n = 0;
20685
6.18k
    { // ('.' | '...')
20686
6.18k
        if (p->error_indicator) {
20687
0
            p->level--;
20688
0
            return NULL;
20689
0
        }
20690
6.18k
        D(fprintf(stderr, "%*c> _loop0_17[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')"));
20691
6.18k
        void *_tmp_179_var;
20692
6.18k
        while (
20693
18.6k
            (_tmp_179_var = _tmp_179_rule(p))  // '.' | '...'
20694
6.18k
        )
20695
12.4k
        {
20696
12.4k
            _res = _tmp_179_var;
20697
12.4k
            if (_n == _children_capacity) {
20698
5.78k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
20699
0
                    p->error_indicator = 1;
20700
0
                    PyErr_NoMemory();
20701
0
                    PyMem_Free(_children);
20702
0
                    p->level--;
20703
0
                    return NULL;
20704
0
                }
20705
5.78k
            }
20706
12.4k
            _children[_n++] = _res;
20707
12.4k
            _mark = p->mark;
20708
12.4k
        }
20709
6.18k
        p->mark = _mark;
20710
6.18k
        D(fprintf(stderr, "%*c%s _loop0_17[%d-%d]: %s failed!\n", p->level, ' ',
20711
6.18k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('.' | '...')"));
20712
6.18k
    }
20713
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
20714
6.18k
    if (!_seq) {
20715
0
        p->error_indicator = 1;
20716
0
        PyErr_NoMemory();
20717
0
        PyMem_Free(_children);
20718
0
        p->level--;
20719
0
        return NULL;
20720
0
    }
20721
18.6k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
20722
6.18k
    PyMem_Free(_children);
20723
6.18k
    p->level--;
20724
6.18k
    return _seq;
20725
6.18k
}
20726
20727
// _loop1_18: ('.' | '...')
20728
static asdl_seq *
20729
_loop1_18_rule(Parser *p)
20730
2.30k
{
20731
2.30k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
20732
0
        _Pypegen_stack_overflow(p);
20733
0
    }
20734
2.30k
    if (p->error_indicator) {
20735
0
        p->level--;
20736
0
        return NULL;
20737
0
    }
20738
2.30k
    void *_res = NULL;
20739
2.30k
    int _mark = p->mark;
20740
2.30k
    void **_children = NULL;
20741
2.30k
    Py_ssize_t _children_capacity = 0;
20742
2.30k
    Py_ssize_t _n = 0;
20743
2.30k
    { // ('.' | '...')
20744
2.30k
        if (p->error_indicator) {
20745
0
            p->level--;
20746
0
            return NULL;
20747
0
        }
20748
2.30k
        D(fprintf(stderr, "%*c> _loop1_18[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')"));
20749
2.30k
        void *_tmp_179_var;
20750
2.30k
        while (
20751
8.20k
            (_tmp_179_var = _tmp_179_rule(p))  // '.' | '...'
20752
2.30k
        )
20753
5.89k
        {
20754
5.89k
            _res = _tmp_179_var;
20755
5.89k
            if (_n == _children_capacity) {
20756
3.26k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
20757
0
                    p->error_indicator = 1;
20758
0
                    PyErr_NoMemory();
20759
0
                    PyMem_Free(_children);
20760
0
                    p->level--;
20761
0
                    return NULL;
20762
0
                }
20763
3.26k
            }
20764
5.89k
            _children[_n++] = _res;
20765
5.89k
            _mark = p->mark;
20766
5.89k
        }
20767
2.30k
        p->mark = _mark;
20768
2.30k
        D(fprintf(stderr, "%*c%s _loop1_18[%d-%d]: %s failed!\n", p->level, ' ',
20769
2.30k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('.' | '...')"));
20770
2.30k
    }
20771
2.30k
    if (_n == 0 || p->error_indicator) {
20772
69
        PyMem_Free(_children);
20773
69
        p->level--;
20774
69
        return NULL;
20775
69
    }
20776
2.23k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
20777
2.23k
    if (!_seq) {
20778
0
        p->error_indicator = 1;
20779
0
        PyErr_NoMemory();
20780
0
        PyMem_Free(_children);
20781
0
        p->level--;
20782
0
        return NULL;
20783
0
    }
20784
8.13k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
20785
2.23k
    PyMem_Free(_children);
20786
2.23k
    p->level--;
20787
2.23k
    return _seq;
20788
2.23k
}
20789
20790
// _loop0_19: ',' import_from_as_name
20791
static asdl_seq *
20792
_loop0_19_rule(Parser *p)
20793
4.19k
{
20794
4.19k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
20795
0
        _Pypegen_stack_overflow(p);
20796
0
    }
20797
4.19k
    if (p->error_indicator) {
20798
0
        p->level--;
20799
0
        return NULL;
20800
0
    }
20801
4.19k
    void *_res = NULL;
20802
4.19k
    int _mark = p->mark;
20803
4.19k
    void **_children = NULL;
20804
4.19k
    Py_ssize_t _children_capacity = 0;
20805
4.19k
    Py_ssize_t _n = 0;
20806
4.19k
    { // ',' import_from_as_name
20807
4.19k
        if (p->error_indicator) {
20808
0
            p->level--;
20809
0
            return NULL;
20810
0
        }
20811
4.19k
        D(fprintf(stderr, "%*c> _loop0_19[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' import_from_as_name"));
20812
4.19k
        Token * _literal;
20813
4.19k
        alias_ty elem;
20814
4.19k
        while (
20815
6.81k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20816
2.72k
            &&
20817
2.72k
            (elem = import_from_as_name_rule(p))  // import_from_as_name
20818
4.19k
        )
20819
2.62k
        {
20820
2.62k
            _res = elem;
20821
2.62k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
20822
0
                p->error_indicator = 1;
20823
0
                PyMem_Free(_children);
20824
0
                p->level--;
20825
0
                return NULL;
20826
0
            }
20827
2.62k
            if (_n == _children_capacity) {
20828
1.44k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
20829
0
                    p->error_indicator = 1;
20830
0
                    PyErr_NoMemory();
20831
0
                    PyMem_Free(_children);
20832
0
                    p->level--;
20833
0
                    return NULL;
20834
0
                }
20835
1.44k
            }
20836
2.62k
            _children[_n++] = _res;
20837
2.62k
            _mark = p->mark;
20838
2.62k
        }
20839
4.19k
        p->mark = _mark;
20840
4.19k
        D(fprintf(stderr, "%*c%s _loop0_19[%d-%d]: %s failed!\n", p->level, ' ',
20841
4.19k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' import_from_as_name"));
20842
4.19k
    }
20843
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
20844
4.19k
    if (!_seq) {
20845
0
        p->error_indicator = 1;
20846
0
        PyErr_NoMemory();
20847
0
        PyMem_Free(_children);
20848
0
        p->level--;
20849
0
        return NULL;
20850
0
    }
20851
6.81k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
20852
4.19k
    PyMem_Free(_children);
20853
4.19k
    p->level--;
20854
4.19k
    return _seq;
20855
4.19k
}
20856
20857
// _gather_20: import_from_as_name _loop0_19
20858
static asdl_seq *
20859
_gather_20_rule(Parser *p)
20860
6.30k
{
20861
6.30k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
20862
0
        _Pypegen_stack_overflow(p);
20863
0
    }
20864
6.30k
    if (p->error_indicator) {
20865
0
        p->level--;
20866
0
        return NULL;
20867
0
    }
20868
6.30k
    asdl_seq * _res = NULL;
20869
6.30k
    int _mark = p->mark;
20870
6.30k
    { // import_from_as_name _loop0_19
20871
6.30k
        if (p->error_indicator) {
20872
0
            p->level--;
20873
0
            return NULL;
20874
0
        }
20875
6.30k
        D(fprintf(stderr, "%*c> _gather_20[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_name _loop0_19"));
20876
6.30k
        alias_ty elem;
20877
6.30k
        asdl_seq * seq;
20878
6.30k
        if (
20879
6.30k
            (elem = import_from_as_name_rule(p))  // import_from_as_name
20880
4.19k
            &&
20881
4.19k
            (seq = _loop0_19_rule(p))  // _loop0_19
20882
6.30k
        )
20883
4.19k
        {
20884
4.19k
            D(fprintf(stderr, "%*c+ _gather_20[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_name _loop0_19"));
20885
4.19k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
20886
4.19k
            goto done;
20887
4.19k
        }
20888
2.11k
        p->mark = _mark;
20889
2.11k
        D(fprintf(stderr, "%*c%s _gather_20[%d-%d]: %s failed!\n", p->level, ' ',
20890
2.11k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_name _loop0_19"));
20891
2.11k
    }
20892
2.11k
    _res = NULL;
20893
6.30k
  done:
20894
6.30k
    p->level--;
20895
6.30k
    return _res;
20896
2.11k
}
20897
20898
// _tmp_21: 'as' NAME
20899
static void *
20900
_tmp_21_rule(Parser *p)
20901
14.1k
{
20902
14.1k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
20903
0
        _Pypegen_stack_overflow(p);
20904
0
    }
20905
14.1k
    if (p->error_indicator) {
20906
0
        p->level--;
20907
0
        return NULL;
20908
0
    }
20909
14.1k
    void * _res = NULL;
20910
14.1k
    int _mark = p->mark;
20911
14.1k
    { // 'as' NAME
20912
14.1k
        if (p->error_indicator) {
20913
0
            p->level--;
20914
0
            return NULL;
20915
0
        }
20916
14.1k
        D(fprintf(stderr, "%*c> _tmp_21[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
20917
14.1k
        Token * _keyword;
20918
14.1k
        expr_ty z;
20919
14.1k
        if (
20920
14.1k
            (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
20921
1.74k
            &&
20922
1.74k
            (z = _PyPegen_name_token(p))  // NAME
20923
14.1k
        )
20924
1.61k
        {
20925
1.61k
            D(fprintf(stderr, "%*c+ _tmp_21[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
20926
1.61k
            _res = z;
20927
1.61k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
20928
0
                p->error_indicator = 1;
20929
0
                p->level--;
20930
0
                return NULL;
20931
0
            }
20932
1.61k
            goto done;
20933
1.61k
        }
20934
12.5k
        p->mark = _mark;
20935
12.5k
        D(fprintf(stderr, "%*c%s _tmp_21[%d-%d]: %s failed!\n", p->level, ' ',
20936
12.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
20937
12.5k
    }
20938
12.5k
    _res = NULL;
20939
14.1k
  done:
20940
14.1k
    p->level--;
20941
14.1k
    return _res;
20942
12.5k
}
20943
20944
// _loop0_22: ',' dotted_as_name
20945
static asdl_seq *
20946
_loop0_22_rule(Parser *p)
20947
2.57k
{
20948
2.57k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
20949
0
        _Pypegen_stack_overflow(p);
20950
0
    }
20951
2.57k
    if (p->error_indicator) {
20952
0
        p->level--;
20953
0
        return NULL;
20954
0
    }
20955
2.57k
    void *_res = NULL;
20956
2.57k
    int _mark = p->mark;
20957
2.57k
    void **_children = NULL;
20958
2.57k
    Py_ssize_t _children_capacity = 0;
20959
2.57k
    Py_ssize_t _n = 0;
20960
2.57k
    { // ',' dotted_as_name
20961
2.57k
        if (p->error_indicator) {
20962
0
            p->level--;
20963
0
            return NULL;
20964
0
        }
20965
2.57k
        D(fprintf(stderr, "%*c> _loop0_22[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' dotted_as_name"));
20966
2.57k
        Token * _literal;
20967
2.57k
        alias_ty elem;
20968
2.57k
        while (
20969
7.31k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20970
4.84k
            &&
20971
4.84k
            (elem = dotted_as_name_rule(p))  // dotted_as_name
20972
2.57k
        )
20973
4.74k
        {
20974
4.74k
            _res = elem;
20975
4.74k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
20976
0
                p->error_indicator = 1;
20977
0
                PyMem_Free(_children);
20978
0
                p->level--;
20979
0
                return NULL;
20980
0
            }
20981
4.74k
            if (_n == _children_capacity) {
20982
1.96k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
20983
0
                    p->error_indicator = 1;
20984
0
                    PyErr_NoMemory();
20985
0
                    PyMem_Free(_children);
20986
0
                    p->level--;
20987
0
                    return NULL;
20988
0
                }
20989
1.96k
            }
20990
4.74k
            _children[_n++] = _res;
20991
4.74k
            _mark = p->mark;
20992
4.74k
        }
20993
2.57k
        p->mark = _mark;
20994
2.57k
        D(fprintf(stderr, "%*c%s _loop0_22[%d-%d]: %s failed!\n", p->level, ' ',
20995
2.57k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' dotted_as_name"));
20996
2.57k
    }
20997
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
20998
2.57k
    if (!_seq) {
20999
0
        p->error_indicator = 1;
21000
0
        PyErr_NoMemory();
21001
0
        PyMem_Free(_children);
21002
0
        p->level--;
21003
0
        return NULL;
21004
0
    }
21005
7.31k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
21006
2.57k
    PyMem_Free(_children);
21007
2.57k
    p->level--;
21008
2.57k
    return _seq;
21009
2.57k
}
21010
21011
// _gather_23: dotted_as_name _loop0_22
21012
static asdl_seq *
21013
_gather_23_rule(Parser *p)
21014
2.72k
{
21015
2.72k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
21016
0
        _Pypegen_stack_overflow(p);
21017
0
    }
21018
2.72k
    if (p->error_indicator) {
21019
0
        p->level--;
21020
0
        return NULL;
21021
0
    }
21022
2.72k
    asdl_seq * _res = NULL;
21023
2.72k
    int _mark = p->mark;
21024
2.72k
    { // dotted_as_name _loop0_22
21025
2.72k
        if (p->error_indicator) {
21026
0
            p->level--;
21027
0
            return NULL;
21028
0
        }
21029
2.72k
        D(fprintf(stderr, "%*c> _gather_23[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_as_name _loop0_22"));
21030
2.72k
        alias_ty elem;
21031
2.72k
        asdl_seq * seq;
21032
2.72k
        if (
21033
2.72k
            (elem = dotted_as_name_rule(p))  // dotted_as_name
21034
2.57k
            &&
21035
2.57k
            (seq = _loop0_22_rule(p))  // _loop0_22
21036
2.72k
        )
21037
2.57k
        {
21038
2.57k
            D(fprintf(stderr, "%*c+ _gather_23[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_as_name _loop0_22"));
21039
2.57k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
21040
2.57k
            goto done;
21041
2.57k
        }
21042
152
        p->mark = _mark;
21043
152
        D(fprintf(stderr, "%*c%s _gather_23[%d-%d]: %s failed!\n", p->level, ' ',
21044
152
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_as_name _loop0_22"));
21045
152
    }
21046
152
    _res = NULL;
21047
2.72k
  done:
21048
2.72k
    p->level--;
21049
2.72k
    return _res;
21050
152
}
21051
21052
// _loop1_24: ('@' named_expression NEWLINE)
21053
static asdl_seq *
21054
_loop1_24_rule(Parser *p)
21055
14.9k
{
21056
14.9k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
21057
0
        _Pypegen_stack_overflow(p);
21058
0
    }
21059
14.9k
    if (p->error_indicator) {
21060
0
        p->level--;
21061
0
        return NULL;
21062
0
    }
21063
14.9k
    void *_res = NULL;
21064
14.9k
    int _mark = p->mark;
21065
14.9k
    void **_children = NULL;
21066
14.9k
    Py_ssize_t _children_capacity = 0;
21067
14.9k
    Py_ssize_t _n = 0;
21068
14.9k
    { // ('@' named_expression NEWLINE)
21069
14.9k
        if (p->error_indicator) {
21070
0
            p->level--;
21071
0
            return NULL;
21072
0
        }
21073
14.9k
        D(fprintf(stderr, "%*c> _loop1_24[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('@' named_expression NEWLINE)"));
21074
14.9k
        void *_tmp_180_var;
21075
14.9k
        while (
21076
19.1k
            (_tmp_180_var = _tmp_180_rule(p))  // '@' named_expression NEWLINE
21077
14.9k
        )
21078
4.19k
        {
21079
4.19k
            _res = _tmp_180_var;
21080
4.19k
            if (_n == _children_capacity) {
21081
2.52k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
21082
0
                    p->error_indicator = 1;
21083
0
                    PyErr_NoMemory();
21084
0
                    PyMem_Free(_children);
21085
0
                    p->level--;
21086
0
                    return NULL;
21087
0
                }
21088
2.52k
            }
21089
4.19k
            _children[_n++] = _res;
21090
4.19k
            _mark = p->mark;
21091
4.19k
        }
21092
14.9k
        p->mark = _mark;
21093
14.9k
        D(fprintf(stderr, "%*c%s _loop1_24[%d-%d]: %s failed!\n", p->level, ' ',
21094
14.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('@' named_expression NEWLINE)"));
21095
14.9k
    }
21096
14.9k
    if (_n == 0 || p->error_indicator) {
21097
13.3k
        PyMem_Free(_children);
21098
13.3k
        p->level--;
21099
13.3k
        return NULL;
21100
13.3k
    }
21101
1.57k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
21102
1.57k
    if (!_seq) {
21103
0
        p->error_indicator = 1;
21104
0
        PyErr_NoMemory();
21105
0
        PyMem_Free(_children);
21106
0
        p->level--;
21107
0
        return NULL;
21108
0
    }
21109
5.75k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
21110
1.57k
    PyMem_Free(_children);
21111
1.57k
    p->level--;
21112
1.57k
    return _seq;
21113
1.57k
}
21114
21115
// _tmp_25: '(' arguments? ')'
21116
static void *
21117
_tmp_25_rule(Parser *p)
21118
2.89k
{
21119
2.89k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
21120
0
        _Pypegen_stack_overflow(p);
21121
0
    }
21122
2.89k
    if (p->error_indicator) {
21123
0
        p->level--;
21124
0
        return NULL;
21125
0
    }
21126
2.89k
    void * _res = NULL;
21127
2.89k
    int _mark = p->mark;
21128
2.89k
    { // '(' arguments? ')'
21129
2.89k
        if (p->error_indicator) {
21130
0
            p->level--;
21131
0
            return NULL;
21132
0
        }
21133
2.89k
        D(fprintf(stderr, "%*c> _tmp_25[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
21134
2.89k
        Token * _literal;
21135
2.89k
        Token * _literal_1;
21136
2.89k
        void *z;
21137
2.89k
        if (
21138
2.89k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
21139
1.15k
            &&
21140
1.15k
            (z = arguments_rule(p), !p->error_indicator)  // arguments?
21141
1.15k
            &&
21142
1.15k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
21143
2.89k
        )
21144
1.14k
        {
21145
1.14k
            D(fprintf(stderr, "%*c+ _tmp_25[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
21146
1.14k
            _res = z;
21147
1.14k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
21148
0
                p->error_indicator = 1;
21149
0
                p->level--;
21150
0
                return NULL;
21151
0
            }
21152
1.14k
            goto done;
21153
1.14k
        }
21154
1.74k
        p->mark = _mark;
21155
1.74k
        D(fprintf(stderr, "%*c%s _tmp_25[%d-%d]: %s failed!\n", p->level, ' ',
21156
1.74k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'"));
21157
1.74k
    }
21158
1.74k
    _res = NULL;
21159
2.89k
  done:
21160
2.89k
    p->level--;
21161
2.89k
    return _res;
21162
1.74k
}
21163
21164
// _tmp_26: '->' expression
21165
static void *
21166
_tmp_26_rule(Parser *p)
21167
7.47k
{
21168
7.47k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
21169
0
        _Pypegen_stack_overflow(p);
21170
0
    }
21171
7.47k
    if (p->error_indicator) {
21172
0
        p->level--;
21173
0
        return NULL;
21174
0
    }
21175
7.47k
    void * _res = NULL;
21176
7.47k
    int _mark = p->mark;
21177
7.47k
    { // '->' expression
21178
7.47k
        if (p->error_indicator) {
21179
0
            p->level--;
21180
0
            return NULL;
21181
0
        }
21182
7.47k
        D(fprintf(stderr, "%*c> _tmp_26[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression"));
21183
7.47k
        Token * _literal;
21184
7.47k
        expr_ty z;
21185
7.47k
        if (
21186
7.47k
            (_literal = _PyPegen_expect_token(p, 51))  // token='->'
21187
371
            &&
21188
371
            (z = expression_rule(p))  // expression
21189
7.47k
        )
21190
369
        {
21191
369
            D(fprintf(stderr, "%*c+ _tmp_26[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression"));
21192
369
            _res = z;
21193
369
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
21194
0
                p->error_indicator = 1;
21195
0
                p->level--;
21196
0
                return NULL;
21197
0
            }
21198
369
            goto done;
21199
369
        }
21200
7.10k
        p->mark = _mark;
21201
7.10k
        D(fprintf(stderr, "%*c%s _tmp_26[%d-%d]: %s failed!\n", p->level, ' ',
21202
7.10k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression"));
21203
7.10k
    }
21204
7.10k
    _res = NULL;
21205
7.47k
  done:
21206
7.47k
    p->level--;
21207
7.47k
    return _res;
21208
7.10k
}
21209
21210
// _loop0_27: param_no_default
21211
static asdl_seq *
21212
_loop0_27_rule(Parser *p)
21213
50.6k
{
21214
50.6k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
21215
0
        _Pypegen_stack_overflow(p);
21216
0
    }
21217
50.6k
    if (p->error_indicator) {
21218
0
        p->level--;
21219
0
        return NULL;
21220
0
    }
21221
50.6k
    void *_res = NULL;
21222
50.6k
    int _mark = p->mark;
21223
50.6k
    void **_children = NULL;
21224
50.6k
    Py_ssize_t _children_capacity = 0;
21225
50.6k
    Py_ssize_t _n = 0;
21226
50.6k
    { // param_no_default
21227
50.6k
        if (p->error_indicator) {
21228
0
            p->level--;
21229
0
            return NULL;
21230
0
        }
21231
50.6k
        D(fprintf(stderr, "%*c> _loop0_27[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
21232
50.6k
        arg_ty param_no_default_var;
21233
50.6k
        while (
21234
73.0k
            (param_no_default_var = param_no_default_rule(p))  // param_no_default
21235
50.6k
        )
21236
22.3k
        {
21237
22.3k
            _res = param_no_default_var;
21238
22.3k
            if (_n == _children_capacity) {
21239
15.2k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
21240
0
                    p->error_indicator = 1;
21241
0
                    PyErr_NoMemory();
21242
0
                    PyMem_Free(_children);
21243
0
                    p->level--;
21244
0
                    return NULL;
21245
0
                }
21246
15.2k
            }
21247
22.3k
            _children[_n++] = _res;
21248
22.3k
            _mark = p->mark;
21249
22.3k
        }
21250
50.6k
        p->mark = _mark;
21251
50.6k
        D(fprintf(stderr, "%*c%s _loop0_27[%d-%d]: %s failed!\n", p->level, ' ',
21252
50.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
21253
50.6k
    }
21254
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
21255
50.6k
    if (!_seq) {
21256
0
        p->error_indicator = 1;
21257
0
        PyErr_NoMemory();
21258
0
        PyMem_Free(_children);
21259
0
        p->level--;
21260
0
        return NULL;
21261
0
    }
21262
73.0k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
21263
50.6k
    PyMem_Free(_children);
21264
50.6k
    p->level--;
21265
50.6k
    return _seq;
21266
50.6k
}
21267
21268
// _loop0_28: param_with_default
21269
static asdl_seq *
21270
_loop0_28_rule(Parser *p)
21271
5.01k
{
21272
5.01k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
21273
0
        _Pypegen_stack_overflow(p);
21274
0
    }
21275
5.01k
    if (p->error_indicator) {
21276
1
        p->level--;
21277
1
        return NULL;
21278
1
    }
21279
5.01k
    void *_res = NULL;
21280
5.01k
    int _mark = p->mark;
21281
5.01k
    void **_children = NULL;
21282
5.01k
    Py_ssize_t _children_capacity = 0;
21283
5.01k
    Py_ssize_t _n = 0;
21284
5.01k
    { // param_with_default
21285
5.01k
        if (p->error_indicator) {
21286
0
            p->level--;
21287
0
            return NULL;
21288
0
        }
21289
5.01k
        D(fprintf(stderr, "%*c> _loop0_28[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
21290
5.01k
        NameDefaultPair* param_with_default_var;
21291
5.01k
        while (
21292
6.57k
            (param_with_default_var = param_with_default_rule(p))  // param_with_default
21293
5.01k
        )
21294
1.55k
        {
21295
1.55k
            _res = param_with_default_var;
21296
1.55k
            if (_n == _children_capacity) {
21297
981
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
21298
0
                    p->error_indicator = 1;
21299
0
                    PyErr_NoMemory();
21300
0
                    PyMem_Free(_children);
21301
0
                    p->level--;
21302
0
                    return NULL;
21303
0
                }
21304
981
            }
21305
1.55k
            _children[_n++] = _res;
21306
1.55k
            _mark = p->mark;
21307
1.55k
        }
21308
5.01k
        p->mark = _mark;
21309
5.01k
        D(fprintf(stderr, "%*c%s _loop0_28[%d-%d]: %s failed!\n", p->level, ' ',
21310
5.01k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
21311
5.01k
    }
21312
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
21313
5.01k
    if (!_seq) {
21314
0
        p->error_indicator = 1;
21315
0
        PyErr_NoMemory();
21316
0
        PyMem_Free(_children);
21317
0
        p->level--;
21318
0
        return NULL;
21319
0
    }
21320
6.57k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
21321
5.01k
    PyMem_Free(_children);
21322
5.01k
    p->level--;
21323
5.01k
    return _seq;
21324
5.01k
}
21325
21326
// _loop1_29: param_no_default
21327
static asdl_seq *
21328
_loop1_29_rule(Parser *p)
21329
64.9k
{
21330
64.9k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
21331
0
        _Pypegen_stack_overflow(p);
21332
0
    }
21333
64.9k
    if (p->error_indicator) {
21334
0
        p->level--;
21335
0
        return NULL;
21336
0
    }
21337
64.9k
    void *_res = NULL;
21338
64.9k
    int _mark = p->mark;
21339
64.9k
    void **_children = NULL;
21340
64.9k
    Py_ssize_t _children_capacity = 0;
21341
64.9k
    Py_ssize_t _n = 0;
21342
64.9k
    { // param_no_default
21343
64.9k
        if (p->error_indicator) {
21344
0
            p->level--;
21345
0
            return NULL;
21346
0
        }
21347
64.9k
        D(fprintf(stderr, "%*c> _loop1_29[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
21348
64.9k
        arg_ty param_no_default_var;
21349
64.9k
        while (
21350
103k
            (param_no_default_var = param_no_default_rule(p))  // param_no_default
21351
64.9k
        )
21352
38.4k
        {
21353
38.4k
            _res = param_no_default_var;
21354
38.4k
            if (_n == _children_capacity) {
21355
26.0k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
21356
0
                    p->error_indicator = 1;
21357
0
                    PyErr_NoMemory();
21358
0
                    PyMem_Free(_children);
21359
0
                    p->level--;
21360
0
                    return NULL;
21361
0
                }
21362
26.0k
            }
21363
38.4k
            _children[_n++] = _res;
21364
38.4k
            _mark = p->mark;
21365
38.4k
        }
21366
64.9k
        p->mark = _mark;
21367
64.9k
        D(fprintf(stderr, "%*c%s _loop1_29[%d-%d]: %s failed!\n", p->level, ' ',
21368
64.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
21369
64.9k
    }
21370
64.9k
    if (_n == 0 || p->error_indicator) {
21371
47.3k
        PyMem_Free(_children);
21372
47.3k
        p->level--;
21373
47.3k
        return NULL;
21374
47.3k
    }
21375
17.5k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
21376
17.5k
    if (!_seq) {
21377
0
        p->error_indicator = 1;
21378
0
        PyErr_NoMemory();
21379
0
        PyMem_Free(_children);
21380
0
        p->level--;
21381
0
        return NULL;
21382
0
    }
21383
55.9k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
21384
17.5k
    PyMem_Free(_children);
21385
17.5k
    p->level--;
21386
17.5k
    return _seq;
21387
17.5k
}
21388
21389
// _loop1_30: param_with_default
21390
static asdl_seq *
21391
_loop1_30_rule(Parser *p)
21392
57.2k
{
21393
57.2k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
21394
0
        _Pypegen_stack_overflow(p);
21395
0
    }
21396
57.2k
    if (p->error_indicator) {
21397
0
        p->level--;
21398
0
        return NULL;
21399
0
    }
21400
57.2k
    void *_res = NULL;
21401
57.2k
    int _mark = p->mark;
21402
57.2k
    void **_children = NULL;
21403
57.2k
    Py_ssize_t _children_capacity = 0;
21404
57.2k
    Py_ssize_t _n = 0;
21405
57.2k
    { // param_with_default
21406
57.2k
        if (p->error_indicator) {
21407
0
            p->level--;
21408
0
            return NULL;
21409
0
        }
21410
57.2k
        D(fprintf(stderr, "%*c> _loop1_30[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
21411
57.2k
        NameDefaultPair* param_with_default_var;
21412
57.2k
        while (
21413
72.2k
            (param_with_default_var = param_with_default_rule(p))  // param_with_default
21414
57.2k
        )
21415
14.9k
        {
21416
14.9k
            _res = param_with_default_var;
21417
14.9k
            if (_n == _children_capacity) {
21418
11.1k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
21419
0
                    p->error_indicator = 1;
21420
0
                    PyErr_NoMemory();
21421
0
                    PyMem_Free(_children);
21422
0
                    p->level--;
21423
0
                    return NULL;
21424
0
                }
21425
11.1k
            }
21426
14.9k
            _children[_n++] = _res;
21427
14.9k
            _mark = p->mark;
21428
14.9k
        }
21429
57.2k
        p->mark = _mark;
21430
57.2k
        D(fprintf(stderr, "%*c%s _loop1_30[%d-%d]: %s failed!\n", p->level, ' ',
21431
57.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
21432
57.2k
    }
21433
57.2k
    if (_n == 0 || p->error_indicator) {
21434
47.9k
        PyMem_Free(_children);
21435
47.9k
        p->level--;
21436
47.9k
        return NULL;
21437
47.9k
    }
21438
9.33k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
21439
9.33k
    if (!_seq) {
21440
0
        p->error_indicator = 1;
21441
0
        PyErr_NoMemory();
21442
0
        PyMem_Free(_children);
21443
0
        p->level--;
21444
0
        return NULL;
21445
0
    }
21446
24.2k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
21447
9.33k
    PyMem_Free(_children);
21448
9.33k
    p->level--;
21449
9.33k
    return _seq;
21450
9.33k
}
21451
21452
// _loop0_31: param_maybe_default
21453
static asdl_seq *
21454
_loop0_31_rule(Parser *p)
21455
2.18k
{
21456
2.18k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
21457
0
        _Pypegen_stack_overflow(p);
21458
0
    }
21459
2.18k
    if (p->error_indicator) {
21460
0
        p->level--;
21461
0
        return NULL;
21462
0
    }
21463
2.18k
    void *_res = NULL;
21464
2.18k
    int _mark = p->mark;
21465
2.18k
    void **_children = NULL;
21466
2.18k
    Py_ssize_t _children_capacity = 0;
21467
2.18k
    Py_ssize_t _n = 0;
21468
2.18k
    { // param_maybe_default
21469
2.18k
        if (p->error_indicator) {
21470
0
            p->level--;
21471
0
            return NULL;
21472
0
        }
21473
2.18k
        D(fprintf(stderr, "%*c> _loop0_31[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
21474
2.18k
        NameDefaultPair* param_maybe_default_var;
21475
2.18k
        while (
21476
7.70k
            (param_maybe_default_var = param_maybe_default_rule(p))  // param_maybe_default
21477
2.18k
        )
21478
5.52k
        {
21479
5.52k
            _res = param_maybe_default_var;
21480
5.52k
            if (_n == _children_capacity) {
21481
401
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
21482
0
                    p->error_indicator = 1;
21483
0
                    PyErr_NoMemory();
21484
0
                    PyMem_Free(_children);
21485
0
                    p->level--;
21486
0
                    return NULL;
21487
0
                }
21488
401
            }
21489
5.52k
            _children[_n++] = _res;
21490
5.52k
            _mark = p->mark;
21491
5.52k
        }
21492
2.18k
        p->mark = _mark;
21493
2.18k
        D(fprintf(stderr, "%*c%s _loop0_31[%d-%d]: %s failed!\n", p->level, ' ',
21494
2.18k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
21495
2.18k
    }
21496
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
21497
2.18k
    if (!_seq) {
21498
0
        p->error_indicator = 1;
21499
0
        PyErr_NoMemory();
21500
0
        PyMem_Free(_children);
21501
0
        p->level--;
21502
0
        return NULL;
21503
0
    }
21504
7.70k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
21505
2.18k
    PyMem_Free(_children);
21506
2.18k
    p->level--;
21507
2.18k
    return _seq;
21508
2.18k
}
21509
21510
// _loop1_32: param_maybe_default
21511
static asdl_seq *
21512
_loop1_32_rule(Parser *p)
21513
915
{
21514
915
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
21515
0
        _Pypegen_stack_overflow(p);
21516
0
    }
21517
915
    if (p->error_indicator) {
21518
0
        p->level--;
21519
0
        return NULL;
21520
0
    }
21521
915
    void *_res = NULL;
21522
915
    int _mark = p->mark;
21523
915
    void **_children = NULL;
21524
915
    Py_ssize_t _children_capacity = 0;
21525
915
    Py_ssize_t _n = 0;
21526
915
    { // param_maybe_default
21527
915
        if (p->error_indicator) {
21528
0
            p->level--;
21529
0
            return NULL;
21530
0
        }
21531
915
        D(fprintf(stderr, "%*c> _loop1_32[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
21532
915
        NameDefaultPair* param_maybe_default_var;
21533
915
        while (
21534
2.55k
            (param_maybe_default_var = param_maybe_default_rule(p))  // param_maybe_default
21535
915
        )
21536
1.64k
        {
21537
1.64k
            _res = param_maybe_default_var;
21538
1.64k
            if (_n == _children_capacity) {
21539
1.18k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
21540
0
                    p->error_indicator = 1;
21541
0
                    PyErr_NoMemory();
21542
0
                    PyMem_Free(_children);
21543
0
                    p->level--;
21544
0
                    return NULL;
21545
0
                }
21546
1.18k
            }
21547
1.64k
            _children[_n++] = _res;
21548
1.64k
            _mark = p->mark;
21549
1.64k
        }
21550
915
        p->mark = _mark;
21551
915
        D(fprintf(stderr, "%*c%s _loop1_32[%d-%d]: %s failed!\n", p->level, ' ',
21552
915
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
21553
915
    }
21554
915
    if (_n == 0 || p->error_indicator) {
21555
61
        PyMem_Free(_children);
21556
61
        p->level--;
21557
61
        return NULL;
21558
61
    }
21559
854
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
21560
854
    if (!_seq) {
21561
0
        p->error_indicator = 1;
21562
0
        PyErr_NoMemory();
21563
0
        PyMem_Free(_children);
21564
0
        p->level--;
21565
0
        return NULL;
21566
0
    }
21567
2.48k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
21568
854
    PyMem_Free(_children);
21569
854
    p->level--;
21570
854
    return _seq;
21571
854
}
21572
21573
// _loop0_33: ',' with_item
21574
static asdl_seq *
21575
_loop0_33_rule(Parser *p)
21576
6.61k
{
21577
6.61k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
21578
0
        _Pypegen_stack_overflow(p);
21579
0
    }
21580
6.61k
    if (p->error_indicator) {
21581
0
        p->level--;
21582
0
        return NULL;
21583
0
    }
21584
6.61k
    void *_res = NULL;
21585
6.61k
    int _mark = p->mark;
21586
6.61k
    void **_children = NULL;
21587
6.61k
    Py_ssize_t _children_capacity = 0;
21588
6.61k
    Py_ssize_t _n = 0;
21589
6.61k
    { // ',' with_item
21590
6.61k
        if (p->error_indicator) {
21591
0
            p->level--;
21592
0
            return NULL;
21593
0
        }
21594
6.61k
        D(fprintf(stderr, "%*c> _loop0_33[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
21595
6.61k
        Token * _literal;
21596
6.61k
        withitem_ty elem;
21597
6.61k
        while (
21598
15.0k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
21599
9.45k
            &&
21600
9.45k
            (elem = with_item_rule(p))  // with_item
21601
6.61k
        )
21602
8.45k
        {
21603
8.45k
            _res = elem;
21604
8.45k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
21605
0
                p->error_indicator = 1;
21606
0
                PyMem_Free(_children);
21607
0
                p->level--;
21608
0
                return NULL;
21609
0
            }
21610
8.45k
            if (_n == _children_capacity) {
21611
3.96k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
21612
0
                    p->error_indicator = 1;
21613
0
                    PyErr_NoMemory();
21614
0
                    PyMem_Free(_children);
21615
0
                    p->level--;
21616
0
                    return NULL;
21617
0
                }
21618
3.96k
            }
21619
8.45k
            _children[_n++] = _res;
21620
8.45k
            _mark = p->mark;
21621
8.45k
        }
21622
6.61k
        p->mark = _mark;
21623
6.61k
        D(fprintf(stderr, "%*c%s _loop0_33[%d-%d]: %s failed!\n", p->level, ' ',
21624
6.61k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
21625
6.61k
    }
21626
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
21627
6.61k
    if (!_seq) {
21628
0
        p->error_indicator = 1;
21629
0
        PyErr_NoMemory();
21630
0
        PyMem_Free(_children);
21631
0
        p->level--;
21632
0
        return NULL;
21633
0
    }
21634
15.0k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
21635
6.61k
    PyMem_Free(_children);
21636
6.61k
    p->level--;
21637
6.61k
    return _seq;
21638
6.61k
}
21639
21640
// _gather_34: with_item _loop0_33
21641
static asdl_seq *
21642
_gather_34_rule(Parser *p)
21643
7.67k
{
21644
7.67k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
21645
0
        _Pypegen_stack_overflow(p);
21646
0
    }
21647
7.67k
    if (p->error_indicator) {
21648
0
        p->level--;
21649
0
        return NULL;
21650
0
    }
21651
7.67k
    asdl_seq * _res = NULL;
21652
7.67k
    int _mark = p->mark;
21653
7.67k
    { // with_item _loop0_33
21654
7.67k
        if (p->error_indicator) {
21655
0
            p->level--;
21656
0
            return NULL;
21657
0
        }
21658
7.67k
        D(fprintf(stderr, "%*c> _gather_34[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_33"));
21659
7.67k
        withitem_ty elem;
21660
7.67k
        asdl_seq * seq;
21661
7.67k
        if (
21662
7.67k
            (elem = with_item_rule(p))  // with_item
21663
6.61k
            &&
21664
6.61k
            (seq = _loop0_33_rule(p))  // _loop0_33
21665
7.67k
        )
21666
6.61k
        {
21667
6.61k
            D(fprintf(stderr, "%*c+ _gather_34[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_33"));
21668
6.61k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
21669
6.61k
            goto done;
21670
6.61k
        }
21671
1.05k
        p->mark = _mark;
21672
1.05k
        D(fprintf(stderr, "%*c%s _gather_34[%d-%d]: %s failed!\n", p->level, ' ',
21673
1.05k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_33"));
21674
1.05k
    }
21675
1.05k
    _res = NULL;
21676
7.67k
  done:
21677
7.67k
    p->level--;
21678
7.67k
    return _res;
21679
1.05k
}
21680
21681
// _tmp_35: ',' | ')' | ':'
21682
static void *
21683
_tmp_35_rule(Parser *p)
21684
1.64k
{
21685
1.64k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
21686
0
        _Pypegen_stack_overflow(p);
21687
0
    }
21688
1.64k
    if (p->error_indicator) {
21689
0
        p->level--;
21690
0
        return NULL;
21691
0
    }
21692
1.64k
    void * _res = NULL;
21693
1.64k
    int _mark = p->mark;
21694
1.64k
    { // ','
21695
1.64k
        if (p->error_indicator) {
21696
0
            p->level--;
21697
0
            return NULL;
21698
0
        }
21699
1.64k
        D(fprintf(stderr, "%*c> _tmp_35[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
21700
1.64k
        Token * _literal;
21701
1.64k
        if (
21702
1.64k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
21703
1.64k
        )
21704
565
        {
21705
565
            D(fprintf(stderr, "%*c+ _tmp_35[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
21706
565
            _res = _literal;
21707
565
            goto done;
21708
565
        }
21709
1.07k
        p->mark = _mark;
21710
1.07k
        D(fprintf(stderr, "%*c%s _tmp_35[%d-%d]: %s failed!\n", p->level, ' ',
21711
1.07k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
21712
1.07k
    }
21713
0
    { // ')'
21714
1.07k
        if (p->error_indicator) {
21715
0
            p->level--;
21716
0
            return NULL;
21717
0
        }
21718
1.07k
        D(fprintf(stderr, "%*c> _tmp_35[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
21719
1.07k
        Token * _literal;
21720
1.07k
        if (
21721
1.07k
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
21722
1.07k
        )
21723
340
        {
21724
340
            D(fprintf(stderr, "%*c+ _tmp_35[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
21725
340
            _res = _literal;
21726
340
            goto done;
21727
340
        }
21728
738
        p->mark = _mark;
21729
738
        D(fprintf(stderr, "%*c%s _tmp_35[%d-%d]: %s failed!\n", p->level, ' ',
21730
738
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
21731
738
    }
21732
0
    { // ':'
21733
738
        if (p->error_indicator) {
21734
0
            p->level--;
21735
0
            return NULL;
21736
0
        }
21737
738
        D(fprintf(stderr, "%*c> _tmp_35[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
21738
738
        Token * _literal;
21739
738
        if (
21740
738
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21741
738
        )
21742
731
        {
21743
731
            D(fprintf(stderr, "%*c+ _tmp_35[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
21744
731
            _res = _literal;
21745
731
            goto done;
21746
731
        }
21747
7
        p->mark = _mark;
21748
7
        D(fprintf(stderr, "%*c%s _tmp_35[%d-%d]: %s failed!\n", p->level, ' ',
21749
7
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
21750
7
    }
21751
7
    _res = NULL;
21752
1.64k
  done:
21753
1.64k
    p->level--;
21754
1.64k
    return _res;
21755
7
}
21756
21757
// _loop1_36: except_block
21758
static asdl_seq *
21759
_loop1_36_rule(Parser *p)
21760
3.91k
{
21761
3.91k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
21762
0
        _Pypegen_stack_overflow(p);
21763
0
    }
21764
3.91k
    if (p->error_indicator) {
21765
0
        p->level--;
21766
0
        return NULL;
21767
0
    }
21768
3.91k
    void *_res = NULL;
21769
3.91k
    int _mark = p->mark;
21770
3.91k
    void **_children = NULL;
21771
3.91k
    Py_ssize_t _children_capacity = 0;
21772
3.91k
    Py_ssize_t _n = 0;
21773
3.91k
    { // except_block
21774
3.91k
        if (p->error_indicator) {
21775
0
            p->level--;
21776
0
            return NULL;
21777
0
        }
21778
3.91k
        D(fprintf(stderr, "%*c> _loop1_36[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_block"));
21779
3.91k
        excepthandler_ty except_block_var;
21780
3.91k
        while (
21781
8.04k
            (except_block_var = except_block_rule(p))  // except_block
21782
3.91k
        )
21783
4.13k
        {
21784
4.13k
            _res = except_block_var;
21785
4.13k
            if (_n == _children_capacity) {
21786
3.03k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
21787
0
                    p->error_indicator = 1;
21788
0
                    PyErr_NoMemory();
21789
0
                    PyMem_Free(_children);
21790
0
                    p->level--;
21791
0
                    return NULL;
21792
0
                }
21793
3.03k
            }
21794
4.13k
            _children[_n++] = _res;
21795
4.13k
            _mark = p->mark;
21796
4.13k
        }
21797
3.91k
        p->mark = _mark;
21798
3.91k
        D(fprintf(stderr, "%*c%s _loop1_36[%d-%d]: %s failed!\n", p->level, ' ',
21799
3.91k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_block"));
21800
3.91k
    }
21801
3.91k
    if (_n == 0 || p->error_indicator) {
21802
1.56k
        PyMem_Free(_children);
21803
1.56k
        p->level--;
21804
1.56k
        return NULL;
21805
1.56k
    }
21806
2.34k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
21807
2.34k
    if (!_seq) {
21808
0
        p->error_indicator = 1;
21809
0
        PyErr_NoMemory();
21810
0
        PyMem_Free(_children);
21811
0
        p->level--;
21812
0
        return NULL;
21813
0
    }
21814
6.47k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
21815
2.34k
    PyMem_Free(_children);
21816
2.34k
    p->level--;
21817
2.34k
    return _seq;
21818
2.34k
}
21819
21820
// _loop1_37: except_star_block
21821
static asdl_seq *
21822
_loop1_37_rule(Parser *p)
21823
1.55k
{
21824
1.55k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
21825
0
        _Pypegen_stack_overflow(p);
21826
0
    }
21827
1.55k
    if (p->error_indicator) {
21828
0
        p->level--;
21829
0
        return NULL;
21830
0
    }
21831
1.55k
    void *_res = NULL;
21832
1.55k
    int _mark = p->mark;
21833
1.55k
    void **_children = NULL;
21834
1.55k
    Py_ssize_t _children_capacity = 0;
21835
1.55k
    Py_ssize_t _n = 0;
21836
1.55k
    { // except_star_block
21837
1.55k
        if (p->error_indicator) {
21838
0
            p->level--;
21839
0
            return NULL;
21840
0
        }
21841
1.55k
        D(fprintf(stderr, "%*c> _loop1_37[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_star_block"));
21842
1.55k
        excepthandler_ty except_star_block_var;
21843
1.55k
        while (
21844
4.63k
            (except_star_block_var = except_star_block_rule(p))  // except_star_block
21845
1.55k
        )
21846
3.07k
        {
21847
3.07k
            _res = except_star_block_var;
21848
3.07k
            if (_n == _children_capacity) {
21849
1.65k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
21850
0
                    p->error_indicator = 1;
21851
0
                    PyErr_NoMemory();
21852
0
                    PyMem_Free(_children);
21853
0
                    p->level--;
21854
0
                    return NULL;
21855
0
                }
21856
1.65k
            }
21857
3.07k
            _children[_n++] = _res;
21858
3.07k
            _mark = p->mark;
21859
3.07k
        }
21860
1.55k
        p->mark = _mark;
21861
1.55k
        D(fprintf(stderr, "%*c%s _loop1_37[%d-%d]: %s failed!\n", p->level, ' ',
21862
1.55k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_star_block"));
21863
1.55k
    }
21864
1.55k
    if (_n == 0 || p->error_indicator) {
21865
218
        PyMem_Free(_children);
21866
218
        p->level--;
21867
218
        return NULL;
21868
218
    }
21869
1.33k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
21870
1.33k
    if (!_seq) {
21871
0
        p->error_indicator = 1;
21872
0
        PyErr_NoMemory();
21873
0
        PyMem_Free(_children);
21874
0
        p->level--;
21875
0
        return NULL;
21876
0
    }
21877
4.41k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
21878
1.33k
    PyMem_Free(_children);
21879
1.33k
    p->level--;
21880
1.33k
    return _seq;
21881
1.33k
}
21882
21883
// _loop1_38: case_block
21884
static asdl_seq *
21885
_loop1_38_rule(Parser *p)
21886
1.71k
{
21887
1.71k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
21888
0
        _Pypegen_stack_overflow(p);
21889
0
    }
21890
1.71k
    if (p->error_indicator) {
21891
0
        p->level--;
21892
0
        return NULL;
21893
0
    }
21894
1.71k
    void *_res = NULL;
21895
1.71k
    int _mark = p->mark;
21896
1.71k
    void **_children = NULL;
21897
1.71k
    Py_ssize_t _children_capacity = 0;
21898
1.71k
    Py_ssize_t _n = 0;
21899
1.71k
    { // case_block
21900
1.71k
        if (p->error_indicator) {
21901
0
            p->level--;
21902
0
            return NULL;
21903
0
        }
21904
1.71k
        D(fprintf(stderr, "%*c> _loop1_38[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "case_block"));
21905
1.71k
        match_case_ty case_block_var;
21906
1.71k
        while (
21907
4.71k
            (case_block_var = case_block_rule(p))  // case_block
21908
1.71k
        )
21909
3.00k
        {
21910
3.00k
            _res = case_block_var;
21911
3.00k
            if (_n == _children_capacity) {
21912
1.35k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
21913
0
                    p->error_indicator = 1;
21914
0
                    PyErr_NoMemory();
21915
0
                    PyMem_Free(_children);
21916
0
                    p->level--;
21917
0
                    return NULL;
21918
0
                }
21919
1.35k
            }
21920
3.00k
            _children[_n++] = _res;
21921
3.00k
            _mark = p->mark;
21922
3.00k
        }
21923
1.71k
        p->mark = _mark;
21924
1.71k
        D(fprintf(stderr, "%*c%s _loop1_38[%d-%d]: %s failed!\n", p->level, ' ',
21925
1.71k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "case_block"));
21926
1.71k
    }
21927
1.71k
    if (_n == 0 || p->error_indicator) {
21928
853
        PyMem_Free(_children);
21929
853
        p->level--;
21930
853
        return NULL;
21931
853
    }
21932
858
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
21933
858
    if (!_seq) {
21934
0
        p->error_indicator = 1;
21935
0
        PyErr_NoMemory();
21936
0
        PyMem_Free(_children);
21937
0
        p->level--;
21938
0
        return NULL;
21939
0
    }
21940
3.84k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
21941
858
    PyMem_Free(_children);
21942
858
    p->level--;
21943
858
    return _seq;
21944
858
}
21945
21946
// _loop0_39: '|' closed_pattern
21947
static asdl_seq *
21948
_loop0_39_rule(Parser *p)
21949
151k
{
21950
151k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
21951
0
        _Pypegen_stack_overflow(p);
21952
0
    }
21953
151k
    if (p->error_indicator) {
21954
0
        p->level--;
21955
0
        return NULL;
21956
0
    }
21957
151k
    void *_res = NULL;
21958
151k
    int _mark = p->mark;
21959
151k
    void **_children = NULL;
21960
151k
    Py_ssize_t _children_capacity = 0;
21961
151k
    Py_ssize_t _n = 0;
21962
151k
    { // '|' closed_pattern
21963
151k
        if (p->error_indicator) {
21964
0
            p->level--;
21965
0
            return NULL;
21966
0
        }
21967
151k
        D(fprintf(stderr, "%*c> _loop0_39[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|' closed_pattern"));
21968
151k
        Token * _literal;
21969
151k
        pattern_ty elem;
21970
151k
        while (
21971
164k
            (_literal = _PyPegen_expect_token(p, 18))  // token='|'
21972
21.1k
            &&
21973
21.1k
            (elem = closed_pattern_rule(p))  // closed_pattern
21974
151k
        )
21975
12.4k
        {
21976
12.4k
            _res = elem;
21977
12.4k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
21978
0
                p->error_indicator = 1;
21979
0
                PyMem_Free(_children);
21980
0
                p->level--;
21981
0
                return NULL;
21982
0
            }
21983
12.4k
            if (_n == _children_capacity) {
21984
11.3k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
21985
0
                    p->error_indicator = 1;
21986
0
                    PyErr_NoMemory();
21987
0
                    PyMem_Free(_children);
21988
0
                    p->level--;
21989
0
                    return NULL;
21990
0
                }
21991
11.3k
            }
21992
12.4k
            _children[_n++] = _res;
21993
12.4k
            _mark = p->mark;
21994
12.4k
        }
21995
151k
        p->mark = _mark;
21996
151k
        D(fprintf(stderr, "%*c%s _loop0_39[%d-%d]: %s failed!\n", p->level, ' ',
21997
151k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|' closed_pattern"));
21998
151k
    }
21999
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
22000
151k
    if (!_seq) {
22001
0
        p->error_indicator = 1;
22002
0
        PyErr_NoMemory();
22003
0
        PyMem_Free(_children);
22004
0
        p->level--;
22005
0
        return NULL;
22006
0
    }
22007
164k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
22008
151k
    PyMem_Free(_children);
22009
151k
    p->level--;
22010
151k
    return _seq;
22011
151k
}
22012
22013
// _gather_40: closed_pattern _loop0_39
22014
static asdl_seq *
22015
_gather_40_rule(Parser *p)
22016
260k
{
22017
260k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
22018
0
        _Pypegen_stack_overflow(p);
22019
0
    }
22020
260k
    if (p->error_indicator) {
22021
0
        p->level--;
22022
0
        return NULL;
22023
0
    }
22024
260k
    asdl_seq * _res = NULL;
22025
260k
    int _mark = p->mark;
22026
260k
    { // closed_pattern _loop0_39
22027
260k
        if (p->error_indicator) {
22028
0
            p->level--;
22029
0
            return NULL;
22030
0
        }
22031
260k
        D(fprintf(stderr, "%*c> _gather_40[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "closed_pattern _loop0_39"));
22032
260k
        pattern_ty elem;
22033
260k
        asdl_seq * seq;
22034
260k
        if (
22035
260k
            (elem = closed_pattern_rule(p))  // closed_pattern
22036
151k
            &&
22037
151k
            (seq = _loop0_39_rule(p))  // _loop0_39
22038
260k
        )
22039
151k
        {
22040
151k
            D(fprintf(stderr, "%*c+ _gather_40[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "closed_pattern _loop0_39"));
22041
151k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
22042
151k
            goto done;
22043
151k
        }
22044
109k
        p->mark = _mark;
22045
109k
        D(fprintf(stderr, "%*c%s _gather_40[%d-%d]: %s failed!\n", p->level, ' ',
22046
109k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "closed_pattern _loop0_39"));
22047
109k
    }
22048
109k
    _res = NULL;
22049
260k
  done:
22050
260k
    p->level--;
22051
260k
    return _res;
22052
109k
}
22053
22054
// _tmp_41: '+' | '-'
22055
static void *
22056
_tmp_41_rule(Parser *p)
22057
22.3k
{
22058
22.3k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
22059
0
        _Pypegen_stack_overflow(p);
22060
0
    }
22061
22.3k
    if (p->error_indicator) {
22062
0
        p->level--;
22063
0
        return NULL;
22064
0
    }
22065
22.3k
    void * _res = NULL;
22066
22.3k
    int _mark = p->mark;
22067
22.3k
    { // '+'
22068
22.3k
        if (p->error_indicator) {
22069
0
            p->level--;
22070
0
            return NULL;
22071
0
        }
22072
22.3k
        D(fprintf(stderr, "%*c> _tmp_41[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+'"));
22073
22.3k
        Token * _literal;
22074
22.3k
        if (
22075
22.3k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
22076
22.3k
        )
22077
553
        {
22078
553
            D(fprintf(stderr, "%*c+ _tmp_41[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+'"));
22079
553
            _res = _literal;
22080
553
            goto done;
22081
553
        }
22082
21.7k
        p->mark = _mark;
22083
21.7k
        D(fprintf(stderr, "%*c%s _tmp_41[%d-%d]: %s failed!\n", p->level, ' ',
22084
21.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+'"));
22085
21.7k
    }
22086
0
    { // '-'
22087
21.7k
        if (p->error_indicator) {
22088
13
            p->level--;
22089
13
            return NULL;
22090
13
        }
22091
21.7k
        D(fprintf(stderr, "%*c> _tmp_41[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-'"));
22092
21.7k
        Token * _literal;
22093
21.7k
        if (
22094
21.7k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
22095
21.7k
        )
22096
1.38k
        {
22097
1.38k
            D(fprintf(stderr, "%*c+ _tmp_41[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-'"));
22098
1.38k
            _res = _literal;
22099
1.38k
            goto done;
22100
1.38k
        }
22101
20.3k
        p->mark = _mark;
22102
20.3k
        D(fprintf(stderr, "%*c%s _tmp_41[%d-%d]: %s failed!\n", p->level, ' ',
22103
20.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-'"));
22104
20.3k
    }
22105
20.3k
    _res = NULL;
22106
22.3k
  done:
22107
22.3k
    p->level--;
22108
22.3k
    return _res;
22109
20.3k
}
22110
22111
// _tmp_42: STRING | FSTRING_START | TSTRING_START
22112
static void *
22113
_tmp_42_rule(Parser *p)
22114
826k
{
22115
826k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
22116
1
        _Pypegen_stack_overflow(p);
22117
1
    }
22118
826k
    if (p->error_indicator) {
22119
1
        p->level--;
22120
1
        return NULL;
22121
1
    }
22122
826k
    void * _res = NULL;
22123
826k
    int _mark = p->mark;
22124
826k
    { // STRING
22125
826k
        if (p->error_indicator) {
22126
0
            p->level--;
22127
0
            return NULL;
22128
0
        }
22129
826k
        D(fprintf(stderr, "%*c> _tmp_42[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING"));
22130
826k
        expr_ty string_var;
22131
826k
        if (
22132
826k
            (string_var = _PyPegen_string_token(p))  // STRING
22133
826k
        )
22134
36.6k
        {
22135
36.6k
            D(fprintf(stderr, "%*c+ _tmp_42[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING"));
22136
36.6k
            _res = string_var;
22137
36.6k
            goto done;
22138
36.6k
        }
22139
789k
        p->mark = _mark;
22140
789k
        D(fprintf(stderr, "%*c%s _tmp_42[%d-%d]: %s failed!\n", p->level, ' ',
22141
789k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING"));
22142
789k
    }
22143
0
    { // FSTRING_START
22144
789k
        if (p->error_indicator) {
22145
0
            p->level--;
22146
0
            return NULL;
22147
0
        }
22148
789k
        D(fprintf(stderr, "%*c> _tmp_42[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_START"));
22149
789k
        Token * fstring_start_var;
22150
789k
        if (
22151
789k
            (fstring_start_var = _PyPegen_expect_token(p, FSTRING_START))  // token='FSTRING_START'
22152
789k
        )
22153
24.5k
        {
22154
24.5k
            D(fprintf(stderr, "%*c+ _tmp_42[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_START"));
22155
24.5k
            _res = fstring_start_var;
22156
24.5k
            goto done;
22157
24.5k
        }
22158
765k
        p->mark = _mark;
22159
765k
        D(fprintf(stderr, "%*c%s _tmp_42[%d-%d]: %s failed!\n", p->level, ' ',
22160
765k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_START"));
22161
765k
    }
22162
0
    { // TSTRING_START
22163
765k
        if (p->error_indicator) {
22164
0
            p->level--;
22165
0
            return NULL;
22166
0
        }
22167
765k
        D(fprintf(stderr, "%*c> _tmp_42[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TSTRING_START"));
22168
765k
        Token * tstring_start_var;
22169
765k
        if (
22170
765k
            (tstring_start_var = _PyPegen_expect_token(p, TSTRING_START))  // token='TSTRING_START'
22171
765k
        )
22172
6.24k
        {
22173
6.24k
            D(fprintf(stderr, "%*c+ _tmp_42[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TSTRING_START"));
22174
6.24k
            _res = tstring_start_var;
22175
6.24k
            goto done;
22176
6.24k
        }
22177
758k
        p->mark = _mark;
22178
758k
        D(fprintf(stderr, "%*c%s _tmp_42[%d-%d]: %s failed!\n", p->level, ' ',
22179
758k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TSTRING_START"));
22180
758k
    }
22181
758k
    _res = NULL;
22182
826k
  done:
22183
826k
    p->level--;
22184
826k
    return _res;
22185
758k
}
22186
22187
// _tmp_43: '.' | '(' | '='
22188
static void *
22189
_tmp_43_rule(Parser *p)
22190
29.1k
{
22191
29.1k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
22192
0
        _Pypegen_stack_overflow(p);
22193
0
    }
22194
29.1k
    if (p->error_indicator) {
22195
0
        p->level--;
22196
0
        return NULL;
22197
0
    }
22198
29.1k
    void * _res = NULL;
22199
29.1k
    int _mark = p->mark;
22200
29.1k
    { // '.'
22201
29.1k
        if (p->error_indicator) {
22202
0
            p->level--;
22203
0
            return NULL;
22204
0
        }
22205
29.1k
        D(fprintf(stderr, "%*c> _tmp_43[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
22206
29.1k
        Token * _literal;
22207
29.1k
        if (
22208
29.1k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
22209
29.1k
        )
22210
454
        {
22211
454
            D(fprintf(stderr, "%*c+ _tmp_43[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
22212
454
            _res = _literal;
22213
454
            goto done;
22214
454
        }
22215
28.7k
        p->mark = _mark;
22216
28.7k
        D(fprintf(stderr, "%*c%s _tmp_43[%d-%d]: %s failed!\n", p->level, ' ',
22217
28.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
22218
28.7k
    }
22219
0
    { // '('
22220
28.7k
        if (p->error_indicator) {
22221
22
            p->level--;
22222
22
            return NULL;
22223
22
        }
22224
28.7k
        D(fprintf(stderr, "%*c> _tmp_43[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
22225
28.7k
        Token * _literal;
22226
28.7k
        if (
22227
28.7k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
22228
28.7k
        )
22229
8.87k
        {
22230
8.87k
            D(fprintf(stderr, "%*c+ _tmp_43[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
22231
8.87k
            _res = _literal;
22232
8.87k
            goto done;
22233
8.87k
        }
22234
19.8k
        p->mark = _mark;
22235
19.8k
        D(fprintf(stderr, "%*c%s _tmp_43[%d-%d]: %s failed!\n", p->level, ' ',
22236
19.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
22237
19.8k
    }
22238
0
    { // '='
22239
19.8k
        if (p->error_indicator) {
22240
0
            p->level--;
22241
0
            return NULL;
22242
0
        }
22243
19.8k
        D(fprintf(stderr, "%*c> _tmp_43[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
22244
19.8k
        Token * _literal;
22245
19.8k
        if (
22246
19.8k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
22247
19.8k
        )
22248
2.99k
        {
22249
2.99k
            D(fprintf(stderr, "%*c+ _tmp_43[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
22250
2.99k
            _res = _literal;
22251
2.99k
            goto done;
22252
2.99k
        }
22253
16.8k
        p->mark = _mark;
22254
16.8k
        D(fprintf(stderr, "%*c%s _tmp_43[%d-%d]: %s failed!\n", p->level, ' ',
22255
16.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
22256
16.8k
    }
22257
16.8k
    _res = NULL;
22258
29.1k
  done:
22259
29.1k
    p->level--;
22260
29.1k
    return _res;
22261
16.8k
}
22262
22263
// _loop0_44: ',' maybe_star_pattern
22264
static asdl_seq *
22265
_loop0_44_rule(Parser *p)
22266
2.10k
{
22267
2.10k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
22268
0
        _Pypegen_stack_overflow(p);
22269
0
    }
22270
2.10k
    if (p->error_indicator) {
22271
0
        p->level--;
22272
0
        return NULL;
22273
0
    }
22274
2.10k
    void *_res = NULL;
22275
2.10k
    int _mark = p->mark;
22276
2.10k
    void **_children = NULL;
22277
2.10k
    Py_ssize_t _children_capacity = 0;
22278
2.10k
    Py_ssize_t _n = 0;
22279
2.10k
    { // ',' maybe_star_pattern
22280
2.10k
        if (p->error_indicator) {
22281
0
            p->level--;
22282
0
            return NULL;
22283
0
        }
22284
2.10k
        D(fprintf(stderr, "%*c> _loop0_44[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' maybe_star_pattern"));
22285
2.10k
        Token * _literal;
22286
2.10k
        pattern_ty elem;
22287
2.10k
        while (
22288
11.7k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
22289
10.9k
            &&
22290
10.9k
            (elem = maybe_star_pattern_rule(p))  // maybe_star_pattern
22291
2.10k
        )
22292
9.66k
        {
22293
9.66k
            _res = elem;
22294
9.66k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
22295
0
                p->error_indicator = 1;
22296
0
                PyMem_Free(_children);
22297
0
                p->level--;
22298
0
                return NULL;
22299
0
            }
22300
9.66k
            if (_n == _children_capacity) {
22301
2.49k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
22302
0
                    p->error_indicator = 1;
22303
0
                    PyErr_NoMemory();
22304
0
                    PyMem_Free(_children);
22305
0
                    p->level--;
22306
0
                    return NULL;
22307
0
                }
22308
2.49k
            }
22309
9.66k
            _children[_n++] = _res;
22310
9.66k
            _mark = p->mark;
22311
9.66k
        }
22312
2.10k
        p->mark = _mark;
22313
2.10k
        D(fprintf(stderr, "%*c%s _loop0_44[%d-%d]: %s failed!\n", p->level, ' ',
22314
2.10k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' maybe_star_pattern"));
22315
2.10k
    }
22316
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
22317
2.10k
    if (!_seq) {
22318
0
        p->error_indicator = 1;
22319
0
        PyErr_NoMemory();
22320
0
        PyMem_Free(_children);
22321
0
        p->level--;
22322
0
        return NULL;
22323
0
    }
22324
11.7k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
22325
2.10k
    PyMem_Free(_children);
22326
2.10k
    p->level--;
22327
2.10k
    return _seq;
22328
2.10k
}
22329
22330
// _gather_45: maybe_star_pattern _loop0_44
22331
static asdl_seq *
22332
_gather_45_rule(Parser *p)
22333
5.05k
{
22334
5.05k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
22335
0
        _Pypegen_stack_overflow(p);
22336
0
    }
22337
5.05k
    if (p->error_indicator) {
22338
0
        p->level--;
22339
0
        return NULL;
22340
0
    }
22341
5.05k
    asdl_seq * _res = NULL;
22342
5.05k
    int _mark = p->mark;
22343
5.05k
    { // maybe_star_pattern _loop0_44
22344
5.05k
        if (p->error_indicator) {
22345
0
            p->level--;
22346
0
            return NULL;
22347
0
        }
22348
5.05k
        D(fprintf(stderr, "%*c> _gather_45[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern _loop0_44"));
22349
5.05k
        pattern_ty elem;
22350
5.05k
        asdl_seq * seq;
22351
5.05k
        if (
22352
5.05k
            (elem = maybe_star_pattern_rule(p))  // maybe_star_pattern
22353
2.10k
            &&
22354
2.10k
            (seq = _loop0_44_rule(p))  // _loop0_44
22355
5.05k
        )
22356
2.10k
        {
22357
2.10k
            D(fprintf(stderr, "%*c+ _gather_45[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern _loop0_44"));
22358
2.10k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
22359
2.10k
            goto done;
22360
2.10k
        }
22361
2.94k
        p->mark = _mark;
22362
2.94k
        D(fprintf(stderr, "%*c%s _gather_45[%d-%d]: %s failed!\n", p->level, ' ',
22363
2.94k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "maybe_star_pattern _loop0_44"));
22364
2.94k
    }
22365
2.94k
    _res = NULL;
22366
5.05k
  done:
22367
5.05k
    p->level--;
22368
5.05k
    return _res;
22369
2.94k
}
22370
22371
// _loop0_46: ',' key_value_pattern
22372
static asdl_seq *
22373
_loop0_46_rule(Parser *p)
22374
5.94k
{
22375
5.94k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
22376
0
        _Pypegen_stack_overflow(p);
22377
0
    }
22378
5.94k
    if (p->error_indicator) {
22379
0
        p->level--;
22380
0
        return NULL;
22381
0
    }
22382
5.94k
    void *_res = NULL;
22383
5.94k
    int _mark = p->mark;
22384
5.94k
    void **_children = NULL;
22385
5.94k
    Py_ssize_t _children_capacity = 0;
22386
5.94k
    Py_ssize_t _n = 0;
22387
5.94k
    { // ',' key_value_pattern
22388
5.94k
        if (p->error_indicator) {
22389
0
            p->level--;
22390
0
            return NULL;
22391
0
        }
22392
5.94k
        D(fprintf(stderr, "%*c> _loop0_46[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' key_value_pattern"));
22393
5.94k
        Token * _literal;
22394
5.94k
        KeyPatternPair* elem;
22395
5.94k
        while (
22396
9.58k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
22397
7.60k
            &&
22398
7.60k
            (elem = key_value_pattern_rule(p))  // key_value_pattern
22399
5.94k
        )
22400
3.63k
        {
22401
3.63k
            _res = elem;
22402
3.63k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
22403
0
                p->error_indicator = 1;
22404
0
                PyMem_Free(_children);
22405
0
                p->level--;
22406
0
                return NULL;
22407
0
            }
22408
3.63k
            if (_n == _children_capacity) {
22409
2.97k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
22410
0
                    p->error_indicator = 1;
22411
0
                    PyErr_NoMemory();
22412
0
                    PyMem_Free(_children);
22413
0
                    p->level--;
22414
0
                    return NULL;
22415
0
                }
22416
2.97k
            }
22417
3.63k
            _children[_n++] = _res;
22418
3.63k
            _mark = p->mark;
22419
3.63k
        }
22420
5.94k
        p->mark = _mark;
22421
5.94k
        D(fprintf(stderr, "%*c%s _loop0_46[%d-%d]: %s failed!\n", p->level, ' ',
22422
5.94k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' key_value_pattern"));
22423
5.94k
    }
22424
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
22425
5.94k
    if (!_seq) {
22426
0
        p->error_indicator = 1;
22427
0
        PyErr_NoMemory();
22428
0
        PyMem_Free(_children);
22429
0
        p->level--;
22430
0
        return NULL;
22431
0
    }
22432
9.58k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
22433
5.94k
    PyMem_Free(_children);
22434
5.94k
    p->level--;
22435
5.94k
    return _seq;
22436
5.94k
}
22437
22438
// _gather_47: key_value_pattern _loop0_46
22439
static asdl_seq *
22440
_gather_47_rule(Parser *p)
22441
11.4k
{
22442
11.4k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
22443
0
        _Pypegen_stack_overflow(p);
22444
0
    }
22445
11.4k
    if (p->error_indicator) {
22446
0
        p->level--;
22447
0
        return NULL;
22448
0
    }
22449
11.4k
    asdl_seq * _res = NULL;
22450
11.4k
    int _mark = p->mark;
22451
11.4k
    { // key_value_pattern _loop0_46
22452
11.4k
        if (p->error_indicator) {
22453
0
            p->level--;
22454
0
            return NULL;
22455
0
        }
22456
11.4k
        D(fprintf(stderr, "%*c> _gather_47[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "key_value_pattern _loop0_46"));
22457
11.4k
        KeyPatternPair* elem;
22458
11.4k
        asdl_seq * seq;
22459
11.4k
        if (
22460
11.4k
            (elem = key_value_pattern_rule(p))  // key_value_pattern
22461
5.94k
            &&
22462
5.94k
            (seq = _loop0_46_rule(p))  // _loop0_46
22463
11.4k
        )
22464
5.94k
        {
22465
5.94k
            D(fprintf(stderr, "%*c+ _gather_47[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "key_value_pattern _loop0_46"));
22466
5.94k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
22467
5.94k
            goto done;
22468
5.94k
        }
22469
5.50k
        p->mark = _mark;
22470
5.50k
        D(fprintf(stderr, "%*c%s _gather_47[%d-%d]: %s failed!\n", p->level, ' ',
22471
5.50k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "key_value_pattern _loop0_46"));
22472
5.50k
    }
22473
5.50k
    _res = NULL;
22474
11.4k
  done:
22475
11.4k
    p->level--;
22476
11.4k
    return _res;
22477
5.50k
}
22478
22479
// _tmp_48: literal_expr | attr
22480
static void *
22481
_tmp_48_rule(Parser *p)
22482
19.0k
{
22483
19.0k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
22484
0
        _Pypegen_stack_overflow(p);
22485
0
    }
22486
19.0k
    if (p->error_indicator) {
22487
0
        p->level--;
22488
0
        return NULL;
22489
0
    }
22490
19.0k
    void * _res = NULL;
22491
19.0k
    int _mark = p->mark;
22492
19.0k
    { // literal_expr
22493
19.0k
        if (p->error_indicator) {
22494
0
            p->level--;
22495
0
            return NULL;
22496
0
        }
22497
19.0k
        D(fprintf(stderr, "%*c> _tmp_48[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "literal_expr"));
22498
19.0k
        expr_ty literal_expr_var;
22499
19.0k
        if (
22500
19.0k
            (literal_expr_var = literal_expr_rule(p))  // literal_expr
22501
19.0k
        )
22502
16.0k
        {
22503
16.0k
            D(fprintf(stderr, "%*c+ _tmp_48[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "literal_expr"));
22504
16.0k
            _res = literal_expr_var;
22505
16.0k
            goto done;
22506
16.0k
        }
22507
2.95k
        p->mark = _mark;
22508
2.95k
        D(fprintf(stderr, "%*c%s _tmp_48[%d-%d]: %s failed!\n", p->level, ' ',
22509
2.95k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "literal_expr"));
22510
2.95k
    }
22511
0
    { // attr
22512
2.95k
        if (p->error_indicator) {
22513
22
            p->level--;
22514
22
            return NULL;
22515
22
        }
22516
2.93k
        D(fprintf(stderr, "%*c> _tmp_48[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr"));
22517
2.93k
        expr_ty attr_var;
22518
2.93k
        if (
22519
2.93k
            (attr_var = attr_rule(p))  // attr
22520
2.93k
        )
22521
76
        {
22522
76
            D(fprintf(stderr, "%*c+ _tmp_48[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr"));
22523
76
            _res = attr_var;
22524
76
            goto done;
22525
76
        }
22526
2.86k
        p->mark = _mark;
22527
2.86k
        D(fprintf(stderr, "%*c%s _tmp_48[%d-%d]: %s failed!\n", p->level, ' ',
22528
2.86k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr"));
22529
2.86k
    }
22530
2.86k
    _res = NULL;
22531
19.0k
  done:
22532
19.0k
    p->level--;
22533
19.0k
    return _res;
22534
2.86k
}
22535
22536
// _loop0_49: ',' pattern
22537
static asdl_seq *
22538
_loop0_49_rule(Parser *p)
22539
8.37k
{
22540
8.37k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
22541
0
        _Pypegen_stack_overflow(p);
22542
0
    }
22543
8.37k
    if (p->error_indicator) {
22544
0
        p->level--;
22545
0
        return NULL;
22546
0
    }
22547
8.37k
    void *_res = NULL;
22548
8.37k
    int _mark = p->mark;
22549
8.37k
    void **_children = NULL;
22550
8.37k
    Py_ssize_t _children_capacity = 0;
22551
8.37k
    Py_ssize_t _n = 0;
22552
8.37k
    { // ',' pattern
22553
8.37k
        if (p->error_indicator) {
22554
0
            p->level--;
22555
0
            return NULL;
22556
0
        }
22557
8.37k
        D(fprintf(stderr, "%*c> _loop0_49[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' pattern"));
22558
8.37k
        Token * _literal;
22559
8.37k
        pattern_ty elem;
22560
8.37k
        while (
22561
14.4k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
22562
11.3k
            &&
22563
11.3k
            (elem = pattern_rule(p))  // pattern
22564
8.37k
        )
22565
6.11k
        {
22566
6.11k
            _res = elem;
22567
6.11k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
22568
0
                p->error_indicator = 1;
22569
0
                PyMem_Free(_children);
22570
0
                p->level--;
22571
0
                return NULL;
22572
0
            }
22573
6.11k
            if (_n == _children_capacity) {
22574
2.58k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
22575
0
                    p->error_indicator = 1;
22576
0
                    PyErr_NoMemory();
22577
0
                    PyMem_Free(_children);
22578
0
                    p->level--;
22579
0
                    return NULL;
22580
0
                }
22581
2.58k
            }
22582
6.11k
            _children[_n++] = _res;
22583
6.11k
            _mark = p->mark;
22584
6.11k
        }
22585
8.37k
        p->mark = _mark;
22586
8.37k
        D(fprintf(stderr, "%*c%s _loop0_49[%d-%d]: %s failed!\n", p->level, ' ',
22587
8.37k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' pattern"));
22588
8.37k
    }
22589
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
22590
8.37k
    if (!_seq) {
22591
0
        p->error_indicator = 1;
22592
0
        PyErr_NoMemory();
22593
0
        PyMem_Free(_children);
22594
0
        p->level--;
22595
0
        return NULL;
22596
0
    }
22597
14.4k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
22598
8.37k
    PyMem_Free(_children);
22599
8.37k
    p->level--;
22600
8.37k
    return _seq;
22601
8.37k
}
22602
22603
// _gather_50: pattern _loop0_49
22604
static asdl_seq *
22605
_gather_50_rule(Parser *p)
22606
16.1k
{
22607
16.1k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
22608
0
        _Pypegen_stack_overflow(p);
22609
0
    }
22610
16.1k
    if (p->error_indicator) {
22611
0
        p->level--;
22612
0
        return NULL;
22613
0
    }
22614
16.1k
    asdl_seq * _res = NULL;
22615
16.1k
    int _mark = p->mark;
22616
16.1k
    { // pattern _loop0_49
22617
16.1k
        if (p->error_indicator) {
22618
0
            p->level--;
22619
0
            return NULL;
22620
0
        }
22621
16.1k
        D(fprintf(stderr, "%*c> _gather_50[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern _loop0_49"));
22622
16.1k
        pattern_ty elem;
22623
16.1k
        asdl_seq * seq;
22624
16.1k
        if (
22625
16.1k
            (elem = pattern_rule(p))  // pattern
22626
8.37k
            &&
22627
8.37k
            (seq = _loop0_49_rule(p))  // _loop0_49
22628
16.1k
        )
22629
8.37k
        {
22630
8.37k
            D(fprintf(stderr, "%*c+ _gather_50[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern _loop0_49"));
22631
8.37k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
22632
8.37k
            goto done;
22633
8.37k
        }
22634
7.74k
        p->mark = _mark;
22635
7.74k
        D(fprintf(stderr, "%*c%s _gather_50[%d-%d]: %s failed!\n", p->level, ' ',
22636
7.74k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern _loop0_49"));
22637
7.74k
    }
22638
7.74k
    _res = NULL;
22639
16.1k
  done:
22640
16.1k
    p->level--;
22641
16.1k
    return _res;
22642
7.74k
}
22643
22644
// _loop0_51: ',' keyword_pattern
22645
static asdl_seq *
22646
_loop0_51_rule(Parser *p)
22647
3.12k
{
22648
3.12k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
22649
0
        _Pypegen_stack_overflow(p);
22650
0
    }
22651
3.12k
    if (p->error_indicator) {
22652
0
        p->level--;
22653
0
        return NULL;
22654
0
    }
22655
3.12k
    void *_res = NULL;
22656
3.12k
    int _mark = p->mark;
22657
3.12k
    void **_children = NULL;
22658
3.12k
    Py_ssize_t _children_capacity = 0;
22659
3.12k
    Py_ssize_t _n = 0;
22660
3.12k
    { // ',' keyword_pattern
22661
3.12k
        if (p->error_indicator) {
22662
0
            p->level--;
22663
0
            return NULL;
22664
0
        }
22665
3.12k
        D(fprintf(stderr, "%*c> _loop0_51[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' keyword_pattern"));
22666
3.12k
        Token * _literal;
22667
3.12k
        KeyPatternPair* elem;
22668
3.12k
        while (
22669
4.01k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
22670
2.16k
            &&
22671
2.16k
            (elem = keyword_pattern_rule(p))  // keyword_pattern
22672
3.12k
        )
22673
888
        {
22674
888
            _res = elem;
22675
888
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
22676
0
                p->error_indicator = 1;
22677
0
                PyMem_Free(_children);
22678
0
                p->level--;
22679
0
                return NULL;
22680
0
            }
22681
888
            if (_n == _children_capacity) {
22682
521
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
22683
0
                    p->error_indicator = 1;
22684
0
                    PyErr_NoMemory();
22685
0
                    PyMem_Free(_children);
22686
0
                    p->level--;
22687
0
                    return NULL;
22688
0
                }
22689
521
            }
22690
888
            _children[_n++] = _res;
22691
888
            _mark = p->mark;
22692
888
        }
22693
3.12k
        p->mark = _mark;
22694
3.12k
        D(fprintf(stderr, "%*c%s _loop0_51[%d-%d]: %s failed!\n", p->level, ' ',
22695
3.12k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' keyword_pattern"));
22696
3.12k
    }
22697
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
22698
3.12k
    if (!_seq) {
22699
0
        p->error_indicator = 1;
22700
0
        PyErr_NoMemory();
22701
0
        PyMem_Free(_children);
22702
0
        p->level--;
22703
0
        return NULL;
22704
0
    }
22705
4.01k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
22706
3.12k
    PyMem_Free(_children);
22707
3.12k
    p->level--;
22708
3.12k
    return _seq;
22709
3.12k
}
22710
22711
// _gather_52: keyword_pattern _loop0_51
22712
static asdl_seq *
22713
_gather_52_rule(Parser *p)
22714
11.3k
{
22715
11.3k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
22716
0
        _Pypegen_stack_overflow(p);
22717
0
    }
22718
11.3k
    if (p->error_indicator) {
22719
0
        p->level--;
22720
0
        return NULL;
22721
0
    }
22722
11.3k
    asdl_seq * _res = NULL;
22723
11.3k
    int _mark = p->mark;
22724
11.3k
    { // keyword_pattern _loop0_51
22725
11.3k
        if (p->error_indicator) {
22726
0
            p->level--;
22727
0
            return NULL;
22728
0
        }
22729
11.3k
        D(fprintf(stderr, "%*c> _gather_52[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "keyword_pattern _loop0_51"));
22730
11.3k
        KeyPatternPair* elem;
22731
11.3k
        asdl_seq * seq;
22732
11.3k
        if (
22733
11.3k
            (elem = keyword_pattern_rule(p))  // keyword_pattern
22734
3.12k
            &&
22735
3.12k
            (seq = _loop0_51_rule(p))  // _loop0_51
22736
11.3k
        )
22737
3.12k
        {
22738
3.12k
            D(fprintf(stderr, "%*c+ _gather_52[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "keyword_pattern _loop0_51"));
22739
3.12k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
22740
3.12k
            goto done;
22741
3.12k
        }
22742
8.20k
        p->mark = _mark;
22743
8.20k
        D(fprintf(stderr, "%*c%s _gather_52[%d-%d]: %s failed!\n", p->level, ' ',
22744
8.20k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "keyword_pattern _loop0_51"));
22745
8.20k
    }
22746
8.20k
    _res = NULL;
22747
11.3k
  done:
22748
11.3k
    p->level--;
22749
11.3k
    return _res;
22750
8.20k
}
22751
22752
// _loop0_53: ',' type_param
22753
static asdl_seq *
22754
_loop0_53_rule(Parser *p)
22755
1.53k
{
22756
1.53k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
22757
0
        _Pypegen_stack_overflow(p);
22758
0
    }
22759
1.53k
    if (p->error_indicator) {
22760
0
        p->level--;
22761
0
        return NULL;
22762
0
    }
22763
1.53k
    void *_res = NULL;
22764
1.53k
    int _mark = p->mark;
22765
1.53k
    void **_children = NULL;
22766
1.53k
    Py_ssize_t _children_capacity = 0;
22767
1.53k
    Py_ssize_t _n = 0;
22768
1.53k
    { // ',' type_param
22769
1.53k
        if (p->error_indicator) {
22770
0
            p->level--;
22771
0
            return NULL;
22772
0
        }
22773
1.53k
        D(fprintf(stderr, "%*c> _loop0_53[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' type_param"));
22774
1.53k
        Token * _literal;
22775
1.53k
        type_param_ty elem;
22776
1.53k
        while (
22777
12.6k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
22778
12.1k
            &&
22779
12.1k
            (elem = type_param_rule(p))  // type_param
22780
1.53k
        )
22781
11.0k
        {
22782
11.0k
            _res = elem;
22783
11.0k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
22784
0
                p->error_indicator = 1;
22785
0
                PyMem_Free(_children);
22786
0
                p->level--;
22787
0
                return NULL;
22788
0
            }
22789
11.0k
            if (_n == _children_capacity) {
22790
1.48k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
22791
0
                    p->error_indicator = 1;
22792
0
                    PyErr_NoMemory();
22793
0
                    PyMem_Free(_children);
22794
0
                    p->level--;
22795
0
                    return NULL;
22796
0
                }
22797
1.48k
            }
22798
11.0k
            _children[_n++] = _res;
22799
11.0k
            _mark = p->mark;
22800
11.0k
        }
22801
1.53k
        p->mark = _mark;
22802
1.53k
        D(fprintf(stderr, "%*c%s _loop0_53[%d-%d]: %s failed!\n", p->level, ' ',
22803
1.53k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' type_param"));
22804
1.53k
    }
22805
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
22806
1.53k
    if (!_seq) {
22807
0
        p->error_indicator = 1;
22808
0
        PyErr_NoMemory();
22809
0
        PyMem_Free(_children);
22810
0
        p->level--;
22811
0
        return NULL;
22812
0
    }
22813
12.6k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
22814
1.53k
    PyMem_Free(_children);
22815
1.53k
    p->level--;
22816
1.53k
    return _seq;
22817
1.53k
}
22818
22819
// _gather_54: type_param _loop0_53
22820
static asdl_seq *
22821
_gather_54_rule(Parser *p)
22822
1.64k
{
22823
1.64k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
22824
0
        _Pypegen_stack_overflow(p);
22825
0
    }
22826
1.64k
    if (p->error_indicator) {
22827
0
        p->level--;
22828
0
        return NULL;
22829
0
    }
22830
1.64k
    asdl_seq * _res = NULL;
22831
1.64k
    int _mark = p->mark;
22832
1.64k
    { // type_param _loop0_53
22833
1.64k
        if (p->error_indicator) {
22834
0
            p->level--;
22835
0
            return NULL;
22836
0
        }
22837
1.64k
        D(fprintf(stderr, "%*c> _gather_54[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "type_param _loop0_53"));
22838
1.64k
        type_param_ty elem;
22839
1.64k
        asdl_seq * seq;
22840
1.64k
        if (
22841
1.64k
            (elem = type_param_rule(p))  // type_param
22842
1.53k
            &&
22843
1.53k
            (seq = _loop0_53_rule(p))  // _loop0_53
22844
1.64k
        )
22845
1.53k
        {
22846
1.53k
            D(fprintf(stderr, "%*c+ _gather_54[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "type_param _loop0_53"));
22847
1.53k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
22848
1.53k
            goto done;
22849
1.53k
        }
22850
109
        p->mark = _mark;
22851
109
        D(fprintf(stderr, "%*c%s _gather_54[%d-%d]: %s failed!\n", p->level, ' ',
22852
109
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "type_param _loop0_53"));
22853
109
    }
22854
109
    _res = NULL;
22855
1.64k
  done:
22856
1.64k
    p->level--;
22857
1.64k
    return _res;
22858
109
}
22859
22860
// _loop1_55: (',' expression)
22861
static asdl_seq *
22862
_loop1_55_rule(Parser *p)
22863
4.07k
{
22864
4.07k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
22865
0
        _Pypegen_stack_overflow(p);
22866
0
    }
22867
4.07k
    if (p->error_indicator) {
22868
0
        p->level--;
22869
0
        return NULL;
22870
0
    }
22871
4.07k
    void *_res = NULL;
22872
4.07k
    int _mark = p->mark;
22873
4.07k
    void **_children = NULL;
22874
4.07k
    Py_ssize_t _children_capacity = 0;
22875
4.07k
    Py_ssize_t _n = 0;
22876
4.07k
    { // (',' expression)
22877
4.07k
        if (p->error_indicator) {
22878
0
            p->level--;
22879
0
            return NULL;
22880
0
        }
22881
4.07k
        D(fprintf(stderr, "%*c> _loop1_55[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' expression)"));
22882
4.07k
        void *_tmp_16_var;
22883
4.07k
        while (
22884
8.03k
            (_tmp_16_var = _tmp_16_rule(p))  // ',' expression
22885
4.07k
        )
22886
3.95k
        {
22887
3.95k
            _res = _tmp_16_var;
22888
3.95k
            if (_n == _children_capacity) {
22889
2.49k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
22890
0
                    p->error_indicator = 1;
22891
0
                    PyErr_NoMemory();
22892
0
                    PyMem_Free(_children);
22893
0
                    p->level--;
22894
0
                    return NULL;
22895
0
                }
22896
2.49k
            }
22897
3.95k
            _children[_n++] = _res;
22898
3.95k
            _mark = p->mark;
22899
3.95k
        }
22900
4.07k
        p->mark = _mark;
22901
4.07k
        D(fprintf(stderr, "%*c%s _loop1_55[%d-%d]: %s failed!\n", p->level, ' ',
22902
4.07k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' expression)"));
22903
4.07k
    }
22904
4.07k
    if (_n == 0 || p->error_indicator) {
22905
2.70k
        PyMem_Free(_children);
22906
2.70k
        p->level--;
22907
2.70k
        return NULL;
22908
2.70k
    }
22909
1.37k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
22910
1.37k
    if (!_seq) {
22911
0
        p->error_indicator = 1;
22912
0
        PyErr_NoMemory();
22913
0
        PyMem_Free(_children);
22914
0
        p->level--;
22915
0
        return NULL;
22916
0
    }
22917
5.33k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
22918
1.37k
    PyMem_Free(_children);
22919
1.37k
    p->level--;
22920
1.37k
    return _seq;
22921
1.37k
}
22922
22923
// _loop1_56: (',' star_expression)
22924
static asdl_seq *
22925
_loop1_56_rule(Parser *p)
22926
229k
{
22927
229k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
22928
0
        _Pypegen_stack_overflow(p);
22929
0
    }
22930
229k
    if (p->error_indicator) {
22931
0
        p->level--;
22932
0
        return NULL;
22933
0
    }
22934
229k
    void *_res = NULL;
22935
229k
    int _mark = p->mark;
22936
229k
    void **_children = NULL;
22937
229k
    Py_ssize_t _children_capacity = 0;
22938
229k
    Py_ssize_t _n = 0;
22939
229k
    { // (',' star_expression)
22940
229k
        if (p->error_indicator) {
22941
0
            p->level--;
22942
0
            return NULL;
22943
0
        }
22944
229k
        D(fprintf(stderr, "%*c> _loop1_56[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_expression)"));
22945
229k
        void *_tmp_181_var;
22946
229k
        while (
22947
245k
            (_tmp_181_var = _tmp_181_rule(p))  // ',' star_expression
22948
229k
        )
22949
16.4k
        {
22950
16.4k
            _res = _tmp_181_var;
22951
16.4k
            if (_n == _children_capacity) {
22952
9.68k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
22953
0
                    p->error_indicator = 1;
22954
0
                    PyErr_NoMemory();
22955
0
                    PyMem_Free(_children);
22956
0
                    p->level--;
22957
0
                    return NULL;
22958
0
                }
22959
9.68k
            }
22960
16.4k
            _children[_n++] = _res;
22961
16.4k
            _mark = p->mark;
22962
16.4k
        }
22963
229k
        p->mark = _mark;
22964
229k
        D(fprintf(stderr, "%*c%s _loop1_56[%d-%d]: %s failed!\n", p->level, ' ',
22965
229k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_expression)"));
22966
229k
    }
22967
229k
    if (_n == 0 || p->error_indicator) {
22968
222k
        PyMem_Free(_children);
22969
222k
        p->level--;
22970
222k
        return NULL;
22971
222k
    }
22972
6.68k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
22973
6.68k
    if (!_seq) {
22974
0
        p->error_indicator = 1;
22975
0
        PyErr_NoMemory();
22976
0
        PyMem_Free(_children);
22977
0
        p->level--;
22978
0
        return NULL;
22979
0
    }
22980
22.7k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
22981
6.68k
    PyMem_Free(_children);
22982
6.68k
    p->level--;
22983
6.68k
    return _seq;
22984
6.68k
}
22985
22986
// _loop0_57: ',' star_named_expression
22987
static asdl_seq *
22988
_loop0_57_rule(Parser *p)
22989
5.50k
{
22990
5.50k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
22991
0
        _Pypegen_stack_overflow(p);
22992
0
    }
22993
5.50k
    if (p->error_indicator) {
22994
0
        p->level--;
22995
0
        return NULL;
22996
0
    }
22997
5.50k
    void *_res = NULL;
22998
5.50k
    int _mark = p->mark;
22999
5.50k
    void **_children = NULL;
23000
5.50k
    Py_ssize_t _children_capacity = 0;
23001
5.50k
    Py_ssize_t _n = 0;
23002
5.50k
    { // ',' star_named_expression
23003
5.50k
        if (p->error_indicator) {
23004
0
            p->level--;
23005
0
            return NULL;
23006
0
        }
23007
5.50k
        D(fprintf(stderr, "%*c> _loop0_57[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_named_expression"));
23008
5.50k
        Token * _literal;
23009
5.50k
        expr_ty elem;
23010
5.50k
        while (
23011
11.1k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
23012
6.32k
            &&
23013
6.32k
            (elem = star_named_expression_rule(p))  // star_named_expression
23014
5.50k
        )
23015
5.66k
        {
23016
5.66k
            _res = elem;
23017
5.66k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
23018
0
                p->error_indicator = 1;
23019
0
                PyMem_Free(_children);
23020
0
                p->level--;
23021
0
                return NULL;
23022
0
            }
23023
5.66k
            if (_n == _children_capacity) {
23024
2.32k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
23025
0
                    p->error_indicator = 1;
23026
0
                    PyErr_NoMemory();
23027
0
                    PyMem_Free(_children);
23028
0
                    p->level--;
23029
0
                    return NULL;
23030
0
                }
23031
2.32k
            }
23032
5.66k
            _children[_n++] = _res;
23033
5.66k
            _mark = p->mark;
23034
5.66k
        }
23035
5.50k
        p->mark = _mark;
23036
5.50k
        D(fprintf(stderr, "%*c%s _loop0_57[%d-%d]: %s failed!\n", p->level, ' ',
23037
5.50k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_named_expression"));
23038
5.50k
    }
23039
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23040
5.50k
    if (!_seq) {
23041
0
        p->error_indicator = 1;
23042
0
        PyErr_NoMemory();
23043
0
        PyMem_Free(_children);
23044
0
        p->level--;
23045
0
        return NULL;
23046
0
    }
23047
11.1k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23048
5.50k
    PyMem_Free(_children);
23049
5.50k
    p->level--;
23050
5.50k
    return _seq;
23051
5.50k
}
23052
23053
// _gather_58: star_named_expression _loop0_57
23054
static asdl_seq *
23055
_gather_58_rule(Parser *p)
23056
7.83k
{
23057
7.83k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
23058
0
        _Pypegen_stack_overflow(p);
23059
0
    }
23060
7.83k
    if (p->error_indicator) {
23061
0
        p->level--;
23062
0
        return NULL;
23063
0
    }
23064
7.83k
    asdl_seq * _res = NULL;
23065
7.83k
    int _mark = p->mark;
23066
7.83k
    { // star_named_expression _loop0_57
23067
7.83k
        if (p->error_indicator) {
23068
0
            p->level--;
23069
0
            return NULL;
23070
0
        }
23071
7.83k
        D(fprintf(stderr, "%*c> _gather_58[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_57"));
23072
7.83k
        expr_ty elem;
23073
7.83k
        asdl_seq * seq;
23074
7.83k
        if (
23075
7.83k
            (elem = star_named_expression_rule(p))  // star_named_expression
23076
5.50k
            &&
23077
5.50k
            (seq = _loop0_57_rule(p))  // _loop0_57
23078
7.83k
        )
23079
5.50k
        {
23080
5.50k
            D(fprintf(stderr, "%*c+ _gather_58[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_57"));
23081
5.50k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
23082
5.50k
            goto done;
23083
5.50k
        }
23084
2.32k
        p->mark = _mark;
23085
2.32k
        D(fprintf(stderr, "%*c%s _gather_58[%d-%d]: %s failed!\n", p->level, ' ',
23086
2.32k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression _loop0_57"));
23087
2.32k
    }
23088
2.32k
    _res = NULL;
23089
7.83k
  done:
23090
7.83k
    p->level--;
23091
7.83k
    return _res;
23092
2.32k
}
23093
23094
// _loop1_59: ('or' conjunction)
23095
static asdl_seq *
23096
_loop1_59_rule(Parser *p)
23097
139k
{
23098
139k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
23099
0
        _Pypegen_stack_overflow(p);
23100
0
    }
23101
139k
    if (p->error_indicator) {
23102
0
        p->level--;
23103
0
        return NULL;
23104
0
    }
23105
139k
    void *_res = NULL;
23106
139k
    int _mark = p->mark;
23107
139k
    void **_children = NULL;
23108
139k
    Py_ssize_t _children_capacity = 0;
23109
139k
    Py_ssize_t _n = 0;
23110
139k
    { // ('or' conjunction)
23111
139k
        if (p->error_indicator) {
23112
0
            p->level--;
23113
0
            return NULL;
23114
0
        }
23115
139k
        D(fprintf(stderr, "%*c> _loop1_59[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('or' conjunction)"));
23116
139k
        void *_tmp_182_var;
23117
139k
        while (
23118
143k
            (_tmp_182_var = _tmp_182_rule(p))  // 'or' conjunction
23119
139k
        )
23120
4.11k
        {
23121
4.11k
            _res = _tmp_182_var;
23122
4.11k
            if (_n == _children_capacity) {
23123
1.91k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
23124
0
                    p->error_indicator = 1;
23125
0
                    PyErr_NoMemory();
23126
0
                    PyMem_Free(_children);
23127
0
                    p->level--;
23128
0
                    return NULL;
23129
0
                }
23130
1.91k
            }
23131
4.11k
            _children[_n++] = _res;
23132
4.11k
            _mark = p->mark;
23133
4.11k
        }
23134
139k
        p->mark = _mark;
23135
139k
        D(fprintf(stderr, "%*c%s _loop1_59[%d-%d]: %s failed!\n", p->level, ' ',
23136
139k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('or' conjunction)"));
23137
139k
    }
23138
139k
    if (_n == 0 || p->error_indicator) {
23139
138k
        PyMem_Free(_children);
23140
138k
        p->level--;
23141
138k
        return NULL;
23142
138k
    }
23143
1.13k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23144
1.13k
    if (!_seq) {
23145
0
        p->error_indicator = 1;
23146
0
        PyErr_NoMemory();
23147
0
        PyMem_Free(_children);
23148
0
        p->level--;
23149
0
        return NULL;
23150
0
    }
23151
4.89k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23152
1.13k
    PyMem_Free(_children);
23153
1.13k
    p->level--;
23154
1.13k
    return _seq;
23155
1.13k
}
23156
23157
// _loop1_60: ('and' inversion)
23158
static asdl_seq *
23159
_loop1_60_rule(Parser *p)
23160
143k
{
23161
143k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
23162
0
        _Pypegen_stack_overflow(p);
23163
0
    }
23164
143k
    if (p->error_indicator) {
23165
0
        p->level--;
23166
0
        return NULL;
23167
0
    }
23168
143k
    void *_res = NULL;
23169
143k
    int _mark = p->mark;
23170
143k
    void **_children = NULL;
23171
143k
    Py_ssize_t _children_capacity = 0;
23172
143k
    Py_ssize_t _n = 0;
23173
143k
    { // ('and' inversion)
23174
143k
        if (p->error_indicator) {
23175
0
            p->level--;
23176
0
            return NULL;
23177
0
        }
23178
143k
        D(fprintf(stderr, "%*c> _loop1_60[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('and' inversion)"));
23179
143k
        void *_tmp_183_var;
23180
143k
        while (
23181
145k
            (_tmp_183_var = _tmp_183_rule(p))  // 'and' inversion
23182
143k
        )
23183
2.00k
        {
23184
2.00k
            _res = _tmp_183_var;
23185
2.00k
            if (_n == _children_capacity) {
23186
1.29k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
23187
0
                    p->error_indicator = 1;
23188
0
                    PyErr_NoMemory();
23189
0
                    PyMem_Free(_children);
23190
0
                    p->level--;
23191
0
                    return NULL;
23192
0
                }
23193
1.29k
            }
23194
2.00k
            _children[_n++] = _res;
23195
2.00k
            _mark = p->mark;
23196
2.00k
        }
23197
143k
        p->mark = _mark;
23198
143k
        D(fprintf(stderr, "%*c%s _loop1_60[%d-%d]: %s failed!\n", p->level, ' ',
23199
143k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('and' inversion)"));
23200
143k
    }
23201
143k
    if (_n == 0 || p->error_indicator) {
23202
143k
        PyMem_Free(_children);
23203
143k
        p->level--;
23204
143k
        return NULL;
23205
143k
    }
23206
746
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23207
746
    if (!_seq) {
23208
0
        p->error_indicator = 1;
23209
0
        PyErr_NoMemory();
23210
0
        PyMem_Free(_children);
23211
0
        p->level--;
23212
0
        return NULL;
23213
0
    }
23214
2.59k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23215
746
    PyMem_Free(_children);
23216
746
    p->level--;
23217
746
    return _seq;
23218
746
}
23219
23220
// _loop1_61: compare_op_bitwise_or_pair
23221
static asdl_seq *
23222
_loop1_61_rule(Parser *p)
23223
147k
{
23224
147k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
23225
0
        _Pypegen_stack_overflow(p);
23226
0
    }
23227
147k
    if (p->error_indicator) {
23228
0
        p->level--;
23229
0
        return NULL;
23230
0
    }
23231
147k
    void *_res = NULL;
23232
147k
    int _mark = p->mark;
23233
147k
    void **_children = NULL;
23234
147k
    Py_ssize_t _children_capacity = 0;
23235
147k
    Py_ssize_t _n = 0;
23236
147k
    { // compare_op_bitwise_or_pair
23237
147k
        if (p->error_indicator) {
23238
0
            p->level--;
23239
0
            return NULL;
23240
0
        }
23241
147k
        D(fprintf(stderr, "%*c> _loop1_61[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compare_op_bitwise_or_pair"));
23242
147k
        CmpopExprPair* compare_op_bitwise_or_pair_var;
23243
147k
        while (
23244
165k
            (compare_op_bitwise_or_pair_var = compare_op_bitwise_or_pair_rule(p))  // compare_op_bitwise_or_pair
23245
147k
        )
23246
18.5k
        {
23247
18.5k
            _res = compare_op_bitwise_or_pair_var;
23248
18.5k
            if (_n == _children_capacity) {
23249
9.00k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
23250
0
                    p->error_indicator = 1;
23251
0
                    PyErr_NoMemory();
23252
0
                    PyMem_Free(_children);
23253
0
                    p->level--;
23254
0
                    return NULL;
23255
0
                }
23256
9.00k
            }
23257
18.5k
            _children[_n++] = _res;
23258
18.5k
            _mark = p->mark;
23259
18.5k
        }
23260
147k
        p->mark = _mark;
23261
147k
        D(fprintf(stderr, "%*c%s _loop1_61[%d-%d]: %s failed!\n", p->level, ' ',
23262
147k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compare_op_bitwise_or_pair"));
23263
147k
    }
23264
147k
    if (_n == 0 || p->error_indicator) {
23265
141k
        PyMem_Free(_children);
23266
141k
        p->level--;
23267
141k
        return NULL;
23268
141k
    }
23269
5.70k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23270
5.70k
    if (!_seq) {
23271
0
        p->error_indicator = 1;
23272
0
        PyErr_NoMemory();
23273
0
        PyMem_Free(_children);
23274
0
        p->level--;
23275
0
        return NULL;
23276
0
    }
23277
23.6k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23278
5.70k
    PyMem_Free(_children);
23279
5.70k
    p->level--;
23280
5.70k
    return _seq;
23281
5.70k
}
23282
23283
// _tmp_62: '!='
23284
static void *
23285
_tmp_62_rule(Parser *p)
23286
163k
{
23287
163k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
23288
0
        _Pypegen_stack_overflow(p);
23289
0
    }
23290
163k
    if (p->error_indicator) {
23291
0
        p->level--;
23292
0
        return NULL;
23293
0
    }
23294
163k
    void * _res = NULL;
23295
163k
    int _mark = p->mark;
23296
163k
    { // '!='
23297
163k
        if (p->error_indicator) {
23298
0
            p->level--;
23299
0
            return NULL;
23300
0
        }
23301
163k
        D(fprintf(stderr, "%*c> _tmp_62[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!='"));
23302
163k
        Token * tok;
23303
163k
        if (
23304
163k
            (tok = _PyPegen_expect_token(p, 28))  // token='!='
23305
163k
        )
23306
1.20k
        {
23307
1.20k
            D(fprintf(stderr, "%*c+ _tmp_62[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!='"));
23308
1.20k
            _res = _PyPegen_check_barry_as_flufl ( p , tok ) ? NULL : tok;
23309
1.20k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
23310
1
                p->error_indicator = 1;
23311
1
                p->level--;
23312
1
                return NULL;
23313
1
            }
23314
1.20k
            goto done;
23315
1.20k
        }
23316
162k
        p->mark = _mark;
23317
162k
        D(fprintf(stderr, "%*c%s _tmp_62[%d-%d]: %s failed!\n", p->level, ' ',
23318
162k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!='"));
23319
162k
    }
23320
162k
    _res = NULL;
23321
163k
  done:
23322
163k
    p->level--;
23323
163k
    return _res;
23324
162k
}
23325
23326
// _loop0_63: ',' (slice | starred_expression)
23327
static asdl_seq *
23328
_loop0_63_rule(Parser *p)
23329
3.07k
{
23330
3.07k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
23331
0
        _Pypegen_stack_overflow(p);
23332
0
    }
23333
3.07k
    if (p->error_indicator) {
23334
0
        p->level--;
23335
0
        return NULL;
23336
0
    }
23337
3.07k
    void *_res = NULL;
23338
3.07k
    int _mark = p->mark;
23339
3.07k
    void **_children = NULL;
23340
3.07k
    Py_ssize_t _children_capacity = 0;
23341
3.07k
    Py_ssize_t _n = 0;
23342
3.07k
    { // ',' (slice | starred_expression)
23343
3.07k
        if (p->error_indicator) {
23344
0
            p->level--;
23345
0
            return NULL;
23346
0
        }
23347
3.07k
        D(fprintf(stderr, "%*c> _loop0_63[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (slice | starred_expression)"));
23348
3.07k
        Token * _literal;
23349
3.07k
        void *elem;
23350
3.07k
        while (
23351
9.57k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
23352
7.17k
            &&
23353
7.17k
            (elem = _tmp_184_rule(p))  // slice | starred_expression
23354
3.07k
        )
23355
6.50k
        {
23356
6.50k
            _res = elem;
23357
6.50k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
23358
0
                p->error_indicator = 1;
23359
0
                PyMem_Free(_children);
23360
0
                p->level--;
23361
0
                return NULL;
23362
0
            }
23363
6.50k
            if (_n == _children_capacity) {
23364
3.80k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
23365
0
                    p->error_indicator = 1;
23366
0
                    PyErr_NoMemory();
23367
0
                    PyMem_Free(_children);
23368
0
                    p->level--;
23369
0
                    return NULL;
23370
0
                }
23371
3.80k
            }
23372
6.50k
            _children[_n++] = _res;
23373
6.50k
            _mark = p->mark;
23374
6.50k
        }
23375
3.07k
        p->mark = _mark;
23376
3.07k
        D(fprintf(stderr, "%*c%s _loop0_63[%d-%d]: %s failed!\n", p->level, ' ',
23377
3.07k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (slice | starred_expression)"));
23378
3.07k
    }
23379
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23380
3.07k
    if (!_seq) {
23381
0
        p->error_indicator = 1;
23382
0
        PyErr_NoMemory();
23383
0
        PyMem_Free(_children);
23384
0
        p->level--;
23385
0
        return NULL;
23386
0
    }
23387
9.57k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23388
3.07k
    PyMem_Free(_children);
23389
3.07k
    p->level--;
23390
3.07k
    return _seq;
23391
3.07k
}
23392
23393
// _gather_64: (slice | starred_expression) _loop0_63
23394
static asdl_seq *
23395
_gather_64_rule(Parser *p)
23396
4.50k
{
23397
4.50k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
23398
0
        _Pypegen_stack_overflow(p);
23399
0
    }
23400
4.50k
    if (p->error_indicator) {
23401
0
        p->level--;
23402
0
        return NULL;
23403
0
    }
23404
4.50k
    asdl_seq * _res = NULL;
23405
4.50k
    int _mark = p->mark;
23406
4.50k
    { // (slice | starred_expression) _loop0_63
23407
4.50k
        if (p->error_indicator) {
23408
0
            p->level--;
23409
0
            return NULL;
23410
0
        }
23411
4.50k
        D(fprintf(stderr, "%*c> _gather_64[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(slice | starred_expression) _loop0_63"));
23412
4.50k
        void *elem;
23413
4.50k
        asdl_seq * seq;
23414
4.50k
        if (
23415
4.50k
            (elem = _tmp_184_rule(p))  // slice | starred_expression
23416
3.07k
            &&
23417
3.07k
            (seq = _loop0_63_rule(p))  // _loop0_63
23418
4.50k
        )
23419
3.07k
        {
23420
3.07k
            D(fprintf(stderr, "%*c+ _gather_64[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(slice | starred_expression) _loop0_63"));
23421
3.07k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
23422
3.07k
            goto done;
23423
3.07k
        }
23424
1.42k
        p->mark = _mark;
23425
1.42k
        D(fprintf(stderr, "%*c%s _gather_64[%d-%d]: %s failed!\n", p->level, ' ',
23426
1.42k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(slice | starred_expression) _loop0_63"));
23427
1.42k
    }
23428
1.42k
    _res = NULL;
23429
4.50k
  done:
23430
4.50k
    p->level--;
23431
4.50k
    return _res;
23432
1.42k
}
23433
23434
// _tmp_65: ':' expression?
23435
static void *
23436
_tmp_65_rule(Parser *p)
23437
5.29k
{
23438
5.29k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
23439
0
        _Pypegen_stack_overflow(p);
23440
0
    }
23441
5.29k
    if (p->error_indicator) {
23442
0
        p->level--;
23443
0
        return NULL;
23444
0
    }
23445
5.29k
    void * _res = NULL;
23446
5.29k
    int _mark = p->mark;
23447
5.29k
    { // ':' expression?
23448
5.29k
        if (p->error_indicator) {
23449
0
            p->level--;
23450
0
            return NULL;
23451
0
        }
23452
5.29k
        D(fprintf(stderr, "%*c> _tmp_65[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression?"));
23453
5.29k
        Token * _literal;
23454
5.29k
        void *d;
23455
5.29k
        if (
23456
5.29k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
23457
1.83k
            &&
23458
1.83k
            (d = expression_rule(p), !p->error_indicator)  // expression?
23459
5.29k
        )
23460
1.75k
        {
23461
1.75k
            D(fprintf(stderr, "%*c+ _tmp_65[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression?"));
23462
1.75k
            _res = d;
23463
1.75k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
23464
0
                p->error_indicator = 1;
23465
0
                p->level--;
23466
0
                return NULL;
23467
0
            }
23468
1.75k
            goto done;
23469
1.75k
        }
23470
3.54k
        p->mark = _mark;
23471
3.54k
        D(fprintf(stderr, "%*c%s _tmp_65[%d-%d]: %s failed!\n", p->level, ' ',
23472
3.54k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression?"));
23473
3.54k
    }
23474
3.54k
    _res = NULL;
23475
5.29k
  done:
23476
5.29k
    p->level--;
23477
5.29k
    return _res;
23478
3.54k
}
23479
23480
// _tmp_66: genexp | tuple | group
23481
static void *
23482
_tmp_66_rule(Parser *p)
23483
65.1k
{
23484
65.1k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
23485
0
        _Pypegen_stack_overflow(p);
23486
0
    }
23487
65.1k
    if (p->error_indicator) {
23488
0
        p->level--;
23489
0
        return NULL;
23490
0
    }
23491
65.1k
    void * _res = NULL;
23492
65.1k
    int _mark = p->mark;
23493
65.1k
    { // genexp
23494
65.1k
        if (p->error_indicator) {
23495
0
            p->level--;
23496
0
            return NULL;
23497
0
        }
23498
65.1k
        D(fprintf(stderr, "%*c> _tmp_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp"));
23499
65.1k
        expr_ty genexp_var;
23500
65.1k
        if (
23501
65.1k
            (genexp_var = genexp_rule(p))  // genexp
23502
65.1k
        )
23503
1.71k
        {
23504
1.71k
            D(fprintf(stderr, "%*c+ _tmp_66[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp"));
23505
1.71k
            _res = genexp_var;
23506
1.71k
            goto done;
23507
1.71k
        }
23508
63.3k
        p->mark = _mark;
23509
63.3k
        D(fprintf(stderr, "%*c%s _tmp_66[%d-%d]: %s failed!\n", p->level, ' ',
23510
63.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "genexp"));
23511
63.3k
    }
23512
0
    { // tuple
23513
63.3k
        if (p->error_indicator) {
23514
5.72k
            p->level--;
23515
5.72k
            return NULL;
23516
5.72k
        }
23517
57.6k
        D(fprintf(stderr, "%*c> _tmp_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
23518
57.6k
        expr_ty tuple_var;
23519
57.6k
        if (
23520
57.6k
            (tuple_var = tuple_rule(p))  // tuple
23521
57.6k
        )
23522
33.0k
        {
23523
33.0k
            D(fprintf(stderr, "%*c+ _tmp_66[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
23524
33.0k
            _res = tuple_var;
23525
33.0k
            goto done;
23526
33.0k
        }
23527
24.6k
        p->mark = _mark;
23528
24.6k
        D(fprintf(stderr, "%*c%s _tmp_66[%d-%d]: %s failed!\n", p->level, ' ',
23529
24.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
23530
24.6k
    }
23531
0
    { // group
23532
24.6k
        if (p->error_indicator) {
23533
914
            p->level--;
23534
914
            return NULL;
23535
914
        }
23536
23.7k
        D(fprintf(stderr, "%*c> _tmp_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "group"));
23537
23.7k
        expr_ty group_var;
23538
23.7k
        if (
23539
23.7k
            (group_var = group_rule(p))  // group
23540
23.7k
        )
23541
7.71k
        {
23542
7.71k
            D(fprintf(stderr, "%*c+ _tmp_66[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "group"));
23543
7.71k
            _res = group_var;
23544
7.71k
            goto done;
23545
7.71k
        }
23546
16.0k
        p->mark = _mark;
23547
16.0k
        D(fprintf(stderr, "%*c%s _tmp_66[%d-%d]: %s failed!\n", p->level, ' ',
23548
16.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "group"));
23549
16.0k
    }
23550
16.0k
    _res = NULL;
23551
58.4k
  done:
23552
58.4k
    p->level--;
23553
58.4k
    return _res;
23554
16.0k
}
23555
23556
// _tmp_67: listcomp | list
23557
static void *
23558
_tmp_67_rule(Parser *p)
23559
44.0k
{
23560
44.0k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
23561
0
        _Pypegen_stack_overflow(p);
23562
0
    }
23563
44.0k
    if (p->error_indicator) {
23564
0
        p->level--;
23565
0
        return NULL;
23566
0
    }
23567
44.0k
    void * _res = NULL;
23568
44.0k
    int _mark = p->mark;
23569
44.0k
    { // listcomp
23570
44.0k
        if (p->error_indicator) {
23571
0
            p->level--;
23572
0
            return NULL;
23573
0
        }
23574
44.0k
        D(fprintf(stderr, "%*c> _tmp_67[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "listcomp"));
23575
44.0k
        expr_ty listcomp_var;
23576
44.0k
        if (
23577
44.0k
            (listcomp_var = listcomp_rule(p))  // listcomp
23578
44.0k
        )
23579
918
        {
23580
918
            D(fprintf(stderr, "%*c+ _tmp_67[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "listcomp"));
23581
918
            _res = listcomp_var;
23582
918
            goto done;
23583
918
        }
23584
43.1k
        p->mark = _mark;
23585
43.1k
        D(fprintf(stderr, "%*c%s _tmp_67[%d-%d]: %s failed!\n", p->level, ' ',
23586
43.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "listcomp"));
23587
43.1k
    }
23588
0
    { // list
23589
43.1k
        if (p->error_indicator) {
23590
15.8k
            p->level--;
23591
15.8k
            return NULL;
23592
15.8k
        }
23593
27.3k
        D(fprintf(stderr, "%*c> _tmp_67[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
23594
27.3k
        expr_ty list_var;
23595
27.3k
        if (
23596
27.3k
            (list_var = list_rule(p))  // list
23597
27.3k
        )
23598
7.93k
        {
23599
7.93k
            D(fprintf(stderr, "%*c+ _tmp_67[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
23600
7.93k
            _res = list_var;
23601
7.93k
            goto done;
23602
7.93k
        }
23603
19.3k
        p->mark = _mark;
23604
19.3k
        D(fprintf(stderr, "%*c%s _tmp_67[%d-%d]: %s failed!\n", p->level, ' ',
23605
19.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
23606
19.3k
    }
23607
19.3k
    _res = NULL;
23608
28.2k
  done:
23609
28.2k
    p->level--;
23610
28.2k
    return _res;
23611
19.3k
}
23612
23613
// _tmp_68: dictcomp | setcomp | dict | set
23614
static void *
23615
_tmp_68_rule(Parser *p)
23616
25.1k
{
23617
25.1k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
23618
0
        _Pypegen_stack_overflow(p);
23619
0
    }
23620
25.1k
    if (p->error_indicator) {
23621
0
        p->level--;
23622
0
        return NULL;
23623
0
    }
23624
25.1k
    void * _res = NULL;
23625
25.1k
    int _mark = p->mark;
23626
25.1k
    { // dictcomp
23627
25.1k
        if (p->error_indicator) {
23628
0
            p->level--;
23629
0
            return NULL;
23630
0
        }
23631
25.1k
        D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dictcomp"));
23632
25.1k
        expr_ty dictcomp_var;
23633
25.1k
        if (
23634
25.1k
            (dictcomp_var = dictcomp_rule(p))  // dictcomp
23635
25.1k
        )
23636
1.26k
        {
23637
1.26k
            D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dictcomp"));
23638
1.26k
            _res = dictcomp_var;
23639
1.26k
            goto done;
23640
1.26k
        }
23641
23.9k
        p->mark = _mark;
23642
23.9k
        D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
23643
23.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dictcomp"));
23644
23.9k
    }
23645
0
    { // setcomp
23646
23.9k
        if (p->error_indicator) {
23647
3.70k
            p->level--;
23648
3.70k
            return NULL;
23649
3.70k
        }
23650
20.2k
        D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "setcomp"));
23651
20.2k
        expr_ty setcomp_var;
23652
20.2k
        if (
23653
20.2k
            (setcomp_var = setcomp_rule(p))  // setcomp
23654
20.2k
        )
23655
780
        {
23656
780
            D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "setcomp"));
23657
780
            _res = setcomp_var;
23658
780
            goto done;
23659
780
        }
23660
19.4k
        p->mark = _mark;
23661
19.4k
        D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
23662
19.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "setcomp"));
23663
19.4k
    }
23664
0
    { // dict
23665
19.4k
        if (p->error_indicator) {
23666
662
            p->level--;
23667
662
            return NULL;
23668
662
        }
23669
18.7k
        D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dict"));
23670
18.7k
        expr_ty dict_var;
23671
18.7k
        if (
23672
18.7k
            (dict_var = dict_rule(p))  // dict
23673
18.7k
        )
23674
4.03k
        {
23675
4.03k
            D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dict"));
23676
4.03k
            _res = dict_var;
23677
4.03k
            goto done;
23678
4.03k
        }
23679
14.7k
        p->mark = _mark;
23680
14.7k
        D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
23681
14.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dict"));
23682
14.7k
    }
23683
0
    { // set
23684
14.7k
        if (p->error_indicator) {
23685
2.21k
            p->level--;
23686
2.21k
            return NULL;
23687
2.21k
        }
23688
12.5k
        D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "set"));
23689
12.5k
        expr_ty set_var;
23690
12.5k
        if (
23691
12.5k
            (set_var = set_rule(p))  // set
23692
12.5k
        )
23693
2.40k
        {
23694
2.40k
            D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "set"));
23695
2.40k
            _res = set_var;
23696
2.40k
            goto done;
23697
2.40k
        }
23698
10.1k
        p->mark = _mark;
23699
10.1k
        D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
23700
10.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "set"));
23701
10.1k
    }
23702
10.1k
    _res = NULL;
23703
18.6k
  done:
23704
18.6k
    p->level--;
23705
18.6k
    return _res;
23706
10.1k
}
23707
23708
// _tmp_69: yield_expr | named_expression
23709
static void *
23710
_tmp_69_rule(Parser *p)
23711
23.7k
{
23712
23.7k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
23713
0
        _Pypegen_stack_overflow(p);
23714
0
    }
23715
23.7k
    if (p->error_indicator) {
23716
0
        p->level--;
23717
0
        return NULL;
23718
0
    }
23719
23.7k
    void * _res = NULL;
23720
23.7k
    int _mark = p->mark;
23721
23.7k
    { // yield_expr
23722
23.7k
        if (p->error_indicator) {
23723
0
            p->level--;
23724
0
            return NULL;
23725
0
        }
23726
23.7k
        D(fprintf(stderr, "%*c> _tmp_69[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
23727
23.7k
        expr_ty yield_expr_var;
23728
23.7k
        if (
23729
23.7k
            (yield_expr_var = yield_expr_rule(p))  // yield_expr
23730
23.7k
        )
23731
473
        {
23732
473
            D(fprintf(stderr, "%*c+ _tmp_69[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
23733
473
            _res = yield_expr_var;
23734
473
            goto done;
23735
473
        }
23736
23.2k
        p->mark = _mark;
23737
23.2k
        D(fprintf(stderr, "%*c%s _tmp_69[%d-%d]: %s failed!\n", p->level, ' ',
23738
23.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
23739
23.2k
    }
23740
0
    { // named_expression
23741
23.2k
        if (p->error_indicator) {
23742
307
            p->level--;
23743
307
            return NULL;
23744
307
        }
23745
22.9k
        D(fprintf(stderr, "%*c> _tmp_69[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
23746
22.9k
        expr_ty named_expression_var;
23747
22.9k
        if (
23748
22.9k
            (named_expression_var = named_expression_rule(p))  // named_expression
23749
22.9k
        )
23750
16.7k
        {
23751
16.7k
            D(fprintf(stderr, "%*c+ _tmp_69[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
23752
16.7k
            _res = named_expression_var;
23753
16.7k
            goto done;
23754
16.7k
        }
23755
6.20k
        p->mark = _mark;
23756
6.20k
        D(fprintf(stderr, "%*c%s _tmp_69[%d-%d]: %s failed!\n", p->level, ' ',
23757
6.20k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
23758
6.20k
    }
23759
6.20k
    _res = NULL;
23760
23.4k
  done:
23761
23.4k
    p->level--;
23762
23.4k
    return _res;
23763
6.20k
}
23764
23765
// _loop0_70: lambda_param_no_default
23766
static asdl_seq *
23767
_loop0_70_rule(Parser *p)
23768
1.43M
{
23769
1.43M
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
23770
0
        _Pypegen_stack_overflow(p);
23771
0
    }
23772
1.43M
    if (p->error_indicator) {
23773
0
        p->level--;
23774
0
        return NULL;
23775
0
    }
23776
1.43M
    void *_res = NULL;
23777
1.43M
    int _mark = p->mark;
23778
1.43M
    void **_children = NULL;
23779
1.43M
    Py_ssize_t _children_capacity = 0;
23780
1.43M
    Py_ssize_t _n = 0;
23781
1.43M
    { // lambda_param_no_default
23782
1.43M
        if (p->error_indicator) {
23783
0
            p->level--;
23784
0
            return NULL;
23785
0
        }
23786
1.43M
        D(fprintf(stderr, "%*c> _loop0_70[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
23787
1.43M
        arg_ty lambda_param_no_default_var;
23788
1.43M
        while (
23789
2.53M
            (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
23790
1.43M
        )
23791
1.09M
        {
23792
1.09M
            _res = lambda_param_no_default_var;
23793
1.09M
            if (_n == _children_capacity) {
23794
1.06M
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
23795
0
                    p->error_indicator = 1;
23796
0
                    PyErr_NoMemory();
23797
0
                    PyMem_Free(_children);
23798
0
                    p->level--;
23799
0
                    return NULL;
23800
0
                }
23801
1.06M
            }
23802
1.09M
            _children[_n++] = _res;
23803
1.09M
            _mark = p->mark;
23804
1.09M
        }
23805
1.43M
        p->mark = _mark;
23806
1.43M
        D(fprintf(stderr, "%*c%s _loop0_70[%d-%d]: %s failed!\n", p->level, ' ',
23807
1.43M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
23808
1.43M
    }
23809
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23810
1.43M
    if (!_seq) {
23811
0
        p->error_indicator = 1;
23812
0
        PyErr_NoMemory();
23813
0
        PyMem_Free(_children);
23814
0
        p->level--;
23815
0
        return NULL;
23816
0
    }
23817
2.53M
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23818
1.43M
    PyMem_Free(_children);
23819
1.43M
    p->level--;
23820
1.43M
    return _seq;
23821
1.43M
}
23822
23823
// _loop0_71: lambda_param_with_default
23824
static asdl_seq *
23825
_loop0_71_rule(Parser *p)
23826
214k
{
23827
214k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
23828
0
        _Pypegen_stack_overflow(p);
23829
0
    }
23830
214k
    if (p->error_indicator) {
23831
1
        p->level--;
23832
1
        return NULL;
23833
1
    }
23834
214k
    void *_res = NULL;
23835
214k
    int _mark = p->mark;
23836
214k
    void **_children = NULL;
23837
214k
    Py_ssize_t _children_capacity = 0;
23838
214k
    Py_ssize_t _n = 0;
23839
214k
    { // lambda_param_with_default
23840
214k
        if (p->error_indicator) {
23841
0
            p->level--;
23842
0
            return NULL;
23843
0
        }
23844
214k
        D(fprintf(stderr, "%*c> _loop0_71[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
23845
214k
        NameDefaultPair* lambda_param_with_default_var;
23846
214k
        while (
23847
215k
            (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
23848
214k
        )
23849
1.00k
        {
23850
1.00k
            _res = lambda_param_with_default_var;
23851
1.00k
            if (_n == _children_capacity) {
23852
594
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
23853
0
                    p->error_indicator = 1;
23854
0
                    PyErr_NoMemory();
23855
0
                    PyMem_Free(_children);
23856
0
                    p->level--;
23857
0
                    return NULL;
23858
0
                }
23859
594
            }
23860
1.00k
            _children[_n++] = _res;
23861
1.00k
            _mark = p->mark;
23862
1.00k
        }
23863
214k
        p->mark = _mark;
23864
214k
        D(fprintf(stderr, "%*c%s _loop0_71[%d-%d]: %s failed!\n", p->level, ' ',
23865
214k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
23866
214k
    }
23867
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23868
214k
    if (!_seq) {
23869
0
        p->error_indicator = 1;
23870
0
        PyErr_NoMemory();
23871
0
        PyMem_Free(_children);
23872
0
        p->level--;
23873
0
        return NULL;
23874
0
    }
23875
215k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23876
214k
    PyMem_Free(_children);
23877
214k
    p->level--;
23878
214k
    return _seq;
23879
214k
}
23880
23881
// _loop1_72: lambda_param_no_default
23882
static asdl_seq *
23883
_loop1_72_rule(Parser *p)
23884
1.66M
{
23885
1.66M
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
23886
0
        _Pypegen_stack_overflow(p);
23887
0
    }
23888
1.66M
    if (p->error_indicator) {
23889
0
        p->level--;
23890
0
        return NULL;
23891
0
    }
23892
1.66M
    void *_res = NULL;
23893
1.66M
    int _mark = p->mark;
23894
1.66M
    void **_children = NULL;
23895
1.66M
    Py_ssize_t _children_capacity = 0;
23896
1.66M
    Py_ssize_t _n = 0;
23897
1.66M
    { // lambda_param_no_default
23898
1.66M
        if (p->error_indicator) {
23899
0
            p->level--;
23900
0
            return NULL;
23901
0
        }
23902
1.66M
        D(fprintf(stderr, "%*c> _loop1_72[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
23903
1.66M
        arg_ty lambda_param_no_default_var;
23904
1.66M
        while (
23905
3.30M
            (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
23906
1.66M
        )
23907
1.64M
        {
23908
1.64M
            _res = lambda_param_no_default_var;
23909
1.64M
            if (_n == _children_capacity) {
23910
1.59M
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
23911
0
                    p->error_indicator = 1;
23912
0
                    PyErr_NoMemory();
23913
0
                    PyMem_Free(_children);
23914
0
                    p->level--;
23915
0
                    return NULL;
23916
0
                }
23917
1.59M
            }
23918
1.64M
            _children[_n++] = _res;
23919
1.64M
            _mark = p->mark;
23920
1.64M
        }
23921
1.66M
        p->mark = _mark;
23922
1.66M
        D(fprintf(stderr, "%*c%s _loop1_72[%d-%d]: %s failed!\n", p->level, ' ',
23923
1.66M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
23924
1.66M
    }
23925
1.66M
    if (_n == 0 || p->error_indicator) {
23926
71.1k
        PyMem_Free(_children);
23927
71.1k
        p->level--;
23928
71.1k
        return NULL;
23929
71.1k
    }
23930
1.59M
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23931
1.59M
    if (!_seq) {
23932
0
        p->error_indicator = 1;
23933
0
        PyErr_NoMemory();
23934
0
        PyMem_Free(_children);
23935
0
        p->level--;
23936
0
        return NULL;
23937
0
    }
23938
3.23M
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23939
1.59M
    PyMem_Free(_children);
23940
1.59M
    p->level--;
23941
1.59M
    return _seq;
23942
1.59M
}
23943
23944
// _loop1_73: lambda_param_with_default
23945
static asdl_seq *
23946
_loop1_73_rule(Parser *p)
23947
1.44M
{
23948
1.44M
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
23949
0
        _Pypegen_stack_overflow(p);
23950
0
    }
23951
1.44M
    if (p->error_indicator) {
23952
0
        p->level--;
23953
0
        return NULL;
23954
0
    }
23955
1.44M
    void *_res = NULL;
23956
1.44M
    int _mark = p->mark;
23957
1.44M
    void **_children = NULL;
23958
1.44M
    Py_ssize_t _children_capacity = 0;
23959
1.44M
    Py_ssize_t _n = 0;
23960
1.44M
    { // lambda_param_with_default
23961
1.44M
        if (p->error_indicator) {
23962
0
            p->level--;
23963
0
            return NULL;
23964
0
        }
23965
1.44M
        D(fprintf(stderr, "%*c> _loop1_73[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
23966
1.44M
        NameDefaultPair* lambda_param_with_default_var;
23967
1.44M
        while (
23968
1.47M
            (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
23969
1.44M
        )
23970
24.2k
        {
23971
24.2k
            _res = lambda_param_with_default_var;
23972
24.2k
            if (_n == _children_capacity) {
23973
19.2k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
23974
0
                    p->error_indicator = 1;
23975
0
                    PyErr_NoMemory();
23976
0
                    PyMem_Free(_children);
23977
0
                    p->level--;
23978
0
                    return NULL;
23979
0
                }
23980
19.2k
            }
23981
24.2k
            _children[_n++] = _res;
23982
24.2k
            _mark = p->mark;
23983
24.2k
        }
23984
1.44M
        p->mark = _mark;
23985
1.44M
        D(fprintf(stderr, "%*c%s _loop1_73[%d-%d]: %s failed!\n", p->level, ' ',
23986
1.44M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
23987
1.44M
    }
23988
1.44M
    if (_n == 0 || p->error_indicator) {
23989
1.42M
        PyMem_Free(_children);
23990
1.42M
        p->level--;
23991
1.42M
        return NULL;
23992
1.42M
    }
23993
17.0k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23994
17.0k
    if (!_seq) {
23995
0
        p->error_indicator = 1;
23996
0
        PyErr_NoMemory();
23997
0
        PyMem_Free(_children);
23998
0
        p->level--;
23999
0
        return NULL;
24000
0
    }
24001
41.0k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24002
17.0k
    PyMem_Free(_children);
24003
17.0k
    p->level--;
24004
17.0k
    return _seq;
24005
17.0k
}
24006
24007
// _loop0_74: lambda_param_maybe_default
24008
static asdl_seq *
24009
_loop0_74_rule(Parser *p)
24010
2.04k
{
24011
2.04k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
24012
0
        _Pypegen_stack_overflow(p);
24013
0
    }
24014
2.04k
    if (p->error_indicator) {
24015
0
        p->level--;
24016
0
        return NULL;
24017
0
    }
24018
2.04k
    void *_res = NULL;
24019
2.04k
    int _mark = p->mark;
24020
2.04k
    void **_children = NULL;
24021
2.04k
    Py_ssize_t _children_capacity = 0;
24022
2.04k
    Py_ssize_t _n = 0;
24023
2.04k
    { // lambda_param_maybe_default
24024
2.04k
        if (p->error_indicator) {
24025
0
            p->level--;
24026
0
            return NULL;
24027
0
        }
24028
2.04k
        D(fprintf(stderr, "%*c> _loop0_74[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
24029
2.04k
        NameDefaultPair* lambda_param_maybe_default_var;
24030
2.04k
        while (
24031
2.96k
            (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p))  // lambda_param_maybe_default
24032
2.04k
        )
24033
919
        {
24034
919
            _res = lambda_param_maybe_default_var;
24035
919
            if (_n == _children_capacity) {
24036
628
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
24037
0
                    p->error_indicator = 1;
24038
0
                    PyErr_NoMemory();
24039
0
                    PyMem_Free(_children);
24040
0
                    p->level--;
24041
0
                    return NULL;
24042
0
                }
24043
628
            }
24044
919
            _children[_n++] = _res;
24045
919
            _mark = p->mark;
24046
919
        }
24047
2.04k
        p->mark = _mark;
24048
2.04k
        D(fprintf(stderr, "%*c%s _loop0_74[%d-%d]: %s failed!\n", p->level, ' ',
24049
2.04k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
24050
2.04k
    }
24051
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24052
2.04k
    if (!_seq) {
24053
0
        p->error_indicator = 1;
24054
0
        PyErr_NoMemory();
24055
0
        PyMem_Free(_children);
24056
0
        p->level--;
24057
0
        return NULL;
24058
0
    }
24059
2.96k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24060
2.04k
    PyMem_Free(_children);
24061
2.04k
    p->level--;
24062
2.04k
    return _seq;
24063
2.04k
}
24064
24065
// _loop1_75: lambda_param_maybe_default
24066
static asdl_seq *
24067
_loop1_75_rule(Parser *p)
24068
2.22k
{
24069
2.22k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
24070
0
        _Pypegen_stack_overflow(p);
24071
0
    }
24072
2.22k
    if (p->error_indicator) {
24073
0
        p->level--;
24074
0
        return NULL;
24075
0
    }
24076
2.22k
    void *_res = NULL;
24077
2.22k
    int _mark = p->mark;
24078
2.22k
    void **_children = NULL;
24079
2.22k
    Py_ssize_t _children_capacity = 0;
24080
2.22k
    Py_ssize_t _n = 0;
24081
2.22k
    { // lambda_param_maybe_default
24082
2.22k
        if (p->error_indicator) {
24083
0
            p->level--;
24084
0
            return NULL;
24085
0
        }
24086
2.22k
        D(fprintf(stderr, "%*c> _loop1_75[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
24087
2.22k
        NameDefaultPair* lambda_param_maybe_default_var;
24088
2.22k
        while (
24089
3.69k
            (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p))  // lambda_param_maybe_default
24090
2.22k
        )
24091
1.47k
        {
24092
1.47k
            _res = lambda_param_maybe_default_var;
24093
1.47k
            if (_n == _children_capacity) {
24094
665
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
24095
0
                    p->error_indicator = 1;
24096
0
                    PyErr_NoMemory();
24097
0
                    PyMem_Free(_children);
24098
0
                    p->level--;
24099
0
                    return NULL;
24100
0
                }
24101
665
            }
24102
1.47k
            _children[_n++] = _res;
24103
1.47k
            _mark = p->mark;
24104
1.47k
        }
24105
2.22k
        p->mark = _mark;
24106
2.22k
        D(fprintf(stderr, "%*c%s _loop1_75[%d-%d]: %s failed!\n", p->level, ' ',
24107
2.22k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
24108
2.22k
    }
24109
2.22k
    if (_n == 0 || p->error_indicator) {
24110
1.87k
        PyMem_Free(_children);
24111
1.87k
        p->level--;
24112
1.87k
        return NULL;
24113
1.87k
    }
24114
348
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24115
348
    if (!_seq) {
24116
0
        p->error_indicator = 1;
24117
0
        PyErr_NoMemory();
24118
0
        PyMem_Free(_children);
24119
0
        p->level--;
24120
0
        return NULL;
24121
0
    }
24122
1.70k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24123
348
    PyMem_Free(_children);
24124
348
    p->level--;
24125
348
    return _seq;
24126
348
}
24127
24128
// _loop0_76: fstring_format_spec
24129
static asdl_seq *
24130
_loop0_76_rule(Parser *p)
24131
3.76k
{
24132
3.76k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
24133
0
        _Pypegen_stack_overflow(p);
24134
0
    }
24135
3.76k
    if (p->error_indicator) {
24136
0
        p->level--;
24137
0
        return NULL;
24138
0
    }
24139
3.76k
    void *_res = NULL;
24140
3.76k
    int _mark = p->mark;
24141
3.76k
    void **_children = NULL;
24142
3.76k
    Py_ssize_t _children_capacity = 0;
24143
3.76k
    Py_ssize_t _n = 0;
24144
3.76k
    { // fstring_format_spec
24145
3.76k
        if (p->error_indicator) {
24146
0
            p->level--;
24147
0
            return NULL;
24148
0
        }
24149
3.76k
        D(fprintf(stderr, "%*c> _loop0_76[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_format_spec"));
24150
3.76k
        expr_ty fstring_format_spec_var;
24151
3.76k
        while (
24152
11.6k
            (fstring_format_spec_var = fstring_format_spec_rule(p))  // fstring_format_spec
24153
3.76k
        )
24154
7.87k
        {
24155
7.87k
            _res = fstring_format_spec_var;
24156
7.87k
            if (_n == _children_capacity) {
24157
4.42k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
24158
0
                    p->error_indicator = 1;
24159
0
                    PyErr_NoMemory();
24160
0
                    PyMem_Free(_children);
24161
0
                    p->level--;
24162
0
                    return NULL;
24163
0
                }
24164
4.42k
            }
24165
7.87k
            _children[_n++] = _res;
24166
7.87k
            _mark = p->mark;
24167
7.87k
        }
24168
3.76k
        p->mark = _mark;
24169
3.76k
        D(fprintf(stderr, "%*c%s _loop0_76[%d-%d]: %s failed!\n", p->level, ' ',
24170
3.76k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_format_spec"));
24171
3.76k
    }
24172
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24173
3.76k
    if (!_seq) {
24174
0
        p->error_indicator = 1;
24175
0
        PyErr_NoMemory();
24176
0
        PyMem_Free(_children);
24177
0
        p->level--;
24178
0
        return NULL;
24179
0
    }
24180
11.6k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24181
3.76k
    PyMem_Free(_children);
24182
3.76k
    p->level--;
24183
3.76k
    return _seq;
24184
3.76k
}
24185
24186
// _loop0_77: fstring_middle
24187
static asdl_seq *
24188
_loop0_77_rule(Parser *p)
24189
22.6k
{
24190
22.6k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
24191
1
        _Pypegen_stack_overflow(p);
24192
1
    }
24193
22.6k
    if (p->error_indicator) {
24194
1
        p->level--;
24195
1
        return NULL;
24196
1
    }
24197
22.6k
    void *_res = NULL;
24198
22.6k
    int _mark = p->mark;
24199
22.6k
    void **_children = NULL;
24200
22.6k
    Py_ssize_t _children_capacity = 0;
24201
22.6k
    Py_ssize_t _n = 0;
24202
22.6k
    { // fstring_middle
24203
22.6k
        if (p->error_indicator) {
24204
0
            p->level--;
24205
0
            return NULL;
24206
0
        }
24207
22.6k
        D(fprintf(stderr, "%*c> _loop0_77[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_middle"));
24208
22.6k
        expr_ty fstring_middle_var;
24209
22.6k
        while (
24210
65.6k
            (fstring_middle_var = fstring_middle_rule(p))  // fstring_middle
24211
22.6k
        )
24212
43.0k
        {
24213
43.0k
            _res = fstring_middle_var;
24214
43.0k
            if (_n == _children_capacity) {
24215
22.4k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
24216
0
                    p->error_indicator = 1;
24217
0
                    PyErr_NoMemory();
24218
0
                    PyMem_Free(_children);
24219
0
                    p->level--;
24220
0
                    return NULL;
24221
0
                }
24222
22.4k
            }
24223
43.0k
            _children[_n++] = _res;
24224
43.0k
            _mark = p->mark;
24225
43.0k
        }
24226
22.6k
        p->mark = _mark;
24227
22.6k
        D(fprintf(stderr, "%*c%s _loop0_77[%d-%d]: %s failed!\n", p->level, ' ',
24228
22.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_middle"));
24229
22.6k
    }
24230
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24231
22.6k
    if (!_seq) {
24232
0
        p->error_indicator = 1;
24233
0
        PyErr_NoMemory();
24234
0
        PyMem_Free(_children);
24235
0
        p->level--;
24236
0
        return NULL;
24237
0
    }
24238
65.6k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24239
22.6k
    PyMem_Free(_children);
24240
22.6k
    p->level--;
24241
22.6k
    return _seq;
24242
22.6k
}
24243
24244
// _loop0_78: tstring_format_spec
24245
static asdl_seq *
24246
_loop0_78_rule(Parser *p)
24247
3.23k
{
24248
3.23k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
24249
0
        _Pypegen_stack_overflow(p);
24250
0
    }
24251
3.23k
    if (p->error_indicator) {
24252
0
        p->level--;
24253
0
        return NULL;
24254
0
    }
24255
3.23k
    void *_res = NULL;
24256
3.23k
    int _mark = p->mark;
24257
3.23k
    void **_children = NULL;
24258
3.23k
    Py_ssize_t _children_capacity = 0;
24259
3.23k
    Py_ssize_t _n = 0;
24260
3.23k
    { // tstring_format_spec
24261
3.23k
        if (p->error_indicator) {
24262
0
            p->level--;
24263
0
            return NULL;
24264
0
        }
24265
3.23k
        D(fprintf(stderr, "%*c> _loop0_78[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring_format_spec"));
24266
3.23k
        expr_ty tstring_format_spec_var;
24267
3.23k
        while (
24268
7.13k
            (tstring_format_spec_var = tstring_format_spec_rule(p))  // tstring_format_spec
24269
3.23k
        )
24270
3.90k
        {
24271
3.90k
            _res = tstring_format_spec_var;
24272
3.90k
            if (_n == _children_capacity) {
24273
2.73k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
24274
0
                    p->error_indicator = 1;
24275
0
                    PyErr_NoMemory();
24276
0
                    PyMem_Free(_children);
24277
0
                    p->level--;
24278
0
                    return NULL;
24279
0
                }
24280
2.73k
            }
24281
3.90k
            _children[_n++] = _res;
24282
3.90k
            _mark = p->mark;
24283
3.90k
        }
24284
3.23k
        p->mark = _mark;
24285
3.23k
        D(fprintf(stderr, "%*c%s _loop0_78[%d-%d]: %s failed!\n", p->level, ' ',
24286
3.23k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring_format_spec"));
24287
3.23k
    }
24288
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24289
3.23k
    if (!_seq) {
24290
0
        p->error_indicator = 1;
24291
0
        PyErr_NoMemory();
24292
0
        PyMem_Free(_children);
24293
0
        p->level--;
24294
0
        return NULL;
24295
0
    }
24296
7.13k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24297
3.23k
    PyMem_Free(_children);
24298
3.23k
    p->level--;
24299
3.23k
    return _seq;
24300
3.23k
}
24301
24302
// _loop0_79: tstring_middle
24303
static asdl_seq *
24304
_loop0_79_rule(Parser *p)
24305
6.76k
{
24306
6.76k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
24307
0
        _Pypegen_stack_overflow(p);
24308
0
    }
24309
6.76k
    if (p->error_indicator) {
24310
0
        p->level--;
24311
0
        return NULL;
24312
0
    }
24313
6.76k
    void *_res = NULL;
24314
6.76k
    int _mark = p->mark;
24315
6.76k
    void **_children = NULL;
24316
6.76k
    Py_ssize_t _children_capacity = 0;
24317
6.76k
    Py_ssize_t _n = 0;
24318
6.76k
    { // tstring_middle
24319
6.76k
        if (p->error_indicator) {
24320
0
            p->level--;
24321
0
            return NULL;
24322
0
        }
24323
6.76k
        D(fprintf(stderr, "%*c> _loop0_79[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring_middle"));
24324
6.76k
        expr_ty tstring_middle_var;
24325
6.76k
        while (
24326
23.3k
            (tstring_middle_var = tstring_middle_rule(p))  // tstring_middle
24327
6.76k
        )
24328
16.5k
        {
24329
16.5k
            _res = tstring_middle_var;
24330
16.5k
            if (_n == _children_capacity) {
24331
4.52k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
24332
0
                    p->error_indicator = 1;
24333
0
                    PyErr_NoMemory();
24334
0
                    PyMem_Free(_children);
24335
0
                    p->level--;
24336
0
                    return NULL;
24337
0
                }
24338
4.52k
            }
24339
16.5k
            _children[_n++] = _res;
24340
16.5k
            _mark = p->mark;
24341
16.5k
        }
24342
6.76k
        p->mark = _mark;
24343
6.76k
        D(fprintf(stderr, "%*c%s _loop0_79[%d-%d]: %s failed!\n", p->level, ' ',
24344
6.76k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring_middle"));
24345
6.76k
    }
24346
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24347
6.76k
    if (!_seq) {
24348
0
        p->error_indicator = 1;
24349
0
        PyErr_NoMemory();
24350
0
        PyMem_Free(_children);
24351
0
        p->level--;
24352
0
        return NULL;
24353
0
    }
24354
23.3k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24355
6.76k
    PyMem_Free(_children);
24356
6.76k
    p->level--;
24357
6.76k
    return _seq;
24358
6.76k
}
24359
24360
// _loop1_80: (fstring | string)
24361
static asdl_seq *
24362
_loop1_80_rule(Parser *p)
24363
81.5k
{
24364
81.5k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
24365
1
        _Pypegen_stack_overflow(p);
24366
1
    }
24367
81.5k
    if (p->error_indicator) {
24368
1
        p->level--;
24369
1
        return NULL;
24370
1
    }
24371
81.5k
    void *_res = NULL;
24372
81.5k
    int _mark = p->mark;
24373
81.5k
    void **_children = NULL;
24374
81.5k
    Py_ssize_t _children_capacity = 0;
24375
81.5k
    Py_ssize_t _n = 0;
24376
81.5k
    { // (fstring | string)
24377
81.5k
        if (p->error_indicator) {
24378
0
            p->level--;
24379
0
            return NULL;
24380
0
        }
24381
81.5k
        D(fprintf(stderr, "%*c> _loop1_80[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(fstring | string)"));
24382
81.5k
        void *_tmp_185_var;
24383
81.5k
        while (
24384
140k
            (_tmp_185_var = _tmp_185_rule(p))  // fstring | string
24385
81.5k
        )
24386
58.9k
        {
24387
58.9k
            _res = _tmp_185_var;
24388
58.9k
            if (_n == _children_capacity) {
24389
35.5k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
24390
0
                    p->error_indicator = 1;
24391
0
                    PyErr_NoMemory();
24392
0
                    PyMem_Free(_children);
24393
0
                    p->level--;
24394
0
                    return NULL;
24395
0
                }
24396
35.5k
            }
24397
58.9k
            _children[_n++] = _res;
24398
58.9k
            _mark = p->mark;
24399
58.9k
        }
24400
81.5k
        p->mark = _mark;
24401
81.5k
        D(fprintf(stderr, "%*c%s _loop1_80[%d-%d]: %s failed!\n", p->level, ' ',
24402
81.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(fstring | string)"));
24403
81.5k
    }
24404
81.5k
    if (_n == 0 || p->error_indicator) {
24405
53.5k
        PyMem_Free(_children);
24406
53.5k
        p->level--;
24407
53.5k
        return NULL;
24408
53.5k
    }
24409
27.9k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24410
27.9k
    if (!_seq) {
24411
0
        p->error_indicator = 1;
24412
0
        PyErr_NoMemory();
24413
0
        PyMem_Free(_children);
24414
0
        p->level--;
24415
0
        return NULL;
24416
0
    }
24417
86.5k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24418
27.9k
    PyMem_Free(_children);
24419
27.9k
    p->level--;
24420
27.9k
    return _seq;
24421
27.9k
}
24422
24423
// _loop1_81: tstring
24424
static asdl_seq *
24425
_loop1_81_rule(Parser *p)
24426
52.5k
{
24427
52.5k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
24428
0
        _Pypegen_stack_overflow(p);
24429
0
    }
24430
52.5k
    if (p->error_indicator) {
24431
0
        p->level--;
24432
0
        return NULL;
24433
0
    }
24434
52.5k
    void *_res = NULL;
24435
52.5k
    int _mark = p->mark;
24436
52.5k
    void **_children = NULL;
24437
52.5k
    Py_ssize_t _children_capacity = 0;
24438
52.5k
    Py_ssize_t _n = 0;
24439
52.5k
    { // tstring
24440
52.5k
        if (p->error_indicator) {
24441
0
            p->level--;
24442
0
            return NULL;
24443
0
        }
24444
52.5k
        D(fprintf(stderr, "%*c> _loop1_81[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring"));
24445
52.5k
        expr_ty tstring_var;
24446
52.5k
        while (
24447
55.7k
            (tstring_var = tstring_rule(p))  // tstring
24448
52.5k
        )
24449
3.15k
        {
24450
3.15k
            _res = tstring_var;
24451
3.15k
            if (_n == _children_capacity) {
24452
2.19k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
24453
0
                    p->error_indicator = 1;
24454
0
                    PyErr_NoMemory();
24455
0
                    PyMem_Free(_children);
24456
0
                    p->level--;
24457
0
                    return NULL;
24458
0
                }
24459
2.19k
            }
24460
3.15k
            _children[_n++] = _res;
24461
3.15k
            _mark = p->mark;
24462
3.15k
        }
24463
52.5k
        p->mark = _mark;
24464
52.5k
        D(fprintf(stderr, "%*c%s _loop1_81[%d-%d]: %s failed!\n", p->level, ' ',
24465
52.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring"));
24466
52.5k
    }
24467
52.5k
    if (_n == 0 || p->error_indicator) {
24468
50.9k
        PyMem_Free(_children);
24469
50.9k
        p->level--;
24470
50.9k
        return NULL;
24471
50.9k
    }
24472
1.68k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24473
1.68k
    if (!_seq) {
24474
0
        p->error_indicator = 1;
24475
0
        PyErr_NoMemory();
24476
0
        PyMem_Free(_children);
24477
0
        p->level--;
24478
0
        return NULL;
24479
0
    }
24480
4.58k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24481
1.68k
    PyMem_Free(_children);
24482
1.68k
    p->level--;
24483
1.68k
    return _seq;
24484
1.68k
}
24485
24486
// _loop0_82: ',' display_item
24487
static asdl_seq *
24488
_loop0_82_rule(Parser *p)
24489
26.8k
{
24490
26.8k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
24491
0
        _Pypegen_stack_overflow(p);
24492
0
    }
24493
26.8k
    if (p->error_indicator) {
24494
0
        p->level--;
24495
0
        return NULL;
24496
0
    }
24497
26.8k
    void *_res = NULL;
24498
26.8k
    int _mark = p->mark;
24499
26.8k
    void **_children = NULL;
24500
26.8k
    Py_ssize_t _children_capacity = 0;
24501
26.8k
    Py_ssize_t _n = 0;
24502
26.8k
    { // ',' display_item
24503
26.8k
        if (p->error_indicator) {
24504
0
            p->level--;
24505
0
            return NULL;
24506
0
        }
24507
26.8k
        D(fprintf(stderr, "%*c> _loop0_82[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' display_item"));
24508
26.8k
        Token * _literal;
24509
26.8k
        expr_ty elem;
24510
26.8k
        while (
24511
51.0k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
24512
26.4k
            &&
24513
26.4k
            (elem = display_item_rule(p))  // display_item
24514
26.8k
        )
24515
24.2k
        {
24516
24.2k
            _res = elem;
24517
24.2k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
24518
0
                p->error_indicator = 1;
24519
0
                PyMem_Free(_children);
24520
0
                p->level--;
24521
0
                return NULL;
24522
0
            }
24523
24.2k
            if (_n == _children_capacity) {
24524
9.17k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
24525
0
                    p->error_indicator = 1;
24526
0
                    PyErr_NoMemory();
24527
0
                    PyMem_Free(_children);
24528
0
                    p->level--;
24529
0
                    return NULL;
24530
0
                }
24531
9.17k
            }
24532
24.2k
            _children[_n++] = _res;
24533
24.2k
            _mark = p->mark;
24534
24.2k
        }
24535
26.8k
        p->mark = _mark;
24536
26.8k
        D(fprintf(stderr, "%*c%s _loop0_82[%d-%d]: %s failed!\n", p->level, ' ',
24537
26.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' display_item"));
24538
26.8k
    }
24539
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24540
26.8k
    if (!_seq) {
24541
0
        p->error_indicator = 1;
24542
0
        PyErr_NoMemory();
24543
0
        PyMem_Free(_children);
24544
0
        p->level--;
24545
0
        return NULL;
24546
0
    }
24547
51.0k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24548
26.8k
    PyMem_Free(_children);
24549
26.8k
    p->level--;
24550
26.8k
    return _seq;
24551
26.8k
}
24552
24553
// _gather_83: display_item _loop0_82
24554
static asdl_seq *
24555
_gather_83_rule(Parser *p)
24556
57.5k
{
24557
57.5k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
24558
0
        _Pypegen_stack_overflow(p);
24559
0
    }
24560
57.5k
    if (p->error_indicator) {
24561
0
        p->level--;
24562
0
        return NULL;
24563
0
    }
24564
57.5k
    asdl_seq * _res = NULL;
24565
57.5k
    int _mark = p->mark;
24566
57.5k
    { // display_item _loop0_82
24567
57.5k
        if (p->error_indicator) {
24568
0
            p->level--;
24569
0
            return NULL;
24570
0
        }
24571
57.5k
        D(fprintf(stderr, "%*c> _gather_83[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "display_item _loop0_82"));
24572
57.5k
        expr_ty elem;
24573
57.5k
        asdl_seq * seq;
24574
57.5k
        if (
24575
57.5k
            (elem = display_item_rule(p))  // display_item
24576
26.8k
            &&
24577
26.8k
            (seq = _loop0_82_rule(p))  // _loop0_82
24578
57.5k
        )
24579
26.8k
        {
24580
26.8k
            D(fprintf(stderr, "%*c+ _gather_83[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "display_item _loop0_82"));
24581
26.8k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
24582
26.8k
            goto done;
24583
26.8k
        }
24584
30.7k
        p->mark = _mark;
24585
30.7k
        D(fprintf(stderr, "%*c%s _gather_83[%d-%d]: %s failed!\n", p->level, ' ',
24586
30.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "display_item _loop0_82"));
24587
30.7k
    }
24588
30.7k
    _res = NULL;
24589
57.5k
  done:
24590
57.5k
    p->level--;
24591
57.5k
    return _res;
24592
30.7k
}
24593
24594
// _tmp_84: display_item ',' display_items?
24595
static void *
24596
_tmp_84_rule(Parser *p)
24597
66.6k
{
24598
66.6k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
24599
0
        _Pypegen_stack_overflow(p);
24600
0
    }
24601
66.6k
    if (p->error_indicator) {
24602
0
        p->level--;
24603
0
        return NULL;
24604
0
    }
24605
66.6k
    void * _res = NULL;
24606
66.6k
    int _mark = p->mark;
24607
66.6k
    { // display_item ',' display_items?
24608
66.6k
        if (p->error_indicator) {
24609
0
            p->level--;
24610
0
            return NULL;
24611
0
        }
24612
66.6k
        D(fprintf(stderr, "%*c> _tmp_84[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "display_item ',' display_items?"));
24613
66.6k
        Token * _literal;
24614
66.6k
        expr_ty y;
24615
66.6k
        void *z;
24616
66.6k
        if (
24617
66.6k
            (y = display_item_rule(p))  // display_item
24618
29.0k
            &&
24619
29.0k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
24620
10.9k
            &&
24621
10.9k
            (z = display_items_rule(p), !p->error_indicator)  // display_items?
24622
66.6k
        )
24623
10.2k
        {
24624
10.2k
            D(fprintf(stderr, "%*c+ _tmp_84[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "display_item ',' display_items?"));
24625
10.2k
            _res = _PyPegen_seq_insert_in_front ( p , y , z );
24626
10.2k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
24627
0
                p->error_indicator = 1;
24628
0
                p->level--;
24629
0
                return NULL;
24630
0
            }
24631
10.2k
            goto done;
24632
10.2k
        }
24633
56.3k
        p->mark = _mark;
24634
56.3k
        D(fprintf(stderr, "%*c%s _tmp_84[%d-%d]: %s failed!\n", p->level, ' ',
24635
56.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "display_item ',' display_items?"));
24636
56.3k
    }
24637
56.3k
    _res = NULL;
24638
66.6k
  done:
24639
66.6k
    p->level--;
24640
66.6k
    return _res;
24641
56.3k
}
24642
24643
// _loop0_85: ',' double_starred_kvpair
24644
static asdl_seq *
24645
_loop0_85_rule(Parser *p)
24646
5.74k
{
24647
5.74k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
24648
0
        _Pypegen_stack_overflow(p);
24649
0
    }
24650
5.74k
    if (p->error_indicator) {
24651
0
        p->level--;
24652
0
        return NULL;
24653
0
    }
24654
5.74k
    void *_res = NULL;
24655
5.74k
    int _mark = p->mark;
24656
5.74k
    void **_children = NULL;
24657
5.74k
    Py_ssize_t _children_capacity = 0;
24658
5.74k
    Py_ssize_t _n = 0;
24659
5.74k
    { // ',' double_starred_kvpair
24660
5.74k
        if (p->error_indicator) {
24661
0
            p->level--;
24662
0
            return NULL;
24663
0
        }
24664
5.74k
        D(fprintf(stderr, "%*c> _loop0_85[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair"));
24665
5.74k
        Token * _literal;
24666
5.74k
        KeyValuePair* elem;
24667
5.74k
        while (
24668
22.0k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
24669
19.4k
            &&
24670
19.4k
            (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
24671
5.74k
        )
24672
16.3k
        {
24673
16.3k
            _res = elem;
24674
16.3k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
24675
0
                p->error_indicator = 1;
24676
0
                PyMem_Free(_children);
24677
0
                p->level--;
24678
0
                return NULL;
24679
0
            }
24680
16.3k
            if (_n == _children_capacity) {
24681
1.82k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
24682
0
                    p->error_indicator = 1;
24683
0
                    PyErr_NoMemory();
24684
0
                    PyMem_Free(_children);
24685
0
                    p->level--;
24686
0
                    return NULL;
24687
0
                }
24688
1.82k
            }
24689
16.3k
            _children[_n++] = _res;
24690
16.3k
            _mark = p->mark;
24691
16.3k
        }
24692
5.74k
        p->mark = _mark;
24693
5.74k
        D(fprintf(stderr, "%*c%s _loop0_85[%d-%d]: %s failed!\n", p->level, ' ',
24694
5.74k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair"));
24695
5.74k
    }
24696
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24697
5.74k
    if (!_seq) {
24698
0
        p->error_indicator = 1;
24699
0
        PyErr_NoMemory();
24700
0
        PyMem_Free(_children);
24701
0
        p->level--;
24702
0
        return NULL;
24703
0
    }
24704
22.0k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24705
5.74k
    PyMem_Free(_children);
24706
5.74k
    p->level--;
24707
5.74k
    return _seq;
24708
5.74k
}
24709
24710
// _gather_86: double_starred_kvpair _loop0_85
24711
static asdl_seq *
24712
_gather_86_rule(Parser *p)
24713
18.7k
{
24714
18.7k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
24715
0
        _Pypegen_stack_overflow(p);
24716
0
    }
24717
18.7k
    if (p->error_indicator) {
24718
0
        p->level--;
24719
0
        return NULL;
24720
0
    }
24721
18.7k
    asdl_seq * _res = NULL;
24722
18.7k
    int _mark = p->mark;
24723
18.7k
    { // double_starred_kvpair _loop0_85
24724
18.7k
        if (p->error_indicator) {
24725
0
            p->level--;
24726
0
            return NULL;
24727
0
        }
24728
18.7k
        D(fprintf(stderr, "%*c> _gather_86[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_85"));
24729
18.7k
        KeyValuePair* elem;
24730
18.7k
        asdl_seq * seq;
24731
18.7k
        if (
24732
18.7k
            (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
24733
5.74k
            &&
24734
5.74k
            (seq = _loop0_85_rule(p))  // _loop0_85
24735
18.7k
        )
24736
5.74k
        {
24737
5.74k
            D(fprintf(stderr, "%*c+ _gather_86[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_85"));
24738
5.74k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
24739
5.74k
            goto done;
24740
5.74k
        }
24741
13.0k
        p->mark = _mark;
24742
13.0k
        D(fprintf(stderr, "%*c%s _gather_86[%d-%d]: %s failed!\n", p->level, ' ',
24743
13.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_85"));
24744
13.0k
    }
24745
13.0k
    _res = NULL;
24746
18.7k
  done:
24747
18.7k
    p->level--;
24748
18.7k
    return _res;
24749
13.0k
}
24750
24751
// _loop1_87: for_if_clause
24752
static asdl_seq *
24753
_loop1_87_rule(Parser *p)
24754
107k
{
24755
107k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
24756
0
        _Pypegen_stack_overflow(p);
24757
0
    }
24758
107k
    if (p->error_indicator) {
24759
0
        p->level--;
24760
0
        return NULL;
24761
0
    }
24762
107k
    void *_res = NULL;
24763
107k
    int _mark = p->mark;
24764
107k
    void **_children = NULL;
24765
107k
    Py_ssize_t _children_capacity = 0;
24766
107k
    Py_ssize_t _n = 0;
24767
107k
    { // for_if_clause
24768
107k
        if (p->error_indicator) {
24769
0
            p->level--;
24770
0
            return NULL;
24771
0
        }
24772
107k
        D(fprintf(stderr, "%*c> _loop1_87[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause"));
24773
107k
        comprehension_ty for_if_clause_var;
24774
107k
        while (
24775
114k
            (for_if_clause_var = for_if_clause_rule(p))  // for_if_clause
24776
107k
        )
24777
7.69k
        {
24778
7.69k
            _res = for_if_clause_var;
24779
7.69k
            if (_n == _children_capacity) {
24780
7.55k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
24781
0
                    p->error_indicator = 1;
24782
0
                    PyErr_NoMemory();
24783
0
                    PyMem_Free(_children);
24784
0
                    p->level--;
24785
0
                    return NULL;
24786
0
                }
24787
7.55k
            }
24788
7.69k
            _children[_n++] = _res;
24789
7.69k
            _mark = p->mark;
24790
7.69k
        }
24791
107k
        p->mark = _mark;
24792
107k
        D(fprintf(stderr, "%*c%s _loop1_87[%d-%d]: %s failed!\n", p->level, ' ',
24793
107k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause"));
24794
107k
    }
24795
107k
    if (_n == 0 || p->error_indicator) {
24796
99.9k
        PyMem_Free(_children);
24797
99.9k
        p->level--;
24798
99.9k
        return NULL;
24799
99.9k
    }
24800
7.10k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24801
7.10k
    if (!_seq) {
24802
0
        p->error_indicator = 1;
24803
0
        PyErr_NoMemory();
24804
0
        PyMem_Free(_children);
24805
0
        p->level--;
24806
0
        return NULL;
24807
0
    }
24808
14.6k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24809
7.10k
    PyMem_Free(_children);
24810
7.10k
    p->level--;
24811
7.10k
    return _seq;
24812
7.10k
}
24813
24814
// _loop0_88: ('if' disjunction)
24815
static asdl_seq *
24816
_loop0_88_rule(Parser *p)
24817
7.90k
{
24818
7.90k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
24819
0
        _Pypegen_stack_overflow(p);
24820
0
    }
24821
7.90k
    if (p->error_indicator) {
24822
0
        p->level--;
24823
0
        return NULL;
24824
0
    }
24825
7.90k
    void *_res = NULL;
24826
7.90k
    int _mark = p->mark;
24827
7.90k
    void **_children = NULL;
24828
7.90k
    Py_ssize_t _children_capacity = 0;
24829
7.90k
    Py_ssize_t _n = 0;
24830
7.90k
    { // ('if' disjunction)
24831
7.90k
        if (p->error_indicator) {
24832
0
            p->level--;
24833
0
            return NULL;
24834
0
        }
24835
7.90k
        D(fprintf(stderr, "%*c> _loop0_88[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)"));
24836
7.90k
        void *_tmp_186_var;
24837
7.90k
        while (
24838
11.7k
            (_tmp_186_var = _tmp_186_rule(p))  // 'if' disjunction
24839
7.90k
        )
24840
3.85k
        {
24841
3.85k
            _res = _tmp_186_var;
24842
3.85k
            if (_n == _children_capacity) {
24843
3.02k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
24844
0
                    p->error_indicator = 1;
24845
0
                    PyErr_NoMemory();
24846
0
                    PyMem_Free(_children);
24847
0
                    p->level--;
24848
0
                    return NULL;
24849
0
                }
24850
3.02k
            }
24851
3.85k
            _children[_n++] = _res;
24852
3.85k
            _mark = p->mark;
24853
3.85k
        }
24854
7.90k
        p->mark = _mark;
24855
7.90k
        D(fprintf(stderr, "%*c%s _loop0_88[%d-%d]: %s failed!\n", p->level, ' ',
24856
7.90k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('if' disjunction)"));
24857
7.90k
    }
24858
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24859
7.90k
    if (!_seq) {
24860
0
        p->error_indicator = 1;
24861
0
        PyErr_NoMemory();
24862
0
        PyMem_Free(_children);
24863
0
        p->level--;
24864
0
        return NULL;
24865
0
    }
24866
11.7k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24867
7.90k
    PyMem_Free(_children);
24868
7.90k
    p->level--;
24869
7.90k
    return _seq;
24870
7.90k
}
24871
24872
// _tmp_89: assignment_expression | expression !':=' | starred_expression
24873
static void *
24874
_tmp_89_rule(Parser *p)
24875
101k
{
24876
101k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
24877
1
        _Pypegen_stack_overflow(p);
24878
1
    }
24879
101k
    if (p->error_indicator) {
24880
1
        p->level--;
24881
1
        return NULL;
24882
1
    }
24883
101k
    void * _res = NULL;
24884
101k
    int _mark = p->mark;
24885
101k
    { // assignment_expression
24886
101k
        if (p->error_indicator) {
24887
0
            p->level--;
24888
0
            return NULL;
24889
0
        }
24890
101k
        D(fprintf(stderr, "%*c> _tmp_89[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
24891
101k
        expr_ty assignment_expression_var;
24892
101k
        if (
24893
101k
            (assignment_expression_var = assignment_expression_rule(p))  // assignment_expression
24894
101k
        )
24895
562
        {
24896
562
            D(fprintf(stderr, "%*c+ _tmp_89[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
24897
562
            _res = assignment_expression_var;
24898
562
            goto done;
24899
562
        }
24900
100k
        p->mark = _mark;
24901
100k
        D(fprintf(stderr, "%*c%s _tmp_89[%d-%d]: %s failed!\n", p->level, ' ',
24902
100k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression"));
24903
100k
    }
24904
0
    { // expression !':='
24905
100k
        if (p->error_indicator) {
24906
376
            p->level--;
24907
376
            return NULL;
24908
376
        }
24909
100k
        D(fprintf(stderr, "%*c> _tmp_89[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
24910
100k
        expr_ty expression_var;
24911
100k
        if (
24912
100k
            (expression_var = expression_rule(p))  // expression
24913
46.5k
            &&
24914
46.5k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53)  // token=':='
24915
100k
        )
24916
46.1k
        {
24917
46.1k
            D(fprintf(stderr, "%*c+ _tmp_89[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='"));
24918
46.1k
            _res = expression_var;
24919
46.1k
            goto done;
24920
46.1k
        }
24921
53.9k
        p->mark = _mark;
24922
53.9k
        D(fprintf(stderr, "%*c%s _tmp_89[%d-%d]: %s failed!\n", p->level, ' ',
24923
53.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
24924
53.9k
    }
24925
0
    { // starred_expression
24926
53.9k
        if (p->error_indicator) {
24927
6.11k
            p->level--;
24928
6.11k
            return NULL;
24929
6.11k
        }
24930
47.8k
        D(fprintf(stderr, "%*c> _tmp_89[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
24931
47.8k
        expr_ty starred_expression_var;
24932
47.8k
        if (
24933
47.8k
            (starred_expression_var = starred_expression_rule(p))  // starred_expression
24934
47.8k
        )
24935
2.04k
        {
24936
2.04k
            D(fprintf(stderr, "%*c+ _tmp_89[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
24937
2.04k
            _res = starred_expression_var;
24938
2.04k
            goto done;
24939
2.04k
        }
24940
45.8k
        p->mark = _mark;
24941
45.8k
        D(fprintf(stderr, "%*c%s _tmp_89[%d-%d]: %s failed!\n", p->level, ' ',
24942
45.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
24943
45.8k
    }
24944
45.8k
    _res = NULL;
24945
94.6k
  done:
24946
94.6k
    p->level--;
24947
94.6k
    return _res;
24948
45.8k
}
24949
24950
// _loop0_90: ',' (starred_expression | (assignment_expression | expression !':=') !'=')
24951
static asdl_seq *
24952
_loop0_90_rule(Parser *p)
24953
29.0k
{
24954
29.0k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
24955
0
        _Pypegen_stack_overflow(p);
24956
0
    }
24957
29.0k
    if (p->error_indicator) {
24958
0
        p->level--;
24959
0
        return NULL;
24960
0
    }
24961
29.0k
    void *_res = NULL;
24962
29.0k
    int _mark = p->mark;
24963
29.0k
    void **_children = NULL;
24964
29.0k
    Py_ssize_t _children_capacity = 0;
24965
29.0k
    Py_ssize_t _n = 0;
24966
29.0k
    { // ',' (starred_expression | (assignment_expression | expression !':=') !'=')
24967
29.0k
        if (p->error_indicator) {
24968
0
            p->level--;
24969
0
            return NULL;
24970
0
        }
24971
29.0k
        D(fprintf(stderr, "%*c> _loop0_90[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (starred_expression | (assignment_expression | expression !':=') !'=')"));
24972
29.0k
        Token * _literal;
24973
29.0k
        void *elem;
24974
29.0k
        while (
24975
42.4k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
24976
18.8k
            &&
24977
18.8k
            (elem = _tmp_187_rule(p))  // starred_expression | (assignment_expression | expression !':=') !'='
24978
29.0k
        )
24979
13.3k
        {
24980
13.3k
            _res = elem;
24981
13.3k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
24982
0
                p->error_indicator = 1;
24983
0
                PyMem_Free(_children);
24984
0
                p->level--;
24985
0
                return NULL;
24986
0
            }
24987
13.3k
            if (_n == _children_capacity) {
24988
10.9k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
24989
0
                    p->error_indicator = 1;
24990
0
                    PyErr_NoMemory();
24991
0
                    PyMem_Free(_children);
24992
0
                    p->level--;
24993
0
                    return NULL;
24994
0
                }
24995
10.9k
            }
24996
13.3k
            _children[_n++] = _res;
24997
13.3k
            _mark = p->mark;
24998
13.3k
        }
24999
29.0k
        p->mark = _mark;
25000
29.0k
        D(fprintf(stderr, "%*c%s _loop0_90[%d-%d]: %s failed!\n", p->level, ' ',
25001
29.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (starred_expression | (assignment_expression | expression !':=') !'=')"));
25002
29.0k
    }
25003
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25004
29.0k
    if (!_seq) {
25005
0
        p->error_indicator = 1;
25006
0
        PyErr_NoMemory();
25007
0
        PyMem_Free(_children);
25008
0
        p->level--;
25009
0
        return NULL;
25010
0
    }
25011
42.4k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25012
29.0k
    PyMem_Free(_children);
25013
29.0k
    p->level--;
25014
29.0k
    return _seq;
25015
29.0k
}
25016
25017
// _gather_91:
25018
//     | (starred_expression | (assignment_expression | expression !':=') !'=') _loop0_90
25019
static asdl_seq *
25020
_gather_91_rule(Parser *p)
25021
61.3k
{
25022
61.3k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
25023
0
        _Pypegen_stack_overflow(p);
25024
0
    }
25025
61.3k
    if (p->error_indicator) {
25026
0
        p->level--;
25027
0
        return NULL;
25028
0
    }
25029
61.3k
    asdl_seq * _res = NULL;
25030
61.3k
    int _mark = p->mark;
25031
61.3k
    { // (starred_expression | (assignment_expression | expression !':=') !'=') _loop0_90
25032
61.3k
        if (p->error_indicator) {
25033
0
            p->level--;
25034
0
            return NULL;
25035
0
        }
25036
61.3k
        D(fprintf(stderr, "%*c> _gather_91[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_90"));
25037
61.3k
        void *elem;
25038
61.3k
        asdl_seq * seq;
25039
61.3k
        if (
25040
61.3k
            (elem = _tmp_187_rule(p))  // starred_expression | (assignment_expression | expression !':=') !'='
25041
29.0k
            &&
25042
29.0k
            (seq = _loop0_90_rule(p))  // _loop0_90
25043
61.3k
        )
25044
29.0k
        {
25045
29.0k
            D(fprintf(stderr, "%*c+ _gather_91[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_90"));
25046
29.0k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
25047
29.0k
            goto done;
25048
29.0k
        }
25049
32.2k
        p->mark = _mark;
25050
32.2k
        D(fprintf(stderr, "%*c%s _gather_91[%d-%d]: %s failed!\n", p->level, ' ',
25051
32.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_90"));
25052
32.2k
    }
25053
32.2k
    _res = NULL;
25054
61.3k
  done:
25055
61.3k
    p->level--;
25056
61.3k
    return _res;
25057
32.2k
}
25058
25059
// _tmp_92: ',' kwargs
25060
static void *
25061
_tmp_92_rule(Parser *p)
25062
29.0k
{
25063
29.0k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
25064
0
        _Pypegen_stack_overflow(p);
25065
0
    }
25066
29.0k
    if (p->error_indicator) {
25067
1.03k
        p->level--;
25068
1.03k
        return NULL;
25069
1.03k
    }
25070
28.0k
    void * _res = NULL;
25071
28.0k
    int _mark = p->mark;
25072
28.0k
    { // ',' kwargs
25073
28.0k
        if (p->error_indicator) {
25074
0
            p->level--;
25075
0
            return NULL;
25076
0
        }
25077
28.0k
        D(fprintf(stderr, "%*c> _tmp_92[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwargs"));
25078
28.0k
        Token * _literal;
25079
28.0k
        asdl_seq* k;
25080
28.0k
        if (
25081
28.0k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
25082
4.40k
            &&
25083
4.40k
            (k = kwargs_rule(p))  // kwargs
25084
28.0k
        )
25085
2.36k
        {
25086
2.36k
            D(fprintf(stderr, "%*c+ _tmp_92[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' kwargs"));
25087
2.36k
            _res = k;
25088
2.36k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
25089
201
                p->error_indicator = 1;
25090
201
                p->level--;
25091
201
                return NULL;
25092
201
            }
25093
2.16k
            goto done;
25094
2.36k
        }
25095
25.6k
        p->mark = _mark;
25096
25.6k
        D(fprintf(stderr, "%*c%s _tmp_92[%d-%d]: %s failed!\n", p->level, ' ',
25097
25.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwargs"));
25098
25.6k
    }
25099
25.6k
    _res = NULL;
25100
27.8k
  done:
25101
27.8k
    p->level--;
25102
27.8k
    return _res;
25103
25.6k
}
25104
25105
// _loop0_93: ',' kwarg_or_starred
25106
static asdl_seq *
25107
_loop0_93_rule(Parser *p)
25108
9.62k
{
25109
9.62k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
25110
0
        _Pypegen_stack_overflow(p);
25111
0
    }
25112
9.62k
    if (p->error_indicator) {
25113
0
        p->level--;
25114
0
        return NULL;
25115
0
    }
25116
9.62k
    void *_res = NULL;
25117
9.62k
    int _mark = p->mark;
25118
9.62k
    void **_children = NULL;
25119
9.62k
    Py_ssize_t _children_capacity = 0;
25120
9.62k
    Py_ssize_t _n = 0;
25121
9.62k
    { // ',' kwarg_or_starred
25122
9.62k
        if (p->error_indicator) {
25123
0
            p->level--;
25124
0
            return NULL;
25125
0
        }
25126
9.62k
        D(fprintf(stderr, "%*c> _loop0_93[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_starred"));
25127
9.62k
        Token * _literal;
25128
9.62k
        KeywordOrStarred* elem;
25129
9.62k
        while (
25130
14.4k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
25131
8.66k
            &&
25132
8.66k
            (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
25133
9.62k
        )
25134
4.85k
        {
25135
4.85k
            _res = elem;
25136
4.85k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
25137
0
                p->error_indicator = 1;
25138
0
                PyMem_Free(_children);
25139
0
                p->level--;
25140
0
                return NULL;
25141
0
            }
25142
4.85k
            if (_n == _children_capacity) {
25143
3.34k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
25144
0
                    p->error_indicator = 1;
25145
0
                    PyErr_NoMemory();
25146
0
                    PyMem_Free(_children);
25147
0
                    p->level--;
25148
0
                    return NULL;
25149
0
                }
25150
3.34k
            }
25151
4.85k
            _children[_n++] = _res;
25152
4.85k
            _mark = p->mark;
25153
4.85k
        }
25154
9.62k
        p->mark = _mark;
25155
9.62k
        D(fprintf(stderr, "%*c%s _loop0_93[%d-%d]: %s failed!\n", p->level, ' ',
25156
9.62k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_starred"));
25157
9.62k
    }
25158
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25159
9.62k
    if (!_seq) {
25160
0
        p->error_indicator = 1;
25161
0
        PyErr_NoMemory();
25162
0
        PyMem_Free(_children);
25163
0
        p->level--;
25164
0
        return NULL;
25165
0
    }
25166
14.4k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25167
9.62k
    PyMem_Free(_children);
25168
9.62k
    p->level--;
25169
9.62k
    return _seq;
25170
9.62k
}
25171
25172
// _gather_94: kwarg_or_starred _loop0_93
25173
static asdl_seq *
25174
_gather_94_rule(Parser *p)
25175
45.5k
{
25176
45.5k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
25177
0
        _Pypegen_stack_overflow(p);
25178
0
    }
25179
45.5k
    if (p->error_indicator) {
25180
0
        p->level--;
25181
0
        return NULL;
25182
0
    }
25183
45.5k
    asdl_seq * _res = NULL;
25184
45.5k
    int _mark = p->mark;
25185
45.5k
    { // kwarg_or_starred _loop0_93
25186
45.5k
        if (p->error_indicator) {
25187
0
            p->level--;
25188
0
            return NULL;
25189
0
        }
25190
45.5k
        D(fprintf(stderr, "%*c> _gather_94[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_93"));
25191
45.5k
        KeywordOrStarred* elem;
25192
45.5k
        asdl_seq * seq;
25193
45.5k
        if (
25194
45.5k
            (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
25195
9.62k
            &&
25196
9.62k
            (seq = _loop0_93_rule(p))  // _loop0_93
25197
45.5k
        )
25198
9.62k
        {
25199
9.62k
            D(fprintf(stderr, "%*c+ _gather_94[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_93"));
25200
9.62k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
25201
9.62k
            goto done;
25202
9.62k
        }
25203
35.9k
        p->mark = _mark;
25204
35.9k
        D(fprintf(stderr, "%*c%s _gather_94[%d-%d]: %s failed!\n", p->level, ' ',
25205
35.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_starred _loop0_93"));
25206
35.9k
    }
25207
35.9k
    _res = NULL;
25208
45.5k
  done:
25209
45.5k
    p->level--;
25210
45.5k
    return _res;
25211
35.9k
}
25212
25213
// _tmp_95: ',' ','.kwarg_or_double_starred+
25214
static void *
25215
_tmp_95_rule(Parser *p)
25216
9.62k
{
25217
9.62k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
25218
0
        _Pypegen_stack_overflow(p);
25219
0
    }
25220
9.62k
    if (p->error_indicator) {
25221
249
        p->level--;
25222
249
        return NULL;
25223
249
    }
25224
9.37k
    void * _res = NULL;
25225
9.37k
    int _mark = p->mark;
25226
9.37k
    { // ',' ','.kwarg_or_double_starred+
25227
9.37k
        if (p->error_indicator) {
25228
0
            p->level--;
25229
0
            return NULL;
25230
0
        }
25231
9.37k
        D(fprintf(stderr, "%*c> _tmp_95[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' ','.kwarg_or_double_starred+"));
25232
9.37k
        Token * _literal;
25233
9.37k
        asdl_seq * c;
25234
9.37k
        if (
25235
9.37k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
25236
3.55k
            &&
25237
3.55k
            (c = _gather_97_rule(p))  // ','.kwarg_or_double_starred+
25238
9.37k
        )
25239
917
        {
25240
917
            D(fprintf(stderr, "%*c+ _tmp_95[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' ','.kwarg_or_double_starred+"));
25241
917
            _res = c;
25242
917
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
25243
197
                p->error_indicator = 1;
25244
197
                p->level--;
25245
197
                return NULL;
25246
197
            }
25247
720
            goto done;
25248
917
        }
25249
8.46k
        p->mark = _mark;
25250
8.46k
        D(fprintf(stderr, "%*c%s _tmp_95[%d-%d]: %s failed!\n", p->level, ' ',
25251
8.46k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' ','.kwarg_or_double_starred+"));
25252
8.46k
    }
25253
8.46k
    _res = NULL;
25254
9.18k
  done:
25255
9.18k
    p->level--;
25256
9.18k
    return _res;
25257
8.46k
}
25258
25259
// _loop0_96: ',' kwarg_or_double_starred
25260
static asdl_seq *
25261
_loop0_96_rule(Parser *p)
25262
4.91k
{
25263
4.91k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
25264
0
        _Pypegen_stack_overflow(p);
25265
0
    }
25266
4.91k
    if (p->error_indicator) {
25267
0
        p->level--;
25268
0
        return NULL;
25269
0
    }
25270
4.91k
    void *_res = NULL;
25271
4.91k
    int _mark = p->mark;
25272
4.91k
    void **_children = NULL;
25273
4.91k
    Py_ssize_t _children_capacity = 0;
25274
4.91k
    Py_ssize_t _n = 0;
25275
4.91k
    { // ',' kwarg_or_double_starred
25276
4.91k
        if (p->error_indicator) {
25277
0
            p->level--;
25278
0
            return NULL;
25279
0
        }
25280
4.91k
        D(fprintf(stderr, "%*c> _loop0_96[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_double_starred"));
25281
4.91k
        Token * _literal;
25282
4.91k
        KeywordOrStarred* elem;
25283
4.91k
        while (
25284
13.8k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
25285
11.8k
            &&
25286
11.8k
            (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
25287
4.91k
        )
25288
8.91k
        {
25289
8.91k
            _res = elem;
25290
8.91k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
25291
0
                p->error_indicator = 1;
25292
0
                PyMem_Free(_children);
25293
0
                p->level--;
25294
0
                return NULL;
25295
0
            }
25296
8.91k
            if (_n == _children_capacity) {
25297
1.69k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
25298
0
                    p->error_indicator = 1;
25299
0
                    PyErr_NoMemory();
25300
0
                    PyMem_Free(_children);
25301
0
                    p->level--;
25302
0
                    return NULL;
25303
0
                }
25304
1.69k
            }
25305
8.91k
            _children[_n++] = _res;
25306
8.91k
            _mark = p->mark;
25307
8.91k
        }
25308
4.91k
        p->mark = _mark;
25309
4.91k
        D(fprintf(stderr, "%*c%s _loop0_96[%d-%d]: %s failed!\n", p->level, ' ',
25310
4.91k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_double_starred"));
25311
4.91k
    }
25312
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25313
4.91k
    if (!_seq) {
25314
0
        p->error_indicator = 1;
25315
0
        PyErr_NoMemory();
25316
0
        PyMem_Free(_children);
25317
0
        p->level--;
25318
0
        return NULL;
25319
0
    }
25320
13.8k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25321
4.91k
    PyMem_Free(_children);
25322
4.91k
    p->level--;
25323
4.91k
    return _seq;
25324
4.91k
}
25325
25326
// _gather_97: kwarg_or_double_starred _loop0_96
25327
static asdl_seq *
25328
_gather_97_rule(Parser *p)
25329
39.0k
{
25330
39.0k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
25331
0
        _Pypegen_stack_overflow(p);
25332
0
    }
25333
39.0k
    if (p->error_indicator) {
25334
0
        p->level--;
25335
0
        return NULL;
25336
0
    }
25337
39.0k
    asdl_seq * _res = NULL;
25338
39.0k
    int _mark = p->mark;
25339
39.0k
    { // kwarg_or_double_starred _loop0_96
25340
39.0k
        if (p->error_indicator) {
25341
0
            p->level--;
25342
0
            return NULL;
25343
0
        }
25344
39.0k
        D(fprintf(stderr, "%*c> _gather_97[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_96"));
25345
39.0k
        KeywordOrStarred* elem;
25346
39.0k
        asdl_seq * seq;
25347
39.0k
        if (
25348
39.0k
            (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
25349
4.91k
            &&
25350
4.91k
            (seq = _loop0_96_rule(p))  // _loop0_96
25351
39.0k
        )
25352
4.91k
        {
25353
4.91k
            D(fprintf(stderr, "%*c+ _gather_97[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_96"));
25354
4.91k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
25355
4.91k
            goto done;
25356
4.91k
        }
25357
34.1k
        p->mark = _mark;
25358
34.1k
        D(fprintf(stderr, "%*c%s _gather_97[%d-%d]: %s failed!\n", p->level, ' ',
25359
34.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_double_starred _loop0_96"));
25360
34.1k
    }
25361
34.1k
    _res = NULL;
25362
39.0k
  done:
25363
39.0k
    p->level--;
25364
39.0k
    return _res;
25365
34.1k
}
25366
25367
// _loop0_98: (',' star_target)
25368
static asdl_seq *
25369
_loop0_98_rule(Parser *p)
25370
6.31k
{
25371
6.31k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
25372
0
        _Pypegen_stack_overflow(p);
25373
0
    }
25374
6.31k
    if (p->error_indicator) {
25375
0
        p->level--;
25376
0
        return NULL;
25377
0
    }
25378
6.31k
    void *_res = NULL;
25379
6.31k
    int _mark = p->mark;
25380
6.31k
    void **_children = NULL;
25381
6.31k
    Py_ssize_t _children_capacity = 0;
25382
6.31k
    Py_ssize_t _n = 0;
25383
6.31k
    { // (',' star_target)
25384
6.31k
        if (p->error_indicator) {
25385
0
            p->level--;
25386
0
            return NULL;
25387
0
        }
25388
6.31k
        D(fprintf(stderr, "%*c> _loop0_98[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)"));
25389
6.31k
        void *_tmp_188_var;
25390
6.31k
        while (
25391
11.4k
            (_tmp_188_var = _tmp_188_rule(p))  // ',' star_target
25392
6.31k
        )
25393
5.09k
        {
25394
5.09k
            _res = _tmp_188_var;
25395
5.09k
            if (_n == _children_capacity) {
25396
3.71k
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
25397
0
                    p->error_indicator = 1;
25398
0
                    PyErr_NoMemory();
25399
0
                    PyMem_Free(_children);
25400
0
                    p->level--;
25401
0
                    return NULL;
25402
0
                }
25403
3.71k
            }
25404
5.09k
            _children[_n++] = _res;
25405
5.09k
            _mark = p->mark;
25406
5.09k
        }
25407
6.31k
        p->mark = _mark;
25408
6.31k
        D(fprintf(stderr, "%*c%s _loop0_98[%d-%d]: %s failed!\n", p->level, ' ',
25409
6.31k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_target)"));
25410
6.31k
    }
25411
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25412
6.31k
    if (!_seq) {
25413
0
        p->error_indicator = 1;
25414
0
        PyErr_NoMemory();
25415
0
        PyMem_Free(_children);
25416
0
        p->level--;
25417
0
        return NULL;
25418
0
    }
25419
11.4k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25420
6.31k
    PyMem_Free(_children);
25421
6.31k
    p->level--;
25422
6.31k
    return _seq;
25423
6.31k
}
25424
25425
// _tmp_99: !'*' star_target
25426
static void *
25427
_tmp_99_rule(Parser *p)
25428
1.93k
{
25429
1.93k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
25430
0
        _Pypegen_stack_overflow(p);
25431
0
    }
25432
1.93k
    if (p->error_indicator) {
25433
0
        p->level--;
25434
0
        return NULL;
25435
0
    }
25436
1.93k
    void * _res = NULL;
25437
1.93k
    int _mark = p->mark;
25438
1.93k
    { // !'*' star_target
25439
1.93k
        if (p->error_indicator) {
25440
0
            p->level--;
25441
0
            return NULL;
25442
0
        }
25443
1.93k
        D(fprintf(stderr, "%*c> _tmp_99[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!'*' star_target"));
25444
1.93k
        expr_ty star_target_var;
25445
1.93k
        if (
25446
1.93k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 16)  // token='*'
25447
1.93k
            &&
25448
1.93k
            (star_target_var = star_target_rule(p))  // star_target
25449
1.93k
        )
25450
843
        {
25451
843
            D(fprintf(stderr, "%*c+ _tmp_99[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!'*' star_target"));
25452
843
            _res = star_target_var;
25453
843
            goto done;
25454
843
        }
25455
1.09k
        p->mark = _mark;
25456
1.09k
        D(fprintf(stderr, "%*c%s _tmp_99[%d-%d]: %s failed!\n", p->level, ' ',
25457
1.09k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!'*' star_target"));
25458
1.09k
    }
25459
1.09k
    _res = NULL;
25460
1.93k
  done:
25461
1.93k
    p->level--;
25462
1.93k
    return _res;
25463
1.09k
}
25464
25465
// _tmp_100: '(' | '[' | '.'
25466
static void *
25467
_tmp_100_rule(Parser *p)
25468
372k
{
25469
372k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
25470
0
        _Pypegen_stack_overflow(p);
25471
0
    }
25472
372k
    if (p->error_indicator) {
25473
0
        p->level--;
25474
0
        return NULL;
25475
0
    }
25476
372k
    void * _res = NULL;
25477
372k
    int _mark = p->mark;
25478
372k
    { // '('
25479
372k
        if (p->error_indicator) {
25480
0
            p->level--;
25481
0
            return NULL;
25482
0
        }
25483
372k
        D(fprintf(stderr, "%*c> _tmp_100[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
25484
372k
        Token * _literal;
25485
372k
        if (
25486
372k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
25487
372k
        )
25488
3.53k
        {
25489
3.53k
            D(fprintf(stderr, "%*c+ _tmp_100[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
25490
3.53k
            _res = _literal;
25491
3.53k
            goto done;
25492
3.53k
        }
25493
369k
        p->mark = _mark;
25494
369k
        D(fprintf(stderr, "%*c%s _tmp_100[%d-%d]: %s failed!\n", p->level, ' ',
25495
369k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
25496
369k
    }
25497
0
    { // '['
25498
369k
        if (p->error_indicator) {
25499
0
            p->level--;
25500
0
            return NULL;
25501
0
        }
25502
369k
        D(fprintf(stderr, "%*c> _tmp_100[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
25503
369k
        Token * _literal;
25504
369k
        if (
25505
369k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
25506
369k
        )
25507
1.27k
        {
25508
1.27k
            D(fprintf(stderr, "%*c+ _tmp_100[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
25509
1.27k
            _res = _literal;
25510
1.27k
            goto done;
25511
1.27k
        }
25512
367k
        p->mark = _mark;
25513
367k
        D(fprintf(stderr, "%*c%s _tmp_100[%d-%d]: %s failed!\n", p->level, ' ',
25514
367k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
25515
367k
    }
25516
0
    { // '.'
25517
367k
        if (p->error_indicator) {
25518
0
            p->level--;
25519
0
            return NULL;
25520
0
        }
25521
367k
        D(fprintf(stderr, "%*c> _tmp_100[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
25522
367k
        Token * _literal;
25523
367k
        if (
25524
367k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
25525
367k
        )
25526
882
        {
25527
882
            D(fprintf(stderr, "%*c+ _tmp_100[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
25528
882
            _res = _literal;
25529
882
            goto done;
25530
882
        }
25531
367k
        p->mark = _mark;
25532
367k
        D(fprintf(stderr, "%*c%s _tmp_100[%d-%d]: %s failed!\n", p->level, ' ',
25533
367k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
25534
367k
    }
25535
367k
    _res = NULL;
25536
372k
  done:
25537
372k
    p->level--;
25538
372k
    return _res;
25539
367k
}
25540
25541
// _loop0_101: ',' del_target
25542
static asdl_seq *
25543
_loop0_101_rule(Parser *p)
25544
809
{
25545
809
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
25546
0
        _Pypegen_stack_overflow(p);
25547
0
    }
25548
809
    if (p->error_indicator) {
25549
0
        p->level--;
25550
0
        return NULL;
25551
0
    }
25552
809
    void *_res = NULL;
25553
809
    int _mark = p->mark;
25554
809
    void **_children = NULL;
25555
809
    Py_ssize_t _children_capacity = 0;
25556
809
    Py_ssize_t _n = 0;
25557
809
    { // ',' del_target
25558
809
        if (p->error_indicator) {
25559
0
            p->level--;
25560
0
            return NULL;
25561
0
        }
25562
809
        D(fprintf(stderr, "%*c> _loop0_101[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' del_target"));
25563
809
        Token * _literal;
25564
809
        expr_ty elem;
25565
809
        while (
25566
1.88k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
25567
1.18k
            &&
25568
1.18k
            (elem = del_target_rule(p))  // del_target
25569
809
        )
25570
1.07k
        {
25571
1.07k
            _res = elem;
25572
1.07k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
25573
0
                p->error_indicator = 1;
25574
0
                PyMem_Free(_children);
25575
0
                p->level--;
25576
0
                return NULL;
25577
0
            }
25578
1.07k
            if (_n == _children_capacity) {
25579
505
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
25580
0
                    p->error_indicator = 1;
25581
0
                    PyErr_NoMemory();
25582
0
                    PyMem_Free(_children);
25583
0
                    p->level--;
25584
0
                    return NULL;
25585
0
                }
25586
505
            }
25587
1.07k
            _children[_n++] = _res;
25588
1.07k
            _mark = p->mark;
25589
1.07k
        }
25590
809
        p->mark = _mark;
25591
809
        D(fprintf(stderr, "%*c%s _loop0_101[%d-%d]: %s failed!\n", p->level, ' ',
25592
809
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' del_target"));
25593
809
    }
25594
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25595
809
    if (!_seq) {
25596
0
        p->error_indicator = 1;
25597
0
        PyErr_NoMemory();
25598
0
        PyMem_Free(_children);
25599
0
        p->level--;
25600
0
        return NULL;
25601
0
    }
25602
1.88k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25603
809
    PyMem_Free(_children);
25604
809
    p->level--;
25605
809
    return _seq;
25606
809
}
25607
25608
// _gather_102: del_target _loop0_101
25609
static asdl_seq *
25610
_gather_102_rule(Parser *p)
25611
1.00k
{
25612
1.00k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
25613
0
        _Pypegen_stack_overflow(p);
25614
0
    }
25615
1.00k
    if (p->error_indicator) {
25616
0
        p->level--;
25617
0
        return NULL;
25618
0
    }
25619
1.00k
    asdl_seq * _res = NULL;
25620
1.00k
    int _mark = p->mark;
25621
1.00k
    { // del_target _loop0_101
25622
1.00k
        if (p->error_indicator) {
25623
0
            p->level--;
25624
0
            return NULL;
25625
0
        }
25626
1.00k
        D(fprintf(stderr, "%*c> _gather_102[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "del_target _loop0_101"));
25627
1.00k
        expr_ty elem;
25628
1.00k
        asdl_seq * seq;
25629
1.00k
        if (
25630
1.00k
            (elem = del_target_rule(p))  // del_target
25631
809
            &&
25632
809
            (seq = _loop0_101_rule(p))  // _loop0_101
25633
1.00k
        )
25634
809
        {
25635
809
            D(fprintf(stderr, "%*c+ _gather_102[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "del_target _loop0_101"));
25636
809
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
25637
809
            goto done;
25638
809
        }
25639
200
        p->mark = _mark;
25640
200
        D(fprintf(stderr, "%*c%s _gather_102[%d-%d]: %s failed!\n", p->level, ' ',
25641
200
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_target _loop0_101"));
25642
200
    }
25643
200
    _res = NULL;
25644
1.00k
  done:
25645
1.00k
    p->level--;
25646
1.00k
    return _res;
25647
200
}
25648
25649
// _loop0_103: ',' expression
25650
static asdl_seq *
25651
_loop0_103_rule(Parser *p)
25652
0
{
25653
0
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
25654
0
        _Pypegen_stack_overflow(p);
25655
0
    }
25656
0
    if (p->error_indicator) {
25657
0
        p->level--;
25658
0
        return NULL;
25659
0
    }
25660
0
    void *_res = NULL;
25661
0
    int _mark = p->mark;
25662
0
    void **_children = NULL;
25663
0
    Py_ssize_t _children_capacity = 0;
25664
0
    Py_ssize_t _n = 0;
25665
0
    { // ',' expression
25666
0
        if (p->error_indicator) {
25667
0
            p->level--;
25668
0
            return NULL;
25669
0
        }
25670
0
        D(fprintf(stderr, "%*c> _loop0_103[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
25671
0
        Token * _literal;
25672
0
        expr_ty elem;
25673
0
        while (
25674
0
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
25675
0
            &&
25676
0
            (elem = expression_rule(p))  // expression
25677
0
        )
25678
0
        {
25679
0
            _res = elem;
25680
0
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
25681
0
                p->error_indicator = 1;
25682
0
                PyMem_Free(_children);
25683
0
                p->level--;
25684
0
                return NULL;
25685
0
            }
25686
0
            if (_n == _children_capacity) {
25687
0
                if (_PyPegen_grow_loop_buffer(&_children, &_children_capacity) < 0) {
25688
0
                    p->error_indicator = 1;
25689
0
                    PyErr_NoMemory();
25690
0
                    PyMem_Free(_children);
25691
0
                    p->level--;
25692
0
                    return NULL;
25693
0
                }
25694
0
            }
25695
0
            _children[_n++] = _res;
25696
0
            _mark = p->mark;
25697
0
        }
25698
0
        p->mark = _mark;
25699
0
        D(fprintf(stderr, "%*c%s _loop0_103[%d-%d]: %s failed!\n", p->level, ' ',
25700
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
25701
0
    }
25702
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25703
0
    if (!_seq) {
25704
0
        p->error_indicator = 1;
25705
0
        PyErr_NoMemory();
25706
0
        PyMem_Free(_children);
25707
0
        p->level--;
25708
0
        return NULL;
25709
0
    }
25710
0
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25711
0
    PyMem_Free(_children);
25712
0
    p->level--;
25713
0
    return _seq;
25714
0
}
25715
25716
// _gather_104: expression _loop0_103
25717
static asdl_seq *
25718
_gather_104_rule(Parser *p)
25719
0
{
25720
0
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
25721
0
        _Pypegen_stack_overflow(p);
25722
0
    }
25723
0
    if (p->error_indicator) {
25724
0
        p->level--;
25725
0
        return NULL;
25726
0
    }
25727
0
    asdl_seq * _res = NULL;
25728
0
    int _mark = p->mark;
25729
0
    { // expression _loop0_103
25730
0
        if (p->error_indicator) {
25731
0
            p->level--;
25732
0
            return NULL;
25733
0
        }
25734
0
        D(fprintf(stderr, "%*c> _gather_104[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_103"));
25735
0
        expr_ty elem;
25736
0
        asdl_seq * seq;
25737
0
        if (
25738
0
            (elem = expression_rule(p))  // expression
25739
0
            &&
25740
0
            (seq = _loop0_103_rule(p))  // _loop0_103
25741
0
        )
25742
0
        {
25743
0
            D(fprintf(stderr, "%*c+ _gather_104[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_103"));
25744
0
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
25745
0
            goto done;
25746
0
        }
25747
0
        p->mark = _mark;
25748
0
        D(fprintf(stderr, "%*c%s _gather_104[%d-%d]: %s failed!\n", p->level, ' ',
25749
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_103"));
25750
0
    }
25751
0
    _res = NULL;
25752
0
  done:
25753
0
    p->level--;
25754
0
    return _res;
25755
0
}
25756
25757
// _tmp_105: NEWLINE INDENT
25758
static void *
25759
_tmp_105_rule(Parser *p)
25760
0
{
25761
0
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
25762
0
        _Pypegen_stack_overflow(p);
25763
0
    }
25764
0
    if (p->error_indicator) {
25765
0
        p->level--;
25766
0
        return NULL;
25767
0
    }
25768
0
    void * _res = NULL;
25769
0
    int _mark = p->mark;
25770
0
    { // NEWLINE INDENT
25771
0
        if (p->error_indicator) {
25772
0
            p->level--;
25773
0
            return NULL;
25774
0
        }
25775
0
        D(fprintf(stderr, "%*c> _tmp_105[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT"));
25776
0
        Token * indent_var;
25777
0
        Token * newline_var;
25778
0
        if (
25779
0
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25780
0
            &&
25781
0
            (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
25782
0
        )
25783
0
        {
25784
0
            D(fprintf(stderr, "%*c+ _tmp_105[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT"));
25785
0
            _res = _PyPegen_dummy_name(p, newline_var, indent_var);
25786
0
            goto done;
25787
0
        }
25788
0
        p->mark = _mark;
25789
0
        D(fprintf(stderr, "%*c%s _tmp_105[%d-%d]: %s failed!\n", p->level, ' ',
25790
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE INDENT"));
25791
0
    }
25792
0
    _res = NULL;
25793
0
  done:
25794
0
    p->level--;
25795
0
    return _res;
25796
0
}
25797
25798
// _tmp_178: star_targets '='
25799
static void *
25800
_tmp_178_rule(Parser *p)
25801
279k
{
25802
279k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
25803
0
        _Pypegen_stack_overflow(p);
25804
0
    }
25805
279k
    if (p->error_indicator) {
25806
0
        p->level--;
25807
0
        return NULL;
25808
0
    }
25809
279k
    void * _res = NULL;
25810
279k
    int _mark = p->mark;
25811
279k
    { // star_targets '='
25812
279k
        if (p->error_indicator) {
25813
0
            p->level--;
25814
0
            return NULL;
25815
0
        }
25816
279k
        D(fprintf(stderr, "%*c> _tmp_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
25817
279k
        Token * _literal;
25818
279k
        expr_ty z;
25819
279k
        if (
25820
279k
            (z = star_targets_rule(p))  // star_targets
25821
82.7k
            &&
25822
82.7k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
25823
279k
        )
25824
5.40k
        {
25825
5.40k
            D(fprintf(stderr, "%*c+ _tmp_178[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
25826
5.40k
            _res = z;
25827
5.40k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
25828
0
                p->error_indicator = 1;
25829
0
                p->level--;
25830
0
                return NULL;
25831
0
            }
25832
5.40k
            goto done;
25833
5.40k
        }
25834
274k
        p->mark = _mark;
25835
274k
        D(fprintf(stderr, "%*c%s _tmp_178[%d-%d]: %s failed!\n", p->level, ' ',
25836
274k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='"));
25837
274k
    }
25838
274k
    _res = NULL;
25839
279k
  done:
25840
279k
    p->level--;
25841
279k
    return _res;
25842
274k
}
25843
25844
// _tmp_179: '.' | '...'
25845
static void *
25846
_tmp_179_rule(Parser *p)
25847
26.8k
{
25848
26.8k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
25849
0
        _Pypegen_stack_overflow(p);
25850
0
    }
25851
26.8k
    if (p->error_indicator) {
25852
0
        p->level--;
25853
0
        return NULL;
25854
0
    }
25855
26.8k
    void * _res = NULL;
25856
26.8k
    int _mark = p->mark;
25857
26.8k
    { // '.'
25858
26.8k
        if (p->error_indicator) {
25859
0
            p->level--;
25860
0
            return NULL;
25861
0
        }
25862
26.8k
        D(fprintf(stderr, "%*c> _tmp_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
25863
26.8k
        Token * _literal;
25864
26.8k
        if (
25865
26.8k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
25866
26.8k
        )
25867
12.6k
        {
25868
12.6k
            D(fprintf(stderr, "%*c+ _tmp_179[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
25869
12.6k
            _res = _literal;
25870
12.6k
            goto done;
25871
12.6k
        }
25872
14.1k
        p->mark = _mark;
25873
14.1k
        D(fprintf(stderr, "%*c%s _tmp_179[%d-%d]: %s failed!\n", p->level, ' ',
25874
14.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
25875
14.1k
    }
25876
0
    { // '...'
25877
14.1k
        if (p->error_indicator) {
25878
8
            p->level--;
25879
8
            return NULL;
25880
8
        }
25881
14.1k
        D(fprintf(stderr, "%*c> _tmp_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
25882
14.1k
        Token * _literal;
25883
14.1k
        if (
25884
14.1k
            (_literal = _PyPegen_expect_token(p, 52))  // token='...'
25885
14.1k
        )
25886
5.69k
        {
25887
5.69k
            D(fprintf(stderr, "%*c+ _tmp_179[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
25888
5.69k
            _res = _literal;
25889
5.69k
            goto done;
25890
5.69k
        }
25891
8.48k
        p->mark = _mark;
25892
8.48k
        D(fprintf(stderr, "%*c%s _tmp_179[%d-%d]: %s failed!\n", p->level, ' ',
25893
8.48k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
25894
8.48k
    }
25895
8.48k
    _res = NULL;
25896
26.8k
  done:
25897
26.8k
    p->level--;
25898
26.8k
    return _res;
25899
8.48k
}
25900
25901
// _tmp_180: '@' named_expression NEWLINE
25902
static void *
25903
_tmp_180_rule(Parser *p)
25904
19.1k
{
25905
19.1k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
25906
0
        _Pypegen_stack_overflow(p);
25907
0
    }
25908
19.1k
    if (p->error_indicator) {
25909
0
        p->level--;
25910
0
        return NULL;
25911
0
    }
25912
19.1k
    void * _res = NULL;
25913
19.1k
    int _mark = p->mark;
25914
19.1k
    { // '@' named_expression NEWLINE
25915
19.1k
        if (p->error_indicator) {
25916
0
            p->level--;
25917
0
            return NULL;
25918
0
        }
25919
19.1k
        D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE"));
25920
19.1k
        Token * _literal;
25921
19.1k
        expr_ty f;
25922
19.1k
        Token * newline_var;
25923
19.1k
        if (
25924
19.1k
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
25925
4.37k
            &&
25926
4.37k
            (f = named_expression_rule(p))  // named_expression
25927
4.25k
            &&
25928
4.25k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25929
19.1k
        )
25930
4.19k
        {
25931
4.19k
            D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE"));
25932
4.19k
            _res = f;
25933
4.19k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
25934
0
                p->error_indicator = 1;
25935
0
                p->level--;
25936
0
                return NULL;
25937
0
            }
25938
4.19k
            goto done;
25939
4.19k
        }
25940
14.9k
        p->mark = _mark;
25941
14.9k
        D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ',
25942
14.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@' named_expression NEWLINE"));
25943
14.9k
    }
25944
14.9k
    _res = NULL;
25945
19.1k
  done:
25946
19.1k
    p->level--;
25947
19.1k
    return _res;
25948
14.9k
}
25949
25950
// _tmp_181: ',' star_expression
25951
static void *
25952
_tmp_181_rule(Parser *p)
25953
245k
{
25954
245k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
25955
0
        _Pypegen_stack_overflow(p);
25956
0
    }
25957
245k
    if (p->error_indicator) {
25958
0
        p->level--;
25959
0
        return NULL;
25960
0
    }
25961
245k
    void * _res = NULL;
25962
245k
    int _mark = p->mark;
25963
245k
    { // ',' star_expression
25964
245k
        if (p->error_indicator) {
25965
0
            p->level--;
25966
0
            return NULL;
25967
0
        }
25968
245k
        D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression"));
25969
245k
        Token * _literal;
25970
245k
        expr_ty c;
25971
245k
        if (
25972
245k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
25973
20.6k
            &&
25974
20.6k
            (c = star_expression_rule(p))  // star_expression
25975
245k
        )
25976
16.4k
        {
25977
16.4k
            D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression"));
25978
16.4k
            _res = c;
25979
16.4k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
25980
0
                p->error_indicator = 1;
25981
0
                p->level--;
25982
0
                return NULL;
25983
0
            }
25984
16.4k
            goto done;
25985
16.4k
        }
25986
229k
        p->mark = _mark;
25987
229k
        D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ',
25988
229k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_expression"));
25989
229k
    }
25990
229k
    _res = NULL;
25991
245k
  done:
25992
245k
    p->level--;
25993
245k
    return _res;
25994
229k
}
25995
25996
// _tmp_182: 'or' conjunction
25997
static void *
25998
_tmp_182_rule(Parser *p)
25999
143k
{
26000
143k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
26001
0
        _Pypegen_stack_overflow(p);
26002
0
    }
26003
143k
    if (p->error_indicator) {
26004
0
        p->level--;
26005
0
        return NULL;
26006
0
    }
26007
143k
    void * _res = NULL;
26008
143k
    int _mark = p->mark;
26009
143k
    { // 'or' conjunction
26010
143k
        if (p->error_indicator) {
26011
0
            p->level--;
26012
0
            return NULL;
26013
0
        }
26014
143k
        D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction"));
26015
143k
        Token * _keyword;
26016
143k
        expr_ty c;
26017
143k
        if (
26018
143k
            (_keyword = _PyPegen_expect_token(p, 529))  // token='or'
26019
4.64k
            &&
26020
4.64k
            (c = conjunction_rule(p))  // conjunction
26021
143k
        )
26022
4.11k
        {
26023
4.11k
            D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction"));
26024
4.11k
            _res = c;
26025
4.11k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
26026
0
                p->error_indicator = 1;
26027
0
                p->level--;
26028
0
                return NULL;
26029
0
            }
26030
4.11k
            goto done;
26031
4.11k
        }
26032
139k
        p->mark = _mark;
26033
139k
        D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ',
26034
139k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'or' conjunction"));
26035
139k
    }
26036
139k
    _res = NULL;
26037
143k
  done:
26038
143k
    p->level--;
26039
143k
    return _res;
26040
139k
}
26041
26042
// _tmp_183: 'and' inversion
26043
static void *
26044
_tmp_183_rule(Parser *p)
26045
145k
{
26046
145k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
26047
0
        _Pypegen_stack_overflow(p);
26048
0
    }
26049
145k
    if (p->error_indicator) {
26050
0
        p->level--;
26051
0
        return NULL;
26052
0
    }
26053
145k
    void * _res = NULL;
26054
145k
    int _mark = p->mark;
26055
145k
    { // 'and' inversion
26056
145k
        if (p->error_indicator) {
26057
0
            p->level--;
26058
0
            return NULL;
26059
0
        }
26060
145k
        D(fprintf(stderr, "%*c> _tmp_183[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion"));
26061
145k
        Token * _keyword;
26062
145k
        expr_ty c;
26063
145k
        if (
26064
145k
            (_keyword = _PyPegen_expect_token(p, 530))  // token='and'
26065
2.34k
            &&
26066
2.34k
            (c = inversion_rule(p))  // inversion
26067
145k
        )
26068
2.00k
        {
26069
2.00k
            D(fprintf(stderr, "%*c+ _tmp_183[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion"));
26070
2.00k
            _res = c;
26071
2.00k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
26072
0
                p->error_indicator = 1;
26073
0
                p->level--;
26074
0
                return NULL;
26075
0
            }
26076
2.00k
            goto done;
26077
2.00k
        }
26078
143k
        p->mark = _mark;
26079
143k
        D(fprintf(stderr, "%*c%s _tmp_183[%d-%d]: %s failed!\n", p->level, ' ',
26080
143k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'and' inversion"));
26081
143k
    }
26082
143k
    _res = NULL;
26083
145k
  done:
26084
145k
    p->level--;
26085
145k
    return _res;
26086
143k
}
26087
26088
// _tmp_184: slice | starred_expression
26089
static void *
26090
_tmp_184_rule(Parser *p)
26091
11.6k
{
26092
11.6k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
26093
0
        _Pypegen_stack_overflow(p);
26094
0
    }
26095
11.6k
    if (p->error_indicator) {
26096
0
        p->level--;
26097
0
        return NULL;
26098
0
    }
26099
11.6k
    void * _res = NULL;
26100
11.6k
    int _mark = p->mark;
26101
11.6k
    { // slice
26102
11.6k
        if (p->error_indicator) {
26103
0
            p->level--;
26104
0
            return NULL;
26105
0
        }
26106
11.6k
        D(fprintf(stderr, "%*c> _tmp_184[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice"));
26107
11.6k
        expr_ty slice_var;
26108
11.6k
        if (
26109
11.6k
            (slice_var = slice_rule(p))  // slice
26110
11.6k
        )
26111
8.47k
        {
26112
8.47k
            D(fprintf(stderr, "%*c+ _tmp_184[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice"));
26113
8.47k
            _res = slice_var;
26114
8.47k
            goto done;
26115
8.47k
        }
26116
3.20k
        p->mark = _mark;
26117
3.20k
        D(fprintf(stderr, "%*c%s _tmp_184[%d-%d]: %s failed!\n", p->level, ' ',
26118
3.20k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice"));
26119
3.20k
    }
26120
0
    { // starred_expression
26121
3.20k
        if (p->error_indicator) {
26122
211
            p->level--;
26123
211
            return NULL;
26124
211
        }
26125
2.99k
        D(fprintf(stderr, "%*c> _tmp_184[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
26126
2.99k
        expr_ty starred_expression_var;
26127
2.99k
        if (
26128
2.99k
            (starred_expression_var = starred_expression_rule(p))  // starred_expression
26129
2.99k
        )
26130
1.10k
        {
26131
1.10k
            D(fprintf(stderr, "%*c+ _tmp_184[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
26132
1.10k
            _res = starred_expression_var;
26133
1.10k
            goto done;
26134
1.10k
        }
26135
1.89k
        p->mark = _mark;
26136
1.89k
        D(fprintf(stderr, "%*c%s _tmp_184[%d-%d]: %s failed!\n", p->level, ' ',
26137
1.89k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
26138
1.89k
    }
26139
1.89k
    _res = NULL;
26140
11.4k
  done:
26141
11.4k
    p->level--;
26142
11.4k
    return _res;
26143
1.89k
}
26144
26145
// _tmp_185: fstring | string
26146
static void *
26147
_tmp_185_rule(Parser *p)
26148
140k
{
26149
140k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
26150
1
        _Pypegen_stack_overflow(p);
26151
1
    }
26152
140k
    if (p->error_indicator) {
26153
1
        p->level--;
26154
1
        return NULL;
26155
1
    }
26156
140k
    void * _res = NULL;
26157
140k
    int _mark = p->mark;
26158
140k
    { // fstring
26159
140k
        if (p->error_indicator) {
26160
0
            p->level--;
26161
0
            return NULL;
26162
0
        }
26163
140k
        D(fprintf(stderr, "%*c> _tmp_185[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring"));
26164
140k
        expr_ty fstring_var;
26165
140k
        if (
26166
140k
            (fstring_var = fstring_rule(p))  // fstring
26167
140k
        )
26168
13.5k
        {
26169
13.5k
            D(fprintf(stderr, "%*c+ _tmp_185[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "fstring"));
26170
13.5k
            _res = fstring_var;
26171
13.5k
            goto done;
26172
13.5k
        }
26173
126k
        p->mark = _mark;
26174
126k
        D(fprintf(stderr, "%*c%s _tmp_185[%d-%d]: %s failed!\n", p->level, ' ',
26175
126k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring"));
26176
126k
    }
26177
0
    { // string
26178
126k
        if (p->error_indicator) {
26179
839
            p->level--;
26180
839
            return NULL;
26181
839
        }
26182
126k
        D(fprintf(stderr, "%*c> _tmp_185[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "string"));
26183
126k
        expr_ty string_var;
26184
126k
        if (
26185
126k
            (string_var = string_rule(p))  // string
26186
126k
        )
26187
45.4k
        {
26188
45.4k
            D(fprintf(stderr, "%*c+ _tmp_185[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "string"));
26189
45.4k
            _res = string_var;
26190
45.4k
            goto done;
26191
45.4k
        }
26192
80.6k
        p->mark = _mark;
26193
80.6k
        D(fprintf(stderr, "%*c%s _tmp_185[%d-%d]: %s failed!\n", p->level, ' ',
26194
80.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "string"));
26195
80.6k
    }
26196
80.6k
    _res = NULL;
26197
139k
  done:
26198
139k
    p->level--;
26199
139k
    return _res;
26200
80.6k
}
26201
26202
// _tmp_186: 'if' disjunction
26203
static void *
26204
_tmp_186_rule(Parser *p)
26205
11.7k
{
26206
11.7k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
26207
0
        _Pypegen_stack_overflow(p);
26208
0
    }
26209
11.7k
    if (p->error_indicator) {
26210
0
        p->level--;
26211
0
        return NULL;
26212
0
    }
26213
11.7k
    void * _res = NULL;
26214
11.7k
    int _mark = p->mark;
26215
11.7k
    { // 'if' disjunction
26216
11.7k
        if (p->error_indicator) {
26217
0
            p->level--;
26218
0
            return NULL;
26219
0
        }
26220
11.7k
        D(fprintf(stderr, "%*c> _tmp_186[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
26221
11.7k
        Token * _keyword;
26222
11.7k
        expr_ty z;
26223
11.7k
        if (
26224
11.7k
            (_keyword = _PyPegen_expect_token(p, 514))  // token='if'
26225
4.94k
            &&
26226
4.94k
            (z = disjunction_rule(p))  // disjunction
26227
11.7k
        )
26228
3.85k
        {
26229
3.85k
            D(fprintf(stderr, "%*c+ _tmp_186[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
26230
3.85k
            _res = z;
26231
3.85k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
26232
0
                p->error_indicator = 1;
26233
0
                p->level--;
26234
0
                return NULL;
26235
0
            }
26236
3.85k
            goto done;
26237
3.85k
        }
26238
7.90k
        p->mark = _mark;
26239
7.90k
        D(fprintf(stderr, "%*c%s _tmp_186[%d-%d]: %s failed!\n", p->level, ' ',
26240
7.90k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction"));
26241
7.90k
    }
26242
7.90k
    _res = NULL;
26243
11.7k
  done:
26244
11.7k
    p->level--;
26245
11.7k
    return _res;
26246
7.90k
}
26247
26248
// _tmp_187: starred_expression | (assignment_expression | expression !':=') !'='
26249
static void *
26250
_tmp_187_rule(Parser *p)
26251
80.1k
{
26252
80.1k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
26253
0
        _Pypegen_stack_overflow(p);
26254
0
    }
26255
80.1k
    if (p->error_indicator) {
26256
0
        p->level--;
26257
0
        return NULL;
26258
0
    }
26259
80.1k
    void * _res = NULL;
26260
80.1k
    int _mark = p->mark;
26261
80.1k
    { // starred_expression
26262
80.1k
        if (p->error_indicator) {
26263
0
            p->level--;
26264
0
            return NULL;
26265
0
        }
26266
80.1k
        D(fprintf(stderr, "%*c> _tmp_187[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
26267
80.1k
        expr_ty starred_expression_var;
26268
80.1k
        if (
26269
80.1k
            (starred_expression_var = starred_expression_rule(p))  // starred_expression
26270
80.1k
        )
26271
3.74k
        {
26272
3.74k
            D(fprintf(stderr, "%*c+ _tmp_187[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
26273
3.74k
            _res = starred_expression_var;
26274
3.74k
            goto done;
26275
3.74k
        }
26276
76.4k
        p->mark = _mark;
26277
76.4k
        D(fprintf(stderr, "%*c%s _tmp_187[%d-%d]: %s failed!\n", p->level, ' ',
26278
76.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
26279
76.4k
    }
26280
0
    { // (assignment_expression | expression !':=') !'='
26281
76.4k
        if (p->error_indicator) {
26282
123
            p->level--;
26283
123
            return NULL;
26284
123
        }
26285
76.2k
        D(fprintf(stderr, "%*c> _tmp_187[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
26286
76.2k
        void *_tmp_200_var;
26287
76.2k
        if (
26288
76.2k
            (_tmp_200_var = _tmp_200_rule(p))  // assignment_expression | expression !':='
26289
47.9k
            &&
26290
47.9k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22)  // token='='
26291
76.2k
        )
26292
38.7k
        {
26293
38.7k
            D(fprintf(stderr, "%*c+ _tmp_187[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
26294
38.7k
            _res = _tmp_200_var;
26295
38.7k
            goto done;
26296
38.7k
        }
26297
37.5k
        p->mark = _mark;
26298
37.5k
        D(fprintf(stderr, "%*c%s _tmp_187[%d-%d]: %s failed!\n", p->level, ' ',
26299
37.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
26300
37.5k
    }
26301
37.5k
    _res = NULL;
26302
80.0k
  done:
26303
80.0k
    p->level--;
26304
80.0k
    return _res;
26305
37.5k
}
26306
26307
// _tmp_188: ',' star_target
26308
static void *
26309
_tmp_188_rule(Parser *p)
26310
11.4k
{
26311
11.4k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
26312
0
        _Pypegen_stack_overflow(p);
26313
0
    }
26314
11.4k
    if (p->error_indicator) {
26315
0
        p->level--;
26316
0
        return NULL;
26317
0
    }
26318
11.4k
    void * _res = NULL;
26319
11.4k
    int _mark = p->mark;
26320
11.4k
    { // ',' star_target
26321
11.4k
        if (p->error_indicator) {
26322
0
            p->level--;
26323
0
            return NULL;
26324
0
        }
26325
11.4k
        D(fprintf(stderr, "%*c> _tmp_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
26326
11.4k
        Token * _literal;
26327
11.4k
        expr_ty c;
26328
11.4k
        if (
26329
11.4k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
26330
8.97k
            &&
26331
8.97k
            (c = star_target_rule(p))  // star_target
26332
11.4k
        )
26333
5.09k
        {
26334
5.09k
            D(fprintf(stderr, "%*c+ _tmp_188[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target"));
26335
5.09k
            _res = c;
26336
5.09k
            if ((_res == NULL || p->error_indicator) && PyErr_Occurred()) {
26337
0
                p->error_indicator = 1;
26338
0
                p->level--;
26339
0
                return NULL;
26340
0
            }
26341
5.09k
            goto done;
26342
5.09k
        }
26343
6.31k
        p->mark = _mark;
26344
6.31k
        D(fprintf(stderr, "%*c%s _tmp_188[%d-%d]: %s failed!\n", p->level, ' ',
26345
6.31k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
26346
6.31k
    }
26347
6.31k
    _res = NULL;
26348
11.4k
  done:
26349
11.4k
    p->level--;
26350
11.4k
    return _res;
26351
6.31k
}
26352
26353
// _tmp_200: assignment_expression | expression !':='
26354
static void *
26355
_tmp_200_rule(Parser *p)
26356
76.2k
{
26357
76.2k
    if (p->level++ == MAXSTACK || _PyPegen_stack_exhausted(p)) {
26358
0
        _Pypegen_stack_overflow(p);
26359
0
    }
26360
76.2k
    if (p->error_indicator) {
26361
0
        p->level--;
26362
0
        return NULL;
26363
0
    }
26364
76.2k
    void * _res = NULL;
26365
76.2k
    int _mark = p->mark;
26366
76.2k
    { // assignment_expression
26367
76.2k
        if (p->error_indicator) {
26368
0
            p->level--;
26369
0
            return NULL;
26370
0
        }
26371
76.2k
        D(fprintf(stderr, "%*c> _tmp_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
26372
76.2k
        expr_ty assignment_expression_var;
26373
76.2k
        if (
26374
76.2k
            (assignment_expression_var = assignment_expression_rule(p))  // assignment_expression
26375
76.2k
        )
26376
1.46k
        {
26377
1.46k
            D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
26378
1.46k
            _res = assignment_expression_var;
26379
1.46k
            goto done;
26380
1.46k
        }
26381
74.8k
        p->mark = _mark;
26382
74.8k
        D(fprintf(stderr, "%*c%s _tmp_200[%d-%d]: %s failed!\n", p->level, ' ',
26383
74.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression"));
26384
74.8k
    }
26385
0
    { // expression !':='
26386
74.8k
        if (p->error_indicator) {
26387
254
            p->level--;
26388
254
            return NULL;
26389
254
        }
26390
74.5k
        D(fprintf(stderr, "%*c> _tmp_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
26391
74.5k
        expr_ty expression_var;
26392
74.5k
        if (
26393
74.5k
            (expression_var = expression_rule(p))  // expression
26394
47.0k
            &&
26395
47.0k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53)  // token=':='
26396
74.5k
        )
26397
46.4k
        {
26398
46.4k
            D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='"));
26399
46.4k
            _res = expression_var;
26400
46.4k
            goto done;
26401
46.4k
        }
26402
28.1k
        p->mark = _mark;
26403
28.1k
        D(fprintf(stderr, "%*c%s _tmp_200[%d-%d]: %s failed!\n", p->level, ' ',
26404
28.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
26405
28.1k
    }
26406
28.1k
    _res = NULL;
26407
76.0k
  done:
26408
76.0k
    p->level--;
26409
76.0k
    return _res;
26410
28.1k
}
26411
26412
void *
26413
_PyPegen_parse(Parser *p)
26414
138k
{
26415
    // Initialize keywords
26416
138k
    p->keywords = reserved_keywords;
26417
138k
    p->n_keyword_lists = n_keyword_lists;
26418
138k
    p->soft_keywords = soft_keywords;
26419
26420
    // Run parser
26421
138k
    void *result = NULL;
26422
138k
    if (p->start_rule == Py_file_input) {
26423
138k
        result = file_rule(p);
26424
138k
    } else if (p->start_rule == Py_single_input) {
26425
0
        result = interactive_rule(p);
26426
172
    } else if (p->start_rule == Py_eval_input) {
26427
172
        result = eval_rule(p);
26428
172
    } else if (p->start_rule == Py_func_type_input) {
26429
0
        result = func_type_rule(p);
26430
0
    }
26431
26432
138k
    return result;
26433
138k
}