Coverage Report

Created: 2025-07-04 06:49

/src/cpython/Parser/parser.c
Line
Count
Source (jump to first uncovered line)
1
// @generated by pegen from python.gram
2
#include "pegen.h"
3
4
#if defined(Py_DEBUG) && defined(Py_BUILD_CORE)
5
#  define D(x) if (p->debug) { x; }
6
#else
7
#  define D(x)
8
#endif
9
10
#ifdef __wasi__
11
#  ifdef Py_DEBUG
12
#    define MAXSTACK 1000
13
#  else
14
#    define MAXSTACK 4000
15
#  endif
16
#else
17
172M
#  define MAXSTACK 6000
18
#endif
19
static const int n_keyword_lists = 9;
20
static KeywordToken *reserved_keywords[] = {
21
    (KeywordToken[]) {{NULL, -1}},
22
    (KeywordToken[]) {{NULL, -1}},
23
    (KeywordToken[]) {
24
        {"if", 687},
25
        {"as", 685},
26
        {"in", 700},
27
        {"or", 589},
28
        {"is", 597},
29
        {NULL, -1},
30
    },
31
    (KeywordToken[]) {
32
        {"del", 630},
33
        {"def", 704},
34
        {"for", 699},
35
        {"try", 661},
36
        {"and", 590},
37
        {"not", 708},
38
        {NULL, -1},
39
    },
40
    (KeywordToken[]) {
41
        {"from", 638},
42
        {"pass", 527},
43
        {"with", 652},
44
        {"elif", 692},
45
        {"else", 691},
46
        {"None", 624},
47
        {"True", 623},
48
        {NULL, -1},
49
    },
50
    (KeywordToken[]) {
51
        {"raise", 628},
52
        {"yield", 588},
53
        {"break", 528},
54
        {"async", 703},
55
        {"class", 706},
56
        {"while", 694},
57
        {"False", 625},
58
        {"await", 598},
59
        {NULL, -1},
60
    },
61
    (KeywordToken[]) {
62
        {"return", 522},
63
        {"import", 639},
64
        {"assert", 533},
65
        {"global", 530},
66
        {"except", 682},
67
        {"lambda", 622},
68
        {NULL, -1},
69
    },
70
    (KeywordToken[]) {
71
        {"finally", 678},
72
        {NULL, -1},
73
    },
74
    (KeywordToken[]) {
75
        {"continue", 529},
76
        {"nonlocal", 531},
77
        {NULL, -1},
78
    },
79
};
80
static char *soft_keywords[] = {
81
    "_",
82
    "case",
83
    "match",
84
    "type",
85
    NULL,
86
};
87
#define file_type 1000
88
#define interactive_type 1001
89
#define eval_type 1002
90
#define func_type_type 1003
91
#define statements_type 1004
92
#define statement_type 1005
93
#define single_compound_stmt_type 1006
94
#define statement_newline_type 1007
95
#define simple_stmts_type 1008
96
421k
#define simple_stmt_type 1009
97
#define compound_stmt_type 1010
98
#define assignment_type 1011
99
#define annotated_rhs_type 1012
100
#define augassign_type 1013
101
#define return_stmt_type 1014
102
#define raise_stmt_type 1015
103
#define pass_stmt_type 1016
104
#define break_stmt_type 1017
105
#define continue_stmt_type 1018
106
#define global_stmt_type 1019
107
#define nonlocal_stmt_type 1020
108
#define del_stmt_type 1021
109
#define yield_stmt_type 1022
110
#define assert_stmt_type 1023
111
#define import_stmt_type 1024
112
#define import_name_type 1025
113
#define import_from_type 1026
114
#define import_from_targets_type 1027
115
#define import_from_as_names_type 1028
116
#define import_from_as_name_type 1029
117
#define dotted_as_names_type 1030
118
#define dotted_as_name_type 1031
119
57.3k
#define dotted_name_type 1032  // Left-recursive
120
136k
#define block_type 1033
121
#define decorators_type 1034
122
#define class_def_type 1035
123
#define class_def_raw_type 1036
124
#define function_def_type 1037
125
#define function_def_raw_type 1038
126
#define params_type 1039
127
#define parameters_type 1040
128
#define slash_no_default_type 1041
129
#define slash_with_default_type 1042
130
#define star_etc_type 1043
131
#define kwds_type 1044
132
#define param_no_default_type 1045
133
#define param_no_default_star_annotation_type 1046
134
#define param_with_default_type 1047
135
#define param_maybe_default_type 1048
136
#define param_type 1049
137
#define param_star_annotation_type 1050
138
#define annotation_type 1051
139
#define star_annotation_type 1052
140
#define default_type 1053
141
#define if_stmt_type 1054
142
#define elif_stmt_type 1055
143
#define else_block_type 1056
144
#define while_stmt_type 1057
145
#define for_stmt_type 1058
146
#define with_stmt_type 1059
147
#define with_item_type 1060
148
#define try_stmt_type 1061
149
#define except_block_type 1062
150
#define except_star_block_type 1063
151
#define finally_block_type 1064
152
#define match_stmt_type 1065
153
#define subject_expr_type 1066
154
#define case_block_type 1067
155
#define guard_type 1068
156
#define patterns_type 1069
157
#define pattern_type 1070
158
#define as_pattern_type 1071
159
#define or_pattern_type 1072
160
333k
#define closed_pattern_type 1073
161
#define literal_pattern_type 1074
162
#define literal_expr_type 1075
163
#define complex_number_type 1076
164
#define signed_number_type 1077
165
#define signed_real_number_type 1078
166
#define real_number_type 1079
167
#define imaginary_number_type 1080
168
#define capture_pattern_type 1081
169
#define pattern_capture_target_type 1082
170
#define wildcard_pattern_type 1083
171
#define value_pattern_type 1084
172
173k
#define attr_type 1085  // Left-recursive
173
#define name_or_attr_type 1086  // Left-recursive
174
#define group_pattern_type 1087
175
#define sequence_pattern_type 1088
176
#define open_sequence_pattern_type 1089
177
#define maybe_sequence_pattern_type 1090
178
#define maybe_star_pattern_type 1091
179
58.8k
#define star_pattern_type 1092
180
#define mapping_pattern_type 1093
181
#define items_pattern_type 1094
182
#define key_value_pattern_type 1095
183
#define double_star_pattern_type 1096
184
#define class_pattern_type 1097
185
#define positional_patterns_type 1098
186
#define keyword_patterns_type 1099
187
#define keyword_pattern_type 1100
188
#define type_alias_type 1101
189
#define type_params_type 1102
190
#define type_param_seq_type 1103
191
21.1k
#define type_param_type 1104
192
#define type_param_bound_type 1105
193
#define type_param_default_type 1106
194
#define type_param_starred_default_type 1107
195
#define expressions_type 1108
196
2.47M
#define expression_type 1109
197
#define yield_expr_type 1110
198
#define star_expressions_type 1111
199
1.44M
#define star_expression_type 1112
200
#define star_named_expressions_type 1113
201
#define star_named_expression_type 1114
202
#define assignment_expression_type 1115
203
#define named_expression_type 1116
204
2.77M
#define disjunction_type 1117
205
2.05M
#define conjunction_type 1118
206
2.10M
#define inversion_type 1119
207
#define comparison_type 1120
208
#define compare_op_bitwise_or_pair_type 1121
209
#define eq_bitwise_or_type 1122
210
#define noteq_bitwise_or_type 1123
211
#define lte_bitwise_or_type 1124
212
#define lt_bitwise_or_type 1125
213
#define gte_bitwise_or_type 1126
214
#define gt_bitwise_or_type 1127
215
#define notin_bitwise_or_type 1128
216
#define in_bitwise_or_type 1129
217
#define isnot_bitwise_or_type 1130
218
#define is_bitwise_or_type 1131
219
3.88M
#define bitwise_or_type 1132  // Left-recursive
220
3.55M
#define bitwise_xor_type 1133  // Left-recursive
221
3.57M
#define bitwise_and_type 1134  // Left-recursive
222
4.78M
#define shift_expr_type 1135  // Left-recursive
223
5.13M
#define sum_type 1136  // Left-recursive
224
8.79M
#define term_type 1137  // Left-recursive
225
2.46M
#define factor_type 1138
226
#define power_type 1139
227
2.38M
#define await_primary_type 1140
228
7.48M
#define primary_type 1141  // Left-recursive
229
#define slices_type 1142
230
#define slice_type 1143
231
#define atom_type 1144
232
#define group_type 1145
233
#define lambdef_type 1146
234
#define lambda_params_type 1147
235
#define lambda_parameters_type 1148
236
#define lambda_slash_no_default_type 1149
237
#define lambda_slash_with_default_type 1150
238
#define lambda_star_etc_type 1151
239
#define lambda_kwds_type 1152
240
#define lambda_param_no_default_type 1153
241
#define lambda_param_with_default_type 1154
242
#define lambda_param_maybe_default_type 1155
243
#define lambda_param_type 1156
244
#define fstring_middle_type 1157
245
#define fstring_replacement_field_type 1158
246
#define fstring_conversion_type 1159
247
#define fstring_full_format_spec_type 1160
248
#define fstring_format_spec_type 1161
249
#define fstring_type 1162
250
#define tstring_format_spec_replacement_field_type 1163
251
#define tstring_format_spec_type 1164
252
#define tstring_full_format_spec_type 1165
253
#define tstring_replacement_field_type 1166
254
#define tstring_middle_type 1167
255
203k
#define tstring_type 1168
256
#define string_type 1169
257
260k
#define strings_type 1170
258
#define list_type 1171
259
#define tuple_type 1172
260
#define set_type 1173
261
#define dict_type 1174
262
#define double_starred_kvpairs_type 1175
263
#define double_starred_kvpair_type 1176
264
#define kvpair_type 1177
265
#define for_if_clauses_type 1178
266
#define for_if_clause_type 1179
267
#define listcomp_type 1180
268
#define setcomp_type 1181
269
#define genexp_type 1182
270
#define dictcomp_type 1183
271
105k
#define arguments_type 1184
272
#define args_type 1185
273
#define kwargs_type 1186
274
#define starred_expression_type 1187
275
#define kwarg_or_starred_type 1188
276
#define kwarg_or_double_starred_type 1189
277
#define star_targets_type 1190
278
#define star_targets_list_seq_type 1191
279
#define star_targets_tuple_seq_type 1192
280
779k
#define star_target_type 1193
281
531k
#define target_with_star_atom_type 1194
282
#define star_atom_type 1195
283
#define single_target_type 1196
284
#define single_subscript_attribute_target_type 1197
285
2.80M
#define t_primary_type 1198  // Left-recursive
286
#define t_lookahead_type 1199
287
#define del_targets_type 1200
288
27.6k
#define del_target_type 1201
289
#define del_t_atom_type 1202
290
#define type_expressions_type 1203
291
#define func_type_comment_type 1204
292
#define invalid_arguments_type 1205
293
#define invalid_kwarg_type 1206
294
#define expression_without_invalid_type 1207
295
#define invalid_legacy_expression_type 1208
296
#define invalid_type_param_type 1209
297
#define invalid_expression_type 1210
298
366k
#define invalid_named_expression_type 1211
299
#define invalid_assignment_type 1212
300
#define invalid_ann_assign_target_type 1213
301
#define invalid_raise_stmt_type 1214
302
#define invalid_del_stmt_type 1215
303
#define invalid_block_type 1216
304
#define invalid_comprehension_type 1217
305
#define invalid_dict_comprehension_type 1218
306
#define invalid_parameters_type 1219
307
#define invalid_default_type 1220
308
#define invalid_star_etc_type 1221
309
#define invalid_kwds_type 1222
310
#define invalid_parameters_helper_type 1223
311
#define invalid_lambda_parameters_type 1224
312
#define invalid_lambda_parameters_helper_type 1225
313
#define invalid_lambda_star_etc_type 1226
314
#define invalid_lambda_kwds_type 1227
315
#define invalid_double_type_comments_type 1228
316
#define invalid_with_item_type 1229
317
#define invalid_for_if_clause_type 1230
318
#define invalid_for_target_type 1231
319
#define invalid_group_type 1232
320
#define invalid_import_type 1233
321
#define invalid_dotted_as_name_type 1234
322
#define invalid_import_from_as_name_type 1235
323
#define invalid_import_from_targets_type 1236
324
#define invalid_with_stmt_type 1237
325
#define invalid_with_stmt_indent_type 1238
326
#define invalid_try_stmt_type 1239
327
#define invalid_except_stmt_type 1240
328
#define invalid_except_star_stmt_type 1241
329
#define invalid_finally_stmt_type 1242
330
#define invalid_except_stmt_indent_type 1243
331
#define invalid_except_star_stmt_indent_type 1244
332
#define invalid_match_stmt_type 1245
333
#define invalid_case_block_type 1246
334
#define invalid_as_pattern_type 1247
335
#define invalid_class_pattern_type 1248
336
#define invalid_class_argument_pattern_type 1249
337
#define invalid_if_stmt_type 1250
338
#define invalid_elif_stmt_type 1251
339
#define invalid_else_stmt_type 1252
340
#define invalid_while_stmt_type 1253
341
#define invalid_for_stmt_type 1254
342
#define invalid_def_raw_type 1255
343
#define invalid_class_def_raw_type 1256
344
#define invalid_double_starred_kvpairs_type 1257
345
#define invalid_kvpair_type 1258
346
#define invalid_starred_expression_unpacking_type 1259
347
#define invalid_starred_expression_type 1260
348
#define invalid_fstring_replacement_field_type 1261
349
#define invalid_fstring_conversion_character_type 1262
350
#define invalid_tstring_replacement_field_type 1263
351
#define invalid_tstring_conversion_character_type 1264
352
#define invalid_arithmetic_type 1265
353
#define invalid_factor_type 1266
354
#define invalid_type_params_type 1267
355
#define _loop0_1_type 1268
356
#define _loop1_2_type 1269
357
#define _loop0_3_type 1270
358
#define _gather_4_type 1271
359
#define _tmp_5_type 1272
360
#define _tmp_6_type 1273
361
#define _tmp_7_type 1274
362
#define _tmp_8_type 1275
363
#define _tmp_9_type 1276
364
#define _tmp_10_type 1277
365
#define _tmp_11_type 1278
366
#define _loop1_12_type 1279
367
#define _loop0_13_type 1280
368
#define _gather_14_type 1281
369
#define _tmp_15_type 1282
370
#define _tmp_16_type 1283
371
#define _loop0_17_type 1284
372
#define _loop1_18_type 1285
373
#define _loop0_19_type 1286
374
#define _gather_20_type 1287
375
#define _tmp_21_type 1288
376
#define _loop0_22_type 1289
377
#define _gather_23_type 1290
378
#define _loop1_24_type 1291
379
#define _tmp_25_type 1292
380
#define _tmp_26_type 1293
381
#define _loop0_27_type 1294
382
#define _loop0_28_type 1295
383
#define _loop1_29_type 1296
384
#define _loop1_30_type 1297
385
#define _loop0_31_type 1298
386
#define _loop1_32_type 1299
387
#define _loop0_33_type 1300
388
#define _gather_34_type 1301
389
#define _tmp_35_type 1302
390
#define _loop1_36_type 1303
391
#define _loop1_37_type 1304
392
#define _loop1_38_type 1305
393
#define _loop0_39_type 1306
394
#define _gather_40_type 1307
395
#define _tmp_41_type 1308
396
#define _tmp_42_type 1309
397
#define _tmp_43_type 1310
398
#define _loop0_44_type 1311
399
#define _gather_45_type 1312
400
#define _loop0_46_type 1313
401
#define _gather_47_type 1314
402
#define _tmp_48_type 1315
403
#define _loop0_49_type 1316
404
#define _gather_50_type 1317
405
#define _loop0_51_type 1318
406
#define _gather_52_type 1319
407
#define _loop0_53_type 1320
408
#define _gather_54_type 1321
409
#define _loop1_55_type 1322
410
#define _loop1_56_type 1323
411
#define _loop0_57_type 1324
412
#define _gather_58_type 1325
413
#define _loop1_59_type 1326
414
#define _loop1_60_type 1327
415
#define _loop1_61_type 1328
416
#define _tmp_62_type 1329
417
#define _loop0_63_type 1330
418
#define _gather_64_type 1331
419
#define _tmp_65_type 1332
420
#define _tmp_66_type 1333
421
#define _tmp_67_type 1334
422
#define _tmp_68_type 1335
423
#define _tmp_69_type 1336
424
#define _loop0_70_type 1337
425
#define _loop0_71_type 1338
426
#define _loop1_72_type 1339
427
#define _loop1_73_type 1340
428
#define _loop0_74_type 1341
429
#define _loop1_75_type 1342
430
#define _loop0_76_type 1343
431
#define _loop0_77_type 1344
432
#define _loop0_78_type 1345
433
#define _loop0_79_type 1346
434
#define _loop1_80_type 1347
435
#define _tmp_81_type 1348
436
#define _loop0_82_type 1349
437
#define _gather_83_type 1350
438
#define _loop1_84_type 1351
439
#define _loop0_85_type 1352
440
#define _tmp_86_type 1353
441
#define _loop0_87_type 1354
442
#define _gather_88_type 1355
443
#define _tmp_89_type 1356
444
#define _loop0_90_type 1357
445
#define _gather_91_type 1358
446
#define _loop0_92_type 1359
447
#define _gather_93_type 1360
448
#define _loop0_94_type 1361
449
#define _loop0_95_type 1362
450
#define _gather_96_type 1363
451
#define _loop1_97_type 1364
452
#define _tmp_98_type 1365
453
#define _loop0_99_type 1366
454
#define _gather_100_type 1367
455
#define _loop0_101_type 1368
456
#define _gather_102_type 1369
457
#define _tmp_103_type 1370
458
#define _tmp_104_type 1371
459
#define _loop0_105_type 1372
460
#define _gather_106_type 1373
461
#define _tmp_107_type 1374
462
#define _tmp_108_type 1375
463
#define _tmp_109_type 1376
464
#define _tmp_110_type 1377
465
#define _tmp_111_type 1378
466
#define _loop1_112_type 1379
467
#define _tmp_113_type 1380
468
#define _tmp_114_type 1381
469
#define _tmp_115_type 1382
470
#define _tmp_116_type 1383
471
#define _tmp_117_type 1384
472
#define _loop0_118_type 1385
473
#define _loop0_119_type 1386
474
#define _tmp_120_type 1387
475
#define _tmp_121_type 1388
476
#define _tmp_122_type 1389
477
#define _tmp_123_type 1390
478
#define _tmp_124_type 1391
479
#define _tmp_125_type 1392
480
#define _tmp_126_type 1393
481
#define _tmp_127_type 1394
482
#define _tmp_128_type 1395
483
#define _loop0_129_type 1396
484
#define _gather_130_type 1397
485
#define _tmp_131_type 1398
486
#define _tmp_132_type 1399
487
#define _tmp_133_type 1400
488
#define _tmp_134_type 1401
489
#define _loop0_135_type 1402
490
#define _gather_136_type 1403
491
#define _tmp_137_type 1404
492
#define _loop0_138_type 1405
493
#define _gather_139_type 1406
494
#define _loop0_140_type 1407
495
#define _gather_141_type 1408
496
#define _tmp_142_type 1409
497
#define _loop0_143_type 1410
498
#define _tmp_144_type 1411
499
#define _tmp_145_type 1412
500
#define _tmp_146_type 1413
501
#define _tmp_147_type 1414
502
#define _tmp_148_type 1415
503
#define _tmp_149_type 1416
504
#define _tmp_150_type 1417
505
#define _tmp_151_type 1418
506
#define _tmp_152_type 1419
507
#define _tmp_153_type 1420
508
#define _tmp_154_type 1421
509
#define _tmp_155_type 1422
510
#define _tmp_156_type 1423
511
#define _tmp_157_type 1424
512
#define _tmp_158_type 1425
513
#define _tmp_159_type 1426
514
#define _tmp_160_type 1427
515
#define _tmp_161_type 1428
516
#define _tmp_162_type 1429
517
#define _tmp_163_type 1430
518
#define _tmp_164_type 1431
519
#define _tmp_165_type 1432
520
#define _tmp_166_type 1433
521
#define _tmp_167_type 1434
522
#define _tmp_168_type 1435
523
#define _tmp_169_type 1436
524
#define _loop0_170_type 1437
525
#define _tmp_171_type 1438
526
#define _tmp_172_type 1439
527
#define _tmp_173_type 1440
528
#define _tmp_174_type 1441
529
#define _tmp_175_type 1442
530
531
static mod_ty file_rule(Parser *p);
532
static mod_ty interactive_rule(Parser *p);
533
static mod_ty eval_rule(Parser *p);
534
static mod_ty func_type_rule(Parser *p);
535
static asdl_stmt_seq* statements_rule(Parser *p);
536
static asdl_stmt_seq* statement_rule(Parser *p);
537
static asdl_stmt_seq* single_compound_stmt_rule(Parser *p);
538
static asdl_stmt_seq* statement_newline_rule(Parser *p);
539
static asdl_stmt_seq* simple_stmts_rule(Parser *p);
540
static stmt_ty simple_stmt_rule(Parser *p);
541
static stmt_ty compound_stmt_rule(Parser *p);
542
static stmt_ty assignment_rule(Parser *p);
543
static expr_ty annotated_rhs_rule(Parser *p);
544
static AugOperator* augassign_rule(Parser *p);
545
static stmt_ty return_stmt_rule(Parser *p);
546
static stmt_ty raise_stmt_rule(Parser *p);
547
static stmt_ty pass_stmt_rule(Parser *p);
548
static stmt_ty break_stmt_rule(Parser *p);
549
static stmt_ty continue_stmt_rule(Parser *p);
550
static stmt_ty global_stmt_rule(Parser *p);
551
static stmt_ty nonlocal_stmt_rule(Parser *p);
552
static stmt_ty del_stmt_rule(Parser *p);
553
static stmt_ty yield_stmt_rule(Parser *p);
554
static stmt_ty assert_stmt_rule(Parser *p);
555
static stmt_ty import_stmt_rule(Parser *p);
556
static stmt_ty import_name_rule(Parser *p);
557
static stmt_ty import_from_rule(Parser *p);
558
static asdl_alias_seq* import_from_targets_rule(Parser *p);
559
static asdl_alias_seq* import_from_as_names_rule(Parser *p);
560
static alias_ty import_from_as_name_rule(Parser *p);
561
static asdl_alias_seq* dotted_as_names_rule(Parser *p);
562
static alias_ty dotted_as_name_rule(Parser *p);
563
static expr_ty dotted_name_rule(Parser *p);
564
static asdl_stmt_seq* block_rule(Parser *p);
565
static asdl_expr_seq* decorators_rule(Parser *p);
566
static stmt_ty class_def_rule(Parser *p);
567
static stmt_ty class_def_raw_rule(Parser *p);
568
static stmt_ty function_def_rule(Parser *p);
569
static stmt_ty function_def_raw_rule(Parser *p);
570
static arguments_ty params_rule(Parser *p);
571
static arguments_ty parameters_rule(Parser *p);
572
static asdl_arg_seq* slash_no_default_rule(Parser *p);
573
static SlashWithDefault* slash_with_default_rule(Parser *p);
574
static StarEtc* star_etc_rule(Parser *p);
575
static arg_ty kwds_rule(Parser *p);
576
static arg_ty param_no_default_rule(Parser *p);
577
static arg_ty param_no_default_star_annotation_rule(Parser *p);
578
static NameDefaultPair* param_with_default_rule(Parser *p);
579
static NameDefaultPair* param_maybe_default_rule(Parser *p);
580
static arg_ty param_rule(Parser *p);
581
static arg_ty param_star_annotation_rule(Parser *p);
582
static expr_ty annotation_rule(Parser *p);
583
static expr_ty star_annotation_rule(Parser *p);
584
static expr_ty default_rule(Parser *p);
585
static stmt_ty if_stmt_rule(Parser *p);
586
static stmt_ty elif_stmt_rule(Parser *p);
587
static asdl_stmt_seq* else_block_rule(Parser *p);
588
static stmt_ty while_stmt_rule(Parser *p);
589
static stmt_ty for_stmt_rule(Parser *p);
590
static stmt_ty with_stmt_rule(Parser *p);
591
static withitem_ty with_item_rule(Parser *p);
592
static stmt_ty try_stmt_rule(Parser *p);
593
static excepthandler_ty except_block_rule(Parser *p);
594
static excepthandler_ty except_star_block_rule(Parser *p);
595
static asdl_stmt_seq* finally_block_rule(Parser *p);
596
static stmt_ty match_stmt_rule(Parser *p);
597
static expr_ty subject_expr_rule(Parser *p);
598
static match_case_ty case_block_rule(Parser *p);
599
static expr_ty guard_rule(Parser *p);
600
static pattern_ty patterns_rule(Parser *p);
601
static pattern_ty pattern_rule(Parser *p);
602
static pattern_ty as_pattern_rule(Parser *p);
603
static pattern_ty or_pattern_rule(Parser *p);
604
static pattern_ty closed_pattern_rule(Parser *p);
605
static pattern_ty literal_pattern_rule(Parser *p);
606
static expr_ty literal_expr_rule(Parser *p);
607
static expr_ty complex_number_rule(Parser *p);
608
static expr_ty signed_number_rule(Parser *p);
609
static expr_ty signed_real_number_rule(Parser *p);
610
static expr_ty real_number_rule(Parser *p);
611
static expr_ty imaginary_number_rule(Parser *p);
612
static pattern_ty capture_pattern_rule(Parser *p);
613
static expr_ty pattern_capture_target_rule(Parser *p);
614
static pattern_ty wildcard_pattern_rule(Parser *p);
615
static pattern_ty value_pattern_rule(Parser *p);
616
static expr_ty attr_rule(Parser *p);
617
static expr_ty name_or_attr_rule(Parser *p);
618
static pattern_ty group_pattern_rule(Parser *p);
619
static pattern_ty sequence_pattern_rule(Parser *p);
620
static asdl_seq* open_sequence_pattern_rule(Parser *p);
621
static asdl_seq* maybe_sequence_pattern_rule(Parser *p);
622
static pattern_ty maybe_star_pattern_rule(Parser *p);
623
static pattern_ty star_pattern_rule(Parser *p);
624
static pattern_ty mapping_pattern_rule(Parser *p);
625
static asdl_seq* items_pattern_rule(Parser *p);
626
static KeyPatternPair* key_value_pattern_rule(Parser *p);
627
static expr_ty double_star_pattern_rule(Parser *p);
628
static pattern_ty class_pattern_rule(Parser *p);
629
static asdl_pattern_seq* positional_patterns_rule(Parser *p);
630
static asdl_seq* keyword_patterns_rule(Parser *p);
631
static KeyPatternPair* keyword_pattern_rule(Parser *p);
632
static stmt_ty type_alias_rule(Parser *p);
633
static asdl_type_param_seq* type_params_rule(Parser *p);
634
static asdl_type_param_seq* type_param_seq_rule(Parser *p);
635
static type_param_ty type_param_rule(Parser *p);
636
static expr_ty type_param_bound_rule(Parser *p);
637
static expr_ty type_param_default_rule(Parser *p);
638
static expr_ty type_param_starred_default_rule(Parser *p);
639
static expr_ty expressions_rule(Parser *p);
640
static expr_ty expression_rule(Parser *p);
641
static expr_ty yield_expr_rule(Parser *p);
642
static expr_ty star_expressions_rule(Parser *p);
643
static expr_ty star_expression_rule(Parser *p);
644
static asdl_expr_seq* star_named_expressions_rule(Parser *p);
645
static expr_ty star_named_expression_rule(Parser *p);
646
static expr_ty assignment_expression_rule(Parser *p);
647
static expr_ty named_expression_rule(Parser *p);
648
static expr_ty disjunction_rule(Parser *p);
649
static expr_ty conjunction_rule(Parser *p);
650
static expr_ty inversion_rule(Parser *p);
651
static expr_ty comparison_rule(Parser *p);
652
static CmpopExprPair* compare_op_bitwise_or_pair_rule(Parser *p);
653
static CmpopExprPair* eq_bitwise_or_rule(Parser *p);
654
static CmpopExprPair* noteq_bitwise_or_rule(Parser *p);
655
static CmpopExprPair* lte_bitwise_or_rule(Parser *p);
656
static CmpopExprPair* lt_bitwise_or_rule(Parser *p);
657
static CmpopExprPair* gte_bitwise_or_rule(Parser *p);
658
static CmpopExprPair* gt_bitwise_or_rule(Parser *p);
659
static CmpopExprPair* notin_bitwise_or_rule(Parser *p);
660
static CmpopExprPair* in_bitwise_or_rule(Parser *p);
661
static CmpopExprPair* isnot_bitwise_or_rule(Parser *p);
662
static CmpopExprPair* is_bitwise_or_rule(Parser *p);
663
static expr_ty bitwise_or_rule(Parser *p);
664
static expr_ty bitwise_xor_rule(Parser *p);
665
static expr_ty bitwise_and_rule(Parser *p);
666
static expr_ty shift_expr_rule(Parser *p);
667
static expr_ty sum_rule(Parser *p);
668
static expr_ty term_rule(Parser *p);
669
static expr_ty factor_rule(Parser *p);
670
static expr_ty power_rule(Parser *p);
671
static expr_ty await_primary_rule(Parser *p);
672
static expr_ty primary_rule(Parser *p);
673
static expr_ty slices_rule(Parser *p);
674
static expr_ty slice_rule(Parser *p);
675
static expr_ty atom_rule(Parser *p);
676
static expr_ty group_rule(Parser *p);
677
static expr_ty lambdef_rule(Parser *p);
678
static arguments_ty lambda_params_rule(Parser *p);
679
static arguments_ty lambda_parameters_rule(Parser *p);
680
static asdl_arg_seq* lambda_slash_no_default_rule(Parser *p);
681
static SlashWithDefault* lambda_slash_with_default_rule(Parser *p);
682
static StarEtc* lambda_star_etc_rule(Parser *p);
683
static arg_ty lambda_kwds_rule(Parser *p);
684
static arg_ty lambda_param_no_default_rule(Parser *p);
685
static NameDefaultPair* lambda_param_with_default_rule(Parser *p);
686
static NameDefaultPair* lambda_param_maybe_default_rule(Parser *p);
687
static arg_ty lambda_param_rule(Parser *p);
688
static expr_ty fstring_middle_rule(Parser *p);
689
static expr_ty fstring_replacement_field_rule(Parser *p);
690
static ResultTokenWithMetadata* fstring_conversion_rule(Parser *p);
691
static ResultTokenWithMetadata* fstring_full_format_spec_rule(Parser *p);
692
static expr_ty fstring_format_spec_rule(Parser *p);
693
static expr_ty fstring_rule(Parser *p);
694
static expr_ty tstring_format_spec_replacement_field_rule(Parser *p);
695
static expr_ty tstring_format_spec_rule(Parser *p);
696
static ResultTokenWithMetadata* tstring_full_format_spec_rule(Parser *p);
697
static expr_ty tstring_replacement_field_rule(Parser *p);
698
static expr_ty tstring_middle_rule(Parser *p);
699
static expr_ty tstring_rule(Parser *p);
700
static expr_ty string_rule(Parser *p);
701
static expr_ty strings_rule(Parser *p);
702
static expr_ty list_rule(Parser *p);
703
static expr_ty tuple_rule(Parser *p);
704
static expr_ty set_rule(Parser *p);
705
static expr_ty dict_rule(Parser *p);
706
static asdl_seq* double_starred_kvpairs_rule(Parser *p);
707
static KeyValuePair* double_starred_kvpair_rule(Parser *p);
708
static KeyValuePair* kvpair_rule(Parser *p);
709
static asdl_comprehension_seq* for_if_clauses_rule(Parser *p);
710
static comprehension_ty for_if_clause_rule(Parser *p);
711
static expr_ty listcomp_rule(Parser *p);
712
static expr_ty setcomp_rule(Parser *p);
713
static expr_ty genexp_rule(Parser *p);
714
static expr_ty dictcomp_rule(Parser *p);
715
static expr_ty arguments_rule(Parser *p);
716
static expr_ty args_rule(Parser *p);
717
static asdl_seq* kwargs_rule(Parser *p);
718
static expr_ty starred_expression_rule(Parser *p);
719
static KeywordOrStarred* kwarg_or_starred_rule(Parser *p);
720
static KeywordOrStarred* kwarg_or_double_starred_rule(Parser *p);
721
static expr_ty star_targets_rule(Parser *p);
722
static asdl_expr_seq* star_targets_list_seq_rule(Parser *p);
723
static asdl_expr_seq* star_targets_tuple_seq_rule(Parser *p);
724
static expr_ty star_target_rule(Parser *p);
725
static expr_ty target_with_star_atom_rule(Parser *p);
726
static expr_ty star_atom_rule(Parser *p);
727
static expr_ty single_target_rule(Parser *p);
728
static expr_ty single_subscript_attribute_target_rule(Parser *p);
729
static expr_ty t_primary_rule(Parser *p);
730
static void *t_lookahead_rule(Parser *p);
731
static asdl_expr_seq* del_targets_rule(Parser *p);
732
static expr_ty del_target_rule(Parser *p);
733
static expr_ty del_t_atom_rule(Parser *p);
734
static asdl_expr_seq* type_expressions_rule(Parser *p);
735
static Token* func_type_comment_rule(Parser *p);
736
static void *invalid_arguments_rule(Parser *p);
737
static void *invalid_kwarg_rule(Parser *p);
738
static expr_ty expression_without_invalid_rule(Parser *p);
739
static void *invalid_legacy_expression_rule(Parser *p);
740
static void *invalid_type_param_rule(Parser *p);
741
static void *invalid_expression_rule(Parser *p);
742
static void *invalid_named_expression_rule(Parser *p);
743
static void *invalid_assignment_rule(Parser *p);
744
static expr_ty invalid_ann_assign_target_rule(Parser *p);
745
static void *invalid_raise_stmt_rule(Parser *p);
746
static void *invalid_del_stmt_rule(Parser *p);
747
static void *invalid_block_rule(Parser *p);
748
static void *invalid_comprehension_rule(Parser *p);
749
static void *invalid_dict_comprehension_rule(Parser *p);
750
static void *invalid_parameters_rule(Parser *p);
751
static void *invalid_default_rule(Parser *p);
752
static void *invalid_star_etc_rule(Parser *p);
753
static void *invalid_kwds_rule(Parser *p);
754
static void *invalid_parameters_helper_rule(Parser *p);
755
static void *invalid_lambda_parameters_rule(Parser *p);
756
static void *invalid_lambda_parameters_helper_rule(Parser *p);
757
static void *invalid_lambda_star_etc_rule(Parser *p);
758
static void *invalid_lambda_kwds_rule(Parser *p);
759
static void *invalid_double_type_comments_rule(Parser *p);
760
static void *invalid_with_item_rule(Parser *p);
761
static void *invalid_for_if_clause_rule(Parser *p);
762
static void *invalid_for_target_rule(Parser *p);
763
static void *invalid_group_rule(Parser *p);
764
static void *invalid_import_rule(Parser *p);
765
static void *invalid_dotted_as_name_rule(Parser *p);
766
static void *invalid_import_from_as_name_rule(Parser *p);
767
static void *invalid_import_from_targets_rule(Parser *p);
768
static void *invalid_with_stmt_rule(Parser *p);
769
static void *invalid_with_stmt_indent_rule(Parser *p);
770
static void *invalid_try_stmt_rule(Parser *p);
771
static void *invalid_except_stmt_rule(Parser *p);
772
static void *invalid_except_star_stmt_rule(Parser *p);
773
static void *invalid_finally_stmt_rule(Parser *p);
774
static void *invalid_except_stmt_indent_rule(Parser *p);
775
static void *invalid_except_star_stmt_indent_rule(Parser *p);
776
static void *invalid_match_stmt_rule(Parser *p);
777
static void *invalid_case_block_rule(Parser *p);
778
static void *invalid_as_pattern_rule(Parser *p);
779
static void *invalid_class_pattern_rule(Parser *p);
780
static asdl_pattern_seq* invalid_class_argument_pattern_rule(Parser *p);
781
static void *invalid_if_stmt_rule(Parser *p);
782
static void *invalid_elif_stmt_rule(Parser *p);
783
static void *invalid_else_stmt_rule(Parser *p);
784
static void *invalid_while_stmt_rule(Parser *p);
785
static void *invalid_for_stmt_rule(Parser *p);
786
static void *invalid_def_raw_rule(Parser *p);
787
static void *invalid_class_def_raw_rule(Parser *p);
788
static void *invalid_double_starred_kvpairs_rule(Parser *p);
789
static void *invalid_kvpair_rule(Parser *p);
790
static void *invalid_starred_expression_unpacking_rule(Parser *p);
791
static void *invalid_starred_expression_rule(Parser *p);
792
static void *invalid_fstring_replacement_field_rule(Parser *p);
793
static void *invalid_fstring_conversion_character_rule(Parser *p);
794
static void *invalid_tstring_replacement_field_rule(Parser *p);
795
static void *invalid_tstring_conversion_character_rule(Parser *p);
796
static void *invalid_arithmetic_rule(Parser *p);
797
static void *invalid_factor_rule(Parser *p);
798
static void *invalid_type_params_rule(Parser *p);
799
static asdl_seq *_loop0_1_rule(Parser *p);
800
static asdl_seq *_loop1_2_rule(Parser *p);
801
static asdl_seq *_loop0_3_rule(Parser *p);
802
static asdl_seq *_gather_4_rule(Parser *p);
803
static void *_tmp_5_rule(Parser *p);
804
static void *_tmp_6_rule(Parser *p);
805
static void *_tmp_7_rule(Parser *p);
806
static void *_tmp_8_rule(Parser *p);
807
static void *_tmp_9_rule(Parser *p);
808
static void *_tmp_10_rule(Parser *p);
809
static void *_tmp_11_rule(Parser *p);
810
static asdl_seq *_loop1_12_rule(Parser *p);
811
static asdl_seq *_loop0_13_rule(Parser *p);
812
static asdl_seq *_gather_14_rule(Parser *p);
813
static void *_tmp_15_rule(Parser *p);
814
static void *_tmp_16_rule(Parser *p);
815
static asdl_seq *_loop0_17_rule(Parser *p);
816
static asdl_seq *_loop1_18_rule(Parser *p);
817
static asdl_seq *_loop0_19_rule(Parser *p);
818
static asdl_seq *_gather_20_rule(Parser *p);
819
static void *_tmp_21_rule(Parser *p);
820
static asdl_seq *_loop0_22_rule(Parser *p);
821
static asdl_seq *_gather_23_rule(Parser *p);
822
static asdl_seq *_loop1_24_rule(Parser *p);
823
static void *_tmp_25_rule(Parser *p);
824
static void *_tmp_26_rule(Parser *p);
825
static asdl_seq *_loop0_27_rule(Parser *p);
826
static asdl_seq *_loop0_28_rule(Parser *p);
827
static asdl_seq *_loop1_29_rule(Parser *p);
828
static asdl_seq *_loop1_30_rule(Parser *p);
829
static asdl_seq *_loop0_31_rule(Parser *p);
830
static asdl_seq *_loop1_32_rule(Parser *p);
831
static asdl_seq *_loop0_33_rule(Parser *p);
832
static asdl_seq *_gather_34_rule(Parser *p);
833
static void *_tmp_35_rule(Parser *p);
834
static asdl_seq *_loop1_36_rule(Parser *p);
835
static asdl_seq *_loop1_37_rule(Parser *p);
836
static asdl_seq *_loop1_38_rule(Parser *p);
837
static asdl_seq *_loop0_39_rule(Parser *p);
838
static asdl_seq *_gather_40_rule(Parser *p);
839
static void *_tmp_41_rule(Parser *p);
840
static void *_tmp_42_rule(Parser *p);
841
static void *_tmp_43_rule(Parser *p);
842
static asdl_seq *_loop0_44_rule(Parser *p);
843
static asdl_seq *_gather_45_rule(Parser *p);
844
static asdl_seq *_loop0_46_rule(Parser *p);
845
static asdl_seq *_gather_47_rule(Parser *p);
846
static void *_tmp_48_rule(Parser *p);
847
static asdl_seq *_loop0_49_rule(Parser *p);
848
static asdl_seq *_gather_50_rule(Parser *p);
849
static asdl_seq *_loop0_51_rule(Parser *p);
850
static asdl_seq *_gather_52_rule(Parser *p);
851
static asdl_seq *_loop0_53_rule(Parser *p);
852
static asdl_seq *_gather_54_rule(Parser *p);
853
static asdl_seq *_loop1_55_rule(Parser *p);
854
static asdl_seq *_loop1_56_rule(Parser *p);
855
static asdl_seq *_loop0_57_rule(Parser *p);
856
static asdl_seq *_gather_58_rule(Parser *p);
857
static asdl_seq *_loop1_59_rule(Parser *p);
858
static asdl_seq *_loop1_60_rule(Parser *p);
859
static asdl_seq *_loop1_61_rule(Parser *p);
860
static void *_tmp_62_rule(Parser *p);
861
static asdl_seq *_loop0_63_rule(Parser *p);
862
static asdl_seq *_gather_64_rule(Parser *p);
863
static void *_tmp_65_rule(Parser *p);
864
static void *_tmp_66_rule(Parser *p);
865
static void *_tmp_67_rule(Parser *p);
866
static void *_tmp_68_rule(Parser *p);
867
static void *_tmp_69_rule(Parser *p);
868
static asdl_seq *_loop0_70_rule(Parser *p);
869
static asdl_seq *_loop0_71_rule(Parser *p);
870
static asdl_seq *_loop1_72_rule(Parser *p);
871
static asdl_seq *_loop1_73_rule(Parser *p);
872
static asdl_seq *_loop0_74_rule(Parser *p);
873
static asdl_seq *_loop1_75_rule(Parser *p);
874
static asdl_seq *_loop0_76_rule(Parser *p);
875
static asdl_seq *_loop0_77_rule(Parser *p);
876
static asdl_seq *_loop0_78_rule(Parser *p);
877
static asdl_seq *_loop0_79_rule(Parser *p);
878
static asdl_seq *_loop1_80_rule(Parser *p);
879
static void *_tmp_81_rule(Parser *p);
880
static asdl_seq *_loop0_82_rule(Parser *p);
881
static asdl_seq *_gather_83_rule(Parser *p);
882
static asdl_seq *_loop1_84_rule(Parser *p);
883
static asdl_seq *_loop0_85_rule(Parser *p);
884
static void *_tmp_86_rule(Parser *p);
885
static asdl_seq *_loop0_87_rule(Parser *p);
886
static asdl_seq *_gather_88_rule(Parser *p);
887
static void *_tmp_89_rule(Parser *p);
888
static asdl_seq *_loop0_90_rule(Parser *p);
889
static asdl_seq *_gather_91_rule(Parser *p);
890
static asdl_seq *_loop0_92_rule(Parser *p);
891
static asdl_seq *_gather_93_rule(Parser *p);
892
static asdl_seq *_loop0_94_rule(Parser *p);
893
static asdl_seq *_loop0_95_rule(Parser *p);
894
static asdl_seq *_gather_96_rule(Parser *p);
895
static asdl_seq *_loop1_97_rule(Parser *p);
896
static void *_tmp_98_rule(Parser *p);
897
static asdl_seq *_loop0_99_rule(Parser *p);
898
static asdl_seq *_gather_100_rule(Parser *p);
899
static asdl_seq *_loop0_101_rule(Parser *p);
900
static asdl_seq *_gather_102_rule(Parser *p);
901
static void *_tmp_103_rule(Parser *p);
902
static void *_tmp_104_rule(Parser *p);
903
static asdl_seq *_loop0_105_rule(Parser *p);
904
static asdl_seq *_gather_106_rule(Parser *p);
905
static void *_tmp_107_rule(Parser *p);
906
static void *_tmp_108_rule(Parser *p);
907
static void *_tmp_109_rule(Parser *p);
908
static void *_tmp_110_rule(Parser *p);
909
static void *_tmp_111_rule(Parser *p);
910
static asdl_seq *_loop1_112_rule(Parser *p);
911
static void *_tmp_113_rule(Parser *p);
912
static void *_tmp_114_rule(Parser *p);
913
static void *_tmp_115_rule(Parser *p);
914
static void *_tmp_116_rule(Parser *p);
915
static void *_tmp_117_rule(Parser *p);
916
static asdl_seq *_loop0_118_rule(Parser *p);
917
static asdl_seq *_loop0_119_rule(Parser *p);
918
static void *_tmp_120_rule(Parser *p);
919
static void *_tmp_121_rule(Parser *p);
920
static void *_tmp_122_rule(Parser *p);
921
static void *_tmp_123_rule(Parser *p);
922
static void *_tmp_124_rule(Parser *p);
923
static void *_tmp_125_rule(Parser *p);
924
static void *_tmp_126_rule(Parser *p);
925
static void *_tmp_127_rule(Parser *p);
926
static void *_tmp_128_rule(Parser *p);
927
static asdl_seq *_loop0_129_rule(Parser *p);
928
static asdl_seq *_gather_130_rule(Parser *p);
929
static void *_tmp_131_rule(Parser *p);
930
static void *_tmp_132_rule(Parser *p);
931
static void *_tmp_133_rule(Parser *p);
932
static void *_tmp_134_rule(Parser *p);
933
static asdl_seq *_loop0_135_rule(Parser *p);
934
static asdl_seq *_gather_136_rule(Parser *p);
935
static void *_tmp_137_rule(Parser *p);
936
static asdl_seq *_loop0_138_rule(Parser *p);
937
static asdl_seq *_gather_139_rule(Parser *p);
938
static asdl_seq *_loop0_140_rule(Parser *p);
939
static asdl_seq *_gather_141_rule(Parser *p);
940
static void *_tmp_142_rule(Parser *p);
941
static asdl_seq *_loop0_143_rule(Parser *p);
942
static void *_tmp_144_rule(Parser *p);
943
static void *_tmp_145_rule(Parser *p);
944
static void *_tmp_146_rule(Parser *p);
945
static void *_tmp_147_rule(Parser *p);
946
static void *_tmp_148_rule(Parser *p);
947
static void *_tmp_149_rule(Parser *p);
948
static void *_tmp_150_rule(Parser *p);
949
static void *_tmp_151_rule(Parser *p);
950
static void *_tmp_152_rule(Parser *p);
951
static void *_tmp_153_rule(Parser *p);
952
static void *_tmp_154_rule(Parser *p);
953
static void *_tmp_155_rule(Parser *p);
954
static void *_tmp_156_rule(Parser *p);
955
static void *_tmp_157_rule(Parser *p);
956
static void *_tmp_158_rule(Parser *p);
957
static void *_tmp_159_rule(Parser *p);
958
static void *_tmp_160_rule(Parser *p);
959
static void *_tmp_161_rule(Parser *p);
960
static void *_tmp_162_rule(Parser *p);
961
static void *_tmp_163_rule(Parser *p);
962
static void *_tmp_164_rule(Parser *p);
963
static void *_tmp_165_rule(Parser *p);
964
static void *_tmp_166_rule(Parser *p);
965
static void *_tmp_167_rule(Parser *p);
966
static void *_tmp_168_rule(Parser *p);
967
static void *_tmp_169_rule(Parser *p);
968
static asdl_seq *_loop0_170_rule(Parser *p);
969
static void *_tmp_171_rule(Parser *p);
970
static void *_tmp_172_rule(Parser *p);
971
static void *_tmp_173_rule(Parser *p);
972
static void *_tmp_174_rule(Parser *p);
973
static void *_tmp_175_rule(Parser *p);
974
975
976
// file: statements? $
977
static mod_ty
978
file_rule(Parser *p)
979
35.1k
{
980
35.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
981
0
        _Pypegen_stack_overflow(p);
982
0
    }
983
35.1k
    if (p->error_indicator) {
984
3.75k
        p->level--;
985
3.75k
        return NULL;
986
3.75k
    }
987
31.4k
    mod_ty _res = NULL;
988
31.4k
    int _mark = p->mark;
989
31.4k
    { // statements? $
990
31.4k
        if (p->error_indicator) {
991
0
            p->level--;
992
0
            return NULL;
993
0
        }
994
31.4k
        D(fprintf(stderr, "%*c> file[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statements? $"));
995
31.4k
        void *a;
996
31.4k
        Token * endmarker_var;
997
31.4k
        if (
998
31.4k
            (a = statements_rule(p), !p->error_indicator)  // statements?
999
31.4k
            &&
1000
31.4k
            (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1001
31.4k
        )
1002
7.86k
        {
1003
7.86k
            D(fprintf(stderr, "%*c+ file[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statements? $"));
1004
7.86k
            _res = _PyPegen_make_module ( p , a );
1005
7.86k
            if (_res == NULL && PyErr_Occurred()) {
1006
0
                p->error_indicator = 1;
1007
0
                p->level--;
1008
0
                return NULL;
1009
0
            }
1010
7.86k
            goto done;
1011
7.86k
        }
1012
23.5k
        p->mark = _mark;
1013
23.5k
        D(fprintf(stderr, "%*c%s file[%d-%d]: %s failed!\n", p->level, ' ',
1014
23.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statements? $"));
1015
23.5k
    }
1016
0
    _res = NULL;
1017
31.4k
  done:
1018
31.4k
    p->level--;
1019
31.4k
    return _res;
1020
23.5k
}
1021
1022
// interactive: statement_newline
1023
static mod_ty
1024
interactive_rule(Parser *p)
1025
0
{
1026
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1027
0
        _Pypegen_stack_overflow(p);
1028
0
    }
1029
0
    if (p->error_indicator) {
1030
0
        p->level--;
1031
0
        return NULL;
1032
0
    }
1033
0
    mod_ty _res = NULL;
1034
0
    int _mark = p->mark;
1035
0
    { // statement_newline
1036
0
        if (p->error_indicator) {
1037
0
            p->level--;
1038
0
            return NULL;
1039
0
        }
1040
0
        D(fprintf(stderr, "%*c> interactive[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement_newline"));
1041
0
        asdl_stmt_seq* a;
1042
0
        if (
1043
0
            (a = statement_newline_rule(p))  // statement_newline
1044
0
        )
1045
0
        {
1046
0
            D(fprintf(stderr, "%*c+ interactive[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statement_newline"));
1047
0
            _res = _PyAST_Interactive ( a , p -> arena );
1048
0
            if (_res == NULL && PyErr_Occurred()) {
1049
0
                p->error_indicator = 1;
1050
0
                p->level--;
1051
0
                return NULL;
1052
0
            }
1053
0
            goto done;
1054
0
        }
1055
0
        p->mark = _mark;
1056
0
        D(fprintf(stderr, "%*c%s interactive[%d-%d]: %s failed!\n", p->level, ' ',
1057
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement_newline"));
1058
0
    }
1059
0
    _res = NULL;
1060
0
  done:
1061
0
    p->level--;
1062
0
    return _res;
1063
0
}
1064
1065
// eval: expressions NEWLINE* $
1066
static mod_ty
1067
eval_rule(Parser *p)
1068
43
{
1069
43
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1070
0
        _Pypegen_stack_overflow(p);
1071
0
    }
1072
43
    if (p->error_indicator) {
1073
0
        p->level--;
1074
0
        return NULL;
1075
0
    }
1076
43
    mod_ty _res = NULL;
1077
43
    int _mark = p->mark;
1078
43
    { // expressions NEWLINE* $
1079
43
        if (p->error_indicator) {
1080
0
            p->level--;
1081
0
            return NULL;
1082
0
        }
1083
43
        D(fprintf(stderr, "%*c> eval[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions NEWLINE* $"));
1084
43
        asdl_seq * _loop0_1_var;
1085
43
        expr_ty a;
1086
43
        Token * endmarker_var;
1087
43
        if (
1088
43
            (a = expressions_rule(p))  // expressions
1089
43
            &&
1090
43
            (_loop0_1_var = _loop0_1_rule(p))  // NEWLINE*
1091
43
            &&
1092
43
            (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1093
43
        )
1094
43
        {
1095
43
            D(fprintf(stderr, "%*c+ eval[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions NEWLINE* $"));
1096
43
            _res = _PyAST_Expression ( a , p -> arena );
1097
43
            if (_res == NULL && PyErr_Occurred()) {
1098
0
                p->error_indicator = 1;
1099
0
                p->level--;
1100
0
                return NULL;
1101
0
            }
1102
43
            goto done;
1103
43
        }
1104
0
        p->mark = _mark;
1105
0
        D(fprintf(stderr, "%*c%s eval[%d-%d]: %s failed!\n", p->level, ' ',
1106
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions NEWLINE* $"));
1107
0
    }
1108
0
    _res = NULL;
1109
43
  done:
1110
43
    p->level--;
1111
43
    return _res;
1112
0
}
1113
1114
// func_type: '(' type_expressions? ')' '->' expression NEWLINE* $
1115
static mod_ty
1116
func_type_rule(Parser *p)
1117
0
{
1118
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1119
0
        _Pypegen_stack_overflow(p);
1120
0
    }
1121
0
    if (p->error_indicator) {
1122
0
        p->level--;
1123
0
        return NULL;
1124
0
    }
1125
0
    mod_ty _res = NULL;
1126
0
    int _mark = p->mark;
1127
0
    { // '(' type_expressions? ')' '->' expression NEWLINE* $
1128
0
        if (p->error_indicator) {
1129
0
            p->level--;
1130
0
            return NULL;
1131
0
        }
1132
0
        D(fprintf(stderr, "%*c> func_type[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
1133
0
        Token * _literal;
1134
0
        Token * _literal_1;
1135
0
        Token * _literal_2;
1136
0
        asdl_seq * _loop0_1_var;
1137
0
        void *a;
1138
0
        expr_ty b;
1139
0
        Token * endmarker_var;
1140
0
        if (
1141
0
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
1142
0
            &&
1143
0
            (a = type_expressions_rule(p), !p->error_indicator)  // type_expressions?
1144
0
            &&
1145
0
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
1146
0
            &&
1147
0
            (_literal_2 = _PyPegen_expect_token(p, 51))  // token='->'
1148
0
            &&
1149
0
            (b = expression_rule(p))  // expression
1150
0
            &&
1151
0
            (_loop0_1_var = _loop0_1_rule(p))  // NEWLINE*
1152
0
            &&
1153
0
            (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1154
0
        )
1155
0
        {
1156
0
            D(fprintf(stderr, "%*c+ func_type[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
1157
0
            _res = _PyAST_FunctionType ( a , b , p -> arena );
1158
0
            if (_res == NULL && PyErr_Occurred()) {
1159
0
                p->error_indicator = 1;
1160
0
                p->level--;
1161
0
                return NULL;
1162
0
            }
1163
0
            goto done;
1164
0
        }
1165
0
        p->mark = _mark;
1166
0
        D(fprintf(stderr, "%*c%s func_type[%d-%d]: %s failed!\n", p->level, ' ',
1167
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
1168
0
    }
1169
0
    _res = NULL;
1170
0
  done:
1171
0
    p->level--;
1172
0
    return _res;
1173
0
}
1174
1175
// statements: statement+
1176
static asdl_stmt_seq*
1177
statements_rule(Parser *p)
1178
50.2k
{
1179
50.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1180
0
        _Pypegen_stack_overflow(p);
1181
0
    }
1182
50.2k
    if (p->error_indicator) {
1183
0
        p->level--;
1184
0
        return NULL;
1185
0
    }
1186
50.2k
    asdl_stmt_seq* _res = NULL;
1187
50.2k
    int _mark = p->mark;
1188
50.2k
    { // statement+
1189
50.2k
        if (p->error_indicator) {
1190
0
            p->level--;
1191
0
            return NULL;
1192
0
        }
1193
50.2k
        D(fprintf(stderr, "%*c> statements[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement+"));
1194
50.2k
        asdl_seq * a;
1195
50.2k
        if (
1196
50.2k
            (a = _loop1_2_rule(p))  // statement+
1197
50.2k
        )
1198
27.3k
        {
1199
27.3k
            D(fprintf(stderr, "%*c+ statements[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statement+"));
1200
27.3k
            _res = _PyPegen_register_stmts ( p , ( asdl_stmt_seq* ) _PyPegen_seq_flatten ( p , a ) );
1201
27.3k
            if (_res == NULL && PyErr_Occurred()) {
1202
0
                p->error_indicator = 1;
1203
0
                p->level--;
1204
0
                return NULL;
1205
0
            }
1206
27.3k
            goto done;
1207
27.3k
        }
1208
22.8k
        p->mark = _mark;
1209
22.8k
        D(fprintf(stderr, "%*c%s statements[%d-%d]: %s failed!\n", p->level, ' ',
1210
22.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement+"));
1211
22.8k
    }
1212
0
    _res = NULL;
1213
50.2k
  done:
1214
50.2k
    p->level--;
1215
50.2k
    return _res;
1216
22.8k
}
1217
1218
// statement: compound_stmt | simple_stmts
1219
static asdl_stmt_seq*
1220
statement_rule(Parser *p)
1221
168k
{
1222
168k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1223
0
        _Pypegen_stack_overflow(p);
1224
0
    }
1225
168k
    if (p->error_indicator) {
1226
0
        p->level--;
1227
0
        return NULL;
1228
0
    }
1229
168k
    asdl_stmt_seq* _res = NULL;
1230
168k
    int _mark = p->mark;
1231
168k
    { // compound_stmt
1232
168k
        if (p->error_indicator) {
1233
0
            p->level--;
1234
0
            return NULL;
1235
0
        }
1236
168k
        D(fprintf(stderr, "%*c> statement[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1237
168k
        stmt_ty a;
1238
168k
        if (
1239
168k
            (a = compound_stmt_rule(p))  // compound_stmt
1240
168k
        )
1241
35.9k
        {
1242
35.9k
            D(fprintf(stderr, "%*c+ statement[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1243
35.9k
            _res = ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , a );
1244
35.9k
            if (_res == NULL && PyErr_Occurred()) {
1245
0
                p->error_indicator = 1;
1246
0
                p->level--;
1247
0
                return NULL;
1248
0
            }
1249
35.9k
            goto done;
1250
35.9k
        }
1251
133k
        p->mark = _mark;
1252
133k
        D(fprintf(stderr, "%*c%s statement[%d-%d]: %s failed!\n", p->level, ' ',
1253
133k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compound_stmt"));
1254
133k
    }
1255
0
    { // simple_stmts
1256
133k
        if (p->error_indicator) {
1257
2.46k
            p->level--;
1258
2.46k
            return NULL;
1259
2.46k
        }
1260
130k
        D(fprintf(stderr, "%*c> statement[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1261
130k
        asdl_stmt_seq* a;
1262
130k
        if (
1263
130k
            (a = (asdl_stmt_seq*)simple_stmts_rule(p))  // simple_stmts
1264
130k
        )
1265
82.7k
        {
1266
82.7k
            D(fprintf(stderr, "%*c+ statement[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1267
82.7k
            _res = a;
1268
82.7k
            if (_res == NULL && PyErr_Occurred()) {
1269
0
                p->error_indicator = 1;
1270
0
                p->level--;
1271
0
                return NULL;
1272
0
            }
1273
82.7k
            goto done;
1274
82.7k
        }
1275
47.8k
        p->mark = _mark;
1276
47.8k
        D(fprintf(stderr, "%*c%s statement[%d-%d]: %s failed!\n", p->level, ' ',
1277
47.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
1278
47.8k
    }
1279
0
    _res = NULL;
1280
166k
  done:
1281
166k
    p->level--;
1282
166k
    return _res;
1283
47.8k
}
1284
1285
// single_compound_stmt: compound_stmt
1286
static asdl_stmt_seq*
1287
single_compound_stmt_rule(Parser *p)
1288
0
{
1289
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1290
0
        _Pypegen_stack_overflow(p);
1291
0
    }
1292
0
    if (p->error_indicator) {
1293
0
        p->level--;
1294
0
        return NULL;
1295
0
    }
1296
0
    asdl_stmt_seq* _res = NULL;
1297
0
    int _mark = p->mark;
1298
0
    { // compound_stmt
1299
0
        if (p->error_indicator) {
1300
0
            p->level--;
1301
0
            return NULL;
1302
0
        }
1303
0
        D(fprintf(stderr, "%*c> single_compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1304
0
        stmt_ty a;
1305
0
        if (
1306
0
            (a = compound_stmt_rule(p))  // compound_stmt
1307
0
        )
1308
0
        {
1309
0
            D(fprintf(stderr, "%*c+ single_compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1310
0
            _res = _PyPegen_register_stmts ( p , ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , a ) );
1311
0
            if (_res == NULL && PyErr_Occurred()) {
1312
0
                p->error_indicator = 1;
1313
0
                p->level--;
1314
0
                return NULL;
1315
0
            }
1316
0
            goto done;
1317
0
        }
1318
0
        p->mark = _mark;
1319
0
        D(fprintf(stderr, "%*c%s single_compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1320
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compound_stmt"));
1321
0
    }
1322
0
    _res = NULL;
1323
0
  done:
1324
0
    p->level--;
1325
0
    return _res;
1326
0
}
1327
1328
// statement_newline: single_compound_stmt NEWLINE | simple_stmts | NEWLINE | $
1329
static asdl_stmt_seq*
1330
statement_newline_rule(Parser *p)
1331
0
{
1332
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1333
0
        _Pypegen_stack_overflow(p);
1334
0
    }
1335
0
    if (p->error_indicator) {
1336
0
        p->level--;
1337
0
        return NULL;
1338
0
    }
1339
0
    asdl_stmt_seq* _res = NULL;
1340
0
    int _mark = p->mark;
1341
0
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1342
0
        p->error_indicator = 1;
1343
0
        p->level--;
1344
0
        return NULL;
1345
0
    }
1346
0
    int _start_lineno = p->tokens[_mark]->lineno;
1347
0
    UNUSED(_start_lineno); // Only used by EXTRA macro
1348
0
    int _start_col_offset = p->tokens[_mark]->col_offset;
1349
0
    UNUSED(_start_col_offset); // Only used by EXTRA macro
1350
0
    { // single_compound_stmt NEWLINE
1351
0
        if (p->error_indicator) {
1352
0
            p->level--;
1353
0
            return NULL;
1354
0
        }
1355
0
        D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_compound_stmt NEWLINE"));
1356
0
        asdl_stmt_seq* a;
1357
0
        Token * newline_var;
1358
0
        if (
1359
0
            (a = single_compound_stmt_rule(p))  // single_compound_stmt
1360
0
            &&
1361
0
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1362
0
        )
1363
0
        {
1364
0
            D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_compound_stmt NEWLINE"));
1365
0
            _res = a;
1366
0
            if (_res == NULL && PyErr_Occurred()) {
1367
0
                p->error_indicator = 1;
1368
0
                p->level--;
1369
0
                return NULL;
1370
0
            }
1371
0
            goto done;
1372
0
        }
1373
0
        p->mark = _mark;
1374
0
        D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1375
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_compound_stmt NEWLINE"));
1376
0
    }
1377
0
    { // simple_stmts
1378
0
        if (p->error_indicator) {
1379
0
            p->level--;
1380
0
            return NULL;
1381
0
        }
1382
0
        D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1383
0
        asdl_stmt_seq* simple_stmts_var;
1384
0
        if (
1385
0
            (simple_stmts_var = simple_stmts_rule(p))  // simple_stmts
1386
0
        )
1387
0
        {
1388
0
            D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1389
0
            _res = simple_stmts_var;
1390
0
            goto done;
1391
0
        }
1392
0
        p->mark = _mark;
1393
0
        D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1394
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
1395
0
    }
1396
0
    { // NEWLINE
1397
0
        if (p->error_indicator) {
1398
0
            p->level--;
1399
0
            return NULL;
1400
0
        }
1401
0
        D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
1402
0
        Token * newline_var;
1403
0
        if (
1404
0
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1405
0
        )
1406
0
        {
1407
0
            D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
1408
0
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1409
0
            if (_token == NULL) {
1410
0
                p->level--;
1411
0
                return NULL;
1412
0
            }
1413
0
            int _end_lineno = _token->end_lineno;
1414
0
            UNUSED(_end_lineno); // Only used by EXTRA macro
1415
0
            int _end_col_offset = _token->end_col_offset;
1416
0
            UNUSED(_end_col_offset); // Only used by EXTRA macro
1417
0
            _res = ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , CHECK ( stmt_ty , _PyAST_Pass ( EXTRA ) ) );
1418
0
            if (_res == NULL && PyErr_Occurred()) {
1419
0
                p->error_indicator = 1;
1420
0
                p->level--;
1421
0
                return NULL;
1422
0
            }
1423
0
            goto done;
1424
0
        }
1425
0
        p->mark = _mark;
1426
0
        D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1427
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
1428
0
    }
1429
0
    { // $
1430
0
        if (p->error_indicator) {
1431
0
            p->level--;
1432
0
            return NULL;
1433
0
        }
1434
0
        D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "$"));
1435
0
        Token * endmarker_var;
1436
0
        if (
1437
0
            (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1438
0
        )
1439
0
        {
1440
0
            D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "$"));
1441
0
            _res = _PyPegen_interactive_exit ( p );
1442
0
            if (_res == NULL && PyErr_Occurred()) {
1443
0
                p->error_indicator = 1;
1444
0
                p->level--;
1445
0
                return NULL;
1446
0
            }
1447
0
            goto done;
1448
0
        }
1449
0
        p->mark = _mark;
1450
0
        D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1451
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "$"));
1452
0
    }
1453
0
    _res = NULL;
1454
0
  done:
1455
0
    p->level--;
1456
0
    return _res;
1457
0
}
1458
1459
// simple_stmts: simple_stmt !';' NEWLINE | ';'.simple_stmt+ ';'? NEWLINE
1460
static asdl_stmt_seq*
1461
simple_stmts_rule(Parser *p)
1462
167k
{
1463
167k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1464
0
        _Pypegen_stack_overflow(p);
1465
0
    }
1466
167k
    if (p->error_indicator) {
1467
0
        p->level--;
1468
0
        return NULL;
1469
0
    }
1470
167k
    asdl_stmt_seq* _res = NULL;
1471
167k
    int _mark = p->mark;
1472
167k
    { // simple_stmt !';' NEWLINE
1473
167k
        if (p->error_indicator) {
1474
0
            p->level--;
1475
0
            return NULL;
1476
0
        }
1477
167k
        D(fprintf(stderr, "%*c> simple_stmts[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt !';' NEWLINE"));
1478
167k
        stmt_ty a;
1479
167k
        Token * newline_var;
1480
167k
        if (
1481
167k
            (a = simple_stmt_rule(p))  // simple_stmt
1482
167k
            &&
1483
167k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 13)  // token=';'
1484
167k
            &&
1485
167k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1486
167k
        )
1487
114k
        {
1488
114k
            D(fprintf(stderr, "%*c+ simple_stmts[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt !';' NEWLINE"));
1489
114k
            _res = ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , a );
1490
114k
            if (_res == NULL && PyErr_Occurred()) {
1491
0
                p->error_indicator = 1;
1492
0
                p->level--;
1493
0
                return NULL;
1494
0
            }
1495
114k
            goto done;
1496
114k
        }
1497
53.3k
        p->mark = _mark;
1498
53.3k
        D(fprintf(stderr, "%*c%s simple_stmts[%d-%d]: %s failed!\n", p->level, ' ',
1499
53.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt !';' NEWLINE"));
1500
53.3k
    }
1501
0
    { // ';'.simple_stmt+ ';'? NEWLINE
1502
53.3k
        if (p->error_indicator) {
1503
4.47k
            p->level--;
1504
4.47k
            return NULL;
1505
4.47k
        }
1506
48.8k
        D(fprintf(stderr, "%*c> simple_stmts[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1507
48.8k
        void *_opt_var;
1508
48.8k
        UNUSED(_opt_var); // Silence compiler warnings
1509
48.8k
        asdl_stmt_seq* a;
1510
48.8k
        Token * newline_var;
1511
48.8k
        if (
1512
48.8k
            (a = (asdl_stmt_seq*)_gather_4_rule(p))  // ';'.simple_stmt+
1513
48.8k
            &&
1514
48.8k
            (_opt_var = _PyPegen_expect_token(p, 13), !p->error_indicator)  // ';'?
1515
48.8k
            &&
1516
48.8k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1517
48.8k
        )
1518
2.69k
        {
1519
2.69k
            D(fprintf(stderr, "%*c+ simple_stmts[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1520
2.69k
            _res = a;
1521
2.69k
            if (_res == NULL && PyErr_Occurred()) {
1522
0
                p->error_indicator = 1;
1523
0
                p->level--;
1524
0
                return NULL;
1525
0
            }
1526
2.69k
            goto done;
1527
2.69k
        }
1528
46.1k
        p->mark = _mark;
1529
46.1k
        D(fprintf(stderr, "%*c%s simple_stmts[%d-%d]: %s failed!\n", p->level, ' ',
1530
46.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1531
46.1k
    }
1532
0
    _res = NULL;
1533
163k
  done:
1534
163k
    p->level--;
1535
163k
    return _res;
1536
46.1k
}
1537
1538
// simple_stmt:
1539
//     | assignment
1540
//     | &"type" type_alias
1541
//     | star_expressions
1542
//     | &'return' return_stmt
1543
//     | &('import' | 'from') import_stmt
1544
//     | &'raise' raise_stmt
1545
//     | &'pass' pass_stmt
1546
//     | &'del' del_stmt
1547
//     | &'yield' yield_stmt
1548
//     | &'assert' assert_stmt
1549
//     | &'break' break_stmt
1550
//     | &'continue' continue_stmt
1551
//     | &'global' global_stmt
1552
//     | &'nonlocal' nonlocal_stmt
1553
static stmt_ty
1554
simple_stmt_rule(Parser *p)
1555
237k
{
1556
237k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1557
0
        _Pypegen_stack_overflow(p);
1558
0
    }
1559
237k
    if (p->error_indicator) {
1560
0
        p->level--;
1561
0
        return NULL;
1562
0
    }
1563
237k
    stmt_ty _res = NULL;
1564
237k
    if (_PyPegen_is_memoized(p, simple_stmt_type, &_res)) {
1565
48.8k
        p->level--;
1566
48.8k
        return _res;
1567
48.8k
    }
1568
188k
    int _mark = p->mark;
1569
188k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1570
0
        p->error_indicator = 1;
1571
0
        p->level--;
1572
0
        return NULL;
1573
0
    }
1574
188k
    int _start_lineno = p->tokens[_mark]->lineno;
1575
188k
    UNUSED(_start_lineno); // Only used by EXTRA macro
1576
188k
    int _start_col_offset = p->tokens[_mark]->col_offset;
1577
188k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
1578
188k
    { // assignment
1579
188k
        if (p->error_indicator) {
1580
0
            p->level--;
1581
0
            return NULL;
1582
0
        }
1583
188k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment"));
1584
188k
        stmt_ty assignment_var;
1585
188k
        if (
1586
188k
            (assignment_var = assignment_rule(p))  // assignment
1587
188k
        )
1588
18.9k
        {
1589
18.9k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment"));
1590
18.9k
            _res = assignment_var;
1591
18.9k
            goto done;
1592
18.9k
        }
1593
169k
        p->mark = _mark;
1594
169k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1595
169k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment"));
1596
169k
    }
1597
0
    { // &"type" type_alias
1598
169k
        if (p->error_indicator) {
1599
4.77k
            p->level--;
1600
4.77k
            return NULL;
1601
4.77k
        }
1602
165k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&\"type\" type_alias"));
1603
165k
        stmt_ty type_alias_var;
1604
165k
        if (
1605
165k
            _PyPegen_lookahead_with_string(1, _PyPegen_expect_soft_keyword, p, "type")
1606
165k
            &&
1607
165k
            (type_alias_var = type_alias_rule(p))  // type_alias
1608
165k
        )
1609
410
        {
1610
410
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&\"type\" type_alias"));
1611
410
            _res = type_alias_var;
1612
410
            goto done;
1613
410
        }
1614
164k
        p->mark = _mark;
1615
164k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1616
164k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&\"type\" type_alias"));
1617
164k
    }
1618
0
    { // star_expressions
1619
164k
        if (p->error_indicator) {
1620
4
            p->level--;
1621
4
            return NULL;
1622
4
        }
1623
164k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1624
164k
        expr_ty e;
1625
164k
        if (
1626
164k
            (e = star_expressions_rule(p))  // star_expressions
1627
164k
        )
1628
102k
        {
1629
102k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1630
102k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1631
102k
            if (_token == NULL) {
1632
0
                p->level--;
1633
0
                return NULL;
1634
0
            }
1635
102k
            int _end_lineno = _token->end_lineno;
1636
102k
            UNUSED(_end_lineno); // Only used by EXTRA macro
1637
102k
            int _end_col_offset = _token->end_col_offset;
1638
102k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
1639
102k
            _res = _PyAST_Expr ( e , EXTRA );
1640
102k
            if (_res == NULL && PyErr_Occurred()) {
1641
0
                p->error_indicator = 1;
1642
0
                p->level--;
1643
0
                return NULL;
1644
0
            }
1645
102k
            goto done;
1646
102k
        }
1647
62.5k
        p->mark = _mark;
1648
62.5k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1649
62.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
1650
62.5k
    }
1651
0
    { // &'return' return_stmt
1652
62.5k
        if (p->error_indicator) {
1653
395
            p->level--;
1654
395
            return NULL;
1655
395
        }
1656
62.1k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'return' return_stmt"));
1657
62.1k
        stmt_ty return_stmt_var;
1658
62.1k
        if (
1659
62.1k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 522)  // token='return'
1660
62.1k
            &&
1661
62.1k
            (return_stmt_var = return_stmt_rule(p))  // return_stmt
1662
62.1k
        )
1663
7.48k
        {
1664
7.48k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'return' return_stmt"));
1665
7.48k
            _res = return_stmt_var;
1666
7.48k
            goto done;
1667
7.48k
        }
1668
54.7k
        p->mark = _mark;
1669
54.7k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1670
54.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'return' return_stmt"));
1671
54.7k
    }
1672
0
    { // &('import' | 'from') import_stmt
1673
54.7k
        if (p->error_indicator) {
1674
10
            p->level--;
1675
10
            return NULL;
1676
10
        }
1677
54.7k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('import' | 'from') import_stmt"));
1678
54.7k
        stmt_ty import_stmt_var;
1679
54.7k
        if (
1680
54.7k
            _PyPegen_lookahead(1, _tmp_5_rule, p)
1681
54.7k
            &&
1682
54.7k
            (import_stmt_var = import_stmt_rule(p))  // import_stmt
1683
54.7k
        )
1684
5.43k
        {
1685
5.43k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('import' | 'from') import_stmt"));
1686
5.43k
            _res = import_stmt_var;
1687
5.43k
            goto done;
1688
5.43k
        }
1689
49.2k
        p->mark = _mark;
1690
49.2k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1691
49.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('import' | 'from') import_stmt"));
1692
49.2k
    }
1693
0
    { // &'raise' raise_stmt
1694
49.2k
        if (p->error_indicator) {
1695
78
            p->level--;
1696
78
            return NULL;
1697
78
        }
1698
49.1k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'raise' raise_stmt"));
1699
49.1k
        stmt_ty raise_stmt_var;
1700
49.1k
        if (
1701
49.1k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 628)  // token='raise'
1702
49.1k
            &&
1703
49.1k
            (raise_stmt_var = raise_stmt_rule(p))  // raise_stmt
1704
49.1k
        )
1705
3.33k
        {
1706
3.33k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'raise' raise_stmt"));
1707
3.33k
            _res = raise_stmt_var;
1708
3.33k
            goto done;
1709
3.33k
        }
1710
45.8k
        p->mark = _mark;
1711
45.8k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1712
45.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'raise' raise_stmt"));
1713
45.8k
    }
1714
0
    { // &'pass' pass_stmt
1715
45.8k
        if (p->error_indicator) {
1716
23
            p->level--;
1717
23
            return NULL;
1718
23
        }
1719
45.8k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'pass' pass_stmt"));
1720
45.8k
        stmt_ty pass_stmt_var;
1721
45.8k
        if (
1722
45.8k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 527)  // token='pass'
1723
45.8k
            &&
1724
45.8k
            (pass_stmt_var = pass_stmt_rule(p))  // pass_stmt
1725
45.8k
        )
1726
1.33k
        {
1727
1.33k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'pass' pass_stmt"));
1728
1.33k
            _res = pass_stmt_var;
1729
1.33k
            goto done;
1730
1.33k
        }
1731
44.4k
        p->mark = _mark;
1732
44.4k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1733
44.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'pass' pass_stmt"));
1734
44.4k
    }
1735
0
    { // &'del' del_stmt
1736
44.4k
        if (p->error_indicator) {
1737
0
            p->level--;
1738
0
            return NULL;
1739
0
        }
1740
44.4k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'del' del_stmt"));
1741
44.4k
        stmt_ty del_stmt_var;
1742
44.4k
        if (
1743
44.4k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 630)  // token='del'
1744
44.4k
            &&
1745
44.4k
            (del_stmt_var = del_stmt_rule(p))  // del_stmt
1746
44.4k
        )
1747
901
        {
1748
901
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'del' del_stmt"));
1749
901
            _res = del_stmt_var;
1750
901
            goto done;
1751
901
        }
1752
43.5k
        p->mark = _mark;
1753
43.5k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1754
43.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'del' del_stmt"));
1755
43.5k
    }
1756
0
    { // &'yield' yield_stmt
1757
43.5k
        if (p->error_indicator) {
1758
248
            p->level--;
1759
248
            return NULL;
1760
248
        }
1761
43.3k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'yield' yield_stmt"));
1762
43.3k
        stmt_ty yield_stmt_var;
1763
43.3k
        if (
1764
43.3k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 588)  // token='yield'
1765
43.3k
            &&
1766
43.3k
            (yield_stmt_var = yield_stmt_rule(p))  // yield_stmt
1767
43.3k
        )
1768
1.52k
        {
1769
1.52k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'yield' yield_stmt"));
1770
1.52k
            _res = yield_stmt_var;
1771
1.52k
            goto done;
1772
1.52k
        }
1773
41.8k
        p->mark = _mark;
1774
41.8k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1775
41.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'yield' yield_stmt"));
1776
41.8k
    }
1777
0
    { // &'assert' assert_stmt
1778
41.8k
        if (p->error_indicator) {
1779
6
            p->level--;
1780
6
            return NULL;
1781
6
        }
1782
41.8k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'assert' assert_stmt"));
1783
41.8k
        stmt_ty assert_stmt_var;
1784
41.8k
        if (
1785
41.8k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 533)  // token='assert'
1786
41.8k
            &&
1787
41.8k
            (assert_stmt_var = assert_stmt_rule(p))  // assert_stmt
1788
41.8k
        )
1789
709
        {
1790
709
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'assert' assert_stmt"));
1791
709
            _res = assert_stmt_var;
1792
709
            goto done;
1793
709
        }
1794
41.1k
        p->mark = _mark;
1795
41.1k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1796
41.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'assert' assert_stmt"));
1797
41.1k
    }
1798
0
    { // &'break' break_stmt
1799
41.1k
        if (p->error_indicator) {
1800
35
            p->level--;
1801
35
            return NULL;
1802
35
        }
1803
41.0k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'break' break_stmt"));
1804
41.0k
        stmt_ty break_stmt_var;
1805
41.0k
        if (
1806
41.0k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 528)  // token='break'
1807
41.0k
            &&
1808
41.0k
            (break_stmt_var = break_stmt_rule(p))  // break_stmt
1809
41.0k
        )
1810
1.15k
        {
1811
1.15k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'break' break_stmt"));
1812
1.15k
            _res = break_stmt_var;
1813
1.15k
            goto done;
1814
1.15k
        }
1815
39.9k
        p->mark = _mark;
1816
39.9k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1817
39.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'break' break_stmt"));
1818
39.9k
    }
1819
0
    { // &'continue' continue_stmt
1820
39.9k
        if (p->error_indicator) {
1821
0
            p->level--;
1822
0
            return NULL;
1823
0
        }
1824
39.9k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'continue' continue_stmt"));
1825
39.9k
        stmt_ty continue_stmt_var;
1826
39.9k
        if (
1827
39.9k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 529)  // token='continue'
1828
39.9k
            &&
1829
39.9k
            (continue_stmt_var = continue_stmt_rule(p))  // continue_stmt
1830
39.9k
        )
1831
1.05k
        {
1832
1.05k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'continue' continue_stmt"));
1833
1.05k
            _res = continue_stmt_var;
1834
1.05k
            goto done;
1835
1.05k
        }
1836
38.8k
        p->mark = _mark;
1837
38.8k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1838
38.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'continue' continue_stmt"));
1839
38.8k
    }
1840
0
    { // &'global' global_stmt
1841
38.8k
        if (p->error_indicator) {
1842
0
            p->level--;
1843
0
            return NULL;
1844
0
        }
1845
38.8k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'global' global_stmt"));
1846
38.8k
        stmt_ty global_stmt_var;
1847
38.8k
        if (
1848
38.8k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 530)  // token='global'
1849
38.8k
            &&
1850
38.8k
            (global_stmt_var = global_stmt_rule(p))  // global_stmt
1851
38.8k
        )
1852
681
        {
1853
681
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'global' global_stmt"));
1854
681
            _res = global_stmt_var;
1855
681
            goto done;
1856
681
        }
1857
38.1k
        p->mark = _mark;
1858
38.1k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1859
38.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'global' global_stmt"));
1860
38.1k
    }
1861
0
    { // &'nonlocal' nonlocal_stmt
1862
38.1k
        if (p->error_indicator) {
1863
1
            p->level--;
1864
1
            return NULL;
1865
1
        }
1866
38.1k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
1867
38.1k
        stmt_ty nonlocal_stmt_var;
1868
38.1k
        if (
1869
38.1k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 531)  // token='nonlocal'
1870
38.1k
            &&
1871
38.1k
            (nonlocal_stmt_var = nonlocal_stmt_rule(p))  // nonlocal_stmt
1872
38.1k
        )
1873
1.01k
        {
1874
1.01k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
1875
1.01k
            _res = nonlocal_stmt_var;
1876
1.01k
            goto done;
1877
1.01k
        }
1878
37.1k
        p->mark = _mark;
1879
37.1k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1880
37.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
1881
37.1k
    }
1882
0
    _res = NULL;
1883
183k
  done:
1884
183k
    _PyPegen_insert_memo(p, _mark, simple_stmt_type, _res);
1885
183k
    p->level--;
1886
183k
    return _res;
1887
37.1k
}
1888
1889
// compound_stmt:
1890
//     | &('def' | '@' | 'async') function_def
1891
//     | &'if' if_stmt
1892
//     | &('class' | '@') class_def
1893
//     | &('with' | 'async') with_stmt
1894
//     | &('for' | 'async') for_stmt
1895
//     | &'try' try_stmt
1896
//     | &'while' while_stmt
1897
//     | match_stmt
1898
static stmt_ty
1899
compound_stmt_rule(Parser *p)
1900
168k
{
1901
168k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1902
0
        _Pypegen_stack_overflow(p);
1903
0
    }
1904
168k
    if (p->error_indicator) {
1905
0
        p->level--;
1906
0
        return NULL;
1907
0
    }
1908
168k
    stmt_ty _res = NULL;
1909
168k
    int _mark = p->mark;
1910
168k
    { // &('def' | '@' | 'async') function_def
1911
168k
        if (p->error_indicator) {
1912
0
            p->level--;
1913
0
            return NULL;
1914
0
        }
1915
168k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('def' | '@' | 'async') function_def"));
1916
168k
        stmt_ty function_def_var;
1917
168k
        if (
1918
168k
            _PyPegen_lookahead(1, _tmp_6_rule, p)
1919
168k
            &&
1920
168k
            (function_def_var = function_def_rule(p))  // function_def
1921
168k
        )
1922
10.3k
        {
1923
10.3k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('def' | '@' | 'async') function_def"));
1924
10.3k
            _res = function_def_var;
1925
10.3k
            goto done;
1926
10.3k
        }
1927
158k
        p->mark = _mark;
1928
158k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1929
158k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('def' | '@' | 'async') function_def"));
1930
158k
    }
1931
0
    { // &'if' if_stmt
1932
158k
        if (p->error_indicator) {
1933
1.60k
            p->level--;
1934
1.60k
            return NULL;
1935
1.60k
        }
1936
156k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'if' if_stmt"));
1937
156k
        stmt_ty if_stmt_var;
1938
156k
        if (
1939
156k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 687)  // token='if'
1940
156k
            &&
1941
156k
            (if_stmt_var = if_stmt_rule(p))  // if_stmt
1942
156k
        )
1943
7.49k
        {
1944
7.49k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'if' if_stmt"));
1945
7.49k
            _res = if_stmt_var;
1946
7.49k
            goto done;
1947
7.49k
        }
1948
149k
        p->mark = _mark;
1949
149k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1950
149k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'if' if_stmt"));
1951
149k
    }
1952
0
    { // &('class' | '@') class_def
1953
149k
        if (p->error_indicator) {
1954
61
            p->level--;
1955
61
            return NULL;
1956
61
        }
1957
149k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('class' | '@') class_def"));
1958
149k
        stmt_ty class_def_var;
1959
149k
        if (
1960
149k
            _PyPegen_lookahead(1, _tmp_7_rule, p)
1961
149k
            &&
1962
149k
            (class_def_var = class_def_rule(p))  // class_def
1963
149k
        )
1964
3.86k
        {
1965
3.86k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('class' | '@') class_def"));
1966
3.86k
            _res = class_def_var;
1967
3.86k
            goto done;
1968
3.86k
        }
1969
145k
        p->mark = _mark;
1970
145k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1971
145k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('class' | '@') class_def"));
1972
145k
    }
1973
0
    { // &('with' | 'async') with_stmt
1974
145k
        if (p->error_indicator) {
1975
42
            p->level--;
1976
42
            return NULL;
1977
42
        }
1978
145k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('with' | 'async') with_stmt"));
1979
145k
        stmt_ty with_stmt_var;
1980
145k
        if (
1981
145k
            _PyPegen_lookahead(1, _tmp_8_rule, p)
1982
145k
            &&
1983
145k
            (with_stmt_var = with_stmt_rule(p))  // with_stmt
1984
145k
        )
1985
4.72k
        {
1986
4.72k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('with' | 'async') with_stmt"));
1987
4.72k
            _res = with_stmt_var;
1988
4.72k
            goto done;
1989
4.72k
        }
1990
140k
        p->mark = _mark;
1991
140k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1992
140k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('with' | 'async') with_stmt"));
1993
140k
    }
1994
0
    { // &('for' | 'async') for_stmt
1995
140k
        if (p->error_indicator) {
1996
138
            p->level--;
1997
138
            return NULL;
1998
138
        }
1999
140k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('for' | 'async') for_stmt"));
2000
140k
        stmt_ty for_stmt_var;
2001
140k
        if (
2002
140k
            _PyPegen_lookahead(1, _tmp_9_rule, p)
2003
140k
            &&
2004
140k
            (for_stmt_var = for_stmt_rule(p))  // for_stmt
2005
140k
        )
2006
2.32k
        {
2007
2.32k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('for' | 'async') for_stmt"));
2008
2.32k
            _res = for_stmt_var;
2009
2.32k
            goto done;
2010
2.32k
        }
2011
138k
        p->mark = _mark;
2012
138k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2013
138k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('for' | 'async') for_stmt"));
2014
138k
    }
2015
0
    { // &'try' try_stmt
2016
138k
        if (p->error_indicator) {
2017
35
            p->level--;
2018
35
            return NULL;
2019
35
        }
2020
138k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'try' try_stmt"));
2021
138k
        stmt_ty try_stmt_var;
2022
138k
        if (
2023
138k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 661)  // token='try'
2024
138k
            &&
2025
138k
            (try_stmt_var = try_stmt_rule(p))  // try_stmt
2026
138k
        )
2027
5.25k
        {
2028
5.25k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'try' try_stmt"));
2029
5.25k
            _res = try_stmt_var;
2030
5.25k
            goto done;
2031
5.25k
        }
2032
133k
        p->mark = _mark;
2033
133k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2034
133k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'try' try_stmt"));
2035
133k
    }
2036
0
    { // &'while' while_stmt
2037
133k
        if (p->error_indicator) {
2038
191
            p->level--;
2039
191
            return NULL;
2040
191
        }
2041
132k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'while' while_stmt"));
2042
132k
        stmt_ty while_stmt_var;
2043
132k
        if (
2044
132k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 694)  // token='while'
2045
132k
            &&
2046
132k
            (while_stmt_var = while_stmt_rule(p))  // while_stmt
2047
132k
        )
2048
1.23k
        {
2049
1.23k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'while' while_stmt"));
2050
1.23k
            _res = while_stmt_var;
2051
1.23k
            goto done;
2052
1.23k
        }
2053
131k
        p->mark = _mark;
2054
131k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2055
131k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'while' while_stmt"));
2056
131k
    }
2057
0
    { // match_stmt
2058
131k
        if (p->error_indicator) {
2059
19
            p->level--;
2060
19
            return NULL;
2061
19
        }
2062
131k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "match_stmt"));
2063
131k
        stmt_ty match_stmt_var;
2064
131k
        if (
2065
131k
            (match_stmt_var = match_stmt_rule(p))  // match_stmt
2066
131k
        )
2067
624
        {
2068
624
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "match_stmt"));
2069
624
            _res = match_stmt_var;
2070
624
            goto done;
2071
624
        }
2072
130k
        p->mark = _mark;
2073
130k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2074
130k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "match_stmt"));
2075
130k
    }
2076
0
    _res = NULL;
2077
166k
  done:
2078
166k
    p->level--;
2079
166k
    return _res;
2080
130k
}
2081
2082
// assignment:
2083
//     | NAME ':' expression ['=' annotated_rhs]
2084
//     | ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
2085
//     | ((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?
2086
//     | single_target augassign ~ annotated_rhs
2087
//     | invalid_assignment
2088
static stmt_ty
2089
assignment_rule(Parser *p)
2090
188k
{
2091
188k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2092
0
        _Pypegen_stack_overflow(p);
2093
0
    }
2094
188k
    if (p->error_indicator) {
2095
0
        p->level--;
2096
0
        return NULL;
2097
0
    }
2098
188k
    stmt_ty _res = NULL;
2099
188k
    int _mark = p->mark;
2100
188k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2101
0
        p->error_indicator = 1;
2102
0
        p->level--;
2103
0
        return NULL;
2104
0
    }
2105
188k
    int _start_lineno = p->tokens[_mark]->lineno;
2106
188k
    UNUSED(_start_lineno); // Only used by EXTRA macro
2107
188k
    int _start_col_offset = p->tokens[_mark]->col_offset;
2108
188k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
2109
188k
    { // NAME ':' expression ['=' annotated_rhs]
2110
188k
        if (p->error_indicator) {
2111
0
            p->level--;
2112
0
            return NULL;
2113
0
        }
2114
188k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2115
188k
        Token * _literal;
2116
188k
        expr_ty a;
2117
188k
        expr_ty b;
2118
188k
        void *c;
2119
188k
        if (
2120
188k
            (a = _PyPegen_name_token(p))  // NAME
2121
188k
            &&
2122
188k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
2123
188k
            &&
2124
188k
            (b = expression_rule(p))  // expression
2125
188k
            &&
2126
188k
            (c = _tmp_10_rule(p), !p->error_indicator)  // ['=' annotated_rhs]
2127
188k
        )
2128
2.30k
        {
2129
2.30k
            D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2130
2.30k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2131
2.30k
            if (_token == NULL) {
2132
0
                p->level--;
2133
0
                return NULL;
2134
0
            }
2135
2.30k
            int _end_lineno = _token->end_lineno;
2136
2.30k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2137
2.30k
            int _end_col_offset = _token->end_col_offset;
2138
2.30k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2139
2.30k
            _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 ) );
2140
2.30k
            if (_res == NULL && PyErr_Occurred()) {
2141
0
                p->error_indicator = 1;
2142
0
                p->level--;
2143
0
                return NULL;
2144
0
            }
2145
2.30k
            goto done;
2146
2.30k
        }
2147
186k
        p->mark = _mark;
2148
186k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2149
186k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2150
186k
    }
2151
0
    { // ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
2152
186k
        if (p->error_indicator) {
2153
153
            p->level--;
2154
153
            return NULL;
2155
153
        }
2156
186k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
2157
186k
        Token * _literal;
2158
186k
        void *a;
2159
186k
        expr_ty b;
2160
186k
        void *c;
2161
186k
        if (
2162
186k
            (a = _tmp_11_rule(p))  // '(' single_target ')' | single_subscript_attribute_target
2163
186k
            &&
2164
186k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
2165
186k
            &&
2166
186k
            (b = expression_rule(p))  // expression
2167
186k
            &&
2168
186k
            (c = _tmp_10_rule(p), !p->error_indicator)  // ['=' annotated_rhs]
2169
186k
        )
2170
943
        {
2171
943
            D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
2172
943
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2173
943
            if (_token == NULL) {
2174
0
                p->level--;
2175
0
                return NULL;
2176
0
            }
2177
943
            int _end_lineno = _token->end_lineno;
2178
943
            UNUSED(_end_lineno); // Only used by EXTRA macro
2179
943
            int _end_col_offset = _token->end_col_offset;
2180
943
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2181
943
            _res = CHECK_VERSION ( stmt_ty , 6 , "Variable annotations syntax is" , _PyAST_AnnAssign ( a , b , c , 0 , EXTRA ) );
2182
943
            if (_res == NULL && PyErr_Occurred()) {
2183
0
                p->error_indicator = 1;
2184
0
                p->level--;
2185
0
                return NULL;
2186
0
            }
2187
943
            goto done;
2188
943
        }
2189
185k
        p->mark = _mark;
2190
185k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2191
185k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
2192
185k
    }
2193
0
    { // ((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?
2194
185k
        if (p->error_indicator) {
2195
2.82k
            p->level--;
2196
2.82k
            return NULL;
2197
2.82k
        }
2198
182k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?"));
2199
182k
        asdl_expr_seq* a;
2200
182k
        expr_ty b;
2201
182k
        void *tc;
2202
182k
        if (
2203
182k
            (a = (asdl_expr_seq*)_loop1_12_rule(p))  // ((star_targets '='))+
2204
182k
            &&
2205
182k
            (b = annotated_rhs_rule(p))  // annotated_rhs
2206
182k
            &&
2207
182k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22)  // token='='
2208
182k
            &&
2209
182k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
2210
182k
        )
2211
12.9k
        {
2212
12.9k
            D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?"));
2213
12.9k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2214
12.9k
            if (_token == NULL) {
2215
0
                p->level--;
2216
0
                return NULL;
2217
0
            }
2218
12.9k
            int _end_lineno = _token->end_lineno;
2219
12.9k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2220
12.9k
            int _end_col_offset = _token->end_col_offset;
2221
12.9k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2222
12.9k
            _res = _PyAST_Assign ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
2223
12.9k
            if (_res == NULL && PyErr_Occurred()) {
2224
0
                p->error_indicator = 1;
2225
0
                p->level--;
2226
0
                return NULL;
2227
0
            }
2228
12.9k
            goto done;
2229
12.9k
        }
2230
169k
        p->mark = _mark;
2231
169k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2232
169k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?"));
2233
169k
    }
2234
0
    { // single_target augassign ~ annotated_rhs
2235
169k
        if (p->error_indicator) {
2236
333
            p->level--;
2237
333
            return NULL;
2238
333
        }
2239
169k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_target augassign ~ annotated_rhs"));
2240
169k
        int _cut_var = 0;
2241
169k
        expr_ty a;
2242
169k
        AugOperator* b;
2243
169k
        expr_ty c;
2244
169k
        if (
2245
169k
            (a = single_target_rule(p))  // single_target
2246
169k
            &&
2247
169k
            (b = augassign_rule(p))  // augassign
2248
169k
            &&
2249
169k
            (_cut_var = 1)
2250
169k
            &&
2251
169k
            (c = annotated_rhs_rule(p))  // annotated_rhs
2252
169k
        )
2253
2.77k
        {
2254
2.77k
            D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_target augassign ~ annotated_rhs"));
2255
2.77k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2256
2.77k
            if (_token == NULL) {
2257
0
                p->level--;
2258
0
                return NULL;
2259
0
            }
2260
2.77k
            int _end_lineno = _token->end_lineno;
2261
2.77k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2262
2.77k
            int _end_col_offset = _token->end_col_offset;
2263
2.77k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2264
2.77k
            _res = _PyAST_AugAssign ( a , b -> kind , c , EXTRA );
2265
2.77k
            if (_res == NULL && PyErr_Occurred()) {
2266
0
                p->error_indicator = 1;
2267
0
                p->level--;
2268
0
                return NULL;
2269
0
            }
2270
2.77k
            goto done;
2271
2.77k
        }
2272
166k
        p->mark = _mark;
2273
166k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2274
166k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_target augassign ~ annotated_rhs"));
2275
166k
        if (_cut_var) {
2276
146
            p->level--;
2277
146
            return NULL;
2278
146
        }
2279
166k
    }
2280
166k
    if (p->call_invalid_rules) { // invalid_assignment
2281
40.5k
        if (p->error_indicator) {
2282
0
            p->level--;
2283
0
            return NULL;
2284
0
        }
2285
40.5k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_assignment"));
2286
40.5k
        void *invalid_assignment_var;
2287
40.5k
        if (
2288
40.5k
            (invalid_assignment_var = invalid_assignment_rule(p))  // invalid_assignment
2289
40.5k
        )
2290
0
        {
2291
0
            D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_assignment"));
2292
0
            _res = invalid_assignment_var;
2293
0
            goto done;
2294
0
        }
2295
40.5k
        p->mark = _mark;
2296
40.5k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2297
40.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_assignment"));
2298
40.5k
    }
2299
166k
    _res = NULL;
2300
185k
  done:
2301
185k
    p->level--;
2302
185k
    return _res;
2303
166k
}
2304
2305
// annotated_rhs: yield_expr | star_expressions
2306
static expr_ty
2307
annotated_rhs_rule(Parser *p)
2308
50.6k
{
2309
50.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2310
1
        _Pypegen_stack_overflow(p);
2311
1
    }
2312
50.6k
    if (p->error_indicator) {
2313
1
        p->level--;
2314
1
        return NULL;
2315
1
    }
2316
50.6k
    expr_ty _res = NULL;
2317
50.6k
    int _mark = p->mark;
2318
50.6k
    { // yield_expr
2319
50.6k
        if (p->error_indicator) {
2320
0
            p->level--;
2321
0
            return NULL;
2322
0
        }
2323
50.6k
        D(fprintf(stderr, "%*c> annotated_rhs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
2324
50.6k
        expr_ty yield_expr_var;
2325
50.6k
        if (
2326
50.6k
            (yield_expr_var = yield_expr_rule(p))  // yield_expr
2327
50.6k
        )
2328
330
        {
2329
330
            D(fprintf(stderr, "%*c+ annotated_rhs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
2330
330
            _res = yield_expr_var;
2331
330
            goto done;
2332
330
        }
2333
50.3k
        p->mark = _mark;
2334
50.3k
        D(fprintf(stderr, "%*c%s annotated_rhs[%d-%d]: %s failed!\n", p->level, ' ',
2335
50.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
2336
50.3k
    }
2337
0
    { // star_expressions
2338
50.3k
        if (p->error_indicator) {
2339
120
            p->level--;
2340
120
            return NULL;
2341
120
        }
2342
50.1k
        D(fprintf(stderr, "%*c> annotated_rhs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
2343
50.1k
        expr_ty star_expressions_var;
2344
50.1k
        if (
2345
50.1k
            (star_expressions_var = star_expressions_rule(p))  // star_expressions
2346
50.1k
        )
2347
45.3k
        {
2348
45.3k
            D(fprintf(stderr, "%*c+ annotated_rhs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
2349
45.3k
            _res = star_expressions_var;
2350
45.3k
            goto done;
2351
45.3k
        }
2352
4.84k
        p->mark = _mark;
2353
4.84k
        D(fprintf(stderr, "%*c%s annotated_rhs[%d-%d]: %s failed!\n", p->level, ' ',
2354
4.84k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
2355
4.84k
    }
2356
0
    _res = NULL;
2357
50.5k
  done:
2358
50.5k
    p->level--;
2359
50.5k
    return _res;
2360
4.84k
}
2361
2362
// augassign:
2363
//     | '+='
2364
//     | '-='
2365
//     | '*='
2366
//     | '@='
2367
//     | '/='
2368
//     | '%='
2369
//     | '&='
2370
//     | '|='
2371
//     | '^='
2372
//     | '<<='
2373
//     | '>>='
2374
//     | '**='
2375
//     | '//='
2376
static AugOperator*
2377
augassign_rule(Parser *p)
2378
103k
{
2379
103k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2380
0
        _Pypegen_stack_overflow(p);
2381
0
    }
2382
103k
    if (p->error_indicator) {
2383
0
        p->level--;
2384
0
        return NULL;
2385
0
    }
2386
103k
    AugOperator* _res = NULL;
2387
103k
    int _mark = p->mark;
2388
103k
    { // '+='
2389
103k
        if (p->error_indicator) {
2390
0
            p->level--;
2391
0
            return NULL;
2392
0
        }
2393
103k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+='"));
2394
103k
        Token * _literal;
2395
103k
        if (
2396
103k
            (_literal = _PyPegen_expect_token(p, 36))  // token='+='
2397
103k
        )
2398
465
        {
2399
465
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+='"));
2400
465
            _res = _PyPegen_augoperator ( p , Add );
2401
465
            if (_res == NULL && PyErr_Occurred()) {
2402
0
                p->error_indicator = 1;
2403
0
                p->level--;
2404
0
                return NULL;
2405
0
            }
2406
465
            goto done;
2407
465
        }
2408
103k
        p->mark = _mark;
2409
103k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2410
103k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+='"));
2411
103k
    }
2412
0
    { // '-='
2413
103k
        if (p->error_indicator) {
2414
0
            p->level--;
2415
0
            return NULL;
2416
0
        }
2417
103k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-='"));
2418
103k
        Token * _literal;
2419
103k
        if (
2420
103k
            (_literal = _PyPegen_expect_token(p, 37))  // token='-='
2421
103k
        )
2422
128
        {
2423
128
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-='"));
2424
128
            _res = _PyPegen_augoperator ( p , Sub );
2425
128
            if (_res == NULL && PyErr_Occurred()) {
2426
0
                p->error_indicator = 1;
2427
0
                p->level--;
2428
0
                return NULL;
2429
0
            }
2430
128
            goto done;
2431
128
        }
2432
103k
        p->mark = _mark;
2433
103k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2434
103k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-='"));
2435
103k
    }
2436
0
    { // '*='
2437
103k
        if (p->error_indicator) {
2438
0
            p->level--;
2439
0
            return NULL;
2440
0
        }
2441
103k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*='"));
2442
103k
        Token * _literal;
2443
103k
        if (
2444
103k
            (_literal = _PyPegen_expect_token(p, 38))  // token='*='
2445
103k
        )
2446
231
        {
2447
231
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*='"));
2448
231
            _res = _PyPegen_augoperator ( p , Mult );
2449
231
            if (_res == NULL && PyErr_Occurred()) {
2450
0
                p->error_indicator = 1;
2451
0
                p->level--;
2452
0
                return NULL;
2453
0
            }
2454
231
            goto done;
2455
231
        }
2456
102k
        p->mark = _mark;
2457
102k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2458
102k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*='"));
2459
102k
    }
2460
0
    { // '@='
2461
102k
        if (p->error_indicator) {
2462
0
            p->level--;
2463
0
            return NULL;
2464
0
        }
2465
102k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@='"));
2466
102k
        Token * _literal;
2467
102k
        if (
2468
102k
            (_literal = _PyPegen_expect_token(p, 50))  // token='@='
2469
102k
        )
2470
76
        {
2471
76
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@='"));
2472
76
            _res = CHECK_VERSION ( AugOperator* , 5 , "The '@' operator is" , _PyPegen_augoperator ( p , MatMult ) );
2473
76
            if (_res == NULL && PyErr_Occurred()) {
2474
0
                p->error_indicator = 1;
2475
0
                p->level--;
2476
0
                return NULL;
2477
0
            }
2478
76
            goto done;
2479
76
        }
2480
102k
        p->mark = _mark;
2481
102k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2482
102k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@='"));
2483
102k
    }
2484
0
    { // '/='
2485
102k
        if (p->error_indicator) {
2486
0
            p->level--;
2487
0
            return NULL;
2488
0
        }
2489
102k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/='"));
2490
102k
        Token * _literal;
2491
102k
        if (
2492
102k
            (_literal = _PyPegen_expect_token(p, 39))  // token='/='
2493
102k
        )
2494
378
        {
2495
378
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'/='"));
2496
378
            _res = _PyPegen_augoperator ( p , Div );
2497
378
            if (_res == NULL && PyErr_Occurred()) {
2498
0
                p->error_indicator = 1;
2499
0
                p->level--;
2500
0
                return NULL;
2501
0
            }
2502
378
            goto done;
2503
378
        }
2504
102k
        p->mark = _mark;
2505
102k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2506
102k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'/='"));
2507
102k
    }
2508
0
    { // '%='
2509
102k
        if (p->error_indicator) {
2510
0
            p->level--;
2511
0
            return NULL;
2512
0
        }
2513
102k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'%='"));
2514
102k
        Token * _literal;
2515
102k
        if (
2516
102k
            (_literal = _PyPegen_expect_token(p, 40))  // token='%='
2517
102k
        )
2518
333
        {
2519
333
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'%='"));
2520
333
            _res = _PyPegen_augoperator ( p , Mod );
2521
333
            if (_res == NULL && PyErr_Occurred()) {
2522
0
                p->error_indicator = 1;
2523
0
                p->level--;
2524
0
                return NULL;
2525
0
            }
2526
333
            goto done;
2527
333
        }
2528
101k
        p->mark = _mark;
2529
101k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2530
101k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'%='"));
2531
101k
    }
2532
0
    { // '&='
2533
101k
        if (p->error_indicator) {
2534
0
            p->level--;
2535
0
            return NULL;
2536
0
        }
2537
101k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'&='"));
2538
101k
        Token * _literal;
2539
101k
        if (
2540
101k
            (_literal = _PyPegen_expect_token(p, 41))  // token='&='
2541
101k
        )
2542
242
        {
2543
242
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'&='"));
2544
242
            _res = _PyPegen_augoperator ( p , BitAnd );
2545
242
            if (_res == NULL && PyErr_Occurred()) {
2546
0
                p->error_indicator = 1;
2547
0
                p->level--;
2548
0
                return NULL;
2549
0
            }
2550
242
            goto done;
2551
242
        }
2552
101k
        p->mark = _mark;
2553
101k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2554
101k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'&='"));
2555
101k
    }
2556
0
    { // '|='
2557
101k
        if (p->error_indicator) {
2558
0
            p->level--;
2559
0
            return NULL;
2560
0
        }
2561
101k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|='"));
2562
101k
        Token * _literal;
2563
101k
        if (
2564
101k
            (_literal = _PyPegen_expect_token(p, 42))  // token='|='
2565
101k
        )
2566
262
        {
2567
262
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'|='"));
2568
262
            _res = _PyPegen_augoperator ( p , BitOr );
2569
262
            if (_res == NULL && PyErr_Occurred()) {
2570
0
                p->error_indicator = 1;
2571
0
                p->level--;
2572
0
                return NULL;
2573
0
            }
2574
262
            goto done;
2575
262
        }
2576
101k
        p->mark = _mark;
2577
101k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2578
101k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|='"));
2579
101k
    }
2580
0
    { // '^='
2581
101k
        if (p->error_indicator) {
2582
0
            p->level--;
2583
0
            return NULL;
2584
0
        }
2585
101k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'^='"));
2586
101k
        Token * _literal;
2587
101k
        if (
2588
101k
            (_literal = _PyPegen_expect_token(p, 43))  // token='^='
2589
101k
        )
2590
218
        {
2591
218
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'^='"));
2592
218
            _res = _PyPegen_augoperator ( p , BitXor );
2593
218
            if (_res == NULL && PyErr_Occurred()) {
2594
0
                p->error_indicator = 1;
2595
0
                p->level--;
2596
0
                return NULL;
2597
0
            }
2598
218
            goto done;
2599
218
        }
2600
101k
        p->mark = _mark;
2601
101k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2602
101k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'^='"));
2603
101k
    }
2604
0
    { // '<<='
2605
101k
        if (p->error_indicator) {
2606
0
            p->level--;
2607
0
            return NULL;
2608
0
        }
2609
101k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<<='"));
2610
101k
        Token * _literal;
2611
101k
        if (
2612
101k
            (_literal = _PyPegen_expect_token(p, 44))  // token='<<='
2613
101k
        )
2614
217
        {
2615
217
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<<='"));
2616
217
            _res = _PyPegen_augoperator ( p , LShift );
2617
217
            if (_res == NULL && PyErr_Occurred()) {
2618
0
                p->error_indicator = 1;
2619
0
                p->level--;
2620
0
                return NULL;
2621
0
            }
2622
217
            goto done;
2623
217
        }
2624
101k
        p->mark = _mark;
2625
101k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2626
101k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<<='"));
2627
101k
    }
2628
0
    { // '>>='
2629
101k
        if (p->error_indicator) {
2630
0
            p->level--;
2631
0
            return NULL;
2632
0
        }
2633
101k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>>='"));
2634
101k
        Token * _literal;
2635
101k
        if (
2636
101k
            (_literal = _PyPegen_expect_token(p, 45))  // token='>>='
2637
101k
        )
2638
201
        {
2639
201
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>>='"));
2640
201
            _res = _PyPegen_augoperator ( p , RShift );
2641
201
            if (_res == NULL && PyErr_Occurred()) {
2642
0
                p->error_indicator = 1;
2643
0
                p->level--;
2644
0
                return NULL;
2645
0
            }
2646
201
            goto done;
2647
201
        }
2648
100k
        p->mark = _mark;
2649
100k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2650
100k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>>='"));
2651
100k
    }
2652
0
    { // '**='
2653
100k
        if (p->error_indicator) {
2654
0
            p->level--;
2655
0
            return NULL;
2656
0
        }
2657
100k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**='"));
2658
100k
        Token * _literal;
2659
100k
        if (
2660
100k
            (_literal = _PyPegen_expect_token(p, 46))  // token='**='
2661
100k
        )
2662
132
        {
2663
132
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**='"));
2664
132
            _res = _PyPegen_augoperator ( p , Pow );
2665
132
            if (_res == NULL && PyErr_Occurred()) {
2666
0
                p->error_indicator = 1;
2667
0
                p->level--;
2668
0
                return NULL;
2669
0
            }
2670
132
            goto done;
2671
132
        }
2672
100k
        p->mark = _mark;
2673
100k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2674
100k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**='"));
2675
100k
    }
2676
0
    { // '//='
2677
100k
        if (p->error_indicator) {
2678
0
            p->level--;
2679
0
            return NULL;
2680
0
        }
2681
100k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'//='"));
2682
100k
        Token * _literal;
2683
100k
        if (
2684
100k
            (_literal = _PyPegen_expect_token(p, 48))  // token='//='
2685
100k
        )
2686
202
        {
2687
202
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'//='"));
2688
202
            _res = _PyPegen_augoperator ( p , FloorDiv );
2689
202
            if (_res == NULL && PyErr_Occurred()) {
2690
0
                p->error_indicator = 1;
2691
0
                p->level--;
2692
0
                return NULL;
2693
0
            }
2694
202
            goto done;
2695
202
        }
2696
100k
        p->mark = _mark;
2697
100k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2698
100k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'//='"));
2699
100k
    }
2700
0
    _res = NULL;
2701
103k
  done:
2702
103k
    p->level--;
2703
103k
    return _res;
2704
100k
}
2705
2706
// return_stmt: 'return' star_expressions?
2707
static stmt_ty
2708
return_stmt_rule(Parser *p)
2709
7.49k
{
2710
7.49k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2711
0
        _Pypegen_stack_overflow(p);
2712
0
    }
2713
7.49k
    if (p->error_indicator) {
2714
0
        p->level--;
2715
0
        return NULL;
2716
0
    }
2717
7.49k
    stmt_ty _res = NULL;
2718
7.49k
    int _mark = p->mark;
2719
7.49k
    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
7.49k
    int _start_lineno = p->tokens[_mark]->lineno;
2725
7.49k
    UNUSED(_start_lineno); // Only used by EXTRA macro
2726
7.49k
    int _start_col_offset = p->tokens[_mark]->col_offset;
2727
7.49k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
2728
7.49k
    { // 'return' star_expressions?
2729
7.49k
        if (p->error_indicator) {
2730
0
            p->level--;
2731
0
            return NULL;
2732
0
        }
2733
7.49k
        D(fprintf(stderr, "%*c> return_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'return' star_expressions?"));
2734
7.49k
        Token * _keyword;
2735
7.49k
        void *a;
2736
7.49k
        if (
2737
7.49k
            (_keyword = _PyPegen_expect_token(p, 522))  // token='return'
2738
7.49k
            &&
2739
7.49k
            (a = star_expressions_rule(p), !p->error_indicator)  // star_expressions?
2740
7.49k
        )
2741
7.48k
        {
2742
7.48k
            D(fprintf(stderr, "%*c+ return_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'return' star_expressions?"));
2743
7.48k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2744
7.48k
            if (_token == NULL) {
2745
0
                p->level--;
2746
0
                return NULL;
2747
0
            }
2748
7.48k
            int _end_lineno = _token->end_lineno;
2749
7.48k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2750
7.48k
            int _end_col_offset = _token->end_col_offset;
2751
7.48k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2752
7.48k
            _res = _PyAST_Return ( a , EXTRA );
2753
7.48k
            if (_res == NULL && PyErr_Occurred()) {
2754
0
                p->error_indicator = 1;
2755
0
                p->level--;
2756
0
                return NULL;
2757
0
            }
2758
7.48k
            goto done;
2759
7.48k
        }
2760
10
        p->mark = _mark;
2761
10
        D(fprintf(stderr, "%*c%s return_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2762
10
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'return' star_expressions?"));
2763
10
    }
2764
0
    _res = NULL;
2765
7.49k
  done:
2766
7.49k
    p->level--;
2767
7.49k
    return _res;
2768
10
}
2769
2770
// raise_stmt:
2771
//     | 'raise' expression 'from' expression
2772
//     | invalid_raise_stmt
2773
//     | 'raise' expression
2774
//     | 'raise'
2775
static stmt_ty
2776
raise_stmt_rule(Parser *p)
2777
3.35k
{
2778
3.35k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2779
0
        _Pypegen_stack_overflow(p);
2780
0
    }
2781
3.35k
    if (p->error_indicator) {
2782
0
        p->level--;
2783
0
        return NULL;
2784
0
    }
2785
3.35k
    stmt_ty _res = NULL;
2786
3.35k
    int _mark = p->mark;
2787
3.35k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2788
0
        p->error_indicator = 1;
2789
0
        p->level--;
2790
0
        return NULL;
2791
0
    }
2792
3.35k
    int _start_lineno = p->tokens[_mark]->lineno;
2793
3.35k
    UNUSED(_start_lineno); // Only used by EXTRA macro
2794
3.35k
    int _start_col_offset = p->tokens[_mark]->col_offset;
2795
3.35k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
2796
3.35k
    { // 'raise' expression 'from' expression
2797
3.35k
        if (p->error_indicator) {
2798
0
            p->level--;
2799
0
            return NULL;
2800
0
        }
2801
3.35k
        D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' expression 'from' expression"));
2802
3.35k
        Token * _keyword;
2803
3.35k
        Token * _keyword_1;
2804
3.35k
        expr_ty a;
2805
3.35k
        expr_ty b;
2806
3.35k
        if (
2807
3.35k
            (_keyword = _PyPegen_expect_token(p, 628))  // token='raise'
2808
3.35k
            &&
2809
3.35k
            (a = expression_rule(p))  // expression
2810
3.35k
            &&
2811
3.35k
            (_keyword_1 = _PyPegen_expect_token(p, 638))  // token='from'
2812
3.35k
            &&
2813
3.35k
            (b = expression_rule(p))  // expression
2814
3.35k
        )
2815
466
        {
2816
466
            D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' expression 'from' expression"));
2817
466
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2818
466
            if (_token == NULL) {
2819
0
                p->level--;
2820
0
                return NULL;
2821
0
            }
2822
466
            int _end_lineno = _token->end_lineno;
2823
466
            UNUSED(_end_lineno); // Only used by EXTRA macro
2824
466
            int _end_col_offset = _token->end_col_offset;
2825
466
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2826
466
            _res = _PyAST_Raise ( a , b , EXTRA );
2827
466
            if (_res == NULL && PyErr_Occurred()) {
2828
0
                p->error_indicator = 1;
2829
0
                p->level--;
2830
0
                return NULL;
2831
0
            }
2832
466
            goto done;
2833
466
        }
2834
2.88k
        p->mark = _mark;
2835
2.88k
        D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2836
2.88k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' expression 'from' expression"));
2837
2.88k
    }
2838
2.88k
    if (p->call_invalid_rules) { // invalid_raise_stmt
2839
596
        if (p->error_indicator) {
2840
18
            p->level--;
2841
18
            return NULL;
2842
18
        }
2843
578
        D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_raise_stmt"));
2844
578
        void *invalid_raise_stmt_var;
2845
578
        if (
2846
578
            (invalid_raise_stmt_var = invalid_raise_stmt_rule(p))  // invalid_raise_stmt
2847
578
        )
2848
0
        {
2849
0
            D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_raise_stmt"));
2850
0
            _res = invalid_raise_stmt_var;
2851
0
            goto done;
2852
0
        }
2853
578
        p->mark = _mark;
2854
578
        D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2855
578
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_raise_stmt"));
2856
578
    }
2857
2.87k
    { // 'raise' expression
2858
2.87k
        if (p->error_indicator) {
2859
5
            p->level--;
2860
5
            return NULL;
2861
5
        }
2862
2.86k
        D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' expression"));
2863
2.86k
        Token * _keyword;
2864
2.86k
        expr_ty a;
2865
2.86k
        if (
2866
2.86k
            (_keyword = _PyPegen_expect_token(p, 628))  // token='raise'
2867
2.86k
            &&
2868
2.86k
            (a = expression_rule(p))  // expression
2869
2.86k
        )
2870
2.07k
        {
2871
2.07k
            D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' expression"));
2872
2.07k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2873
2.07k
            if (_token == NULL) {
2874
0
                p->level--;
2875
0
                return NULL;
2876
0
            }
2877
2.07k
            int _end_lineno = _token->end_lineno;
2878
2.07k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2879
2.07k
            int _end_col_offset = _token->end_col_offset;
2880
2.07k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2881
2.07k
            _res = _PyAST_Raise ( a , NULL , EXTRA );
2882
2.07k
            if (_res == NULL && PyErr_Occurred()) {
2883
0
                p->error_indicator = 1;
2884
0
                p->level--;
2885
0
                return NULL;
2886
0
            }
2887
2.07k
            goto done;
2888
2.07k
        }
2889
790
        p->mark = _mark;
2890
790
        D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2891
790
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' expression"));
2892
790
    }
2893
0
    { // 'raise'
2894
790
        if (p->error_indicator) {
2895
0
            p->level--;
2896
0
            return NULL;
2897
0
        }
2898
790
        D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise'"));
2899
790
        Token * _keyword;
2900
790
        if (
2901
790
            (_keyword = _PyPegen_expect_token(p, 628))  // token='raise'
2902
790
        )
2903
790
        {
2904
790
            D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise'"));
2905
790
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2906
790
            if (_token == NULL) {
2907
0
                p->level--;
2908
0
                return NULL;
2909
0
            }
2910
790
            int _end_lineno = _token->end_lineno;
2911
790
            UNUSED(_end_lineno); // Only used by EXTRA macro
2912
790
            int _end_col_offset = _token->end_col_offset;
2913
790
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2914
790
            _res = _PyAST_Raise ( NULL , NULL , EXTRA );
2915
790
            if (_res == NULL && PyErr_Occurred()) {
2916
0
                p->error_indicator = 1;
2917
0
                p->level--;
2918
0
                return NULL;
2919
0
            }
2920
790
            goto done;
2921
790
        }
2922
0
        p->mark = _mark;
2923
0
        D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2924
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise'"));
2925
0
    }
2926
0
    _res = NULL;
2927
3.33k
  done:
2928
3.33k
    p->level--;
2929
3.33k
    return _res;
2930
0
}
2931
2932
// pass_stmt: 'pass'
2933
static stmt_ty
2934
pass_stmt_rule(Parser *p)
2935
205k
{
2936
205k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2937
0
        _Pypegen_stack_overflow(p);
2938
0
    }
2939
205k
    if (p->error_indicator) {
2940
0
        p->level--;
2941
0
        return NULL;
2942
0
    }
2943
205k
    stmt_ty _res = NULL;
2944
205k
    int _mark = p->mark;
2945
205k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2946
0
        p->error_indicator = 1;
2947
0
        p->level--;
2948
0
        return NULL;
2949
0
    }
2950
205k
    int _start_lineno = p->tokens[_mark]->lineno;
2951
205k
    UNUSED(_start_lineno); // Only used by EXTRA macro
2952
205k
    int _start_col_offset = p->tokens[_mark]->col_offset;
2953
205k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
2954
205k
    { // 'pass'
2955
205k
        if (p->error_indicator) {
2956
0
            p->level--;
2957
0
            return NULL;
2958
0
        }
2959
205k
        D(fprintf(stderr, "%*c> pass_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'pass'"));
2960
205k
        Token * _keyword;
2961
205k
        if (
2962
205k
            (_keyword = _PyPegen_expect_token(p, 527))  // token='pass'
2963
205k
        )
2964
1.82k
        {
2965
1.82k
            D(fprintf(stderr, "%*c+ pass_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'pass'"));
2966
1.82k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2967
1.82k
            if (_token == NULL) {
2968
0
                p->level--;
2969
0
                return NULL;
2970
0
            }
2971
1.82k
            int _end_lineno = _token->end_lineno;
2972
1.82k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2973
1.82k
            int _end_col_offset = _token->end_col_offset;
2974
1.82k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2975
1.82k
            _res = _PyAST_Pass ( EXTRA );
2976
1.82k
            if (_res == NULL && PyErr_Occurred()) {
2977
0
                p->error_indicator = 1;
2978
0
                p->level--;
2979
0
                return NULL;
2980
0
            }
2981
1.82k
            goto done;
2982
1.82k
        }
2983
203k
        p->mark = _mark;
2984
203k
        D(fprintf(stderr, "%*c%s pass_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2985
203k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'pass'"));
2986
203k
    }
2987
0
    _res = NULL;
2988
205k
  done:
2989
205k
    p->level--;
2990
205k
    return _res;
2991
203k
}
2992
2993
// break_stmt: 'break'
2994
static stmt_ty
2995
break_stmt_rule(Parser *p)
2996
204k
{
2997
204k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2998
0
        _Pypegen_stack_overflow(p);
2999
0
    }
3000
204k
    if (p->error_indicator) {
3001
0
        p->level--;
3002
0
        return NULL;
3003
0
    }
3004
204k
    stmt_ty _res = NULL;
3005
204k
    int _mark = p->mark;
3006
204k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3007
0
        p->error_indicator = 1;
3008
0
        p->level--;
3009
0
        return NULL;
3010
0
    }
3011
204k
    int _start_lineno = p->tokens[_mark]->lineno;
3012
204k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3013
204k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3014
204k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3015
204k
    { // 'break'
3016
204k
        if (p->error_indicator) {
3017
0
            p->level--;
3018
0
            return NULL;
3019
0
        }
3020
204k
        D(fprintf(stderr, "%*c> break_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'break'"));
3021
204k
        Token * _keyword;
3022
204k
        if (
3023
204k
            (_keyword = _PyPegen_expect_token(p, 528))  // token='break'
3024
204k
        )
3025
1.47k
        {
3026
1.47k
            D(fprintf(stderr, "%*c+ break_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'break'"));
3027
1.47k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3028
1.47k
            if (_token == NULL) {
3029
0
                p->level--;
3030
0
                return NULL;
3031
0
            }
3032
1.47k
            int _end_lineno = _token->end_lineno;
3033
1.47k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3034
1.47k
            int _end_col_offset = _token->end_col_offset;
3035
1.47k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3036
1.47k
            _res = _PyAST_Break ( EXTRA );
3037
1.47k
            if (_res == NULL && PyErr_Occurred()) {
3038
0
                p->error_indicator = 1;
3039
0
                p->level--;
3040
0
                return NULL;
3041
0
            }
3042
1.47k
            goto done;
3043
1.47k
        }
3044
203k
        p->mark = _mark;
3045
203k
        D(fprintf(stderr, "%*c%s break_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3046
203k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'break'"));
3047
203k
    }
3048
0
    _res = NULL;
3049
204k
  done:
3050
204k
    p->level--;
3051
204k
    return _res;
3052
203k
}
3053
3054
// continue_stmt: 'continue'
3055
static stmt_ty
3056
continue_stmt_rule(Parser *p)
3057
204k
{
3058
204k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3059
0
        _Pypegen_stack_overflow(p);
3060
0
    }
3061
204k
    if (p->error_indicator) {
3062
0
        p->level--;
3063
0
        return NULL;
3064
0
    }
3065
204k
    stmt_ty _res = NULL;
3066
204k
    int _mark = p->mark;
3067
204k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3068
0
        p->error_indicator = 1;
3069
0
        p->level--;
3070
0
        return NULL;
3071
0
    }
3072
204k
    int _start_lineno = p->tokens[_mark]->lineno;
3073
204k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3074
204k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3075
204k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3076
204k
    { // 'continue'
3077
204k
        if (p->error_indicator) {
3078
0
            p->level--;
3079
0
            return NULL;
3080
0
        }
3081
204k
        D(fprintf(stderr, "%*c> continue_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'continue'"));
3082
204k
        Token * _keyword;
3083
204k
        if (
3084
204k
            (_keyword = _PyPegen_expect_token(p, 529))  // token='continue'
3085
204k
        )
3086
2.58k
        {
3087
2.58k
            D(fprintf(stderr, "%*c+ continue_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'continue'"));
3088
2.58k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3089
2.58k
            if (_token == NULL) {
3090
0
                p->level--;
3091
0
                return NULL;
3092
0
            }
3093
2.58k
            int _end_lineno = _token->end_lineno;
3094
2.58k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3095
2.58k
            int _end_col_offset = _token->end_col_offset;
3096
2.58k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3097
2.58k
            _res = _PyAST_Continue ( EXTRA );
3098
2.58k
            if (_res == NULL && PyErr_Occurred()) {
3099
0
                p->error_indicator = 1;
3100
0
                p->level--;
3101
0
                return NULL;
3102
0
            }
3103
2.58k
            goto done;
3104
2.58k
        }
3105
201k
        p->mark = _mark;
3106
201k
        D(fprintf(stderr, "%*c%s continue_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3107
201k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'continue'"));
3108
201k
    }
3109
0
    _res = NULL;
3110
204k
  done:
3111
204k
    p->level--;
3112
204k
    return _res;
3113
201k
}
3114
3115
// global_stmt: 'global' ','.NAME+
3116
static stmt_ty
3117
global_stmt_rule(Parser *p)
3118
686
{
3119
686
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3120
0
        _Pypegen_stack_overflow(p);
3121
0
    }
3122
686
    if (p->error_indicator) {
3123
0
        p->level--;
3124
0
        return NULL;
3125
0
    }
3126
686
    stmt_ty _res = NULL;
3127
686
    int _mark = p->mark;
3128
686
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3129
0
        p->error_indicator = 1;
3130
0
        p->level--;
3131
0
        return NULL;
3132
0
    }
3133
686
    int _start_lineno = p->tokens[_mark]->lineno;
3134
686
    UNUSED(_start_lineno); // Only used by EXTRA macro
3135
686
    int _start_col_offset = p->tokens[_mark]->col_offset;
3136
686
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3137
686
    { // 'global' ','.NAME+
3138
686
        if (p->error_indicator) {
3139
0
            p->level--;
3140
0
            return NULL;
3141
0
        }
3142
686
        D(fprintf(stderr, "%*c> global_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'global' ','.NAME+"));
3143
686
        Token * _keyword;
3144
686
        asdl_expr_seq* a;
3145
686
        if (
3146
686
            (_keyword = _PyPegen_expect_token(p, 530))  // token='global'
3147
686
            &&
3148
686
            (a = (asdl_expr_seq*)_gather_14_rule(p))  // ','.NAME+
3149
686
        )
3150
681
        {
3151
681
            D(fprintf(stderr, "%*c+ global_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'global' ','.NAME+"));
3152
681
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3153
681
            if (_token == NULL) {
3154
0
                p->level--;
3155
0
                return NULL;
3156
0
            }
3157
681
            int _end_lineno = _token->end_lineno;
3158
681
            UNUSED(_end_lineno); // Only used by EXTRA macro
3159
681
            int _end_col_offset = _token->end_col_offset;
3160
681
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3161
681
            _res = _PyAST_Global ( CHECK ( asdl_identifier_seq* , _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
3162
681
            if (_res == NULL && PyErr_Occurred()) {
3163
0
                p->error_indicator = 1;
3164
0
                p->level--;
3165
0
                return NULL;
3166
0
            }
3167
681
            goto done;
3168
681
        }
3169
5
        p->mark = _mark;
3170
5
        D(fprintf(stderr, "%*c%s global_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3171
5
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'global' ','.NAME+"));
3172
5
    }
3173
0
    _res = NULL;
3174
686
  done:
3175
686
    p->level--;
3176
686
    return _res;
3177
5
}
3178
3179
// nonlocal_stmt: 'nonlocal' ','.NAME+
3180
static stmt_ty
3181
nonlocal_stmt_rule(Parser *p)
3182
1.02k
{
3183
1.02k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3184
0
        _Pypegen_stack_overflow(p);
3185
0
    }
3186
1.02k
    if (p->error_indicator) {
3187
0
        p->level--;
3188
0
        return NULL;
3189
0
    }
3190
1.02k
    stmt_ty _res = NULL;
3191
1.02k
    int _mark = p->mark;
3192
1.02k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3193
0
        p->error_indicator = 1;
3194
0
        p->level--;
3195
0
        return NULL;
3196
0
    }
3197
1.02k
    int _start_lineno = p->tokens[_mark]->lineno;
3198
1.02k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3199
1.02k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3200
1.02k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3201
1.02k
    { // 'nonlocal' ','.NAME+
3202
1.02k
        if (p->error_indicator) {
3203
0
            p->level--;
3204
0
            return NULL;
3205
0
        }
3206
1.02k
        D(fprintf(stderr, "%*c> nonlocal_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'nonlocal' ','.NAME+"));
3207
1.02k
        Token * _keyword;
3208
1.02k
        asdl_expr_seq* a;
3209
1.02k
        if (
3210
1.02k
            (_keyword = _PyPegen_expect_token(p, 531))  // token='nonlocal'
3211
1.02k
            &&
3212
1.02k
            (a = (asdl_expr_seq*)_gather_14_rule(p))  // ','.NAME+
3213
1.02k
        )
3214
1.01k
        {
3215
1.01k
            D(fprintf(stderr, "%*c+ nonlocal_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'nonlocal' ','.NAME+"));
3216
1.01k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3217
1.01k
            if (_token == NULL) {
3218
0
                p->level--;
3219
0
                return NULL;
3220
0
            }
3221
1.01k
            int _end_lineno = _token->end_lineno;
3222
1.01k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3223
1.01k
            int _end_col_offset = _token->end_col_offset;
3224
1.01k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3225
1.01k
            _res = _PyAST_Nonlocal ( CHECK ( asdl_identifier_seq* , _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
3226
1.01k
            if (_res == NULL && PyErr_Occurred()) {
3227
0
                p->error_indicator = 1;
3228
0
                p->level--;
3229
0
                return NULL;
3230
0
            }
3231
1.01k
            goto done;
3232
1.01k
        }
3233
3
        p->mark = _mark;
3234
3
        D(fprintf(stderr, "%*c%s nonlocal_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3235
3
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'nonlocal' ','.NAME+"));
3236
3
    }
3237
0
    _res = NULL;
3238
1.02k
  done:
3239
1.02k
    p->level--;
3240
1.02k
    return _res;
3241
3
}
3242
3243
// del_stmt: 'del' del_targets &(';' | NEWLINE) | invalid_del_stmt
3244
static stmt_ty
3245
del_stmt_rule(Parser *p)
3246
1.47k
{
3247
1.47k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3248
0
        _Pypegen_stack_overflow(p);
3249
0
    }
3250
1.47k
    if (p->error_indicator) {
3251
0
        p->level--;
3252
0
        return NULL;
3253
0
    }
3254
1.47k
    stmt_ty _res = NULL;
3255
1.47k
    int _mark = p->mark;
3256
1.47k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3257
0
        p->error_indicator = 1;
3258
0
        p->level--;
3259
0
        return NULL;
3260
0
    }
3261
1.47k
    int _start_lineno = p->tokens[_mark]->lineno;
3262
1.47k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3263
1.47k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3264
1.47k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3265
1.47k
    { // 'del' del_targets &(';' | NEWLINE)
3266
1.47k
        if (p->error_indicator) {
3267
0
            p->level--;
3268
0
            return NULL;
3269
0
        }
3270
1.47k
        D(fprintf(stderr, "%*c> del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3271
1.47k
        Token * _keyword;
3272
1.47k
        asdl_expr_seq* a;
3273
1.47k
        if (
3274
1.47k
            (_keyword = _PyPegen_expect_token(p, 630))  // token='del'
3275
1.47k
            &&
3276
1.47k
            (a = del_targets_rule(p))  // del_targets
3277
1.47k
            &&
3278
1.47k
            _PyPegen_lookahead(1, _tmp_15_rule, p)
3279
1.47k
        )
3280
901
        {
3281
901
            D(fprintf(stderr, "%*c+ del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3282
901
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3283
901
            if (_token == NULL) {
3284
0
                p->level--;
3285
0
                return NULL;
3286
0
            }
3287
901
            int _end_lineno = _token->end_lineno;
3288
901
            UNUSED(_end_lineno); // Only used by EXTRA macro
3289
901
            int _end_col_offset = _token->end_col_offset;
3290
901
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3291
901
            _res = _PyAST_Delete ( a , EXTRA );
3292
901
            if (_res == NULL && PyErr_Occurred()) {
3293
0
                p->error_indicator = 1;
3294
0
                p->level--;
3295
0
                return NULL;
3296
0
            }
3297
901
            goto done;
3298
901
        }
3299
569
        p->mark = _mark;
3300
569
        D(fprintf(stderr, "%*c%s del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3301
569
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3302
569
    }
3303
569
    if (p->call_invalid_rules) { // invalid_del_stmt
3304
428
        if (p->error_indicator) {
3305
126
            p->level--;
3306
126
            return NULL;
3307
126
        }
3308
302
        D(fprintf(stderr, "%*c> del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_del_stmt"));
3309
302
        void *invalid_del_stmt_var;
3310
302
        if (
3311
302
            (invalid_del_stmt_var = invalid_del_stmt_rule(p))  // invalid_del_stmt
3312
302
        )
3313
0
        {
3314
0
            D(fprintf(stderr, "%*c+ del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_del_stmt"));
3315
0
            _res = invalid_del_stmt_var;
3316
0
            goto done;
3317
0
        }
3318
302
        p->mark = _mark;
3319
302
        D(fprintf(stderr, "%*c%s del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3320
302
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_del_stmt"));
3321
302
    }
3322
443
    _res = NULL;
3323
1.34k
  done:
3324
1.34k
    p->level--;
3325
1.34k
    return _res;
3326
443
}
3327
3328
// yield_stmt: yield_expr
3329
static stmt_ty
3330
yield_stmt_rule(Parser *p)
3331
1.53k
{
3332
1.53k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3333
0
        _Pypegen_stack_overflow(p);
3334
0
    }
3335
1.53k
    if (p->error_indicator) {
3336
0
        p->level--;
3337
0
        return NULL;
3338
0
    }
3339
1.53k
    stmt_ty _res = NULL;
3340
1.53k
    int _mark = p->mark;
3341
1.53k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3342
0
        p->error_indicator = 1;
3343
0
        p->level--;
3344
0
        return NULL;
3345
0
    }
3346
1.53k
    int _start_lineno = p->tokens[_mark]->lineno;
3347
1.53k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3348
1.53k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3349
1.53k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3350
1.53k
    { // yield_expr
3351
1.53k
        if (p->error_indicator) {
3352
0
            p->level--;
3353
0
            return NULL;
3354
0
        }
3355
1.53k
        D(fprintf(stderr, "%*c> yield_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
3356
1.53k
        expr_ty y;
3357
1.53k
        if (
3358
1.53k
            (y = yield_expr_rule(p))  // yield_expr
3359
1.53k
        )
3360
1.52k
        {
3361
1.52k
            D(fprintf(stderr, "%*c+ yield_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
3362
1.52k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3363
1.52k
            if (_token == NULL) {
3364
0
                p->level--;
3365
0
                return NULL;
3366
0
            }
3367
1.52k
            int _end_lineno = _token->end_lineno;
3368
1.52k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3369
1.52k
            int _end_col_offset = _token->end_col_offset;
3370
1.52k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3371
1.52k
            _res = _PyAST_Expr ( y , EXTRA );
3372
1.52k
            if (_res == NULL && PyErr_Occurred()) {
3373
0
                p->error_indicator = 1;
3374
0
                p->level--;
3375
0
                return NULL;
3376
0
            }
3377
1.52k
            goto done;
3378
1.52k
        }
3379
6
        p->mark = _mark;
3380
6
        D(fprintf(stderr, "%*c%s yield_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3381
6
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
3382
6
    }
3383
0
    _res = NULL;
3384
1.53k
  done:
3385
1.53k
    p->level--;
3386
1.53k
    return _res;
3387
6
}
3388
3389
// assert_stmt: 'assert' expression [',' expression]
3390
static stmt_ty
3391
assert_stmt_rule(Parser *p)
3392
747
{
3393
747
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3394
0
        _Pypegen_stack_overflow(p);
3395
0
    }
3396
747
    if (p->error_indicator) {
3397
0
        p->level--;
3398
0
        return NULL;
3399
0
    }
3400
747
    stmt_ty _res = NULL;
3401
747
    int _mark = p->mark;
3402
747
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3403
0
        p->error_indicator = 1;
3404
0
        p->level--;
3405
0
        return NULL;
3406
0
    }
3407
747
    int _start_lineno = p->tokens[_mark]->lineno;
3408
747
    UNUSED(_start_lineno); // Only used by EXTRA macro
3409
747
    int _start_col_offset = p->tokens[_mark]->col_offset;
3410
747
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3411
747
    { // 'assert' expression [',' expression]
3412
747
        if (p->error_indicator) {
3413
0
            p->level--;
3414
0
            return NULL;
3415
0
        }
3416
747
        D(fprintf(stderr, "%*c> assert_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'assert' expression [',' expression]"));
3417
747
        Token * _keyword;
3418
747
        expr_ty a;
3419
747
        void *b;
3420
747
        if (
3421
747
            (_keyword = _PyPegen_expect_token(p, 533))  // token='assert'
3422
747
            &&
3423
747
            (a = expression_rule(p))  // expression
3424
747
            &&
3425
747
            (b = _tmp_16_rule(p), !p->error_indicator)  // [',' expression]
3426
747
        )
3427
709
        {
3428
709
            D(fprintf(stderr, "%*c+ assert_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'assert' expression [',' expression]"));
3429
709
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3430
709
            if (_token == NULL) {
3431
0
                p->level--;
3432
0
                return NULL;
3433
0
            }
3434
709
            int _end_lineno = _token->end_lineno;
3435
709
            UNUSED(_end_lineno); // Only used by EXTRA macro
3436
709
            int _end_col_offset = _token->end_col_offset;
3437
709
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3438
709
            _res = _PyAST_Assert ( a , b , EXTRA );
3439
709
            if (_res == NULL && PyErr_Occurred()) {
3440
0
                p->error_indicator = 1;
3441
0
                p->level--;
3442
0
                return NULL;
3443
0
            }
3444
709
            goto done;
3445
709
        }
3446
38
        p->mark = _mark;
3447
38
        D(fprintf(stderr, "%*c%s assert_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3448
38
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'assert' expression [',' expression]"));
3449
38
    }
3450
0
    _res = NULL;
3451
747
  done:
3452
747
    p->level--;
3453
747
    return _res;
3454
38
}
3455
3456
// import_stmt: invalid_import | import_name | import_from
3457
static stmt_ty
3458
import_stmt_rule(Parser *p)
3459
5.68k
{
3460
5.68k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3461
0
        _Pypegen_stack_overflow(p);
3462
0
    }
3463
5.68k
    if (p->error_indicator) {
3464
0
        p->level--;
3465
0
        return NULL;
3466
0
    }
3467
5.68k
    stmt_ty _res = NULL;
3468
5.68k
    int _mark = p->mark;
3469
5.68k
    if (p->call_invalid_rules) { // invalid_import
3470
1.78k
        if (p->error_indicator) {
3471
0
            p->level--;
3472
0
            return NULL;
3473
0
        }
3474
1.78k
        D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_import"));
3475
1.78k
        void *invalid_import_var;
3476
1.78k
        if (
3477
1.78k
            (invalid_import_var = invalid_import_rule(p))  // invalid_import
3478
1.78k
        )
3479
0
        {
3480
0
            D(fprintf(stderr, "%*c+ import_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_import"));
3481
0
            _res = invalid_import_var;
3482
0
            goto done;
3483
0
        }
3484
1.78k
        p->mark = _mark;
3485
1.78k
        D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3486
1.78k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_import"));
3487
1.78k
    }
3488
5.68k
    { // import_name
3489
5.68k
        if (p->error_indicator) {
3490
7
            p->level--;
3491
7
            return NULL;
3492
7
        }
3493
5.67k
        D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_name"));
3494
5.67k
        stmt_ty import_name_var;
3495
5.67k
        if (
3496
5.67k
            (import_name_var = import_name_rule(p))  // import_name
3497
5.67k
        )
3498
2.56k
        {
3499
2.56k
            D(fprintf(stderr, "%*c+ import_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_name"));
3500
2.56k
            _res = import_name_var;
3501
2.56k
            goto done;
3502
2.56k
        }
3503
3.10k
        p->mark = _mark;
3504
3.10k
        D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3505
3.10k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_name"));
3506
3.10k
    }
3507
0
    { // import_from
3508
3.10k
        if (p->error_indicator) {
3509
27
            p->level--;
3510
27
            return NULL;
3511
27
        }
3512
3.08k
        D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from"));
3513
3.08k
        stmt_ty import_from_var;
3514
3.08k
        if (
3515
3.08k
            (import_from_var = import_from_rule(p))  // import_from
3516
3.08k
        )
3517
2.87k
        {
3518
2.87k
            D(fprintf(stderr, "%*c+ import_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from"));
3519
2.87k
            _res = import_from_var;
3520
2.87k
            goto done;
3521
2.87k
        }
3522
210
        p->mark = _mark;
3523
210
        D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3524
210
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from"));
3525
210
    }
3526
0
    _res = NULL;
3527
5.64k
  done:
3528
5.64k
    p->level--;
3529
5.64k
    return _res;
3530
210
}
3531
3532
// import_name: 'import' dotted_as_names
3533
static stmt_ty
3534
import_name_rule(Parser *p)
3535
5.67k
{
3536
5.67k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3537
0
        _Pypegen_stack_overflow(p);
3538
0
    }
3539
5.67k
    if (p->error_indicator) {
3540
0
        p->level--;
3541
0
        return NULL;
3542
0
    }
3543
5.67k
    stmt_ty _res = NULL;
3544
5.67k
    int _mark = p->mark;
3545
5.67k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3546
0
        p->error_indicator = 1;
3547
0
        p->level--;
3548
0
        return NULL;
3549
0
    }
3550
5.67k
    int _start_lineno = p->tokens[_mark]->lineno;
3551
5.67k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3552
5.67k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3553
5.67k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3554
5.67k
    { // 'import' dotted_as_names
3555
5.67k
        if (p->error_indicator) {
3556
0
            p->level--;
3557
0
            return NULL;
3558
0
        }
3559
5.67k
        D(fprintf(stderr, "%*c> import_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import' dotted_as_names"));
3560
5.67k
        Token * _keyword;
3561
5.67k
        asdl_alias_seq* a;
3562
5.67k
        if (
3563
5.67k
            (_keyword = _PyPegen_expect_token(p, 639))  // token='import'
3564
5.67k
            &&
3565
5.67k
            (a = dotted_as_names_rule(p))  // dotted_as_names
3566
5.67k
        )
3567
2.56k
        {
3568
2.56k
            D(fprintf(stderr, "%*c+ import_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import' dotted_as_names"));
3569
2.56k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3570
2.56k
            if (_token == NULL) {
3571
0
                p->level--;
3572
0
                return NULL;
3573
0
            }
3574
2.56k
            int _end_lineno = _token->end_lineno;
3575
2.56k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3576
2.56k
            int _end_col_offset = _token->end_col_offset;
3577
2.56k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3578
2.56k
            _res = _PyAST_Import ( a , EXTRA );
3579
2.56k
            if (_res == NULL && PyErr_Occurred()) {
3580
0
                p->error_indicator = 1;
3581
0
                p->level--;
3582
0
                return NULL;
3583
0
            }
3584
2.56k
            goto done;
3585
2.56k
        }
3586
3.10k
        p->mark = _mark;
3587
3.10k
        D(fprintf(stderr, "%*c%s import_name[%d-%d]: %s failed!\n", p->level, ' ',
3588
3.10k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import' dotted_as_names"));
3589
3.10k
    }
3590
0
    _res = NULL;
3591
5.67k
  done:
3592
5.67k
    p->level--;
3593
5.67k
    return _res;
3594
3.10k
}
3595
3596
// import_from:
3597
//     | 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
3598
//     | 'from' (('.' | '...'))+ 'import' import_from_targets
3599
static stmt_ty
3600
import_from_rule(Parser *p)
3601
3.08k
{
3602
3.08k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3603
0
        _Pypegen_stack_overflow(p);
3604
0
    }
3605
3.08k
    if (p->error_indicator) {
3606
0
        p->level--;
3607
0
        return NULL;
3608
0
    }
3609
3.08k
    stmt_ty _res = NULL;
3610
3.08k
    int _mark = p->mark;
3611
3.08k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3612
0
        p->error_indicator = 1;
3613
0
        p->level--;
3614
0
        return NULL;
3615
0
    }
3616
3.08k
    int _start_lineno = p->tokens[_mark]->lineno;
3617
3.08k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3618
3.08k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3619
3.08k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3620
3.08k
    { // 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
3621
3.08k
        if (p->error_indicator) {
3622
0
            p->level--;
3623
0
            return NULL;
3624
0
        }
3625
3.08k
        D(fprintf(stderr, "%*c> import_from[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3626
3.08k
        Token * _keyword;
3627
3.08k
        Token * _keyword_1;
3628
3.08k
        asdl_seq * a;
3629
3.08k
        expr_ty b;
3630
3.08k
        asdl_alias_seq* c;
3631
3.08k
        if (
3632
3.08k
            (_keyword = _PyPegen_expect_token(p, 638))  // token='from'
3633
3.08k
            &&
3634
3.08k
            (a = _loop0_17_rule(p))  // (('.' | '...'))*
3635
3.08k
            &&
3636
3.08k
            (b = dotted_name_rule(p))  // dotted_name
3637
3.08k
            &&
3638
3.08k
            (_keyword_1 = _PyPegen_expect_token(p, 639))  // token='import'
3639
3.08k
            &&
3640
3.08k
            (c = import_from_targets_rule(p))  // import_from_targets
3641
3.08k
        )
3642
1.83k
        {
3643
1.83k
            D(fprintf(stderr, "%*c+ import_from[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3644
1.83k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3645
1.83k
            if (_token == NULL) {
3646
0
                p->level--;
3647
0
                return NULL;
3648
0
            }
3649
1.83k
            int _end_lineno = _token->end_lineno;
3650
1.83k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3651
1.83k
            int _end_col_offset = _token->end_col_offset;
3652
1.83k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3653
1.83k
            _res = _PyPegen_checked_future_import ( p , b -> v . Name . id , c , _PyPegen_seq_count_dots ( a ) , EXTRA );
3654
1.83k
            if (_res == NULL && PyErr_Occurred()) {
3655
0
                p->error_indicator = 1;
3656
0
                p->level--;
3657
0
                return NULL;
3658
0
            }
3659
1.83k
            goto done;
3660
1.83k
        }
3661
1.24k
        p->mark = _mark;
3662
1.24k
        D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3663
1.24k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3664
1.24k
    }
3665
0
    { // 'from' (('.' | '...'))+ 'import' import_from_targets
3666
1.24k
        if (p->error_indicator) {
3667
26
            p->level--;
3668
26
            return NULL;
3669
26
        }
3670
1.22k
        D(fprintf(stderr, "%*c> import_from[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3671
1.22k
        Token * _keyword;
3672
1.22k
        Token * _keyword_1;
3673
1.22k
        asdl_seq * a;
3674
1.22k
        asdl_alias_seq* b;
3675
1.22k
        if (
3676
1.22k
            (_keyword = _PyPegen_expect_token(p, 638))  // token='from'
3677
1.22k
            &&
3678
1.22k
            (a = _loop1_18_rule(p))  // (('.' | '...'))+
3679
1.22k
            &&
3680
1.22k
            (_keyword_1 = _PyPegen_expect_token(p, 639))  // token='import'
3681
1.22k
            &&
3682
1.22k
            (b = import_from_targets_rule(p))  // import_from_targets
3683
1.22k
        )
3684
1.03k
        {
3685
1.03k
            D(fprintf(stderr, "%*c+ import_from[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3686
1.03k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3687
1.03k
            if (_token == NULL) {
3688
0
                p->level--;
3689
0
                return NULL;
3690
0
            }
3691
1.03k
            int _end_lineno = _token->end_lineno;
3692
1.03k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3693
1.03k
            int _end_col_offset = _token->end_col_offset;
3694
1.03k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3695
1.03k
            _res = _PyAST_ImportFrom ( NULL , b , _PyPegen_seq_count_dots ( a ) , EXTRA );
3696
1.03k
            if (_res == NULL && PyErr_Occurred()) {
3697
0
                p->error_indicator = 1;
3698
0
                p->level--;
3699
0
                return NULL;
3700
0
            }
3701
1.03k
            goto done;
3702
1.03k
        }
3703
184
        p->mark = _mark;
3704
184
        D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3705
184
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3706
184
    }
3707
0
    _res = NULL;
3708
3.05k
  done:
3709
3.05k
    p->level--;
3710
3.05k
    return _res;
3711
184
}
3712
3713
// import_from_targets:
3714
//     | '(' import_from_as_names ','? ')'
3715
//     | import_from_as_names !','
3716
//     | '*'
3717
//     | invalid_import_from_targets
3718
static asdl_alias_seq*
3719
import_from_targets_rule(Parser *p)
3720
2.94k
{
3721
2.94k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3722
0
        _Pypegen_stack_overflow(p);
3723
0
    }
3724
2.94k
    if (p->error_indicator) {
3725
0
        p->level--;
3726
0
        return NULL;
3727
0
    }
3728
2.94k
    asdl_alias_seq* _res = NULL;
3729
2.94k
    int _mark = p->mark;
3730
2.94k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3731
4
        p->error_indicator = 1;
3732
4
        p->level--;
3733
4
        return NULL;
3734
4
    }
3735
2.94k
    int _start_lineno = p->tokens[_mark]->lineno;
3736
2.94k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3737
2.94k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3738
2.94k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3739
2.94k
    { // '(' import_from_as_names ','? ')'
3740
2.94k
        if (p->error_indicator) {
3741
0
            p->level--;
3742
0
            return NULL;
3743
0
        }
3744
2.94k
        D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3745
2.94k
        Token * _literal;
3746
2.94k
        Token * _literal_1;
3747
2.94k
        void *_opt_var;
3748
2.94k
        UNUSED(_opt_var); // Silence compiler warnings
3749
2.94k
        asdl_alias_seq* a;
3750
2.94k
        if (
3751
2.94k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
3752
2.94k
            &&
3753
2.94k
            (a = import_from_as_names_rule(p))  // import_from_as_names
3754
2.94k
            &&
3755
2.94k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
3756
2.94k
            &&
3757
2.94k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
3758
2.94k
        )
3759
53
        {
3760
53
            D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3761
53
            _res = a;
3762
53
            if (_res == NULL && PyErr_Occurred()) {
3763
0
                p->error_indicator = 1;
3764
0
                p->level--;
3765
0
                return NULL;
3766
0
            }
3767
53
            goto done;
3768
53
        }
3769
2.89k
        p->mark = _mark;
3770
2.89k
        D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3771
2.89k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3772
2.89k
    }
3773
0
    { // import_from_as_names !','
3774
2.89k
        if (p->error_indicator) {
3775
2
            p->level--;
3776
2
            return NULL;
3777
2
        }
3778
2.88k
        D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_names !','"));
3779
2.88k
        asdl_alias_seq* import_from_as_names_var;
3780
2.88k
        if (
3781
2.88k
            (import_from_as_names_var = import_from_as_names_rule(p))  // import_from_as_names
3782
2.88k
            &&
3783
2.88k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
3784
2.88k
        )
3785
2.18k
        {
3786
2.18k
            D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_names !','"));
3787
2.18k
            _res = import_from_as_names_var;
3788
2.18k
            goto done;
3789
2.18k
        }
3790
707
        p->mark = _mark;
3791
707
        D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3792
707
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_names !','"));
3793
707
    }
3794
0
    { // '*'
3795
707
        if (p->error_indicator) {
3796
3
            p->level--;
3797
3
            return NULL;
3798
3
        }
3799
704
        D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
3800
704
        Token * _literal;
3801
704
        if (
3802
704
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
3803
704
        )
3804
638
        {
3805
638
            D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
3806
638
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3807
638
            if (_token == NULL) {
3808
0
                p->level--;
3809
0
                return NULL;
3810
0
            }
3811
638
            int _end_lineno = _token->end_lineno;
3812
638
            UNUSED(_end_lineno); // Only used by EXTRA macro
3813
638
            int _end_col_offset = _token->end_col_offset;
3814
638
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3815
638
            _res = ( asdl_alias_seq* ) _PyPegen_singleton_seq ( p , CHECK ( alias_ty , _PyPegen_alias_for_star ( p , EXTRA ) ) );
3816
638
            if (_res == NULL && PyErr_Occurred()) {
3817
0
                p->error_indicator = 1;
3818
0
                p->level--;
3819
0
                return NULL;
3820
0
            }
3821
638
            goto done;
3822
638
        }
3823
66
        p->mark = _mark;
3824
66
        D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3825
66
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
3826
66
    }
3827
66
    if (p->call_invalid_rules) { // invalid_import_from_targets
3828
32
        if (p->error_indicator) {
3829
0
            p->level--;
3830
0
            return NULL;
3831
0
        }
3832
32
        D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_import_from_targets"));
3833
32
        void *invalid_import_from_targets_var;
3834
32
        if (
3835
32
            (invalid_import_from_targets_var = invalid_import_from_targets_rule(p))  // invalid_import_from_targets
3836
32
        )
3837
0
        {
3838
0
            D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_import_from_targets"));
3839
0
            _res = invalid_import_from_targets_var;
3840
0
            goto done;
3841
0
        }
3842
32
        p->mark = _mark;
3843
32
        D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3844
32
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_import_from_targets"));
3845
32
    }
3846
66
    _res = NULL;
3847
2.93k
  done:
3848
2.93k
    p->level--;
3849
2.93k
    return _res;
3850
66
}
3851
3852
// import_from_as_names: ','.import_from_as_name+
3853
static asdl_alias_seq*
3854
import_from_as_names_rule(Parser *p)
3855
2.98k
{
3856
2.98k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3857
0
        _Pypegen_stack_overflow(p);
3858
0
    }
3859
2.98k
    if (p->error_indicator) {
3860
0
        p->level--;
3861
0
        return NULL;
3862
0
    }
3863
2.98k
    asdl_alias_seq* _res = NULL;
3864
2.98k
    int _mark = p->mark;
3865
2.98k
    { // ','.import_from_as_name+
3866
2.98k
        if (p->error_indicator) {
3867
0
            p->level--;
3868
0
            return NULL;
3869
0
        }
3870
2.98k
        D(fprintf(stderr, "%*c> import_from_as_names[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.import_from_as_name+"));
3871
2.98k
        asdl_alias_seq* a;
3872
2.98k
        if (
3873
2.98k
            (a = (asdl_alias_seq*)_gather_20_rule(p))  // ','.import_from_as_name+
3874
2.98k
        )
3875
2.30k
        {
3876
2.30k
            D(fprintf(stderr, "%*c+ import_from_as_names[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.import_from_as_name+"));
3877
2.30k
            _res = a;
3878
2.30k
            if (_res == NULL && PyErr_Occurred()) {
3879
0
                p->error_indicator = 1;
3880
0
                p->level--;
3881
0
                return NULL;
3882
0
            }
3883
2.30k
            goto done;
3884
2.30k
        }
3885
677
        p->mark = _mark;
3886
677
        D(fprintf(stderr, "%*c%s import_from_as_names[%d-%d]: %s failed!\n", p->level, ' ',
3887
677
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.import_from_as_name+"));
3888
677
    }
3889
0
    _res = NULL;
3890
2.98k
  done:
3891
2.98k
    p->level--;
3892
2.98k
    return _res;
3893
677
}
3894
3895
// import_from_as_name: invalid_import_from_as_name | NAME ['as' NAME]
3896
static alias_ty
3897
import_from_as_name_rule(Parser *p)
3898
6.60k
{
3899
6.60k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3900
0
        _Pypegen_stack_overflow(p);
3901
0
    }
3902
6.60k
    if (p->error_indicator) {
3903
0
        p->level--;
3904
0
        return NULL;
3905
0
    }
3906
6.60k
    alias_ty _res = NULL;
3907
6.60k
    int _mark = p->mark;
3908
6.60k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3909
3
        p->error_indicator = 1;
3910
3
        p->level--;
3911
3
        return NULL;
3912
3
    }
3913
6.59k
    int _start_lineno = p->tokens[_mark]->lineno;
3914
6.59k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3915
6.59k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3916
6.59k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3917
6.59k
    if (p->call_invalid_rules) { // invalid_import_from_as_name
3918
2.46k
        if (p->error_indicator) {
3919
0
            p->level--;
3920
0
            return NULL;
3921
0
        }
3922
2.46k
        D(fprintf(stderr, "%*c> import_from_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_import_from_as_name"));
3923
2.46k
        void *invalid_import_from_as_name_var;
3924
2.46k
        if (
3925
2.46k
            (invalid_import_from_as_name_var = invalid_import_from_as_name_rule(p))  // invalid_import_from_as_name
3926
2.46k
        )
3927
0
        {
3928
0
            D(fprintf(stderr, "%*c+ import_from_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_import_from_as_name"));
3929
0
            _res = invalid_import_from_as_name_var;
3930
0
            goto done;
3931
0
        }
3932
2.46k
        p->mark = _mark;
3933
2.46k
        D(fprintf(stderr, "%*c%s import_from_as_name[%d-%d]: %s failed!\n", p->level, ' ',
3934
2.46k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_import_from_as_name"));
3935
2.46k
    }
3936
6.59k
    { // NAME ['as' NAME]
3937
6.59k
        if (p->error_indicator) {
3938
1
            p->level--;
3939
1
            return NULL;
3940
1
        }
3941
6.59k
        D(fprintf(stderr, "%*c> import_from_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ['as' NAME]"));
3942
6.59k
        expr_ty a;
3943
6.59k
        void *b;
3944
6.59k
        if (
3945
6.59k
            (a = _PyPegen_name_token(p))  // NAME
3946
6.59k
            &&
3947
6.59k
            (b = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
3948
6.59k
        )
3949
5.84k
        {
3950
5.84k
            D(fprintf(stderr, "%*c+ import_from_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ['as' NAME]"));
3951
5.84k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3952
5.84k
            if (_token == NULL) {
3953
0
                p->level--;
3954
0
                return NULL;
3955
0
            }
3956
5.84k
            int _end_lineno = _token->end_lineno;
3957
5.84k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3958
5.84k
            int _end_col_offset = _token->end_col_offset;
3959
5.84k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3960
5.84k
            _res = _PyAST_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , EXTRA );
3961
5.84k
            if (_res == NULL && PyErr_Occurred()) {
3962
0
                p->error_indicator = 1;
3963
0
                p->level--;
3964
0
                return NULL;
3965
0
            }
3966
5.84k
            goto done;
3967
5.84k
        }
3968
749
        p->mark = _mark;
3969
749
        D(fprintf(stderr, "%*c%s import_from_as_name[%d-%d]: %s failed!\n", p->level, ' ',
3970
749
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ['as' NAME]"));
3971
749
    }
3972
0
    _res = NULL;
3973
6.59k
  done:
3974
6.59k
    p->level--;
3975
6.59k
    return _res;
3976
749
}
3977
3978
// dotted_as_names: ','.dotted_as_name+
3979
static asdl_alias_seq*
3980
dotted_as_names_rule(Parser *p)
3981
2.60k
{
3982
2.60k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3983
0
        _Pypegen_stack_overflow(p);
3984
0
    }
3985
2.60k
    if (p->error_indicator) {
3986
0
        p->level--;
3987
0
        return NULL;
3988
0
    }
3989
2.60k
    asdl_alias_seq* _res = NULL;
3990
2.60k
    int _mark = p->mark;
3991
2.60k
    { // ','.dotted_as_name+
3992
2.60k
        if (p->error_indicator) {
3993
0
            p->level--;
3994
0
            return NULL;
3995
0
        }
3996
2.60k
        D(fprintf(stderr, "%*c> dotted_as_names[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.dotted_as_name+"));
3997
2.60k
        asdl_alias_seq* a;
3998
2.60k
        if (
3999
2.60k
            (a = (asdl_alias_seq*)_gather_23_rule(p))  // ','.dotted_as_name+
4000
2.60k
        )
4001
2.56k
        {
4002
2.56k
            D(fprintf(stderr, "%*c+ dotted_as_names[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.dotted_as_name+"));
4003
2.56k
            _res = a;
4004
2.56k
            if (_res == NULL && PyErr_Occurred()) {
4005
0
                p->error_indicator = 1;
4006
0
                p->level--;
4007
0
                return NULL;
4008
0
            }
4009
2.56k
            goto done;
4010
2.56k
        }
4011
41
        p->mark = _mark;
4012
41
        D(fprintf(stderr, "%*c%s dotted_as_names[%d-%d]: %s failed!\n", p->level, ' ',
4013
41
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.dotted_as_name+"));
4014
41
    }
4015
0
    _res = NULL;
4016
2.60k
  done:
4017
2.60k
    p->level--;
4018
2.60k
    return _res;
4019
41
}
4020
4021
// dotted_as_name: invalid_dotted_as_name | dotted_name ['as' NAME]
4022
static alias_ty
4023
dotted_as_name_rule(Parser *p)
4024
7.02k
{
4025
7.02k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4026
0
        _Pypegen_stack_overflow(p);
4027
0
    }
4028
7.02k
    if (p->error_indicator) {
4029
0
        p->level--;
4030
0
        return NULL;
4031
0
    }
4032
7.02k
    alias_ty _res = NULL;
4033
7.02k
    int _mark = p->mark;
4034
7.02k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4035
1
        p->error_indicator = 1;
4036
1
        p->level--;
4037
1
        return NULL;
4038
1
    }
4039
7.02k
    int _start_lineno = p->tokens[_mark]->lineno;
4040
7.02k
    UNUSED(_start_lineno); // Only used by EXTRA macro
4041
7.02k
    int _start_col_offset = p->tokens[_mark]->col_offset;
4042
7.02k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
4043
7.02k
    if (p->call_invalid_rules) { // invalid_dotted_as_name
4044
2.76k
        if (p->error_indicator) {
4045
0
            p->level--;
4046
0
            return NULL;
4047
0
        }
4048
2.76k
        D(fprintf(stderr, "%*c> dotted_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_dotted_as_name"));
4049
2.76k
        void *invalid_dotted_as_name_var;
4050
2.76k
        if (
4051
2.76k
            (invalid_dotted_as_name_var = invalid_dotted_as_name_rule(p))  // invalid_dotted_as_name
4052
2.76k
        )
4053
0
        {
4054
0
            D(fprintf(stderr, "%*c+ dotted_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_dotted_as_name"));
4055
0
            _res = invalid_dotted_as_name_var;
4056
0
            goto done;
4057
0
        }
4058
2.76k
        p->mark = _mark;
4059
2.76k
        D(fprintf(stderr, "%*c%s dotted_as_name[%d-%d]: %s failed!\n", p->level, ' ',
4060
2.76k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_dotted_as_name"));
4061
2.76k
    }
4062
7.02k
    { // dotted_name ['as' NAME]
4063
7.02k
        if (p->error_indicator) {
4064
29
            p->level--;
4065
29
            return NULL;
4066
29
        }
4067
6.99k
        D(fprintf(stderr, "%*c> dotted_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name ['as' NAME]"));
4068
6.99k
        expr_ty a;
4069
6.99k
        void *b;
4070
6.99k
        if (
4071
6.99k
            (a = dotted_name_rule(p))  // dotted_name
4072
6.99k
            &&
4073
6.99k
            (b = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
4074
6.99k
        )
4075
6.94k
        {
4076
6.94k
            D(fprintf(stderr, "%*c+ dotted_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name ['as' NAME]"));
4077
6.94k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4078
6.94k
            if (_token == NULL) {
4079
0
                p->level--;
4080
0
                return NULL;
4081
0
            }
4082
6.94k
            int _end_lineno = _token->end_lineno;
4083
6.94k
            UNUSED(_end_lineno); // Only used by EXTRA macro
4084
6.94k
            int _end_col_offset = _token->end_col_offset;
4085
6.94k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
4086
6.94k
            _res = _PyAST_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , EXTRA );
4087
6.94k
            if (_res == NULL && PyErr_Occurred()) {
4088
0
                p->error_indicator = 1;
4089
0
                p->level--;
4090
0
                return NULL;
4091
0
            }
4092
6.94k
            goto done;
4093
6.94k
        }
4094
50
        p->mark = _mark;
4095
50
        D(fprintf(stderr, "%*c%s dotted_as_name[%d-%d]: %s failed!\n", p->level, ' ',
4096
50
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name ['as' NAME]"));
4097
50
    }
4098
0
    _res = NULL;
4099
6.99k
  done:
4100
6.99k
    p->level--;
4101
6.99k
    return _res;
4102
50
}
4103
4104
// Left-recursive
4105
// dotted_name: dotted_name '.' NAME | NAME
4106
static expr_ty dotted_name_raw(Parser *);
4107
static expr_ty
4108
dotted_name_rule(Parser *p)
4109
36.4k
{
4110
36.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4111
0
        _Pypegen_stack_overflow(p);
4112
0
    }
4113
36.4k
    expr_ty _res = NULL;
4114
36.4k
    if (_PyPegen_is_memoized(p, dotted_name_type, &_res)) {
4115
26.3k
        p->level--;
4116
26.3k
        return _res;
4117
26.3k
    }
4118
10.0k
    int _mark = p->mark;
4119
10.0k
    int _resmark = p->mark;
4120
20.9k
    while (1) {
4121
20.9k
        int tmpvar_0 = _PyPegen_update_memo(p, _mark, dotted_name_type, _res);
4122
20.9k
        if (tmpvar_0) {
4123
0
            p->level--;
4124
0
            return _res;
4125
0
        }
4126
20.9k
        p->mark = _mark;
4127
20.9k
        void *_raw = dotted_name_raw(p);
4128
20.9k
        if (p->error_indicator) {
4129
15
            p->level--;
4130
15
            return NULL;
4131
15
        }
4132
20.9k
        if (_raw == NULL || p->mark <= _resmark)
4133
10.0k
            break;
4134
10.8k
        _resmark = p->mark;
4135
10.8k
        _res = _raw;
4136
10.8k
    }
4137
10.0k
    p->mark = _resmark;
4138
10.0k
    p->level--;
4139
10.0k
    return _res;
4140
10.0k
}
4141
static expr_ty
4142
dotted_name_raw(Parser *p)
4143
20.9k
{
4144
20.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4145
0
        _Pypegen_stack_overflow(p);
4146
0
    }
4147
20.9k
    if (p->error_indicator) {
4148
11
        p->level--;
4149
11
        return NULL;
4150
11
    }
4151
20.9k
    expr_ty _res = NULL;
4152
20.9k
    int _mark = p->mark;
4153
20.9k
    { // dotted_name '.' NAME
4154
20.9k
        if (p->error_indicator) {
4155
0
            p->level--;
4156
0
            return NULL;
4157
0
        }
4158
20.9k
        D(fprintf(stderr, "%*c> dotted_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name '.' NAME"));
4159
20.9k
        Token * _literal;
4160
20.9k
        expr_ty a;
4161
20.9k
        expr_ty b;
4162
20.9k
        if (
4163
20.9k
            (a = dotted_name_rule(p))  // dotted_name
4164
20.9k
            &&
4165
20.9k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
4166
20.9k
            &&
4167
20.9k
            (b = _PyPegen_name_token(p))  // NAME
4168
20.9k
        )
4169
1.94k
        {
4170
1.94k
            D(fprintf(stderr, "%*c+ dotted_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name '.' NAME"));
4171
1.94k
            _res = _PyPegen_join_names_with_dot ( p , a , b );
4172
1.94k
            if (_res == NULL && PyErr_Occurred()) {
4173
0
                p->error_indicator = 1;
4174
0
                p->level--;
4175
0
                return NULL;
4176
0
            }
4177
1.94k
            goto done;
4178
1.94k
        }
4179
18.9k
        p->mark = _mark;
4180
18.9k
        D(fprintf(stderr, "%*c%s dotted_name[%d-%d]: %s failed!\n", p->level, ' ',
4181
18.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name '.' NAME"));
4182
18.9k
    }
4183
0
    { // NAME
4184
18.9k
        if (p->error_indicator) {
4185
4
            p->level--;
4186
4
            return NULL;
4187
4
        }
4188
18.9k
        D(fprintf(stderr, "%*c> dotted_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
4189
18.9k
        expr_ty name_var;
4190
18.9k
        if (
4191
18.9k
            (name_var = _PyPegen_name_token(p))  // NAME
4192
18.9k
        )
4193
17.7k
        {
4194
17.7k
            D(fprintf(stderr, "%*c+ dotted_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
4195
17.7k
            _res = name_var;
4196
17.7k
            goto done;
4197
17.7k
        }
4198
1.19k
        p->mark = _mark;
4199
1.19k
        D(fprintf(stderr, "%*c%s dotted_name[%d-%d]: %s failed!\n", p->level, ' ',
4200
1.19k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
4201
1.19k
    }
4202
0
    _res = NULL;
4203
20.9k
  done:
4204
20.9k
    p->level--;
4205
20.9k
    return _res;
4206
1.19k
}
4207
4208
// block: NEWLINE INDENT statements DEDENT | simple_stmts | invalid_block
4209
static asdl_stmt_seq*
4210
block_rule(Parser *p)
4211
81.0k
{
4212
81.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4213
0
        _Pypegen_stack_overflow(p);
4214
0
    }
4215
81.0k
    if (p->error_indicator) {
4216
0
        p->level--;
4217
0
        return NULL;
4218
0
    }
4219
81.0k
    asdl_stmt_seq* _res = NULL;
4220
81.0k
    if (_PyPegen_is_memoized(p, block_type, &_res)) {
4221
25.3k
        p->level--;
4222
25.3k
        return _res;
4223
25.3k
    }
4224
55.7k
    int _mark = p->mark;
4225
55.7k
    { // NEWLINE INDENT statements DEDENT
4226
55.7k
        if (p->error_indicator) {
4227
0
            p->level--;
4228
0
            return NULL;
4229
0
        }
4230
55.7k
        D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
4231
55.7k
        asdl_stmt_seq* a;
4232
55.7k
        Token * dedent_var;
4233
55.7k
        Token * indent_var;
4234
55.7k
        Token * newline_var;
4235
55.7k
        if (
4236
55.7k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
4237
55.7k
            &&
4238
55.7k
            (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
4239
55.7k
            &&
4240
55.7k
            (a = statements_rule(p))  // statements
4241
55.7k
            &&
4242
55.7k
            (dedent_var = _PyPegen_expect_token(p, DEDENT))  // token='DEDENT'
4243
55.7k
        )
4244
18.1k
        {
4245
18.1k
            D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
4246
18.1k
            _res = a;
4247
18.1k
            if (_res == NULL && PyErr_Occurred()) {
4248
0
                p->error_indicator = 1;
4249
0
                p->level--;
4250
0
                return NULL;
4251
0
            }
4252
18.1k
            goto done;
4253
18.1k
        }
4254
37.5k
        p->mark = _mark;
4255
37.5k
        D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
4256
37.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
4257
37.5k
    }
4258
0
    { // simple_stmts
4259
37.5k
        if (p->error_indicator) {
4260
161
            p->level--;
4261
161
            return NULL;
4262
161
        }
4263
37.3k
        D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
4264
37.3k
        asdl_stmt_seq* simple_stmts_var;
4265
37.3k
        if (
4266
37.3k
            (simple_stmts_var = simple_stmts_rule(p))  // simple_stmts
4267
37.3k
        )
4268
34.5k
        {
4269
34.5k
            D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
4270
34.5k
            _res = simple_stmts_var;
4271
34.5k
            goto done;
4272
34.5k
        }
4273
2.85k
        p->mark = _mark;
4274
2.85k
        D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
4275
2.85k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
4276
2.85k
    }
4277
2.85k
    if (p->call_invalid_rules) { // invalid_block
4278
2.23k
        if (p->error_indicator) {
4279
22
            p->level--;
4280
22
            return NULL;
4281
22
        }
4282
2.21k
        D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_block"));
4283
2.21k
        void *invalid_block_var;
4284
2.21k
        if (
4285
2.21k
            (invalid_block_var = invalid_block_rule(p))  // invalid_block
4286
2.21k
        )
4287
0
        {
4288
0
            D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_block"));
4289
0
            _res = invalid_block_var;
4290
0
            goto done;
4291
0
        }
4292
2.21k
        p->mark = _mark;
4293
2.21k
        D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
4294
2.21k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_block"));
4295
2.21k
    }
4296
2.83k
    _res = NULL;
4297
55.5k
  done:
4298
55.5k
    _PyPegen_insert_memo(p, _mark, block_type, _res);
4299
55.5k
    p->level--;
4300
55.5k
    return _res;
4301
2.83k
}
4302
4303
// decorators: (('@' named_expression NEWLINE))+
4304
static asdl_expr_seq*
4305
decorators_rule(Parser *p)
4306
18.7k
{
4307
18.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4308
0
        _Pypegen_stack_overflow(p);
4309
0
    }
4310
18.7k
    if (p->error_indicator) {
4311
0
        p->level--;
4312
0
        return NULL;
4313
0
    }
4314
18.7k
    asdl_expr_seq* _res = NULL;
4315
18.7k
    int _mark = p->mark;
4316
18.7k
    { // (('@' named_expression NEWLINE))+
4317
18.7k
        if (p->error_indicator) {
4318
0
            p->level--;
4319
0
            return NULL;
4320
0
        }
4321
18.7k
        D(fprintf(stderr, "%*c> decorators[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(('@' named_expression NEWLINE))+"));
4322
18.7k
        asdl_expr_seq* a;
4323
18.7k
        if (
4324
18.7k
            (a = (asdl_expr_seq*)_loop1_24_rule(p))  // (('@' named_expression NEWLINE))+
4325
18.7k
        )
4326
2.42k
        {
4327
2.42k
            D(fprintf(stderr, "%*c+ decorators[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(('@' named_expression NEWLINE))+"));
4328
2.42k
            _res = a;
4329
2.42k
            if (_res == NULL && PyErr_Occurred()) {
4330
0
                p->error_indicator = 1;
4331
0
                p->level--;
4332
0
                return NULL;
4333
0
            }
4334
2.42k
            goto done;
4335
2.42k
        }
4336
16.2k
        p->mark = _mark;
4337
16.2k
        D(fprintf(stderr, "%*c%s decorators[%d-%d]: %s failed!\n", p->level, ' ',
4338
16.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(('@' named_expression NEWLINE))+"));
4339
16.2k
    }
4340
0
    _res = NULL;
4341
18.7k
  done:
4342
18.7k
    p->level--;
4343
18.7k
    return _res;
4344
16.2k
}
4345
4346
// class_def: decorators class_def_raw | class_def_raw
4347
static stmt_ty
4348
class_def_rule(Parser *p)
4349
4.32k
{
4350
4.32k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4351
0
        _Pypegen_stack_overflow(p);
4352
0
    }
4353
4.32k
    if (p->error_indicator) {
4354
0
        p->level--;
4355
0
        return NULL;
4356
0
    }
4357
4.32k
    stmt_ty _res = NULL;
4358
4.32k
    int _mark = p->mark;
4359
4.32k
    { // decorators class_def_raw
4360
4.32k
        if (p->error_indicator) {
4361
0
            p->level--;
4362
0
            return NULL;
4363
0
        }
4364
4.32k
        D(fprintf(stderr, "%*c> class_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "decorators class_def_raw"));
4365
4.32k
        asdl_expr_seq* a;
4366
4.32k
        stmt_ty b;
4367
4.32k
        if (
4368
4.32k
            (a = decorators_rule(p))  // decorators
4369
4.32k
            &&
4370
4.32k
            (b = class_def_raw_rule(p))  // class_def_raw
4371
4.32k
        )
4372
517
        {
4373
517
            D(fprintf(stderr, "%*c+ class_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "decorators class_def_raw"));
4374
517
            _res = _PyPegen_class_def_decorators ( p , a , b );
4375
517
            if (_res == NULL && PyErr_Occurred()) {
4376
0
                p->error_indicator = 1;
4377
0
                p->level--;
4378
0
                return NULL;
4379
0
            }
4380
517
            goto done;
4381
517
        }
4382
3.80k
        p->mark = _mark;
4383
3.80k
        D(fprintf(stderr, "%*c%s class_def[%d-%d]: %s failed!\n", p->level, ' ',
4384
3.80k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "decorators class_def_raw"));
4385
3.80k
    }
4386
0
    { // class_def_raw
4387
3.80k
        if (p->error_indicator) {
4388
3
            p->level--;
4389
3
            return NULL;
4390
3
        }
4391
3.80k
        D(fprintf(stderr, "%*c> class_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "class_def_raw"));
4392
3.80k
        stmt_ty class_def_raw_var;
4393
3.80k
        if (
4394
3.80k
            (class_def_raw_var = class_def_raw_rule(p))  // class_def_raw
4395
3.80k
        )
4396
3.34k
        {
4397
3.34k
            D(fprintf(stderr, "%*c+ class_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "class_def_raw"));
4398
3.34k
            _res = class_def_raw_var;
4399
3.34k
            goto done;
4400
3.34k
        }
4401
455
        p->mark = _mark;
4402
455
        D(fprintf(stderr, "%*c%s class_def[%d-%d]: %s failed!\n", p->level, ' ',
4403
455
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "class_def_raw"));
4404
455
    }
4405
0
    _res = NULL;
4406
4.32k
  done:
4407
4.32k
    p->level--;
4408
4.32k
    return _res;
4409
455
}
4410
4411
// class_def_raw:
4412
//     | invalid_class_def_raw
4413
//     | 'class' NAME type_params? ['(' arguments? ')'] ':' block
4414
static stmt_ty
4415
class_def_raw_rule(Parser *p)
4416
4.52k
{
4417
4.52k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4418
0
        _Pypegen_stack_overflow(p);
4419
0
    }
4420
4.52k
    if (p->error_indicator) {
4421
0
        p->level--;
4422
0
        return NULL;
4423
0
    }
4424
4.52k
    stmt_ty _res = NULL;
4425
4.52k
    int _mark = p->mark;
4426
4.52k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4427
0
        p->error_indicator = 1;
4428
0
        p->level--;
4429
0
        return NULL;
4430
0
    }
4431
4.52k
    int _start_lineno = p->tokens[_mark]->lineno;
4432
4.52k
    UNUSED(_start_lineno); // Only used by EXTRA macro
4433
4.52k
    int _start_col_offset = p->tokens[_mark]->col_offset;
4434
4.52k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
4435
4.52k
    if (p->call_invalid_rules) { // invalid_class_def_raw
4436
1.26k
        if (p->error_indicator) {
4437
0
            p->level--;
4438
0
            return NULL;
4439
0
        }
4440
1.26k
        D(fprintf(stderr, "%*c> class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_class_def_raw"));
4441
1.26k
        void *invalid_class_def_raw_var;
4442
1.26k
        if (
4443
1.26k
            (invalid_class_def_raw_var = invalid_class_def_raw_rule(p))  // invalid_class_def_raw
4444
1.26k
        )
4445
0
        {
4446
0
            D(fprintf(stderr, "%*c+ class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_class_def_raw"));
4447
0
            _res = invalid_class_def_raw_var;
4448
0
            goto done;
4449
0
        }
4450
1.26k
        p->mark = _mark;
4451
1.26k
        D(fprintf(stderr, "%*c%s class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4452
1.26k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_class_def_raw"));
4453
1.26k
    }
4454
4.52k
    { // 'class' NAME type_params? ['(' arguments? ')'] ':' block
4455
4.52k
        if (p->error_indicator) {
4456
20
            p->level--;
4457
20
            return NULL;
4458
20
        }
4459
4.50k
        D(fprintf(stderr, "%*c> class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] ':' block"));
4460
4.50k
        Token * _keyword;
4461
4.50k
        Token * _literal;
4462
4.50k
        expr_ty a;
4463
4.50k
        void *b;
4464
4.50k
        asdl_stmt_seq* c;
4465
4.50k
        void *t;
4466
4.50k
        if (
4467
4.50k
            (_keyword = _PyPegen_expect_token(p, 706))  // token='class'
4468
4.50k
            &&
4469
4.50k
            (a = _PyPegen_name_token(p))  // NAME
4470
4.50k
            &&
4471
4.50k
            (t = type_params_rule(p), !p->error_indicator)  // type_params?
4472
4.50k
            &&
4473
4.50k
            (b = _tmp_25_rule(p), !p->error_indicator)  // ['(' arguments? ')']
4474
4.50k
            &&
4475
4.50k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
4476
4.50k
            &&
4477
4.50k
            (c = block_rule(p))  // block
4478
4.50k
        )
4479
3.86k
        {
4480
3.86k
            D(fprintf(stderr, "%*c+ class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] ':' block"));
4481
3.86k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4482
3.86k
            if (_token == NULL) {
4483
0
                p->level--;
4484
0
                return NULL;
4485
0
            }
4486
3.86k
            int _end_lineno = _token->end_lineno;
4487
3.86k
            UNUSED(_end_lineno); // Only used by EXTRA macro
4488
3.86k
            int _end_col_offset = _token->end_col_offset;
4489
3.86k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
4490
3.86k
            _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 );
4491
3.86k
            if (_res == NULL && PyErr_Occurred()) {
4492
0
                p->error_indicator = 1;
4493
0
                p->level--;
4494
0
                return NULL;
4495
0
            }
4496
3.86k
            goto done;
4497
3.86k
        }
4498
635
        p->mark = _mark;
4499
635
        D(fprintf(stderr, "%*c%s class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4500
635
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] ':' block"));
4501
635
    }
4502
0
    _res = NULL;
4503
4.50k
  done:
4504
4.50k
    p->level--;
4505
4.50k
    return _res;
4506
635
}
4507
4508
// function_def: decorators function_def_raw | function_def_raw
4509
static stmt_ty
4510
function_def_rule(Parser *p)
4511
14.3k
{
4512
14.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4513
0
        _Pypegen_stack_overflow(p);
4514
0
    }
4515
14.3k
    if (p->error_indicator) {
4516
0
        p->level--;
4517
0
        return NULL;
4518
0
    }
4519
14.3k
    stmt_ty _res = NULL;
4520
14.3k
    int _mark = p->mark;
4521
14.3k
    { // decorators function_def_raw
4522
14.3k
        if (p->error_indicator) {
4523
0
            p->level--;
4524
0
            return NULL;
4525
0
        }
4526
14.3k
        D(fprintf(stderr, "%*c> function_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "decorators function_def_raw"));
4527
14.3k
        asdl_expr_seq* d;
4528
14.3k
        stmt_ty f;
4529
14.3k
        if (
4530
14.3k
            (d = decorators_rule(p))  // decorators
4531
14.3k
            &&
4532
14.3k
            (f = function_def_raw_rule(p))  // function_def_raw
4533
14.3k
        )
4534
980
        {
4535
980
            D(fprintf(stderr, "%*c+ function_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "decorators function_def_raw"));
4536
980
            _res = _PyPegen_function_def_decorators ( p , d , f );
4537
980
            if (_res == NULL && PyErr_Occurred()) {
4538
0
                p->error_indicator = 1;
4539
0
                p->level--;
4540
0
                return NULL;
4541
0
            }
4542
980
            goto done;
4543
980
        }
4544
13.4k
        p->mark = _mark;
4545
13.4k
        D(fprintf(stderr, "%*c%s function_def[%d-%d]: %s failed!\n", p->level, ' ',
4546
13.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "decorators function_def_raw"));
4547
13.4k
    }
4548
0
    { // function_def_raw
4549
13.4k
        if (p->error_indicator) {
4550
42
            p->level--;
4551
42
            return NULL;
4552
42
        }
4553
13.3k
        D(fprintf(stderr, "%*c> function_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "function_def_raw"));
4554
13.3k
        stmt_ty function_def_raw_var;
4555
13.3k
        if (
4556
13.3k
            (function_def_raw_var = function_def_raw_rule(p))  // function_def_raw
4557
13.3k
        )
4558
9.39k
        {
4559
9.39k
            D(fprintf(stderr, "%*c+ function_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "function_def_raw"));
4560
9.39k
            _res = function_def_raw_var;
4561
9.39k
            goto done;
4562
9.39k
        }
4563
3.96k
        p->mark = _mark;
4564
3.96k
        D(fprintf(stderr, "%*c%s function_def[%d-%d]: %s failed!\n", p->level, ' ',
4565
3.96k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "function_def_raw"));
4566
3.96k
    }
4567
0
    _res = NULL;
4568
14.3k
  done:
4569
14.3k
    p->level--;
4570
14.3k
    return _res;
4571
3.96k
}
4572
4573
// function_def_raw:
4574
//     | invalid_def_raw
4575
//     | 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block
4576
//     | 'async' 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block
4577
static stmt_ty
4578
function_def_raw_rule(Parser *p)
4579
15.0k
{
4580
15.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4581
0
        _Pypegen_stack_overflow(p);
4582
0
    }
4583
15.0k
    if (p->error_indicator) {
4584
0
        p->level--;
4585
0
        return NULL;
4586
0
    }
4587
15.0k
    stmt_ty _res = NULL;
4588
15.0k
    int _mark = p->mark;
4589
15.0k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4590
0
        p->error_indicator = 1;
4591
0
        p->level--;
4592
0
        return NULL;
4593
0
    }
4594
15.0k
    int _start_lineno = p->tokens[_mark]->lineno;
4595
15.0k
    UNUSED(_start_lineno); // Only used by EXTRA macro
4596
15.0k
    int _start_col_offset = p->tokens[_mark]->col_offset;
4597
15.0k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
4598
15.0k
    if (p->call_invalid_rules) { // invalid_def_raw
4599
3.99k
        if (p->error_indicator) {
4600
0
            p->level--;
4601
0
            return NULL;
4602
0
        }
4603
3.99k
        D(fprintf(stderr, "%*c> function_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_def_raw"));
4604
3.99k
        void *invalid_def_raw_var;
4605
3.99k
        if (
4606
3.99k
            (invalid_def_raw_var = invalid_def_raw_rule(p))  // invalid_def_raw
4607
3.99k
        )
4608
1.97k
        {
4609
1.97k
            D(fprintf(stderr, "%*c+ function_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_def_raw"));
4610
1.97k
            _res = invalid_def_raw_var;
4611
1.97k
            goto done;
4612
1.97k
        }
4613
2.01k
        p->mark = _mark;
4614
2.01k
        D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4615
2.01k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_def_raw"));
4616
2.01k
    }
4617
13.1k
    { // 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block
4618
13.1k
        if (p->error_indicator) {
4619
234
            p->level--;
4620
234
            return NULL;
4621
234
        }
4622
12.8k
        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"));
4623
12.8k
        Token * _keyword;
4624
12.8k
        Token * _literal;
4625
12.8k
        Token * _literal_1;
4626
12.8k
        Token * _literal_2;
4627
12.8k
        void *a;
4628
12.8k
        asdl_stmt_seq* b;
4629
12.8k
        expr_ty n;
4630
12.8k
        void *params;
4631
12.8k
        void *t;
4632
12.8k
        void *tc;
4633
12.8k
        if (
4634
12.8k
            (_keyword = _PyPegen_expect_token(p, 704))  // token='def'
4635
12.8k
            &&
4636
12.8k
            (n = _PyPegen_name_token(p))  // NAME
4637
12.8k
            &&
4638
12.8k
            (t = type_params_rule(p), !p->error_indicator)  // type_params?
4639
12.8k
            &&
4640
12.8k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
4641
12.8k
            &&
4642
12.8k
            (params = params_rule(p), !p->error_indicator)  // params?
4643
12.8k
            &&
4644
12.8k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
4645
12.8k
            &&
4646
12.8k
            (a = _tmp_26_rule(p), !p->error_indicator)  // ['->' expression]
4647
12.8k
            &&
4648
12.8k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
4649
12.8k
            &&
4650
12.8k
            (tc = func_type_comment_rule(p), !p->error_indicator)  // func_type_comment?
4651
12.8k
            &&
4652
12.8k
            (b = block_rule(p))  // block
4653
12.8k
        )
4654
7.85k
        {
4655
7.85k
            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"));
4656
7.85k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4657
7.85k
            if (_token == NULL) {
4658
0
                p->level--;
4659
0
                return NULL;
4660
0
            }
4661
7.85k
            int _end_lineno = _token->end_lineno;
4662
7.85k
            UNUSED(_end_lineno); // Only used by EXTRA macro
4663
7.85k
            int _end_col_offset = _token->end_col_offset;
4664
7.85k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
4665
7.85k
            _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 );
4666
7.85k
            if (_res == NULL && PyErr_Occurred()) {
4667
0
                p->error_indicator = 1;
4668
0
                p->level--;
4669
0
                return NULL;
4670
0
            }
4671
7.85k
            goto done;
4672
7.85k
        }
4673
5.00k
        p->mark = _mark;
4674
5.00k
        D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4675
5.00k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block"));
4676
5.00k
    }
4677
0
    { // 'async' 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block
4678
5.00k
        if (p->error_indicator) {
4679
84
            p->level--;
4680
84
            return NULL;
4681
84
        }
4682
4.92k
        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"));
4683
4.92k
        Token * _keyword;
4684
4.92k
        Token * _keyword_1;
4685
4.92k
        Token * _literal;
4686
4.92k
        Token * _literal_1;
4687
4.92k
        Token * _literal_2;
4688
4.92k
        void *a;
4689
4.92k
        asdl_stmt_seq* b;
4690
4.92k
        expr_ty n;
4691
4.92k
        void *params;
4692
4.92k
        void *t;
4693
4.92k
        void *tc;
4694
4.92k
        if (
4695
4.92k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
4696
4.92k
            &&
4697
4.92k
            (_keyword_1 = _PyPegen_expect_token(p, 704))  // token='def'
4698
4.92k
            &&
4699
4.92k
            (n = _PyPegen_name_token(p))  // NAME
4700
4.92k
            &&
4701
4.92k
            (t = type_params_rule(p), !p->error_indicator)  // type_params?
4702
4.92k
            &&
4703
4.92k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
4704
4.92k
            &&
4705
4.92k
            (params = params_rule(p), !p->error_indicator)  // params?
4706
4.92k
            &&
4707
4.92k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
4708
4.92k
            &&
4709
4.92k
            (a = _tmp_26_rule(p), !p->error_indicator)  // ['->' expression]
4710
4.92k
            &&
4711
4.92k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
4712
4.92k
            &&
4713
4.92k
            (tc = func_type_comment_rule(p), !p->error_indicator)  // func_type_comment?
4714
4.92k
            &&
4715
4.92k
            (b = block_rule(p))  // block
4716
4.92k
        )
4717
549
        {
4718
549
            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"));
4719
549
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4720
549
            if (_token == NULL) {
4721
0
                p->level--;
4722
0
                return NULL;
4723
0
            }
4724
549
            int _end_lineno = _token->end_lineno;
4725
549
            UNUSED(_end_lineno); // Only used by EXTRA macro
4726
549
            int _end_col_offset = _token->end_col_offset;
4727
549
            UNUSED(_end_col_offset); // Only used by EXTRA macro
4728
549
            _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 ) );
4729
549
            if (_res == NULL && PyErr_Occurred()) {
4730
0
                p->error_indicator = 1;
4731
0
                p->level--;
4732
0
                return NULL;
4733
0
            }
4734
549
            goto done;
4735
549
        }
4736
4.37k
        p->mark = _mark;
4737
4.37k
        D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4738
4.37k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block"));
4739
4.37k
    }
4740
0
    _res = NULL;
4741
14.7k
  done:
4742
14.7k
    p->level--;
4743
14.7k
    return _res;
4744
4.37k
}
4745
4746
// params: invalid_parameters | parameters
4747
static arguments_ty
4748
params_rule(Parser *p)
4749
13.7k
{
4750
13.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4751
0
        _Pypegen_stack_overflow(p);
4752
0
    }
4753
13.7k
    if (p->error_indicator) {
4754
0
        p->level--;
4755
0
        return NULL;
4756
0
    }
4757
13.7k
    arguments_ty _res = NULL;
4758
13.7k
    int _mark = p->mark;
4759
13.7k
    if (p->call_invalid_rules) { // invalid_parameters
4760
4.86k
        if (p->error_indicator) {
4761
0
            p->level--;
4762
0
            return NULL;
4763
0
        }
4764
4.86k
        D(fprintf(stderr, "%*c> params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_parameters"));
4765
4.86k
        void *invalid_parameters_var;
4766
4.86k
        if (
4767
4.86k
            (invalid_parameters_var = invalid_parameters_rule(p))  // invalid_parameters
4768
4.86k
        )
4769
0
        {
4770
0
            D(fprintf(stderr, "%*c+ params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_parameters"));
4771
0
            _res = invalid_parameters_var;
4772
0
            goto done;
4773
0
        }
4774
4.86k
        p->mark = _mark;
4775
4.86k
        D(fprintf(stderr, "%*c%s params[%d-%d]: %s failed!\n", p->level, ' ',
4776
4.86k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_parameters"));
4777
4.86k
    }
4778
13.7k
    { // parameters
4779
13.7k
        if (p->error_indicator) {
4780
28
            p->level--;
4781
28
            return NULL;
4782
28
        }
4783
13.6k
        D(fprintf(stderr, "%*c> params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "parameters"));
4784
13.6k
        arguments_ty parameters_var;
4785
13.6k
        if (
4786
13.6k
            (parameters_var = parameters_rule(p))  // parameters
4787
13.6k
        )
4788
11.2k
        {
4789
11.2k
            D(fprintf(stderr, "%*c+ params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "parameters"));
4790
11.2k
            _res = parameters_var;
4791
11.2k
            goto done;
4792
11.2k
        }
4793
2.41k
        p->mark = _mark;
4794
2.41k
        D(fprintf(stderr, "%*c%s params[%d-%d]: %s failed!\n", p->level, ' ',
4795
2.41k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "parameters"));
4796
2.41k
    }
4797
0
    _res = NULL;
4798
13.6k
  done:
4799
13.6k
    p->level--;
4800
13.6k
    return _res;
4801
2.41k
}
4802
4803
// parameters:
4804
//     | slash_no_default param_no_default* param_with_default* star_etc?
4805
//     | slash_with_default param_with_default* star_etc?
4806
//     | param_no_default+ param_with_default* star_etc?
4807
//     | param_with_default+ star_etc?
4808
//     | star_etc
4809
static arguments_ty
4810
parameters_rule(Parser *p)
4811
13.6k
{
4812
13.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4813
0
        _Pypegen_stack_overflow(p);
4814
0
    }
4815
13.6k
    if (p->error_indicator) {
4816
0
        p->level--;
4817
0
        return NULL;
4818
0
    }
4819
13.6k
    arguments_ty _res = NULL;
4820
13.6k
    int _mark = p->mark;
4821
13.6k
    { // slash_no_default param_no_default* param_with_default* star_etc?
4822
13.6k
        if (p->error_indicator) {
4823
0
            p->level--;
4824
0
            return NULL;
4825
0
        }
4826
13.6k
        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?"));
4827
13.6k
        asdl_arg_seq* a;
4828
13.6k
        asdl_arg_seq* b;
4829
13.6k
        asdl_seq * c;
4830
13.6k
        void *d;
4831
13.6k
        if (
4832
13.6k
            (a = slash_no_default_rule(p))  // slash_no_default
4833
13.6k
            &&
4834
13.6k
            (b = (asdl_arg_seq*)_loop0_27_rule(p))  // param_no_default*
4835
13.6k
            &&
4836
13.6k
            (c = _loop0_28_rule(p))  // param_with_default*
4837
13.6k
            &&
4838
13.6k
            (d = star_etc_rule(p), !p->error_indicator)  // star_etc?
4839
13.6k
        )
4840
1.01k
        {
4841
1.01k
            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?"));
4842
1.01k
            _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , a , NULL , b , c , d ) );
4843
1.01k
            if (_res == NULL && PyErr_Occurred()) {
4844
0
                p->error_indicator = 1;
4845
0
                p->level--;
4846
0
                return NULL;
4847
0
            }
4848
1.01k
            goto done;
4849
1.01k
        }
4850
12.6k
        p->mark = _mark;
4851
12.6k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4852
12.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_no_default param_no_default* param_with_default* star_etc?"));
4853
12.6k
    }
4854
0
    { // slash_with_default param_with_default* star_etc?
4855
12.6k
        if (p->error_indicator) {
4856
17
            p->level--;
4857
17
            return NULL;
4858
17
        }
4859
12.6k
        D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
4860
12.6k
        SlashWithDefault* a;
4861
12.6k
        asdl_seq * b;
4862
12.6k
        void *c;
4863
12.6k
        if (
4864
12.6k
            (a = slash_with_default_rule(p))  // slash_with_default
4865
12.6k
            &&
4866
12.6k
            (b = _loop0_28_rule(p))  // param_with_default*
4867
12.6k
            &&
4868
12.6k
            (c = star_etc_rule(p), !p->error_indicator)  // star_etc?
4869
12.6k
        )
4870
947
        {
4871
947
            D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
4872
947
            _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , NULL , a , NULL , b , c ) );
4873
947
            if (_res == NULL && PyErr_Occurred()) {
4874
0
                p->error_indicator = 1;
4875
0
                p->level--;
4876
0
                return NULL;
4877
0
            }
4878
947
            goto done;
4879
947
        }
4880
11.7k
        p->mark = _mark;
4881
11.7k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4882
11.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
4883
11.7k
    }
4884
0
    { // param_no_default+ param_with_default* star_etc?
4885
11.7k
        if (p->error_indicator) {
4886
10
            p->level--;
4887
10
            return NULL;
4888
10
        }
4889
11.7k
        D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
4890
11.7k
        asdl_arg_seq* a;
4891
11.7k
        asdl_seq * b;
4892
11.7k
        void *c;
4893
11.7k
        if (
4894
11.7k
            (a = (asdl_arg_seq*)_loop1_29_rule(p))  // param_no_default+
4895
11.7k
            &&
4896
11.7k
            (b = _loop0_28_rule(p))  // param_with_default*
4897
11.7k
            &&
4898
11.7k
            (c = star_etc_rule(p), !p->error_indicator)  // star_etc?
4899
11.7k
        )
4900
5.56k
        {
4901
5.56k
            D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
4902
5.56k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
4903
5.56k
            if (_res == NULL && PyErr_Occurred()) {
4904
0
                p->error_indicator = 1;
4905
0
                p->level--;
4906
0
                return NULL;
4907
0
            }
4908
5.56k
            goto done;
4909
5.56k
        }
4910
6.15k
        p->mark = _mark;
4911
6.15k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4912
6.15k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
4913
6.15k
    }
4914
0
    { // param_with_default+ star_etc?
4915
6.15k
        if (p->error_indicator) {
4916
1
            p->level--;
4917
1
            return NULL;
4918
1
        }
4919
6.15k
        D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+ star_etc?"));
4920
6.15k
        asdl_seq * a;
4921
6.15k
        void *b;
4922
6.15k
        if (
4923
6.15k
            (a = _loop1_30_rule(p))  // param_with_default+
4924
6.15k
            &&
4925
6.15k
            (b = star_etc_rule(p), !p->error_indicator)  // star_etc?
4926
6.15k
        )
4927
1.05k
        {
4928
1.05k
            D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+ star_etc?"));
4929
1.05k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
4930
1.05k
            if (_res == NULL && PyErr_Occurred()) {
4931
0
                p->error_indicator = 1;
4932
0
                p->level--;
4933
0
                return NULL;
4934
0
            }
4935
1.05k
            goto done;
4936
1.05k
        }
4937
5.09k
        p->mark = _mark;
4938
5.09k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4939
5.09k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default+ star_etc?"));
4940
5.09k
    }
4941
0
    { // star_etc
4942
5.09k
        if (p->error_indicator) {
4943
1
            p->level--;
4944
1
            return NULL;
4945
1
        }
4946
5.09k
        D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_etc"));
4947
5.09k
        StarEtc* a;
4948
5.09k
        if (
4949
5.09k
            (a = star_etc_rule(p))  // star_etc
4950
5.09k
        )
4951
2.71k
        {
4952
2.71k
            D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_etc"));
4953
2.71k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
4954
2.71k
            if (_res == NULL && PyErr_Occurred()) {
4955
0
                p->error_indicator = 1;
4956
0
                p->level--;
4957
0
                return NULL;
4958
0
            }
4959
2.71k
            goto done;
4960
2.71k
        }
4961
2.38k
        p->mark = _mark;
4962
2.38k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4963
2.38k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_etc"));
4964
2.38k
    }
4965
0
    _res = NULL;
4966
13.6k
  done:
4967
13.6k
    p->level--;
4968
13.6k
    return _res;
4969
2.38k
}
4970
4971
// slash_no_default: param_no_default+ '/' ',' | param_no_default+ '/' &')'
4972
static asdl_arg_seq*
4973
slash_no_default_rule(Parser *p)
4974
28.2k
{
4975
28.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4976
0
        _Pypegen_stack_overflow(p);
4977
0
    }
4978
28.2k
    if (p->error_indicator) {
4979
0
        p->level--;
4980
0
        return NULL;
4981
0
    }
4982
28.2k
    asdl_arg_seq* _res = NULL;
4983
28.2k
    int _mark = p->mark;
4984
28.2k
    { // param_no_default+ '/' ','
4985
28.2k
        if (p->error_indicator) {
4986
0
            p->level--;
4987
0
            return NULL;
4988
0
        }
4989
28.2k
        D(fprintf(stderr, "%*c> slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' ','"));
4990
28.2k
        Token * _literal;
4991
28.2k
        Token * _literal_1;
4992
28.2k
        asdl_arg_seq* a;
4993
28.2k
        if (
4994
28.2k
            (a = (asdl_arg_seq*)_loop1_29_rule(p))  // param_no_default+
4995
28.2k
            &&
4996
28.2k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
4997
28.2k
            &&
4998
28.2k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
4999
28.2k
        )
5000
645
        {
5001
645
            D(fprintf(stderr, "%*c+ slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' ','"));
5002
645
            _res = a;
5003
645
            if (_res == NULL && PyErr_Occurred()) {
5004
0
                p->error_indicator = 1;
5005
0
                p->level--;
5006
0
                return NULL;
5007
0
            }
5008
645
            goto done;
5009
645
        }
5010
27.6k
        p->mark = _mark;
5011
27.6k
        D(fprintf(stderr, "%*c%s slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5012
27.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ '/' ','"));
5013
27.6k
    }
5014
0
    { // param_no_default+ '/' &')'
5015
27.6k
        if (p->error_indicator) {
5016
16
            p->level--;
5017
16
            return NULL;
5018
16
        }
5019
27.6k
        D(fprintf(stderr, "%*c> slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' &')'"));
5020
27.6k
        Token * _literal;
5021
27.6k
        asdl_arg_seq* a;
5022
27.6k
        if (
5023
27.6k
            (a = (asdl_arg_seq*)_loop1_29_rule(p))  // param_no_default+
5024
27.6k
            &&
5025
27.6k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
5026
27.6k
            &&
5027
27.6k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5028
27.6k
        )
5029
1.97k
        {
5030
1.97k
            D(fprintf(stderr, "%*c+ slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' &')'"));
5031
1.97k
            _res = a;
5032
1.97k
            if (_res == NULL && PyErr_Occurred()) {
5033
0
                p->error_indicator = 1;
5034
0
                p->level--;
5035
0
                return NULL;
5036
0
            }
5037
1.97k
            goto done;
5038
1.97k
        }
5039
25.6k
        p->mark = _mark;
5040
25.6k
        D(fprintf(stderr, "%*c%s slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5041
25.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ '/' &')'"));
5042
25.6k
    }
5043
0
    _res = NULL;
5044
28.2k
  done:
5045
28.2k
    p->level--;
5046
28.2k
    return _res;
5047
25.6k
}
5048
5049
// slash_with_default:
5050
//     | param_no_default* param_with_default+ '/' ','
5051
//     | param_no_default* param_with_default+ '/' &')'
5052
static SlashWithDefault*
5053
slash_with_default_rule(Parser *p)
5054
26.1k
{
5055
26.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5056
0
        _Pypegen_stack_overflow(p);
5057
0
    }
5058
26.1k
    if (p->error_indicator) {
5059
0
        p->level--;
5060
0
        return NULL;
5061
0
    }
5062
26.1k
    SlashWithDefault* _res = NULL;
5063
26.1k
    int _mark = p->mark;
5064
26.1k
    { // param_no_default* param_with_default+ '/' ','
5065
26.1k
        if (p->error_indicator) {
5066
0
            p->level--;
5067
0
            return NULL;
5068
0
        }
5069
26.1k
        D(fprintf(stderr, "%*c> slash_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
5070
26.1k
        Token * _literal;
5071
26.1k
        Token * _literal_1;
5072
26.1k
        asdl_seq * a;
5073
26.1k
        asdl_seq * b;
5074
26.1k
        if (
5075
26.1k
            (a = _loop0_27_rule(p))  // param_no_default*
5076
26.1k
            &&
5077
26.1k
            (b = _loop1_30_rule(p))  // param_with_default+
5078
26.1k
            &&
5079
26.1k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
5080
26.1k
            &&
5081
26.1k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
5082
26.1k
        )
5083
191
        {
5084
191
            D(fprintf(stderr, "%*c+ slash_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
5085
191
            _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
5086
191
            if (_res == NULL && PyErr_Occurred()) {
5087
0
                p->error_indicator = 1;
5088
0
                p->level--;
5089
0
                return NULL;
5090
0
            }
5091
191
            goto done;
5092
191
        }
5093
25.9k
        p->mark = _mark;
5094
25.9k
        D(fprintf(stderr, "%*c%s slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5095
25.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
5096
25.9k
    }
5097
0
    { // param_no_default* param_with_default+ '/' &')'
5098
25.9k
        if (p->error_indicator) {
5099
12
            p->level--;
5100
12
            return NULL;
5101
12
        }
5102
25.9k
        D(fprintf(stderr, "%*c> slash_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
5103
25.9k
        Token * _literal;
5104
25.9k
        asdl_seq * a;
5105
25.9k
        asdl_seq * b;
5106
25.9k
        if (
5107
25.9k
            (a = _loop0_27_rule(p))  // param_no_default*
5108
25.9k
            &&
5109
25.9k
            (b = _loop1_30_rule(p))  // param_with_default+
5110
25.9k
            &&
5111
25.9k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
5112
25.9k
            &&
5113
25.9k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5114
25.9k
        )
5115
2.07k
        {
5116
2.07k
            D(fprintf(stderr, "%*c+ slash_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
5117
2.07k
            _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
5118
2.07k
            if (_res == NULL && PyErr_Occurred()) {
5119
0
                p->error_indicator = 1;
5120
0
                p->level--;
5121
0
                return NULL;
5122
0
            }
5123
2.07k
            goto done;
5124
2.07k
        }
5125
23.8k
        p->mark = _mark;
5126
23.8k
        D(fprintf(stderr, "%*c%s slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5127
23.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
5128
23.8k
    }
5129
0
    _res = NULL;
5130
26.1k
  done:
5131
26.1k
    p->level--;
5132
26.1k
    return _res;
5133
23.8k
}
5134
5135
// star_etc:
5136
//     | invalid_star_etc
5137
//     | '*' param_no_default param_maybe_default* kwds?
5138
//     | '*' param_no_default_star_annotation param_maybe_default* kwds?
5139
//     | '*' ',' param_maybe_default+ kwds?
5140
//     | kwds
5141
static StarEtc*
5142
star_etc_rule(Parser *p)
5143
13.6k
{
5144
13.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5145
0
        _Pypegen_stack_overflow(p);
5146
0
    }
5147
13.6k
    if (p->error_indicator) {
5148
1
        p->level--;
5149
1
        return NULL;
5150
1
    }
5151
13.6k
    StarEtc* _res = NULL;
5152
13.6k
    int _mark = p->mark;
5153
13.6k
    if (p->call_invalid_rules) { // invalid_star_etc
5154
4.84k
        if (p->error_indicator) {
5155
0
            p->level--;
5156
0
            return NULL;
5157
0
        }
5158
4.84k
        D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_star_etc"));
5159
4.84k
        void *invalid_star_etc_var;
5160
4.84k
        if (
5161
4.84k
            (invalid_star_etc_var = invalid_star_etc_rule(p))  // invalid_star_etc
5162
4.84k
        )
5163
0
        {
5164
0
            D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_star_etc"));
5165
0
            _res = invalid_star_etc_var;
5166
0
            goto done;
5167
0
        }
5168
4.84k
        p->mark = _mark;
5169
4.84k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5170
4.84k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_star_etc"));
5171
4.84k
    }
5172
13.6k
    { // '*' param_no_default param_maybe_default* kwds?
5173
13.6k
        if (p->error_indicator) {
5174
8
            p->level--;
5175
8
            return NULL;
5176
8
        }
5177
13.6k
        D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
5178
13.6k
        Token * _literal;
5179
13.6k
        arg_ty a;
5180
13.6k
        asdl_seq * b;
5181
13.6k
        void *c;
5182
13.6k
        if (
5183
13.6k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
5184
13.6k
            &&
5185
13.6k
            (a = param_no_default_rule(p))  // param_no_default
5186
13.6k
            &&
5187
13.6k
            (b = _loop0_31_rule(p))  // param_maybe_default*
5188
13.6k
            &&
5189
13.6k
            (c = kwds_rule(p), !p->error_indicator)  // kwds?
5190
13.6k
        )
5191
897
        {
5192
897
            D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
5193
897
            _res = _PyPegen_star_etc ( p , a , b , c );
5194
897
            if (_res == NULL && PyErr_Occurred()) {
5195
0
                p->error_indicator = 1;
5196
0
                p->level--;
5197
0
                return NULL;
5198
0
            }
5199
897
            goto done;
5200
897
        }
5201
12.7k
        p->mark = _mark;
5202
12.7k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5203
12.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
5204
12.7k
    }
5205
0
    { // '*' param_no_default_star_annotation param_maybe_default* kwds?
5206
12.7k
        if (p->error_indicator) {
5207
5
            p->level--;
5208
5
            return NULL;
5209
5
        }
5210
12.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?"));
5211
12.7k
        Token * _literal;
5212
12.7k
        arg_ty a;
5213
12.7k
        asdl_seq * b;
5214
12.7k
        void *c;
5215
12.7k
        if (
5216
12.7k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
5217
12.7k
            &&
5218
12.7k
            (a = param_no_default_star_annotation_rule(p))  // param_no_default_star_annotation
5219
12.7k
            &&
5220
12.7k
            (b = _loop0_31_rule(p))  // param_maybe_default*
5221
12.7k
            &&
5222
12.7k
            (c = kwds_rule(p), !p->error_indicator)  // kwds?
5223
12.7k
        )
5224
850
        {
5225
850
            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?"));
5226
850
            _res = _PyPegen_star_etc ( p , a , b , c );
5227
850
            if (_res == NULL && PyErr_Occurred()) {
5228
0
                p->error_indicator = 1;
5229
0
                p->level--;
5230
0
                return NULL;
5231
0
            }
5232
850
            goto done;
5233
850
        }
5234
11.9k
        p->mark = _mark;
5235
11.9k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5236
11.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' param_no_default_star_annotation param_maybe_default* kwds?"));
5237
11.9k
    }
5238
0
    { // '*' ',' param_maybe_default+ kwds?
5239
11.9k
        if (p->error_indicator) {
5240
4
            p->level--;
5241
4
            return NULL;
5242
4
        }
5243
11.9k
        D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
5244
11.9k
        Token * _literal;
5245
11.9k
        Token * _literal_1;
5246
11.9k
        asdl_seq * b;
5247
11.9k
        void *c;
5248
11.9k
        if (
5249
11.9k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
5250
11.9k
            &&
5251
11.9k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
5252
11.9k
            &&
5253
11.9k
            (b = _loop1_32_rule(p))  // param_maybe_default+
5254
11.9k
            &&
5255
11.9k
            (c = kwds_rule(p), !p->error_indicator)  // kwds?
5256
11.9k
        )
5257
901
        {
5258
901
            D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
5259
901
            _res = _PyPegen_star_etc ( p , NULL , b , c );
5260
901
            if (_res == NULL && PyErr_Occurred()) {
5261
0
                p->error_indicator = 1;
5262
0
                p->level--;
5263
0
                return NULL;
5264
0
            }
5265
901
            goto done;
5266
901
        }
5267
11.0k
        p->mark = _mark;
5268
11.0k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5269
11.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
5270
11.0k
    }
5271
0
    { // kwds
5272
11.0k
        if (p->error_indicator) {
5273
4
            p->level--;
5274
4
            return NULL;
5275
4
        }
5276
11.0k
        D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwds"));
5277
11.0k
        arg_ty a;
5278
11.0k
        if (
5279
11.0k
            (a = kwds_rule(p))  // kwds
5280
11.0k
        )
5281
596
        {
5282
596
            D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwds"));
5283
596
            _res = _PyPegen_star_etc ( p , NULL , NULL , a );
5284
596
            if (_res == NULL && PyErr_Occurred()) {
5285
0
                p->error_indicator = 1;
5286
0
                p->level--;
5287
0
                return NULL;
5288
0
            }
5289
596
            goto done;
5290
596
        }
5291
10.4k
        p->mark = _mark;
5292
10.4k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5293
10.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwds"));
5294
10.4k
    }
5295
0
    _res = NULL;
5296
13.6k
  done:
5297
13.6k
    p->level--;
5298
13.6k
    return _res;
5299
10.4k
}
5300
5301
// kwds: invalid_kwds | '**' param_no_default
5302
static arg_ty
5303
kwds_rule(Parser *p)
5304
13.6k
{
5305
13.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5306
0
        _Pypegen_stack_overflow(p);
5307
0
    }
5308
13.6k
    if (p->error_indicator) {
5309
2
        p->level--;
5310
2
        return NULL;
5311
2
    }
5312
13.6k
    arg_ty _res = NULL;
5313
13.6k
    int _mark = p->mark;
5314
13.6k
    if (p->call_invalid_rules) { // invalid_kwds
5315
4.83k
        if (p->error_indicator) {
5316
0
            p->level--;
5317
0
            return NULL;
5318
0
        }
5319
4.83k
        D(fprintf(stderr, "%*c> kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwds"));
5320
4.83k
        void *invalid_kwds_var;
5321
4.83k
        if (
5322
4.83k
            (invalid_kwds_var = invalid_kwds_rule(p))  // invalid_kwds
5323
4.83k
        )
5324
0
        {
5325
0
            D(fprintf(stderr, "%*c+ kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_kwds"));
5326
0
            _res = invalid_kwds_var;
5327
0
            goto done;
5328
0
        }
5329
4.83k
        p->mark = _mark;
5330
4.83k
        D(fprintf(stderr, "%*c%s kwds[%d-%d]: %s failed!\n", p->level, ' ',
5331
4.83k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwds"));
5332
4.83k
    }
5333
13.6k
    { // '**' param_no_default
5334
13.6k
        if (p->error_indicator) {
5335
6
            p->level--;
5336
6
            return NULL;
5337
6
        }
5338
13.6k
        D(fprintf(stderr, "%*c> kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param_no_default"));
5339
13.6k
        Token * _literal;
5340
13.6k
        arg_ty a;
5341
13.6k
        if (
5342
13.6k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
5343
13.6k
            &&
5344
13.6k
            (a = param_no_default_rule(p))  // param_no_default
5345
13.6k
        )
5346
702
        {
5347
702
            D(fprintf(stderr, "%*c+ kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' param_no_default"));
5348
702
            _res = a;
5349
702
            if (_res == NULL && PyErr_Occurred()) {
5350
0
                p->error_indicator = 1;
5351
0
                p->level--;
5352
0
                return NULL;
5353
0
            }
5354
702
            goto done;
5355
702
        }
5356
12.9k
        p->mark = _mark;
5357
12.9k
        D(fprintf(stderr, "%*c%s kwds[%d-%d]: %s failed!\n", p->level, ' ',
5358
12.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param_no_default"));
5359
12.9k
    }
5360
0
    _res = NULL;
5361
13.6k
  done:
5362
13.6k
    p->level--;
5363
13.6k
    return _res;
5364
12.9k
}
5365
5366
// param_no_default: param ',' TYPE_COMMENT? | param TYPE_COMMENT? &')'
5367
static arg_ty
5368
param_no_default_rule(Parser *p)
5369
203k
{
5370
203k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5371
0
        _Pypegen_stack_overflow(p);
5372
0
    }
5373
203k
    if (p->error_indicator) {
5374
0
        p->level--;
5375
0
        return NULL;
5376
0
    }
5377
203k
    arg_ty _res = NULL;
5378
203k
    int _mark = p->mark;
5379
203k
    { // param ',' TYPE_COMMENT?
5380
203k
        if (p->error_indicator) {
5381
0
            p->level--;
5382
0
            return NULL;
5383
0
        }
5384
203k
        D(fprintf(stderr, "%*c> param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param ',' TYPE_COMMENT?"));
5385
203k
        Token * _literal;
5386
203k
        arg_ty a;
5387
203k
        void *tc;
5388
203k
        if (
5389
203k
            (a = param_rule(p))  // param
5390
203k
            &&
5391
203k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
5392
203k
            &&
5393
203k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5394
203k
        )
5395
41.2k
        {
5396
41.2k
            D(fprintf(stderr, "%*c+ param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param ',' TYPE_COMMENT?"));
5397
41.2k
            _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5398
41.2k
            if (_res == NULL && PyErr_Occurred()) {
5399
0
                p->error_indicator = 1;
5400
0
                p->level--;
5401
0
                return NULL;
5402
0
            }
5403
41.2k
            goto done;
5404
41.2k
        }
5405
161k
        p->mark = _mark;
5406
161k
        D(fprintf(stderr, "%*c%s param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5407
161k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param ',' TYPE_COMMENT?"));
5408
161k
    }
5409
0
    { // param TYPE_COMMENT? &')'
5410
161k
        if (p->error_indicator) {
5411
29
            p->level--;
5412
29
            return NULL;
5413
29
        }
5414
161k
        D(fprintf(stderr, "%*c> param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param TYPE_COMMENT? &')'"));
5415
161k
        arg_ty a;
5416
161k
        void *tc;
5417
161k
        if (
5418
161k
            (a = param_rule(p))  // param
5419
161k
            &&
5420
161k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5421
161k
            &&
5422
161k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5423
161k
        )
5424
27.1k
        {
5425
27.1k
            D(fprintf(stderr, "%*c+ param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param TYPE_COMMENT? &')'"));
5426
27.1k
            _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5427
27.1k
            if (_res == NULL && PyErr_Occurred()) {
5428
0
                p->error_indicator = 1;
5429
0
                p->level--;
5430
0
                return NULL;
5431
0
            }
5432
27.1k
            goto done;
5433
27.1k
        }
5434
134k
        p->mark = _mark;
5435
134k
        D(fprintf(stderr, "%*c%s param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5436
134k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param TYPE_COMMENT? &')'"));
5437
134k
    }
5438
0
    _res = NULL;
5439
203k
  done:
5440
203k
    p->level--;
5441
203k
    return _res;
5442
134k
}
5443
5444
// param_no_default_star_annotation:
5445
//     | param_star_annotation ',' TYPE_COMMENT?
5446
//     | param_star_annotation TYPE_COMMENT? &')'
5447
static arg_ty
5448
param_no_default_star_annotation_rule(Parser *p)
5449
1.86k
{
5450
1.86k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5451
0
        _Pypegen_stack_overflow(p);
5452
0
    }
5453
1.86k
    if (p->error_indicator) {
5454
0
        p->level--;
5455
0
        return NULL;
5456
0
    }
5457
1.86k
    arg_ty _res = NULL;
5458
1.86k
    int _mark = p->mark;
5459
1.86k
    { // param_star_annotation ',' TYPE_COMMENT?
5460
1.86k
        if (p->error_indicator) {
5461
0
            p->level--;
5462
0
            return NULL;
5463
0
        }
5464
1.86k
        D(fprintf(stderr, "%*c> param_no_default_star_annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_star_annotation ',' TYPE_COMMENT?"));
5465
1.86k
        Token * _literal;
5466
1.86k
        arg_ty a;
5467
1.86k
        void *tc;
5468
1.86k
        if (
5469
1.86k
            (a = param_star_annotation_rule(p))  // param_star_annotation
5470
1.86k
            &&
5471
1.86k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
5472
1.86k
            &&
5473
1.86k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5474
1.86k
        )
5475
129
        {
5476
129
            D(fprintf(stderr, "%*c+ param_no_default_star_annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_star_annotation ',' TYPE_COMMENT?"));
5477
129
            _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5478
129
            if (_res == NULL && PyErr_Occurred()) {
5479
0
                p->error_indicator = 1;
5480
0
                p->level--;
5481
0
                return NULL;
5482
0
            }
5483
129
            goto done;
5484
129
        }
5485
1.73k
        p->mark = _mark;
5486
1.73k
        D(fprintf(stderr, "%*c%s param_no_default_star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
5487
1.73k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_star_annotation ',' TYPE_COMMENT?"));
5488
1.73k
    }
5489
0
    { // param_star_annotation TYPE_COMMENT? &')'
5490
1.73k
        if (p->error_indicator) {
5491
3
            p->level--;
5492
3
            return NULL;
5493
3
        }
5494
1.73k
        D(fprintf(stderr, "%*c> param_no_default_star_annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_star_annotation TYPE_COMMENT? &')'"));
5495
1.73k
        arg_ty a;
5496
1.73k
        void *tc;
5497
1.73k
        if (
5498
1.73k
            (a = param_star_annotation_rule(p))  // param_star_annotation
5499
1.73k
            &&
5500
1.73k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5501
1.73k
            &&
5502
1.73k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5503
1.73k
        )
5504
722
        {
5505
722
            D(fprintf(stderr, "%*c+ param_no_default_star_annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_star_annotation TYPE_COMMENT? &')'"));
5506
722
            _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5507
722
            if (_res == NULL && PyErr_Occurred()) {
5508
0
                p->error_indicator = 1;
5509
0
                p->level--;
5510
0
                return NULL;
5511
0
            }
5512
722
            goto done;
5513
722
        }
5514
1.01k
        p->mark = _mark;
5515
1.01k
        D(fprintf(stderr, "%*c%s param_no_default_star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
5516
1.01k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_star_annotation TYPE_COMMENT? &')'"));
5517
1.01k
    }
5518
0
    _res = NULL;
5519
1.86k
  done:
5520
1.86k
    p->level--;
5521
1.86k
    return _res;
5522
1.01k
}
5523
5524
// param_with_default: param default ',' TYPE_COMMENT? | param default TYPE_COMMENT? &')'
5525
static NameDefaultPair*
5526
param_with_default_rule(Parser *p)
5527
94.7k
{
5528
94.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5529
0
        _Pypegen_stack_overflow(p);
5530
0
    }
5531
94.7k
    if (p->error_indicator) {
5532
0
        p->level--;
5533
0
        return NULL;
5534
0
    }
5535
94.7k
    NameDefaultPair* _res = NULL;
5536
94.7k
    int _mark = p->mark;
5537
94.7k
    { // param default ',' TYPE_COMMENT?
5538
94.7k
        if (p->error_indicator) {
5539
0
            p->level--;
5540
0
            return NULL;
5541
0
        }
5542
94.7k
        D(fprintf(stderr, "%*c> param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default ',' TYPE_COMMENT?"));
5543
94.7k
        Token * _literal;
5544
94.7k
        arg_ty a;
5545
94.7k
        expr_ty c;
5546
94.7k
        void *tc;
5547
94.7k
        if (
5548
94.7k
            (a = param_rule(p))  // param
5549
94.7k
            &&
5550
94.7k
            (c = default_rule(p))  // default
5551
94.7k
            &&
5552
94.7k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
5553
94.7k
            &&
5554
94.7k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5555
94.7k
        )
5556
16.3k
        {
5557
16.3k
            D(fprintf(stderr, "%*c+ param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default ',' TYPE_COMMENT?"));
5558
16.3k
            _res = _PyPegen_name_default_pair ( p , a , c , tc );
5559
16.3k
            if (_res == NULL && PyErr_Occurred()) {
5560
0
                p->error_indicator = 1;
5561
0
                p->level--;
5562
0
                return NULL;
5563
0
            }
5564
16.3k
            goto done;
5565
16.3k
        }
5566
78.3k
        p->mark = _mark;
5567
78.3k
        D(fprintf(stderr, "%*c%s param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5568
78.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default ',' TYPE_COMMENT?"));
5569
78.3k
    }
5570
0
    { // param default TYPE_COMMENT? &')'
5571
78.3k
        if (p->error_indicator) {
5572
11
            p->level--;
5573
11
            return NULL;
5574
11
        }
5575
78.3k
        D(fprintf(stderr, "%*c> param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default TYPE_COMMENT? &')'"));
5576
78.3k
        arg_ty a;
5577
78.3k
        expr_ty c;
5578
78.3k
        void *tc;
5579
78.3k
        if (
5580
78.3k
            (a = param_rule(p))  // param
5581
78.3k
            &&
5582
78.3k
            (c = default_rule(p))  // default
5583
78.3k
            &&
5584
78.3k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5585
78.3k
            &&
5586
78.3k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5587
78.3k
        )
5588
8.14k
        {
5589
8.14k
            D(fprintf(stderr, "%*c+ param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default TYPE_COMMENT? &')'"));
5590
8.14k
            _res = _PyPegen_name_default_pair ( p , a , c , tc );
5591
8.14k
            if (_res == NULL && PyErr_Occurred()) {
5592
0
                p->error_indicator = 1;
5593
0
                p->level--;
5594
0
                return NULL;
5595
0
            }
5596
8.14k
            goto done;
5597
8.14k
        }
5598
70.2k
        p->mark = _mark;
5599
70.2k
        D(fprintf(stderr, "%*c%s param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5600
70.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default TYPE_COMMENT? &')'"));
5601
70.2k
    }
5602
0
    _res = NULL;
5603
94.7k
  done:
5604
94.7k
    p->level--;
5605
94.7k
    return _res;
5606
70.2k
}
5607
5608
// param_maybe_default:
5609
//     | param default? ',' TYPE_COMMENT?
5610
//     | param default? TYPE_COMMENT? &')'
5611
static NameDefaultPair*
5612
param_maybe_default_rule(Parser *p)
5613
26.1k
{
5614
26.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5615
0
        _Pypegen_stack_overflow(p);
5616
0
    }
5617
26.1k
    if (p->error_indicator) {
5618
0
        p->level--;
5619
0
        return NULL;
5620
0
    }
5621
26.1k
    NameDefaultPair* _res = NULL;
5622
26.1k
    int _mark = p->mark;
5623
26.1k
    { // param default? ',' TYPE_COMMENT?
5624
26.1k
        if (p->error_indicator) {
5625
0
            p->level--;
5626
0
            return NULL;
5627
0
        }
5628
26.1k
        D(fprintf(stderr, "%*c> param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
5629
26.1k
        Token * _literal;
5630
26.1k
        arg_ty a;
5631
26.1k
        void *c;
5632
26.1k
        void *tc;
5633
26.1k
        if (
5634
26.1k
            (a = param_rule(p))  // param
5635
26.1k
            &&
5636
26.1k
            (c = default_rule(p), !p->error_indicator)  // default?
5637
26.1k
            &&
5638
26.1k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
5639
26.1k
            &&
5640
26.1k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5641
26.1k
        )
5642
6.87k
        {
5643
6.87k
            D(fprintf(stderr, "%*c+ param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
5644
6.87k
            _res = _PyPegen_name_default_pair ( p , a , c , tc );
5645
6.87k
            if (_res == NULL && PyErr_Occurred()) {
5646
0
                p->error_indicator = 1;
5647
0
                p->level--;
5648
0
                return NULL;
5649
0
            }
5650
6.87k
            goto done;
5651
6.87k
        }
5652
19.3k
        p->mark = _mark;
5653
19.3k
        D(fprintf(stderr, "%*c%s param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
5654
19.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
5655
19.3k
    }
5656
0
    { // param default? TYPE_COMMENT? &')'
5657
19.3k
        if (p->error_indicator) {
5658
9
            p->level--;
5659
9
            return NULL;
5660
9
        }
5661
19.3k
        D(fprintf(stderr, "%*c> param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
5662
19.3k
        arg_ty a;
5663
19.3k
        void *c;
5664
19.3k
        void *tc;
5665
19.3k
        if (
5666
19.3k
            (a = param_rule(p))  // param
5667
19.3k
            &&
5668
19.3k
            (c = default_rule(p), !p->error_indicator)  // default?
5669
19.3k
            &&
5670
19.3k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5671
19.3k
            &&
5672
19.3k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5673
19.3k
        )
5674
3.92k
        {
5675
3.92k
            D(fprintf(stderr, "%*c+ param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
5676
3.92k
            _res = _PyPegen_name_default_pair ( p , a , c , tc );
5677
3.92k
            if (_res == NULL && PyErr_Occurred()) {
5678
0
                p->error_indicator = 1;
5679
0
                p->level--;
5680
0
                return NULL;
5681
0
            }
5682
3.92k
            goto done;
5683
3.92k
        }
5684
15.3k
        p->mark = _mark;
5685
15.3k
        D(fprintf(stderr, "%*c%s param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
5686
15.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
5687
15.3k
    }
5688
0
    _res = NULL;
5689
26.1k
  done:
5690
26.1k
    p->level--;
5691
26.1k
    return _res;
5692
15.3k
}
5693
5694
// param: NAME annotation?
5695
static arg_ty
5696
param_rule(Parser *p)
5697
586k
{
5698
586k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5699
0
        _Pypegen_stack_overflow(p);
5700
0
    }
5701
586k
    if (p->error_indicator) {
5702
0
        p->level--;
5703
0
        return NULL;
5704
0
    }
5705
586k
    arg_ty _res = NULL;
5706
586k
    int _mark = p->mark;
5707
586k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5708
17
        p->error_indicator = 1;
5709
17
        p->level--;
5710
17
        return NULL;
5711
17
    }
5712
586k
    int _start_lineno = p->tokens[_mark]->lineno;
5713
586k
    UNUSED(_start_lineno); // Only used by EXTRA macro
5714
586k
    int _start_col_offset = p->tokens[_mark]->col_offset;
5715
586k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
5716
586k
    { // NAME annotation?
5717
586k
        if (p->error_indicator) {
5718
0
            p->level--;
5719
0
            return NULL;
5720
0
        }
5721
586k
        D(fprintf(stderr, "%*c> param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME annotation?"));
5722
586k
        expr_ty a;
5723
586k
        void *b;
5724
586k
        if (
5725
586k
            (a = _PyPegen_name_token(p))  // NAME
5726
586k
            &&
5727
586k
            (b = annotation_rule(p), !p->error_indicator)  // annotation?
5728
586k
        )
5729
214k
        {
5730
214k
            D(fprintf(stderr, "%*c+ param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME annotation?"));
5731
214k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5732
214k
            if (_token == NULL) {
5733
0
                p->level--;
5734
0
                return NULL;
5735
0
            }
5736
214k
            int _end_lineno = _token->end_lineno;
5737
214k
            UNUSED(_end_lineno); // Only used by EXTRA macro
5738
214k
            int _end_col_offset = _token->end_col_offset;
5739
214k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
5740
214k
            _res = _PyAST_arg ( a -> v . Name . id , b , NULL , EXTRA );
5741
214k
            if (_res == NULL && PyErr_Occurred()) {
5742
0
                p->error_indicator = 1;
5743
0
                p->level--;
5744
0
                return NULL;
5745
0
            }
5746
214k
            goto done;
5747
214k
        }
5748
371k
        p->mark = _mark;
5749
371k
        D(fprintf(stderr, "%*c%s param[%d-%d]: %s failed!\n", p->level, ' ',
5750
371k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME annotation?"));
5751
371k
    }
5752
0
    _res = NULL;
5753
586k
  done:
5754
586k
    p->level--;
5755
586k
    return _res;
5756
371k
}
5757
5758
// param_star_annotation: NAME star_annotation
5759
static arg_ty
5760
param_star_annotation_rule(Parser *p)
5761
3.60k
{
5762
3.60k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5763
0
        _Pypegen_stack_overflow(p);
5764
0
    }
5765
3.60k
    if (p->error_indicator) {
5766
0
        p->level--;
5767
0
        return NULL;
5768
0
    }
5769
3.60k
    arg_ty _res = NULL;
5770
3.60k
    int _mark = p->mark;
5771
3.60k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5772
0
        p->error_indicator = 1;
5773
0
        p->level--;
5774
0
        return NULL;
5775
0
    }
5776
3.60k
    int _start_lineno = p->tokens[_mark]->lineno;
5777
3.60k
    UNUSED(_start_lineno); // Only used by EXTRA macro
5778
3.60k
    int _start_col_offset = p->tokens[_mark]->col_offset;
5779
3.60k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
5780
3.60k
    { // NAME star_annotation
5781
3.60k
        if (p->error_indicator) {
5782
0
            p->level--;
5783
0
            return NULL;
5784
0
        }
5785
3.60k
        D(fprintf(stderr, "%*c> param_star_annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME star_annotation"));
5786
3.60k
        expr_ty a;
5787
3.60k
        expr_ty b;
5788
3.60k
        if (
5789
3.60k
            (a = _PyPegen_name_token(p))  // NAME
5790
3.60k
            &&
5791
3.60k
            (b = star_annotation_rule(p))  // star_annotation
5792
3.60k
        )
5793
1.60k
        {
5794
1.60k
            D(fprintf(stderr, "%*c+ param_star_annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME star_annotation"));
5795
1.60k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5796
1.60k
            if (_token == NULL) {
5797
0
                p->level--;
5798
0
                return NULL;
5799
0
            }
5800
1.60k
            int _end_lineno = _token->end_lineno;
5801
1.60k
            UNUSED(_end_lineno); // Only used by EXTRA macro
5802
1.60k
            int _end_col_offset = _token->end_col_offset;
5803
1.60k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
5804
1.60k
            _res = _PyAST_arg ( a -> v . Name . id , b , NULL , EXTRA );
5805
1.60k
            if (_res == NULL && PyErr_Occurred()) {
5806
0
                p->error_indicator = 1;
5807
0
                p->level--;
5808
0
                return NULL;
5809
0
            }
5810
1.60k
            goto done;
5811
1.60k
        }
5812
1.99k
        p->mark = _mark;
5813
1.99k
        D(fprintf(stderr, "%*c%s param_star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
5814
1.99k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME star_annotation"));
5815
1.99k
    }
5816
0
    _res = NULL;
5817
3.60k
  done:
5818
3.60k
    p->level--;
5819
3.60k
    return _res;
5820
1.99k
}
5821
5822
// annotation: ':' expression
5823
static expr_ty
5824
annotation_rule(Parser *p)
5825
214k
{
5826
214k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5827
0
        _Pypegen_stack_overflow(p);
5828
0
    }
5829
214k
    if (p->error_indicator) {
5830
0
        p->level--;
5831
0
        return NULL;
5832
0
    }
5833
214k
    expr_ty _res = NULL;
5834
214k
    int _mark = p->mark;
5835
214k
    { // ':' expression
5836
214k
        if (p->error_indicator) {
5837
0
            p->level--;
5838
0
            return NULL;
5839
0
        }
5840
214k
        D(fprintf(stderr, "%*c> annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression"));
5841
214k
        Token * _literal;
5842
214k
        expr_ty a;
5843
214k
        if (
5844
214k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5845
214k
            &&
5846
214k
            (a = expression_rule(p))  // expression
5847
214k
        )
5848
3.22k
        {
5849
3.22k
            D(fprintf(stderr, "%*c+ annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression"));
5850
3.22k
            _res = a;
5851
3.22k
            if (_res == NULL && PyErr_Occurred()) {
5852
0
                p->error_indicator = 1;
5853
0
                p->level--;
5854
0
                return NULL;
5855
0
            }
5856
3.22k
            goto done;
5857
3.22k
        }
5858
211k
        p->mark = _mark;
5859
211k
        D(fprintf(stderr, "%*c%s annotation[%d-%d]: %s failed!\n", p->level, ' ',
5860
211k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression"));
5861
211k
    }
5862
0
    _res = NULL;
5863
214k
  done:
5864
214k
    p->level--;
5865
214k
    return _res;
5866
211k
}
5867
5868
// star_annotation: ':' star_expression
5869
static expr_ty
5870
star_annotation_rule(Parser *p)
5871
1.66k
{
5872
1.66k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5873
0
        _Pypegen_stack_overflow(p);
5874
0
    }
5875
1.66k
    if (p->error_indicator) {
5876
0
        p->level--;
5877
0
        return NULL;
5878
0
    }
5879
1.66k
    expr_ty _res = NULL;
5880
1.66k
    int _mark = p->mark;
5881
1.66k
    { // ':' star_expression
5882
1.66k
        if (p->error_indicator) {
5883
0
            p->level--;
5884
0
            return NULL;
5885
0
        }
5886
1.66k
        D(fprintf(stderr, "%*c> star_annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' star_expression"));
5887
1.66k
        Token * _literal;
5888
1.66k
        expr_ty a;
5889
1.66k
        if (
5890
1.66k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5891
1.66k
            &&
5892
1.66k
            (a = star_expression_rule(p))  // star_expression
5893
1.66k
        )
5894
1.60k
        {
5895
1.60k
            D(fprintf(stderr, "%*c+ star_annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' star_expression"));
5896
1.60k
            _res = a;
5897
1.60k
            if (_res == NULL && PyErr_Occurred()) {
5898
0
                p->error_indicator = 1;
5899
0
                p->level--;
5900
0
                return NULL;
5901
0
            }
5902
1.60k
            goto done;
5903
1.60k
        }
5904
56
        p->mark = _mark;
5905
56
        D(fprintf(stderr, "%*c%s star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
5906
56
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' star_expression"));
5907
56
    }
5908
0
    _res = NULL;
5909
1.66k
  done:
5910
1.66k
    p->level--;
5911
1.66k
    return _res;
5912
56
}
5913
5914
// default: '=' expression | invalid_default
5915
static expr_ty
5916
default_rule(Parser *p)
5917
177k
{
5918
177k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5919
0
        _Pypegen_stack_overflow(p);
5920
0
    }
5921
177k
    if (p->error_indicator) {
5922
0
        p->level--;
5923
0
        return NULL;
5924
0
    }
5925
177k
    expr_ty _res = NULL;
5926
177k
    int _mark = p->mark;
5927
177k
    { // '=' expression
5928
177k
        if (p->error_indicator) {
5929
0
            p->level--;
5930
0
            return NULL;
5931
0
        }
5932
177k
        D(fprintf(stderr, "%*c> default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' expression"));
5933
177k
        Token * _literal;
5934
177k
        expr_ty a;
5935
177k
        if (
5936
177k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
5937
177k
            &&
5938
177k
            (a = expression_rule(p))  // expression
5939
177k
        )
5940
95.8k
        {
5941
95.8k
            D(fprintf(stderr, "%*c+ default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' expression"));
5942
95.8k
            _res = a;
5943
95.8k
            if (_res == NULL && PyErr_Occurred()) {
5944
0
                p->error_indicator = 1;
5945
0
                p->level--;
5946
0
                return NULL;
5947
0
            }
5948
95.8k
            goto done;
5949
95.8k
        }
5950
81.4k
        p->mark = _mark;
5951
81.4k
        D(fprintf(stderr, "%*c%s default[%d-%d]: %s failed!\n", p->level, ' ',
5952
81.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' expression"));
5953
81.4k
    }
5954
81.4k
    if (p->call_invalid_rules) { // invalid_default
5955
70.3k
        if (p->error_indicator) {
5956
628
            p->level--;
5957
628
            return NULL;
5958
628
        }
5959
69.7k
        D(fprintf(stderr, "%*c> default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_default"));
5960
69.7k
        void *invalid_default_var;
5961
69.7k
        if (
5962
69.7k
            (invalid_default_var = invalid_default_rule(p))  // invalid_default
5963
69.7k
        )
5964
0
        {
5965
0
            D(fprintf(stderr, "%*c+ default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_default"));
5966
0
            _res = invalid_default_var;
5967
0
            goto done;
5968
0
        }
5969
69.7k
        p->mark = _mark;
5970
69.7k
        D(fprintf(stderr, "%*c%s default[%d-%d]: %s failed!\n", p->level, ' ',
5971
69.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_default"));
5972
69.7k
    }
5973
80.8k
    _res = NULL;
5974
176k
  done:
5975
176k
    p->level--;
5976
176k
    return _res;
5977
80.8k
}
5978
5979
// if_stmt:
5980
//     | invalid_if_stmt
5981
//     | 'if' named_expression ':' block elif_stmt
5982
//     | 'if' named_expression ':' block else_block?
5983
static stmt_ty
5984
if_stmt_rule(Parser *p)
5985
7.67k
{
5986
7.67k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5987
0
        _Pypegen_stack_overflow(p);
5988
0
    }
5989
7.67k
    if (p->error_indicator) {
5990
0
        p->level--;
5991
0
        return NULL;
5992
0
    }
5993
7.67k
    stmt_ty _res = NULL;
5994
7.67k
    int _mark = p->mark;
5995
7.67k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5996
0
        p->error_indicator = 1;
5997
0
        p->level--;
5998
0
        return NULL;
5999
0
    }
6000
7.67k
    int _start_lineno = p->tokens[_mark]->lineno;
6001
7.67k
    UNUSED(_start_lineno); // Only used by EXTRA macro
6002
7.67k
    int _start_col_offset = p->tokens[_mark]->col_offset;
6003
7.67k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
6004
7.67k
    if (p->call_invalid_rules) { // invalid_if_stmt
6005
772
        if (p->error_indicator) {
6006
0
            p->level--;
6007
0
            return NULL;
6008
0
        }
6009
772
        D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_if_stmt"));
6010
772
        void *invalid_if_stmt_var;
6011
772
        if (
6012
772
            (invalid_if_stmt_var = invalid_if_stmt_rule(p))  // invalid_if_stmt
6013
772
        )
6014
0
        {
6015
0
            D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_if_stmt"));
6016
0
            _res = invalid_if_stmt_var;
6017
0
            goto done;
6018
0
        }
6019
772
        p->mark = _mark;
6020
772
        D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6021
772
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_if_stmt"));
6022
772
    }
6023
7.67k
    { // 'if' named_expression ':' block elif_stmt
6024
7.67k
        if (p->error_indicator) {
6025
13
            p->level--;
6026
13
            return NULL;
6027
13
        }
6028
7.65k
        D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
6029
7.65k
        Token * _keyword;
6030
7.65k
        Token * _literal;
6031
7.65k
        expr_ty a;
6032
7.65k
        asdl_stmt_seq* b;
6033
7.65k
        stmt_ty c;
6034
7.65k
        if (
6035
7.65k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
6036
7.65k
            &&
6037
7.65k
            (a = named_expression_rule(p))  // named_expression
6038
7.65k
            &&
6039
7.65k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6040
7.65k
            &&
6041
7.65k
            (b = block_rule(p))  // block
6042
7.65k
            &&
6043
7.65k
            (c = elif_stmt_rule(p))  // elif_stmt
6044
7.65k
        )
6045
546
        {
6046
546
            D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
6047
546
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6048
546
            if (_token == NULL) {
6049
0
                p->level--;
6050
0
                return NULL;
6051
0
            }
6052
546
            int _end_lineno = _token->end_lineno;
6053
546
            UNUSED(_end_lineno); // Only used by EXTRA macro
6054
546
            int _end_col_offset = _token->end_col_offset;
6055
546
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6056
546
            _res = _PyAST_If ( a , b , CHECK ( asdl_stmt_seq* , _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
6057
546
            if (_res == NULL && PyErr_Occurred()) {
6058
0
                p->error_indicator = 1;
6059
0
                p->level--;
6060
0
                return NULL;
6061
0
            }
6062
546
            goto done;
6063
546
        }
6064
7.11k
        p->mark = _mark;
6065
7.11k
        D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6066
7.11k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
6067
7.11k
    }
6068
0
    { // 'if' named_expression ':' block else_block?
6069
7.11k
        if (p->error_indicator) {
6070
38
            p->level--;
6071
38
            return NULL;
6072
38
        }
6073
7.07k
        D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block else_block?"));
6074
7.07k
        Token * _keyword;
6075
7.07k
        Token * _literal;
6076
7.07k
        expr_ty a;
6077
7.07k
        asdl_stmt_seq* b;
6078
7.07k
        void *c;
6079
7.07k
        if (
6080
7.07k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
6081
7.07k
            &&
6082
7.07k
            (a = named_expression_rule(p))  // named_expression
6083
7.07k
            &&
6084
7.07k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6085
7.07k
            &&
6086
7.07k
            (b = block_rule(p))  // block
6087
7.07k
            &&
6088
7.07k
            (c = else_block_rule(p), !p->error_indicator)  // else_block?
6089
7.07k
        )
6090
6.94k
        {
6091
6.94k
            D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block else_block?"));
6092
6.94k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6093
6.94k
            if (_token == NULL) {
6094
0
                p->level--;
6095
0
                return NULL;
6096
0
            }
6097
6.94k
            int _end_lineno = _token->end_lineno;
6098
6.94k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6099
6.94k
            int _end_col_offset = _token->end_col_offset;
6100
6.94k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6101
6.94k
            _res = _PyAST_If ( a , b , c , EXTRA );
6102
6.94k
            if (_res == NULL && PyErr_Occurred()) {
6103
0
                p->error_indicator = 1;
6104
0
                p->level--;
6105
0
                return NULL;
6106
0
            }
6107
6.94k
            goto done;
6108
6.94k
        }
6109
128
        p->mark = _mark;
6110
128
        D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6111
128
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' block else_block?"));
6112
128
    }
6113
0
    _res = NULL;
6114
7.61k
  done:
6115
7.61k
    p->level--;
6116
7.61k
    return _res;
6117
128
}
6118
6119
// elif_stmt:
6120
//     | invalid_elif_stmt
6121
//     | 'elif' named_expression ':' block elif_stmt
6122
//     | 'elif' named_expression ':' block else_block?
6123
static stmt_ty
6124
elif_stmt_rule(Parser *p)
6125
9.20k
{
6126
9.20k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6127
0
        _Pypegen_stack_overflow(p);
6128
0
    }
6129
9.20k
    if (p->error_indicator) {
6130
0
        p->level--;
6131
0
        return NULL;
6132
0
    }
6133
9.20k
    stmt_ty _res = NULL;
6134
9.20k
    int _mark = p->mark;
6135
9.20k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6136
2
        p->error_indicator = 1;
6137
2
        p->level--;
6138
2
        return NULL;
6139
2
    }
6140
9.19k
    int _start_lineno = p->tokens[_mark]->lineno;
6141
9.19k
    UNUSED(_start_lineno); // Only used by EXTRA macro
6142
9.19k
    int _start_col_offset = p->tokens[_mark]->col_offset;
6143
9.19k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
6144
9.19k
    if (p->call_invalid_rules) { // invalid_elif_stmt
6145
1.02k
        if (p->error_indicator) {
6146
0
            p->level--;
6147
0
            return NULL;
6148
0
        }
6149
1.02k
        D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_elif_stmt"));
6150
1.02k
        void *invalid_elif_stmt_var;
6151
1.02k
        if (
6152
1.02k
            (invalid_elif_stmt_var = invalid_elif_stmt_rule(p))  // invalid_elif_stmt
6153
1.02k
        )
6154
0
        {
6155
0
            D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_elif_stmt"));
6156
0
            _res = invalid_elif_stmt_var;
6157
0
            goto done;
6158
0
        }
6159
1.02k
        p->mark = _mark;
6160
1.02k
        D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6161
1.02k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_elif_stmt"));
6162
1.02k
    }
6163
9.19k
    { // 'elif' named_expression ':' block elif_stmt
6164
9.19k
        if (p->error_indicator) {
6165
9
            p->level--;
6166
9
            return NULL;
6167
9
        }
6168
9.19k
        D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
6169
9.19k
        Token * _keyword;
6170
9.19k
        Token * _literal;
6171
9.19k
        expr_ty a;
6172
9.19k
        asdl_stmt_seq* b;
6173
9.19k
        stmt_ty c;
6174
9.19k
        if (
6175
9.19k
            (_keyword = _PyPegen_expect_token(p, 692))  // token='elif'
6176
9.19k
            &&
6177
9.19k
            (a = named_expression_rule(p))  // named_expression
6178
9.19k
            &&
6179
9.19k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6180
9.19k
            &&
6181
9.19k
            (b = block_rule(p))  // block
6182
9.19k
            &&
6183
9.19k
            (c = elif_stmt_rule(p))  // elif_stmt
6184
9.19k
        )
6185
940
        {
6186
940
            D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
6187
940
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6188
940
            if (_token == NULL) {
6189
0
                p->level--;
6190
0
                return NULL;
6191
0
            }
6192
940
            int _end_lineno = _token->end_lineno;
6193
940
            UNUSED(_end_lineno); // Only used by EXTRA macro
6194
940
            int _end_col_offset = _token->end_col_offset;
6195
940
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6196
940
            _res = _PyAST_If ( a , b , CHECK ( asdl_stmt_seq* , _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
6197
940
            if (_res == NULL && PyErr_Occurred()) {
6198
0
                p->error_indicator = 1;
6199
0
                p->level--;
6200
0
                return NULL;
6201
0
            }
6202
940
            goto done;
6203
940
        }
6204
8.25k
        p->mark = _mark;
6205
8.25k
        D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6206
8.25k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
6207
8.25k
    }
6208
0
    { // 'elif' named_expression ':' block else_block?
6209
8.25k
        if (p->error_indicator) {
6210
201
            p->level--;
6211
201
            return NULL;
6212
201
        }
6213
8.04k
        D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block else_block?"));
6214
8.04k
        Token * _keyword;
6215
8.04k
        Token * _literal;
6216
8.04k
        expr_ty a;
6217
8.04k
        asdl_stmt_seq* b;
6218
8.04k
        void *c;
6219
8.04k
        if (
6220
8.04k
            (_keyword = _PyPegen_expect_token(p, 692))  // token='elif'
6221
8.04k
            &&
6222
8.04k
            (a = named_expression_rule(p))  // named_expression
6223
8.04k
            &&
6224
8.04k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6225
8.04k
            &&
6226
8.04k
            (b = block_rule(p))  // block
6227
8.04k
            &&
6228
8.04k
            (c = else_block_rule(p), !p->error_indicator)  // else_block?
6229
8.04k
        )
6230
546
        {
6231
546
            D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block else_block?"));
6232
546
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6233
546
            if (_token == NULL) {
6234
0
                p->level--;
6235
0
                return NULL;
6236
0
            }
6237
546
            int _end_lineno = _token->end_lineno;
6238
546
            UNUSED(_end_lineno); // Only used by EXTRA macro
6239
546
            int _end_col_offset = _token->end_col_offset;
6240
546
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6241
546
            _res = _PyAST_If ( a , b , c , EXTRA );
6242
546
            if (_res == NULL && PyErr_Occurred()) {
6243
0
                p->error_indicator = 1;
6244
0
                p->level--;
6245
0
                return NULL;
6246
0
            }
6247
546
            goto done;
6248
546
        }
6249
7.50k
        p->mark = _mark;
6250
7.50k
        D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6251
7.50k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' block else_block?"));
6252
7.50k
    }
6253
0
    _res = NULL;
6254
8.98k
  done:
6255
8.98k
    p->level--;
6256
8.98k
    return _res;
6257
7.50k
}
6258
6259
// else_block: invalid_else_stmt | 'else' &&':' block
6260
static asdl_stmt_seq*
6261
else_block_rule(Parser *p)
6262
15.6k
{
6263
15.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6264
0
        _Pypegen_stack_overflow(p);
6265
0
    }
6266
15.6k
    if (p->error_indicator) {
6267
0
        p->level--;
6268
0
        return NULL;
6269
0
    }
6270
15.6k
    asdl_stmt_seq* _res = NULL;
6271
15.6k
    int _mark = p->mark;
6272
15.6k
    if (p->call_invalid_rules) { // invalid_else_stmt
6273
3.01k
        if (p->error_indicator) {
6274
0
            p->level--;
6275
0
            return NULL;
6276
0
        }
6277
3.01k
        D(fprintf(stderr, "%*c> else_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_else_stmt"));
6278
3.01k
        void *invalid_else_stmt_var;
6279
3.01k
        if (
6280
3.01k
            (invalid_else_stmt_var = invalid_else_stmt_rule(p))  // invalid_else_stmt
6281
3.01k
        )
6282
0
        {
6283
0
            D(fprintf(stderr, "%*c+ else_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_else_stmt"));
6284
0
            _res = invalid_else_stmt_var;
6285
0
            goto done;
6286
0
        }
6287
3.01k
        p->mark = _mark;
6288
3.01k
        D(fprintf(stderr, "%*c%s else_block[%d-%d]: %s failed!\n", p->level, ' ',
6289
3.01k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_else_stmt"));
6290
3.01k
    }
6291
15.6k
    { // 'else' &&':' block
6292
15.6k
        if (p->error_indicator) {
6293
8
            p->level--;
6294
8
            return NULL;
6295
8
        }
6296
15.6k
        D(fprintf(stderr, "%*c> else_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else' &&':' block"));
6297
15.6k
        Token * _keyword;
6298
15.6k
        Token * _literal;
6299
15.6k
        asdl_stmt_seq* b;
6300
15.6k
        if (
6301
15.6k
            (_keyword = _PyPegen_expect_token(p, 691))  // token='else'
6302
15.6k
            &&
6303
15.6k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
6304
15.6k
            &&
6305
15.6k
            (b = block_rule(p))  // block
6306
15.6k
        )
6307
1.48k
        {
6308
1.48k
            D(fprintf(stderr, "%*c+ else_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else' &&':' block"));
6309
1.48k
            _res = b;
6310
1.48k
            if (_res == NULL && PyErr_Occurred()) {
6311
0
                p->error_indicator = 1;
6312
0
                p->level--;
6313
0
                return NULL;
6314
0
            }
6315
1.48k
            goto done;
6316
1.48k
        }
6317
14.1k
        p->mark = _mark;
6318
14.1k
        D(fprintf(stderr, "%*c%s else_block[%d-%d]: %s failed!\n", p->level, ' ',
6319
14.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else' &&':' block"));
6320
14.1k
    }
6321
0
    _res = NULL;
6322
15.6k
  done:
6323
15.6k
    p->level--;
6324
15.6k
    return _res;
6325
14.1k
}
6326
6327
// while_stmt: invalid_while_stmt | 'while' named_expression ':' block else_block?
6328
static stmt_ty
6329
while_stmt_rule(Parser *p)
6330
1.31k
{
6331
1.31k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6332
0
        _Pypegen_stack_overflow(p);
6333
0
    }
6334
1.31k
    if (p->error_indicator) {
6335
0
        p->level--;
6336
0
        return NULL;
6337
0
    }
6338
1.31k
    stmt_ty _res = NULL;
6339
1.31k
    int _mark = p->mark;
6340
1.31k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6341
0
        p->error_indicator = 1;
6342
0
        p->level--;
6343
0
        return NULL;
6344
0
    }
6345
1.31k
    int _start_lineno = p->tokens[_mark]->lineno;
6346
1.31k
    UNUSED(_start_lineno); // Only used by EXTRA macro
6347
1.31k
    int _start_col_offset = p->tokens[_mark]->col_offset;
6348
1.31k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
6349
1.31k
    if (p->call_invalid_rules) { // invalid_while_stmt
6350
385
        if (p->error_indicator) {
6351
0
            p->level--;
6352
0
            return NULL;
6353
0
        }
6354
385
        D(fprintf(stderr, "%*c> while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_while_stmt"));
6355
385
        void *invalid_while_stmt_var;
6356
385
        if (
6357
385
            (invalid_while_stmt_var = invalid_while_stmt_rule(p))  // invalid_while_stmt
6358
385
        )
6359
0
        {
6360
0
            D(fprintf(stderr, "%*c+ while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_while_stmt"));
6361
0
            _res = invalid_while_stmt_var;
6362
0
            goto done;
6363
0
        }
6364
385
        p->mark = _mark;
6365
385
        D(fprintf(stderr, "%*c%s while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6366
385
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_while_stmt"));
6367
385
    }
6368
1.31k
    { // 'while' named_expression ':' block else_block?
6369
1.31k
        if (p->error_indicator) {
6370
6
            p->level--;
6371
6
            return NULL;
6372
6
        }
6373
1.31k
        D(fprintf(stderr, "%*c> while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' block else_block?"));
6374
1.31k
        Token * _keyword;
6375
1.31k
        Token * _literal;
6376
1.31k
        expr_ty a;
6377
1.31k
        asdl_stmt_seq* b;
6378
1.31k
        void *c;
6379
1.31k
        if (
6380
1.31k
            (_keyword = _PyPegen_expect_token(p, 694))  // token='while'
6381
1.31k
            &&
6382
1.31k
            (a = named_expression_rule(p))  // named_expression
6383
1.31k
            &&
6384
1.31k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6385
1.31k
            &&
6386
1.31k
            (b = block_rule(p))  // block
6387
1.31k
            &&
6388
1.31k
            (c = else_block_rule(p), !p->error_indicator)  // else_block?
6389
1.31k
        )
6390
1.23k
        {
6391
1.23k
            D(fprintf(stderr, "%*c+ while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' block else_block?"));
6392
1.23k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6393
1.23k
            if (_token == NULL) {
6394
0
                p->level--;
6395
0
                return NULL;
6396
0
            }
6397
1.23k
            int _end_lineno = _token->end_lineno;
6398
1.23k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6399
1.23k
            int _end_col_offset = _token->end_col_offset;
6400
1.23k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6401
1.23k
            _res = _PyAST_While ( a , b , c , EXTRA );
6402
1.23k
            if (_res == NULL && PyErr_Occurred()) {
6403
0
                p->error_indicator = 1;
6404
0
                p->level--;
6405
0
                return NULL;
6406
0
            }
6407
1.23k
            goto done;
6408
1.23k
        }
6409
73
        p->mark = _mark;
6410
73
        D(fprintf(stderr, "%*c%s while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6411
73
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression ':' block else_block?"));
6412
73
    }
6413
0
    _res = NULL;
6414
1.31k
  done:
6415
1.31k
    p->level--;
6416
1.31k
    return _res;
6417
73
}
6418
6419
// for_stmt:
6420
//     | invalid_for_stmt
6421
//     | 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?
6422
//     | 'async' 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?
6423
//     | invalid_for_target
6424
static stmt_ty
6425
for_stmt_rule(Parser *p)
6426
2.61k
{
6427
2.61k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6428
0
        _Pypegen_stack_overflow(p);
6429
0
    }
6430
2.61k
    if (p->error_indicator) {
6431
0
        p->level--;
6432
0
        return NULL;
6433
0
    }
6434
2.61k
    stmt_ty _res = NULL;
6435
2.61k
    int _mark = p->mark;
6436
2.61k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6437
0
        p->error_indicator = 1;
6438
0
        p->level--;
6439
0
        return NULL;
6440
0
    }
6441
2.61k
    int _start_lineno = p->tokens[_mark]->lineno;
6442
2.61k
    UNUSED(_start_lineno); // Only used by EXTRA macro
6443
2.61k
    int _start_col_offset = p->tokens[_mark]->col_offset;
6444
2.61k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
6445
2.61k
    if (p->call_invalid_rules) { // invalid_for_stmt
6446
649
        if (p->error_indicator) {
6447
0
            p->level--;
6448
0
            return NULL;
6449
0
        }
6450
649
        D(fprintf(stderr, "%*c> for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_stmt"));
6451
649
        void *invalid_for_stmt_var;
6452
649
        if (
6453
649
            (invalid_for_stmt_var = invalid_for_stmt_rule(p))  // invalid_for_stmt
6454
649
        )
6455
0
        {
6456
0
            D(fprintf(stderr, "%*c+ for_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_stmt"));
6457
0
            _res = invalid_for_stmt_var;
6458
0
            goto done;
6459
0
        }
6460
649
        p->mark = _mark;
6461
649
        D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6462
649
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_stmt"));
6463
649
    }
6464
2.61k
    { // 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?
6465
2.61k
        if (p->error_indicator) {
6466
10
            p->level--;
6467
10
            return NULL;
6468
10
        }
6469
2.60k
        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?"));
6470
2.60k
        int _cut_var = 0;
6471
2.60k
        Token * _keyword;
6472
2.60k
        Token * _keyword_1;
6473
2.60k
        Token * _literal;
6474
2.60k
        asdl_stmt_seq* b;
6475
2.60k
        void *el;
6476
2.60k
        expr_ty ex;
6477
2.60k
        expr_ty t;
6478
2.60k
        void *tc;
6479
2.60k
        if (
6480
2.60k
            (_keyword = _PyPegen_expect_token(p, 699))  // token='for'
6481
2.60k
            &&
6482
2.60k
            (t = star_targets_rule(p))  // star_targets
6483
2.60k
            &&
6484
2.60k
            (_keyword_1 = _PyPegen_expect_token(p, 700))  // token='in'
6485
2.60k
            &&
6486
2.60k
            (_cut_var = 1)
6487
2.60k
            &&
6488
2.60k
            (ex = star_expressions_rule(p))  // star_expressions
6489
2.60k
            &&
6490
2.60k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6491
2.60k
            &&
6492
2.60k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6493
2.60k
            &&
6494
2.60k
            (b = block_rule(p))  // block
6495
2.60k
            &&
6496
2.60k
            (el = else_block_rule(p), !p->error_indicator)  // else_block?
6497
2.60k
        )
6498
1.63k
        {
6499
1.63k
            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?"));
6500
1.63k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6501
1.63k
            if (_token == NULL) {
6502
0
                p->level--;
6503
0
                return NULL;
6504
0
            }
6505
1.63k
            int _end_lineno = _token->end_lineno;
6506
1.63k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6507
1.63k
            int _end_col_offset = _token->end_col_offset;
6508
1.63k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6509
1.63k
            _res = _PyAST_For ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
6510
1.63k
            if (_res == NULL && PyErr_Occurred()) {
6511
0
                p->error_indicator = 1;
6512
0
                p->level--;
6513
0
                return NULL;
6514
0
            }
6515
1.63k
            goto done;
6516
1.63k
        }
6517
977
        p->mark = _mark;
6518
977
        D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6519
977
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?"));
6520
977
        if (_cut_var) {
6521
62
            p->level--;
6522
62
            return NULL;
6523
62
        }
6524
977
    }
6525
915
    { // 'async' 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?
6526
915
        if (p->error_indicator) {
6527
6
            p->level--;
6528
6
            return NULL;
6529
6
        }
6530
909
        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?"));
6531
909
        int _cut_var = 0;
6532
909
        Token * _keyword;
6533
909
        Token * _keyword_1;
6534
909
        Token * _keyword_2;
6535
909
        Token * _literal;
6536
909
        asdl_stmt_seq* b;
6537
909
        void *el;
6538
909
        expr_ty ex;
6539
909
        expr_ty t;
6540
909
        void *tc;
6541
909
        if (
6542
909
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
6543
909
            &&
6544
909
            (_keyword_1 = _PyPegen_expect_token(p, 699))  // token='for'
6545
909
            &&
6546
909
            (t = star_targets_rule(p))  // star_targets
6547
909
            &&
6548
909
            (_keyword_2 = _PyPegen_expect_token(p, 700))  // token='in'
6549
909
            &&
6550
909
            (_cut_var = 1)
6551
909
            &&
6552
909
            (ex = star_expressions_rule(p))  // star_expressions
6553
909
            &&
6554
909
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6555
909
            &&
6556
909
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6557
909
            &&
6558
909
            (b = block_rule(p))  // block
6559
909
            &&
6560
909
            (el = else_block_rule(p), !p->error_indicator)  // else_block?
6561
909
        )
6562
698
        {
6563
698
            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?"));
6564
698
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6565
698
            if (_token == NULL) {
6566
0
                p->level--;
6567
0
                return NULL;
6568
0
            }
6569
698
            int _end_lineno = _token->end_lineno;
6570
698
            UNUSED(_end_lineno); // Only used by EXTRA macro
6571
698
            int _end_col_offset = _token->end_col_offset;
6572
698
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6573
698
            _res = CHECK_VERSION ( stmt_ty , 5 , "Async for loops are" , _PyAST_AsyncFor ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
6574
698
            if (_res == NULL && PyErr_Occurred()) {
6575
0
                p->error_indicator = 1;
6576
0
                p->level--;
6577
0
                return NULL;
6578
0
            }
6579
698
            goto done;
6580
698
        }
6581
211
        p->mark = _mark;
6582
211
        D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6583
211
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?"));
6584
211
        if (_cut_var) {
6585
26
            p->level--;
6586
26
            return NULL;
6587
26
        }
6588
211
    }
6589
185
    if (p->call_invalid_rules) { // invalid_for_target
6590
78
        if (p->error_indicator) {
6591
0
            p->level--;
6592
0
            return NULL;
6593
0
        }
6594
78
        D(fprintf(stderr, "%*c> for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
6595
78
        void *invalid_for_target_var;
6596
78
        if (
6597
78
            (invalid_for_target_var = invalid_for_target_rule(p))  // invalid_for_target
6598
78
        )
6599
0
        {
6600
0
            D(fprintf(stderr, "%*c+ for_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
6601
0
            _res = invalid_for_target_var;
6602
0
            goto done;
6603
0
        }
6604
78
        p->mark = _mark;
6605
78
        D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6606
78
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_target"));
6607
78
    }
6608
185
    _res = NULL;
6609
2.51k
  done:
6610
2.51k
    p->level--;
6611
2.51k
    return _res;
6612
185
}
6613
6614
// with_stmt:
6615
//     | invalid_with_stmt_indent
6616
//     | 'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block
6617
//     | 'with' ','.with_item+ ':' TYPE_COMMENT? block
6618
//     | 'async' 'with' '(' ','.with_item+ ','? ')' ':' block
6619
//     | 'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block
6620
//     | invalid_with_stmt
6621
static stmt_ty
6622
with_stmt_rule(Parser *p)
6623
6.06k
{
6624
6.06k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6625
0
        _Pypegen_stack_overflow(p);
6626
0
    }
6627
6.06k
    if (p->error_indicator) {
6628
0
        p->level--;
6629
0
        return NULL;
6630
0
    }
6631
6.06k
    stmt_ty _res = NULL;
6632
6.06k
    int _mark = p->mark;
6633
6.06k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6634
0
        p->error_indicator = 1;
6635
0
        p->level--;
6636
0
        return NULL;
6637
0
    }
6638
6.06k
    int _start_lineno = p->tokens[_mark]->lineno;
6639
6.06k
    UNUSED(_start_lineno); // Only used by EXTRA macro
6640
6.06k
    int _start_col_offset = p->tokens[_mark]->col_offset;
6641
6.06k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
6642
6.06k
    if (p->call_invalid_rules) { // invalid_with_stmt_indent
6643
2.65k
        if (p->error_indicator) {
6644
0
            p->level--;
6645
0
            return NULL;
6646
0
        }
6647
2.65k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt_indent"));
6648
2.65k
        void *invalid_with_stmt_indent_var;
6649
2.65k
        if (
6650
2.65k
            (invalid_with_stmt_indent_var = invalid_with_stmt_indent_rule(p))  // invalid_with_stmt_indent
6651
2.65k
        )
6652
0
        {
6653
0
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt_indent"));
6654
0
            _res = invalid_with_stmt_indent_var;
6655
0
            goto done;
6656
0
        }
6657
2.65k
        p->mark = _mark;
6658
2.65k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6659
2.65k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_stmt_indent"));
6660
2.65k
    }
6661
6.06k
    { // 'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block
6662
6.06k
        if (p->error_indicator) {
6663
47
            p->level--;
6664
47
            return NULL;
6665
47
        }
6666
6.01k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block"));
6667
6.01k
        Token * _keyword;
6668
6.01k
        Token * _literal;
6669
6.01k
        Token * _literal_1;
6670
6.01k
        Token * _literal_2;
6671
6.01k
        void *_opt_var;
6672
6.01k
        UNUSED(_opt_var); // Silence compiler warnings
6673
6.01k
        asdl_withitem_seq* a;
6674
6.01k
        asdl_stmt_seq* b;
6675
6.01k
        void *tc;
6676
6.01k
        if (
6677
6.01k
            (_keyword = _PyPegen_expect_token(p, 652))  // token='with'
6678
6.01k
            &&
6679
6.01k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
6680
6.01k
            &&
6681
6.01k
            (a = (asdl_withitem_seq*)_gather_34_rule(p))  // ','.with_item+
6682
6.01k
            &&
6683
6.01k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
6684
6.01k
            &&
6685
6.01k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
6686
6.01k
            &&
6687
6.01k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
6688
6.01k
            &&
6689
6.01k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6690
6.01k
            &&
6691
6.01k
            (b = block_rule(p))  // block
6692
6.01k
        )
6693
1.07k
        {
6694
1.07k
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block"));
6695
1.07k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6696
1.07k
            if (_token == NULL) {
6697
0
                p->level--;
6698
0
                return NULL;
6699
0
            }
6700
1.07k
            int _end_lineno = _token->end_lineno;
6701
1.07k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6702
1.07k
            int _end_col_offset = _token->end_col_offset;
6703
1.07k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6704
1.07k
            _res = _PyAST_With ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
6705
1.07k
            if (_res == NULL && PyErr_Occurred()) {
6706
0
                p->error_indicator = 1;
6707
0
                p->level--;
6708
0
                return NULL;
6709
0
            }
6710
1.07k
            goto done;
6711
1.07k
        }
6712
4.94k
        p->mark = _mark;
6713
4.94k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6714
4.94k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block"));
6715
4.94k
    }
6716
0
    { // 'with' ','.with_item+ ':' TYPE_COMMENT? block
6717
4.94k
        if (p->error_indicator) {
6718
17
            p->level--;
6719
17
            return NULL;
6720
17
        }
6721
4.93k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6722
4.93k
        Token * _keyword;
6723
4.93k
        Token * _literal;
6724
4.93k
        asdl_withitem_seq* a;
6725
4.93k
        asdl_stmt_seq* b;
6726
4.93k
        void *tc;
6727
4.93k
        if (
6728
4.93k
            (_keyword = _PyPegen_expect_token(p, 652))  // token='with'
6729
4.93k
            &&
6730
4.93k
            (a = (asdl_withitem_seq*)_gather_34_rule(p))  // ','.with_item+
6731
4.93k
            &&
6732
4.93k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6733
4.93k
            &&
6734
4.93k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6735
4.93k
            &&
6736
4.93k
            (b = block_rule(p))  // block
6737
4.93k
        )
6738
2.36k
        {
6739
2.36k
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6740
2.36k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6741
2.36k
            if (_token == NULL) {
6742
0
                p->level--;
6743
0
                return NULL;
6744
0
            }
6745
2.36k
            int _end_lineno = _token->end_lineno;
6746
2.36k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6747
2.36k
            int _end_col_offset = _token->end_col_offset;
6748
2.36k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6749
2.36k
            _res = _PyAST_With ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
6750
2.36k
            if (_res == NULL && PyErr_Occurred()) {
6751
0
                p->error_indicator = 1;
6752
0
                p->level--;
6753
0
                return NULL;
6754
0
            }
6755
2.36k
            goto done;
6756
2.36k
        }
6757
2.56k
        p->mark = _mark;
6758
2.56k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6759
2.56k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6760
2.56k
    }
6761
0
    { // 'async' 'with' '(' ','.with_item+ ','? ')' ':' block
6762
2.56k
        if (p->error_indicator) {
6763
15
            p->level--;
6764
15
            return NULL;
6765
15
        }
6766
2.54k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async' 'with' '(' ','.with_item+ ','? ')' ':' block"));
6767
2.54k
        Token * _keyword;
6768
2.54k
        Token * _keyword_1;
6769
2.54k
        Token * _literal;
6770
2.54k
        Token * _literal_1;
6771
2.54k
        Token * _literal_2;
6772
2.54k
        void *_opt_var;
6773
2.54k
        UNUSED(_opt_var); // Silence compiler warnings
6774
2.54k
        asdl_withitem_seq* a;
6775
2.54k
        asdl_stmt_seq* b;
6776
2.54k
        if (
6777
2.54k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
6778
2.54k
            &&
6779
2.54k
            (_keyword_1 = _PyPegen_expect_token(p, 652))  // token='with'
6780
2.54k
            &&
6781
2.54k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
6782
2.54k
            &&
6783
2.54k
            (a = (asdl_withitem_seq*)_gather_34_rule(p))  // ','.with_item+
6784
2.54k
            &&
6785
2.54k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
6786
2.54k
            &&
6787
2.54k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
6788
2.54k
            &&
6789
2.54k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
6790
2.54k
            &&
6791
2.54k
            (b = block_rule(p))  // block
6792
2.54k
        )
6793
292
        {
6794
292
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async' 'with' '(' ','.with_item+ ','? ')' ':' block"));
6795
292
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6796
292
            if (_token == NULL) {
6797
0
                p->level--;
6798
0
                return NULL;
6799
0
            }
6800
292
            int _end_lineno = _token->end_lineno;
6801
292
            UNUSED(_end_lineno); // Only used by EXTRA macro
6802
292
            int _end_col_offset = _token->end_col_offset;
6803
292
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6804
292
            _res = CHECK_VERSION ( stmt_ty , 5 , "Async with statements are" , _PyAST_AsyncWith ( a , b , NULL , EXTRA ) );
6805
292
            if (_res == NULL && PyErr_Occurred()) {
6806
0
                p->error_indicator = 1;
6807
0
                p->level--;
6808
0
                return NULL;
6809
0
            }
6810
292
            goto done;
6811
292
        }
6812
2.25k
        p->mark = _mark;
6813
2.25k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6814
2.25k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'with' '(' ','.with_item+ ','? ')' ':' block"));
6815
2.25k
    }
6816
0
    { // 'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block
6817
2.25k
        if (p->error_indicator) {
6818
6
            p->level--;
6819
6
            return NULL;
6820
6
        }
6821
2.25k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6822
2.25k
        Token * _keyword;
6823
2.25k
        Token * _keyword_1;
6824
2.25k
        Token * _literal;
6825
2.25k
        asdl_withitem_seq* a;
6826
2.25k
        asdl_stmt_seq* b;
6827
2.25k
        void *tc;
6828
2.25k
        if (
6829
2.25k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
6830
2.25k
            &&
6831
2.25k
            (_keyword_1 = _PyPegen_expect_token(p, 652))  // token='with'
6832
2.25k
            &&
6833
2.25k
            (a = (asdl_withitem_seq*)_gather_34_rule(p))  // ','.with_item+
6834
2.25k
            &&
6835
2.25k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6836
2.25k
            &&
6837
2.25k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6838
2.25k
            &&
6839
2.25k
            (b = block_rule(p))  // block
6840
2.25k
        )
6841
998
        {
6842
998
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6843
998
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6844
998
            if (_token == NULL) {
6845
0
                p->level--;
6846
0
                return NULL;
6847
0
            }
6848
998
            int _end_lineno = _token->end_lineno;
6849
998
            UNUSED(_end_lineno); // Only used by EXTRA macro
6850
998
            int _end_col_offset = _token->end_col_offset;
6851
998
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6852
998
            _res = CHECK_VERSION ( stmt_ty , 5 , "Async with statements are" , _PyAST_AsyncWith ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
6853
998
            if (_res == NULL && PyErr_Occurred()) {
6854
0
                p->error_indicator = 1;
6855
0
                p->level--;
6856
0
                return NULL;
6857
0
            }
6858
998
            goto done;
6859
998
        }
6860
1.25k
        p->mark = _mark;
6861
1.25k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6862
1.25k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6863
1.25k
    }
6864
1.25k
    if (p->call_invalid_rules) { // invalid_with_stmt
6865
520
        if (p->error_indicator) {
6866
4
            p->level--;
6867
4
            return NULL;
6868
4
        }
6869
516
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt"));
6870
516
        void *invalid_with_stmt_var;
6871
516
        if (
6872
516
            (invalid_with_stmt_var = invalid_with_stmt_rule(p))  // invalid_with_stmt
6873
516
        )
6874
0
        {
6875
0
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt"));
6876
0
            _res = invalid_with_stmt_var;
6877
0
            goto done;
6878
0
        }
6879
516
        p->mark = _mark;
6880
516
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6881
516
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_stmt"));
6882
516
    }
6883
1.24k
    _res = NULL;
6884
5.97k
  done:
6885
5.97k
    p->level--;
6886
5.97k
    return _res;
6887
1.24k
}
6888
6889
// with_item:
6890
//     | expression 'as' star_target &(',' | ')' | ':')
6891
//     | invalid_with_item
6892
//     | expression
6893
static withitem_ty
6894
with_item_rule(Parser *p)
6895
15.7k
{
6896
15.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6897
0
        _Pypegen_stack_overflow(p);
6898
0
    }
6899
15.7k
    if (p->error_indicator) {
6900
0
        p->level--;
6901
0
        return NULL;
6902
0
    }
6903
15.7k
    withitem_ty _res = NULL;
6904
15.7k
    int _mark = p->mark;
6905
15.7k
    { // expression 'as' star_target &(',' | ')' | ':')
6906
15.7k
        if (p->error_indicator) {
6907
0
            p->level--;
6908
0
            return NULL;
6909
0
        }
6910
15.7k
        D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
6911
15.7k
        Token * _keyword;
6912
15.7k
        expr_ty e;
6913
15.7k
        expr_ty t;
6914
15.7k
        if (
6915
15.7k
            (e = expression_rule(p))  // expression
6916
15.7k
            &&
6917
15.7k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
6918
15.7k
            &&
6919
15.7k
            (t = star_target_rule(p))  // star_target
6920
15.7k
            &&
6921
15.7k
            _PyPegen_lookahead(1, _tmp_35_rule, p)
6922
15.7k
        )
6923
1.94k
        {
6924
1.94k
            D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
6925
1.94k
            _res = _PyAST_withitem ( e , t , p -> arena );
6926
1.94k
            if (_res == NULL && PyErr_Occurred()) {
6927
0
                p->error_indicator = 1;
6928
0
                p->level--;
6929
0
                return NULL;
6930
0
            }
6931
1.94k
            goto done;
6932
1.94k
        }
6933
13.7k
        p->mark = _mark;
6934
13.7k
        D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
6935
13.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
6936
13.7k
    }
6937
13.7k
    if (p->call_invalid_rules) { // invalid_with_item
6938
5.78k
        if (p->error_indicator) {
6939
0
            p->level--;
6940
0
            return NULL;
6941
0
        }
6942
5.78k
        D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_item"));
6943
5.78k
        void *invalid_with_item_var;
6944
5.78k
        if (
6945
5.78k
            (invalid_with_item_var = invalid_with_item_rule(p))  // invalid_with_item
6946
5.78k
        )
6947
0
        {
6948
0
            D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_with_item"));
6949
0
            _res = invalid_with_item_var;
6950
0
            goto done;
6951
0
        }
6952
5.78k
        p->mark = _mark;
6953
5.78k
        D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
6954
5.78k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_item"));
6955
5.78k
    }
6956
13.7k
    { // expression
6957
13.7k
        if (p->error_indicator) {
6958
20
            p->level--;
6959
20
            return NULL;
6960
20
        }
6961
13.7k
        D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
6962
13.7k
        expr_ty e;
6963
13.7k
        if (
6964
13.7k
            (e = expression_rule(p))  // expression
6965
13.7k
        )
6966
11.5k
        {
6967
11.5k
            D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
6968
11.5k
            _res = _PyAST_withitem ( e , NULL , p -> arena );
6969
11.5k
            if (_res == NULL && PyErr_Occurred()) {
6970
0
                p->error_indicator = 1;
6971
0
                p->level--;
6972
0
                return NULL;
6973
0
            }
6974
11.5k
            goto done;
6975
11.5k
        }
6976
2.17k
        p->mark = _mark;
6977
2.17k
        D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
6978
2.17k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
6979
2.17k
    }
6980
0
    _res = NULL;
6981
15.6k
  done:
6982
15.6k
    p->level--;
6983
15.6k
    return _res;
6984
2.17k
}
6985
6986
// try_stmt:
6987
//     | invalid_try_stmt
6988
//     | 'try' &&':' block finally_block
6989
//     | 'try' &&':' block except_block+ else_block? finally_block?
6990
//     | 'try' &&':' block except_star_block+ else_block? finally_block?
6991
static stmt_ty
6992
try_stmt_rule(Parser *p)
6993
5.84k
{
6994
5.84k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6995
0
        _Pypegen_stack_overflow(p);
6996
0
    }
6997
5.84k
    if (p->error_indicator) {
6998
0
        p->level--;
6999
0
        return NULL;
7000
0
    }
7001
5.84k
    stmt_ty _res = NULL;
7002
5.84k
    int _mark = p->mark;
7003
5.84k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7004
0
        p->error_indicator = 1;
7005
0
        p->level--;
7006
0
        return NULL;
7007
0
    }
7008
5.84k
    int _start_lineno = p->tokens[_mark]->lineno;
7009
5.84k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7010
5.84k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7011
5.84k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7012
5.84k
    if (p->call_invalid_rules) { // invalid_try_stmt
7013
1.94k
        if (p->error_indicator) {
7014
0
            p->level--;
7015
0
            return NULL;
7016
0
        }
7017
1.94k
        D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_try_stmt"));
7018
1.94k
        void *invalid_try_stmt_var;
7019
1.94k
        if (
7020
1.94k
            (invalid_try_stmt_var = invalid_try_stmt_rule(p))  // invalid_try_stmt
7021
1.94k
        )
7022
0
        {
7023
0
            D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_try_stmt"));
7024
0
            _res = invalid_try_stmt_var;
7025
0
            goto done;
7026
0
        }
7027
1.94k
        p->mark = _mark;
7028
1.94k
        D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7029
1.94k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_try_stmt"));
7030
1.94k
    }
7031
5.84k
    { // 'try' &&':' block finally_block
7032
5.84k
        if (p->error_indicator) {
7033
142
            p->level--;
7034
142
            return NULL;
7035
142
        }
7036
5.70k
        D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block finally_block"));
7037
5.70k
        Token * _keyword;
7038
5.70k
        Token * _literal;
7039
5.70k
        asdl_stmt_seq* b;
7040
5.70k
        asdl_stmt_seq* f;
7041
5.70k
        if (
7042
5.70k
            (_keyword = _PyPegen_expect_token(p, 661))  // token='try'
7043
5.70k
            &&
7044
5.70k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
7045
5.70k
            &&
7046
5.70k
            (b = block_rule(p))  // block
7047
5.70k
            &&
7048
5.70k
            (f = finally_block_rule(p))  // finally_block
7049
5.70k
        )
7050
675
        {
7051
675
            D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' &&':' block finally_block"));
7052
675
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7053
675
            if (_token == NULL) {
7054
0
                p->level--;
7055
0
                return NULL;
7056
0
            }
7057
675
            int _end_lineno = _token->end_lineno;
7058
675
            UNUSED(_end_lineno); // Only used by EXTRA macro
7059
675
            int _end_col_offset = _token->end_col_offset;
7060
675
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7061
675
            _res = _PyAST_Try ( b , NULL , NULL , f , EXTRA );
7062
675
            if (_res == NULL && PyErr_Occurred()) {
7063
0
                p->error_indicator = 1;
7064
0
                p->level--;
7065
0
                return NULL;
7066
0
            }
7067
675
            goto done;
7068
675
        }
7069
5.02k
        p->mark = _mark;
7070
5.02k
        D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7071
5.02k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block finally_block"));
7072
5.02k
    }
7073
0
    { // 'try' &&':' block except_block+ else_block? finally_block?
7074
5.02k
        if (p->error_indicator) {
7075
33
            p->level--;
7076
33
            return NULL;
7077
33
        }
7078
4.99k
        D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
7079
4.99k
        Token * _keyword;
7080
4.99k
        Token * _literal;
7081
4.99k
        asdl_stmt_seq* b;
7082
4.99k
        void *el;
7083
4.99k
        asdl_excepthandler_seq* ex;
7084
4.99k
        void *f;
7085
4.99k
        if (
7086
4.99k
            (_keyword = _PyPegen_expect_token(p, 661))  // token='try'
7087
4.99k
            &&
7088
4.99k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
7089
4.99k
            &&
7090
4.99k
            (b = block_rule(p))  // block
7091
4.99k
            &&
7092
4.99k
            (ex = (asdl_excepthandler_seq*)_loop1_36_rule(p))  // except_block+
7093
4.99k
            &&
7094
4.99k
            (el = else_block_rule(p), !p->error_indicator)  // else_block?
7095
4.99k
            &&
7096
4.99k
            (f = finally_block_rule(p), !p->error_indicator)  // finally_block?
7097
4.99k
        )
7098
2.74k
        {
7099
2.74k
            D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
7100
2.74k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7101
2.74k
            if (_token == NULL) {
7102
0
                p->level--;
7103
0
                return NULL;
7104
0
            }
7105
2.74k
            int _end_lineno = _token->end_lineno;
7106
2.74k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7107
2.74k
            int _end_col_offset = _token->end_col_offset;
7108
2.74k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7109
2.74k
            _res = _PyAST_Try ( b , ex , el , f , EXTRA );
7110
2.74k
            if (_res == NULL && PyErr_Occurred()) {
7111
0
                p->error_indicator = 1;
7112
0
                p->level--;
7113
0
                return NULL;
7114
0
            }
7115
2.74k
            goto done;
7116
2.74k
        }
7117
2.24k
        p->mark = _mark;
7118
2.24k
        D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7119
2.24k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
7120
2.24k
    }
7121
0
    { // 'try' &&':' block except_star_block+ else_block? finally_block?
7122
2.24k
        if (p->error_indicator) {
7123
11
            p->level--;
7124
11
            return NULL;
7125
11
        }
7126
2.23k
        D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_star_block+ else_block? finally_block?"));
7127
2.23k
        Token * _keyword;
7128
2.23k
        Token * _literal;
7129
2.23k
        asdl_stmt_seq* b;
7130
2.23k
        void *el;
7131
2.23k
        asdl_excepthandler_seq* ex;
7132
2.23k
        void *f;
7133
2.23k
        if (
7134
2.23k
            (_keyword = _PyPegen_expect_token(p, 661))  // token='try'
7135
2.23k
            &&
7136
2.23k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
7137
2.23k
            &&
7138
2.23k
            (b = block_rule(p))  // block
7139
2.23k
            &&
7140
2.23k
            (ex = (asdl_excepthandler_seq*)_loop1_37_rule(p))  // except_star_block+
7141
2.23k
            &&
7142
2.23k
            (el = else_block_rule(p), !p->error_indicator)  // else_block?
7143
2.23k
            &&
7144
2.23k
            (f = finally_block_rule(p), !p->error_indicator)  // finally_block?
7145
2.23k
        )
7146
1.83k
        {
7147
1.83k
            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?"));
7148
1.83k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7149
1.83k
            if (_token == NULL) {
7150
0
                p->level--;
7151
0
                return NULL;
7152
0
            }
7153
1.83k
            int _end_lineno = _token->end_lineno;
7154
1.83k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7155
1.83k
            int _end_col_offset = _token->end_col_offset;
7156
1.83k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7157
1.83k
            _res = CHECK_VERSION ( stmt_ty , 11 , "Exception groups are" , _PyAST_TryStar ( b , ex , el , f , EXTRA ) );
7158
1.83k
            if (_res == NULL && PyErr_Occurred()) {
7159
0
                p->error_indicator = 1;
7160
0
                p->level--;
7161
0
                return NULL;
7162
0
            }
7163
1.83k
            goto done;
7164
1.83k
        }
7165
402
        p->mark = _mark;
7166
402
        D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7167
402
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block except_star_block+ else_block? finally_block?"));
7168
402
    }
7169
0
    _res = NULL;
7170
5.65k
  done:
7171
5.65k
    p->level--;
7172
5.65k
    return _res;
7173
402
}
7174
7175
// except_block:
7176
//     | invalid_except_stmt_indent
7177
//     | 'except' expression ':' block
7178
//     | 'except' expression 'as' NAME ':' block
7179
//     | 'except' expressions ':' block
7180
//     | 'except' ':' block
7181
//     | invalid_except_stmt
7182
static excepthandler_ty
7183
except_block_rule(Parser *p)
7184
13.3k
{
7185
13.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7186
0
        _Pypegen_stack_overflow(p);
7187
0
    }
7188
13.3k
    if (p->error_indicator) {
7189
0
        p->level--;
7190
0
        return NULL;
7191
0
    }
7192
13.3k
    excepthandler_ty _res = NULL;
7193
13.3k
    int _mark = p->mark;
7194
13.3k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7195
2
        p->error_indicator = 1;
7196
2
        p->level--;
7197
2
        return NULL;
7198
2
    }
7199
13.3k
    int _start_lineno = p->tokens[_mark]->lineno;
7200
13.3k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7201
13.3k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7202
13.3k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7203
13.3k
    if (p->call_invalid_rules) { // invalid_except_stmt_indent
7204
6.71k
        if (p->error_indicator) {
7205
0
            p->level--;
7206
0
            return NULL;
7207
0
        }
7208
6.71k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt_indent"));
7209
6.71k
        void *invalid_except_stmt_indent_var;
7210
6.71k
        if (
7211
6.71k
            (invalid_except_stmt_indent_var = invalid_except_stmt_indent_rule(p))  // invalid_except_stmt_indent
7212
6.71k
        )
7213
0
        {
7214
0
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt_indent"));
7215
0
            _res = invalid_except_stmt_indent_var;
7216
0
            goto done;
7217
0
        }
7218
6.71k
        p->mark = _mark;
7219
6.71k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7220
6.71k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_stmt_indent"));
7221
6.71k
    }
7222
13.3k
    { // 'except' expression ':' block
7223
13.3k
        if (p->error_indicator) {
7224
5
            p->level--;
7225
5
            return NULL;
7226
5
        }
7227
13.3k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ':' block"));
7228
13.3k
        Token * _keyword;
7229
13.3k
        Token * _literal;
7230
13.3k
        asdl_stmt_seq* b;
7231
13.3k
        expr_ty e;
7232
13.3k
        if (
7233
13.3k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7234
13.3k
            &&
7235
13.3k
            (e = expression_rule(p))  // expression
7236
13.3k
            &&
7237
13.3k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7238
13.3k
            &&
7239
13.3k
            (b = block_rule(p))  // block
7240
13.3k
        )
7241
1.08k
        {
7242
1.08k
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ':' block"));
7243
1.08k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7244
1.08k
            if (_token == NULL) {
7245
0
                p->level--;
7246
0
                return NULL;
7247
0
            }
7248
1.08k
            int _end_lineno = _token->end_lineno;
7249
1.08k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7250
1.08k
            int _end_col_offset = _token->end_col_offset;
7251
1.08k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7252
1.08k
            _res = _PyAST_ExceptHandler ( e , NULL , b , EXTRA );
7253
1.08k
            if (_res == NULL && PyErr_Occurred()) {
7254
0
                p->error_indicator = 1;
7255
0
                p->level--;
7256
0
                return NULL;
7257
0
            }
7258
1.08k
            goto done;
7259
1.08k
        }
7260
12.2k
        p->mark = _mark;
7261
12.2k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7262
12.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ':' block"));
7263
12.2k
    }
7264
0
    { // 'except' expression 'as' NAME ':' block
7265
12.2k
        if (p->error_indicator) {
7266
11
            p->level--;
7267
11
            return NULL;
7268
11
        }
7269
12.2k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression 'as' NAME ':' block"));
7270
12.2k
        Token * _keyword;
7271
12.2k
        Token * _keyword_1;
7272
12.2k
        Token * _literal;
7273
12.2k
        asdl_stmt_seq* b;
7274
12.2k
        expr_ty e;
7275
12.2k
        expr_ty t;
7276
12.2k
        if (
7277
12.2k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7278
12.2k
            &&
7279
12.2k
            (e = expression_rule(p))  // expression
7280
12.2k
            &&
7281
12.2k
            (_keyword_1 = _PyPegen_expect_token(p, 685))  // token='as'
7282
12.2k
            &&
7283
12.2k
            (t = _PyPegen_name_token(p))  // NAME
7284
12.2k
            &&
7285
12.2k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7286
12.2k
            &&
7287
12.2k
            (b = block_rule(p))  // block
7288
12.2k
        )
7289
870
        {
7290
870
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression 'as' NAME ':' block"));
7291
870
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7292
870
            if (_token == NULL) {
7293
0
                p->level--;
7294
0
                return NULL;
7295
0
            }
7296
870
            int _end_lineno = _token->end_lineno;
7297
870
            UNUSED(_end_lineno); // Only used by EXTRA macro
7298
870
            int _end_col_offset = _token->end_col_offset;
7299
870
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7300
870
            _res = _PyAST_ExceptHandler ( e , ( ( expr_ty ) t ) -> v . Name . id , b , EXTRA );
7301
870
            if (_res == NULL && PyErr_Occurred()) {
7302
0
                p->error_indicator = 1;
7303
0
                p->level--;
7304
0
                return NULL;
7305
0
            }
7306
870
            goto done;
7307
870
        }
7308
11.4k
        p->mark = _mark;
7309
11.4k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7310
11.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression 'as' NAME ':' block"));
7311
11.4k
    }
7312
0
    { // 'except' expressions ':' block
7313
11.4k
        if (p->error_indicator) {
7314
5
            p->level--;
7315
5
            return NULL;
7316
5
        }
7317
11.4k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expressions ':' block"));
7318
11.4k
        Token * _keyword;
7319
11.4k
        Token * _literal;
7320
11.4k
        asdl_stmt_seq* b;
7321
11.4k
        expr_ty e;
7322
11.4k
        if (
7323
11.4k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7324
11.4k
            &&
7325
11.4k
            (e = expressions_rule(p))  // expressions
7326
11.4k
            &&
7327
11.4k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7328
11.4k
            &&
7329
11.4k
            (b = block_rule(p))  // block
7330
11.4k
        )
7331
352
        {
7332
352
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expressions ':' block"));
7333
352
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7334
352
            if (_token == NULL) {
7335
0
                p->level--;
7336
0
                return NULL;
7337
0
            }
7338
352
            int _end_lineno = _token->end_lineno;
7339
352
            UNUSED(_end_lineno); // Only used by EXTRA macro
7340
352
            int _end_col_offset = _token->end_col_offset;
7341
352
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7342
352
            _res = CHECK_VERSION ( excepthandler_ty , 14 , "except expressions without parentheses are" , _PyAST_ExceptHandler ( e , NULL , b , EXTRA ) );
7343
352
            if (_res == NULL && PyErr_Occurred()) {
7344
0
                p->error_indicator = 1;
7345
0
                p->level--;
7346
0
                return NULL;
7347
0
            }
7348
352
            goto done;
7349
352
        }
7350
11.0k
        p->mark = _mark;
7351
11.0k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7352
11.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expressions ':' block"));
7353
11.0k
    }
7354
0
    { // 'except' ':' block
7355
11.0k
        if (p->error_indicator) {
7356
2
            p->level--;
7357
2
            return NULL;
7358
2
        }
7359
11.0k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' ':' block"));
7360
11.0k
        Token * _keyword;
7361
11.0k
        Token * _literal;
7362
11.0k
        asdl_stmt_seq* b;
7363
11.0k
        if (
7364
11.0k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7365
11.0k
            &&
7366
11.0k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7367
11.0k
            &&
7368
11.0k
            (b = block_rule(p))  // block
7369
11.0k
        )
7370
4.38k
        {
7371
4.38k
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' ':' block"));
7372
4.38k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7373
4.38k
            if (_token == NULL) {
7374
0
                p->level--;
7375
0
                return NULL;
7376
0
            }
7377
4.38k
            int _end_lineno = _token->end_lineno;
7378
4.38k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7379
4.38k
            int _end_col_offset = _token->end_col_offset;
7380
4.38k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7381
4.38k
            _res = _PyAST_ExceptHandler ( NULL , NULL , b , EXTRA );
7382
4.38k
            if (_res == NULL && PyErr_Occurred()) {
7383
0
                p->error_indicator = 1;
7384
0
                p->level--;
7385
0
                return NULL;
7386
0
            }
7387
4.38k
            goto done;
7388
4.38k
        }
7389
6.66k
        p->mark = _mark;
7390
6.66k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7391
6.66k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' ':' block"));
7392
6.66k
    }
7393
6.66k
    if (p->call_invalid_rules) { // invalid_except_stmt
7394
3.38k
        if (p->error_indicator) {
7395
11
            p->level--;
7396
11
            return NULL;
7397
11
        }
7398
3.37k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt"));
7399
3.37k
        void *invalid_except_stmt_var;
7400
3.37k
        if (
7401
3.37k
            (invalid_except_stmt_var = invalid_except_stmt_rule(p))  // invalid_except_stmt
7402
3.37k
        )
7403
0
        {
7404
0
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt"));
7405
0
            _res = invalid_except_stmt_var;
7406
0
            goto done;
7407
0
        }
7408
3.37k
        p->mark = _mark;
7409
3.37k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7410
3.37k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_stmt"));
7411
3.37k
    }
7412
6.65k
    _res = NULL;
7413
13.3k
  done:
7414
13.3k
    p->level--;
7415
13.3k
    return _res;
7416
6.65k
}
7417
7418
// except_star_block:
7419
//     | invalid_except_star_stmt_indent
7420
//     | 'except' '*' expression ':' block
7421
//     | 'except' '*' expression 'as' NAME ':' block
7422
//     | 'except' '*' expressions ':' block
7423
//     | invalid_except_star_stmt
7424
static excepthandler_ty
7425
except_star_block_rule(Parser *p)
7426
8.27k
{
7427
8.27k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7428
0
        _Pypegen_stack_overflow(p);
7429
0
    }
7430
8.27k
    if (p->error_indicator) {
7431
0
        p->level--;
7432
0
        return NULL;
7433
0
    }
7434
8.27k
    excepthandler_ty _res = NULL;
7435
8.27k
    int _mark = p->mark;
7436
8.27k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7437
1
        p->error_indicator = 1;
7438
1
        p->level--;
7439
1
        return NULL;
7440
1
    }
7441
8.27k
    int _start_lineno = p->tokens[_mark]->lineno;
7442
8.27k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7443
8.27k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7444
8.27k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7445
8.27k
    if (p->call_invalid_rules) { // invalid_except_star_stmt_indent
7446
4.96k
        if (p->error_indicator) {
7447
0
            p->level--;
7448
0
            return NULL;
7449
0
        }
7450
4.96k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_star_stmt_indent"));
7451
4.96k
        void *invalid_except_star_stmt_indent_var;
7452
4.96k
        if (
7453
4.96k
            (invalid_except_star_stmt_indent_var = invalid_except_star_stmt_indent_rule(p))  // invalid_except_star_stmt_indent
7454
4.96k
        )
7455
0
        {
7456
0
            D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_star_stmt_indent"));
7457
0
            _res = invalid_except_star_stmt_indent_var;
7458
0
            goto done;
7459
0
        }
7460
4.96k
        p->mark = _mark;
7461
4.96k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7462
4.96k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_star_stmt_indent"));
7463
4.96k
    }
7464
8.27k
    { // 'except' '*' expression ':' block
7465
8.27k
        if (p->error_indicator) {
7466
4
            p->level--;
7467
4
            return NULL;
7468
4
        }
7469
8.27k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ':' block"));
7470
8.27k
        Token * _keyword;
7471
8.27k
        Token * _literal;
7472
8.27k
        Token * _literal_1;
7473
8.27k
        asdl_stmt_seq* b;
7474
8.27k
        expr_ty e;
7475
8.27k
        if (
7476
8.27k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7477
8.27k
            &&
7478
8.27k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
7479
8.27k
            &&
7480
8.27k
            (e = expression_rule(p))  // expression
7481
8.27k
            &&
7482
8.27k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
7483
8.27k
            &&
7484
8.27k
            (b = block_rule(p))  // block
7485
8.27k
        )
7486
3.69k
        {
7487
3.69k
            D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ':' block"));
7488
3.69k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7489
3.69k
            if (_token == NULL) {
7490
0
                p->level--;
7491
0
                return NULL;
7492
0
            }
7493
3.69k
            int _end_lineno = _token->end_lineno;
7494
3.69k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7495
3.69k
            int _end_col_offset = _token->end_col_offset;
7496
3.69k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7497
3.69k
            _res = _PyAST_ExceptHandler ( e , NULL , b , EXTRA );
7498
3.69k
            if (_res == NULL && PyErr_Occurred()) {
7499
0
                p->error_indicator = 1;
7500
0
                p->level--;
7501
0
                return NULL;
7502
0
            }
7503
3.69k
            goto done;
7504
3.69k
        }
7505
4.57k
        p->mark = _mark;
7506
4.57k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7507
4.57k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression ':' block"));
7508
4.57k
    }
7509
0
    { // 'except' '*' expression 'as' NAME ':' block
7510
4.57k
        if (p->error_indicator) {
7511
4
            p->level--;
7512
4
            return NULL;
7513
4
        }
7514
4.57k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression 'as' NAME ':' block"));
7515
4.57k
        Token * _keyword;
7516
4.57k
        Token * _keyword_1;
7517
4.57k
        Token * _literal;
7518
4.57k
        Token * _literal_1;
7519
4.57k
        asdl_stmt_seq* b;
7520
4.57k
        expr_ty e;
7521
4.57k
        expr_ty t;
7522
4.57k
        if (
7523
4.57k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7524
4.57k
            &&
7525
4.57k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
7526
4.57k
            &&
7527
4.57k
            (e = expression_rule(p))  // expression
7528
4.57k
            &&
7529
4.57k
            (_keyword_1 = _PyPegen_expect_token(p, 685))  // token='as'
7530
4.57k
            &&
7531
4.57k
            (t = _PyPegen_name_token(p))  // NAME
7532
4.57k
            &&
7533
4.57k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
7534
4.57k
            &&
7535
4.57k
            (b = block_rule(p))  // block
7536
4.57k
        )
7537
215
        {
7538
215
            D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expression 'as' NAME ':' block"));
7539
215
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7540
215
            if (_token == NULL) {
7541
0
                p->level--;
7542
0
                return NULL;
7543
0
            }
7544
215
            int _end_lineno = _token->end_lineno;
7545
215
            UNUSED(_end_lineno); // Only used by EXTRA macro
7546
215
            int _end_col_offset = _token->end_col_offset;
7547
215
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7548
215
            _res = _PyAST_ExceptHandler ( e , ( ( expr_ty ) t ) -> v . Name . id , b , EXTRA );
7549
215
            if (_res == NULL && PyErr_Occurred()) {
7550
0
                p->error_indicator = 1;
7551
0
                p->level--;
7552
0
                return NULL;
7553
0
            }
7554
215
            goto done;
7555
215
        }
7556
4.35k
        p->mark = _mark;
7557
4.35k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7558
4.35k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression 'as' NAME ':' block"));
7559
4.35k
    }
7560
0
    { // 'except' '*' expressions ':' block
7561
4.35k
        if (p->error_indicator) {
7562
3
            p->level--;
7563
3
            return NULL;
7564
3
        }
7565
4.35k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expressions ':' block"));
7566
4.35k
        Token * _keyword;
7567
4.35k
        Token * _literal;
7568
4.35k
        Token * _literal_1;
7569
4.35k
        asdl_stmt_seq* b;
7570
4.35k
        expr_ty e;
7571
4.35k
        if (
7572
4.35k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7573
4.35k
            &&
7574
4.35k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
7575
4.35k
            &&
7576
4.35k
            (e = expressions_rule(p))  // expressions
7577
4.35k
            &&
7578
4.35k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
7579
4.35k
            &&
7580
4.35k
            (b = block_rule(p))  // block
7581
4.35k
        )
7582
482
        {
7583
482
            D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expressions ':' block"));
7584
482
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7585
482
            if (_token == NULL) {
7586
0
                p->level--;
7587
0
                return NULL;
7588
0
            }
7589
482
            int _end_lineno = _token->end_lineno;
7590
482
            UNUSED(_end_lineno); // Only used by EXTRA macro
7591
482
            int _end_col_offset = _token->end_col_offset;
7592
482
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7593
482
            _res = CHECK_VERSION ( excepthandler_ty , 14 , "except expressions without parentheses are" , _PyAST_ExceptHandler ( e , NULL , b , EXTRA ) );
7594
482
            if (_res == NULL && PyErr_Occurred()) {
7595
0
                p->error_indicator = 1;
7596
0
                p->level--;
7597
0
                return NULL;
7598
0
            }
7599
482
            goto done;
7600
482
        }
7601
3.87k
        p->mark = _mark;
7602
3.87k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7603
3.87k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expressions ':' block"));
7604
3.87k
    }
7605
3.87k
    if (p->call_invalid_rules) { // invalid_except_star_stmt
7606
2.59k
        if (p->error_indicator) {
7607
2
            p->level--;
7608
2
            return NULL;
7609
2
        }
7610
2.59k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_star_stmt"));
7611
2.59k
        void *invalid_except_star_stmt_var;
7612
2.59k
        if (
7613
2.59k
            (invalid_except_star_stmt_var = invalid_except_star_stmt_rule(p))  // invalid_except_star_stmt
7614
2.59k
        )
7615
0
        {
7616
0
            D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_star_stmt"));
7617
0
            _res = invalid_except_star_stmt_var;
7618
0
            goto done;
7619
0
        }
7620
2.59k
        p->mark = _mark;
7621
2.59k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7622
2.59k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_star_stmt"));
7623
2.59k
    }
7624
3.87k
    _res = NULL;
7625
8.26k
  done:
7626
8.26k
    p->level--;
7627
8.26k
    return _res;
7628
3.87k
}
7629
7630
// finally_block: invalid_finally_stmt | 'finally' &&':' block
7631
static asdl_stmt_seq*
7632
finally_block_rule(Parser *p)
7633
10.0k
{
7634
10.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7635
0
        _Pypegen_stack_overflow(p);
7636
0
    }
7637
10.0k
    if (p->error_indicator) {
7638
0
        p->level--;
7639
0
        return NULL;
7640
0
    }
7641
10.0k
    asdl_stmt_seq* _res = NULL;
7642
10.0k
    int _mark = p->mark;
7643
10.0k
    if (p->call_invalid_rules) { // invalid_finally_stmt
7644
3.18k
        if (p->error_indicator) {
7645
0
            p->level--;
7646
0
            return NULL;
7647
0
        }
7648
3.18k
        D(fprintf(stderr, "%*c> finally_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_finally_stmt"));
7649
3.18k
        void *invalid_finally_stmt_var;
7650
3.18k
        if (
7651
3.18k
            (invalid_finally_stmt_var = invalid_finally_stmt_rule(p))  // invalid_finally_stmt
7652
3.18k
        )
7653
0
        {
7654
0
            D(fprintf(stderr, "%*c+ finally_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_finally_stmt"));
7655
0
            _res = invalid_finally_stmt_var;
7656
0
            goto done;
7657
0
        }
7658
3.18k
        p->mark = _mark;
7659
3.18k
        D(fprintf(stderr, "%*c%s finally_block[%d-%d]: %s failed!\n", p->level, ' ',
7660
3.18k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_finally_stmt"));
7661
3.18k
    }
7662
10.0k
    { // 'finally' &&':' block
7663
10.0k
        if (p->error_indicator) {
7664
1
            p->level--;
7665
1
            return NULL;
7666
1
        }
7667
10.0k
        D(fprintf(stderr, "%*c> finally_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally' &&':' block"));
7668
10.0k
        Token * _keyword;
7669
10.0k
        Token * _literal;
7670
10.0k
        asdl_stmt_seq* a;
7671
10.0k
        if (
7672
10.0k
            (_keyword = _PyPegen_expect_token(p, 678))  // token='finally'
7673
10.0k
            &&
7674
10.0k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
7675
10.0k
            &&
7676
10.0k
            (a = block_rule(p))  // block
7677
10.0k
        )
7678
683
        {
7679
683
            D(fprintf(stderr, "%*c+ finally_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally' &&':' block"));
7680
683
            _res = a;
7681
683
            if (_res == NULL && PyErr_Occurred()) {
7682
0
                p->error_indicator = 1;
7683
0
                p->level--;
7684
0
                return NULL;
7685
0
            }
7686
683
            goto done;
7687
683
        }
7688
9.38k
        p->mark = _mark;
7689
9.38k
        D(fprintf(stderr, "%*c%s finally_block[%d-%d]: %s failed!\n", p->level, ' ',
7690
9.38k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally' &&':' block"));
7691
9.38k
    }
7692
0
    _res = NULL;
7693
10.0k
  done:
7694
10.0k
    p->level--;
7695
10.0k
    return _res;
7696
9.38k
}
7697
7698
// match_stmt:
7699
//     | "match" subject_expr ':' NEWLINE INDENT case_block+ DEDENT
7700
//     | invalid_match_stmt
7701
static stmt_ty
7702
match_stmt_rule(Parser *p)
7703
131k
{
7704
131k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7705
0
        _Pypegen_stack_overflow(p);
7706
0
    }
7707
131k
    if (p->error_indicator) {
7708
0
        p->level--;
7709
0
        return NULL;
7710
0
    }
7711
131k
    stmt_ty _res = NULL;
7712
131k
    int _mark = p->mark;
7713
131k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7714
0
        p->error_indicator = 1;
7715
0
        p->level--;
7716
0
        return NULL;
7717
0
    }
7718
131k
    int _start_lineno = p->tokens[_mark]->lineno;
7719
131k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7720
131k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7721
131k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7722
131k
    { // "match" subject_expr ':' NEWLINE INDENT case_block+ DEDENT
7723
131k
        if (p->error_indicator) {
7724
0
            p->level--;
7725
0
            return NULL;
7726
0
        }
7727
131k
        D(fprintf(stderr, "%*c> match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
7728
131k
        expr_ty _keyword;
7729
131k
        Token * _literal;
7730
131k
        asdl_match_case_seq* cases;
7731
131k
        Token * dedent_var;
7732
131k
        Token * indent_var;
7733
131k
        Token * newline_var;
7734
131k
        expr_ty subject;
7735
131k
        if (
7736
131k
            (_keyword = _PyPegen_expect_soft_keyword(p, "match"))  // soft_keyword='"match"'
7737
131k
            &&
7738
131k
            (subject = subject_expr_rule(p))  // subject_expr
7739
131k
            &&
7740
131k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7741
131k
            &&
7742
131k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
7743
131k
            &&
7744
131k
            (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
7745
131k
            &&
7746
131k
            (cases = (asdl_match_case_seq*)_loop1_38_rule(p))  // case_block+
7747
131k
            &&
7748
131k
            (dedent_var = _PyPegen_expect_token(p, DEDENT))  // token='DEDENT'
7749
131k
        )
7750
624
        {
7751
624
            D(fprintf(stderr, "%*c+ match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
7752
624
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7753
624
            if (_token == NULL) {
7754
0
                p->level--;
7755
0
                return NULL;
7756
0
            }
7757
624
            int _end_lineno = _token->end_lineno;
7758
624
            UNUSED(_end_lineno); // Only used by EXTRA macro
7759
624
            int _end_col_offset = _token->end_col_offset;
7760
624
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7761
624
            _res = CHECK_VERSION ( stmt_ty , 10 , "Pattern matching is" , _PyAST_Match ( subject , cases , EXTRA ) );
7762
624
            if (_res == NULL && PyErr_Occurred()) {
7763
0
                p->error_indicator = 1;
7764
0
                p->level--;
7765
0
                return NULL;
7766
0
            }
7767
624
            goto done;
7768
624
        }
7769
130k
        p->mark = _mark;
7770
130k
        D(fprintf(stderr, "%*c%s match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7771
130k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
7772
130k
    }
7773
130k
    if (p->call_invalid_rules) { // invalid_match_stmt
7774
22.4k
        if (p->error_indicator) {
7775
148
            p->level--;
7776
148
            return NULL;
7777
148
        }
7778
22.2k
        D(fprintf(stderr, "%*c> match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_match_stmt"));
7779
22.2k
        void *invalid_match_stmt_var;
7780
22.2k
        if (
7781
22.2k
            (invalid_match_stmt_var = invalid_match_stmt_rule(p))  // invalid_match_stmt
7782
22.2k
        )
7783
0
        {
7784
0
            D(fprintf(stderr, "%*c+ match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_match_stmt"));
7785
0
            _res = invalid_match_stmt_var;
7786
0
            goto done;
7787
0
        }
7788
22.2k
        p->mark = _mark;
7789
22.2k
        D(fprintf(stderr, "%*c%s match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7790
22.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_match_stmt"));
7791
22.2k
    }
7792
130k
    _res = NULL;
7793
131k
  done:
7794
131k
    p->level--;
7795
131k
    return _res;
7796
130k
}
7797
7798
// subject_expr: star_named_expression ',' star_named_expressions? | named_expression
7799
static expr_ty
7800
subject_expr_rule(Parser *p)
7801
6.51k
{
7802
6.51k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7803
0
        _Pypegen_stack_overflow(p);
7804
0
    }
7805
6.51k
    if (p->error_indicator) {
7806
0
        p->level--;
7807
0
        return NULL;
7808
0
    }
7809
6.51k
    expr_ty _res = NULL;
7810
6.51k
    int _mark = p->mark;
7811
6.51k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7812
1
        p->error_indicator = 1;
7813
1
        p->level--;
7814
1
        return NULL;
7815
1
    }
7816
6.51k
    int _start_lineno = p->tokens[_mark]->lineno;
7817
6.51k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7818
6.51k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7819
6.51k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7820
6.51k
    { // star_named_expression ',' star_named_expressions?
7821
6.51k
        if (p->error_indicator) {
7822
0
            p->level--;
7823
0
            return NULL;
7824
0
        }
7825
6.51k
        D(fprintf(stderr, "%*c> subject_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
7826
6.51k
        Token * _literal;
7827
6.51k
        expr_ty value;
7828
6.51k
        void *values;
7829
6.51k
        if (
7830
6.51k
            (value = star_named_expression_rule(p))  // star_named_expression
7831
6.51k
            &&
7832
6.51k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
7833
6.51k
            &&
7834
6.51k
            (values = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
7835
6.51k
        )
7836
1.02k
        {
7837
1.02k
            D(fprintf(stderr, "%*c+ subject_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
7838
1.02k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7839
1.02k
            if (_token == NULL) {
7840
0
                p->level--;
7841
0
                return NULL;
7842
0
            }
7843
1.02k
            int _end_lineno = _token->end_lineno;
7844
1.02k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7845
1.02k
            int _end_col_offset = _token->end_col_offset;
7846
1.02k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7847
1.02k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , value , values ) ) , Load , EXTRA );
7848
1.02k
            if (_res == NULL && PyErr_Occurred()) {
7849
0
                p->error_indicator = 1;
7850
0
                p->level--;
7851
0
                return NULL;
7852
0
            }
7853
1.02k
            goto done;
7854
1.02k
        }
7855
5.49k
        p->mark = _mark;
7856
5.49k
        D(fprintf(stderr, "%*c%s subject_expr[%d-%d]: %s failed!\n", p->level, ' ',
7857
5.49k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
7858
5.49k
    }
7859
0
    { // named_expression
7860
5.49k
        if (p->error_indicator) {
7861
4
            p->level--;
7862
4
            return NULL;
7863
4
        }
7864
5.49k
        D(fprintf(stderr, "%*c> subject_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
7865
5.49k
        expr_ty named_expression_var;
7866
5.49k
        if (
7867
5.49k
            (named_expression_var = named_expression_rule(p))  // named_expression
7868
5.49k
        )
7869
4.07k
        {
7870
4.07k
            D(fprintf(stderr, "%*c+ subject_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
7871
4.07k
            _res = named_expression_var;
7872
4.07k
            goto done;
7873
4.07k
        }
7874
1.41k
        p->mark = _mark;
7875
1.41k
        D(fprintf(stderr, "%*c%s subject_expr[%d-%d]: %s failed!\n", p->level, ' ',
7876
1.41k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
7877
1.41k
    }
7878
0
    _res = NULL;
7879
6.51k
  done:
7880
6.51k
    p->level--;
7881
6.51k
    return _res;
7882
1.41k
}
7883
7884
// case_block: invalid_case_block | "case" patterns guard? ':' block
7885
static match_case_ty
7886
case_block_rule(Parser *p)
7887
6.98k
{
7888
6.98k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7889
0
        _Pypegen_stack_overflow(p);
7890
0
    }
7891
6.98k
    if (p->error_indicator) {
7892
0
        p->level--;
7893
0
        return NULL;
7894
0
    }
7895
6.98k
    match_case_ty _res = NULL;
7896
6.98k
    int _mark = p->mark;
7897
6.98k
    if (p->call_invalid_rules) { // invalid_case_block
7898
2.44k
        if (p->error_indicator) {
7899
0
            p->level--;
7900
0
            return NULL;
7901
0
        }
7902
2.44k
        D(fprintf(stderr, "%*c> case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_case_block"));
7903
2.44k
        void *invalid_case_block_var;
7904
2.44k
        if (
7905
2.44k
            (invalid_case_block_var = invalid_case_block_rule(p))  // invalid_case_block
7906
2.44k
        )
7907
0
        {
7908
0
            D(fprintf(stderr, "%*c+ case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_case_block"));
7909
0
            _res = invalid_case_block_var;
7910
0
            goto done;
7911
0
        }
7912
2.44k
        p->mark = _mark;
7913
2.44k
        D(fprintf(stderr, "%*c%s case_block[%d-%d]: %s failed!\n", p->level, ' ',
7914
2.44k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_case_block"));
7915
2.44k
    }
7916
6.98k
    { // "case" patterns guard? ':' block
7917
6.98k
        if (p->error_indicator) {
7918
144
            p->level--;
7919
144
            return NULL;
7920
144
        }
7921
6.84k
        D(fprintf(stderr, "%*c> case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' block"));
7922
6.84k
        expr_ty _keyword;
7923
6.84k
        Token * _literal;
7924
6.84k
        asdl_stmt_seq* body;
7925
6.84k
        void *guard;
7926
6.84k
        pattern_ty pattern;
7927
6.84k
        if (
7928
6.84k
            (_keyword = _PyPegen_expect_soft_keyword(p, "case"))  // soft_keyword='"case"'
7929
6.84k
            &&
7930
6.84k
            (pattern = patterns_rule(p))  // patterns
7931
6.84k
            &&
7932
6.84k
            (guard = guard_rule(p), !p->error_indicator)  // guard?
7933
6.84k
            &&
7934
6.84k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7935
6.84k
            &&
7936
6.84k
            (body = block_rule(p))  // block
7937
6.84k
        )
7938
4.99k
        {
7939
4.99k
            D(fprintf(stderr, "%*c+ case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' block"));
7940
4.99k
            _res = _PyAST_match_case ( pattern , guard , body , p -> arena );
7941
4.99k
            if (_res == NULL && PyErr_Occurred()) {
7942
0
                p->error_indicator = 1;
7943
0
                p->level--;
7944
0
                return NULL;
7945
0
            }
7946
4.99k
            goto done;
7947
4.99k
        }
7948
1.84k
        p->mark = _mark;
7949
1.84k
        D(fprintf(stderr, "%*c%s case_block[%d-%d]: %s failed!\n", p->level, ' ',
7950
1.84k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"case\" patterns guard? ':' block"));
7951
1.84k
    }
7952
0
    _res = NULL;
7953
6.84k
  done:
7954
6.84k
    p->level--;
7955
6.84k
    return _res;
7956
1.84k
}
7957
7958
// guard: 'if' named_expression
7959
static expr_ty
7960
guard_rule(Parser *p)
7961
9.13k
{
7962
9.13k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7963
0
        _Pypegen_stack_overflow(p);
7964
0
    }
7965
9.13k
    if (p->error_indicator) {
7966
0
        p->level--;
7967
0
        return NULL;
7968
0
    }
7969
9.13k
    expr_ty _res = NULL;
7970
9.13k
    int _mark = p->mark;
7971
9.13k
    { // 'if' named_expression
7972
9.13k
        if (p->error_indicator) {
7973
0
            p->level--;
7974
0
            return NULL;
7975
0
        }
7976
9.13k
        D(fprintf(stderr, "%*c> guard[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression"));
7977
9.13k
        Token * _keyword;
7978
9.13k
        expr_ty guard;
7979
9.13k
        if (
7980
9.13k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
7981
9.13k
            &&
7982
9.13k
            (guard = named_expression_rule(p))  // named_expression
7983
9.13k
        )
7984
259
        {
7985
259
            D(fprintf(stderr, "%*c+ guard[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression"));
7986
259
            _res = guard;
7987
259
            if (_res == NULL && PyErr_Occurred()) {
7988
0
                p->error_indicator = 1;
7989
0
                p->level--;
7990
0
                return NULL;
7991
0
            }
7992
259
            goto done;
7993
259
        }
7994
8.87k
        p->mark = _mark;
7995
8.87k
        D(fprintf(stderr, "%*c%s guard[%d-%d]: %s failed!\n", p->level, ' ',
7996
8.87k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression"));
7997
8.87k
    }
7998
0
    _res = NULL;
7999
9.13k
  done:
8000
9.13k
    p->level--;
8001
9.13k
    return _res;
8002
8.87k
}
8003
8004
// patterns: open_sequence_pattern | pattern
8005
static pattern_ty
8006
patterns_rule(Parser *p)
8007
10.5k
{
8008
10.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8009
0
        _Pypegen_stack_overflow(p);
8010
0
    }
8011
10.5k
    if (p->error_indicator) {
8012
0
        p->level--;
8013
0
        return NULL;
8014
0
    }
8015
10.5k
    pattern_ty _res = NULL;
8016
10.5k
    int _mark = p->mark;
8017
10.5k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8018
1
        p->error_indicator = 1;
8019
1
        p->level--;
8020
1
        return NULL;
8021
1
    }
8022
10.5k
    int _start_lineno = p->tokens[_mark]->lineno;
8023
10.5k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8024
10.5k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8025
10.5k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8026
10.5k
    { // open_sequence_pattern
8027
10.5k
        if (p->error_indicator) {
8028
0
            p->level--;
8029
0
            return NULL;
8030
0
        }
8031
10.5k
        D(fprintf(stderr, "%*c> patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "open_sequence_pattern"));
8032
10.5k
        asdl_pattern_seq* patterns;
8033
10.5k
        if (
8034
10.5k
            (patterns = (asdl_pattern_seq*)open_sequence_pattern_rule(p))  // open_sequence_pattern
8035
10.5k
        )
8036
2.83k
        {
8037
2.83k
            D(fprintf(stderr, "%*c+ patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "open_sequence_pattern"));
8038
2.83k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8039
2.83k
            if (_token == NULL) {
8040
0
                p->level--;
8041
0
                return NULL;
8042
0
            }
8043
2.83k
            int _end_lineno = _token->end_lineno;
8044
2.83k
            UNUSED(_end_lineno); // Only used by EXTRA macro
8045
2.83k
            int _end_col_offset = _token->end_col_offset;
8046
2.83k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8047
2.83k
            _res = _PyAST_MatchSequence ( patterns , EXTRA );
8048
2.83k
            if (_res == NULL && PyErr_Occurred()) {
8049
0
                p->error_indicator = 1;
8050
0
                p->level--;
8051
0
                return NULL;
8052
0
            }
8053
2.83k
            goto done;
8054
2.83k
        }
8055
7.71k
        p->mark = _mark;
8056
7.71k
        D(fprintf(stderr, "%*c%s patterns[%d-%d]: %s failed!\n", p->level, ' ',
8057
7.71k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "open_sequence_pattern"));
8058
7.71k
    }
8059
0
    { // pattern
8060
7.71k
        if (p->error_indicator) {
8061
256
            p->level--;
8062
256
            return NULL;
8063
256
        }
8064
7.46k
        D(fprintf(stderr, "%*c> patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern"));
8065
7.46k
        pattern_ty pattern_var;
8066
7.46k
        if (
8067
7.46k
            (pattern_var = pattern_rule(p))  // pattern
8068
7.46k
        )
8069
6.30k
        {
8070
6.30k
            D(fprintf(stderr, "%*c+ patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern"));
8071
6.30k
            _res = pattern_var;
8072
6.30k
            goto done;
8073
6.30k
        }
8074
1.15k
        p->mark = _mark;
8075
1.15k
        D(fprintf(stderr, "%*c%s patterns[%d-%d]: %s failed!\n", p->level, ' ',
8076
1.15k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern"));
8077
1.15k
    }
8078
0
    _res = NULL;
8079
10.2k
  done:
8080
10.2k
    p->level--;
8081
10.2k
    return _res;
8082
1.15k
}
8083
8084
// pattern: as_pattern | or_pattern
8085
static pattern_ty
8086
pattern_rule(Parser *p)
8087
89.5k
{
8088
89.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8089
0
        _Pypegen_stack_overflow(p);
8090
0
    }
8091
89.5k
    if (p->error_indicator) {
8092
0
        p->level--;
8093
0
        return NULL;
8094
0
    }
8095
89.5k
    pattern_ty _res = NULL;
8096
89.5k
    int _mark = p->mark;
8097
89.5k
    { // as_pattern
8098
89.5k
        if (p->error_indicator) {
8099
0
            p->level--;
8100
0
            return NULL;
8101
0
        }
8102
89.5k
        D(fprintf(stderr, "%*c> pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "as_pattern"));
8103
89.5k
        pattern_ty as_pattern_var;
8104
89.5k
        if (
8105
89.5k
            (as_pattern_var = as_pattern_rule(p))  // as_pattern
8106
89.5k
        )
8107
605
        {
8108
605
            D(fprintf(stderr, "%*c+ pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "as_pattern"));
8109
605
            _res = as_pattern_var;
8110
605
            goto done;
8111
605
        }
8112
88.9k
        p->mark = _mark;
8113
88.9k
        D(fprintf(stderr, "%*c%s pattern[%d-%d]: %s failed!\n", p->level, ' ',
8114
88.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "as_pattern"));
8115
88.9k
    }
8116
0
    { // or_pattern
8117
88.9k
        if (p->error_indicator) {
8118
4.02k
            p->level--;
8119
4.02k
            return NULL;
8120
4.02k
        }
8121
84.9k
        D(fprintf(stderr, "%*c> pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern"));
8122
84.9k
        pattern_ty or_pattern_var;
8123
84.9k
        if (
8124
84.9k
            (or_pattern_var = or_pattern_rule(p))  // or_pattern
8125
84.9k
        )
8126
54.5k
        {
8127
54.5k
            D(fprintf(stderr, "%*c+ pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern"));
8128
54.5k
            _res = or_pattern_var;
8129
54.5k
            goto done;
8130
54.5k
        }
8131
30.3k
        p->mark = _mark;
8132
30.3k
        D(fprintf(stderr, "%*c%s pattern[%d-%d]: %s failed!\n", p->level, ' ',
8133
30.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern"));
8134
30.3k
    }
8135
0
    _res = NULL;
8136
85.5k
  done:
8137
85.5k
    p->level--;
8138
85.5k
    return _res;
8139
30.3k
}
8140
8141
// as_pattern: or_pattern 'as' pattern_capture_target | invalid_as_pattern
8142
static pattern_ty
8143
as_pattern_rule(Parser *p)
8144
89.5k
{
8145
89.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8146
0
        _Pypegen_stack_overflow(p);
8147
0
    }
8148
89.5k
    if (p->error_indicator) {
8149
0
        p->level--;
8150
0
        return NULL;
8151
0
    }
8152
89.5k
    pattern_ty _res = NULL;
8153
89.5k
    int _mark = p->mark;
8154
89.5k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8155
44
        p->error_indicator = 1;
8156
44
        p->level--;
8157
44
        return NULL;
8158
44
    }
8159
89.5k
    int _start_lineno = p->tokens[_mark]->lineno;
8160
89.5k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8161
89.5k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8162
89.5k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8163
89.5k
    { // or_pattern 'as' pattern_capture_target
8164
89.5k
        if (p->error_indicator) {
8165
0
            p->level--;
8166
0
            return NULL;
8167
0
        }
8168
89.5k
        D(fprintf(stderr, "%*c> as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
8169
89.5k
        Token * _keyword;
8170
89.5k
        pattern_ty pattern;
8171
89.5k
        expr_ty target;
8172
89.5k
        if (
8173
89.5k
            (pattern = or_pattern_rule(p))  // or_pattern
8174
89.5k
            &&
8175
89.5k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
8176
89.5k
            &&
8177
89.5k
            (target = pattern_capture_target_rule(p))  // pattern_capture_target
8178
89.5k
        )
8179
605
        {
8180
605
            D(fprintf(stderr, "%*c+ as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
8181
605
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8182
605
            if (_token == NULL) {
8183
0
                p->level--;
8184
0
                return NULL;
8185
0
            }
8186
605
            int _end_lineno = _token->end_lineno;
8187
605
            UNUSED(_end_lineno); // Only used by EXTRA macro
8188
605
            int _end_col_offset = _token->end_col_offset;
8189
605
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8190
605
            _res = _PyAST_MatchAs ( pattern , target -> v . Name . id , EXTRA );
8191
605
            if (_res == NULL && PyErr_Occurred()) {
8192
0
                p->error_indicator = 1;
8193
0
                p->level--;
8194
0
                return NULL;
8195
0
            }
8196
605
            goto done;
8197
605
        }
8198
88.9k
        p->mark = _mark;
8199
88.9k
        D(fprintf(stderr, "%*c%s as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8200
88.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
8201
88.9k
    }
8202
88.9k
    if (p->call_invalid_rules) { // invalid_as_pattern
8203
48.6k
        if (p->error_indicator) {
8204
1.63k
            p->level--;
8205
1.63k
            return NULL;
8206
1.63k
        }
8207
47.0k
        D(fprintf(stderr, "%*c> as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_as_pattern"));
8208
47.0k
        void *invalid_as_pattern_var;
8209
47.0k
        if (
8210
47.0k
            (invalid_as_pattern_var = invalid_as_pattern_rule(p))  // invalid_as_pattern
8211
47.0k
        )
8212
0
        {
8213
0
            D(fprintf(stderr, "%*c+ as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_as_pattern"));
8214
0
            _res = invalid_as_pattern_var;
8215
0
            goto done;
8216
0
        }
8217
47.0k
        p->mark = _mark;
8218
47.0k
        D(fprintf(stderr, "%*c%s as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8219
47.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_as_pattern"));
8220
47.0k
    }
8221
87.2k
    _res = NULL;
8222
87.8k
  done:
8223
87.8k
    p->level--;
8224
87.8k
    return _res;
8225
87.2k
}
8226
8227
// or_pattern: '|'.closed_pattern+
8228
static pattern_ty
8229
or_pattern_rule(Parser *p)
8230
268k
{
8231
268k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8232
0
        _Pypegen_stack_overflow(p);
8233
0
    }
8234
268k
    if (p->error_indicator) {
8235
0
        p->level--;
8236
0
        return NULL;
8237
0
    }
8238
268k
    pattern_ty _res = NULL;
8239
268k
    int _mark = p->mark;
8240
268k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8241
0
        p->error_indicator = 1;
8242
0
        p->level--;
8243
0
        return NULL;
8244
0
    }
8245
268k
    int _start_lineno = p->tokens[_mark]->lineno;
8246
268k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8247
268k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8248
268k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8249
268k
    { // '|'.closed_pattern+
8250
268k
        if (p->error_indicator) {
8251
0
            p->level--;
8252
0
            return NULL;
8253
0
        }
8254
268k
        D(fprintf(stderr, "%*c> or_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|'.closed_pattern+"));
8255
268k
        asdl_pattern_seq* patterns;
8256
268k
        if (
8257
268k
            (patterns = (asdl_pattern_seq*)_gather_40_rule(p))  // '|'.closed_pattern+
8258
268k
        )
8259
168k
        {
8260
168k
            D(fprintf(stderr, "%*c+ or_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'|'.closed_pattern+"));
8261
168k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8262
168k
            if (_token == NULL) {
8263
0
                p->level--;
8264
0
                return NULL;
8265
0
            }
8266
168k
            int _end_lineno = _token->end_lineno;
8267
168k
            UNUSED(_end_lineno); // Only used by EXTRA macro
8268
168k
            int _end_col_offset = _token->end_col_offset;
8269
168k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8270
168k
            _res = asdl_seq_LEN ( patterns ) == 1 ? asdl_seq_GET ( patterns , 0 ) : _PyAST_MatchOr ( patterns , EXTRA );
8271
168k
            if (_res == NULL && PyErr_Occurred()) {
8272
0
                p->error_indicator = 1;
8273
0
                p->level--;
8274
0
                return NULL;
8275
0
            }
8276
168k
            goto done;
8277
168k
        }
8278
99.7k
        p->mark = _mark;
8279
99.7k
        D(fprintf(stderr, "%*c%s or_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8280
99.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|'.closed_pattern+"));
8281
99.7k
    }
8282
0
    _res = NULL;
8283
268k
  done:
8284
268k
    p->level--;
8285
268k
    return _res;
8286
99.7k
}
8287
8288
// closed_pattern:
8289
//     | literal_pattern
8290
//     | capture_pattern
8291
//     | wildcard_pattern
8292
//     | value_pattern
8293
//     | group_pattern
8294
//     | sequence_pattern
8295
//     | mapping_pattern
8296
//     | class_pattern
8297
static pattern_ty
8298
closed_pattern_rule(Parser *p)
8299
281k
{
8300
281k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8301
0
        _Pypegen_stack_overflow(p);
8302
0
    }
8303
281k
    if (p->error_indicator) {
8304
0
        p->level--;
8305
0
        return NULL;
8306
0
    }
8307
281k
    pattern_ty _res = NULL;
8308
281k
    if (_PyPegen_is_memoized(p, closed_pattern_type, &_res)) {
8309
226k
        p->level--;
8310
226k
        return _res;
8311
226k
    }
8312
54.4k
    int _mark = p->mark;
8313
54.4k
    { // literal_pattern
8314
54.4k
        if (p->error_indicator) {
8315
0
            p->level--;
8316
0
            return NULL;
8317
0
        }
8318
54.4k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "literal_pattern"));
8319
54.4k
        pattern_ty literal_pattern_var;
8320
54.4k
        if (
8321
54.4k
            (literal_pattern_var = literal_pattern_rule(p))  // literal_pattern
8322
54.4k
        )
8323
5.98k
        {
8324
5.98k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "literal_pattern"));
8325
5.98k
            _res = literal_pattern_var;
8326
5.98k
            goto done;
8327
5.98k
        }
8328
48.4k
        p->mark = _mark;
8329
48.4k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8330
48.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "literal_pattern"));
8331
48.4k
    }
8332
0
    { // capture_pattern
8333
48.4k
        if (p->error_indicator) {
8334
20
            p->level--;
8335
20
            return NULL;
8336
20
        }
8337
48.4k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "capture_pattern"));
8338
48.4k
        pattern_ty capture_pattern_var;
8339
48.4k
        if (
8340
48.4k
            (capture_pattern_var = capture_pattern_rule(p))  // capture_pattern
8341
48.4k
        )
8342
16.1k
        {
8343
16.1k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "capture_pattern"));
8344
16.1k
            _res = capture_pattern_var;
8345
16.1k
            goto done;
8346
16.1k
        }
8347
32.2k
        p->mark = _mark;
8348
32.2k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8349
32.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "capture_pattern"));
8350
32.2k
    }
8351
0
    { // wildcard_pattern
8352
32.2k
        if (p->error_indicator) {
8353
0
            p->level--;
8354
0
            return NULL;
8355
0
        }
8356
32.2k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "wildcard_pattern"));
8357
32.2k
        pattern_ty wildcard_pattern_var;
8358
32.2k
        if (
8359
32.2k
            (wildcard_pattern_var = wildcard_pattern_rule(p))  // wildcard_pattern
8360
32.2k
        )
8361
4.18k
        {
8362
4.18k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "wildcard_pattern"));
8363
4.18k
            _res = wildcard_pattern_var;
8364
4.18k
            goto done;
8365
4.18k
        }
8366
28.1k
        p->mark = _mark;
8367
28.1k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8368
28.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "wildcard_pattern"));
8369
28.1k
    }
8370
0
    { // value_pattern
8371
28.1k
        if (p->error_indicator) {
8372
0
            p->level--;
8373
0
            return NULL;
8374
0
        }
8375
28.1k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "value_pattern"));
8376
28.1k
        pattern_ty value_pattern_var;
8377
28.1k
        if (
8378
28.1k
            (value_pattern_var = value_pattern_rule(p))  // value_pattern
8379
28.1k
        )
8380
308
        {
8381
308
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "value_pattern"));
8382
308
            _res = value_pattern_var;
8383
308
            goto done;
8384
308
        }
8385
27.8k
        p->mark = _mark;
8386
27.8k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8387
27.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "value_pattern"));
8388
27.8k
    }
8389
0
    { // group_pattern
8390
27.8k
        if (p->error_indicator) {
8391
3
            p->level--;
8392
3
            return NULL;
8393
3
        }
8394
27.7k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "group_pattern"));
8395
27.7k
        pattern_ty group_pattern_var;
8396
27.7k
        if (
8397
27.7k
            (group_pattern_var = group_pattern_rule(p))  // group_pattern
8398
27.7k
        )
8399
548
        {
8400
548
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "group_pattern"));
8401
548
            _res = group_pattern_var;
8402
548
            goto done;
8403
548
        }
8404
27.2k
        p->mark = _mark;
8405
27.2k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8406
27.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "group_pattern"));
8407
27.2k
    }
8408
0
    { // sequence_pattern
8409
27.2k
        if (p->error_indicator) {
8410
490
            p->level--;
8411
490
            return NULL;
8412
490
        }
8413
26.7k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sequence_pattern"));
8414
26.7k
        pattern_ty sequence_pattern_var;
8415
26.7k
        if (
8416
26.7k
            (sequence_pattern_var = sequence_pattern_rule(p))  // sequence_pattern
8417
26.7k
        )
8418
2.23k
        {
8419
2.23k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sequence_pattern"));
8420
2.23k
            _res = sequence_pattern_var;
8421
2.23k
            goto done;
8422
2.23k
        }
8423
24.5k
        p->mark = _mark;
8424
24.5k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8425
24.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sequence_pattern"));
8426
24.5k
    }
8427
0
    { // mapping_pattern
8428
24.5k
        if (p->error_indicator) {
8429
778
            p->level--;
8430
778
            return NULL;
8431
778
        }
8432
23.7k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "mapping_pattern"));
8433
23.7k
        pattern_ty mapping_pattern_var;
8434
23.7k
        if (
8435
23.7k
            (mapping_pattern_var = mapping_pattern_rule(p))  // mapping_pattern
8436
23.7k
        )
8437
2.70k
        {
8438
2.70k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "mapping_pattern"));
8439
2.70k
            _res = mapping_pattern_var;
8440
2.70k
            goto done;
8441
2.70k
        }
8442
21.0k
        p->mark = _mark;
8443
21.0k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8444
21.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "mapping_pattern"));
8445
21.0k
    }
8446
0
    { // class_pattern
8447
21.0k
        if (p->error_indicator) {
8448
495
            p->level--;
8449
495
            return NULL;
8450
495
        }
8451
20.5k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "class_pattern"));
8452
20.5k
        pattern_ty class_pattern_var;
8453
20.5k
        if (
8454
20.5k
            (class_pattern_var = class_pattern_rule(p))  // class_pattern
8455
20.5k
        )
8456
2.26k
        {
8457
2.26k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "class_pattern"));
8458
2.26k
            _res = class_pattern_var;
8459
2.26k
            goto done;
8460
2.26k
        }
8461
18.2k
        p->mark = _mark;
8462
18.2k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8463
18.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "class_pattern"));
8464
18.2k
    }
8465
0
    _res = NULL;
8466
52.6k
  done:
8467
52.6k
    _PyPegen_insert_memo(p, _mark, closed_pattern_type, _res);
8468
52.6k
    p->level--;
8469
52.6k
    return _res;
8470
18.2k
}
8471
8472
// literal_pattern:
8473
//     | signed_number !('+' | '-')
8474
//     | complex_number
8475
//     | strings
8476
//     | 'None'
8477
//     | 'True'
8478
//     | 'False'
8479
static pattern_ty
8480
literal_pattern_rule(Parser *p)
8481
54.4k
{
8482
54.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8483
0
        _Pypegen_stack_overflow(p);
8484
0
    }
8485
54.4k
    if (p->error_indicator) {
8486
0
        p->level--;
8487
0
        return NULL;
8488
0
    }
8489
54.4k
    pattern_ty _res = NULL;
8490
54.4k
    int _mark = p->mark;
8491
54.4k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8492
0
        p->error_indicator = 1;
8493
0
        p->level--;
8494
0
        return NULL;
8495
0
    }
8496
54.4k
    int _start_lineno = p->tokens[_mark]->lineno;
8497
54.4k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8498
54.4k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8499
54.4k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8500
54.4k
    { // signed_number !('+' | '-')
8501
54.4k
        if (p->error_indicator) {
8502
0
            p->level--;
8503
0
            return NULL;
8504
0
        }
8505
54.4k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8506
54.4k
        expr_ty value;
8507
54.4k
        if (
8508
54.4k
            (value = signed_number_rule(p))  // signed_number
8509
54.4k
            &&
8510
54.4k
            _PyPegen_lookahead(0, _tmp_41_rule, p)
8511
54.4k
        )
8512
4.70k
        {
8513
4.70k
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8514
4.70k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8515
4.70k
            if (_token == NULL) {
8516
0
                p->level--;
8517
0
                return NULL;
8518
0
            }
8519
4.70k
            int _end_lineno = _token->end_lineno;
8520
4.70k
            UNUSED(_end_lineno); // Only used by EXTRA macro
8521
4.70k
            int _end_col_offset = _token->end_col_offset;
8522
4.70k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8523
4.70k
            _res = _PyAST_MatchValue ( value , EXTRA );
8524
4.70k
            if (_res == NULL && PyErr_Occurred()) {
8525
0
                p->error_indicator = 1;
8526
0
                p->level--;
8527
0
                return NULL;
8528
0
            }
8529
4.70k
            goto done;
8530
4.70k
        }
8531
49.7k
        p->mark = _mark;
8532
49.7k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8533
49.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_number !('+' | '-')"));
8534
49.7k
    }
8535
0
    { // complex_number
8536
49.7k
        if (p->error_indicator) {
8537
1
            p->level--;
8538
1
            return NULL;
8539
1
        }
8540
49.7k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "complex_number"));
8541
49.7k
        expr_ty value;
8542
49.7k
        if (
8543
49.7k
            (value = complex_number_rule(p))  // complex_number
8544
49.7k
        )
8545
584
        {
8546
584
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "complex_number"));
8547
584
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8548
584
            if (_token == NULL) {
8549
0
                p->level--;
8550
0
                return NULL;
8551
0
            }
8552
584
            int _end_lineno = _token->end_lineno;
8553
584
            UNUSED(_end_lineno); // Only used by EXTRA macro
8554
584
            int _end_col_offset = _token->end_col_offset;
8555
584
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8556
584
            _res = _PyAST_MatchValue ( value , EXTRA );
8557
584
            if (_res == NULL && PyErr_Occurred()) {
8558
0
                p->error_indicator = 1;
8559
0
                p->level--;
8560
0
                return NULL;
8561
0
            }
8562
584
            goto done;
8563
584
        }
8564
49.1k
        p->mark = _mark;
8565
49.1k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8566
49.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "complex_number"));
8567
49.1k
    }
8568
0
    { // strings
8569
49.1k
        if (p->error_indicator) {
8570
9
            p->level--;
8571
9
            return NULL;
8572
9
        }
8573
49.1k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "strings"));
8574
49.1k
        expr_ty value;
8575
49.1k
        if (
8576
49.1k
            (value = strings_rule(p))  // strings
8577
49.1k
        )
8578
75
        {
8579
75
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "strings"));
8580
75
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8581
75
            if (_token == NULL) {
8582
0
                p->level--;
8583
0
                return NULL;
8584
0
            }
8585
75
            int _end_lineno = _token->end_lineno;
8586
75
            UNUSED(_end_lineno); // Only used by EXTRA macro
8587
75
            int _end_col_offset = _token->end_col_offset;
8588
75
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8589
75
            _res = _PyAST_MatchValue ( value , EXTRA );
8590
75
            if (_res == NULL && PyErr_Occurred()) {
8591
0
                p->error_indicator = 1;
8592
0
                p->level--;
8593
0
                return NULL;
8594
0
            }
8595
75
            goto done;
8596
75
        }
8597
49.0k
        p->mark = _mark;
8598
49.0k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8599
49.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "strings"));
8600
49.0k
    }
8601
0
    { // 'None'
8602
49.0k
        if (p->error_indicator) {
8603
10
            p->level--;
8604
10
            return NULL;
8605
10
        }
8606
49.0k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
8607
49.0k
        Token * _keyword;
8608
49.0k
        if (
8609
49.0k
            (_keyword = _PyPegen_expect_token(p, 624))  // token='None'
8610
49.0k
        )
8611
252
        {
8612
252
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
8613
252
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8614
252
            if (_token == NULL) {
8615
0
                p->level--;
8616
0
                return NULL;
8617
0
            }
8618
252
            int _end_lineno = _token->end_lineno;
8619
252
            UNUSED(_end_lineno); // Only used by EXTRA macro
8620
252
            int _end_col_offset = _token->end_col_offset;
8621
252
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8622
252
            _res = _PyAST_MatchSingleton ( Py_None , EXTRA );
8623
252
            if (_res == NULL && PyErr_Occurred()) {
8624
0
                p->error_indicator = 1;
8625
0
                p->level--;
8626
0
                return NULL;
8627
0
            }
8628
252
            goto done;
8629
252
        }
8630
48.7k
        p->mark = _mark;
8631
48.7k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8632
48.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
8633
48.7k
    }
8634
0
    { // 'True'
8635
48.7k
        if (p->error_indicator) {
8636
0
            p->level--;
8637
0
            return NULL;
8638
0
        }
8639
48.7k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
8640
48.7k
        Token * _keyword;
8641
48.7k
        if (
8642
48.7k
            (_keyword = _PyPegen_expect_token(p, 623))  // token='True'
8643
48.7k
        )
8644
73
        {
8645
73
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
8646
73
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8647
73
            if (_token == NULL) {
8648
0
                p->level--;
8649
0
                return NULL;
8650
0
            }
8651
73
            int _end_lineno = _token->end_lineno;
8652
73
            UNUSED(_end_lineno); // Only used by EXTRA macro
8653
73
            int _end_col_offset = _token->end_col_offset;
8654
73
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8655
73
            _res = _PyAST_MatchSingleton ( Py_True , EXTRA );
8656
73
            if (_res == NULL && PyErr_Occurred()) {
8657
0
                p->error_indicator = 1;
8658
0
                p->level--;
8659
0
                return NULL;
8660
0
            }
8661
73
            goto done;
8662
73
        }
8663
48.7k
        p->mark = _mark;
8664
48.7k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8665
48.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
8666
48.7k
    }
8667
0
    { // 'False'
8668
48.7k
        if (p->error_indicator) {
8669
0
            p->level--;
8670
0
            return NULL;
8671
0
        }
8672
48.7k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
8673
48.7k
        Token * _keyword;
8674
48.7k
        if (
8675
48.7k
            (_keyword = _PyPegen_expect_token(p, 625))  // token='False'
8676
48.7k
        )
8677
298
        {
8678
298
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
8679
298
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8680
298
            if (_token == NULL) {
8681
0
                p->level--;
8682
0
                return NULL;
8683
0
            }
8684
298
            int _end_lineno = _token->end_lineno;
8685
298
            UNUSED(_end_lineno); // Only used by EXTRA macro
8686
298
            int _end_col_offset = _token->end_col_offset;
8687
298
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8688
298
            _res = _PyAST_MatchSingleton ( Py_False , EXTRA );
8689
298
            if (_res == NULL && PyErr_Occurred()) {
8690
0
                p->error_indicator = 1;
8691
0
                p->level--;
8692
0
                return NULL;
8693
0
            }
8694
298
            goto done;
8695
298
        }
8696
48.4k
        p->mark = _mark;
8697
48.4k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8698
48.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
8699
48.4k
    }
8700
0
    _res = NULL;
8701
54.4k
  done:
8702
54.4k
    p->level--;
8703
54.4k
    return _res;
8704
48.4k
}
8705
8706
// literal_expr:
8707
//     | signed_number !('+' | '-')
8708
//     | complex_number
8709
//     | &(STRING | FSTRING_START | TSTRING_START) strings
8710
//     | 'None'
8711
//     | 'True'
8712
//     | 'False'
8713
static expr_ty
8714
literal_expr_rule(Parser *p)
8715
8.39k
{
8716
8.39k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8717
0
        _Pypegen_stack_overflow(p);
8718
0
    }
8719
8.39k
    if (p->error_indicator) {
8720
0
        p->level--;
8721
0
        return NULL;
8722
0
    }
8723
8.39k
    expr_ty _res = NULL;
8724
8.39k
    int _mark = p->mark;
8725
8.39k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8726
8
        p->error_indicator = 1;
8727
8
        p->level--;
8728
8
        return NULL;
8729
8
    }
8730
8.38k
    int _start_lineno = p->tokens[_mark]->lineno;
8731
8.38k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8732
8.38k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8733
8.38k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8734
8.38k
    { // signed_number !('+' | '-')
8735
8.38k
        if (p->error_indicator) {
8736
0
            p->level--;
8737
0
            return NULL;
8738
0
        }
8739
8.38k
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8740
8.38k
        expr_ty signed_number_var;
8741
8.38k
        if (
8742
8.38k
            (signed_number_var = signed_number_rule(p))  // signed_number
8743
8.38k
            &&
8744
8.38k
            _PyPegen_lookahead(0, _tmp_41_rule, p)
8745
8.38k
        )
8746
5.14k
        {
8747
5.14k
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8748
5.14k
            _res = signed_number_var;
8749
5.14k
            goto done;
8750
5.14k
        }
8751
3.24k
        p->mark = _mark;
8752
3.24k
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8753
3.24k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_number !('+' | '-')"));
8754
3.24k
    }
8755
0
    { // complex_number
8756
3.24k
        if (p->error_indicator) {
8757
2
            p->level--;
8758
2
            return NULL;
8759
2
        }
8760
3.24k
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "complex_number"));
8761
3.24k
        expr_ty complex_number_var;
8762
3.24k
        if (
8763
3.24k
            (complex_number_var = complex_number_rule(p))  // complex_number
8764
3.24k
        )
8765
569
        {
8766
569
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "complex_number"));
8767
569
            _res = complex_number_var;
8768
569
            goto done;
8769
569
        }
8770
2.67k
        p->mark = _mark;
8771
2.67k
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8772
2.67k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "complex_number"));
8773
2.67k
    }
8774
0
    { // &(STRING | FSTRING_START | TSTRING_START) strings
8775
2.67k
        if (p->error_indicator) {
8776
3
            p->level--;
8777
3
            return NULL;
8778
3
        }
8779
2.66k
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
8780
2.66k
        expr_ty strings_var;
8781
2.66k
        if (
8782
2.66k
            _PyPegen_lookahead(1, _tmp_42_rule, p)
8783
2.66k
            &&
8784
2.66k
            (strings_var = strings_rule(p))  // strings
8785
2.66k
        )
8786
1.80k
        {
8787
1.80k
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
8788
1.80k
            _res = strings_var;
8789
1.80k
            goto done;
8790
1.80k
        }
8791
868
        p->mark = _mark;
8792
868
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8793
868
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
8794
868
    }
8795
0
    { // 'None'
8796
868
        if (p->error_indicator) {
8797
3
            p->level--;
8798
3
            return NULL;
8799
3
        }
8800
865
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
8801
865
        Token * _keyword;
8802
865
        if (
8803
865
            (_keyword = _PyPegen_expect_token(p, 624))  // token='None'
8804
865
        )
8805
7
        {
8806
7
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
8807
7
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8808
7
            if (_token == NULL) {
8809
0
                p->level--;
8810
0
                return NULL;
8811
0
            }
8812
7
            int _end_lineno = _token->end_lineno;
8813
7
            UNUSED(_end_lineno); // Only used by EXTRA macro
8814
7
            int _end_col_offset = _token->end_col_offset;
8815
7
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8816
7
            _res = _PyAST_Constant ( Py_None , NULL , EXTRA );
8817
7
            if (_res == NULL && PyErr_Occurred()) {
8818
0
                p->error_indicator = 1;
8819
0
                p->level--;
8820
0
                return NULL;
8821
0
            }
8822
7
            goto done;
8823
7
        }
8824
858
        p->mark = _mark;
8825
858
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8826
858
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
8827
858
    }
8828
0
    { // 'True'
8829
858
        if (p->error_indicator) {
8830
0
            p->level--;
8831
0
            return NULL;
8832
0
        }
8833
858
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
8834
858
        Token * _keyword;
8835
858
        if (
8836
858
            (_keyword = _PyPegen_expect_token(p, 623))  // token='True'
8837
858
        )
8838
66
        {
8839
66
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
8840
66
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8841
66
            if (_token == NULL) {
8842
0
                p->level--;
8843
0
                return NULL;
8844
0
            }
8845
66
            int _end_lineno = _token->end_lineno;
8846
66
            UNUSED(_end_lineno); // Only used by EXTRA macro
8847
66
            int _end_col_offset = _token->end_col_offset;
8848
66
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8849
66
            _res = _PyAST_Constant ( Py_True , NULL , EXTRA );
8850
66
            if (_res == NULL && PyErr_Occurred()) {
8851
0
                p->error_indicator = 1;
8852
0
                p->level--;
8853
0
                return NULL;
8854
0
            }
8855
66
            goto done;
8856
66
        }
8857
792
        p->mark = _mark;
8858
792
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8859
792
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
8860
792
    }
8861
0
    { // 'False'
8862
792
        if (p->error_indicator) {
8863
0
            p->level--;
8864
0
            return NULL;
8865
0
        }
8866
792
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
8867
792
        Token * _keyword;
8868
792
        if (
8869
792
            (_keyword = _PyPegen_expect_token(p, 625))  // token='False'
8870
792
        )
8871
10
        {
8872
10
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
8873
10
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8874
10
            if (_token == NULL) {
8875
0
                p->level--;
8876
0
                return NULL;
8877
0
            }
8878
10
            int _end_lineno = _token->end_lineno;
8879
10
            UNUSED(_end_lineno); // Only used by EXTRA macro
8880
10
            int _end_col_offset = _token->end_col_offset;
8881
10
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8882
10
            _res = _PyAST_Constant ( Py_False , NULL , EXTRA );
8883
10
            if (_res == NULL && PyErr_Occurred()) {
8884
0
                p->error_indicator = 1;
8885
0
                p->level--;
8886
0
                return NULL;
8887
0
            }
8888
10
            goto done;
8889
10
        }
8890
782
        p->mark = _mark;
8891
782
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8892
782
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
8893
782
    }
8894
0
    _res = NULL;
8895
8.37k
  done:
8896
8.37k
    p->level--;
8897
8.37k
    return _res;
8898
782
}
8899
8900
// complex_number:
8901
//     | signed_real_number '+' imaginary_number
8902
//     | signed_real_number '-' imaginary_number
8903
static expr_ty
8904
complex_number_rule(Parser *p)
8905
52.9k
{
8906
52.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8907
0
        _Pypegen_stack_overflow(p);
8908
0
    }
8909
52.9k
    if (p->error_indicator) {
8910
0
        p->level--;
8911
0
        return NULL;
8912
0
    }
8913
52.9k
    expr_ty _res = NULL;
8914
52.9k
    int _mark = p->mark;
8915
52.9k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8916
0
        p->error_indicator = 1;
8917
0
        p->level--;
8918
0
        return NULL;
8919
0
    }
8920
52.9k
    int _start_lineno = p->tokens[_mark]->lineno;
8921
52.9k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8922
52.9k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8923
52.9k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8924
52.9k
    { // signed_real_number '+' imaginary_number
8925
52.9k
        if (p->error_indicator) {
8926
0
            p->level--;
8927
0
            return NULL;
8928
0
        }
8929
52.9k
        D(fprintf(stderr, "%*c> complex_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_real_number '+' imaginary_number"));
8930
52.9k
        Token * _literal;
8931
52.9k
        expr_ty imag;
8932
52.9k
        expr_ty real;
8933
52.9k
        if (
8934
52.9k
            (real = signed_real_number_rule(p))  // signed_real_number
8935
52.9k
            &&
8936
52.9k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
8937
52.9k
            &&
8938
52.9k
            (imag = imaginary_number_rule(p))  // imaginary_number
8939
52.9k
        )
8940
429
        {
8941
429
            D(fprintf(stderr, "%*c+ complex_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_real_number '+' imaginary_number"));
8942
429
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8943
429
            if (_token == NULL) {
8944
0
                p->level--;
8945
0
                return NULL;
8946
0
            }
8947
429
            int _end_lineno = _token->end_lineno;
8948
429
            UNUSED(_end_lineno); // Only used by EXTRA macro
8949
429
            int _end_col_offset = _token->end_col_offset;
8950
429
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8951
429
            _res = _PyAST_BinOp ( real , Add , imag , EXTRA );
8952
429
            if (_res == NULL && PyErr_Occurred()) {
8953
0
                p->error_indicator = 1;
8954
0
                p->level--;
8955
0
                return NULL;
8956
0
            }
8957
429
            goto done;
8958
429
        }
8959
52.5k
        p->mark = _mark;
8960
52.5k
        D(fprintf(stderr, "%*c%s complex_number[%d-%d]: %s failed!\n", p->level, ' ',
8961
52.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_real_number '+' imaginary_number"));
8962
52.5k
    }
8963
0
    { // signed_real_number '-' imaginary_number
8964
52.5k
        if (p->error_indicator) {
8965
7
            p->level--;
8966
7
            return NULL;
8967
7
        }
8968
52.5k
        D(fprintf(stderr, "%*c> complex_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_real_number '-' imaginary_number"));
8969
52.5k
        Token * _literal;
8970
52.5k
        expr_ty imag;
8971
52.5k
        expr_ty real;
8972
52.5k
        if (
8973
52.5k
            (real = signed_real_number_rule(p))  // signed_real_number
8974
52.5k
            &&
8975
52.5k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
8976
52.5k
            &&
8977
52.5k
            (imag = imaginary_number_rule(p))  // imaginary_number
8978
52.5k
        )
8979
724
        {
8980
724
            D(fprintf(stderr, "%*c+ complex_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_real_number '-' imaginary_number"));
8981
724
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8982
724
            if (_token == NULL) {
8983
0
                p->level--;
8984
0
                return NULL;
8985
0
            }
8986
724
            int _end_lineno = _token->end_lineno;
8987
724
            UNUSED(_end_lineno); // Only used by EXTRA macro
8988
724
            int _end_col_offset = _token->end_col_offset;
8989
724
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8990
724
            _res = _PyAST_BinOp ( real , Sub , imag , EXTRA );
8991
724
            if (_res == NULL && PyErr_Occurred()) {
8992
0
                p->error_indicator = 1;
8993
0
                p->level--;
8994
0
                return NULL;
8995
0
            }
8996
724
            goto done;
8997
724
        }
8998
51.8k
        p->mark = _mark;
8999
51.8k
        D(fprintf(stderr, "%*c%s complex_number[%d-%d]: %s failed!\n", p->level, ' ',
9000
51.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_real_number '-' imaginary_number"));
9001
51.8k
    }
9002
0
    _res = NULL;
9003
52.9k
  done:
9004
52.9k
    p->level--;
9005
52.9k
    return _res;
9006
51.8k
}
9007
9008
// signed_number: NUMBER | '-' NUMBER
9009
static expr_ty
9010
signed_number_rule(Parser *p)
9011
62.8k
{
9012
62.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9013
0
        _Pypegen_stack_overflow(p);
9014
0
    }
9015
62.8k
    if (p->error_indicator) {
9016
0
        p->level--;
9017
0
        return NULL;
9018
0
    }
9019
62.8k
    expr_ty _res = NULL;
9020
62.8k
    int _mark = p->mark;
9021
62.8k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9022
0
        p->error_indicator = 1;
9023
0
        p->level--;
9024
0
        return NULL;
9025
0
    }
9026
62.8k
    int _start_lineno = p->tokens[_mark]->lineno;
9027
62.8k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9028
62.8k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9029
62.8k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9030
62.8k
    { // NUMBER
9031
62.8k
        if (p->error_indicator) {
9032
0
            p->level--;
9033
0
            return NULL;
9034
0
        }
9035
62.8k
        D(fprintf(stderr, "%*c> signed_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9036
62.8k
        expr_ty number_var;
9037
62.8k
        if (
9038
62.8k
            (number_var = _PyPegen_number_token(p))  // NUMBER
9039
62.8k
        )
9040
9.32k
        {
9041
9.32k
            D(fprintf(stderr, "%*c+ signed_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9042
9.32k
            _res = number_var;
9043
9.32k
            goto done;
9044
9.32k
        }
9045
53.4k
        p->mark = _mark;
9046
53.4k
        D(fprintf(stderr, "%*c%s signed_number[%d-%d]: %s failed!\n", p->level, ' ',
9047
53.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
9048
53.4k
    }
9049
0
    { // '-' NUMBER
9050
53.4k
        if (p->error_indicator) {
9051
0
            p->level--;
9052
0
            return NULL;
9053
0
        }
9054
53.4k
        D(fprintf(stderr, "%*c> signed_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' NUMBER"));
9055
53.4k
        Token * _literal;
9056
53.4k
        expr_ty number;
9057
53.4k
        if (
9058
53.4k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
9059
53.4k
            &&
9060
53.4k
            (number = _PyPegen_number_token(p))  // NUMBER
9061
53.4k
        )
9062
1.71k
        {
9063
1.71k
            D(fprintf(stderr, "%*c+ signed_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' NUMBER"));
9064
1.71k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9065
1.71k
            if (_token == NULL) {
9066
0
                p->level--;
9067
0
                return NULL;
9068
0
            }
9069
1.71k
            int _end_lineno = _token->end_lineno;
9070
1.71k
            UNUSED(_end_lineno); // Only used by EXTRA macro
9071
1.71k
            int _end_col_offset = _token->end_col_offset;
9072
1.71k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9073
1.71k
            _res = _PyAST_UnaryOp ( USub , number , EXTRA );
9074
1.71k
            if (_res == NULL && PyErr_Occurred()) {
9075
0
                p->error_indicator = 1;
9076
0
                p->level--;
9077
0
                return NULL;
9078
0
            }
9079
1.71k
            goto done;
9080
1.71k
        }
9081
51.7k
        p->mark = _mark;
9082
51.7k
        D(fprintf(stderr, "%*c%s signed_number[%d-%d]: %s failed!\n", p->level, ' ',
9083
51.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' NUMBER"));
9084
51.7k
    }
9085
0
    _res = NULL;
9086
62.8k
  done:
9087
62.8k
    p->level--;
9088
62.8k
    return _res;
9089
51.7k
}
9090
9091
// signed_real_number: real_number | '-' real_number
9092
static expr_ty
9093
signed_real_number_rule(Parser *p)
9094
105k
{
9095
105k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9096
0
        _Pypegen_stack_overflow(p);
9097
0
    }
9098
105k
    if (p->error_indicator) {
9099
0
        p->level--;
9100
0
        return NULL;
9101
0
    }
9102
105k
    expr_ty _res = NULL;
9103
105k
    int _mark = p->mark;
9104
105k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9105
0
        p->error_indicator = 1;
9106
0
        p->level--;
9107
0
        return NULL;
9108
0
    }
9109
105k
    int _start_lineno = p->tokens[_mark]->lineno;
9110
105k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9111
105k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9112
105k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9113
105k
    { // real_number
9114
105k
        if (p->error_indicator) {
9115
0
            p->level--;
9116
0
            return NULL;
9117
0
        }
9118
105k
        D(fprintf(stderr, "%*c> signed_real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "real_number"));
9119
105k
        expr_ty real_number_var;
9120
105k
        if (
9121
105k
            (real_number_var = real_number_rule(p))  // real_number
9122
105k
        )
9123
1.27k
        {
9124
1.27k
            D(fprintf(stderr, "%*c+ signed_real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "real_number"));
9125
1.27k
            _res = real_number_var;
9126
1.27k
            goto done;
9127
1.27k
        }
9128
104k
        p->mark = _mark;
9129
104k
        D(fprintf(stderr, "%*c%s signed_real_number[%d-%d]: %s failed!\n", p->level, ' ',
9130
104k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "real_number"));
9131
104k
    }
9132
0
    { // '-' real_number
9133
104k
        if (p->error_indicator) {
9134
1
            p->level--;
9135
1
            return NULL;
9136
1
        }
9137
104k
        D(fprintf(stderr, "%*c> signed_real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' real_number"));
9138
104k
        Token * _literal;
9139
104k
        expr_ty real;
9140
104k
        if (
9141
104k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
9142
104k
            &&
9143
104k
            (real = real_number_rule(p))  // real_number
9144
104k
        )
9145
679
        {
9146
679
            D(fprintf(stderr, "%*c+ signed_real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' real_number"));
9147
679
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9148
679
            if (_token == NULL) {
9149
0
                p->level--;
9150
0
                return NULL;
9151
0
            }
9152
679
            int _end_lineno = _token->end_lineno;
9153
679
            UNUSED(_end_lineno); // Only used by EXTRA macro
9154
679
            int _end_col_offset = _token->end_col_offset;
9155
679
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9156
679
            _res = _PyAST_UnaryOp ( USub , real , EXTRA );
9157
679
            if (_res == NULL && PyErr_Occurred()) {
9158
0
                p->error_indicator = 1;
9159
0
                p->level--;
9160
0
                return NULL;
9161
0
            }
9162
679
            goto done;
9163
679
        }
9164
103k
        p->mark = _mark;
9165
103k
        D(fprintf(stderr, "%*c%s signed_real_number[%d-%d]: %s failed!\n", p->level, ' ',
9166
103k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' real_number"));
9167
103k
    }
9168
0
    _res = NULL;
9169
105k
  done:
9170
105k
    p->level--;
9171
105k
    return _res;
9172
103k
}
9173
9174
// real_number: NUMBER
9175
static expr_ty
9176
real_number_rule(Parser *p)
9177
106k
{
9178
106k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9179
0
        _Pypegen_stack_overflow(p);
9180
0
    }
9181
106k
    if (p->error_indicator) {
9182
0
        p->level--;
9183
0
        return NULL;
9184
0
    }
9185
106k
    expr_ty _res = NULL;
9186
106k
    int _mark = p->mark;
9187
106k
    { // NUMBER
9188
106k
        if (p->error_indicator) {
9189
0
            p->level--;
9190
0
            return NULL;
9191
0
        }
9192
106k
        D(fprintf(stderr, "%*c> real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9193
106k
        expr_ty real;
9194
106k
        if (
9195
106k
            (real = _PyPegen_number_token(p))  // NUMBER
9196
106k
        )
9197
1.95k
        {
9198
1.95k
            D(fprintf(stderr, "%*c+ real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9199
1.95k
            _res = _PyPegen_ensure_real ( p , real );
9200
1.95k
            if (_res == NULL && PyErr_Occurred()) {
9201
3
                p->error_indicator = 1;
9202
3
                p->level--;
9203
3
                return NULL;
9204
3
            }
9205
1.94k
            goto done;
9206
1.95k
        }
9207
104k
        p->mark = _mark;
9208
104k
        D(fprintf(stderr, "%*c%s real_number[%d-%d]: %s failed!\n", p->level, ' ',
9209
104k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
9210
104k
    }
9211
0
    _res = NULL;
9212
106k
  done:
9213
106k
    p->level--;
9214
106k
    return _res;
9215
104k
}
9216
9217
// imaginary_number: NUMBER
9218
static expr_ty
9219
imaginary_number_rule(Parser *p)
9220
1.19k
{
9221
1.19k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9222
0
        _Pypegen_stack_overflow(p);
9223
0
    }
9224
1.19k
    if (p->error_indicator) {
9225
0
        p->level--;
9226
0
        return NULL;
9227
0
    }
9228
1.19k
    expr_ty _res = NULL;
9229
1.19k
    int _mark = p->mark;
9230
1.19k
    { // NUMBER
9231
1.19k
        if (p->error_indicator) {
9232
0
            p->level--;
9233
0
            return NULL;
9234
0
        }
9235
1.19k
        D(fprintf(stderr, "%*c> imaginary_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9236
1.19k
        expr_ty imag;
9237
1.19k
        if (
9238
1.19k
            (imag = _PyPegen_number_token(p))  // NUMBER
9239
1.19k
        )
9240
1.15k
        {
9241
1.15k
            D(fprintf(stderr, "%*c+ imaginary_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9242
1.15k
            _res = _PyPegen_ensure_imaginary ( p , imag );
9243
1.15k
            if (_res == NULL && PyErr_Occurred()) {
9244
6
                p->error_indicator = 1;
9245
6
                p->level--;
9246
6
                return NULL;
9247
6
            }
9248
1.15k
            goto done;
9249
1.15k
        }
9250
32
        p->mark = _mark;
9251
32
        D(fprintf(stderr, "%*c%s imaginary_number[%d-%d]: %s failed!\n", p->level, ' ',
9252
32
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
9253
32
    }
9254
0
    _res = NULL;
9255
1.18k
  done:
9256
1.18k
    p->level--;
9257
1.18k
    return _res;
9258
32
}
9259
9260
// capture_pattern: pattern_capture_target
9261
static pattern_ty
9262
capture_pattern_rule(Parser *p)
9263
48.4k
{
9264
48.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9265
0
        _Pypegen_stack_overflow(p);
9266
0
    }
9267
48.4k
    if (p->error_indicator) {
9268
0
        p->level--;
9269
0
        return NULL;
9270
0
    }
9271
48.4k
    pattern_ty _res = NULL;
9272
48.4k
    int _mark = p->mark;
9273
48.4k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9274
0
        p->error_indicator = 1;
9275
0
        p->level--;
9276
0
        return NULL;
9277
0
    }
9278
48.4k
    int _start_lineno = p->tokens[_mark]->lineno;
9279
48.4k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9280
48.4k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9281
48.4k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9282
48.4k
    { // pattern_capture_target
9283
48.4k
        if (p->error_indicator) {
9284
0
            p->level--;
9285
0
            return NULL;
9286
0
        }
9287
48.4k
        D(fprintf(stderr, "%*c> capture_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern_capture_target"));
9288
48.4k
        expr_ty target;
9289
48.4k
        if (
9290
48.4k
            (target = pattern_capture_target_rule(p))  // pattern_capture_target
9291
48.4k
        )
9292
16.1k
        {
9293
16.1k
            D(fprintf(stderr, "%*c+ capture_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern_capture_target"));
9294
16.1k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9295
16.1k
            if (_token == NULL) {
9296
0
                p->level--;
9297
0
                return NULL;
9298
0
            }
9299
16.1k
            int _end_lineno = _token->end_lineno;
9300
16.1k
            UNUSED(_end_lineno); // Only used by EXTRA macro
9301
16.1k
            int _end_col_offset = _token->end_col_offset;
9302
16.1k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9303
16.1k
            _res = _PyAST_MatchAs ( NULL , target -> v . Name . id , EXTRA );
9304
16.1k
            if (_res == NULL && PyErr_Occurred()) {
9305
0
                p->error_indicator = 1;
9306
0
                p->level--;
9307
0
                return NULL;
9308
0
            }
9309
16.1k
            goto done;
9310
16.1k
        }
9311
32.2k
        p->mark = _mark;
9312
32.2k
        D(fprintf(stderr, "%*c%s capture_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9313
32.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern_capture_target"));
9314
32.2k
    }
9315
0
    _res = NULL;
9316
48.4k
  done:
9317
48.4k
    p->level--;
9318
48.4k
    return _res;
9319
32.2k
}
9320
9321
// pattern_capture_target: !"_" NAME !('.' | '(' | '=')
9322
static expr_ty
9323
pattern_capture_target_rule(Parser *p)
9324
52.1k
{
9325
52.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9326
0
        _Pypegen_stack_overflow(p);
9327
0
    }
9328
52.1k
    if (p->error_indicator) {
9329
0
        p->level--;
9330
0
        return NULL;
9331
0
    }
9332
52.1k
    expr_ty _res = NULL;
9333
52.1k
    int _mark = p->mark;
9334
52.1k
    { // !"_" NAME !('.' | '(' | '=')
9335
52.1k
        if (p->error_indicator) {
9336
0
            p->level--;
9337
0
            return NULL;
9338
0
        }
9339
52.1k
        D(fprintf(stderr, "%*c> pattern_capture_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
9340
52.1k
        expr_ty name;
9341
52.1k
        if (
9342
52.1k
            _PyPegen_lookahead_with_string(0, _PyPegen_expect_soft_keyword, p, "_")
9343
52.1k
            &&
9344
52.1k
            (name = _PyPegen_name_token(p))  // NAME
9345
52.1k
            &&
9346
52.1k
            _PyPegen_lookahead(0, _tmp_43_rule, p)
9347
52.1k
        )
9348
18.9k
        {
9349
18.9k
            D(fprintf(stderr, "%*c+ pattern_capture_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
9350
18.9k
            _res = _PyPegen_set_expr_context ( p , name , Store );
9351
18.9k
            if (_res == NULL && PyErr_Occurred()) {
9352
0
                p->error_indicator = 1;
9353
0
                p->level--;
9354
0
                return NULL;
9355
0
            }
9356
18.9k
            goto done;
9357
18.9k
        }
9358
33.2k
        p->mark = _mark;
9359
33.2k
        D(fprintf(stderr, "%*c%s pattern_capture_target[%d-%d]: %s failed!\n", p->level, ' ',
9360
33.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
9361
33.2k
    }
9362
0
    _res = NULL;
9363
52.1k
  done:
9364
52.1k
    p->level--;
9365
52.1k
    return _res;
9366
33.2k
}
9367
9368
// wildcard_pattern: "_"
9369
static pattern_ty
9370
wildcard_pattern_rule(Parser *p)
9371
33.1k
{
9372
33.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9373
0
        _Pypegen_stack_overflow(p);
9374
0
    }
9375
33.1k
    if (p->error_indicator) {
9376
0
        p->level--;
9377
0
        return NULL;
9378
0
    }
9379
33.1k
    pattern_ty _res = NULL;
9380
33.1k
    int _mark = p->mark;
9381
33.1k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9382
0
        p->error_indicator = 1;
9383
0
        p->level--;
9384
0
        return NULL;
9385
0
    }
9386
33.1k
    int _start_lineno = p->tokens[_mark]->lineno;
9387
33.1k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9388
33.1k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9389
33.1k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9390
33.1k
    { // "_"
9391
33.1k
        if (p->error_indicator) {
9392
0
            p->level--;
9393
0
            return NULL;
9394
0
        }
9395
33.1k
        D(fprintf(stderr, "%*c> wildcard_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"_\""));
9396
33.1k
        expr_ty _keyword;
9397
33.1k
        if (
9398
33.1k
            (_keyword = _PyPegen_expect_soft_keyword(p, "_"))  // soft_keyword='"_"'
9399
33.1k
        )
9400
5.05k
        {
9401
5.05k
            D(fprintf(stderr, "%*c+ wildcard_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"_\""));
9402
5.05k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9403
5.05k
            if (_token == NULL) {
9404
0
                p->level--;
9405
0
                return NULL;
9406
0
            }
9407
5.05k
            int _end_lineno = _token->end_lineno;
9408
5.05k
            UNUSED(_end_lineno); // Only used by EXTRA macro
9409
5.05k
            int _end_col_offset = _token->end_col_offset;
9410
5.05k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9411
5.05k
            _res = _PyAST_MatchAs ( NULL , NULL , EXTRA );
9412
5.05k
            if (_res == NULL && PyErr_Occurred()) {
9413
0
                p->error_indicator = 1;
9414
0
                p->level--;
9415
0
                return NULL;
9416
0
            }
9417
5.05k
            goto done;
9418
5.05k
        }
9419
28.1k
        p->mark = _mark;
9420
28.1k
        D(fprintf(stderr, "%*c%s wildcard_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9421
28.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"_\""));
9422
28.1k
    }
9423
0
    _res = NULL;
9424
33.1k
  done:
9425
33.1k
    p->level--;
9426
33.1k
    return _res;
9427
28.1k
}
9428
9429
// value_pattern: attr !('.' | '(' | '=')
9430
static pattern_ty
9431
value_pattern_rule(Parser *p)
9432
28.1k
{
9433
28.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9434
0
        _Pypegen_stack_overflow(p);
9435
0
    }
9436
28.1k
    if (p->error_indicator) {
9437
0
        p->level--;
9438
0
        return NULL;
9439
0
    }
9440
28.1k
    pattern_ty _res = NULL;
9441
28.1k
    int _mark = p->mark;
9442
28.1k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9443
0
        p->error_indicator = 1;
9444
0
        p->level--;
9445
0
        return NULL;
9446
0
    }
9447
28.1k
    int _start_lineno = p->tokens[_mark]->lineno;
9448
28.1k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9449
28.1k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9450
28.1k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9451
28.1k
    { // attr !('.' | '(' | '=')
9452
28.1k
        if (p->error_indicator) {
9453
0
            p->level--;
9454
0
            return NULL;
9455
0
        }
9456
28.1k
        D(fprintf(stderr, "%*c> value_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr !('.' | '(' | '=')"));
9457
28.1k
        expr_ty attr;
9458
28.1k
        if (
9459
28.1k
            (attr = attr_rule(p))  // attr
9460
28.1k
            &&
9461
28.1k
            _PyPegen_lookahead(0, _tmp_43_rule, p)
9462
28.1k
        )
9463
308
        {
9464
308
            D(fprintf(stderr, "%*c+ value_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr !('.' | '(' | '=')"));
9465
308
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9466
308
            if (_token == NULL) {
9467
0
                p->level--;
9468
0
                return NULL;
9469
0
            }
9470
308
            int _end_lineno = _token->end_lineno;
9471
308
            UNUSED(_end_lineno); // Only used by EXTRA macro
9472
308
            int _end_col_offset = _token->end_col_offset;
9473
308
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9474
308
            _res = _PyAST_MatchValue ( attr , EXTRA );
9475
308
            if (_res == NULL && PyErr_Occurred()) {
9476
0
                p->error_indicator = 1;
9477
0
                p->level--;
9478
0
                return NULL;
9479
0
            }
9480
308
            goto done;
9481
308
        }
9482
27.8k
        p->mark = _mark;
9483
27.8k
        D(fprintf(stderr, "%*c%s value_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9484
27.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr !('.' | '(' | '=')"));
9485
27.8k
    }
9486
0
    _res = NULL;
9487
28.1k
  done:
9488
28.1k
    p->level--;
9489
28.1k
    return _res;
9490
27.8k
}
9491
9492
// Left-recursive
9493
// attr: name_or_attr '.' NAME
9494
static expr_ty attr_raw(Parser *);
9495
static expr_ty
9496
attr_rule(Parser *p)
9497
143k
{
9498
143k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9499
0
        _Pypegen_stack_overflow(p);
9500
0
    }
9501
143k
    expr_ty _res = NULL;
9502
143k
    if (_PyPegen_is_memoized(p, attr_type, &_res)) {
9503
114k
        p->level--;
9504
114k
        return _res;
9505
114k
    }
9506
28.7k
    int _mark = p->mark;
9507
28.7k
    int _resmark = p->mark;
9508
29.6k
    while (1) {
9509
29.6k
        int tmpvar_1 = _PyPegen_update_memo(p, _mark, attr_type, _res);
9510
29.6k
        if (tmpvar_1) {
9511
0
            p->level--;
9512
0
            return _res;
9513
0
        }
9514
29.6k
        p->mark = _mark;
9515
29.6k
        void *_raw = attr_raw(p);
9516
29.6k
        if (p->error_indicator) {
9517
9
            p->level--;
9518
9
            return NULL;
9519
9
        }
9520
29.6k
        if (_raw == NULL || p->mark <= _resmark)
9521
28.6k
            break;
9522
909
        _resmark = p->mark;
9523
909
        _res = _raw;
9524
909
    }
9525
28.6k
    p->mark = _resmark;
9526
28.6k
    p->level--;
9527
28.6k
    return _res;
9528
28.7k
}
9529
static expr_ty
9530
attr_raw(Parser *p)
9531
29.6k
{
9532
29.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9533
0
        _Pypegen_stack_overflow(p);
9534
0
    }
9535
29.6k
    if (p->error_indicator) {
9536
0
        p->level--;
9537
0
        return NULL;
9538
0
    }
9539
29.6k
    expr_ty _res = NULL;
9540
29.6k
    int _mark = p->mark;
9541
29.6k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9542
0
        p->error_indicator = 1;
9543
0
        p->level--;
9544
0
        return NULL;
9545
0
    }
9546
29.6k
    int _start_lineno = p->tokens[_mark]->lineno;
9547
29.6k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9548
29.6k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9549
29.6k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9550
29.6k
    { // name_or_attr '.' NAME
9551
29.6k
        if (p->error_indicator) {
9552
0
            p->level--;
9553
0
            return NULL;
9554
0
        }
9555
29.6k
        D(fprintf(stderr, "%*c> attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '.' NAME"));
9556
29.6k
        Token * _literal;
9557
29.6k
        expr_ty attr;
9558
29.6k
        expr_ty value;
9559
29.6k
        if (
9560
29.6k
            (value = name_or_attr_rule(p))  // name_or_attr
9561
29.6k
            &&
9562
29.6k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
9563
29.6k
            &&
9564
29.6k
            (attr = _PyPegen_name_token(p))  // NAME
9565
29.6k
        )
9566
909
        {
9567
909
            D(fprintf(stderr, "%*c+ attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '.' NAME"));
9568
909
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9569
909
            if (_token == NULL) {
9570
0
                p->level--;
9571
0
                return NULL;
9572
0
            }
9573
909
            int _end_lineno = _token->end_lineno;
9574
909
            UNUSED(_end_lineno); // Only used by EXTRA macro
9575
909
            int _end_col_offset = _token->end_col_offset;
9576
909
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9577
909
            _res = _PyAST_Attribute ( value , attr -> v . Name . id , Load , EXTRA );
9578
909
            if (_res == NULL && PyErr_Occurred()) {
9579
0
                p->error_indicator = 1;
9580
0
                p->level--;
9581
0
                return NULL;
9582
0
            }
9583
909
            goto done;
9584
909
        }
9585
28.7k
        p->mark = _mark;
9586
28.7k
        D(fprintf(stderr, "%*c%s attr[%d-%d]: %s failed!\n", p->level, ' ',
9587
28.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '.' NAME"));
9588
28.7k
    }
9589
0
    _res = NULL;
9590
29.6k
  done:
9591
29.6k
    p->level--;
9592
29.6k
    return _res;
9593
28.7k
}
9594
9595
// Left-recursive
9596
// name_or_attr: attr | NAME
9597
static expr_ty
9598
name_or_attr_rule(Parser *p)
9599
114k
{
9600
114k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9601
0
        _Pypegen_stack_overflow(p);
9602
0
    }
9603
114k
    if (p->error_indicator) {
9604
0
        p->level--;
9605
0
        return NULL;
9606
0
    }
9607
114k
    expr_ty _res = NULL;
9608
114k
    int _mark = p->mark;
9609
114k
    { // attr
9610
114k
        if (p->error_indicator) {
9611
0
            p->level--;
9612
0
            return NULL;
9613
0
        }
9614
114k
        D(fprintf(stderr, "%*c> name_or_attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr"));
9615
114k
        expr_ty attr_var;
9616
114k
        if (
9617
114k
            (attr_var = attr_rule(p))  // attr
9618
114k
        )
9619
2.47k
        {
9620
2.47k
            D(fprintf(stderr, "%*c+ name_or_attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr"));
9621
2.47k
            _res = attr_var;
9622
2.47k
            goto done;
9623
2.47k
        }
9624
112k
        p->mark = _mark;
9625
112k
        D(fprintf(stderr, "%*c%s name_or_attr[%d-%d]: %s failed!\n", p->level, ' ',
9626
112k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr"));
9627
112k
    }
9628
0
    { // NAME
9629
112k
        if (p->error_indicator) {
9630
0
            p->level--;
9631
0
            return NULL;
9632
0
        }
9633
112k
        D(fprintf(stderr, "%*c> name_or_attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
9634
112k
        expr_ty name_var;
9635
112k
        if (
9636
112k
            (name_var = _PyPegen_name_token(p))  // NAME
9637
112k
        )
9638
61.1k
        {
9639
61.1k
            D(fprintf(stderr, "%*c+ name_or_attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
9640
61.1k
            _res = name_var;
9641
61.1k
            goto done;
9642
61.1k
        }
9643
50.8k
        p->mark = _mark;
9644
50.8k
        D(fprintf(stderr, "%*c%s name_or_attr[%d-%d]: %s failed!\n", p->level, ' ',
9645
50.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
9646
50.8k
    }
9647
0
    _res = NULL;
9648
114k
  done:
9649
114k
    p->level--;
9650
114k
    return _res;
9651
50.8k
}
9652
9653
// group_pattern: '(' pattern ')'
9654
static pattern_ty
9655
group_pattern_rule(Parser *p)
9656
27.7k
{
9657
27.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9658
0
        _Pypegen_stack_overflow(p);
9659
0
    }
9660
27.7k
    if (p->error_indicator) {
9661
0
        p->level--;
9662
0
        return NULL;
9663
0
    }
9664
27.7k
    pattern_ty _res = NULL;
9665
27.7k
    int _mark = p->mark;
9666
27.7k
    { // '(' pattern ')'
9667
27.7k
        if (p->error_indicator) {
9668
0
            p->level--;
9669
0
            return NULL;
9670
0
        }
9671
27.7k
        D(fprintf(stderr, "%*c> group_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' pattern ')'"));
9672
27.7k
        Token * _literal;
9673
27.7k
        Token * _literal_1;
9674
27.7k
        pattern_ty pattern;
9675
27.7k
        if (
9676
27.7k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
9677
27.7k
            &&
9678
27.7k
            (pattern = pattern_rule(p))  // pattern
9679
27.7k
            &&
9680
27.7k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
9681
27.7k
        )
9682
548
        {
9683
548
            D(fprintf(stderr, "%*c+ group_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' pattern ')'"));
9684
548
            _res = pattern;
9685
548
            if (_res == NULL && PyErr_Occurred()) {
9686
0
                p->error_indicator = 1;
9687
0
                p->level--;
9688
0
                return NULL;
9689
0
            }
9690
548
            goto done;
9691
548
        }
9692
27.2k
        p->mark = _mark;
9693
27.2k
        D(fprintf(stderr, "%*c%s group_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9694
27.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' pattern ')'"));
9695
27.2k
    }
9696
0
    _res = NULL;
9697
27.7k
  done:
9698
27.7k
    p->level--;
9699
27.7k
    return _res;
9700
27.2k
}
9701
9702
// sequence_pattern: '[' maybe_sequence_pattern? ']' | '(' open_sequence_pattern? ')'
9703
static pattern_ty
9704
sequence_pattern_rule(Parser *p)
9705
26.7k
{
9706
26.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9707
0
        _Pypegen_stack_overflow(p);
9708
0
    }
9709
26.7k
    if (p->error_indicator) {
9710
0
        p->level--;
9711
0
        return NULL;
9712
0
    }
9713
26.7k
    pattern_ty _res = NULL;
9714
26.7k
    int _mark = p->mark;
9715
26.7k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9716
0
        p->error_indicator = 1;
9717
0
        p->level--;
9718
0
        return NULL;
9719
0
    }
9720
26.7k
    int _start_lineno = p->tokens[_mark]->lineno;
9721
26.7k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9722
26.7k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9723
26.7k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9724
26.7k
    { // '[' maybe_sequence_pattern? ']'
9725
26.7k
        if (p->error_indicator) {
9726
0
            p->level--;
9727
0
            return NULL;
9728
0
        }
9729
26.7k
        D(fprintf(stderr, "%*c> sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
9730
26.7k
        Token * _literal;
9731
26.7k
        Token * _literal_1;
9732
26.7k
        void *patterns;
9733
26.7k
        if (
9734
26.7k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
9735
26.7k
            &&
9736
26.7k
            (patterns = maybe_sequence_pattern_rule(p), !p->error_indicator)  // maybe_sequence_pattern?
9737
26.7k
            &&
9738
26.7k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
9739
26.7k
        )
9740
229
        {
9741
229
            D(fprintf(stderr, "%*c+ sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
9742
229
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9743
229
            if (_token == NULL) {
9744
0
                p->level--;
9745
0
                return NULL;
9746
0
            }
9747
229
            int _end_lineno = _token->end_lineno;
9748
229
            UNUSED(_end_lineno); // Only used by EXTRA macro
9749
229
            int _end_col_offset = _token->end_col_offset;
9750
229
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9751
229
            _res = _PyAST_MatchSequence ( patterns , EXTRA );
9752
229
            if (_res == NULL && PyErr_Occurred()) {
9753
0
                p->error_indicator = 1;
9754
0
                p->level--;
9755
0
                return NULL;
9756
0
            }
9757
229
            goto done;
9758
229
        }
9759
26.5k
        p->mark = _mark;
9760
26.5k
        D(fprintf(stderr, "%*c%s sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9761
26.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
9762
26.5k
    }
9763
0
    { // '(' open_sequence_pattern? ')'
9764
26.5k
        if (p->error_indicator) {
9765
547
            p->level--;
9766
547
            return NULL;
9767
547
        }
9768
25.9k
        D(fprintf(stderr, "%*c> sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' open_sequence_pattern? ')'"));
9769
25.9k
        Token * _literal;
9770
25.9k
        Token * _literal_1;
9771
25.9k
        void *patterns;
9772
25.9k
        if (
9773
25.9k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
9774
25.9k
            &&
9775
25.9k
            (patterns = open_sequence_pattern_rule(p), !p->error_indicator)  // open_sequence_pattern?
9776
25.9k
            &&
9777
25.9k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
9778
25.9k
        )
9779
2.00k
        {
9780
2.00k
            D(fprintf(stderr, "%*c+ sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' open_sequence_pattern? ')'"));
9781
2.00k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9782
2.00k
            if (_token == NULL) {
9783
0
                p->level--;
9784
0
                return NULL;
9785
0
            }
9786
2.00k
            int _end_lineno = _token->end_lineno;
9787
2.00k
            UNUSED(_end_lineno); // Only used by EXTRA macro
9788
2.00k
            int _end_col_offset = _token->end_col_offset;
9789
2.00k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9790
2.00k
            _res = _PyAST_MatchSequence ( patterns , EXTRA );
9791
2.00k
            if (_res == NULL && PyErr_Occurred()) {
9792
0
                p->error_indicator = 1;
9793
0
                p->level--;
9794
0
                return NULL;
9795
0
            }
9796
2.00k
            goto done;
9797
2.00k
        }
9798
23.9k
        p->mark = _mark;
9799
23.9k
        D(fprintf(stderr, "%*c%s sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9800
23.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' open_sequence_pattern? ')'"));
9801
23.9k
    }
9802
0
    _res = NULL;
9803
26.2k
  done:
9804
26.2k
    p->level--;
9805
26.2k
    return _res;
9806
23.9k
}
9807
9808
// open_sequence_pattern: maybe_star_pattern ',' maybe_sequence_pattern?
9809
static asdl_seq*
9810
open_sequence_pattern_rule(Parser *p)
9811
14.6k
{
9812
14.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9813
0
        _Pypegen_stack_overflow(p);
9814
0
    }
9815
14.6k
    if (p->error_indicator) {
9816
0
        p->level--;
9817
0
        return NULL;
9818
0
    }
9819
14.6k
    asdl_seq* _res = NULL;
9820
14.6k
    int _mark = p->mark;
9821
14.6k
    { // maybe_star_pattern ',' maybe_sequence_pattern?
9822
14.6k
        if (p->error_indicator) {
9823
0
            p->level--;
9824
0
            return NULL;
9825
0
        }
9826
14.6k
        D(fprintf(stderr, "%*c> open_sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
9827
14.6k
        Token * _literal;
9828
14.6k
        pattern_ty pattern;
9829
14.6k
        void *patterns;
9830
14.6k
        if (
9831
14.6k
            (pattern = maybe_star_pattern_rule(p))  // maybe_star_pattern
9832
14.6k
            &&
9833
14.6k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
9834
14.6k
            &&
9835
14.6k
            (patterns = maybe_sequence_pattern_rule(p), !p->error_indicator)  // maybe_sequence_pattern?
9836
14.6k
        )
9837
3.31k
        {
9838
3.31k
            D(fprintf(stderr, "%*c+ open_sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
9839
3.31k
            _res = _PyPegen_seq_insert_in_front ( p , pattern , patterns );
9840
3.31k
            if (_res == NULL && PyErr_Occurred()) {
9841
0
                p->error_indicator = 1;
9842
0
                p->level--;
9843
0
                return NULL;
9844
0
            }
9845
3.31k
            goto done;
9846
3.31k
        }
9847
11.3k
        p->mark = _mark;
9848
11.3k
        D(fprintf(stderr, "%*c%s open_sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9849
11.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
9850
11.3k
    }
9851
0
    _res = NULL;
9852
14.6k
  done:
9853
14.6k
    p->level--;
9854
14.6k
    return _res;
9855
11.3k
}
9856
9857
// maybe_sequence_pattern: ','.maybe_star_pattern+ ','?
9858
static asdl_seq*
9859
maybe_sequence_pattern_rule(Parser *p)
9860
6.23k
{
9861
6.23k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9862
0
        _Pypegen_stack_overflow(p);
9863
0
    }
9864
6.23k
    if (p->error_indicator) {
9865
0
        p->level--;
9866
0
        return NULL;
9867
0
    }
9868
6.23k
    asdl_seq* _res = NULL;
9869
6.23k
    int _mark = p->mark;
9870
6.23k
    { // ','.maybe_star_pattern+ ','?
9871
6.23k
        if (p->error_indicator) {
9872
0
            p->level--;
9873
0
            return NULL;
9874
0
        }
9875
6.23k
        D(fprintf(stderr, "%*c> maybe_sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.maybe_star_pattern+ ','?"));
9876
6.23k
        void *_opt_var;
9877
6.23k
        UNUSED(_opt_var); // Silence compiler warnings
9878
6.23k
        asdl_seq * patterns;
9879
6.23k
        if (
9880
6.23k
            (patterns = _gather_45_rule(p))  // ','.maybe_star_pattern+
9881
6.23k
            &&
9882
6.23k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
9883
6.23k
        )
9884
2.96k
        {
9885
2.96k
            D(fprintf(stderr, "%*c+ maybe_sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.maybe_star_pattern+ ','?"));
9886
2.96k
            _res = patterns;
9887
2.96k
            if (_res == NULL && PyErr_Occurred()) {
9888
0
                p->error_indicator = 1;
9889
0
                p->level--;
9890
0
                return NULL;
9891
0
            }
9892
2.96k
            goto done;
9893
2.96k
        }
9894
3.26k
        p->mark = _mark;
9895
3.26k
        D(fprintf(stderr, "%*c%s maybe_sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9896
3.26k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.maybe_star_pattern+ ','?"));
9897
3.26k
    }
9898
0
    _res = NULL;
9899
6.23k
  done:
9900
6.23k
    p->level--;
9901
6.23k
    return _res;
9902
3.26k
}
9903
9904
// maybe_star_pattern: star_pattern | pattern
9905
static pattern_ty
9906
maybe_star_pattern_rule(Parser *p)
9907
33.0k
{
9908
33.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9909
0
        _Pypegen_stack_overflow(p);
9910
0
    }
9911
33.0k
    if (p->error_indicator) {
9912
0
        p->level--;
9913
0
        return NULL;
9914
0
    }
9915
33.0k
    pattern_ty _res = NULL;
9916
33.0k
    int _mark = p->mark;
9917
33.0k
    { // star_pattern
9918
33.0k
        if (p->error_indicator) {
9919
0
            p->level--;
9920
0
            return NULL;
9921
0
        }
9922
33.0k
        D(fprintf(stderr, "%*c> maybe_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_pattern"));
9923
33.0k
        pattern_ty star_pattern_var;
9924
33.0k
        if (
9925
33.0k
            (star_pattern_var = star_pattern_rule(p))  // star_pattern
9926
33.0k
        )
9927
3.20k
        {
9928
3.20k
            D(fprintf(stderr, "%*c+ maybe_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_pattern"));
9929
3.20k
            _res = star_pattern_var;
9930
3.20k
            goto done;
9931
3.20k
        }
9932
29.8k
        p->mark = _mark;
9933
29.8k
        D(fprintf(stderr, "%*c%s maybe_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9934
29.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_pattern"));
9935
29.8k
    }
9936
0
    { // pattern
9937
29.8k
        if (p->error_indicator) {
9938
29
            p->level--;
9939
29
            return NULL;
9940
29
        }
9941
29.8k
        D(fprintf(stderr, "%*c> maybe_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern"));
9942
29.8k
        pattern_ty pattern_var;
9943
29.8k
        if (
9944
29.8k
            (pattern_var = pattern_rule(p))  // pattern
9945
29.8k
        )
9946
20.4k
        {
9947
20.4k
            D(fprintf(stderr, "%*c+ maybe_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern"));
9948
20.4k
            _res = pattern_var;
9949
20.4k
            goto done;
9950
20.4k
        }
9951
9.40k
        p->mark = _mark;
9952
9.40k
        D(fprintf(stderr, "%*c%s maybe_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9953
9.40k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern"));
9954
9.40k
    }
9955
0
    _res = NULL;
9956
33.0k
  done:
9957
33.0k
    p->level--;
9958
33.0k
    return _res;
9959
9.40k
}
9960
9961
// star_pattern: '*' pattern_capture_target | '*' wildcard_pattern
9962
static pattern_ty
9963
star_pattern_rule(Parser *p)
9964
33.0k
{
9965
33.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9966
0
        _Pypegen_stack_overflow(p);
9967
0
    }
9968
33.0k
    if (p->error_indicator) {
9969
0
        p->level--;
9970
0
        return NULL;
9971
0
    }
9972
33.0k
    pattern_ty _res = NULL;
9973
33.0k
    if (_PyPegen_is_memoized(p, star_pattern_type, &_res)) {
9974
7.33k
        p->level--;
9975
7.33k
        return _res;
9976
7.33k
    }
9977
25.7k
    int _mark = p->mark;
9978
25.7k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9979
0
        p->error_indicator = 1;
9980
0
        p->level--;
9981
0
        return NULL;
9982
0
    }
9983
25.7k
    int _start_lineno = p->tokens[_mark]->lineno;
9984
25.7k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9985
25.7k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9986
25.7k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9987
25.7k
    { // '*' pattern_capture_target
9988
25.7k
        if (p->error_indicator) {
9989
0
            p->level--;
9990
0
            return NULL;
9991
0
        }
9992
25.7k
        D(fprintf(stderr, "%*c> star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' pattern_capture_target"));
9993
25.7k
        Token * _literal;
9994
25.7k
        expr_ty target;
9995
25.7k
        if (
9996
25.7k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
9997
25.7k
            &&
9998
25.7k
            (target = pattern_capture_target_rule(p))  // pattern_capture_target
9999
25.7k
        )
10000
1.08k
        {
10001
1.08k
            D(fprintf(stderr, "%*c+ star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' pattern_capture_target"));
10002
1.08k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10003
1.08k
            if (_token == NULL) {
10004
0
                p->level--;
10005
0
                return NULL;
10006
0
            }
10007
1.08k
            int _end_lineno = _token->end_lineno;
10008
1.08k
            UNUSED(_end_lineno); // Only used by EXTRA macro
10009
1.08k
            int _end_col_offset = _token->end_col_offset;
10010
1.08k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10011
1.08k
            _res = _PyAST_MatchStar ( target -> v . Name . id , EXTRA );
10012
1.08k
            if (_res == NULL && PyErr_Occurred()) {
10013
0
                p->error_indicator = 1;
10014
0
                p->level--;
10015
0
                return NULL;
10016
0
            }
10017
1.08k
            goto done;
10018
1.08k
        }
10019
24.6k
        p->mark = _mark;
10020
24.6k
        D(fprintf(stderr, "%*c%s star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10021
24.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' pattern_capture_target"));
10022
24.6k
    }
10023
0
    { // '*' wildcard_pattern
10024
24.6k
        if (p->error_indicator) {
10025
3
            p->level--;
10026
3
            return NULL;
10027
3
        }
10028
24.6k
        D(fprintf(stderr, "%*c> star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' wildcard_pattern"));
10029
24.6k
        Token * _literal;
10030
24.6k
        pattern_ty wildcard_pattern_var;
10031
24.6k
        if (
10032
24.6k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
10033
24.6k
            &&
10034
24.6k
            (wildcard_pattern_var = wildcard_pattern_rule(p))  // wildcard_pattern
10035
24.6k
        )
10036
867
        {
10037
867
            D(fprintf(stderr, "%*c+ star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' wildcard_pattern"));
10038
867
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10039
867
            if (_token == NULL) {
10040
0
                p->level--;
10041
0
                return NULL;
10042
0
            }
10043
867
            int _end_lineno = _token->end_lineno;
10044
867
            UNUSED(_end_lineno); // Only used by EXTRA macro
10045
867
            int _end_col_offset = _token->end_col_offset;
10046
867
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10047
867
            _res = _PyAST_MatchStar ( NULL , EXTRA );
10048
867
            if (_res == NULL && PyErr_Occurred()) {
10049
0
                p->error_indicator = 1;
10050
0
                p->level--;
10051
0
                return NULL;
10052
0
            }
10053
867
            goto done;
10054
867
        }
10055
23.7k
        p->mark = _mark;
10056
23.7k
        D(fprintf(stderr, "%*c%s star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10057
23.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' wildcard_pattern"));
10058
23.7k
    }
10059
0
    _res = NULL;
10060
25.7k
  done:
10061
25.7k
    _PyPegen_insert_memo(p, _mark, star_pattern_type, _res);
10062
25.7k
    p->level--;
10063
25.7k
    return _res;
10064
23.7k
}
10065
10066
// mapping_pattern:
10067
//     | '{' '}'
10068
//     | '{' double_star_pattern ','? '}'
10069
//     | '{' items_pattern ',' double_star_pattern ','? '}'
10070
//     | '{' items_pattern ','? '}'
10071
static pattern_ty
10072
mapping_pattern_rule(Parser *p)
10073
23.7k
{
10074
23.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10075
0
        _Pypegen_stack_overflow(p);
10076
0
    }
10077
23.7k
    if (p->error_indicator) {
10078
0
        p->level--;
10079
0
        return NULL;
10080
0
    }
10081
23.7k
    pattern_ty _res = NULL;
10082
23.7k
    int _mark = p->mark;
10083
23.7k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10084
0
        p->error_indicator = 1;
10085
0
        p->level--;
10086
0
        return NULL;
10087
0
    }
10088
23.7k
    int _start_lineno = p->tokens[_mark]->lineno;
10089
23.7k
    UNUSED(_start_lineno); // Only used by EXTRA macro
10090
23.7k
    int _start_col_offset = p->tokens[_mark]->col_offset;
10091
23.7k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
10092
23.7k
    { // '{' '}'
10093
23.7k
        if (p->error_indicator) {
10094
0
            p->level--;
10095
0
            return NULL;
10096
0
        }
10097
23.7k
        D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
10098
23.7k
        Token * _literal;
10099
23.7k
        Token * _literal_1;
10100
23.7k
        if (
10101
23.7k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
10102
23.7k
            &&
10103
23.7k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
10104
23.7k
        )
10105
823
        {
10106
823
            D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
10107
823
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10108
823
            if (_token == NULL) {
10109
0
                p->level--;
10110
0
                return NULL;
10111
0
            }
10112
823
            int _end_lineno = _token->end_lineno;
10113
823
            UNUSED(_end_lineno); // Only used by EXTRA macro
10114
823
            int _end_col_offset = _token->end_col_offset;
10115
823
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10116
823
            _res = _PyAST_MatchMapping ( NULL , NULL , NULL , EXTRA );
10117
823
            if (_res == NULL && PyErr_Occurred()) {
10118
0
                p->error_indicator = 1;
10119
0
                p->level--;
10120
0
                return NULL;
10121
0
            }
10122
823
            goto done;
10123
823
        }
10124
22.9k
        p->mark = _mark;
10125
22.9k
        D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10126
22.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '}'"));
10127
22.9k
    }
10128
0
    { // '{' double_star_pattern ','? '}'
10129
22.9k
        if (p->error_indicator) {
10130
1
            p->level--;
10131
1
            return NULL;
10132
1
        }
10133
22.9k
        D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' double_star_pattern ','? '}'"));
10134
22.9k
        Token * _literal;
10135
22.9k
        Token * _literal_1;
10136
22.9k
        void *_opt_var;
10137
22.9k
        UNUSED(_opt_var); // Silence compiler warnings
10138
22.9k
        expr_ty rest;
10139
22.9k
        if (
10140
22.9k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
10141
22.9k
            &&
10142
22.9k
            (rest = double_star_pattern_rule(p))  // double_star_pattern
10143
22.9k
            &&
10144
22.9k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10145
22.9k
            &&
10146
22.9k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
10147
22.9k
        )
10148
704
        {
10149
704
            D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' double_star_pattern ','? '}'"));
10150
704
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10151
704
            if (_token == NULL) {
10152
0
                p->level--;
10153
0
                return NULL;
10154
0
            }
10155
704
            int _end_lineno = _token->end_lineno;
10156
704
            UNUSED(_end_lineno); // Only used by EXTRA macro
10157
704
            int _end_col_offset = _token->end_col_offset;
10158
704
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10159
704
            _res = _PyAST_MatchMapping ( NULL , NULL , rest -> v . Name . id , EXTRA );
10160
704
            if (_res == NULL && PyErr_Occurred()) {
10161
0
                p->error_indicator = 1;
10162
0
                p->level--;
10163
0
                return NULL;
10164
0
            }
10165
704
            goto done;
10166
704
        }
10167
22.2k
        p->mark = _mark;
10168
22.2k
        D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10169
22.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' double_star_pattern ','? '}'"));
10170
22.2k
    }
10171
0
    { // '{' items_pattern ',' double_star_pattern ','? '}'
10172
22.2k
        if (p->error_indicator) {
10173
3
            p->level--;
10174
3
            return NULL;
10175
3
        }
10176
22.2k
        D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
10177
22.2k
        Token * _literal;
10178
22.2k
        Token * _literal_1;
10179
22.2k
        Token * _literal_2;
10180
22.2k
        void *_opt_var;
10181
22.2k
        UNUSED(_opt_var); // Silence compiler warnings
10182
22.2k
        asdl_seq* items;
10183
22.2k
        expr_ty rest;
10184
22.2k
        if (
10185
22.2k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
10186
22.2k
            &&
10187
22.2k
            (items = items_pattern_rule(p))  // items_pattern
10188
22.2k
            &&
10189
22.2k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
10190
22.2k
            &&
10191
22.2k
            (rest = double_star_pattern_rule(p))  // double_star_pattern
10192
22.2k
            &&
10193
22.2k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10194
22.2k
            &&
10195
22.2k
            (_literal_2 = _PyPegen_expect_token(p, 26))  // token='}'
10196
22.2k
        )
10197
394
        {
10198
394
            D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
10199
394
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10200
394
            if (_token == NULL) {
10201
0
                p->level--;
10202
0
                return NULL;
10203
0
            }
10204
394
            int _end_lineno = _token->end_lineno;
10205
394
            UNUSED(_end_lineno); // Only used by EXTRA macro
10206
394
            int _end_col_offset = _token->end_col_offset;
10207
394
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10208
394
            _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 );
10209
394
            if (_res == NULL && PyErr_Occurred()) {
10210
0
                p->error_indicator = 1;
10211
0
                p->level--;
10212
0
                return NULL;
10213
0
            }
10214
394
            goto done;
10215
394
        }
10216
21.8k
        p->mark = _mark;
10217
21.8k
        D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10218
21.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
10219
21.8k
    }
10220
0
    { // '{' items_pattern ','? '}'
10221
21.8k
        if (p->error_indicator) {
10222
491
            p->level--;
10223
491
            return NULL;
10224
491
        }
10225
21.3k
        D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ','? '}'"));
10226
21.3k
        Token * _literal;
10227
21.3k
        Token * _literal_1;
10228
21.3k
        void *_opt_var;
10229
21.3k
        UNUSED(_opt_var); // Silence compiler warnings
10230
21.3k
        asdl_seq* items;
10231
21.3k
        if (
10232
21.3k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
10233
21.3k
            &&
10234
21.3k
            (items = items_pattern_rule(p))  // items_pattern
10235
21.3k
            &&
10236
21.3k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10237
21.3k
            &&
10238
21.3k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
10239
21.3k
        )
10240
779
        {
10241
779
            D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ','? '}'"));
10242
779
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10243
779
            if (_token == NULL) {
10244
0
                p->level--;
10245
0
                return NULL;
10246
0
            }
10247
779
            int _end_lineno = _token->end_lineno;
10248
779
            UNUSED(_end_lineno); // Only used by EXTRA macro
10249
779
            int _end_col_offset = _token->end_col_offset;
10250
779
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10251
779
            _res = _PyAST_MatchMapping ( CHECK ( asdl_expr_seq* , _PyPegen_get_pattern_keys ( p , items ) ) , CHECK ( asdl_pattern_seq* , _PyPegen_get_patterns ( p , items ) ) , NULL , EXTRA );
10252
779
            if (_res == NULL && PyErr_Occurred()) {
10253
0
                p->error_indicator = 1;
10254
0
                p->level--;
10255
0
                return NULL;
10256
0
            }
10257
779
            goto done;
10258
779
        }
10259
20.5k
        p->mark = _mark;
10260
20.5k
        D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10261
20.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' items_pattern ','? '}'"));
10262
20.5k
    }
10263
0
    _res = NULL;
10264
23.2k
  done:
10265
23.2k
    p->level--;
10266
23.2k
    return _res;
10267
20.5k
}
10268
10269
// items_pattern: ','.key_value_pattern+
10270
static asdl_seq*
10271
items_pattern_rule(Parser *p)
10272
4.35k
{
10273
4.35k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10274
0
        _Pypegen_stack_overflow(p);
10275
0
    }
10276
4.35k
    if (p->error_indicator) {
10277
0
        p->level--;
10278
0
        return NULL;
10279
0
    }
10280
4.35k
    asdl_seq* _res = NULL;
10281
4.35k
    int _mark = p->mark;
10282
4.35k
    { // ','.key_value_pattern+
10283
4.35k
        if (p->error_indicator) {
10284
0
            p->level--;
10285
0
            return NULL;
10286
0
        }
10287
4.35k
        D(fprintf(stderr, "%*c> items_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.key_value_pattern+"));
10288
4.35k
        asdl_seq * _gather_47_var;
10289
4.35k
        if (
10290
4.35k
            (_gather_47_var = _gather_47_rule(p))  // ','.key_value_pattern+
10291
4.35k
        )
10292
2.86k
        {
10293
2.86k
            D(fprintf(stderr, "%*c+ items_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.key_value_pattern+"));
10294
2.86k
            _res = _gather_47_var;
10295
2.86k
            goto done;
10296
2.86k
        }
10297
1.49k
        p->mark = _mark;
10298
1.49k
        D(fprintf(stderr, "%*c%s items_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10299
1.49k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.key_value_pattern+"));
10300
1.49k
    }
10301
0
    _res = NULL;
10302
4.35k
  done:
10303
4.35k
    p->level--;
10304
4.35k
    return _res;
10305
1.49k
}
10306
10307
// key_value_pattern: (literal_expr | attr) ':' pattern
10308
static KeyPatternPair*
10309
key_value_pattern_rule(Parser *p)
10310
8.39k
{
10311
8.39k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10312
0
        _Pypegen_stack_overflow(p);
10313
0
    }
10314
8.39k
    if (p->error_indicator) {
10315
0
        p->level--;
10316
0
        return NULL;
10317
0
    }
10318
8.39k
    KeyPatternPair* _res = NULL;
10319
8.39k
    int _mark = p->mark;
10320
8.39k
    { // (literal_expr | attr) ':' pattern
10321
8.39k
        if (p->error_indicator) {
10322
0
            p->level--;
10323
0
            return NULL;
10324
0
        }
10325
8.39k
        D(fprintf(stderr, "%*c> key_value_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(literal_expr | attr) ':' pattern"));
10326
8.39k
        Token * _literal;
10327
8.39k
        void *key;
10328
8.39k
        pattern_ty pattern;
10329
8.39k
        if (
10330
8.39k
            (key = _tmp_48_rule(p))  // literal_expr | attr
10331
8.39k
            &&
10332
8.39k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
10333
8.39k
            &&
10334
8.39k
            (pattern = pattern_rule(p))  // pattern
10335
8.39k
        )
10336
5.43k
        {
10337
5.43k
            D(fprintf(stderr, "%*c+ key_value_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(literal_expr | attr) ':' pattern"));
10338
5.43k
            _res = _PyPegen_key_pattern_pair ( p , key , pattern );
10339
5.43k
            if (_res == NULL && PyErr_Occurred()) {
10340
0
                p->error_indicator = 1;
10341
0
                p->level--;
10342
0
                return NULL;
10343
0
            }
10344
5.43k
            goto done;
10345
5.43k
        }
10346
2.95k
        p->mark = _mark;
10347
2.95k
        D(fprintf(stderr, "%*c%s key_value_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10348
2.95k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(literal_expr | attr) ':' pattern"));
10349
2.95k
    }
10350
0
    _res = NULL;
10351
8.39k
  done:
10352
8.39k
    p->level--;
10353
8.39k
    return _res;
10354
2.95k
}
10355
10356
// double_star_pattern: '**' pattern_capture_target
10357
static expr_ty
10358
double_star_pattern_rule(Parser *p)
10359
4.40k
{
10360
4.40k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10361
0
        _Pypegen_stack_overflow(p);
10362
0
    }
10363
4.40k
    if (p->error_indicator) {
10364
303
        p->level--;
10365
303
        return NULL;
10366
303
    }
10367
4.10k
    expr_ty _res = NULL;
10368
4.10k
    int _mark = p->mark;
10369
4.10k
    { // '**' pattern_capture_target
10370
4.10k
        if (p->error_indicator) {
10371
0
            p->level--;
10372
0
            return NULL;
10373
0
        }
10374
4.10k
        D(fprintf(stderr, "%*c> double_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' pattern_capture_target"));
10375
4.10k
        Token * _literal;
10376
4.10k
        expr_ty target;
10377
4.10k
        if (
10378
4.10k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
10379
4.10k
            &&
10380
4.10k
            (target = pattern_capture_target_rule(p))  // pattern_capture_target
10381
4.10k
        )
10382
1.10k
        {
10383
1.10k
            D(fprintf(stderr, "%*c+ double_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' pattern_capture_target"));
10384
1.10k
            _res = target;
10385
1.10k
            if (_res == NULL && PyErr_Occurred()) {
10386
0
                p->error_indicator = 1;
10387
0
                p->level--;
10388
0
                return NULL;
10389
0
            }
10390
1.10k
            goto done;
10391
1.10k
        }
10392
3.00k
        p->mark = _mark;
10393
3.00k
        D(fprintf(stderr, "%*c%s double_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10394
3.00k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' pattern_capture_target"));
10395
3.00k
    }
10396
0
    _res = NULL;
10397
4.10k
  done:
10398
4.10k
    p->level--;
10399
4.10k
    return _res;
10400
3.00k
}
10401
10402
// class_pattern:
10403
//     | name_or_attr '(' ')'
10404
//     | name_or_attr '(' positional_patterns ','? ')'
10405
//     | name_or_attr '(' keyword_patterns ','? ')'
10406
//     | name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'
10407
//     | invalid_class_pattern
10408
static pattern_ty
10409
class_pattern_rule(Parser *p)
10410
20.5k
{
10411
20.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10412
0
        _Pypegen_stack_overflow(p);
10413
0
    }
10414
20.5k
    if (p->error_indicator) {
10415
0
        p->level--;
10416
0
        return NULL;
10417
0
    }
10418
20.5k
    pattern_ty _res = NULL;
10419
20.5k
    int _mark = p->mark;
10420
20.5k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10421
0
        p->error_indicator = 1;
10422
0
        p->level--;
10423
0
        return NULL;
10424
0
    }
10425
20.5k
    int _start_lineno = p->tokens[_mark]->lineno;
10426
20.5k
    UNUSED(_start_lineno); // Only used by EXTRA macro
10427
20.5k
    int _start_col_offset = p->tokens[_mark]->col_offset;
10428
20.5k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
10429
20.5k
    { // name_or_attr '(' ')'
10430
20.5k
        if (p->error_indicator) {
10431
0
            p->level--;
10432
0
            return NULL;
10433
0
        }
10434
20.5k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' ')'"));
10435
20.5k
        Token * _literal;
10436
20.5k
        Token * _literal_1;
10437
20.5k
        expr_ty cls;
10438
20.5k
        if (
10439
20.5k
            (cls = name_or_attr_rule(p))  // name_or_attr
10440
20.5k
            &&
10441
20.5k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
10442
20.5k
            &&
10443
20.5k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
10444
20.5k
        )
10445
726
        {
10446
726
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' ')'"));
10447
726
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10448
726
            if (_token == NULL) {
10449
0
                p->level--;
10450
0
                return NULL;
10451
0
            }
10452
726
            int _end_lineno = _token->end_lineno;
10453
726
            UNUSED(_end_lineno); // Only used by EXTRA macro
10454
726
            int _end_col_offset = _token->end_col_offset;
10455
726
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10456
726
            _res = _PyAST_MatchClass ( cls , NULL , NULL , NULL , EXTRA );
10457
726
            if (_res == NULL && PyErr_Occurred()) {
10458
0
                p->error_indicator = 1;
10459
0
                p->level--;
10460
0
                return NULL;
10461
0
            }
10462
726
            goto done;
10463
726
        }
10464
19.8k
        p->mark = _mark;
10465
19.8k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10466
19.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' ')'"));
10467
19.8k
    }
10468
0
    { // name_or_attr '(' positional_patterns ','? ')'
10469
19.8k
        if (p->error_indicator) {
10470
20
            p->level--;
10471
20
            return NULL;
10472
20
        }
10473
19.8k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
10474
19.8k
        Token * _literal;
10475
19.8k
        Token * _literal_1;
10476
19.8k
        void *_opt_var;
10477
19.8k
        UNUSED(_opt_var); // Silence compiler warnings
10478
19.8k
        expr_ty cls;
10479
19.8k
        asdl_pattern_seq* patterns;
10480
19.8k
        if (
10481
19.8k
            (cls = name_or_attr_rule(p))  // name_or_attr
10482
19.8k
            &&
10483
19.8k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
10484
19.8k
            &&
10485
19.8k
            (patterns = positional_patterns_rule(p))  // positional_patterns
10486
19.8k
            &&
10487
19.8k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10488
19.8k
            &&
10489
19.8k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
10490
19.8k
        )
10491
816
        {
10492
816
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
10493
816
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10494
816
            if (_token == NULL) {
10495
0
                p->level--;
10496
0
                return NULL;
10497
0
            }
10498
816
            int _end_lineno = _token->end_lineno;
10499
816
            UNUSED(_end_lineno); // Only used by EXTRA macro
10500
816
            int _end_col_offset = _token->end_col_offset;
10501
816
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10502
816
            _res = _PyAST_MatchClass ( cls , patterns , NULL , NULL , EXTRA );
10503
816
            if (_res == NULL && PyErr_Occurred()) {
10504
0
                p->error_indicator = 1;
10505
0
                p->level--;
10506
0
                return NULL;
10507
0
            }
10508
816
            goto done;
10509
816
        }
10510
18.9k
        p->mark = _mark;
10511
18.9k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10512
18.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
10513
18.9k
    }
10514
0
    { // name_or_attr '(' keyword_patterns ','? ')'
10515
18.9k
        if (p->error_indicator) {
10516
761
            p->level--;
10517
761
            return NULL;
10518
761
        }
10519
18.2k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
10520
18.2k
        Token * _literal;
10521
18.2k
        Token * _literal_1;
10522
18.2k
        void *_opt_var;
10523
18.2k
        UNUSED(_opt_var); // Silence compiler warnings
10524
18.2k
        expr_ty cls;
10525
18.2k
        asdl_seq* keywords;
10526
18.2k
        if (
10527
18.2k
            (cls = name_or_attr_rule(p))  // name_or_attr
10528
18.2k
            &&
10529
18.2k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
10530
18.2k
            &&
10531
18.2k
            (keywords = keyword_patterns_rule(p))  // keyword_patterns
10532
18.2k
            &&
10533
18.2k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10534
18.2k
            &&
10535
18.2k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
10536
18.2k
        )
10537
425
        {
10538
425
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
10539
425
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10540
425
            if (_token == NULL) {
10541
0
                p->level--;
10542
0
                return NULL;
10543
0
            }
10544
425
            int _end_lineno = _token->end_lineno;
10545
425
            UNUSED(_end_lineno); // Only used by EXTRA macro
10546
425
            int _end_col_offset = _token->end_col_offset;
10547
425
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10548
425
            _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 );
10549
425
            if (_res == NULL && PyErr_Occurred()) {
10550
0
                p->error_indicator = 1;
10551
0
                p->level--;
10552
0
                return NULL;
10553
0
            }
10554
425
            goto done;
10555
425
        }
10556
17.8k
        p->mark = _mark;
10557
17.8k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10558
17.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
10559
17.8k
    }
10560
0
    { // name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'
10561
17.8k
        if (p->error_indicator) {
10562
295
            p->level--;
10563
295
            return NULL;
10564
295
        }
10565
17.5k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
10566
17.5k
        Token * _literal;
10567
17.5k
        Token * _literal_1;
10568
17.5k
        Token * _literal_2;
10569
17.5k
        void *_opt_var;
10570
17.5k
        UNUSED(_opt_var); // Silence compiler warnings
10571
17.5k
        expr_ty cls;
10572
17.5k
        asdl_seq* keywords;
10573
17.5k
        asdl_pattern_seq* patterns;
10574
17.5k
        if (
10575
17.5k
            (cls = name_or_attr_rule(p))  // name_or_attr
10576
17.5k
            &&
10577
17.5k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
10578
17.5k
            &&
10579
17.5k
            (patterns = positional_patterns_rule(p))  // positional_patterns
10580
17.5k
            &&
10581
17.5k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
10582
17.5k
            &&
10583
17.5k
            (keywords = keyword_patterns_rule(p))  // keyword_patterns
10584
17.5k
            &&
10585
17.5k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10586
17.5k
            &&
10587
17.5k
            (_literal_2 = _PyPegen_expect_token(p, 8))  // token=')'
10588
17.5k
        )
10589
302
        {
10590
302
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
10591
302
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10592
302
            if (_token == NULL) {
10593
0
                p->level--;
10594
0
                return NULL;
10595
0
            }
10596
302
            int _end_lineno = _token->end_lineno;
10597
302
            UNUSED(_end_lineno); // Only used by EXTRA macro
10598
302
            int _end_col_offset = _token->end_col_offset;
10599
302
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10600
302
            _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 );
10601
302
            if (_res == NULL && PyErr_Occurred()) {
10602
0
                p->error_indicator = 1;
10603
0
                p->level--;
10604
0
                return NULL;
10605
0
            }
10606
302
            goto done;
10607
302
        }
10608
17.2k
        p->mark = _mark;
10609
17.2k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10610
17.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
10611
17.2k
    }
10612
17.2k
    if (p->call_invalid_rules) { // invalid_class_pattern
10613
9.00k
        if (p->error_indicator) {
10614
195
            p->level--;
10615
195
            return NULL;
10616
195
        }
10617
8.80k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_class_pattern"));
10618
8.80k
        void *invalid_class_pattern_var;
10619
8.80k
        if (
10620
8.80k
            (invalid_class_pattern_var = invalid_class_pattern_rule(p))  // invalid_class_pattern
10621
8.80k
        )
10622
0
        {
10623
0
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_class_pattern"));
10624
0
            _res = invalid_class_pattern_var;
10625
0
            goto done;
10626
0
        }
10627
8.80k
        p->mark = _mark;
10628
8.80k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10629
8.80k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_class_pattern"));
10630
8.80k
    }
10631
17.0k
    _res = NULL;
10632
19.2k
  done:
10633
19.2k
    p->level--;
10634
19.2k
    return _res;
10635
17.0k
}
10636
10637
// positional_patterns: ','.pattern+
10638
static asdl_pattern_seq*
10639
positional_patterns_rule(Parser *p)
10640
19.7k
{
10641
19.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10642
0
        _Pypegen_stack_overflow(p);
10643
0
    }
10644
19.7k
    if (p->error_indicator) {
10645
0
        p->level--;
10646
0
        return NULL;
10647
0
    }
10648
19.7k
    asdl_pattern_seq* _res = NULL;
10649
19.7k
    int _mark = p->mark;
10650
19.7k
    { // ','.pattern+
10651
19.7k
        if (p->error_indicator) {
10652
0
            p->level--;
10653
0
            return NULL;
10654
0
        }
10655
19.7k
        D(fprintf(stderr, "%*c> positional_patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.pattern+"));
10656
19.7k
        asdl_pattern_seq* args;
10657
19.7k
        if (
10658
19.7k
            (args = (asdl_pattern_seq*)_gather_50_rule(p))  // ','.pattern+
10659
19.7k
        )
10660
11.1k
        {
10661
11.1k
            D(fprintf(stderr, "%*c+ positional_patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.pattern+"));
10662
11.1k
            _res = args;
10663
11.1k
            if (_res == NULL && PyErr_Occurred()) {
10664
0
                p->error_indicator = 1;
10665
0
                p->level--;
10666
0
                return NULL;
10667
0
            }
10668
11.1k
            goto done;
10669
11.1k
        }
10670
8.55k
        p->mark = _mark;
10671
8.55k
        D(fprintf(stderr, "%*c%s positional_patterns[%d-%d]: %s failed!\n", p->level, ' ',
10672
8.55k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.pattern+"));
10673
8.55k
    }
10674
0
    _res = NULL;
10675
19.7k
  done:
10676
19.7k
    p->level--;
10677
19.7k
    return _res;
10678
8.55k
}
10679
10680
// keyword_patterns: ','.keyword_pattern+
10681
static asdl_seq*
10682
keyword_patterns_rule(Parser *p)
10683
12.8k
{
10684
12.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10685
0
        _Pypegen_stack_overflow(p);
10686
0
    }
10687
12.8k
    if (p->error_indicator) {
10688
0
        p->level--;
10689
0
        return NULL;
10690
0
    }
10691
12.8k
    asdl_seq* _res = NULL;
10692
12.8k
    int _mark = p->mark;
10693
12.8k
    { // ','.keyword_pattern+
10694
12.8k
        if (p->error_indicator) {
10695
0
            p->level--;
10696
0
            return NULL;
10697
0
        }
10698
12.8k
        D(fprintf(stderr, "%*c> keyword_patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.keyword_pattern+"));
10699
12.8k
        asdl_seq * _gather_52_var;
10700
12.8k
        if (
10701
12.8k
            (_gather_52_var = _gather_52_rule(p))  // ','.keyword_pattern+
10702
12.8k
        )
10703
4.45k
        {
10704
4.45k
            D(fprintf(stderr, "%*c+ keyword_patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.keyword_pattern+"));
10705
4.45k
            _res = _gather_52_var;
10706
4.45k
            goto done;
10707
4.45k
        }
10708
8.43k
        p->mark = _mark;
10709
8.43k
        D(fprintf(stderr, "%*c%s keyword_patterns[%d-%d]: %s failed!\n", p->level, ' ',
10710
8.43k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.keyword_pattern+"));
10711
8.43k
    }
10712
0
    _res = NULL;
10713
12.8k
  done:
10714
12.8k
    p->level--;
10715
12.8k
    return _res;
10716
8.43k
}
10717
10718
// keyword_pattern: NAME '=' pattern
10719
static KeyPatternPair*
10720
keyword_pattern_rule(Parser *p)
10721
17.4k
{
10722
17.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10723
0
        _Pypegen_stack_overflow(p);
10724
0
    }
10725
17.4k
    if (p->error_indicator) {
10726
0
        p->level--;
10727
0
        return NULL;
10728
0
    }
10729
17.4k
    KeyPatternPair* _res = NULL;
10730
17.4k
    int _mark = p->mark;
10731
17.4k
    { // NAME '=' pattern
10732
17.4k
        if (p->error_indicator) {
10733
0
            p->level--;
10734
0
            return NULL;
10735
0
        }
10736
17.4k
        D(fprintf(stderr, "%*c> keyword_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' pattern"));
10737
17.4k
        Token * _literal;
10738
17.4k
        expr_ty arg;
10739
17.4k
        pattern_ty value;
10740
17.4k
        if (
10741
17.4k
            (arg = _PyPegen_name_token(p))  // NAME
10742
17.4k
            &&
10743
17.4k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
10744
17.4k
            &&
10745
17.4k
            (value = pattern_rule(p))  // pattern
10746
17.4k
        )
10747
6.15k
        {
10748
6.15k
            D(fprintf(stderr, "%*c+ keyword_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' pattern"));
10749
6.15k
            _res = _PyPegen_key_pattern_pair ( p , arg , value );
10750
6.15k
            if (_res == NULL && PyErr_Occurred()) {
10751
0
                p->error_indicator = 1;
10752
0
                p->level--;
10753
0
                return NULL;
10754
0
            }
10755
6.15k
            goto done;
10756
6.15k
        }
10757
11.3k
        p->mark = _mark;
10758
11.3k
        D(fprintf(stderr, "%*c%s keyword_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10759
11.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' pattern"));
10760
11.3k
    }
10761
0
    _res = NULL;
10762
17.4k
  done:
10763
17.4k
    p->level--;
10764
17.4k
    return _res;
10765
11.3k
}
10766
10767
// type_alias: "type" NAME type_params? '=' expression
10768
static stmt_ty
10769
type_alias_rule(Parser *p)
10770
628
{
10771
628
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10772
0
        _Pypegen_stack_overflow(p);
10773
0
    }
10774
628
    if (p->error_indicator) {
10775
0
        p->level--;
10776
0
        return NULL;
10777
0
    }
10778
628
    stmt_ty _res = NULL;
10779
628
    int _mark = p->mark;
10780
628
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10781
0
        p->error_indicator = 1;
10782
0
        p->level--;
10783
0
        return NULL;
10784
0
    }
10785
628
    int _start_lineno = p->tokens[_mark]->lineno;
10786
628
    UNUSED(_start_lineno); // Only used by EXTRA macro
10787
628
    int _start_col_offset = p->tokens[_mark]->col_offset;
10788
628
    UNUSED(_start_col_offset); // Only used by EXTRA macro
10789
628
    { // "type" NAME type_params? '=' expression
10790
628
        if (p->error_indicator) {
10791
0
            p->level--;
10792
0
            return NULL;
10793
0
        }
10794
628
        D(fprintf(stderr, "%*c> type_alias[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"type\" NAME type_params? '=' expression"));
10795
628
        expr_ty _keyword;
10796
628
        Token * _literal;
10797
628
        expr_ty b;
10798
628
        expr_ty n;
10799
628
        void *t;
10800
628
        if (
10801
628
            (_keyword = _PyPegen_expect_soft_keyword(p, "type"))  // soft_keyword='"type"'
10802
628
            &&
10803
628
            (n = _PyPegen_name_token(p))  // NAME
10804
628
            &&
10805
628
            (t = type_params_rule(p), !p->error_indicator)  // type_params?
10806
628
            &&
10807
628
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
10808
628
            &&
10809
628
            (b = expression_rule(p))  // expression
10810
628
        )
10811
410
        {
10812
410
            D(fprintf(stderr, "%*c+ type_alias[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"type\" NAME type_params? '=' expression"));
10813
410
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10814
410
            if (_token == NULL) {
10815
0
                p->level--;
10816
0
                return NULL;
10817
0
            }
10818
410
            int _end_lineno = _token->end_lineno;
10819
410
            UNUSED(_end_lineno); // Only used by EXTRA macro
10820
410
            int _end_col_offset = _token->end_col_offset;
10821
410
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10822
410
            _res = CHECK_VERSION ( stmt_ty , 12 , "Type statement is" , _PyAST_TypeAlias ( CHECK ( expr_ty , _PyPegen_set_expr_context ( p , n , Store ) ) , t , b , EXTRA ) );
10823
410
            if (_res == NULL && PyErr_Occurred()) {
10824
0
                p->error_indicator = 1;
10825
0
                p->level--;
10826
0
                return NULL;
10827
0
            }
10828
410
            goto done;
10829
410
        }
10830
218
        p->mark = _mark;
10831
218
        D(fprintf(stderr, "%*c%s type_alias[%d-%d]: %s failed!\n", p->level, ' ',
10832
218
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"type\" NAME type_params? '=' expression"));
10833
218
    }
10834
0
    _res = NULL;
10835
628
  done:
10836
628
    p->level--;
10837
628
    return _res;
10838
218
}
10839
10840
// type_params: invalid_type_params | '[' type_param_seq ']'
10841
static asdl_type_param_seq*
10842
type_params_rule(Parser *p)
10843
20.4k
{
10844
20.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10845
0
        _Pypegen_stack_overflow(p);
10846
0
    }
10847
20.4k
    if (p->error_indicator) {
10848
0
        p->level--;
10849
0
        return NULL;
10850
0
    }
10851
20.4k
    asdl_type_param_seq* _res = NULL;
10852
20.4k
    int _mark = p->mark;
10853
20.4k
    if (p->call_invalid_rules) { // invalid_type_params
10854
8.19k
        if (p->error_indicator) {
10855
0
            p->level--;
10856
0
            return NULL;
10857
0
        }
10858
8.19k
        D(fprintf(stderr, "%*c> type_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_type_params"));
10859
8.19k
        void *invalid_type_params_var;
10860
8.19k
        if (
10861
8.19k
            (invalid_type_params_var = invalid_type_params_rule(p))  // invalid_type_params
10862
8.19k
        )
10863
0
        {
10864
0
            D(fprintf(stderr, "%*c+ type_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_type_params"));
10865
0
            _res = invalid_type_params_var;
10866
0
            goto done;
10867
0
        }
10868
8.19k
        p->mark = _mark;
10869
8.19k
        D(fprintf(stderr, "%*c%s type_params[%d-%d]: %s failed!\n", p->level, ' ',
10870
8.19k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_type_params"));
10871
8.19k
    }
10872
20.4k
    { // '[' type_param_seq ']'
10873
20.4k
        if (p->error_indicator) {
10874
3
            p->level--;
10875
3
            return NULL;
10876
3
        }
10877
20.4k
        D(fprintf(stderr, "%*c> type_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' type_param_seq ']'"));
10878
20.4k
        Token * _literal;
10879
20.4k
        Token * _literal_1;
10880
20.4k
        asdl_type_param_seq* t;
10881
20.4k
        if (
10882
20.4k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
10883
20.4k
            &&
10884
20.4k
            (t = type_param_seq_rule(p))  // type_param_seq
10885
20.4k
            &&
10886
20.4k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
10887
20.4k
        )
10888
1.57k
        {
10889
1.57k
            D(fprintf(stderr, "%*c+ type_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' type_param_seq ']'"));
10890
1.57k
            _res = CHECK_VERSION ( asdl_type_param_seq* , 12 , "Type parameter lists are" , t );
10891
1.57k
            if (_res == NULL && PyErr_Occurred()) {
10892
0
                p->error_indicator = 1;
10893
0
                p->level--;
10894
0
                return NULL;
10895
0
            }
10896
1.57k
            goto done;
10897
1.57k
        }
10898
18.8k
        p->mark = _mark;
10899
18.8k
        D(fprintf(stderr, "%*c%s type_params[%d-%d]: %s failed!\n", p->level, ' ',
10900
18.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' type_param_seq ']'"));
10901
18.8k
    }
10902
0
    _res = NULL;
10903
20.4k
  done:
10904
20.4k
    p->level--;
10905
20.4k
    return _res;
10906
18.8k
}
10907
10908
// type_param_seq: ','.type_param+ ','?
10909
static asdl_type_param_seq*
10910
type_param_seq_rule(Parser *p)
10911
1.81k
{
10912
1.81k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10913
0
        _Pypegen_stack_overflow(p);
10914
0
    }
10915
1.81k
    if (p->error_indicator) {
10916
0
        p->level--;
10917
0
        return NULL;
10918
0
    }
10919
1.81k
    asdl_type_param_seq* _res = NULL;
10920
1.81k
    int _mark = p->mark;
10921
1.81k
    { // ','.type_param+ ','?
10922
1.81k
        if (p->error_indicator) {
10923
0
            p->level--;
10924
0
            return NULL;
10925
0
        }
10926
1.81k
        D(fprintf(stderr, "%*c> type_param_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.type_param+ ','?"));
10927
1.81k
        void *_opt_var;
10928
1.81k
        UNUSED(_opt_var); // Silence compiler warnings
10929
1.81k
        asdl_type_param_seq* a;
10930
1.81k
        if (
10931
1.81k
            (a = (asdl_type_param_seq*)_gather_54_rule(p))  // ','.type_param+
10932
1.81k
            &&
10933
1.81k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10934
1.81k
        )
10935
1.75k
        {
10936
1.75k
            D(fprintf(stderr, "%*c+ type_param_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.type_param+ ','?"));
10937
1.75k
            _res = a;
10938
1.75k
            if (_res == NULL && PyErr_Occurred()) {
10939
0
                p->error_indicator = 1;
10940
0
                p->level--;
10941
0
                return NULL;
10942
0
            }
10943
1.75k
            goto done;
10944
1.75k
        }
10945
51
        p->mark = _mark;
10946
51
        D(fprintf(stderr, "%*c%s type_param_seq[%d-%d]: %s failed!\n", p->level, ' ',
10947
51
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.type_param+ ','?"));
10948
51
    }
10949
0
    _res = NULL;
10950
1.81k
  done:
10951
1.81k
    p->level--;
10952
1.81k
    return _res;
10953
51
}
10954
10955
// type_param:
10956
//     | NAME type_param_bound? type_param_default?
10957
//     | invalid_type_param
10958
//     | '*' NAME type_param_starred_default?
10959
//     | '**' NAME type_param_default?
10960
static type_param_ty
10961
type_param_rule(Parser *p)
10962
12.0k
{
10963
12.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10964
0
        _Pypegen_stack_overflow(p);
10965
0
    }
10966
12.0k
    if (p->error_indicator) {
10967
0
        p->level--;
10968
0
        return NULL;
10969
0
    }
10970
12.0k
    type_param_ty _res = NULL;
10971
12.0k
    if (_PyPegen_is_memoized(p, type_param_type, &_res)) {
10972
3.02k
        p->level--;
10973
3.02k
        return _res;
10974
3.02k
    }
10975
9.06k
    int _mark = p->mark;
10976
9.06k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10977
0
        p->error_indicator = 1;
10978
0
        p->level--;
10979
0
        return NULL;
10980
0
    }
10981
9.06k
    int _start_lineno = p->tokens[_mark]->lineno;
10982
9.06k
    UNUSED(_start_lineno); // Only used by EXTRA macro
10983
9.06k
    int _start_col_offset = p->tokens[_mark]->col_offset;
10984
9.06k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
10985
9.06k
    { // NAME type_param_bound? type_param_default?
10986
9.06k
        if (p->error_indicator) {
10987
0
            p->level--;
10988
0
            return NULL;
10989
0
        }
10990
9.06k
        D(fprintf(stderr, "%*c> type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME type_param_bound? type_param_default?"));
10991
9.06k
        expr_ty a;
10992
9.06k
        void *b;
10993
9.06k
        void *c;
10994
9.06k
        if (
10995
9.06k
            (a = _PyPegen_name_token(p))  // NAME
10996
9.06k
            &&
10997
9.06k
            (b = type_param_bound_rule(p), !p->error_indicator)  // type_param_bound?
10998
9.06k
            &&
10999
9.06k
            (c = type_param_default_rule(p), !p->error_indicator)  // type_param_default?
11000
9.06k
        )
11001
5.48k
        {
11002
5.48k
            D(fprintf(stderr, "%*c+ type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME type_param_bound? type_param_default?"));
11003
5.48k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11004
5.48k
            if (_token == NULL) {
11005
0
                p->level--;
11006
0
                return NULL;
11007
0
            }
11008
5.48k
            int _end_lineno = _token->end_lineno;
11009
5.48k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11010
5.48k
            int _end_col_offset = _token->end_col_offset;
11011
5.48k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11012
5.48k
            _res = _PyAST_TypeVar ( a -> v . Name . id , b , c , EXTRA );
11013
5.48k
            if (_res == NULL && PyErr_Occurred()) {
11014
0
                p->error_indicator = 1;
11015
0
                p->level--;
11016
0
                return NULL;
11017
0
            }
11018
5.48k
            goto done;
11019
5.48k
        }
11020
3.58k
        p->mark = _mark;
11021
3.58k
        D(fprintf(stderr, "%*c%s type_param[%d-%d]: %s failed!\n", p->level, ' ',
11022
3.58k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME type_param_bound? type_param_default?"));
11023
3.58k
    }
11024
3.58k
    if (p->call_invalid_rules) { // invalid_type_param
11025
964
        if (p->error_indicator) {
11026
4
            p->level--;
11027
4
            return NULL;
11028
4
        }
11029
960
        D(fprintf(stderr, "%*c> type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_type_param"));
11030
960
        void *invalid_type_param_var;
11031
960
        if (
11032
960
            (invalid_type_param_var = invalid_type_param_rule(p))  // invalid_type_param
11033
960
        )
11034
0
        {
11035
0
            D(fprintf(stderr, "%*c+ type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_type_param"));
11036
0
            _res = invalid_type_param_var;
11037
0
            goto done;
11038
0
        }
11039
960
        p->mark = _mark;
11040
960
        D(fprintf(stderr, "%*c%s type_param[%d-%d]: %s failed!\n", p->level, ' ',
11041
960
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_type_param"));
11042
960
    }
11043
3.57k
    { // '*' NAME type_param_starred_default?
11044
3.57k
        if (p->error_indicator) {
11045
8
            p->level--;
11046
8
            return NULL;
11047
8
        }
11048
3.57k
        D(fprintf(stderr, "%*c> type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' NAME type_param_starred_default?"));
11049
3.57k
        Token * _literal;
11050
3.57k
        expr_ty a;
11051
3.57k
        void *b;
11052
3.57k
        if (
11053
3.57k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
11054
3.57k
            &&
11055
3.57k
            (a = _PyPegen_name_token(p))  // NAME
11056
3.57k
            &&
11057
3.57k
            (b = type_param_starred_default_rule(p), !p->error_indicator)  // type_param_starred_default?
11058
3.57k
        )
11059
1.76k
        {
11060
1.76k
            D(fprintf(stderr, "%*c+ type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' NAME type_param_starred_default?"));
11061
1.76k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11062
1.76k
            if (_token == NULL) {
11063
0
                p->level--;
11064
0
                return NULL;
11065
0
            }
11066
1.76k
            int _end_lineno = _token->end_lineno;
11067
1.76k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11068
1.76k
            int _end_col_offset = _token->end_col_offset;
11069
1.76k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11070
1.76k
            _res = _PyAST_TypeVarTuple ( a -> v . Name . id , b , EXTRA );
11071
1.76k
            if (_res == NULL && PyErr_Occurred()) {
11072
0
                p->error_indicator = 1;
11073
0
                p->level--;
11074
0
                return NULL;
11075
0
            }
11076
1.76k
            goto done;
11077
1.76k
        }
11078
1.81k
        p->mark = _mark;
11079
1.81k
        D(fprintf(stderr, "%*c%s type_param[%d-%d]: %s failed!\n", p->level, ' ',
11080
1.81k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' NAME type_param_starred_default?"));
11081
1.81k
    }
11082
0
    { // '**' NAME type_param_default?
11083
1.81k
        if (p->error_indicator) {
11084
6
            p->level--;
11085
6
            return NULL;
11086
6
        }
11087
1.80k
        D(fprintf(stderr, "%*c> type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' NAME type_param_default?"));
11088
1.80k
        Token * _literal;
11089
1.80k
        expr_ty a;
11090
1.80k
        void *b;
11091
1.80k
        if (
11092
1.80k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
11093
1.80k
            &&
11094
1.80k
            (a = _PyPegen_name_token(p))  // NAME
11095
1.80k
            &&
11096
1.80k
            (b = type_param_default_rule(p), !p->error_indicator)  // type_param_default?
11097
1.80k
        )
11098
1.02k
        {
11099
1.02k
            D(fprintf(stderr, "%*c+ type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' NAME type_param_default?"));
11100
1.02k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11101
1.02k
            if (_token == NULL) {
11102
0
                p->level--;
11103
0
                return NULL;
11104
0
            }
11105
1.02k
            int _end_lineno = _token->end_lineno;
11106
1.02k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11107
1.02k
            int _end_col_offset = _token->end_col_offset;
11108
1.02k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11109
1.02k
            _res = _PyAST_ParamSpec ( a -> v . Name . id , b , EXTRA );
11110
1.02k
            if (_res == NULL && PyErr_Occurred()) {
11111
0
                p->error_indicator = 1;
11112
0
                p->level--;
11113
0
                return NULL;
11114
0
            }
11115
1.02k
            goto done;
11116
1.02k
        }
11117
776
        p->mark = _mark;
11118
776
        D(fprintf(stderr, "%*c%s type_param[%d-%d]: %s failed!\n", p->level, ' ',
11119
776
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' NAME type_param_default?"));
11120
776
    }
11121
0
    _res = NULL;
11122
9.04k
  done:
11123
9.04k
    _PyPegen_insert_memo(p, _mark, type_param_type, _res);
11124
9.04k
    p->level--;
11125
9.04k
    return _res;
11126
776
}
11127
11128
// type_param_bound: ':' expression
11129
static expr_ty
11130
type_param_bound_rule(Parser *p)
11131
5.48k
{
11132
5.48k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11133
0
        _Pypegen_stack_overflow(p);
11134
0
    }
11135
5.48k
    if (p->error_indicator) {
11136
0
        p->level--;
11137
0
        return NULL;
11138
0
    }
11139
5.48k
    expr_ty _res = NULL;
11140
5.48k
    int _mark = p->mark;
11141
5.48k
    { // ':' expression
11142
5.48k
        if (p->error_indicator) {
11143
0
            p->level--;
11144
0
            return NULL;
11145
0
        }
11146
5.48k
        D(fprintf(stderr, "%*c> type_param_bound[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression"));
11147
5.48k
        Token * _literal;
11148
5.48k
        expr_ty e;
11149
5.48k
        if (
11150
5.48k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
11151
5.48k
            &&
11152
5.48k
            (e = expression_rule(p))  // expression
11153
5.48k
        )
11154
287
        {
11155
287
            D(fprintf(stderr, "%*c+ type_param_bound[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression"));
11156
287
            _res = e;
11157
287
            if (_res == NULL && PyErr_Occurred()) {
11158
0
                p->error_indicator = 1;
11159
0
                p->level--;
11160
0
                return NULL;
11161
0
            }
11162
287
            goto done;
11163
287
        }
11164
5.20k
        p->mark = _mark;
11165
5.20k
        D(fprintf(stderr, "%*c%s type_param_bound[%d-%d]: %s failed!\n", p->level, ' ',
11166
5.20k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression"));
11167
5.20k
    }
11168
0
    _res = NULL;
11169
5.48k
  done:
11170
5.48k
    p->level--;
11171
5.48k
    return _res;
11172
5.20k
}
11173
11174
// type_param_default: '=' expression
11175
static expr_ty
11176
type_param_default_rule(Parser *p)
11177
6.51k
{
11178
6.51k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11179
0
        _Pypegen_stack_overflow(p);
11180
0
    }
11181
6.51k
    if (p->error_indicator) {
11182
0
        p->level--;
11183
0
        return NULL;
11184
0
    }
11185
6.51k
    expr_ty _res = NULL;
11186
6.51k
    int _mark = p->mark;
11187
6.51k
    { // '=' expression
11188
6.51k
        if (p->error_indicator) {
11189
0
            p->level--;
11190
0
            return NULL;
11191
0
        }
11192
6.51k
        D(fprintf(stderr, "%*c> type_param_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' expression"));
11193
6.51k
        Token * _literal;
11194
6.51k
        expr_ty e;
11195
6.51k
        if (
11196
6.51k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
11197
6.51k
            &&
11198
6.51k
            (e = expression_rule(p))  // expression
11199
6.51k
        )
11200
1.22k
        {
11201
1.22k
            D(fprintf(stderr, "%*c+ type_param_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' expression"));
11202
1.22k
            _res = CHECK_VERSION ( expr_ty , 13 , "Type parameter defaults are" , e );
11203
1.22k
            if (_res == NULL && PyErr_Occurred()) {
11204
0
                p->error_indicator = 1;
11205
0
                p->level--;
11206
0
                return NULL;
11207
0
            }
11208
1.22k
            goto done;
11209
1.22k
        }
11210
5.29k
        p->mark = _mark;
11211
5.29k
        D(fprintf(stderr, "%*c%s type_param_default[%d-%d]: %s failed!\n", p->level, ' ',
11212
5.29k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' expression"));
11213
5.29k
    }
11214
0
    _res = NULL;
11215
6.51k
  done:
11216
6.51k
    p->level--;
11217
6.51k
    return _res;
11218
5.29k
}
11219
11220
// type_param_starred_default: '=' star_expression
11221
static expr_ty
11222
type_param_starred_default_rule(Parser *p)
11223
1.76k
{
11224
1.76k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11225
0
        _Pypegen_stack_overflow(p);
11226
0
    }
11227
1.76k
    if (p->error_indicator) {
11228
0
        p->level--;
11229
0
        return NULL;
11230
0
    }
11231
1.76k
    expr_ty _res = NULL;
11232
1.76k
    int _mark = p->mark;
11233
1.76k
    { // '=' star_expression
11234
1.76k
        if (p->error_indicator) {
11235
0
            p->level--;
11236
0
            return NULL;
11237
0
        }
11238
1.76k
        D(fprintf(stderr, "%*c> type_param_starred_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' star_expression"));
11239
1.76k
        Token * _literal;
11240
1.76k
        expr_ty e;
11241
1.76k
        if (
11242
1.76k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
11243
1.76k
            &&
11244
1.76k
            (e = star_expression_rule(p))  // star_expression
11245
1.76k
        )
11246
557
        {
11247
557
            D(fprintf(stderr, "%*c+ type_param_starred_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' star_expression"));
11248
557
            _res = CHECK_VERSION ( expr_ty , 13 , "Type parameter defaults are" , e );
11249
557
            if (_res == NULL && PyErr_Occurred()) {
11250
0
                p->error_indicator = 1;
11251
0
                p->level--;
11252
0
                return NULL;
11253
0
            }
11254
557
            goto done;
11255
557
        }
11256
1.20k
        p->mark = _mark;
11257
1.20k
        D(fprintf(stderr, "%*c%s type_param_starred_default[%d-%d]: %s failed!\n", p->level, ' ',
11258
1.20k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' star_expression"));
11259
1.20k
    }
11260
0
    _res = NULL;
11261
1.76k
  done:
11262
1.76k
    p->level--;
11263
1.76k
    return _res;
11264
1.20k
}
11265
11266
// expressions: expression ((',' expression))+ ','? | expression ',' | expression
11267
static expr_ty
11268
expressions_rule(Parser *p)
11269
11.7k
{
11270
11.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11271
0
        _Pypegen_stack_overflow(p);
11272
0
    }
11273
11.7k
    if (p->error_indicator) {
11274
0
        p->level--;
11275
0
        return NULL;
11276
0
    }
11277
11.7k
    expr_ty _res = NULL;
11278
11.7k
    int _mark = p->mark;
11279
11.7k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11280
11
        p->error_indicator = 1;
11281
11
        p->level--;
11282
11
        return NULL;
11283
11
    }
11284
11.7k
    int _start_lineno = p->tokens[_mark]->lineno;
11285
11.7k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11286
11.7k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11287
11.7k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11288
11.7k
    { // expression ((',' expression))+ ','?
11289
11.7k
        if (p->error_indicator) {
11290
0
            p->level--;
11291
0
            return NULL;
11292
0
        }
11293
11.7k
        D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ((',' expression))+ ','?"));
11294
11.7k
        void *_opt_var;
11295
11.7k
        UNUSED(_opt_var); // Silence compiler warnings
11296
11.7k
        expr_ty a;
11297
11.7k
        asdl_seq * b;
11298
11.7k
        if (
11299
11.7k
            (a = expression_rule(p))  // expression
11300
11.7k
            &&
11301
11.7k
            (b = _loop1_55_rule(p))  // ((',' expression))+
11302
11.7k
            &&
11303
11.7k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
11304
11.7k
        )
11305
1.30k
        {
11306
1.30k
            D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ((',' expression))+ ','?"));
11307
1.30k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11308
1.30k
            if (_token == NULL) {
11309
0
                p->level--;
11310
0
                return NULL;
11311
0
            }
11312
1.30k
            int _end_lineno = _token->end_lineno;
11313
1.30k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11314
1.30k
            int _end_col_offset = _token->end_col_offset;
11315
1.30k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11316
1.30k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
11317
1.30k
            if (_res == NULL && PyErr_Occurred()) {
11318
0
                p->error_indicator = 1;
11319
0
                p->level--;
11320
0
                return NULL;
11321
0
            }
11322
1.30k
            goto done;
11323
1.30k
        }
11324
10.3k
        p->mark = _mark;
11325
10.3k
        D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
11326
10.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ((',' expression))+ ','?"));
11327
10.3k
    }
11328
0
    { // expression ','
11329
10.3k
        if (p->error_indicator) {
11330
4
            p->level--;
11331
4
            return NULL;
11332
4
        }
11333
10.3k
        D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ','"));
11334
10.3k
        Token * _literal;
11335
10.3k
        expr_ty a;
11336
10.3k
        if (
11337
10.3k
            (a = expression_rule(p))  // expression
11338
10.3k
            &&
11339
10.3k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
11340
10.3k
        )
11341
1.65k
        {
11342
1.65k
            D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ','"));
11343
1.65k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11344
1.65k
            if (_token == NULL) {
11345
0
                p->level--;
11346
0
                return NULL;
11347
0
            }
11348
1.65k
            int _end_lineno = _token->end_lineno;
11349
1.65k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11350
1.65k
            int _end_col_offset = _token->end_col_offset;
11351
1.65k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11352
1.65k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
11353
1.65k
            if (_res == NULL && PyErr_Occurred()) {
11354
0
                p->error_indicator = 1;
11355
0
                p->level--;
11356
0
                return NULL;
11357
0
            }
11358
1.65k
            goto done;
11359
1.65k
        }
11360
8.73k
        p->mark = _mark;
11361
8.73k
        D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
11362
8.73k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ','"));
11363
8.73k
    }
11364
0
    { // expression
11365
8.73k
        if (p->error_indicator) {
11366
0
            p->level--;
11367
0
            return NULL;
11368
0
        }
11369
8.73k
        D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
11370
8.73k
        expr_ty expression_var;
11371
8.73k
        if (
11372
8.73k
            (expression_var = expression_rule(p))  // expression
11373
8.73k
        )
11374
943
        {
11375
943
            D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
11376
943
            _res = expression_var;
11377
943
            goto done;
11378
943
        }
11379
7.79k
        p->mark = _mark;
11380
7.79k
        D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
11381
7.79k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
11382
7.79k
    }
11383
0
    _res = NULL;
11384
11.6k
  done:
11385
11.6k
    p->level--;
11386
11.6k
    return _res;
11387
7.79k
}
11388
11389
// expression:
11390
//     | invalid_expression
11391
//     | invalid_legacy_expression
11392
//     | disjunction 'if' disjunction 'else' expression
11393
//     | disjunction
11394
//     | lambdef
11395
static expr_ty
11396
expression_rule(Parser *p)
11397
1.85M
{
11398
1.85M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11399
1
        _Pypegen_stack_overflow(p);
11400
1
    }
11401
1.85M
    if (p->error_indicator) {
11402
2
        p->level--;
11403
2
        return NULL;
11404
2
    }
11405
1.85M
    expr_ty _res = NULL;
11406
1.85M
    if (_PyPegen_is_memoized(p, expression_type, &_res)) {
11407
1.19M
        p->level--;
11408
1.19M
        return _res;
11409
1.19M
    }
11410
658k
    int _mark = p->mark;
11411
658k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11412
0
        p->error_indicator = 1;
11413
0
        p->level--;
11414
0
        return NULL;
11415
0
    }
11416
658k
    int _start_lineno = p->tokens[_mark]->lineno;
11417
658k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11418
658k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11419
658k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11420
658k
    if (p->call_invalid_rules) { // invalid_expression
11421
238k
        if (p->error_indicator) {
11422
0
            p->level--;
11423
0
            return NULL;
11424
0
        }
11425
238k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_expression"));
11426
238k
        void *invalid_expression_var;
11427
238k
        if (
11428
238k
            (invalid_expression_var = invalid_expression_rule(p))  // invalid_expression
11429
238k
        )
11430
0
        {
11431
0
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_expression"));
11432
0
            _res = invalid_expression_var;
11433
0
            goto done;
11434
0
        }
11435
238k
        p->mark = _mark;
11436
238k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11437
238k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_expression"));
11438
238k
    }
11439
658k
    if (p->call_invalid_rules) { // invalid_legacy_expression
11440
238k
        if (p->error_indicator) {
11441
30.8k
            p->level--;
11442
30.8k
            return NULL;
11443
30.8k
        }
11444
207k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_legacy_expression"));
11445
207k
        void *invalid_legacy_expression_var;
11446
207k
        if (
11447
207k
            (invalid_legacy_expression_var = invalid_legacy_expression_rule(p))  // invalid_legacy_expression
11448
207k
        )
11449
0
        {
11450
0
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_legacy_expression"));
11451
0
            _res = invalid_legacy_expression_var;
11452
0
            goto done;
11453
0
        }
11454
207k
        p->mark = _mark;
11455
207k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11456
207k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_legacy_expression"));
11457
207k
    }
11458
627k
    { // disjunction 'if' disjunction 'else' expression
11459
627k
        if (p->error_indicator) {
11460
1.50k
            p->level--;
11461
1.50k
            return NULL;
11462
1.50k
        }
11463
626k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
11464
626k
        Token * _keyword;
11465
626k
        Token * _keyword_1;
11466
626k
        expr_ty a;
11467
626k
        expr_ty b;
11468
626k
        expr_ty c;
11469
626k
        if (
11470
626k
            (a = disjunction_rule(p))  // disjunction
11471
626k
            &&
11472
626k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
11473
626k
            &&
11474
626k
            (b = disjunction_rule(p))  // disjunction
11475
626k
            &&
11476
626k
            (_keyword_1 = _PyPegen_expect_token(p, 691))  // token='else'
11477
626k
            &&
11478
626k
            (c = expression_rule(p))  // expression
11479
626k
        )
11480
1.09k
        {
11481
1.09k
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
11482
1.09k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11483
1.09k
            if (_token == NULL) {
11484
0
                p->level--;
11485
0
                return NULL;
11486
0
            }
11487
1.09k
            int _end_lineno = _token->end_lineno;
11488
1.09k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11489
1.09k
            int _end_col_offset = _token->end_col_offset;
11490
1.09k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11491
1.09k
            _res = _PyAST_IfExp ( b , a , c , EXTRA );
11492
1.09k
            if (_res == NULL && PyErr_Occurred()) {
11493
0
                p->error_indicator = 1;
11494
0
                p->level--;
11495
0
                return NULL;
11496
0
            }
11497
1.09k
            goto done;
11498
1.09k
        }
11499
625k
        p->mark = _mark;
11500
625k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11501
625k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
11502
625k
    }
11503
0
    { // disjunction
11504
625k
        if (p->error_indicator) {
11505
8.96k
            p->level--;
11506
8.96k
            return NULL;
11507
8.96k
        }
11508
616k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction"));
11509
616k
        expr_ty disjunction_var;
11510
616k
        if (
11511
616k
            (disjunction_var = disjunction_rule(p))  // disjunction
11512
616k
        )
11513
374k
        {
11514
374k
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction"));
11515
374k
            _res = disjunction_var;
11516
374k
            goto done;
11517
374k
        }
11518
241k
        p->mark = _mark;
11519
241k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11520
241k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction"));
11521
241k
    }
11522
0
    { // lambdef
11523
241k
        if (p->error_indicator) {
11524
0
            p->level--;
11525
0
            return NULL;
11526
0
        }
11527
241k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambdef"));
11528
241k
        expr_ty lambdef_var;
11529
241k
        if (
11530
241k
            (lambdef_var = lambdef_rule(p))  // lambdef
11531
241k
        )
11532
2.94k
        {
11533
2.94k
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambdef"));
11534
2.94k
            _res = lambdef_var;
11535
2.94k
            goto done;
11536
2.94k
        }
11537
238k
        p->mark = _mark;
11538
238k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11539
238k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambdef"));
11540
238k
    }
11541
0
    _res = NULL;
11542
617k
  done:
11543
617k
    _PyPegen_insert_memo(p, _mark, expression_type, _res);
11544
617k
    p->level--;
11545
617k
    return _res;
11546
238k
}
11547
11548
// yield_expr: 'yield' 'from' expression | 'yield' star_expressions?
11549
static expr_ty
11550
yield_expr_rule(Parser *p)
11551
129k
{
11552
129k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11553
1
        _Pypegen_stack_overflow(p);
11554
1
    }
11555
129k
    if (p->error_indicator) {
11556
1
        p->level--;
11557
1
        return NULL;
11558
1
    }
11559
129k
    expr_ty _res = NULL;
11560
129k
    int _mark = p->mark;
11561
129k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11562
59
        p->error_indicator = 1;
11563
59
        p->level--;
11564
59
        return NULL;
11565
59
    }
11566
128k
    int _start_lineno = p->tokens[_mark]->lineno;
11567
128k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11568
128k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11569
128k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11570
128k
    { // 'yield' 'from' expression
11571
128k
        if (p->error_indicator) {
11572
0
            p->level--;
11573
0
            return NULL;
11574
0
        }
11575
128k
        D(fprintf(stderr, "%*c> yield_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'yield' 'from' expression"));
11576
128k
        Token * _keyword;
11577
128k
        Token * _keyword_1;
11578
128k
        expr_ty a;
11579
128k
        if (
11580
128k
            (_keyword = _PyPegen_expect_token(p, 588))  // token='yield'
11581
128k
            &&
11582
128k
            (_keyword_1 = _PyPegen_expect_token(p, 638))  // token='from'
11583
128k
            &&
11584
128k
            (a = expression_rule(p))  // expression
11585
128k
        )
11586
290
        {
11587
290
            D(fprintf(stderr, "%*c+ yield_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'yield' 'from' expression"));
11588
290
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11589
290
            if (_token == NULL) {
11590
0
                p->level--;
11591
0
                return NULL;
11592
0
            }
11593
290
            int _end_lineno = _token->end_lineno;
11594
290
            UNUSED(_end_lineno); // Only used by EXTRA macro
11595
290
            int _end_col_offset = _token->end_col_offset;
11596
290
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11597
290
            _res = _PyAST_YieldFrom ( a , EXTRA );
11598
290
            if (_res == NULL && PyErr_Occurred()) {
11599
0
                p->error_indicator = 1;
11600
0
                p->level--;
11601
0
                return NULL;
11602
0
            }
11603
290
            goto done;
11604
290
        }
11605
128k
        p->mark = _mark;
11606
128k
        D(fprintf(stderr, "%*c%s yield_expr[%d-%d]: %s failed!\n", p->level, ' ',
11607
128k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'yield' 'from' expression"));
11608
128k
    }
11609
0
    { // 'yield' star_expressions?
11610
128k
        if (p->error_indicator) {
11611
269
            p->level--;
11612
269
            return NULL;
11613
269
        }
11614
128k
        D(fprintf(stderr, "%*c> yield_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'yield' star_expressions?"));
11615
128k
        Token * _keyword;
11616
128k
        void *a;
11617
128k
        if (
11618
128k
            (_keyword = _PyPegen_expect_token(p, 588))  // token='yield'
11619
128k
            &&
11620
128k
            (a = star_expressions_rule(p), !p->error_indicator)  // star_expressions?
11621
128k
        )
11622
2.61k
        {
11623
2.61k
            D(fprintf(stderr, "%*c+ yield_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'yield' star_expressions?"));
11624
2.61k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11625
2.61k
            if (_token == NULL) {
11626
0
                p->level--;
11627
0
                return NULL;
11628
0
            }
11629
2.61k
            int _end_lineno = _token->end_lineno;
11630
2.61k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11631
2.61k
            int _end_col_offset = _token->end_col_offset;
11632
2.61k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11633
2.61k
            _res = _PyAST_Yield ( a , EXTRA );
11634
2.61k
            if (_res == NULL && PyErr_Occurred()) {
11635
0
                p->error_indicator = 1;
11636
0
                p->level--;
11637
0
                return NULL;
11638
0
            }
11639
2.61k
            goto done;
11640
2.61k
        }
11641
125k
        p->mark = _mark;
11642
125k
        D(fprintf(stderr, "%*c%s yield_expr[%d-%d]: %s failed!\n", p->level, ' ',
11643
125k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'yield' star_expressions?"));
11644
125k
    }
11645
0
    _res = NULL;
11646
128k
  done:
11647
128k
    p->level--;
11648
128k
    return _res;
11649
125k
}
11650
11651
// star_expressions:
11652
//     | star_expression ((',' star_expression))+ ','?
11653
//     | star_expression ','
11654
//     | star_expression
11655
static expr_ty
11656
star_expressions_rule(Parser *p)
11657
376k
{
11658
376k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11659
0
        _Pypegen_stack_overflow(p);
11660
0
    }
11661
376k
    if (p->error_indicator) {
11662
0
        p->level--;
11663
0
        return NULL;
11664
0
    }
11665
376k
    expr_ty _res = NULL;
11666
376k
    int _mark = p->mark;
11667
376k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11668
5
        p->error_indicator = 1;
11669
5
        p->level--;
11670
5
        return NULL;
11671
5
    }
11672
376k
    int _start_lineno = p->tokens[_mark]->lineno;
11673
376k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11674
376k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11675
376k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11676
376k
    { // star_expression ((',' star_expression))+ ','?
11677
376k
        if (p->error_indicator) {
11678
0
            p->level--;
11679
0
            return NULL;
11680
0
        }
11681
376k
        D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
11682
376k
        void *_opt_var;
11683
376k
        UNUSED(_opt_var); // Silence compiler warnings
11684
376k
        expr_ty a;
11685
376k
        asdl_seq * b;
11686
376k
        if (
11687
376k
            (a = star_expression_rule(p))  // star_expression
11688
376k
            &&
11689
376k
            (b = _loop1_56_rule(p))  // ((',' star_expression))+
11690
376k
            &&
11691
376k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
11692
376k
        )
11693
6.06k
        {
11694
6.06k
            D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
11695
6.06k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11696
6.06k
            if (_token == NULL) {
11697
0
                p->level--;
11698
0
                return NULL;
11699
0
            }
11700
6.06k
            int _end_lineno = _token->end_lineno;
11701
6.06k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11702
6.06k
            int _end_col_offset = _token->end_col_offset;
11703
6.06k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11704
6.06k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
11705
6.06k
            if (_res == NULL && PyErr_Occurred()) {
11706
0
                p->error_indicator = 1;
11707
0
                p->level--;
11708
0
                return NULL;
11709
0
            }
11710
6.06k
            goto done;
11711
6.06k
        }
11712
369k
        p->mark = _mark;
11713
369k
        D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
11714
369k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
11715
369k
    }
11716
0
    { // star_expression ','
11717
369k
        if (p->error_indicator) {
11718
5.41k
            p->level--;
11719
5.41k
            return NULL;
11720
5.41k
        }
11721
364k
        D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression ','"));
11722
364k
        Token * _literal;
11723
364k
        expr_ty a;
11724
364k
        if (
11725
364k
            (a = star_expression_rule(p))  // star_expression
11726
364k
            &&
11727
364k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
11728
364k
        )
11729
14.1k
        {
11730
14.1k
            D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression ','"));
11731
14.1k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11732
14.1k
            if (_token == NULL) {
11733
0
                p->level--;
11734
0
                return NULL;
11735
0
            }
11736
14.1k
            int _end_lineno = _token->end_lineno;
11737
14.1k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11738
14.1k
            int _end_col_offset = _token->end_col_offset;
11739
14.1k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11740
14.1k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
11741
14.1k
            if (_res == NULL && PyErr_Occurred()) {
11742
0
                p->error_indicator = 1;
11743
0
                p->level--;
11744
0
                return NULL;
11745
0
            }
11746
14.1k
            goto done;
11747
14.1k
        }
11748
350k
        p->mark = _mark;
11749
350k
        D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
11750
350k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression ','"));
11751
350k
    }
11752
0
    { // star_expression
11753
350k
        if (p->error_indicator) {
11754
0
            p->level--;
11755
0
            return NULL;
11756
0
        }
11757
350k
        D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression"));
11758
350k
        expr_ty star_expression_var;
11759
350k
        if (
11760
350k
            (star_expression_var = star_expression_rule(p))  // star_expression
11761
350k
        )
11762
198k
        {
11763
198k
            D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression"));
11764
198k
            _res = star_expression_var;
11765
198k
            goto done;
11766
198k
        }
11767
152k
        p->mark = _mark;
11768
152k
        D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
11769
152k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression"));
11770
152k
    }
11771
0
    _res = NULL;
11772
370k
  done:
11773
370k
    p->level--;
11774
370k
    return _res;
11775
152k
}
11776
11777
// star_expression: '*' bitwise_or | expression
11778
static expr_ty
11779
star_expression_rule(Parser *p)
11780
1.12M
{
11781
1.12M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11782
1
        _Pypegen_stack_overflow(p);
11783
1
    }
11784
1.12M
    if (p->error_indicator) {
11785
1
        p->level--;
11786
1
        return NULL;
11787
1
    }
11788
1.12M
    expr_ty _res = NULL;
11789
1.12M
    if (_PyPegen_is_memoized(p, star_expression_type, &_res)) {
11790
810k
        p->level--;
11791
810k
        return _res;
11792
810k
    }
11793
316k
    int _mark = p->mark;
11794
316k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11795
0
        p->error_indicator = 1;
11796
0
        p->level--;
11797
0
        return NULL;
11798
0
    }
11799
316k
    int _start_lineno = p->tokens[_mark]->lineno;
11800
316k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11801
316k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11802
316k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11803
316k
    { // '*' bitwise_or
11804
316k
        if (p->error_indicator) {
11805
0
            p->level--;
11806
0
            return NULL;
11807
0
        }
11808
316k
        D(fprintf(stderr, "%*c> star_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
11809
316k
        Token * _literal;
11810
316k
        expr_ty a;
11811
316k
        if (
11812
316k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
11813
316k
            &&
11814
316k
            (a = bitwise_or_rule(p))  // bitwise_or
11815
316k
        )
11816
2.88k
        {
11817
2.88k
            D(fprintf(stderr, "%*c+ star_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
11818
2.88k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11819
2.88k
            if (_token == NULL) {
11820
0
                p->level--;
11821
0
                return NULL;
11822
0
            }
11823
2.88k
            int _end_lineno = _token->end_lineno;
11824
2.88k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11825
2.88k
            int _end_col_offset = _token->end_col_offset;
11826
2.88k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11827
2.88k
            _res = _PyAST_Starred ( a , Load , EXTRA );
11828
2.88k
            if (_res == NULL && PyErr_Occurred()) {
11829
0
                p->error_indicator = 1;
11830
0
                p->level--;
11831
0
                return NULL;
11832
0
            }
11833
2.88k
            goto done;
11834
2.88k
        }
11835
313k
        p->mark = _mark;
11836
313k
        D(fprintf(stderr, "%*c%s star_expression[%d-%d]: %s failed!\n", p->level, ' ',
11837
313k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' bitwise_or"));
11838
313k
    }
11839
0
    { // expression
11840
313k
        if (p->error_indicator) {
11841
330
            p->level--;
11842
330
            return NULL;
11843
330
        }
11844
313k
        D(fprintf(stderr, "%*c> star_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
11845
313k
        expr_ty expression_var;
11846
313k
        if (
11847
313k
            (expression_var = expression_rule(p))  // expression
11848
313k
        )
11849
166k
        {
11850
166k
            D(fprintf(stderr, "%*c+ star_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
11851
166k
            _res = expression_var;
11852
166k
            goto done;
11853
166k
        }
11854
146k
        p->mark = _mark;
11855
146k
        D(fprintf(stderr, "%*c%s star_expression[%d-%d]: %s failed!\n", p->level, ' ',
11856
146k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
11857
146k
    }
11858
0
    _res = NULL;
11859
315k
  done:
11860
315k
    _PyPegen_insert_memo(p, _mark, star_expression_type, _res);
11861
315k
    p->level--;
11862
315k
    return _res;
11863
146k
}
11864
11865
// star_named_expressions: ','.star_named_expression+ ','?
11866
static asdl_expr_seq*
11867
star_named_expressions_rule(Parser *p)
11868
107k
{
11869
107k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11870
1
        _Pypegen_stack_overflow(p);
11871
1
    }
11872
107k
    if (p->error_indicator) {
11873
1
        p->level--;
11874
1
        return NULL;
11875
1
    }
11876
107k
    asdl_expr_seq* _res = NULL;
11877
107k
    int _mark = p->mark;
11878
107k
    { // ','.star_named_expression+ ','?
11879
107k
        if (p->error_indicator) {
11880
0
            p->level--;
11881
0
            return NULL;
11882
0
        }
11883
107k
        D(fprintf(stderr, "%*c> star_named_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.star_named_expression+ ','?"));
11884
107k
        void *_opt_var;
11885
107k
        UNUSED(_opt_var); // Silence compiler warnings
11886
107k
        asdl_expr_seq* a;
11887
107k
        if (
11888
107k
            (a = (asdl_expr_seq*)_gather_58_rule(p))  // ','.star_named_expression+
11889
107k
            &&
11890
107k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
11891
107k
        )
11892
43.9k
        {
11893
43.9k
            D(fprintf(stderr, "%*c+ star_named_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_named_expression+ ','?"));
11894
43.9k
            _res = a;
11895
43.9k
            if (_res == NULL && PyErr_Occurred()) {
11896
0
                p->error_indicator = 1;
11897
0
                p->level--;
11898
0
                return NULL;
11899
0
            }
11900
43.9k
            goto done;
11901
43.9k
        }
11902
63.2k
        p->mark = _mark;
11903
63.2k
        D(fprintf(stderr, "%*c%s star_named_expressions[%d-%d]: %s failed!\n", p->level, ' ',
11904
63.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.star_named_expression+ ','?"));
11905
63.2k
    }
11906
0
    _res = NULL;
11907
107k
  done:
11908
107k
    p->level--;
11909
107k
    return _res;
11910
63.2k
}
11911
11912
// star_named_expression: '*' bitwise_or | named_expression
11913
static expr_ty
11914
star_named_expression_rule(Parser *p)
11915
371k
{
11916
371k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11917
1
        _Pypegen_stack_overflow(p);
11918
1
    }
11919
371k
    if (p->error_indicator) {
11920
1
        p->level--;
11921
1
        return NULL;
11922
1
    }
11923
371k
    expr_ty _res = NULL;
11924
371k
    int _mark = p->mark;
11925
371k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11926
151
        p->error_indicator = 1;
11927
151
        p->level--;
11928
151
        return NULL;
11929
151
    }
11930
371k
    int _start_lineno = p->tokens[_mark]->lineno;
11931
371k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11932
371k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11933
371k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11934
371k
    { // '*' bitwise_or
11935
371k
        if (p->error_indicator) {
11936
0
            p->level--;
11937
0
            return NULL;
11938
0
        }
11939
371k
        D(fprintf(stderr, "%*c> star_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
11940
371k
        Token * _literal;
11941
371k
        expr_ty a;
11942
371k
        if (
11943
371k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
11944
371k
            &&
11945
371k
            (a = bitwise_or_rule(p))  // bitwise_or
11946
371k
        )
11947
3.81k
        {
11948
3.81k
            D(fprintf(stderr, "%*c+ star_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
11949
3.81k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11950
3.81k
            if (_token == NULL) {
11951
0
                p->level--;
11952
0
                return NULL;
11953
0
            }
11954
3.81k
            int _end_lineno = _token->end_lineno;
11955
3.81k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11956
3.81k
            int _end_col_offset = _token->end_col_offset;
11957
3.81k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11958
3.81k
            _res = _PyAST_Starred ( a , Load , EXTRA );
11959
3.81k
            if (_res == NULL && PyErr_Occurred()) {
11960
0
                p->error_indicator = 1;
11961
0
                p->level--;
11962
0
                return NULL;
11963
0
            }
11964
3.81k
            goto done;
11965
3.81k
        }
11966
367k
        p->mark = _mark;
11967
367k
        D(fprintf(stderr, "%*c%s star_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
11968
367k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' bitwise_or"));
11969
367k
    }
11970
0
    { // named_expression
11971
367k
        if (p->error_indicator) {
11972
679
            p->level--;
11973
679
            return NULL;
11974
679
        }
11975
367k
        D(fprintf(stderr, "%*c> star_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
11976
367k
        expr_ty named_expression_var;
11977
367k
        if (
11978
367k
            (named_expression_var = named_expression_rule(p))  // named_expression
11979
367k
        )
11980
199k
        {
11981
199k
            D(fprintf(stderr, "%*c+ star_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
11982
199k
            _res = named_expression_var;
11983
199k
            goto done;
11984
199k
        }
11985
167k
        p->mark = _mark;
11986
167k
        D(fprintf(stderr, "%*c%s star_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
11987
167k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
11988
167k
    }
11989
0
    _res = NULL;
11990
370k
  done:
11991
370k
    p->level--;
11992
370k
    return _res;
11993
167k
}
11994
11995
// assignment_expression: NAME ':=' ~ expression
11996
static expr_ty
11997
assignment_expression_rule(Parser *p)
11998
688k
{
11999
688k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12000
1
        _Pypegen_stack_overflow(p);
12001
1
    }
12002
688k
    if (p->error_indicator) {
12003
1
        p->level--;
12004
1
        return NULL;
12005
1
    }
12006
688k
    expr_ty _res = NULL;
12007
688k
    int _mark = p->mark;
12008
688k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12009
75
        p->error_indicator = 1;
12010
75
        p->level--;
12011
75
        return NULL;
12012
75
    }
12013
688k
    int _start_lineno = p->tokens[_mark]->lineno;
12014
688k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12015
688k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12016
688k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12017
688k
    { // NAME ':=' ~ expression
12018
688k
        if (p->error_indicator) {
12019
0
            p->level--;
12020
0
            return NULL;
12021
0
        }
12022
688k
        D(fprintf(stderr, "%*c> assignment_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ':=' ~ expression"));
12023
688k
        int _cut_var = 0;
12024
688k
        Token * _literal;
12025
688k
        expr_ty a;
12026
688k
        expr_ty b;
12027
688k
        if (
12028
688k
            (a = _PyPegen_name_token(p))  // NAME
12029
688k
            &&
12030
688k
            (_literal = _PyPegen_expect_token(p, 53))  // token=':='
12031
688k
            &&
12032
688k
            (_cut_var = 1)
12033
688k
            &&
12034
688k
            (b = expression_rule(p))  // expression
12035
688k
        )
12036
1.18k
        {
12037
1.18k
            D(fprintf(stderr, "%*c+ assignment_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ':=' ~ expression"));
12038
1.18k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12039
1.18k
            if (_token == NULL) {
12040
0
                p->level--;
12041
0
                return NULL;
12042
0
            }
12043
1.18k
            int _end_lineno = _token->end_lineno;
12044
1.18k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12045
1.18k
            int _end_col_offset = _token->end_col_offset;
12046
1.18k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12047
1.18k
            _res = CHECK_VERSION ( expr_ty , 8 , "Assignment expressions are" , _PyAST_NamedExpr ( CHECK ( expr_ty , _PyPegen_set_expr_context ( p , a , Store ) ) , b , EXTRA ) );
12048
1.18k
            if (_res == NULL && PyErr_Occurred()) {
12049
0
                p->error_indicator = 1;
12050
0
                p->level--;
12051
0
                return NULL;
12052
0
            }
12053
1.18k
            goto done;
12054
1.18k
        }
12055
687k
        p->mark = _mark;
12056
687k
        D(fprintf(stderr, "%*c%s assignment_expression[%d-%d]: %s failed!\n", p->level, ' ',
12057
687k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ':=' ~ expression"));
12058
687k
        if (_cut_var) {
12059
1.96k
            p->level--;
12060
1.96k
            return NULL;
12061
1.96k
        }
12062
687k
    }
12063
685k
    _res = NULL;
12064
686k
  done:
12065
686k
    p->level--;
12066
686k
    return _res;
12067
685k
}
12068
12069
// named_expression: assignment_expression | invalid_named_expression | expression !':='
12070
static expr_ty
12071
named_expression_rule(Parser *p)
12072
503k
{
12073
503k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12074
1
        _Pypegen_stack_overflow(p);
12075
1
    }
12076
503k
    if (p->error_indicator) {
12077
1
        p->level--;
12078
1
        return NULL;
12079
1
    }
12080
503k
    expr_ty _res = NULL;
12081
503k
    int _mark = p->mark;
12082
503k
    { // assignment_expression
12083
503k
        if (p->error_indicator) {
12084
0
            p->level--;
12085
0
            return NULL;
12086
0
        }
12087
503k
        D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
12088
503k
        expr_ty assignment_expression_var;
12089
503k
        if (
12090
503k
            (assignment_expression_var = assignment_expression_rule(p))  // assignment_expression
12091
503k
        )
12092
732
        {
12093
732
            D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
12094
732
            _res = assignment_expression_var;
12095
732
            goto done;
12096
732
        }
12097
502k
        p->mark = _mark;
12098
502k
        D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
12099
502k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression"));
12100
502k
    }
12101
502k
    if (p->call_invalid_rules) { // invalid_named_expression
12102
275k
        if (p->error_indicator) {
12103
89
            p->level--;
12104
89
            return NULL;
12105
89
        }
12106
275k
        D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_named_expression"));
12107
275k
        void *invalid_named_expression_var;
12108
275k
        if (
12109
275k
            (invalid_named_expression_var = invalid_named_expression_rule(p))  // invalid_named_expression
12110
275k
        )
12111
0
        {
12112
0
            D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_named_expression"));
12113
0
            _res = invalid_named_expression_var;
12114
0
            goto done;
12115
0
        }
12116
275k
        p->mark = _mark;
12117
275k
        D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
12118
275k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_named_expression"));
12119
275k
    }
12120
502k
    { // expression !':='
12121
502k
        if (p->error_indicator) {
12122
17.1k
            p->level--;
12123
17.1k
            return NULL;
12124
17.1k
        }
12125
485k
        D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
12126
485k
        expr_ty expression_var;
12127
485k
        if (
12128
485k
            (expression_var = expression_rule(p))  // expression
12129
485k
            &&
12130
485k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53)  // token=':='
12131
485k
        )
12132
287k
        {
12133
287k
            D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='"));
12134
287k
            _res = expression_var;
12135
287k
            goto done;
12136
287k
        }
12137
198k
        p->mark = _mark;
12138
198k
        D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
12139
198k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
12140
198k
    }
12141
0
    _res = NULL;
12142
486k
  done:
12143
486k
    p->level--;
12144
486k
    return _res;
12145
198k
}
12146
12147
// disjunction: conjunction (('or' conjunction))+ | conjunction
12148
static expr_ty
12149
disjunction_rule(Parser *p)
12150
2.10M
{
12151
2.10M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12152
1
        _Pypegen_stack_overflow(p);
12153
1
    }
12154
2.10M
    if (p->error_indicator) {
12155
22
        p->level--;
12156
22
        return NULL;
12157
22
    }
12158
2.10M
    expr_ty _res = NULL;
12159
2.10M
    if (_PyPegen_is_memoized(p, disjunction_type, &_res)) {
12160
1.40M
        p->level--;
12161
1.40M
        return _res;
12162
1.40M
    }
12163
705k
    int _mark = p->mark;
12164
705k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12165
0
        p->error_indicator = 1;
12166
0
        p->level--;
12167
0
        return NULL;
12168
0
    }
12169
705k
    int _start_lineno = p->tokens[_mark]->lineno;
12170
705k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12171
705k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12172
705k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12173
705k
    { // conjunction (('or' conjunction))+
12174
705k
        if (p->error_indicator) {
12175
0
            p->level--;
12176
0
            return NULL;
12177
0
        }
12178
705k
        D(fprintf(stderr, "%*c> disjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "conjunction (('or' conjunction))+"));
12179
705k
        expr_ty a;
12180
705k
        asdl_seq * b;
12181
705k
        if (
12182
705k
            (a = conjunction_rule(p))  // conjunction
12183
705k
            &&
12184
705k
            (b = _loop1_59_rule(p))  // (('or' conjunction))+
12185
705k
        )
12186
1.42k
        {
12187
1.42k
            D(fprintf(stderr, "%*c+ disjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "conjunction (('or' conjunction))+"));
12188
1.42k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12189
1.42k
            if (_token == NULL) {
12190
0
                p->level--;
12191
0
                return NULL;
12192
0
            }
12193
1.42k
            int _end_lineno = _token->end_lineno;
12194
1.42k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12195
1.42k
            int _end_col_offset = _token->end_col_offset;
12196
1.42k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12197
1.42k
            _res = _PyAST_BoolOp ( Or , CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
12198
1.42k
            if (_res == NULL && PyErr_Occurred()) {
12199
0
                p->error_indicator = 1;
12200
0
                p->level--;
12201
0
                return NULL;
12202
0
            }
12203
1.42k
            goto done;
12204
1.42k
        }
12205
704k
        p->mark = _mark;
12206
704k
        D(fprintf(stderr, "%*c%s disjunction[%d-%d]: %s failed!\n", p->level, ' ',
12207
704k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "conjunction (('or' conjunction))+"));
12208
704k
    }
12209
0
    { // conjunction
12210
704k
        if (p->error_indicator) {
12211
37.5k
            p->level--;
12212
37.5k
            return NULL;
12213
37.5k
        }
12214
666k
        D(fprintf(stderr, "%*c> disjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "conjunction"));
12215
666k
        expr_ty conjunction_var;
12216
666k
        if (
12217
666k
            (conjunction_var = conjunction_rule(p))  // conjunction
12218
666k
        )
12219
389k
        {
12220
389k
            D(fprintf(stderr, "%*c+ disjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "conjunction"));
12221
389k
            _res = conjunction_var;
12222
389k
            goto done;
12223
389k
        }
12224
277k
        p->mark = _mark;
12225
277k
        D(fprintf(stderr, "%*c%s disjunction[%d-%d]: %s failed!\n", p->level, ' ',
12226
277k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "conjunction"));
12227
277k
    }
12228
0
    _res = NULL;
12229
668k
  done:
12230
668k
    _PyPegen_insert_memo(p, _mark, disjunction_type, _res);
12231
668k
    p->level--;
12232
668k
    return _res;
12233
277k
}
12234
12235
// conjunction: inversion (('and' inversion))+ | inversion
12236
static expr_ty
12237
conjunction_rule(Parser *p)
12238
1.37M
{
12239
1.37M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12240
1
        _Pypegen_stack_overflow(p);
12241
1
    }
12242
1.37M
    if (p->error_indicator) {
12243
1
        p->level--;
12244
1
        return NULL;
12245
1
    }
12246
1.37M
    expr_ty _res = NULL;
12247
1.37M
    if (_PyPegen_is_memoized(p, conjunction_type, &_res)) {
12248
667k
        p->level--;
12249
667k
        return _res;
12250
667k
    }
12251
710k
    int _mark = p->mark;
12252
710k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12253
0
        p->error_indicator = 1;
12254
0
        p->level--;
12255
0
        return NULL;
12256
0
    }
12257
710k
    int _start_lineno = p->tokens[_mark]->lineno;
12258
710k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12259
710k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12260
710k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12261
710k
    { // inversion (('and' inversion))+
12262
710k
        if (p->error_indicator) {
12263
0
            p->level--;
12264
0
            return NULL;
12265
0
        }
12266
710k
        D(fprintf(stderr, "%*c> conjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "inversion (('and' inversion))+"));
12267
710k
        expr_ty a;
12268
710k
        asdl_seq * b;
12269
710k
        if (
12270
710k
            (a = inversion_rule(p))  // inversion
12271
710k
            &&
12272
710k
            (b = _loop1_60_rule(p))  // (('and' inversion))+
12273
710k
        )
12274
1.52k
        {
12275
1.52k
            D(fprintf(stderr, "%*c+ conjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "inversion (('and' inversion))+"));
12276
1.52k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12277
1.52k
            if (_token == NULL) {
12278
0
                p->level--;
12279
0
                return NULL;
12280
0
            }
12281
1.52k
            int _end_lineno = _token->end_lineno;
12282
1.52k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12283
1.52k
            int _end_col_offset = _token->end_col_offset;
12284
1.52k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12285
1.52k
            _res = _PyAST_BoolOp ( And , CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
12286
1.52k
            if (_res == NULL && PyErr_Occurred()) {
12287
0
                p->error_indicator = 1;
12288
0
                p->level--;
12289
0
                return NULL;
12290
0
            }
12291
1.52k
            goto done;
12292
1.52k
        }
12293
709k
        p->mark = _mark;
12294
709k
        D(fprintf(stderr, "%*c%s conjunction[%d-%d]: %s failed!\n", p->level, ' ',
12295
709k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "inversion (('and' inversion))+"));
12296
709k
    }
12297
0
    { // inversion
12298
709k
        if (p->error_indicator) {
12299
37.5k
            p->level--;
12300
37.5k
            return NULL;
12301
37.5k
        }
12302
671k
        D(fprintf(stderr, "%*c> conjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "inversion"));
12303
671k
        expr_ty inversion_var;
12304
671k
        if (
12305
671k
            (inversion_var = inversion_rule(p))  // inversion
12306
671k
        )
12307
394k
        {
12308
394k
            D(fprintf(stderr, "%*c+ conjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "inversion"));
12309
394k
            _res = inversion_var;
12310
394k
            goto done;
12311
394k
        }
12312
277k
        p->mark = _mark;
12313
277k
        D(fprintf(stderr, "%*c%s conjunction[%d-%d]: %s failed!\n", p->level, ' ',
12314
277k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "inversion"));
12315
277k
    }
12316
0
    _res = NULL;
12317
673k
  done:
12318
673k
    _PyPegen_insert_memo(p, _mark, conjunction_type, _res);
12319
673k
    p->level--;
12320
673k
    return _res;
12321
277k
}
12322
12323
// inversion: 'not' inversion | comparison
12324
static expr_ty
12325
inversion_rule(Parser *p)
12326
1.38M
{
12327
1.38M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12328
2
        _Pypegen_stack_overflow(p);
12329
2
    }
12330
1.38M
    if (p->error_indicator) {
12331
2
        p->level--;
12332
2
        return NULL;
12333
2
    }
12334
1.38M
    expr_ty _res = NULL;
12335
1.38M
    if (_PyPegen_is_memoized(p, inversion_type, &_res)) {
12336
672k
        p->level--;
12337
672k
        return _res;
12338
672k
    }
12339
715k
    int _mark = p->mark;
12340
715k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12341
0
        p->error_indicator = 1;
12342
0
        p->level--;
12343
0
        return NULL;
12344
0
    }
12345
715k
    int _start_lineno = p->tokens[_mark]->lineno;
12346
715k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12347
715k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12348
715k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12349
715k
    { // 'not' inversion
12350
715k
        if (p->error_indicator) {
12351
0
            p->level--;
12352
0
            return NULL;
12353
0
        }
12354
715k
        D(fprintf(stderr, "%*c> inversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'not' inversion"));
12355
715k
        Token * _keyword;
12356
715k
        expr_ty a;
12357
715k
        if (
12358
715k
            (_keyword = _PyPegen_expect_token(p, 708))  // token='not'
12359
715k
            &&
12360
715k
            (a = inversion_rule(p))  // inversion
12361
715k
        )
12362
1.56k
        {
12363
1.56k
            D(fprintf(stderr, "%*c+ inversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'not' inversion"));
12364
1.56k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12365
1.56k
            if (_token == NULL) {
12366
0
                p->level--;
12367
0
                return NULL;
12368
0
            }
12369
1.56k
            int _end_lineno = _token->end_lineno;
12370
1.56k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12371
1.56k
            int _end_col_offset = _token->end_col_offset;
12372
1.56k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12373
1.56k
            _res = _PyAST_UnaryOp ( Not , a , EXTRA );
12374
1.56k
            if (_res == NULL && PyErr_Occurred()) {
12375
0
                p->error_indicator = 1;
12376
0
                p->level--;
12377
0
                return NULL;
12378
0
            }
12379
1.56k
            goto done;
12380
1.56k
        }
12381
714k
        p->mark = _mark;
12382
714k
        D(fprintf(stderr, "%*c%s inversion[%d-%d]: %s failed!\n", p->level, ' ',
12383
714k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'not' inversion"));
12384
714k
    }
12385
0
    { // comparison
12386
714k
        if (p->error_indicator) {
12387
208
            p->level--;
12388
208
            return NULL;
12389
208
        }
12390
713k
        D(fprintf(stderr, "%*c> inversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "comparison"));
12391
713k
        expr_ty comparison_var;
12392
713k
        if (
12393
713k
            (comparison_var = comparison_rule(p))  // comparison
12394
713k
        )
12395
398k
        {
12396
398k
            D(fprintf(stderr, "%*c+ inversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "comparison"));
12397
398k
            _res = comparison_var;
12398
398k
            goto done;
12399
398k
        }
12400
315k
        p->mark = _mark;
12401
315k
        D(fprintf(stderr, "%*c%s inversion[%d-%d]: %s failed!\n", p->level, ' ',
12402
315k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "comparison"));
12403
315k
    }
12404
0
    _res = NULL;
12405
715k
  done:
12406
715k
    _PyPegen_insert_memo(p, _mark, inversion_type, _res);
12407
715k
    p->level--;
12408
715k
    return _res;
12409
315k
}
12410
12411
// comparison: bitwise_or compare_op_bitwise_or_pair+ | bitwise_or
12412
static expr_ty
12413
comparison_rule(Parser *p)
12414
713k
{
12415
713k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12416
1
        _Pypegen_stack_overflow(p);
12417
1
    }
12418
713k
    if (p->error_indicator) {
12419
1
        p->level--;
12420
1
        return NULL;
12421
1
    }
12422
713k
    expr_ty _res = NULL;
12423
713k
    int _mark = p->mark;
12424
713k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12425
0
        p->error_indicator = 1;
12426
0
        p->level--;
12427
0
        return NULL;
12428
0
    }
12429
713k
    int _start_lineno = p->tokens[_mark]->lineno;
12430
713k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12431
713k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12432
713k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12433
713k
    { // bitwise_or compare_op_bitwise_or_pair+
12434
713k
        if (p->error_indicator) {
12435
0
            p->level--;
12436
0
            return NULL;
12437
0
        }
12438
713k
        D(fprintf(stderr, "%*c> comparison[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
12439
713k
        expr_ty a;
12440
713k
        asdl_seq * b;
12441
713k
        if (
12442
713k
            (a = bitwise_or_rule(p))  // bitwise_or
12443
713k
            &&
12444
713k
            (b = _loop1_61_rule(p))  // compare_op_bitwise_or_pair+
12445
713k
        )
12446
9.67k
        {
12447
9.67k
            D(fprintf(stderr, "%*c+ comparison[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
12448
9.67k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12449
9.67k
            if (_token == NULL) {
12450
0
                p->level--;
12451
0
                return NULL;
12452
0
            }
12453
9.67k
            int _end_lineno = _token->end_lineno;
12454
9.67k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12455
9.67k
            int _end_col_offset = _token->end_col_offset;
12456
9.67k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12457
9.67k
            _res = _PyAST_Compare ( a , CHECK ( asdl_int_seq* , _PyPegen_get_cmpops ( p , b ) ) , CHECK ( asdl_expr_seq* , _PyPegen_get_exprs ( p , b ) ) , EXTRA );
12458
9.67k
            if (_res == NULL && PyErr_Occurred()) {
12459
0
                p->error_indicator = 1;
12460
0
                p->level--;
12461
0
                return NULL;
12462
0
            }
12463
9.67k
            goto done;
12464
9.67k
        }
12465
704k
        p->mark = _mark;
12466
704k
        D(fprintf(stderr, "%*c%s comparison[%d-%d]: %s failed!\n", p->level, ' ',
12467
704k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
12468
704k
    }
12469
0
    { // bitwise_or
12470
704k
        if (p->error_indicator) {
12471
37.7k
            p->level--;
12472
37.7k
            return NULL;
12473
37.7k
        }
12474
666k
        D(fprintf(stderr, "%*c> comparison[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or"));
12475
666k
        expr_ty bitwise_or_var;
12476
666k
        if (
12477
666k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
12478
666k
        )
12479
388k
        {
12480
388k
            D(fprintf(stderr, "%*c+ comparison[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or"));
12481
388k
            _res = bitwise_or_var;
12482
388k
            goto done;
12483
388k
        }
12484
277k
        p->mark = _mark;
12485
277k
        D(fprintf(stderr, "%*c%s comparison[%d-%d]: %s failed!\n", p->level, ' ',
12486
277k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or"));
12487
277k
    }
12488
0
    _res = NULL;
12489
676k
  done:
12490
676k
    p->level--;
12491
676k
    return _res;
12492
277k
}
12493
12494
// compare_op_bitwise_or_pair:
12495
//     | eq_bitwise_or
12496
//     | noteq_bitwise_or
12497
//     | lte_bitwise_or
12498
//     | lt_bitwise_or
12499
//     | gte_bitwise_or
12500
//     | gt_bitwise_or
12501
//     | notin_bitwise_or
12502
//     | in_bitwise_or
12503
//     | isnot_bitwise_or
12504
//     | is_bitwise_or
12505
static CmpopExprPair*
12506
compare_op_bitwise_or_pair_rule(Parser *p)
12507
424k
{
12508
424k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12509
0
        _Pypegen_stack_overflow(p);
12510
0
    }
12511
424k
    if (p->error_indicator) {
12512
0
        p->level--;
12513
0
        return NULL;
12514
0
    }
12515
424k
    CmpopExprPair* _res = NULL;
12516
424k
    int _mark = p->mark;
12517
424k
    { // eq_bitwise_or
12518
424k
        if (p->error_indicator) {
12519
0
            p->level--;
12520
0
            return NULL;
12521
0
        }
12522
424k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "eq_bitwise_or"));
12523
424k
        CmpopExprPair* eq_bitwise_or_var;
12524
424k
        if (
12525
424k
            (eq_bitwise_or_var = eq_bitwise_or_rule(p))  // eq_bitwise_or
12526
424k
        )
12527
1.74k
        {
12528
1.74k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "eq_bitwise_or"));
12529
1.74k
            _res = eq_bitwise_or_var;
12530
1.74k
            goto done;
12531
1.74k
        }
12532
422k
        p->mark = _mark;
12533
422k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12534
422k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "eq_bitwise_or"));
12535
422k
    }
12536
0
    { // noteq_bitwise_or
12537
422k
        if (p->error_indicator) {
12538
263
            p->level--;
12539
263
            return NULL;
12540
263
        }
12541
422k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "noteq_bitwise_or"));
12542
422k
        CmpopExprPair* noteq_bitwise_or_var;
12543
422k
        if (
12544
422k
            (noteq_bitwise_or_var = noteq_bitwise_or_rule(p))  // noteq_bitwise_or
12545
422k
        )
12546
845
        {
12547
845
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "noteq_bitwise_or"));
12548
845
            _res = noteq_bitwise_or_var;
12549
845
            goto done;
12550
845
        }
12551
421k
        p->mark = _mark;
12552
421k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12553
421k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "noteq_bitwise_or"));
12554
421k
    }
12555
0
    { // lte_bitwise_or
12556
421k
        if (p->error_indicator) {
12557
261
            p->level--;
12558
261
            return NULL;
12559
261
        }
12560
421k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lte_bitwise_or"));
12561
421k
        CmpopExprPair* lte_bitwise_or_var;
12562
421k
        if (
12563
421k
            (lte_bitwise_or_var = lte_bitwise_or_rule(p))  // lte_bitwise_or
12564
421k
        )
12565
606
        {
12566
606
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lte_bitwise_or"));
12567
606
            _res = lte_bitwise_or_var;
12568
606
            goto done;
12569
606
        }
12570
420k
        p->mark = _mark;
12571
420k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12572
420k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lte_bitwise_or"));
12573
420k
    }
12574
0
    { // lt_bitwise_or
12575
420k
        if (p->error_indicator) {
12576
196
            p->level--;
12577
196
            return NULL;
12578
196
        }
12579
420k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lt_bitwise_or"));
12580
420k
        CmpopExprPair* lt_bitwise_or_var;
12581
420k
        if (
12582
420k
            (lt_bitwise_or_var = lt_bitwise_or_rule(p))  // lt_bitwise_or
12583
420k
        )
12584
6.51k
        {
12585
6.51k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lt_bitwise_or"));
12586
6.51k
            _res = lt_bitwise_or_var;
12587
6.51k
            goto done;
12588
6.51k
        }
12589
414k
        p->mark = _mark;
12590
414k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12591
414k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lt_bitwise_or"));
12592
414k
    }
12593
0
    { // gte_bitwise_or
12594
414k
        if (p->error_indicator) {
12595
309
            p->level--;
12596
309
            return NULL;
12597
309
        }
12598
413k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "gte_bitwise_or"));
12599
413k
        CmpopExprPair* gte_bitwise_or_var;
12600
413k
        if (
12601
413k
            (gte_bitwise_or_var = gte_bitwise_or_rule(p))  // gte_bitwise_or
12602
413k
        )
12603
596
        {
12604
596
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "gte_bitwise_or"));
12605
596
            _res = gte_bitwise_or_var;
12606
596
            goto done;
12607
596
        }
12608
413k
        p->mark = _mark;
12609
413k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12610
413k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "gte_bitwise_or"));
12611
413k
    }
12612
0
    { // gt_bitwise_or
12613
413k
        if (p->error_indicator) {
12614
194
            p->level--;
12615
194
            return NULL;
12616
194
        }
12617
412k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "gt_bitwise_or"));
12618
412k
        CmpopExprPair* gt_bitwise_or_var;
12619
412k
        if (
12620
412k
            (gt_bitwise_or_var = gt_bitwise_or_rule(p))  // gt_bitwise_or
12621
412k
        )
12622
8.59k
        {
12623
8.59k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "gt_bitwise_or"));
12624
8.59k
            _res = gt_bitwise_or_var;
12625
8.59k
            goto done;
12626
8.59k
        }
12627
404k
        p->mark = _mark;
12628
404k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12629
404k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "gt_bitwise_or"));
12630
404k
    }
12631
0
    { // notin_bitwise_or
12632
404k
        if (p->error_indicator) {
12633
416
            p->level--;
12634
416
            return NULL;
12635
416
        }
12636
403k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "notin_bitwise_or"));
12637
403k
        CmpopExprPair* notin_bitwise_or_var;
12638
403k
        if (
12639
403k
            (notin_bitwise_or_var = notin_bitwise_or_rule(p))  // notin_bitwise_or
12640
403k
        )
12641
707
        {
12642
707
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "notin_bitwise_or"));
12643
707
            _res = notin_bitwise_or_var;
12644
707
            goto done;
12645
707
        }
12646
403k
        p->mark = _mark;
12647
403k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12648
403k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "notin_bitwise_or"));
12649
403k
    }
12650
0
    { // in_bitwise_or
12651
403k
        if (p->error_indicator) {
12652
265
            p->level--;
12653
265
            return NULL;
12654
265
        }
12655
403k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "in_bitwise_or"));
12656
403k
        CmpopExprPair* in_bitwise_or_var;
12657
403k
        if (
12658
403k
            (in_bitwise_or_var = in_bitwise_or_rule(p))  // in_bitwise_or
12659
403k
        )
12660
1.37k
        {
12661
1.37k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "in_bitwise_or"));
12662
1.37k
            _res = in_bitwise_or_var;
12663
1.37k
            goto done;
12664
1.37k
        }
12665
401k
        p->mark = _mark;
12666
401k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12667
401k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "in_bitwise_or"));
12668
401k
    }
12669
0
    { // isnot_bitwise_or
12670
401k
        if (p->error_indicator) {
12671
501
            p->level--;
12672
501
            return NULL;
12673
501
        }
12674
401k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "isnot_bitwise_or"));
12675
401k
        CmpopExprPair* isnot_bitwise_or_var;
12676
401k
        if (
12677
401k
            (isnot_bitwise_or_var = isnot_bitwise_or_rule(p))  // isnot_bitwise_or
12678
401k
        )
12679
864
        {
12680
864
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "isnot_bitwise_or"));
12681
864
            _res = isnot_bitwise_or_var;
12682
864
            goto done;
12683
864
        }
12684
400k
        p->mark = _mark;
12685
400k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12686
400k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "isnot_bitwise_or"));
12687
400k
    }
12688
0
    { // is_bitwise_or
12689
400k
        if (p->error_indicator) {
12690
268
            p->level--;
12691
268
            return NULL;
12692
268
        }
12693
400k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "is_bitwise_or"));
12694
400k
        CmpopExprPair* is_bitwise_or_var;
12695
400k
        if (
12696
400k
            (is_bitwise_or_var = is_bitwise_or_rule(p))  // is_bitwise_or
12697
400k
        )
12698
1.75k
        {
12699
1.75k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "is_bitwise_or"));
12700
1.75k
            _res = is_bitwise_or_var;
12701
1.75k
            goto done;
12702
1.75k
        }
12703
398k
        p->mark = _mark;
12704
398k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12705
398k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "is_bitwise_or"));
12706
398k
    }
12707
0
    _res = NULL;
12708
421k
  done:
12709
421k
    p->level--;
12710
421k
    return _res;
12711
398k
}
12712
12713
// eq_bitwise_or: '==' bitwise_or
12714
static CmpopExprPair*
12715
eq_bitwise_or_rule(Parser *p)
12716
424k
{
12717
424k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12718
0
        _Pypegen_stack_overflow(p);
12719
0
    }
12720
424k
    if (p->error_indicator) {
12721
0
        p->level--;
12722
0
        return NULL;
12723
0
    }
12724
424k
    CmpopExprPair* _res = NULL;
12725
424k
    int _mark = p->mark;
12726
424k
    { // '==' bitwise_or
12727
424k
        if (p->error_indicator) {
12728
0
            p->level--;
12729
0
            return NULL;
12730
0
        }
12731
424k
        D(fprintf(stderr, "%*c> eq_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'==' bitwise_or"));
12732
424k
        Token * _literal;
12733
424k
        expr_ty a;
12734
424k
        if (
12735
424k
            (_literal = _PyPegen_expect_token(p, 27))  // token='=='
12736
424k
            &&
12737
424k
            (a = bitwise_or_rule(p))  // bitwise_or
12738
424k
        )
12739
1.74k
        {
12740
1.74k
            D(fprintf(stderr, "%*c+ eq_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'==' bitwise_or"));
12741
1.74k
            _res = _PyPegen_cmpop_expr_pair ( p , Eq , a );
12742
1.74k
            if (_res == NULL && PyErr_Occurred()) {
12743
0
                p->error_indicator = 1;
12744
0
                p->level--;
12745
0
                return NULL;
12746
0
            }
12747
1.74k
            goto done;
12748
1.74k
        }
12749
422k
        p->mark = _mark;
12750
422k
        D(fprintf(stderr, "%*c%s eq_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12751
422k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'==' bitwise_or"));
12752
422k
    }
12753
0
    _res = NULL;
12754
424k
  done:
12755
424k
    p->level--;
12756
424k
    return _res;
12757
422k
}
12758
12759
// noteq_bitwise_or: ('!=') bitwise_or
12760
static CmpopExprPair*
12761
noteq_bitwise_or_rule(Parser *p)
12762
422k
{
12763
422k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12764
0
        _Pypegen_stack_overflow(p);
12765
0
    }
12766
422k
    if (p->error_indicator) {
12767
0
        p->level--;
12768
0
        return NULL;
12769
0
    }
12770
422k
    CmpopExprPair* _res = NULL;
12771
422k
    int _mark = p->mark;
12772
422k
    { // ('!=') bitwise_or
12773
422k
        if (p->error_indicator) {
12774
0
            p->level--;
12775
0
            return NULL;
12776
0
        }
12777
422k
        D(fprintf(stderr, "%*c> noteq_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('!=') bitwise_or"));
12778
422k
        void *_tmp_62_var;
12779
422k
        expr_ty a;
12780
422k
        if (
12781
422k
            (_tmp_62_var = _tmp_62_rule(p))  // '!='
12782
422k
            &&
12783
422k
            (a = bitwise_or_rule(p))  // bitwise_or
12784
422k
        )
12785
845
        {
12786
845
            D(fprintf(stderr, "%*c+ noteq_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('!=') bitwise_or"));
12787
845
            _res = _PyPegen_cmpop_expr_pair ( p , NotEq , a );
12788
845
            if (_res == NULL && PyErr_Occurred()) {
12789
0
                p->error_indicator = 1;
12790
0
                p->level--;
12791
0
                return NULL;
12792
0
            }
12793
845
            goto done;
12794
845
        }
12795
421k
        p->mark = _mark;
12796
421k
        D(fprintf(stderr, "%*c%s noteq_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12797
421k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('!=') bitwise_or"));
12798
421k
    }
12799
0
    _res = NULL;
12800
422k
  done:
12801
422k
    p->level--;
12802
422k
    return _res;
12803
421k
}
12804
12805
// lte_bitwise_or: '<=' bitwise_or
12806
static CmpopExprPair*
12807
lte_bitwise_or_rule(Parser *p)
12808
421k
{
12809
421k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12810
0
        _Pypegen_stack_overflow(p);
12811
0
    }
12812
421k
    if (p->error_indicator) {
12813
0
        p->level--;
12814
0
        return NULL;
12815
0
    }
12816
421k
    CmpopExprPair* _res = NULL;
12817
421k
    int _mark = p->mark;
12818
421k
    { // '<=' bitwise_or
12819
421k
        if (p->error_indicator) {
12820
0
            p->level--;
12821
0
            return NULL;
12822
0
        }
12823
421k
        D(fprintf(stderr, "%*c> lte_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<=' bitwise_or"));
12824
421k
        Token * _literal;
12825
421k
        expr_ty a;
12826
421k
        if (
12827
421k
            (_literal = _PyPegen_expect_token(p, 29))  // token='<='
12828
421k
            &&
12829
421k
            (a = bitwise_or_rule(p))  // bitwise_or
12830
421k
        )
12831
606
        {
12832
606
            D(fprintf(stderr, "%*c+ lte_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<=' bitwise_or"));
12833
606
            _res = _PyPegen_cmpop_expr_pair ( p , LtE , a );
12834
606
            if (_res == NULL && PyErr_Occurred()) {
12835
0
                p->error_indicator = 1;
12836
0
                p->level--;
12837
0
                return NULL;
12838
0
            }
12839
606
            goto done;
12840
606
        }
12841
420k
        p->mark = _mark;
12842
420k
        D(fprintf(stderr, "%*c%s lte_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12843
420k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<=' bitwise_or"));
12844
420k
    }
12845
0
    _res = NULL;
12846
421k
  done:
12847
421k
    p->level--;
12848
421k
    return _res;
12849
420k
}
12850
12851
// lt_bitwise_or: '<' bitwise_or
12852
static CmpopExprPair*
12853
lt_bitwise_or_rule(Parser *p)
12854
420k
{
12855
420k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12856
0
        _Pypegen_stack_overflow(p);
12857
0
    }
12858
420k
    if (p->error_indicator) {
12859
0
        p->level--;
12860
0
        return NULL;
12861
0
    }
12862
420k
    CmpopExprPair* _res = NULL;
12863
420k
    int _mark = p->mark;
12864
420k
    { // '<' bitwise_or
12865
420k
        if (p->error_indicator) {
12866
0
            p->level--;
12867
0
            return NULL;
12868
0
        }
12869
420k
        D(fprintf(stderr, "%*c> lt_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<' bitwise_or"));
12870
420k
        Token * _literal;
12871
420k
        expr_ty a;
12872
420k
        if (
12873
420k
            (_literal = _PyPegen_expect_token(p, 20))  // token='<'
12874
420k
            &&
12875
420k
            (a = bitwise_or_rule(p))  // bitwise_or
12876
420k
        )
12877
6.51k
        {
12878
6.51k
            D(fprintf(stderr, "%*c+ lt_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<' bitwise_or"));
12879
6.51k
            _res = _PyPegen_cmpop_expr_pair ( p , Lt , a );
12880
6.51k
            if (_res == NULL && PyErr_Occurred()) {
12881
0
                p->error_indicator = 1;
12882
0
                p->level--;
12883
0
                return NULL;
12884
0
            }
12885
6.51k
            goto done;
12886
6.51k
        }
12887
414k
        p->mark = _mark;
12888
414k
        D(fprintf(stderr, "%*c%s lt_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12889
414k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<' bitwise_or"));
12890
414k
    }
12891
0
    _res = NULL;
12892
420k
  done:
12893
420k
    p->level--;
12894
420k
    return _res;
12895
414k
}
12896
12897
// gte_bitwise_or: '>=' bitwise_or
12898
static CmpopExprPair*
12899
gte_bitwise_or_rule(Parser *p)
12900
413k
{
12901
413k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12902
0
        _Pypegen_stack_overflow(p);
12903
0
    }
12904
413k
    if (p->error_indicator) {
12905
0
        p->level--;
12906
0
        return NULL;
12907
0
    }
12908
413k
    CmpopExprPair* _res = NULL;
12909
413k
    int _mark = p->mark;
12910
413k
    { // '>=' bitwise_or
12911
413k
        if (p->error_indicator) {
12912
0
            p->level--;
12913
0
            return NULL;
12914
0
        }
12915
413k
        D(fprintf(stderr, "%*c> gte_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>=' bitwise_or"));
12916
413k
        Token * _literal;
12917
413k
        expr_ty a;
12918
413k
        if (
12919
413k
            (_literal = _PyPegen_expect_token(p, 30))  // token='>='
12920
413k
            &&
12921
413k
            (a = bitwise_or_rule(p))  // bitwise_or
12922
413k
        )
12923
596
        {
12924
596
            D(fprintf(stderr, "%*c+ gte_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>=' bitwise_or"));
12925
596
            _res = _PyPegen_cmpop_expr_pair ( p , GtE , a );
12926
596
            if (_res == NULL && PyErr_Occurred()) {
12927
0
                p->error_indicator = 1;
12928
0
                p->level--;
12929
0
                return NULL;
12930
0
            }
12931
596
            goto done;
12932
596
        }
12933
413k
        p->mark = _mark;
12934
413k
        D(fprintf(stderr, "%*c%s gte_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12935
413k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>=' bitwise_or"));
12936
413k
    }
12937
0
    _res = NULL;
12938
413k
  done:
12939
413k
    p->level--;
12940
413k
    return _res;
12941
413k
}
12942
12943
// gt_bitwise_or: '>' bitwise_or
12944
static CmpopExprPair*
12945
gt_bitwise_or_rule(Parser *p)
12946
412k
{
12947
412k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12948
0
        _Pypegen_stack_overflow(p);
12949
0
    }
12950
412k
    if (p->error_indicator) {
12951
0
        p->level--;
12952
0
        return NULL;
12953
0
    }
12954
412k
    CmpopExprPair* _res = NULL;
12955
412k
    int _mark = p->mark;
12956
412k
    { // '>' bitwise_or
12957
412k
        if (p->error_indicator) {
12958
0
            p->level--;
12959
0
            return NULL;
12960
0
        }
12961
412k
        D(fprintf(stderr, "%*c> gt_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>' bitwise_or"));
12962
412k
        Token * _literal;
12963
412k
        expr_ty a;
12964
412k
        if (
12965
412k
            (_literal = _PyPegen_expect_token(p, 21))  // token='>'
12966
412k
            &&
12967
412k
            (a = bitwise_or_rule(p))  // bitwise_or
12968
412k
        )
12969
8.59k
        {
12970
8.59k
            D(fprintf(stderr, "%*c+ gt_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>' bitwise_or"));
12971
8.59k
            _res = _PyPegen_cmpop_expr_pair ( p , Gt , a );
12972
8.59k
            if (_res == NULL && PyErr_Occurred()) {
12973
0
                p->error_indicator = 1;
12974
0
                p->level--;
12975
0
                return NULL;
12976
0
            }
12977
8.59k
            goto done;
12978
8.59k
        }
12979
404k
        p->mark = _mark;
12980
404k
        D(fprintf(stderr, "%*c%s gt_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12981
404k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>' bitwise_or"));
12982
404k
    }
12983
0
    _res = NULL;
12984
412k
  done:
12985
412k
    p->level--;
12986
412k
    return _res;
12987
404k
}
12988
12989
// notin_bitwise_or: 'not' 'in' bitwise_or
12990
static CmpopExprPair*
12991
notin_bitwise_or_rule(Parser *p)
12992
403k
{
12993
403k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12994
0
        _Pypegen_stack_overflow(p);
12995
0
    }
12996
403k
    if (p->error_indicator) {
12997
0
        p->level--;
12998
0
        return NULL;
12999
0
    }
13000
403k
    CmpopExprPair* _res = NULL;
13001
403k
    int _mark = p->mark;
13002
403k
    { // 'not' 'in' bitwise_or
13003
403k
        if (p->error_indicator) {
13004
0
            p->level--;
13005
0
            return NULL;
13006
0
        }
13007
403k
        D(fprintf(stderr, "%*c> notin_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'not' 'in' bitwise_or"));
13008
403k
        Token * _keyword;
13009
403k
        Token * _keyword_1;
13010
403k
        expr_ty a;
13011
403k
        if (
13012
403k
            (_keyword = _PyPegen_expect_token(p, 708))  // token='not'
13013
403k
            &&
13014
403k
            (_keyword_1 = _PyPegen_expect_token(p, 700))  // token='in'
13015
403k
            &&
13016
403k
            (a = bitwise_or_rule(p))  // bitwise_or
13017
403k
        )
13018
707
        {
13019
707
            D(fprintf(stderr, "%*c+ notin_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'not' 'in' bitwise_or"));
13020
707
            _res = _PyPegen_cmpop_expr_pair ( p , NotIn , a );
13021
707
            if (_res == NULL && PyErr_Occurred()) {
13022
0
                p->error_indicator = 1;
13023
0
                p->level--;
13024
0
                return NULL;
13025
0
            }
13026
707
            goto done;
13027
707
        }
13028
403k
        p->mark = _mark;
13029
403k
        D(fprintf(stderr, "%*c%s notin_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13030
403k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'not' 'in' bitwise_or"));
13031
403k
    }
13032
0
    _res = NULL;
13033
403k
  done:
13034
403k
    p->level--;
13035
403k
    return _res;
13036
403k
}
13037
13038
// in_bitwise_or: 'in' bitwise_or
13039
static CmpopExprPair*
13040
in_bitwise_or_rule(Parser *p)
13041
403k
{
13042
403k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13043
0
        _Pypegen_stack_overflow(p);
13044
0
    }
13045
403k
    if (p->error_indicator) {
13046
0
        p->level--;
13047
0
        return NULL;
13048
0
    }
13049
403k
    CmpopExprPair* _res = NULL;
13050
403k
    int _mark = p->mark;
13051
403k
    { // 'in' bitwise_or
13052
403k
        if (p->error_indicator) {
13053
0
            p->level--;
13054
0
            return NULL;
13055
0
        }
13056
403k
        D(fprintf(stderr, "%*c> in_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'in' bitwise_or"));
13057
403k
        Token * _keyword;
13058
403k
        expr_ty a;
13059
403k
        if (
13060
403k
            (_keyword = _PyPegen_expect_token(p, 700))  // token='in'
13061
403k
            &&
13062
403k
            (a = bitwise_or_rule(p))  // bitwise_or
13063
403k
        )
13064
1.37k
        {
13065
1.37k
            D(fprintf(stderr, "%*c+ in_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'in' bitwise_or"));
13066
1.37k
            _res = _PyPegen_cmpop_expr_pair ( p , In , a );
13067
1.37k
            if (_res == NULL && PyErr_Occurred()) {
13068
0
                p->error_indicator = 1;
13069
0
                p->level--;
13070
0
                return NULL;
13071
0
            }
13072
1.37k
            goto done;
13073
1.37k
        }
13074
401k
        p->mark = _mark;
13075
401k
        D(fprintf(stderr, "%*c%s in_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13076
401k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'in' bitwise_or"));
13077
401k
    }
13078
0
    _res = NULL;
13079
403k
  done:
13080
403k
    p->level--;
13081
403k
    return _res;
13082
401k
}
13083
13084
// isnot_bitwise_or: 'is' 'not' bitwise_or
13085
static CmpopExprPair*
13086
isnot_bitwise_or_rule(Parser *p)
13087
401k
{
13088
401k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13089
0
        _Pypegen_stack_overflow(p);
13090
0
    }
13091
401k
    if (p->error_indicator) {
13092
0
        p->level--;
13093
0
        return NULL;
13094
0
    }
13095
401k
    CmpopExprPair* _res = NULL;
13096
401k
    int _mark = p->mark;
13097
401k
    { // 'is' 'not' bitwise_or
13098
401k
        if (p->error_indicator) {
13099
0
            p->level--;
13100
0
            return NULL;
13101
0
        }
13102
401k
        D(fprintf(stderr, "%*c> isnot_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'is' 'not' bitwise_or"));
13103
401k
        Token * _keyword;
13104
401k
        Token * _keyword_1;
13105
401k
        expr_ty a;
13106
401k
        if (
13107
401k
            (_keyword = _PyPegen_expect_token(p, 597))  // token='is'
13108
401k
            &&
13109
401k
            (_keyword_1 = _PyPegen_expect_token(p, 708))  // token='not'
13110
401k
            &&
13111
401k
            (a = bitwise_or_rule(p))  // bitwise_or
13112
401k
        )
13113
864
        {
13114
864
            D(fprintf(stderr, "%*c+ isnot_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'is' 'not' bitwise_or"));
13115
864
            _res = _PyPegen_cmpop_expr_pair ( p , IsNot , a );
13116
864
            if (_res == NULL && PyErr_Occurred()) {
13117
0
                p->error_indicator = 1;
13118
0
                p->level--;
13119
0
                return NULL;
13120
0
            }
13121
864
            goto done;
13122
864
        }
13123
400k
        p->mark = _mark;
13124
400k
        D(fprintf(stderr, "%*c%s isnot_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13125
400k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'is' 'not' bitwise_or"));
13126
400k
    }
13127
0
    _res = NULL;
13128
401k
  done:
13129
401k
    p->level--;
13130
401k
    return _res;
13131
400k
}
13132
13133
// is_bitwise_or: 'is' bitwise_or
13134
static CmpopExprPair*
13135
is_bitwise_or_rule(Parser *p)
13136
400k
{
13137
400k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13138
0
        _Pypegen_stack_overflow(p);
13139
0
    }
13140
400k
    if (p->error_indicator) {
13141
0
        p->level--;
13142
0
        return NULL;
13143
0
    }
13144
400k
    CmpopExprPair* _res = NULL;
13145
400k
    int _mark = p->mark;
13146
400k
    { // 'is' bitwise_or
13147
400k
        if (p->error_indicator) {
13148
0
            p->level--;
13149
0
            return NULL;
13150
0
        }
13151
400k
        D(fprintf(stderr, "%*c> is_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'is' bitwise_or"));
13152
400k
        Token * _keyword;
13153
400k
        expr_ty a;
13154
400k
        if (
13155
400k
            (_keyword = _PyPegen_expect_token(p, 597))  // token='is'
13156
400k
            &&
13157
400k
            (a = bitwise_or_rule(p))  // bitwise_or
13158
400k
        )
13159
1.75k
        {
13160
1.75k
            D(fprintf(stderr, "%*c+ is_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'is' bitwise_or"));
13161
1.75k
            _res = _PyPegen_cmpop_expr_pair ( p , Is , a );
13162
1.75k
            if (_res == NULL && PyErr_Occurred()) {
13163
0
                p->error_indicator = 1;
13164
0
                p->level--;
13165
0
                return NULL;
13166
0
            }
13167
1.75k
            goto done;
13168
1.75k
        }
13169
398k
        p->mark = _mark;
13170
398k
        D(fprintf(stderr, "%*c%s is_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13171
398k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'is' bitwise_or"));
13172
398k
    }
13173
0
    _res = NULL;
13174
400k
  done:
13175
400k
    p->level--;
13176
400k
    return _res;
13177
398k
}
13178
13179
// Left-recursive
13180
// bitwise_or: bitwise_or '|' bitwise_xor | bitwise_xor
13181
static expr_ty bitwise_or_raw(Parser *);
13182
static expr_ty
13183
bitwise_or_rule(Parser *p)
13184
2.69M
{
13185
2.69M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13186
1
        _Pypegen_stack_overflow(p);
13187
1
    }
13188
2.69M
    expr_ty _res = NULL;
13189
2.69M
    if (_PyPegen_is_memoized(p, bitwise_or_type, &_res)) {
13190
1.94M
        p->level--;
13191
1.94M
        return _res;
13192
1.94M
    }
13193
753k
    int _mark = p->mark;
13194
753k
    int _resmark = p->mark;
13195
1.18M
    while (1) {
13196
1.18M
        int tmpvar_2 = _PyPegen_update_memo(p, _mark, bitwise_or_type, _res);
13197
1.18M
        if (tmpvar_2) {
13198
0
            p->level--;
13199
0
            return _res;
13200
0
        }
13201
1.18M
        p->mark = _mark;
13202
1.18M
        void *_raw = bitwise_or_raw(p);
13203
1.18M
        if (p->error_indicator) {
13204
40.0k
            p->level--;
13205
40.0k
            return NULL;
13206
40.0k
        }
13207
1.14M
        if (_raw == NULL || p->mark <= _resmark)
13208
713k
            break;
13209
431k
        _resmark = p->mark;
13210
431k
        _res = _raw;
13211
431k
    }
13212
713k
    p->mark = _resmark;
13213
713k
    p->level--;
13214
713k
    return _res;
13215
753k
}
13216
static expr_ty
13217
bitwise_or_raw(Parser *p)
13218
1.18M
{
13219
1.18M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13220
1
        _Pypegen_stack_overflow(p);
13221
1
    }
13222
1.18M
    if (p->error_indicator) {
13223
2
        p->level--;
13224
2
        return NULL;
13225
2
    }
13226
1.18M
    expr_ty _res = NULL;
13227
1.18M
    int _mark = p->mark;
13228
1.18M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13229
0
        p->error_indicator = 1;
13230
0
        p->level--;
13231
0
        return NULL;
13232
0
    }
13233
1.18M
    int _start_lineno = p->tokens[_mark]->lineno;
13234
1.18M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13235
1.18M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13236
1.18M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13237
1.18M
    { // bitwise_or '|' bitwise_xor
13238
1.18M
        if (p->error_indicator) {
13239
0
            p->level--;
13240
0
            return NULL;
13241
0
        }
13242
1.18M
        D(fprintf(stderr, "%*c> bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or '|' bitwise_xor"));
13243
1.18M
        Token * _literal;
13244
1.18M
        expr_ty a;
13245
1.18M
        expr_ty b;
13246
1.18M
        if (
13247
1.18M
            (a = bitwise_or_rule(p))  // bitwise_or
13248
1.18M
            &&
13249
1.18M
            (_literal = _PyPegen_expect_token(p, 18))  // token='|'
13250
1.18M
            &&
13251
1.18M
            (b = bitwise_xor_rule(p))  // bitwise_xor
13252
1.18M
        )
13253
934
        {
13254
934
            D(fprintf(stderr, "%*c+ bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or '|' bitwise_xor"));
13255
934
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13256
934
            if (_token == NULL) {
13257
0
                p->level--;
13258
0
                return NULL;
13259
0
            }
13260
934
            int _end_lineno = _token->end_lineno;
13261
934
            UNUSED(_end_lineno); // Only used by EXTRA macro
13262
934
            int _end_col_offset = _token->end_col_offset;
13263
934
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13264
934
            _res = _PyAST_BinOp ( a , BitOr , b , EXTRA );
13265
934
            if (_res == NULL && PyErr_Occurred()) {
13266
0
                p->error_indicator = 1;
13267
0
                p->level--;
13268
0
                return NULL;
13269
0
            }
13270
934
            goto done;
13271
934
        }
13272
1.18M
        p->mark = _mark;
13273
1.18M
        D(fprintf(stderr, "%*c%s bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13274
1.18M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or '|' bitwise_xor"));
13275
1.18M
    }
13276
0
    { // bitwise_xor
13277
1.18M
        if (p->error_indicator) {
13278
301
            p->level--;
13279
301
            return NULL;
13280
301
        }
13281
1.18M
        D(fprintf(stderr, "%*c> bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_xor"));
13282
1.18M
        expr_ty bitwise_xor_var;
13283
1.18M
        if (
13284
1.18M
            (bitwise_xor_var = bitwise_xor_rule(p))  // bitwise_xor
13285
1.18M
        )
13286
860k
        {
13287
860k
            D(fprintf(stderr, "%*c+ bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_xor"));
13288
860k
            _res = bitwise_xor_var;
13289
860k
            goto done;
13290
860k
        }
13291
322k
        p->mark = _mark;
13292
322k
        D(fprintf(stderr, "%*c%s bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13293
322k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_xor"));
13294
322k
    }
13295
0
    _res = NULL;
13296
1.18M
  done:
13297
1.18M
    p->level--;
13298
1.18M
    return _res;
13299
322k
}
13300
13301
// Left-recursive
13302
// bitwise_xor: bitwise_xor '^' bitwise_and | bitwise_and
13303
static expr_ty bitwise_xor_raw(Parser *);
13304
static expr_ty
13305
bitwise_xor_rule(Parser *p)
13306
2.37M
{
13307
2.37M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13308
1
        _Pypegen_stack_overflow(p);
13309
1
    }
13310
2.37M
    expr_ty _res = NULL;
13311
2.37M
    if (_PyPegen_is_memoized(p, bitwise_xor_type, &_res)) {
13312
1.61M
        p->level--;
13313
1.61M
        return _res;
13314
1.61M
    }
13315
754k
    int _mark = p->mark;
13316
754k
    int _resmark = p->mark;
13317
1.18M
    while (1) {
13318
1.18M
        int tmpvar_3 = _PyPegen_update_memo(p, _mark, bitwise_xor_type, _res);
13319
1.18M
        if (tmpvar_3) {
13320
0
            p->level--;
13321
0
            return _res;
13322
0
        }
13323
1.18M
        p->mark = _mark;
13324
1.18M
        void *_raw = bitwise_xor_raw(p);
13325
1.18M
        if (p->error_indicator) {
13326
40.0k
            p->level--;
13327
40.0k
            return NULL;
13328
40.0k
        }
13329
1.14M
        if (_raw == NULL || p->mark <= _resmark)
13330
714k
            break;
13331
432k
        _resmark = p->mark;
13332
432k
        _res = _raw;
13333
432k
    }
13334
714k
    p->mark = _resmark;
13335
714k
    p->level--;
13336
714k
    return _res;
13337
754k
}
13338
static expr_ty
13339
bitwise_xor_raw(Parser *p)
13340
1.18M
{
13341
1.18M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13342
1
        _Pypegen_stack_overflow(p);
13343
1
    }
13344
1.18M
    if (p->error_indicator) {
13345
1
        p->level--;
13346
1
        return NULL;
13347
1
    }
13348
1.18M
    expr_ty _res = NULL;
13349
1.18M
    int _mark = p->mark;
13350
1.18M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13351
0
        p->error_indicator = 1;
13352
0
        p->level--;
13353
0
        return NULL;
13354
0
    }
13355
1.18M
    int _start_lineno = p->tokens[_mark]->lineno;
13356
1.18M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13357
1.18M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13358
1.18M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13359
1.18M
    { // bitwise_xor '^' bitwise_and
13360
1.18M
        if (p->error_indicator) {
13361
0
            p->level--;
13362
0
            return NULL;
13363
0
        }
13364
1.18M
        D(fprintf(stderr, "%*c> bitwise_xor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_xor '^' bitwise_and"));
13365
1.18M
        Token * _literal;
13366
1.18M
        expr_ty a;
13367
1.18M
        expr_ty b;
13368
1.18M
        if (
13369
1.18M
            (a = bitwise_xor_rule(p))  // bitwise_xor
13370
1.18M
            &&
13371
1.18M
            (_literal = _PyPegen_expect_token(p, 32))  // token='^'
13372
1.18M
            &&
13373
1.18M
            (b = bitwise_and_rule(p))  // bitwise_and
13374
1.18M
        )
13375
807
        {
13376
807
            D(fprintf(stderr, "%*c+ bitwise_xor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_xor '^' bitwise_and"));
13377
807
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13378
807
            if (_token == NULL) {
13379
0
                p->level--;
13380
0
                return NULL;
13381
0
            }
13382
807
            int _end_lineno = _token->end_lineno;
13383
807
            UNUSED(_end_lineno); // Only used by EXTRA macro
13384
807
            int _end_col_offset = _token->end_col_offset;
13385
807
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13386
807
            _res = _PyAST_BinOp ( a , BitXor , b , EXTRA );
13387
807
            if (_res == NULL && PyErr_Occurred()) {
13388
0
                p->error_indicator = 1;
13389
0
                p->level--;
13390
0
                return NULL;
13391
0
            }
13392
807
            goto done;
13393
807
        }
13394
1.18M
        p->mark = _mark;
13395
1.18M
        D(fprintf(stderr, "%*c%s bitwise_xor[%d-%d]: %s failed!\n", p->level, ' ',
13396
1.18M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_xor '^' bitwise_and"));
13397
1.18M
    }
13398
0
    { // bitwise_and
13399
1.18M
        if (p->error_indicator) {
13400
202
            p->level--;
13401
202
            return NULL;
13402
202
        }
13403
1.18M
        D(fprintf(stderr, "%*c> bitwise_xor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_and"));
13404
1.18M
        expr_ty bitwise_and_var;
13405
1.18M
        if (
13406
1.18M
            (bitwise_and_var = bitwise_and_rule(p))  // bitwise_and
13407
1.18M
        )
13408
863k
        {
13409
863k
            D(fprintf(stderr, "%*c+ bitwise_xor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_and"));
13410
863k
            _res = bitwise_and_var;
13411
863k
            goto done;
13412
863k
        }
13413
323k
        p->mark = _mark;
13414
323k
        D(fprintf(stderr, "%*c%s bitwise_xor[%d-%d]: %s failed!\n", p->level, ' ',
13415
323k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_and"));
13416
323k
    }
13417
0
    _res = NULL;
13418
1.18M
  done:
13419
1.18M
    p->level--;
13420
1.18M
    return _res;
13421
323k
}
13422
13423
// Left-recursive
13424
// bitwise_and: bitwise_and '&' shift_expr | shift_expr
13425
static expr_ty bitwise_and_raw(Parser *);
13426
static expr_ty
13427
bitwise_and_rule(Parser *p)
13428
2.37M
{
13429
2.37M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13430
1
        _Pypegen_stack_overflow(p);
13431
1
    }
13432
2.37M
    expr_ty _res = NULL;
13433
2.37M
    if (_PyPegen_is_memoized(p, bitwise_and_type, &_res)) {
13434
1.62M
        p->level--;
13435
1.62M
        return _res;
13436
1.62M
    }
13437
755k
    int _mark = p->mark;
13438
755k
    int _resmark = p->mark;
13439
1.19M
    while (1) {
13440
1.19M
        int tmpvar_4 = _PyPegen_update_memo(p, _mark, bitwise_and_type, _res);
13441
1.19M
        if (tmpvar_4) {
13442
0
            p->level--;
13443
0
            return _res;
13444
0
        }
13445
1.19M
        p->mark = _mark;
13446
1.19M
        void *_raw = bitwise_and_raw(p);
13447
1.19M
        if (p->error_indicator) {
13448
40.0k
            p->level--;
13449
40.0k
            return NULL;
13450
40.0k
        }
13451
1.15M
        if (_raw == NULL || p->mark <= _resmark)
13452
715k
            break;
13453
435k
        _resmark = p->mark;
13454
435k
        _res = _raw;
13455
435k
    }
13456
715k
    p->mark = _resmark;
13457
715k
    p->level--;
13458
715k
    return _res;
13459
755k
}
13460
static expr_ty
13461
bitwise_and_raw(Parser *p)
13462
1.19M
{
13463
1.19M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13464
1
        _Pypegen_stack_overflow(p);
13465
1
    }
13466
1.19M
    if (p->error_indicator) {
13467
1
        p->level--;
13468
1
        return NULL;
13469
1
    }
13470
1.19M
    expr_ty _res = NULL;
13471
1.19M
    int _mark = p->mark;
13472
1.19M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13473
0
        p->error_indicator = 1;
13474
0
        p->level--;
13475
0
        return NULL;
13476
0
    }
13477
1.19M
    int _start_lineno = p->tokens[_mark]->lineno;
13478
1.19M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13479
1.19M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13480
1.19M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13481
1.19M
    { // bitwise_and '&' shift_expr
13482
1.19M
        if (p->error_indicator) {
13483
0
            p->level--;
13484
0
            return NULL;
13485
0
        }
13486
1.19M
        D(fprintf(stderr, "%*c> bitwise_and[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_and '&' shift_expr"));
13487
1.19M
        Token * _literal;
13488
1.19M
        expr_ty a;
13489
1.19M
        expr_ty b;
13490
1.19M
        if (
13491
1.19M
            (a = bitwise_and_rule(p))  // bitwise_and
13492
1.19M
            &&
13493
1.19M
            (_literal = _PyPegen_expect_token(p, 19))  // token='&'
13494
1.19M
            &&
13495
1.19M
            (b = shift_expr_rule(p))  // shift_expr
13496
1.19M
        )
13497
2.72k
        {
13498
2.72k
            D(fprintf(stderr, "%*c+ bitwise_and[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_and '&' shift_expr"));
13499
2.72k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13500
2.72k
            if (_token == NULL) {
13501
0
                p->level--;
13502
0
                return NULL;
13503
0
            }
13504
2.72k
            int _end_lineno = _token->end_lineno;
13505
2.72k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13506
2.72k
            int _end_col_offset = _token->end_col_offset;
13507
2.72k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13508
2.72k
            _res = _PyAST_BinOp ( a , BitAnd , b , EXTRA );
13509
2.72k
            if (_res == NULL && PyErr_Occurred()) {
13510
0
                p->error_indicator = 1;
13511
0
                p->level--;
13512
0
                return NULL;
13513
0
            }
13514
2.72k
            goto done;
13515
2.72k
        }
13516
1.18M
        p->mark = _mark;
13517
1.18M
        D(fprintf(stderr, "%*c%s bitwise_and[%d-%d]: %s failed!\n", p->level, ' ',
13518
1.18M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_and '&' shift_expr"));
13519
1.18M
    }
13520
0
    { // shift_expr
13521
1.18M
        if (p->error_indicator) {
13522
375
            p->level--;
13523
375
            return NULL;
13524
375
        }
13525
1.18M
        D(fprintf(stderr, "%*c> bitwise_and[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr"));
13526
1.18M
        expr_ty shift_expr_var;
13527
1.18M
        if (
13528
1.18M
            (shift_expr_var = shift_expr_rule(p))  // shift_expr
13529
1.18M
        )
13530
865k
        {
13531
865k
            D(fprintf(stderr, "%*c+ bitwise_and[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr"));
13532
865k
            _res = shift_expr_var;
13533
865k
            goto done;
13534
865k
        }
13535
323k
        p->mark = _mark;
13536
323k
        D(fprintf(stderr, "%*c%s bitwise_and[%d-%d]: %s failed!\n", p->level, ' ',
13537
323k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr"));
13538
323k
    }
13539
0
    _res = NULL;
13540
1.19M
  done:
13541
1.19M
    p->level--;
13542
1.19M
    return _res;
13543
323k
}
13544
13545
// Left-recursive
13546
// shift_expr: shift_expr '<<' sum | shift_expr '>>' sum | invalid_arithmetic | sum
13547
static expr_ty shift_expr_raw(Parser *);
13548
static expr_ty
13549
shift_expr_rule(Parser *p)
13550
3.58M
{
13551
3.58M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13552
1
        _Pypegen_stack_overflow(p);
13553
1
    }
13554
3.58M
    expr_ty _res = NULL;
13555
3.58M
    if (_PyPegen_is_memoized(p, shift_expr_type, &_res)) {
13556
2.82M
        p->level--;
13557
2.82M
        return _res;
13558
2.82M
    }
13559
759k
    int _mark = p->mark;
13560
759k
    int _resmark = p->mark;
13561
1.19M
    while (1) {
13562
1.19M
        int tmpvar_5 = _PyPegen_update_memo(p, _mark, shift_expr_type, _res);
13563
1.19M
        if (tmpvar_5) {
13564
0
            p->level--;
13565
0
            return _res;
13566
0
        }
13567
1.19M
        p->mark = _mark;
13568
1.19M
        void *_raw = shift_expr_raw(p);
13569
1.19M
        if (p->error_indicator) {
13570
40.0k
            p->level--;
13571
40.0k
            return NULL;
13572
40.0k
        }
13573
1.15M
        if (_raw == NULL || p->mark <= _resmark)
13574
719k
            break;
13575
437k
        _resmark = p->mark;
13576
437k
        _res = _raw;
13577
437k
    }
13578
719k
    p->mark = _resmark;
13579
719k
    p->level--;
13580
719k
    return _res;
13581
759k
}
13582
static expr_ty
13583
shift_expr_raw(Parser *p)
13584
1.19M
{
13585
1.19M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13586
1
        _Pypegen_stack_overflow(p);
13587
1
    }
13588
1.19M
    if (p->error_indicator) {
13589
1
        p->level--;
13590
1
        return NULL;
13591
1
    }
13592
1.19M
    expr_ty _res = NULL;
13593
1.19M
    int _mark = p->mark;
13594
1.19M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13595
0
        p->error_indicator = 1;
13596
0
        p->level--;
13597
0
        return NULL;
13598
0
    }
13599
1.19M
    int _start_lineno = p->tokens[_mark]->lineno;
13600
1.19M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13601
1.19M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13602
1.19M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13603
1.19M
    { // shift_expr '<<' sum
13604
1.19M
        if (p->error_indicator) {
13605
0
            p->level--;
13606
0
            return NULL;
13607
0
        }
13608
1.19M
        D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr '<<' sum"));
13609
1.19M
        Token * _literal;
13610
1.19M
        expr_ty a;
13611
1.19M
        expr_ty b;
13612
1.19M
        if (
13613
1.19M
            (a = shift_expr_rule(p))  // shift_expr
13614
1.19M
            &&
13615
1.19M
            (_literal = _PyPegen_expect_token(p, 33))  // token='<<'
13616
1.19M
            &&
13617
1.19M
            (b = sum_rule(p))  // sum
13618
1.19M
        )
13619
799
        {
13620
799
            D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr '<<' sum"));
13621
799
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13622
799
            if (_token == NULL) {
13623
0
                p->level--;
13624
0
                return NULL;
13625
0
            }
13626
799
            int _end_lineno = _token->end_lineno;
13627
799
            UNUSED(_end_lineno); // Only used by EXTRA macro
13628
799
            int _end_col_offset = _token->end_col_offset;
13629
799
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13630
799
            _res = _PyAST_BinOp ( a , LShift , b , EXTRA );
13631
799
            if (_res == NULL && PyErr_Occurred()) {
13632
0
                p->error_indicator = 1;
13633
0
                p->level--;
13634
0
                return NULL;
13635
0
            }
13636
799
            goto done;
13637
799
        }
13638
1.19M
        p->mark = _mark;
13639
1.19M
        D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13640
1.19M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr '<<' sum"));
13641
1.19M
    }
13642
0
    { // shift_expr '>>' sum
13643
1.19M
        if (p->error_indicator) {
13644
197
            p->level--;
13645
197
            return NULL;
13646
197
        }
13647
1.19M
        D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr '>>' sum"));
13648
1.19M
        Token * _literal;
13649
1.19M
        expr_ty a;
13650
1.19M
        expr_ty b;
13651
1.19M
        if (
13652
1.19M
            (a = shift_expr_rule(p))  // shift_expr
13653
1.19M
            &&
13654
1.19M
            (_literal = _PyPegen_expect_token(p, 34))  // token='>>'
13655
1.19M
            &&
13656
1.19M
            (b = sum_rule(p))  // sum
13657
1.19M
        )
13658
715
        {
13659
715
            D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr '>>' sum"));
13660
715
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13661
715
            if (_token == NULL) {
13662
0
                p->level--;
13663
0
                return NULL;
13664
0
            }
13665
715
            int _end_lineno = _token->end_lineno;
13666
715
            UNUSED(_end_lineno); // Only used by EXTRA macro
13667
715
            int _end_col_offset = _token->end_col_offset;
13668
715
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13669
715
            _res = _PyAST_BinOp ( a , RShift , b , EXTRA );
13670
715
            if (_res == NULL && PyErr_Occurred()) {
13671
0
                p->error_indicator = 1;
13672
0
                p->level--;
13673
0
                return NULL;
13674
0
            }
13675
715
            goto done;
13676
715
        }
13677
1.19M
        p->mark = _mark;
13678
1.19M
        D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13679
1.19M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr '>>' sum"));
13680
1.19M
    }
13681
1.19M
    if (p->call_invalid_rules) { // invalid_arithmetic
13682
306k
        if (p->error_indicator) {
13683
199
            p->level--;
13684
199
            return NULL;
13685
199
        }
13686
306k
        D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_arithmetic"));
13687
306k
        void *invalid_arithmetic_var;
13688
306k
        if (
13689
306k
            (invalid_arithmetic_var = invalid_arithmetic_rule(p))  // invalid_arithmetic
13690
306k
        )
13691
0
        {
13692
0
            D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_arithmetic"));
13693
0
            _res = invalid_arithmetic_var;
13694
0
            goto done;
13695
0
        }
13696
306k
        p->mark = _mark;
13697
306k
        D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13698
306k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_arithmetic"));
13699
306k
    }
13700
1.19M
    { // sum
13701
1.19M
        if (p->error_indicator) {
13702
30.0k
            p->level--;
13703
30.0k
            return NULL;
13704
30.0k
        }
13705
1.16M
        D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum"));
13706
1.16M
        expr_ty sum_var;
13707
1.16M
        if (
13708
1.16M
            (sum_var = sum_rule(p))  // sum
13709
1.16M
        )
13710
871k
        {
13711
871k
            D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum"));
13712
871k
            _res = sum_var;
13713
871k
            goto done;
13714
871k
        }
13715
293k
        p->mark = _mark;
13716
293k
        D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13717
293k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum"));
13718
293k
    }
13719
0
    _res = NULL;
13720
1.16M
  done:
13721
1.16M
    p->level--;
13722
1.16M
    return _res;
13723
293k
}
13724
13725
// Left-recursive
13726
// sum: sum '+' term | sum '-' term | term
13727
static expr_ty sum_raw(Parser *);
13728
static expr_ty
13729
sum_rule(Parser *p)
13730
3.91M
{
13731
3.91M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13732
1
        _Pypegen_stack_overflow(p);
13733
1
    }
13734
3.91M
    expr_ty _res = NULL;
13735
3.91M
    if (_PyPegen_is_memoized(p, sum_type, &_res)) {
13736
3.15M
        p->level--;
13737
3.15M
        return _res;
13738
3.15M
    }
13739
761k
    int _mark = p->mark;
13740
761k
    int _resmark = p->mark;
13741
1.22M
    while (1) {
13742
1.22M
        int tmpvar_6 = _PyPegen_update_memo(p, _mark, sum_type, _res);
13743
1.22M
        if (tmpvar_6) {
13744
0
            p->level--;
13745
0
            return _res;
13746
0
        }
13747
1.22M
        p->mark = _mark;
13748
1.22M
        void *_raw = sum_raw(p);
13749
1.22M
        if (p->error_indicator) {
13750
39.7k
            p->level--;
13751
39.7k
            return NULL;
13752
39.7k
        }
13753
1.18M
        if (_raw == NULL || p->mark <= _resmark)
13754
722k
            break;
13755
462k
        _resmark = p->mark;
13756
462k
        _res = _raw;
13757
462k
    }
13758
722k
    p->mark = _resmark;
13759
722k
    p->level--;
13760
722k
    return _res;
13761
761k
}
13762
static expr_ty
13763
sum_raw(Parser *p)
13764
1.22M
{
13765
1.22M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13766
1
        _Pypegen_stack_overflow(p);
13767
1
    }
13768
1.22M
    if (p->error_indicator) {
13769
2
        p->level--;
13770
2
        return NULL;
13771
2
    }
13772
1.22M
    expr_ty _res = NULL;
13773
1.22M
    int _mark = p->mark;
13774
1.22M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13775
0
        p->error_indicator = 1;
13776
0
        p->level--;
13777
0
        return NULL;
13778
0
    }
13779
1.22M
    int _start_lineno = p->tokens[_mark]->lineno;
13780
1.22M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13781
1.22M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13782
1.22M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13783
1.22M
    { // sum '+' term
13784
1.22M
        if (p->error_indicator) {
13785
0
            p->level--;
13786
0
            return NULL;
13787
0
        }
13788
1.22M
        D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum '+' term"));
13789
1.22M
        Token * _literal;
13790
1.22M
        expr_ty a;
13791
1.22M
        expr_ty b;
13792
1.22M
        if (
13793
1.22M
            (a = sum_rule(p))  // sum
13794
1.22M
            &&
13795
1.22M
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
13796
1.22M
            &&
13797
1.22M
            (b = term_rule(p))  // term
13798
1.22M
        )
13799
11.0k
        {
13800
11.0k
            D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum '+' term"));
13801
11.0k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13802
11.0k
            if (_token == NULL) {
13803
0
                p->level--;
13804
0
                return NULL;
13805
0
            }
13806
11.0k
            int _end_lineno = _token->end_lineno;
13807
11.0k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13808
11.0k
            int _end_col_offset = _token->end_col_offset;
13809
11.0k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13810
11.0k
            _res = _PyAST_BinOp ( a , Add , b , EXTRA );
13811
11.0k
            if (_res == NULL && PyErr_Occurred()) {
13812
0
                p->error_indicator = 1;
13813
0
                p->level--;
13814
0
                return NULL;
13815
0
            }
13816
11.0k
            goto done;
13817
11.0k
        }
13818
1.21M
        p->mark = _mark;
13819
1.21M
        D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13820
1.21M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum '+' term"));
13821
1.21M
    }
13822
0
    { // sum '-' term
13823
1.21M
        if (p->error_indicator) {
13824
241
            p->level--;
13825
241
            return NULL;
13826
241
        }
13827
1.21M
        D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum '-' term"));
13828
1.21M
        Token * _literal;
13829
1.21M
        expr_ty a;
13830
1.21M
        expr_ty b;
13831
1.21M
        if (
13832
1.21M
            (a = sum_rule(p))  // sum
13833
1.21M
            &&
13834
1.21M
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
13835
1.21M
            &&
13836
1.21M
            (b = term_rule(p))  // term
13837
1.21M
        )
13838
12.9k
        {
13839
12.9k
            D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum '-' term"));
13840
12.9k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13841
12.9k
            if (_token == NULL) {
13842
0
                p->level--;
13843
0
                return NULL;
13844
0
            }
13845
12.9k
            int _end_lineno = _token->end_lineno;
13846
12.9k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13847
12.9k
            int _end_col_offset = _token->end_col_offset;
13848
12.9k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13849
12.9k
            _res = _PyAST_BinOp ( a , Sub , b , EXTRA );
13850
12.9k
            if (_res == NULL && PyErr_Occurred()) {
13851
0
                p->error_indicator = 1;
13852
0
                p->level--;
13853
0
                return NULL;
13854
0
            }
13855
12.9k
            goto done;
13856
12.9k
        }
13857
1.20M
        p->mark = _mark;
13858
1.20M
        D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13859
1.20M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum '-' term"));
13860
1.20M
    }
13861
0
    { // term
13862
1.20M
        if (p->error_indicator) {
13863
962
            p->level--;
13864
962
            return NULL;
13865
962
        }
13866
1.19M
        D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term"));
13867
1.19M
        expr_ty term_var;
13868
1.19M
        if (
13869
1.19M
            (term_var = term_rule(p))  // term
13870
1.19M
        )
13871
876k
        {
13872
876k
            D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term"));
13873
876k
            _res = term_var;
13874
876k
            goto done;
13875
876k
        }
13876
323k
        p->mark = _mark;
13877
323k
        D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13878
323k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term"));
13879
323k
    }
13880
0
    _res = NULL;
13881
1.22M
  done:
13882
1.22M
    p->level--;
13883
1.22M
    return _res;
13884
323k
}
13885
13886
// Left-recursive
13887
// term:
13888
//     | term '*' factor
13889
//     | term '/' factor
13890
//     | term '//' factor
13891
//     | term '%' factor
13892
//     | term '@' factor
13893
//     | invalid_factor
13894
//     | factor
13895
static expr_ty term_raw(Parser *);
13896
static expr_ty
13897
term_rule(Parser *p)
13898
7.52M
{
13899
7.52M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13900
1
        _Pypegen_stack_overflow(p);
13901
1
    }
13902
7.52M
    expr_ty _res = NULL;
13903
7.52M
    if (_PyPegen_is_memoized(p, term_type, &_res)) {
13904
6.73M
        p->level--;
13905
6.73M
        return _res;
13906
6.73M
    }
13907
788k
    int _mark = p->mark;
13908
788k
    int _resmark = p->mark;
13909
1.26M
    while (1) {
13910
1.26M
        int tmpvar_7 = _PyPegen_update_memo(p, _mark, term_type, _res);
13911
1.26M
        if (tmpvar_7) {
13912
0
            p->level--;
13913
0
            return _res;
13914
0
        }
13915
1.26M
        p->mark = _mark;
13916
1.26M
        void *_raw = term_raw(p);
13917
1.26M
        if (p->error_indicator) {
13918
39.7k
            p->level--;
13919
39.7k
            return NULL;
13920
39.7k
        }
13921
1.22M
        if (_raw == NULL || p->mark <= _resmark)
13922
748k
            break;
13923
479k
        _resmark = p->mark;
13924
479k
        _res = _raw;
13925
479k
    }
13926
748k
    p->mark = _resmark;
13927
748k
    p->level--;
13928
748k
    return _res;
13929
788k
}
13930
static expr_ty
13931
term_raw(Parser *p)
13932
1.26M
{
13933
1.26M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13934
1
        _Pypegen_stack_overflow(p);
13935
1
    }
13936
1.26M
    if (p->error_indicator) {
13937
1
        p->level--;
13938
1
        return NULL;
13939
1
    }
13940
1.26M
    expr_ty _res = NULL;
13941
1.26M
    int _mark = p->mark;
13942
1.26M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13943
0
        p->error_indicator = 1;
13944
0
        p->level--;
13945
0
        return NULL;
13946
0
    }
13947
1.26M
    int _start_lineno = p->tokens[_mark]->lineno;
13948
1.26M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13949
1.26M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13950
1.26M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13951
1.26M
    { // term '*' factor
13952
1.26M
        if (p->error_indicator) {
13953
0
            p->level--;
13954
0
            return NULL;
13955
0
        }
13956
1.26M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '*' factor"));
13957
1.26M
        Token * _literal;
13958
1.26M
        expr_ty a;
13959
1.26M
        expr_ty b;
13960
1.26M
        if (
13961
1.26M
            (a = term_rule(p))  // term
13962
1.26M
            &&
13963
1.26M
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
13964
1.26M
            &&
13965
1.26M
            (b = factor_rule(p))  // factor
13966
1.26M
        )
13967
6.25k
        {
13968
6.25k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '*' factor"));
13969
6.25k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13970
6.25k
            if (_token == NULL) {
13971
0
                p->level--;
13972
0
                return NULL;
13973
0
            }
13974
6.25k
            int _end_lineno = _token->end_lineno;
13975
6.25k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13976
6.25k
            int _end_col_offset = _token->end_col_offset;
13977
6.25k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13978
6.25k
            _res = _PyAST_BinOp ( a , Mult , b , EXTRA );
13979
6.25k
            if (_res == NULL && PyErr_Occurred()) {
13980
0
                p->error_indicator = 1;
13981
0
                p->level--;
13982
0
                return NULL;
13983
0
            }
13984
6.25k
            goto done;
13985
6.25k
        }
13986
1.26M
        p->mark = _mark;
13987
1.26M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
13988
1.26M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '*' factor"));
13989
1.26M
    }
13990
0
    { // term '/' factor
13991
1.26M
        if (p->error_indicator) {
13992
350
            p->level--;
13993
350
            return NULL;
13994
350
        }
13995
1.26M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '/' factor"));
13996
1.26M
        Token * _literal;
13997
1.26M
        expr_ty a;
13998
1.26M
        expr_ty b;
13999
1.26M
        if (
14000
1.26M
            (a = term_rule(p))  // term
14001
1.26M
            &&
14002
1.26M
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
14003
1.26M
            &&
14004
1.26M
            (b = factor_rule(p))  // factor
14005
1.26M
        )
14006
3.38k
        {
14007
3.38k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '/' factor"));
14008
3.38k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14009
3.38k
            if (_token == NULL) {
14010
0
                p->level--;
14011
0
                return NULL;
14012
0
            }
14013
3.38k
            int _end_lineno = _token->end_lineno;
14014
3.38k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14015
3.38k
            int _end_col_offset = _token->end_col_offset;
14016
3.38k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14017
3.38k
            _res = _PyAST_BinOp ( a , Div , b , EXTRA );
14018
3.38k
            if (_res == NULL && PyErr_Occurred()) {
14019
0
                p->error_indicator = 1;
14020
0
                p->level--;
14021
0
                return NULL;
14022
0
            }
14023
3.38k
            goto done;
14024
3.38k
        }
14025
1.25M
        p->mark = _mark;
14026
1.25M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14027
1.25M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '/' factor"));
14028
1.25M
    }
14029
0
    { // term '//' factor
14030
1.25M
        if (p->error_indicator) {
14031
247
            p->level--;
14032
247
            return NULL;
14033
247
        }
14034
1.25M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '//' factor"));
14035
1.25M
        Token * _literal;
14036
1.25M
        expr_ty a;
14037
1.25M
        expr_ty b;
14038
1.25M
        if (
14039
1.25M
            (a = term_rule(p))  // term
14040
1.25M
            &&
14041
1.25M
            (_literal = _PyPegen_expect_token(p, 47))  // token='//'
14042
1.25M
            &&
14043
1.25M
            (b = factor_rule(p))  // factor
14044
1.25M
        )
14045
629
        {
14046
629
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '//' factor"));
14047
629
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14048
629
            if (_token == NULL) {
14049
0
                p->level--;
14050
0
                return NULL;
14051
0
            }
14052
629
            int _end_lineno = _token->end_lineno;
14053
629
            UNUSED(_end_lineno); // Only used by EXTRA macro
14054
629
            int _end_col_offset = _token->end_col_offset;
14055
629
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14056
629
            _res = _PyAST_BinOp ( a , FloorDiv , b , EXTRA );
14057
629
            if (_res == NULL && PyErr_Occurred()) {
14058
0
                p->error_indicator = 1;
14059
0
                p->level--;
14060
0
                return NULL;
14061
0
            }
14062
629
            goto done;
14063
629
        }
14064
1.25M
        p->mark = _mark;
14065
1.25M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14066
1.25M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '//' factor"));
14067
1.25M
    }
14068
0
    { // term '%' factor
14069
1.25M
        if (p->error_indicator) {
14070
194
            p->level--;
14071
194
            return NULL;
14072
194
        }
14073
1.25M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '%' factor"));
14074
1.25M
        Token * _literal;
14075
1.25M
        expr_ty a;
14076
1.25M
        expr_ty b;
14077
1.25M
        if (
14078
1.25M
            (a = term_rule(p))  // term
14079
1.25M
            &&
14080
1.25M
            (_literal = _PyPegen_expect_token(p, 24))  // token='%'
14081
1.25M
            &&
14082
1.25M
            (b = factor_rule(p))  // factor
14083
1.25M
        )
14084
3.21k
        {
14085
3.21k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '%' factor"));
14086
3.21k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14087
3.21k
            if (_token == NULL) {
14088
0
                p->level--;
14089
0
                return NULL;
14090
0
            }
14091
3.21k
            int _end_lineno = _token->end_lineno;
14092
3.21k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14093
3.21k
            int _end_col_offset = _token->end_col_offset;
14094
3.21k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14095
3.21k
            _res = _PyAST_BinOp ( a , Mod , b , EXTRA );
14096
3.21k
            if (_res == NULL && PyErr_Occurred()) {
14097
0
                p->error_indicator = 1;
14098
0
                p->level--;
14099
0
                return NULL;
14100
0
            }
14101
3.21k
            goto done;
14102
3.21k
        }
14103
1.25M
        p->mark = _mark;
14104
1.25M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14105
1.25M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '%' factor"));
14106
1.25M
    }
14107
0
    { // term '@' factor
14108
1.25M
        if (p->error_indicator) {
14109
207
            p->level--;
14110
207
            return NULL;
14111
207
        }
14112
1.25M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '@' factor"));
14113
1.25M
        Token * _literal;
14114
1.25M
        expr_ty a;
14115
1.25M
        expr_ty b;
14116
1.25M
        if (
14117
1.25M
            (a = term_rule(p))  // term
14118
1.25M
            &&
14119
1.25M
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
14120
1.25M
            &&
14121
1.25M
            (b = factor_rule(p))  // factor
14122
1.25M
        )
14123
2.85k
        {
14124
2.85k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '@' factor"));
14125
2.85k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14126
2.85k
            if (_token == NULL) {
14127
0
                p->level--;
14128
0
                return NULL;
14129
0
            }
14130
2.85k
            int _end_lineno = _token->end_lineno;
14131
2.85k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14132
2.85k
            int _end_col_offset = _token->end_col_offset;
14133
2.85k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14134
2.85k
            _res = CHECK_VERSION ( expr_ty , 5 , "The '@' operator is" , _PyAST_BinOp ( a , MatMult , b , EXTRA ) );
14135
2.85k
            if (_res == NULL && PyErr_Occurred()) {
14136
0
                p->error_indicator = 1;
14137
0
                p->level--;
14138
0
                return NULL;
14139
0
            }
14140
2.85k
            goto done;
14141
2.85k
        }
14142
1.25M
        p->mark = _mark;
14143
1.25M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14144
1.25M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '@' factor"));
14145
1.25M
    }
14146
1.25M
    if (p->call_invalid_rules) { // invalid_factor
14147
317k
        if (p->error_indicator) {
14148
91
            p->level--;
14149
91
            return NULL;
14150
91
        }
14151
317k
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_factor"));
14152
317k
        void *invalid_factor_var;
14153
317k
        if (
14154
317k
            (invalid_factor_var = invalid_factor_rule(p))  // invalid_factor
14155
317k
        )
14156
0
        {
14157
0
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_factor"));
14158
0
            _res = invalid_factor_var;
14159
0
            goto done;
14160
0
        }
14161
317k
        p->mark = _mark;
14162
317k
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14163
317k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_factor"));
14164
317k
    }
14165
1.25M
    { // factor
14166
1.25M
        if (p->error_indicator) {
14167
175
            p->level--;
14168
175
            return NULL;
14169
175
        }
14170
1.25M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "factor"));
14171
1.25M
        expr_ty factor_var;
14172
1.25M
        if (
14173
1.25M
            (factor_var = factor_rule(p))  // factor
14174
1.25M
        )
14175
926k
        {
14176
926k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "factor"));
14177
926k
            _res = factor_var;
14178
926k
            goto done;
14179
926k
        }
14180
324k
        p->mark = _mark;
14181
324k
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14182
324k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "factor"));
14183
324k
    }
14184
0
    _res = NULL;
14185
1.26M
  done:
14186
1.26M
    p->level--;
14187
1.26M
    return _res;
14188
324k
}
14189
14190
// factor: '+' factor | '-' factor | '~' factor | power
14191
static expr_ty
14192
factor_rule(Parser *p)
14193
1.46M
{
14194
1.46M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14195
1
        _Pypegen_stack_overflow(p);
14196
1
    }
14197
1.46M
    if (p->error_indicator) {
14198
1
        p->level--;
14199
1
        return NULL;
14200
1
    }
14201
1.46M
    expr_ty _res = NULL;
14202
1.46M
    if (_PyPegen_is_memoized(p, factor_type, &_res)) {
14203
465k
        p->level--;
14204
465k
        return _res;
14205
465k
    }
14206
1.00M
    int _mark = p->mark;
14207
1.00M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14208
0
        p->error_indicator = 1;
14209
0
        p->level--;
14210
0
        return NULL;
14211
0
    }
14212
1.00M
    int _start_lineno = p->tokens[_mark]->lineno;
14213
1.00M
    UNUSED(_start_lineno); // Only used by EXTRA macro
14214
1.00M
    int _start_col_offset = p->tokens[_mark]->col_offset;
14215
1.00M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14216
1.00M
    { // '+' factor
14217
1.00M
        if (p->error_indicator) {
14218
0
            p->level--;
14219
0
            return NULL;
14220
0
        }
14221
1.00M
        D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+' factor"));
14222
1.00M
        Token * _literal;
14223
1.00M
        expr_ty a;
14224
1.00M
        if (
14225
1.00M
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
14226
1.00M
            &&
14227
1.00M
            (a = factor_rule(p))  // factor
14228
1.00M
        )
14229
71.4k
        {
14230
71.4k
            D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+' factor"));
14231
71.4k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14232
71.4k
            if (_token == NULL) {
14233
0
                p->level--;
14234
0
                return NULL;
14235
0
            }
14236
71.4k
            int _end_lineno = _token->end_lineno;
14237
71.4k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14238
71.4k
            int _end_col_offset = _token->end_col_offset;
14239
71.4k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14240
71.4k
            _res = _PyAST_UnaryOp ( UAdd , a , EXTRA );
14241
71.4k
            if (_res == NULL && PyErr_Occurred()) {
14242
0
                p->error_indicator = 1;
14243
0
                p->level--;
14244
0
                return NULL;
14245
0
            }
14246
71.4k
            goto done;
14247
71.4k
        }
14248
932k
        p->mark = _mark;
14249
932k
        D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14250
932k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+' factor"));
14251
932k
    }
14252
0
    { // '-' factor
14253
932k
        if (p->error_indicator) {
14254
488
            p->level--;
14255
488
            return NULL;
14256
488
        }
14257
931k
        D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' factor"));
14258
931k
        Token * _literal;
14259
931k
        expr_ty a;
14260
931k
        if (
14261
931k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
14262
931k
            &&
14263
931k
            (a = factor_rule(p))  // factor
14264
931k
        )
14265
97.3k
        {
14266
97.3k
            D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' factor"));
14267
97.3k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14268
97.3k
            if (_token == NULL) {
14269
0
                p->level--;
14270
0
                return NULL;
14271
0
            }
14272
97.3k
            int _end_lineno = _token->end_lineno;
14273
97.3k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14274
97.3k
            int _end_col_offset = _token->end_col_offset;
14275
97.3k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14276
97.3k
            _res = _PyAST_UnaryOp ( USub , a , EXTRA );
14277
97.3k
            if (_res == NULL && PyErr_Occurred()) {
14278
0
                p->error_indicator = 1;
14279
0
                p->level--;
14280
0
                return NULL;
14281
0
            }
14282
97.3k
            goto done;
14283
97.3k
        }
14284
834k
        p->mark = _mark;
14285
834k
        D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14286
834k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' factor"));
14287
834k
    }
14288
0
    { // '~' factor
14289
834k
        if (p->error_indicator) {
14290
3.64k
            p->level--;
14291
3.64k
            return NULL;
14292
3.64k
        }
14293
830k
        D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'~' factor"));
14294
830k
        Token * _literal;
14295
830k
        expr_ty a;
14296
830k
        if (
14297
830k
            (_literal = _PyPegen_expect_token(p, 31))  // token='~'
14298
830k
            &&
14299
830k
            (a = factor_rule(p))  // factor
14300
830k
        )
14301
20.3k
        {
14302
20.3k
            D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'~' factor"));
14303
20.3k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14304
20.3k
            if (_token == NULL) {
14305
0
                p->level--;
14306
0
                return NULL;
14307
0
            }
14308
20.3k
            int _end_lineno = _token->end_lineno;
14309
20.3k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14310
20.3k
            int _end_col_offset = _token->end_col_offset;
14311
20.3k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14312
20.3k
            _res = _PyAST_UnaryOp ( Invert , a , EXTRA );
14313
20.3k
            if (_res == NULL && PyErr_Occurred()) {
14314
0
                p->error_indicator = 1;
14315
0
                p->level--;
14316
0
                return NULL;
14317
0
            }
14318
20.3k
            goto done;
14319
20.3k
        }
14320
810k
        p->mark = _mark;
14321
810k
        D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14322
810k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'~' factor"));
14323
810k
    }
14324
0
    { // power
14325
810k
        if (p->error_indicator) {
14326
361
            p->level--;
14327
361
            return NULL;
14328
361
        }
14329
810k
        D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "power"));
14330
810k
        expr_ty power_var;
14331
810k
        if (
14332
810k
            (power_var = power_rule(p))  // power
14333
810k
        )
14334
479k
        {
14335
479k
            D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "power"));
14336
479k
            _res = power_var;
14337
479k
            goto done;
14338
479k
        }
14339
330k
        p->mark = _mark;
14340
330k
        D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14341
330k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "power"));
14342
330k
    }
14343
0
    _res = NULL;
14344
999k
  done:
14345
999k
    _PyPegen_insert_memo(p, _mark, factor_type, _res);
14346
999k
    p->level--;
14347
999k
    return _res;
14348
330k
}
14349
14350
// power: await_primary '**' factor | await_primary
14351
static expr_ty
14352
power_rule(Parser *p)
14353
810k
{
14354
810k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14355
1
        _Pypegen_stack_overflow(p);
14356
1
    }
14357
810k
    if (p->error_indicator) {
14358
1
        p->level--;
14359
1
        return NULL;
14360
1
    }
14361
810k
    expr_ty _res = NULL;
14362
810k
    int _mark = p->mark;
14363
810k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14364
0
        p->error_indicator = 1;
14365
0
        p->level--;
14366
0
        return NULL;
14367
0
    }
14368
810k
    int _start_lineno = p->tokens[_mark]->lineno;
14369
810k
    UNUSED(_start_lineno); // Only used by EXTRA macro
14370
810k
    int _start_col_offset = p->tokens[_mark]->col_offset;
14371
810k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14372
810k
    { // await_primary '**' factor
14373
810k
        if (p->error_indicator) {
14374
0
            p->level--;
14375
0
            return NULL;
14376
0
        }
14377
810k
        D(fprintf(stderr, "%*c> power[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "await_primary '**' factor"));
14378
810k
        Token * _literal;
14379
810k
        expr_ty a;
14380
810k
        expr_ty b;
14381
810k
        if (
14382
810k
            (a = await_primary_rule(p))  // await_primary
14383
810k
            &&
14384
810k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
14385
810k
            &&
14386
810k
            (b = factor_rule(p))  // factor
14387
810k
        )
14388
1.67k
        {
14389
1.67k
            D(fprintf(stderr, "%*c+ power[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "await_primary '**' factor"));
14390
1.67k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14391
1.67k
            if (_token == NULL) {
14392
0
                p->level--;
14393
0
                return NULL;
14394
0
            }
14395
1.67k
            int _end_lineno = _token->end_lineno;
14396
1.67k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14397
1.67k
            int _end_col_offset = _token->end_col_offset;
14398
1.67k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14399
1.67k
            _res = _PyAST_BinOp ( a , Pow , b , EXTRA );
14400
1.67k
            if (_res == NULL && PyErr_Occurred()) {
14401
0
                p->error_indicator = 1;
14402
0
                p->level--;
14403
0
                return NULL;
14404
0
            }
14405
1.67k
            goto done;
14406
1.67k
        }
14407
808k
        p->mark = _mark;
14408
808k
        D(fprintf(stderr, "%*c%s power[%d-%d]: %s failed!\n", p->level, ' ',
14409
808k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "await_primary '**' factor"));
14410
808k
    }
14411
0
    { // await_primary
14412
808k
        if (p->error_indicator) {
14413
39.7k
            p->level--;
14414
39.7k
            return NULL;
14415
39.7k
        }
14416
768k
        D(fprintf(stderr, "%*c> power[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "await_primary"));
14417
768k
        expr_ty await_primary_var;
14418
768k
        if (
14419
768k
            (await_primary_var = await_primary_rule(p))  // await_primary
14420
768k
        )
14421
478k
        {
14422
478k
            D(fprintf(stderr, "%*c+ power[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "await_primary"));
14423
478k
            _res = await_primary_var;
14424
478k
            goto done;
14425
478k
        }
14426
290k
        p->mark = _mark;
14427
290k
        D(fprintf(stderr, "%*c%s power[%d-%d]: %s failed!\n", p->level, ' ',
14428
290k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "await_primary"));
14429
290k
    }
14430
0
    _res = NULL;
14431
770k
  done:
14432
770k
    p->level--;
14433
770k
    return _res;
14434
290k
}
14435
14436
// await_primary: 'await' primary | primary
14437
static expr_ty
14438
await_primary_rule(Parser *p)
14439
1.57M
{
14440
1.57M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14441
1
        _Pypegen_stack_overflow(p);
14442
1
    }
14443
1.57M
    if (p->error_indicator) {
14444
1
        p->level--;
14445
1
        return NULL;
14446
1
    }
14447
1.57M
    expr_ty _res = NULL;
14448
1.57M
    if (_PyPegen_is_memoized(p, await_primary_type, &_res)) {
14449
768k
        p->level--;
14450
768k
        return _res;
14451
768k
    }
14452
810k
    int _mark = p->mark;
14453
810k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14454
0
        p->error_indicator = 1;
14455
0
        p->level--;
14456
0
        return NULL;
14457
0
    }
14458
810k
    int _start_lineno = p->tokens[_mark]->lineno;
14459
810k
    UNUSED(_start_lineno); // Only used by EXTRA macro
14460
810k
    int _start_col_offset = p->tokens[_mark]->col_offset;
14461
810k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14462
810k
    { // 'await' primary
14463
810k
        if (p->error_indicator) {
14464
0
            p->level--;
14465
0
            return NULL;
14466
0
        }
14467
810k
        D(fprintf(stderr, "%*c> await_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'await' primary"));
14468
810k
        Token * _keyword;
14469
810k
        expr_ty a;
14470
810k
        if (
14471
810k
            (_keyword = _PyPegen_expect_token(p, 598))  // token='await'
14472
810k
            &&
14473
810k
            (a = primary_rule(p))  // primary
14474
810k
        )
14475
390
        {
14476
390
            D(fprintf(stderr, "%*c+ await_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'await' primary"));
14477
390
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14478
390
            if (_token == NULL) {
14479
0
                p->level--;
14480
0
                return NULL;
14481
0
            }
14482
390
            int _end_lineno = _token->end_lineno;
14483
390
            UNUSED(_end_lineno); // Only used by EXTRA macro
14484
390
            int _end_col_offset = _token->end_col_offset;
14485
390
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14486
390
            _res = CHECK_VERSION ( expr_ty , 5 , "Await expressions are" , _PyAST_Await ( a , EXTRA ) );
14487
390
            if (_res == NULL && PyErr_Occurred()) {
14488
0
                p->error_indicator = 1;
14489
0
                p->level--;
14490
0
                return NULL;
14491
0
            }
14492
390
            goto done;
14493
390
        }
14494
809k
        p->mark = _mark;
14495
809k
        D(fprintf(stderr, "%*c%s await_primary[%d-%d]: %s failed!\n", p->level, ' ',
14496
809k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'await' primary"));
14497
809k
    }
14498
0
    { // primary
14499
809k
        if (p->error_indicator) {
14500
196
            p->level--;
14501
196
            return NULL;
14502
196
        }
14503
809k
        D(fprintf(stderr, "%*c> await_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary"));
14504
809k
        expr_ty primary_var;
14505
809k
        if (
14506
809k
            (primary_var = primary_rule(p))  // primary
14507
809k
        )
14508
479k
        {
14509
479k
            D(fprintf(stderr, "%*c+ await_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary"));
14510
479k
            _res = primary_var;
14511
479k
            goto done;
14512
479k
        }
14513
329k
        p->mark = _mark;
14514
329k
        D(fprintf(stderr, "%*c%s await_primary[%d-%d]: %s failed!\n", p->level, ' ',
14515
329k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary"));
14516
329k
    }
14517
0
    _res = NULL;
14518
809k
  done:
14519
809k
    _PyPegen_insert_memo(p, _mark, await_primary_type, _res);
14520
809k
    p->level--;
14521
809k
    return _res;
14522
329k
}
14523
14524
// Left-recursive
14525
// primary:
14526
//     | primary '.' NAME
14527
//     | primary genexp
14528
//     | primary '(' arguments? ')'
14529
//     | primary '[' slices ']'
14530
//     | atom
14531
static expr_ty primary_raw(Parser *);
14532
static expr_ty
14533
primary_rule(Parser *p)
14534
6.12M
{
14535
6.12M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14536
2
        _Pypegen_stack_overflow(p);
14537
2
    }
14538
6.12M
    expr_ty _res = NULL;
14539
6.12M
    if (_PyPegen_is_memoized(p, primary_type, &_res)) {
14540
5.31M
        p->level--;
14541
5.31M
        return _res;
14542
5.31M
    }
14543
810k
    int _mark = p->mark;
14544
810k
    int _resmark = p->mark;
14545
1.35M
    while (1) {
14546
1.35M
        int tmpvar_8 = _PyPegen_update_memo(p, _mark, primary_type, _res);
14547
1.35M
        if (tmpvar_8) {
14548
0
            p->level--;
14549
0
            return _res;
14550
0
        }
14551
1.35M
        p->mark = _mark;
14552
1.35M
        void *_raw = primary_raw(p);
14553
1.35M
        if (p->error_indicator) {
14554
39.5k
            p->level--;
14555
39.5k
            return NULL;
14556
39.5k
        }
14557
1.31M
        if (_raw == NULL || p->mark <= _resmark)
14558
770k
            break;
14559
545k
        _resmark = p->mark;
14560
545k
        _res = _raw;
14561
545k
    }
14562
770k
    p->mark = _resmark;
14563
770k
    p->level--;
14564
770k
    return _res;
14565
810k
}
14566
static expr_ty
14567
primary_raw(Parser *p)
14568
1.35M
{
14569
1.35M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14570
2
        _Pypegen_stack_overflow(p);
14571
2
    }
14572
1.35M
    if (p->error_indicator) {
14573
3
        p->level--;
14574
3
        return NULL;
14575
3
    }
14576
1.35M
    expr_ty _res = NULL;
14577
1.35M
    int _mark = p->mark;
14578
1.35M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14579
0
        p->error_indicator = 1;
14580
0
        p->level--;
14581
0
        return NULL;
14582
0
    }
14583
1.35M
    int _start_lineno = p->tokens[_mark]->lineno;
14584
1.35M
    UNUSED(_start_lineno); // Only used by EXTRA macro
14585
1.35M
    int _start_col_offset = p->tokens[_mark]->col_offset;
14586
1.35M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14587
1.35M
    { // primary '.' NAME
14588
1.35M
        if (p->error_indicator) {
14589
0
            p->level--;
14590
0
            return NULL;
14591
0
        }
14592
1.35M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '.' NAME"));
14593
1.35M
        Token * _literal;
14594
1.35M
        expr_ty a;
14595
1.35M
        expr_ty b;
14596
1.35M
        if (
14597
1.35M
            (a = primary_rule(p))  // primary
14598
1.35M
            &&
14599
1.35M
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
14600
1.35M
            &&
14601
1.35M
            (b = _PyPegen_name_token(p))  // NAME
14602
1.35M
        )
14603
20.5k
        {
14604
20.5k
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '.' NAME"));
14605
20.5k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14606
20.5k
            if (_token == NULL) {
14607
0
                p->level--;
14608
0
                return NULL;
14609
0
            }
14610
20.5k
            int _end_lineno = _token->end_lineno;
14611
20.5k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14612
20.5k
            int _end_col_offset = _token->end_col_offset;
14613
20.5k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14614
20.5k
            _res = _PyAST_Attribute ( a , b -> v . Name . id , Load , EXTRA );
14615
20.5k
            if (_res == NULL && PyErr_Occurred()) {
14616
0
                p->error_indicator = 1;
14617
0
                p->level--;
14618
0
                return NULL;
14619
0
            }
14620
20.5k
            goto done;
14621
20.5k
        }
14622
1.33M
        p->mark = _mark;
14623
1.33M
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14624
1.33M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '.' NAME"));
14625
1.33M
    }
14626
0
    { // primary genexp
14627
1.33M
        if (p->error_indicator) {
14628
407
            p->level--;
14629
407
            return NULL;
14630
407
        }
14631
1.33M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary genexp"));
14632
1.33M
        expr_ty a;
14633
1.33M
        expr_ty b;
14634
1.33M
        if (
14635
1.33M
            (a = primary_rule(p))  // primary
14636
1.33M
            &&
14637
1.33M
            (b = genexp_rule(p))  // genexp
14638
1.33M
        )
14639
980
        {
14640
980
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary genexp"));
14641
980
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14642
980
            if (_token == NULL) {
14643
0
                p->level--;
14644
0
                return NULL;
14645
0
            }
14646
980
            int _end_lineno = _token->end_lineno;
14647
980
            UNUSED(_end_lineno); // Only used by EXTRA macro
14648
980
            int _end_col_offset = _token->end_col_offset;
14649
980
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14650
980
            _res = _PyAST_Call ( a , CHECK ( asdl_expr_seq* , ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
14651
980
            if (_res == NULL && PyErr_Occurred()) {
14652
0
                p->error_indicator = 1;
14653
0
                p->level--;
14654
0
                return NULL;
14655
0
            }
14656
980
            goto done;
14657
980
        }
14658
1.33M
        p->mark = _mark;
14659
1.33M
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14660
1.33M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary genexp"));
14661
1.33M
    }
14662
0
    { // primary '(' arguments? ')'
14663
1.33M
        if (p->error_indicator) {
14664
4.20k
            p->level--;
14665
4.20k
            return NULL;
14666
4.20k
        }
14667
1.32M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '(' arguments? ')'"));
14668
1.32M
        Token * _literal;
14669
1.32M
        Token * _literal_1;
14670
1.32M
        expr_ty a;
14671
1.32M
        void *b;
14672
1.32M
        if (
14673
1.32M
            (a = primary_rule(p))  // primary
14674
1.32M
            &&
14675
1.32M
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
14676
1.32M
            &&
14677
1.32M
            (b = arguments_rule(p), !p->error_indicator)  // arguments?
14678
1.32M
            &&
14679
1.32M
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
14680
1.32M
        )
14681
30.8k
        {
14682
30.8k
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '(' arguments? ')'"));
14683
30.8k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14684
30.8k
            if (_token == NULL) {
14685
0
                p->level--;
14686
0
                return NULL;
14687
0
            }
14688
30.8k
            int _end_lineno = _token->end_lineno;
14689
30.8k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14690
30.8k
            int _end_col_offset = _token->end_col_offset;
14691
30.8k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14692
30.8k
            _res = _PyAST_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
14693
30.8k
            if (_res == NULL && PyErr_Occurred()) {
14694
0
                p->error_indicator = 1;
14695
0
                p->level--;
14696
0
                return NULL;
14697
0
            }
14698
30.8k
            goto done;
14699
30.8k
        }
14700
1.29M
        p->mark = _mark;
14701
1.29M
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14702
1.29M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '(' arguments? ')'"));
14703
1.29M
    }
14704
0
    { // primary '[' slices ']'
14705
1.29M
        if (p->error_indicator) {
14706
2.70k
            p->level--;
14707
2.70k
            return NULL;
14708
2.70k
        }
14709
1.29M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '[' slices ']'"));
14710
1.29M
        Token * _literal;
14711
1.29M
        Token * _literal_1;
14712
1.29M
        expr_ty a;
14713
1.29M
        expr_ty b;
14714
1.29M
        if (
14715
1.29M
            (a = primary_rule(p))  // primary
14716
1.29M
            &&
14717
1.29M
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
14718
1.29M
            &&
14719
1.29M
            (b = slices_rule(p))  // slices
14720
1.29M
            &&
14721
1.29M
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
14722
1.29M
        )
14723
4.77k
        {
14724
4.77k
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '[' slices ']'"));
14725
4.77k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14726
4.77k
            if (_token == NULL) {
14727
0
                p->level--;
14728
0
                return NULL;
14729
0
            }
14730
4.77k
            int _end_lineno = _token->end_lineno;
14731
4.77k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14732
4.77k
            int _end_col_offset = _token->end_col_offset;
14733
4.77k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14734
4.77k
            _res = _PyAST_Subscript ( a , b , Load , EXTRA );
14735
4.77k
            if (_res == NULL && PyErr_Occurred()) {
14736
0
                p->error_indicator = 1;
14737
0
                p->level--;
14738
0
                return NULL;
14739
0
            }
14740
4.77k
            goto done;
14741
4.77k
        }
14742
1.29M
        p->mark = _mark;
14743
1.29M
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14744
1.29M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '[' slices ']'"));
14745
1.29M
    }
14746
0
    { // atom
14747
1.29M
        if (p->error_indicator) {
14748
988
            p->level--;
14749
988
            return NULL;
14750
988
        }
14751
1.29M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "atom"));
14752
1.29M
        expr_ty atom_var;
14753
1.29M
        if (
14754
1.29M
            (atom_var = atom_rule(p))  // atom
14755
1.29M
        )
14756
968k
        {
14757
968k
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "atom"));
14758
968k
            _res = atom_var;
14759
968k
            goto done;
14760
968k
        }
14761
322k
        p->mark = _mark;
14762
322k
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14763
322k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "atom"));
14764
322k
    }
14765
0
    _res = NULL;
14766
1.34M
  done:
14767
1.34M
    p->level--;
14768
1.34M
    return _res;
14769
322k
}
14770
14771
// slices: slice !',' | ','.(slice | starred_expression)+ ','?
14772
static expr_ty
14773
slices_rule(Parser *p)
14774
17.8k
{
14775
17.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14776
0
        _Pypegen_stack_overflow(p);
14777
0
    }
14778
17.8k
    if (p->error_indicator) {
14779
0
        p->level--;
14780
0
        return NULL;
14781
0
    }
14782
17.8k
    expr_ty _res = NULL;
14783
17.8k
    int _mark = p->mark;
14784
17.8k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14785
45
        p->error_indicator = 1;
14786
45
        p->level--;
14787
45
        return NULL;
14788
45
    }
14789
17.7k
    int _start_lineno = p->tokens[_mark]->lineno;
14790
17.7k
    UNUSED(_start_lineno); // Only used by EXTRA macro
14791
17.7k
    int _start_col_offset = p->tokens[_mark]->col_offset;
14792
17.7k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14793
17.7k
    { // slice !','
14794
17.7k
        if (p->error_indicator) {
14795
0
            p->level--;
14796
0
            return NULL;
14797
0
        }
14798
17.7k
        D(fprintf(stderr, "%*c> slices[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice !','"));
14799
17.7k
        expr_ty a;
14800
17.7k
        if (
14801
17.7k
            (a = slice_rule(p))  // slice
14802
17.7k
            &&
14803
17.7k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
14804
17.7k
        )
14805
11.2k
        {
14806
11.2k
            D(fprintf(stderr, "%*c+ slices[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice !','"));
14807
11.2k
            _res = a;
14808
11.2k
            if (_res == NULL && PyErr_Occurred()) {
14809
0
                p->error_indicator = 1;
14810
0
                p->level--;
14811
0
                return NULL;
14812
0
            }
14813
11.2k
            goto done;
14814
11.2k
        }
14815
6.54k
        p->mark = _mark;
14816
6.54k
        D(fprintf(stderr, "%*c%s slices[%d-%d]: %s failed!\n", p->level, ' ',
14817
6.54k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice !','"));
14818
6.54k
    }
14819
0
    { // ','.(slice | starred_expression)+ ','?
14820
6.54k
        if (p->error_indicator) {
14821
974
            p->level--;
14822
974
            return NULL;
14823
974
        }
14824
5.56k
        D(fprintf(stderr, "%*c> slices[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.(slice | starred_expression)+ ','?"));
14825
5.56k
        void *_opt_var;
14826
5.56k
        UNUSED(_opt_var); // Silence compiler warnings
14827
5.56k
        asdl_expr_seq* a;
14828
5.56k
        if (
14829
5.56k
            (a = (asdl_expr_seq*)_gather_64_rule(p))  // ','.(slice | starred_expression)+
14830
5.56k
            &&
14831
5.56k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
14832
5.56k
        )
14833
3.09k
        {
14834
3.09k
            D(fprintf(stderr, "%*c+ slices[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.(slice | starred_expression)+ ','?"));
14835
3.09k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14836
3.09k
            if (_token == NULL) {
14837
0
                p->level--;
14838
0
                return NULL;
14839
0
            }
14840
3.09k
            int _end_lineno = _token->end_lineno;
14841
3.09k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14842
3.09k
            int _end_col_offset = _token->end_col_offset;
14843
3.09k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14844
3.09k
            _res = _PyAST_Tuple ( a , Load , EXTRA );
14845
3.09k
            if (_res == NULL && PyErr_Occurred()) {
14846
0
                p->error_indicator = 1;
14847
0
                p->level--;
14848
0
                return NULL;
14849
0
            }
14850
3.09k
            goto done;
14851
3.09k
        }
14852
2.47k
        p->mark = _mark;
14853
2.47k
        D(fprintf(stderr, "%*c%s slices[%d-%d]: %s failed!\n", p->level, ' ',
14854
2.47k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.(slice | starred_expression)+ ','?"));
14855
2.47k
    }
14856
0
    _res = NULL;
14857
16.7k
  done:
14858
16.7k
    p->level--;
14859
16.7k
    return _res;
14860
2.47k
}
14861
14862
// slice: expression? ':' expression? [':' expression?] | named_expression
14863
static expr_ty
14864
slice_rule(Parser *p)
14865
47.8k
{
14866
47.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14867
1
        _Pypegen_stack_overflow(p);
14868
1
    }
14869
47.8k
    if (p->error_indicator) {
14870
1
        p->level--;
14871
1
        return NULL;
14872
1
    }
14873
47.8k
    expr_ty _res = NULL;
14874
47.8k
    int _mark = p->mark;
14875
47.8k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14876
16
        p->error_indicator = 1;
14877
16
        p->level--;
14878
16
        return NULL;
14879
16
    }
14880
47.8k
    int _start_lineno = p->tokens[_mark]->lineno;
14881
47.8k
    UNUSED(_start_lineno); // Only used by EXTRA macro
14882
47.8k
    int _start_col_offset = p->tokens[_mark]->col_offset;
14883
47.8k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14884
47.8k
    { // expression? ':' expression? [':' expression?]
14885
47.8k
        if (p->error_indicator) {
14886
0
            p->level--;
14887
0
            return NULL;
14888
0
        }
14889
47.8k
        D(fprintf(stderr, "%*c> slice[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14890
47.8k
        Token * _literal;
14891
47.8k
        void *a;
14892
47.8k
        void *b;
14893
47.8k
        void *c;
14894
47.8k
        if (
14895
47.8k
            (a = expression_rule(p), !p->error_indicator)  // expression?
14896
47.8k
            &&
14897
47.8k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
14898
47.8k
            &&
14899
47.8k
            (b = expression_rule(p), !p->error_indicator)  // expression?
14900
47.8k
            &&
14901
47.8k
            (c = _tmp_65_rule(p), !p->error_indicator)  // [':' expression?]
14902
47.8k
        )
14903
19.5k
        {
14904
19.5k
            D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14905
19.5k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14906
19.5k
            if (_token == NULL) {
14907
0
                p->level--;
14908
0
                return NULL;
14909
0
            }
14910
19.5k
            int _end_lineno = _token->end_lineno;
14911
19.5k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14912
19.5k
            int _end_col_offset = _token->end_col_offset;
14913
19.5k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14914
19.5k
            _res = _PyAST_Slice ( a , b , c , EXTRA );
14915
19.5k
            if (_res == NULL && PyErr_Occurred()) {
14916
0
                p->error_indicator = 1;
14917
0
                p->level--;
14918
0
                return NULL;
14919
0
            }
14920
19.5k
            goto done;
14921
19.5k
        }
14922
28.3k
        p->mark = _mark;
14923
28.3k
        D(fprintf(stderr, "%*c%s slice[%d-%d]: %s failed!\n", p->level, ' ',
14924
28.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14925
28.3k
    }
14926
0
    { // named_expression
14927
28.3k
        if (p->error_indicator) {
14928
1.16k
            p->level--;
14929
1.16k
            return NULL;
14930
1.16k
        }
14931
27.1k
        D(fprintf(stderr, "%*c> slice[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
14932
27.1k
        expr_ty a;
14933
27.1k
        if (
14934
27.1k
            (a = named_expression_rule(p))  // named_expression
14935
27.1k
        )
14936
20.8k
        {
14937
20.8k
            D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
14938
20.8k
            _res = a;
14939
20.8k
            if (_res == NULL && PyErr_Occurred()) {
14940
0
                p->error_indicator = 1;
14941
0
                p->level--;
14942
0
                return NULL;
14943
0
            }
14944
20.8k
            goto done;
14945
20.8k
        }
14946
6.32k
        p->mark = _mark;
14947
6.32k
        D(fprintf(stderr, "%*c%s slice[%d-%d]: %s failed!\n", p->level, ' ',
14948
6.32k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
14949
6.32k
    }
14950
0
    _res = NULL;
14951
46.6k
  done:
14952
46.6k
    p->level--;
14953
46.6k
    return _res;
14954
6.32k
}
14955
14956
// atom:
14957
//     | NAME
14958
//     | 'True'
14959
//     | 'False'
14960
//     | 'None'
14961
//     | &(STRING | FSTRING_START | TSTRING_START) strings
14962
//     | NUMBER
14963
//     | &'(' (tuple | group | genexp)
14964
//     | &'[' (list | listcomp)
14965
//     | &'{' (dict | set | dictcomp | setcomp)
14966
//     | '...'
14967
static expr_ty
14968
atom_rule(Parser *p)
14969
1.58M
{
14970
1.58M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14971
0
        _Pypegen_stack_overflow(p);
14972
0
    }
14973
1.58M
    if (p->error_indicator) {
14974
0
        p->level--;
14975
0
        return NULL;
14976
0
    }
14977
1.58M
    expr_ty _res = NULL;
14978
1.58M
    int _mark = p->mark;
14979
1.58M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14980
0
        p->error_indicator = 1;
14981
0
        p->level--;
14982
0
        return NULL;
14983
0
    }
14984
1.58M
    int _start_lineno = p->tokens[_mark]->lineno;
14985
1.58M
    UNUSED(_start_lineno); // Only used by EXTRA macro
14986
1.58M
    int _start_col_offset = p->tokens[_mark]->col_offset;
14987
1.58M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14988
1.58M
    { // NAME
14989
1.58M
        if (p->error_indicator) {
14990
0
            p->level--;
14991
0
            return NULL;
14992
0
        }
14993
1.58M
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
14994
1.58M
        expr_ty name_var;
14995
1.58M
        if (
14996
1.58M
            (name_var = _PyPegen_name_token(p))  // NAME
14997
1.58M
        )
14998
736k
        {
14999
736k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
15000
736k
            _res = name_var;
15001
736k
            goto done;
15002
736k
        }
15003
853k
        p->mark = _mark;
15004
853k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15005
853k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
15006
853k
    }
15007
0
    { // 'True'
15008
853k
        if (p->error_indicator) {
15009
0
            p->level--;
15010
0
            return NULL;
15011
0
        }
15012
853k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
15013
853k
        Token * _keyword;
15014
853k
        if (
15015
853k
            (_keyword = _PyPegen_expect_token(p, 623))  // token='True'
15016
853k
        )
15017
3.42k
        {
15018
3.42k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
15019
3.42k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15020
3.42k
            if (_token == NULL) {
15021
0
                p->level--;
15022
0
                return NULL;
15023
0
            }
15024
3.42k
            int _end_lineno = _token->end_lineno;
15025
3.42k
            UNUSED(_end_lineno); // Only used by EXTRA macro
15026
3.42k
            int _end_col_offset = _token->end_col_offset;
15027
3.42k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15028
3.42k
            _res = _PyAST_Constant ( Py_True , NULL , EXTRA );
15029
3.42k
            if (_res == NULL && PyErr_Occurred()) {
15030
0
                p->error_indicator = 1;
15031
0
                p->level--;
15032
0
                return NULL;
15033
0
            }
15034
3.42k
            goto done;
15035
3.42k
        }
15036
849k
        p->mark = _mark;
15037
849k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15038
849k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
15039
849k
    }
15040
0
    { // 'False'
15041
849k
        if (p->error_indicator) {
15042
0
            p->level--;
15043
0
            return NULL;
15044
0
        }
15045
849k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
15046
849k
        Token * _keyword;
15047
849k
        if (
15048
849k
            (_keyword = _PyPegen_expect_token(p, 625))  // token='False'
15049
849k
        )
15050
2.22k
        {
15051
2.22k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
15052
2.22k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15053
2.22k
            if (_token == NULL) {
15054
0
                p->level--;
15055
0
                return NULL;
15056
0
            }
15057
2.22k
            int _end_lineno = _token->end_lineno;
15058
2.22k
            UNUSED(_end_lineno); // Only used by EXTRA macro
15059
2.22k
            int _end_col_offset = _token->end_col_offset;
15060
2.22k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15061
2.22k
            _res = _PyAST_Constant ( Py_False , NULL , EXTRA );
15062
2.22k
            if (_res == NULL && PyErr_Occurred()) {
15063
0
                p->error_indicator = 1;
15064
0
                p->level--;
15065
0
                return NULL;
15066
0
            }
15067
2.22k
            goto done;
15068
2.22k
        }
15069
847k
        p->mark = _mark;
15070
847k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15071
847k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
15072
847k
    }
15073
0
    { // 'None'
15074
847k
        if (p->error_indicator) {
15075
0
            p->level--;
15076
0
            return NULL;
15077
0
        }
15078
847k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
15079
847k
        Token * _keyword;
15080
847k
        if (
15081
847k
            (_keyword = _PyPegen_expect_token(p, 624))  // token='None'
15082
847k
        )
15083
7.86k
        {
15084
7.86k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
15085
7.86k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15086
7.86k
            if (_token == NULL) {
15087
0
                p->level--;
15088
0
                return NULL;
15089
0
            }
15090
7.86k
            int _end_lineno = _token->end_lineno;
15091
7.86k
            UNUSED(_end_lineno); // Only used by EXTRA macro
15092
7.86k
            int _end_col_offset = _token->end_col_offset;
15093
7.86k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15094
7.86k
            _res = _PyAST_Constant ( Py_None , NULL , EXTRA );
15095
7.86k
            if (_res == NULL && PyErr_Occurred()) {
15096
0
                p->error_indicator = 1;
15097
0
                p->level--;
15098
0
                return NULL;
15099
0
            }
15100
7.86k
            goto done;
15101
7.86k
        }
15102
839k
        p->mark = _mark;
15103
839k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15104
839k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
15105
839k
    }
15106
0
    { // &(STRING | FSTRING_START | TSTRING_START) strings
15107
839k
        if (p->error_indicator) {
15108
0
            p->level--;
15109
0
            return NULL;
15110
0
        }
15111
839k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
15112
839k
        expr_ty strings_var;
15113
839k
        if (
15114
839k
            _PyPegen_lookahead(1, _tmp_42_rule, p)
15115
839k
            &&
15116
839k
            (strings_var = strings_rule(p))  // strings
15117
839k
        )
15118
101k
        {
15119
101k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
15120
101k
            _res = strings_var;
15121
101k
            goto done;
15122
101k
        }
15123
738k
        p->mark = _mark;
15124
738k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15125
738k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
15126
738k
    }
15127
0
    { // NUMBER
15128
738k
        if (p->error_indicator) {
15129
4.10k
            p->level--;
15130
4.10k
            return NULL;
15131
4.10k
        }
15132
734k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
15133
734k
        expr_ty number_var;
15134
734k
        if (
15135
734k
            (number_var = _PyPegen_number_token(p))  // NUMBER
15136
734k
        )
15137
230k
        {
15138
230k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
15139
230k
            _res = number_var;
15140
230k
            goto done;
15141
230k
        }
15142
503k
        p->mark = _mark;
15143
503k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15144
503k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
15145
503k
    }
15146
0
    { // &'(' (tuple | group | genexp)
15147
503k
        if (p->error_indicator) {
15148
15
            p->level--;
15149
15
            return NULL;
15150
15
        }
15151
503k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'(' (tuple | group | genexp)"));
15152
503k
        void *_tmp_66_var;
15153
503k
        if (
15154
503k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 7)  // token='('
15155
503k
            &&
15156
503k
            (_tmp_66_var = _tmp_66_rule(p))  // tuple | group | genexp
15157
503k
        )
15158
56.8k
        {
15159
56.8k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'(' (tuple | group | genexp)"));
15160
56.8k
            _res = _tmp_66_var;
15161
56.8k
            goto done;
15162
56.8k
        }
15163
446k
        p->mark = _mark;
15164
446k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15165
446k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'(' (tuple | group | genexp)"));
15166
446k
    }
15167
0
    { // &'[' (list | listcomp)
15168
446k
        if (p->error_indicator) {
15169
9.85k
            p->level--;
15170
9.85k
            return NULL;
15171
9.85k
        }
15172
437k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'[' (list | listcomp)"));
15173
437k
        void *_tmp_67_var;
15174
437k
        if (
15175
437k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 9)  // token='['
15176
437k
            &&
15177
437k
            (_tmp_67_var = _tmp_67_rule(p))  // list | listcomp
15178
437k
        )
15179
17.9k
        {
15180
17.9k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'[' (list | listcomp)"));
15181
17.9k
            _res = _tmp_67_var;
15182
17.9k
            goto done;
15183
17.9k
        }
15184
419k
        p->mark = _mark;
15185
419k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15186
419k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'[' (list | listcomp)"));
15187
419k
    }
15188
0
    { // &'{' (dict | set | dictcomp | setcomp)
15189
419k
        if (p->error_indicator) {
15190
12.1k
            p->level--;
15191
12.1k
            return NULL;
15192
12.1k
        }
15193
406k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
15194
406k
        void *_tmp_68_var;
15195
406k
        if (
15196
406k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 25)  // token='{'
15197
406k
            &&
15198
406k
            (_tmp_68_var = _tmp_68_rule(p))  // dict | set | dictcomp | setcomp
15199
406k
        )
15200
8.41k
        {
15201
8.41k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
15202
8.41k
            _res = _tmp_68_var;
15203
8.41k
            goto done;
15204
8.41k
        }
15205
398k
        p->mark = _mark;
15206
398k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15207
398k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
15208
398k
    }
15209
0
    { // '...'
15210
398k
        if (p->error_indicator) {
15211
8.38k
            p->level--;
15212
8.38k
            return NULL;
15213
8.38k
        }
15214
390k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
15215
390k
        Token * _literal;
15216
390k
        if (
15217
390k
            (_literal = _PyPegen_expect_token(p, 52))  // token='...'
15218
390k
        )
15219
1.38k
        {
15220
1.38k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
15221
1.38k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15222
1.38k
            if (_token == NULL) {
15223
0
                p->level--;
15224
0
                return NULL;
15225
0
            }
15226
1.38k
            int _end_lineno = _token->end_lineno;
15227
1.38k
            UNUSED(_end_lineno); // Only used by EXTRA macro
15228
1.38k
            int _end_col_offset = _token->end_col_offset;
15229
1.38k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15230
1.38k
            _res = _PyAST_Constant ( Py_Ellipsis , NULL , EXTRA );
15231
1.38k
            if (_res == NULL && PyErr_Occurred()) {
15232
0
                p->error_indicator = 1;
15233
0
                p->level--;
15234
0
                return NULL;
15235
0
            }
15236
1.38k
            goto done;
15237
1.38k
        }
15238
388k
        p->mark = _mark;
15239
388k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15240
388k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
15241
388k
    }
15242
0
    _res = NULL;
15243
1.55M
  done:
15244
1.55M
    p->level--;
15245
1.55M
    return _res;
15246
388k
}
15247
15248
// group: '(' (yield_expr | named_expression) ')' | invalid_group
15249
static expr_ty
15250
group_rule(Parser *p)
15251
37.4k
{
15252
37.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15253
0
        _Pypegen_stack_overflow(p);
15254
0
    }
15255
37.4k
    if (p->error_indicator) {
15256
0
        p->level--;
15257
0
        return NULL;
15258
0
    }
15259
37.4k
    expr_ty _res = NULL;
15260
37.4k
    int _mark = p->mark;
15261
37.4k
    { // '(' (yield_expr | named_expression) ')'
15262
37.4k
        if (p->error_indicator) {
15263
0
            p->level--;
15264
0
            return NULL;
15265
0
        }
15266
37.4k
        D(fprintf(stderr, "%*c> group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
15267
37.4k
        Token * _literal;
15268
37.4k
        Token * _literal_1;
15269
37.4k
        void *a;
15270
37.4k
        if (
15271
37.4k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
15272
37.4k
            &&
15273
37.4k
            (a = _tmp_69_rule(p))  // yield_expr | named_expression
15274
37.4k
            &&
15275
37.4k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
15276
37.4k
        )
15277
11.8k
        {
15278
11.8k
            D(fprintf(stderr, "%*c+ group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
15279
11.8k
            _res = a;
15280
11.8k
            if (_res == NULL && PyErr_Occurred()) {
15281
0
                p->error_indicator = 1;
15282
0
                p->level--;
15283
0
                return NULL;
15284
0
            }
15285
11.8k
            goto done;
15286
11.8k
        }
15287
25.6k
        p->mark = _mark;
15288
25.6k
        D(fprintf(stderr, "%*c%s group[%d-%d]: %s failed!\n", p->level, ' ',
15289
25.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
15290
25.6k
    }
15291
25.6k
    if (p->call_invalid_rules) { // invalid_group
15292
9.06k
        if (p->error_indicator) {
15293
394
            p->level--;
15294
394
            return NULL;
15295
394
        }
15296
8.67k
        D(fprintf(stderr, "%*c> group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_group"));
15297
8.67k
        void *invalid_group_var;
15298
8.67k
        if (
15299
8.67k
            (invalid_group_var = invalid_group_rule(p))  // invalid_group
15300
8.67k
        )
15301
0
        {
15302
0
            D(fprintf(stderr, "%*c+ group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_group"));
15303
0
            _res = invalid_group_var;
15304
0
            goto done;
15305
0
        }
15306
8.67k
        p->mark = _mark;
15307
8.67k
        D(fprintf(stderr, "%*c%s group[%d-%d]: %s failed!\n", p->level, ' ',
15308
8.67k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_group"));
15309
8.67k
    }
15310
25.2k
    _res = NULL;
15311
37.0k
  done:
15312
37.0k
    p->level--;
15313
37.0k
    return _res;
15314
25.2k
}
15315
15316
// lambdef: 'lambda' lambda_params? ':' expression
15317
static expr_ty
15318
lambdef_rule(Parser *p)
15319
334k
{
15320
334k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15321
0
        _Pypegen_stack_overflow(p);
15322
0
    }
15323
334k
    if (p->error_indicator) {
15324
0
        p->level--;
15325
0
        return NULL;
15326
0
    }
15327
334k
    expr_ty _res = NULL;
15328
334k
    int _mark = p->mark;
15329
334k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15330
0
        p->error_indicator = 1;
15331
0
        p->level--;
15332
0
        return NULL;
15333
0
    }
15334
334k
    int _start_lineno = p->tokens[_mark]->lineno;
15335
334k
    UNUSED(_start_lineno); // Only used by EXTRA macro
15336
334k
    int _start_col_offset = p->tokens[_mark]->col_offset;
15337
334k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
15338
334k
    { // 'lambda' lambda_params? ':' expression
15339
334k
        if (p->error_indicator) {
15340
0
            p->level--;
15341
0
            return NULL;
15342
0
        }
15343
334k
        D(fprintf(stderr, "%*c> lambdef[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' expression"));
15344
334k
        Token * _keyword;
15345
334k
        Token * _literal;
15346
334k
        void *a;
15347
334k
        expr_ty b;
15348
334k
        if (
15349
334k
            (_keyword = _PyPegen_expect_token(p, 622))  // token='lambda'
15350
334k
            &&
15351
334k
            (a = lambda_params_rule(p), !p->error_indicator)  // lambda_params?
15352
334k
            &&
15353
334k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
15354
334k
            &&
15355
334k
            (b = expression_rule(p))  // expression
15356
334k
        )
15357
3.01k
        {
15358
3.01k
            D(fprintf(stderr, "%*c+ lambdef[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' expression"));
15359
3.01k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15360
3.01k
            if (_token == NULL) {
15361
0
                p->level--;
15362
0
                return NULL;
15363
0
            }
15364
3.01k
            int _end_lineno = _token->end_lineno;
15365
3.01k
            UNUSED(_end_lineno); // Only used by EXTRA macro
15366
3.01k
            int _end_col_offset = _token->end_col_offset;
15367
3.01k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15368
3.01k
            _res = _PyAST_Lambda ( ( a ) ? a : CHECK ( arguments_ty , _PyPegen_empty_arguments ( p ) ) , b , EXTRA );
15369
3.01k
            if (_res == NULL && PyErr_Occurred()) {
15370
0
                p->error_indicator = 1;
15371
0
                p->level--;
15372
0
                return NULL;
15373
0
            }
15374
3.01k
            goto done;
15375
3.01k
        }
15376
331k
        p->mark = _mark;
15377
331k
        D(fprintf(stderr, "%*c%s lambdef[%d-%d]: %s failed!\n", p->level, ' ',
15378
331k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'lambda' lambda_params? ':' expression"));
15379
331k
    }
15380
0
    _res = NULL;
15381
334k
  done:
15382
334k
    p->level--;
15383
334k
    return _res;
15384
331k
}
15385
15386
// lambda_params: invalid_lambda_parameters | lambda_parameters
15387
static arguments_ty
15388
lambda_params_rule(Parser *p)
15389
15.5k
{
15390
15.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15391
0
        _Pypegen_stack_overflow(p);
15392
0
    }
15393
15.5k
    if (p->error_indicator) {
15394
0
        p->level--;
15395
0
        return NULL;
15396
0
    }
15397
15.5k
    arguments_ty _res = NULL;
15398
15.5k
    int _mark = p->mark;
15399
15.5k
    if (p->call_invalid_rules) { // invalid_lambda_parameters
15400
9.40k
        if (p->error_indicator) {
15401
0
            p->level--;
15402
0
            return NULL;
15403
0
        }
15404
9.40k
        D(fprintf(stderr, "%*c> lambda_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_parameters"));
15405
9.40k
        void *invalid_lambda_parameters_var;
15406
9.40k
        if (
15407
9.40k
            (invalid_lambda_parameters_var = invalid_lambda_parameters_rule(p))  // invalid_lambda_parameters
15408
9.40k
        )
15409
0
        {
15410
0
            D(fprintf(stderr, "%*c+ lambda_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_lambda_parameters"));
15411
0
            _res = invalid_lambda_parameters_var;
15412
0
            goto done;
15413
0
        }
15414
9.40k
        p->mark = _mark;
15415
9.40k
        D(fprintf(stderr, "%*c%s lambda_params[%d-%d]: %s failed!\n", p->level, ' ',
15416
9.40k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_parameters"));
15417
9.40k
    }
15418
15.5k
    { // lambda_parameters
15419
15.5k
        if (p->error_indicator) {
15420
668
            p->level--;
15421
668
            return NULL;
15422
668
        }
15423
14.8k
        D(fprintf(stderr, "%*c> lambda_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_parameters"));
15424
14.8k
        arguments_ty lambda_parameters_var;
15425
14.8k
        if (
15426
14.8k
            (lambda_parameters_var = lambda_parameters_rule(p))  // lambda_parameters
15427
14.8k
        )
15428
8.16k
        {
15429
8.16k
            D(fprintf(stderr, "%*c+ lambda_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_parameters"));
15430
8.16k
            _res = lambda_parameters_var;
15431
8.16k
            goto done;
15432
8.16k
        }
15433
6.72k
        p->mark = _mark;
15434
6.72k
        D(fprintf(stderr, "%*c%s lambda_params[%d-%d]: %s failed!\n", p->level, ' ',
15435
6.72k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_parameters"));
15436
6.72k
    }
15437
0
    _res = NULL;
15438
14.8k
  done:
15439
14.8k
    p->level--;
15440
14.8k
    return _res;
15441
6.72k
}
15442
15443
// lambda_parameters:
15444
//     | lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
15445
//     | lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
15446
//     | lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
15447
//     | lambda_param_with_default+ lambda_star_etc?
15448
//     | lambda_star_etc
15449
static arguments_ty
15450
lambda_parameters_rule(Parser *p)
15451
14.8k
{
15452
14.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15453
0
        _Pypegen_stack_overflow(p);
15454
0
    }
15455
14.8k
    if (p->error_indicator) {
15456
0
        p->level--;
15457
0
        return NULL;
15458
0
    }
15459
14.8k
    arguments_ty _res = NULL;
15460
14.8k
    int _mark = p->mark;
15461
14.8k
    { // lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
15462
14.8k
        if (p->error_indicator) {
15463
0
            p->level--;
15464
0
            return NULL;
15465
0
        }
15466
14.8k
        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?"));
15467
14.8k
        asdl_arg_seq* a;
15468
14.8k
        asdl_arg_seq* b;
15469
14.8k
        asdl_seq * c;
15470
14.8k
        void *d;
15471
14.8k
        if (
15472
14.8k
            (a = lambda_slash_no_default_rule(p))  // lambda_slash_no_default
15473
14.8k
            &&
15474
14.8k
            (b = (asdl_arg_seq*)_loop0_70_rule(p))  // lambda_param_no_default*
15475
14.8k
            &&
15476
14.8k
            (c = _loop0_71_rule(p))  // lambda_param_with_default*
15477
14.8k
            &&
15478
14.8k
            (d = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
15479
14.8k
        )
15480
486
        {
15481
486
            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?"));
15482
486
            _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , a , NULL , b , c , d ) );
15483
486
            if (_res == NULL && PyErr_Occurred()) {
15484
0
                p->error_indicator = 1;
15485
0
                p->level--;
15486
0
                return NULL;
15487
0
            }
15488
486
            goto done;
15489
486
        }
15490
14.4k
        p->mark = _mark;
15491
14.4k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15492
14.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?"));
15493
14.4k
    }
15494
0
    { // lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
15495
14.4k
        if (p->error_indicator) {
15496
342
            p->level--;
15497
342
            return NULL;
15498
342
        }
15499
14.0k
        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?"));
15500
14.0k
        SlashWithDefault* a;
15501
14.0k
        asdl_seq * b;
15502
14.0k
        void *c;
15503
14.0k
        if (
15504
14.0k
            (a = lambda_slash_with_default_rule(p))  // lambda_slash_with_default
15505
14.0k
            &&
15506
14.0k
            (b = _loop0_71_rule(p))  // lambda_param_with_default*
15507
14.0k
            &&
15508
14.0k
            (c = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
15509
14.0k
        )
15510
1.54k
        {
15511
1.54k
            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?"));
15512
1.54k
            _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , NULL , a , NULL , b , c ) );
15513
1.54k
            if (_res == NULL && PyErr_Occurred()) {
15514
0
                p->error_indicator = 1;
15515
0
                p->level--;
15516
0
                return NULL;
15517
0
            }
15518
1.54k
            goto done;
15519
1.54k
        }
15520
12.5k
        p->mark = _mark;
15521
12.5k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15522
12.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default lambda_param_with_default* lambda_star_etc?"));
15523
12.5k
    }
15524
0
    { // lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
15525
12.5k
        if (p->error_indicator) {
15526
466
            p->level--;
15527
466
            return NULL;
15528
466
        }
15529
12.0k
        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?"));
15530
12.0k
        asdl_arg_seq* a;
15531
12.0k
        asdl_seq * b;
15532
12.0k
        void *c;
15533
12.0k
        if (
15534
12.0k
            (a = (asdl_arg_seq*)_loop1_72_rule(p))  // lambda_param_no_default+
15535
12.0k
            &&
15536
12.0k
            (b = _loop0_71_rule(p))  // lambda_param_with_default*
15537
12.0k
            &&
15538
12.0k
            (c = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
15539
12.0k
        )
15540
1.70k
        {
15541
1.70k
            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?"));
15542
1.70k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
15543
1.70k
            if (_res == NULL && PyErr_Occurred()) {
15544
0
                p->error_indicator = 1;
15545
0
                p->level--;
15546
0
                return NULL;
15547
0
            }
15548
1.70k
            goto done;
15549
1.70k
        }
15550
10.3k
        p->mark = _mark;
15551
10.3k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15552
10.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?"));
15553
10.3k
    }
15554
0
    { // lambda_param_with_default+ lambda_star_etc?
15555
10.3k
        if (p->error_indicator) {
15556
89
            p->level--;
15557
89
            return NULL;
15558
89
        }
15559
10.2k
        D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
15560
10.2k
        asdl_seq * a;
15561
10.2k
        void *b;
15562
10.2k
        if (
15563
10.2k
            (a = _loop1_73_rule(p))  // lambda_param_with_default+
15564
10.2k
            &&
15565
10.2k
            (b = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
15566
10.2k
        )
15567
2.05k
        {
15568
2.05k
            D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
15569
2.05k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
15570
2.05k
            if (_res == NULL && PyErr_Occurred()) {
15571
0
                p->error_indicator = 1;
15572
0
                p->level--;
15573
0
                return NULL;
15574
0
            }
15575
2.05k
            goto done;
15576
2.05k
        }
15577
8.19k
        p->mark = _mark;
15578
8.19k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15579
8.19k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
15580
8.19k
    }
15581
0
    { // lambda_star_etc
15582
8.19k
        if (p->error_indicator) {
15583
68
            p->level--;
15584
68
            return NULL;
15585
68
        }
15586
8.13k
        D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_star_etc"));
15587
8.13k
        StarEtc* a;
15588
8.13k
        if (
15589
8.13k
            (a = lambda_star_etc_rule(p))  // lambda_star_etc
15590
8.13k
        )
15591
2.37k
        {
15592
2.37k
            D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_star_etc"));
15593
2.37k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
15594
2.37k
            if (_res == NULL && PyErr_Occurred()) {
15595
0
                p->error_indicator = 1;
15596
0
                p->level--;
15597
0
                return NULL;
15598
0
            }
15599
2.37k
            goto done;
15600
2.37k
        }
15601
5.75k
        p->mark = _mark;
15602
5.75k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15603
5.75k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_star_etc"));
15604
5.75k
    }
15605
0
    _res = NULL;
15606
13.9k
  done:
15607
13.9k
    p->level--;
15608
13.9k
    return _res;
15609
5.75k
}
15610
15611
// lambda_slash_no_default:
15612
//     | lambda_param_no_default+ '/' ','
15613
//     | lambda_param_no_default+ '/' &':'
15614
static asdl_arg_seq*
15615
lambda_slash_no_default_rule(Parser *p)
15616
42.2k
{
15617
42.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15618
0
        _Pypegen_stack_overflow(p);
15619
0
    }
15620
42.2k
    if (p->error_indicator) {
15621
0
        p->level--;
15622
0
        return NULL;
15623
0
    }
15624
42.2k
    asdl_arg_seq* _res = NULL;
15625
42.2k
    int _mark = p->mark;
15626
42.2k
    { // lambda_param_no_default+ '/' ','
15627
42.2k
        if (p->error_indicator) {
15628
0
            p->level--;
15629
0
            return NULL;
15630
0
        }
15631
42.2k
        D(fprintf(stderr, "%*c> lambda_slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' ','"));
15632
42.2k
        Token * _literal;
15633
42.2k
        Token * _literal_1;
15634
42.2k
        asdl_arg_seq* a;
15635
42.2k
        if (
15636
42.2k
            (a = (asdl_arg_seq*)_loop1_72_rule(p))  // lambda_param_no_default+
15637
42.2k
            &&
15638
42.2k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
15639
42.2k
            &&
15640
42.2k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
15641
42.2k
        )
15642
932
        {
15643
932
            D(fprintf(stderr, "%*c+ lambda_slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' ','"));
15644
932
            _res = a;
15645
932
            if (_res == NULL && PyErr_Occurred()) {
15646
0
                p->error_indicator = 1;
15647
0
                p->level--;
15648
0
                return NULL;
15649
0
            }
15650
932
            goto done;
15651
932
        }
15652
41.3k
        p->mark = _mark;
15653
41.3k
        D(fprintf(stderr, "%*c%s lambda_slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
15654
41.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ '/' ','"));
15655
41.3k
    }
15656
0
    { // lambda_param_no_default+ '/' &':'
15657
41.3k
        if (p->error_indicator) {
15658
18
            p->level--;
15659
18
            return NULL;
15660
18
        }
15661
41.2k
        D(fprintf(stderr, "%*c> lambda_slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
15662
41.2k
        Token * _literal;
15663
41.2k
        asdl_arg_seq* a;
15664
41.2k
        if (
15665
41.2k
            (a = (asdl_arg_seq*)_loop1_72_rule(p))  // lambda_param_no_default+
15666
41.2k
            &&
15667
41.2k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
15668
41.2k
            &&
15669
41.2k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
15670
41.2k
        )
15671
1.04k
        {
15672
1.04k
            D(fprintf(stderr, "%*c+ lambda_slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
15673
1.04k
            _res = a;
15674
1.04k
            if (_res == NULL && PyErr_Occurred()) {
15675
0
                p->error_indicator = 1;
15676
0
                p->level--;
15677
0
                return NULL;
15678
0
            }
15679
1.04k
            goto done;
15680
1.04k
        }
15681
40.2k
        p->mark = _mark;
15682
40.2k
        D(fprintf(stderr, "%*c%s lambda_slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
15683
40.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
15684
40.2k
    }
15685
0
    _res = NULL;
15686
42.2k
  done:
15687
42.2k
    p->level--;
15688
42.2k
    return _res;
15689
40.2k
}
15690
15691
// lambda_slash_with_default:
15692
//     | lambda_param_no_default* lambda_param_with_default+ '/' ','
15693
//     | lambda_param_no_default* lambda_param_with_default+ '/' &':'
15694
static SlashWithDefault*
15695
lambda_slash_with_default_rule(Parser *p)
15696
40.6k
{
15697
40.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15698
0
        _Pypegen_stack_overflow(p);
15699
0
    }
15700
40.6k
    if (p->error_indicator) {
15701
0
        p->level--;
15702
0
        return NULL;
15703
0
    }
15704
40.6k
    SlashWithDefault* _res = NULL;
15705
40.6k
    int _mark = p->mark;
15706
40.6k
    { // lambda_param_no_default* lambda_param_with_default+ '/' ','
15707
40.6k
        if (p->error_indicator) {
15708
0
            p->level--;
15709
0
            return NULL;
15710
0
        }
15711
40.6k
        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+ '/' ','"));
15712
40.6k
        Token * _literal;
15713
40.6k
        Token * _literal_1;
15714
40.6k
        asdl_seq * a;
15715
40.6k
        asdl_seq * b;
15716
40.6k
        if (
15717
40.6k
            (a = _loop0_70_rule(p))  // lambda_param_no_default*
15718
40.6k
            &&
15719
40.6k
            (b = _loop1_73_rule(p))  // lambda_param_with_default+
15720
40.6k
            &&
15721
40.6k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
15722
40.6k
            &&
15723
40.6k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
15724
40.6k
        )
15725
3.71k
        {
15726
3.71k
            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+ '/' ','"));
15727
3.71k
            _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
15728
3.71k
            if (_res == NULL && PyErr_Occurred()) {
15729
0
                p->error_indicator = 1;
15730
0
                p->level--;
15731
0
                return NULL;
15732
0
            }
15733
3.71k
            goto done;
15734
3.71k
        }
15735
36.9k
        p->mark = _mark;
15736
36.9k
        D(fprintf(stderr, "%*c%s lambda_slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
15737
36.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' ','"));
15738
36.9k
    }
15739
0
    { // lambda_param_no_default* lambda_param_with_default+ '/' &':'
15740
36.9k
        if (p->error_indicator) {
15741
622
            p->level--;
15742
622
            return NULL;
15743
622
        }
15744
36.2k
        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+ '/' &':'"));
15745
36.2k
        Token * _literal;
15746
36.2k
        asdl_seq * a;
15747
36.2k
        asdl_seq * b;
15748
36.2k
        if (
15749
36.2k
            (a = _loop0_70_rule(p))  // lambda_param_no_default*
15750
36.2k
            &&
15751
36.2k
            (b = _loop1_73_rule(p))  // lambda_param_with_default+
15752
36.2k
            &&
15753
36.2k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
15754
36.2k
            &&
15755
36.2k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
15756
36.2k
        )
15757
1.29k
        {
15758
1.29k
            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+ '/' &':'"));
15759
1.29k
            _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
15760
1.29k
            if (_res == NULL && PyErr_Occurred()) {
15761
0
                p->error_indicator = 1;
15762
0
                p->level--;
15763
0
                return NULL;
15764
0
            }
15765
1.29k
            goto done;
15766
1.29k
        }
15767
34.9k
        p->mark = _mark;
15768
34.9k
        D(fprintf(stderr, "%*c%s lambda_slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
15769
34.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' &':'"));
15770
34.9k
    }
15771
0
    _res = NULL;
15772
40.0k
  done:
15773
40.0k
    p->level--;
15774
40.0k
    return _res;
15775
34.9k
}
15776
15777
// lambda_star_etc:
15778
//     | invalid_lambda_star_etc
15779
//     | '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
15780
//     | '*' ',' lambda_param_maybe_default+ lambda_kwds?
15781
//     | lambda_kwds
15782
static StarEtc*
15783
lambda_star_etc_rule(Parser *p)
15784
14.5k
{
15785
14.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15786
0
        _Pypegen_stack_overflow(p);
15787
0
    }
15788
14.5k
    if (p->error_indicator) {
15789
461
        p->level--;
15790
461
        return NULL;
15791
461
    }
15792
14.0k
    StarEtc* _res = NULL;
15793
14.0k
    int _mark = p->mark;
15794
14.0k
    if (p->call_invalid_rules) { // invalid_lambda_star_etc
15795
8.73k
        if (p->error_indicator) {
15796
0
            p->level--;
15797
0
            return NULL;
15798
0
        }
15799
8.73k
        D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_star_etc"));
15800
8.73k
        void *invalid_lambda_star_etc_var;
15801
8.73k
        if (
15802
8.73k
            (invalid_lambda_star_etc_var = invalid_lambda_star_etc_rule(p))  // invalid_lambda_star_etc
15803
8.73k
        )
15804
0
        {
15805
0
            D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_lambda_star_etc"));
15806
0
            _res = invalid_lambda_star_etc_var;
15807
0
            goto done;
15808
0
        }
15809
8.73k
        p->mark = _mark;
15810
8.73k
        D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15811
8.73k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_star_etc"));
15812
8.73k
    }
15813
14.0k
    { // '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
15814
14.0k
        if (p->error_indicator) {
15815
21
            p->level--;
15816
21
            return NULL;
15817
21
        }
15818
14.0k
        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?"));
15819
14.0k
        Token * _literal;
15820
14.0k
        arg_ty a;
15821
14.0k
        asdl_seq * b;
15822
14.0k
        void *c;
15823
14.0k
        if (
15824
14.0k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
15825
14.0k
            &&
15826
14.0k
            (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
15827
14.0k
            &&
15828
14.0k
            (b = _loop0_74_rule(p))  // lambda_param_maybe_default*
15829
14.0k
            &&
15830
14.0k
            (c = lambda_kwds_rule(p), !p->error_indicator)  // lambda_kwds?
15831
14.0k
        )
15832
1.63k
        {
15833
1.63k
            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?"));
15834
1.63k
            _res = _PyPegen_star_etc ( p , a , b , c );
15835
1.63k
            if (_res == NULL && PyErr_Occurred()) {
15836
0
                p->error_indicator = 1;
15837
0
                p->level--;
15838
0
                return NULL;
15839
0
            }
15840
1.63k
            goto done;
15841
1.63k
        }
15842
12.4k
        p->mark = _mark;
15843
12.4k
        D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15844
12.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?"));
15845
12.4k
    }
15846
0
    { // '*' ',' lambda_param_maybe_default+ lambda_kwds?
15847
12.4k
        if (p->error_indicator) {
15848
136
            p->level--;
15849
136
            return NULL;
15850
136
        }
15851
12.2k
        D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
15852
12.2k
        Token * _literal;
15853
12.2k
        Token * _literal_1;
15854
12.2k
        asdl_seq * b;
15855
12.2k
        void *c;
15856
12.2k
        if (
15857
12.2k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
15858
12.2k
            &&
15859
12.2k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
15860
12.2k
            &&
15861
12.2k
            (b = _loop1_75_rule(p))  // lambda_param_maybe_default+
15862
12.2k
            &&
15863
12.2k
            (c = lambda_kwds_rule(p), !p->error_indicator)  // lambda_kwds?
15864
12.2k
        )
15865
462
        {
15866
462
            D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
15867
462
            _res = _PyPegen_star_etc ( p , NULL , b , c );
15868
462
            if (_res == NULL && PyErr_Occurred()) {
15869
0
                p->error_indicator = 1;
15870
0
                p->level--;
15871
0
                return NULL;
15872
0
            }
15873
462
            goto done;
15874
462
        }
15875
11.8k
        p->mark = _mark;
15876
11.8k
        D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15877
11.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
15878
11.8k
    }
15879
0
    { // lambda_kwds
15880
11.8k
        if (p->error_indicator) {
15881
681
            p->level--;
15882
681
            return NULL;
15883
681
        }
15884
11.1k
        D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_kwds"));
15885
11.1k
        arg_ty a;
15886
11.1k
        if (
15887
11.1k
            (a = lambda_kwds_rule(p))  // lambda_kwds
15888
11.1k
        )
15889
495
        {
15890
495
            D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_kwds"));
15891
495
            _res = _PyPegen_star_etc ( p , NULL , NULL , a );
15892
495
            if (_res == NULL && PyErr_Occurred()) {
15893
0
                p->error_indicator = 1;
15894
0
                p->level--;
15895
0
                return NULL;
15896
0
            }
15897
495
            goto done;
15898
495
        }
15899
10.6k
        p->mark = _mark;
15900
10.6k
        D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15901
10.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_kwds"));
15902
10.6k
    }
15903
0
    _res = NULL;
15904
13.2k
  done:
15905
13.2k
    p->level--;
15906
13.2k
    return _res;
15907
10.6k
}
15908
15909
// lambda_kwds: invalid_lambda_kwds | '**' lambda_param_no_default
15910
static arg_ty
15911
lambda_kwds_rule(Parser *p)
15912
13.3k
{
15913
13.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15914
0
        _Pypegen_stack_overflow(p);
15915
0
    }
15916
13.3k
    if (p->error_indicator) {
15917
126
        p->level--;
15918
126
        return NULL;
15919
126
    }
15920
13.2k
    arg_ty _res = NULL;
15921
13.2k
    int _mark = p->mark;
15922
13.2k
    if (p->call_invalid_rules) { // invalid_lambda_kwds
15923
8.71k
        if (p->error_indicator) {
15924
0
            p->level--;
15925
0
            return NULL;
15926
0
        }
15927
8.71k
        D(fprintf(stderr, "%*c> lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_kwds"));
15928
8.71k
        void *invalid_lambda_kwds_var;
15929
8.71k
        if (
15930
8.71k
            (invalid_lambda_kwds_var = invalid_lambda_kwds_rule(p))  // invalid_lambda_kwds
15931
8.71k
        )
15932
0
        {
15933
0
            D(fprintf(stderr, "%*c+ lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_lambda_kwds"));
15934
0
            _res = invalid_lambda_kwds_var;
15935
0
            goto done;
15936
0
        }
15937
8.71k
        p->mark = _mark;
15938
8.71k
        D(fprintf(stderr, "%*c%s lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
15939
8.71k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_kwds"));
15940
8.71k
    }
15941
13.2k
    { // '**' lambda_param_no_default
15942
13.2k
        if (p->error_indicator) {
15943
5
            p->level--;
15944
5
            return NULL;
15945
5
        }
15946
13.2k
        D(fprintf(stderr, "%*c> lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param_no_default"));
15947
13.2k
        Token * _literal;
15948
13.2k
        arg_ty a;
15949
13.2k
        if (
15950
13.2k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
15951
13.2k
            &&
15952
13.2k
            (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
15953
13.2k
        )
15954
495
        {
15955
495
            D(fprintf(stderr, "%*c+ lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' lambda_param_no_default"));
15956
495
            _res = a;
15957
495
            if (_res == NULL && PyErr_Occurred()) {
15958
0
                p->error_indicator = 1;
15959
0
                p->level--;
15960
0
                return NULL;
15961
0
            }
15962
495
            goto done;
15963
495
        }
15964
12.7k
        p->mark = _mark;
15965
12.7k
        D(fprintf(stderr, "%*c%s lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
15966
12.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param_no_default"));
15967
12.7k
    }
15968
0
    _res = NULL;
15969
13.2k
  done:
15970
13.2k
    p->level--;
15971
13.2k
    return _res;
15972
12.7k
}
15973
15974
// lambda_param_no_default: lambda_param ',' | lambda_param &':'
15975
static arg_ty
15976
lambda_param_no_default_rule(Parser *p)
15977
326k
{
15978
326k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15979
0
        _Pypegen_stack_overflow(p);
15980
0
    }
15981
326k
    if (p->error_indicator) {
15982
0
        p->level--;
15983
0
        return NULL;
15984
0
    }
15985
326k
    arg_ty _res = NULL;
15986
326k
    int _mark = p->mark;
15987
326k
    { // lambda_param ','
15988
326k
        if (p->error_indicator) {
15989
0
            p->level--;
15990
0
            return NULL;
15991
0
        }
15992
326k
        D(fprintf(stderr, "%*c> lambda_param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param ','"));
15993
326k
        Token * _literal;
15994
326k
        arg_ty a;
15995
326k
        if (
15996
326k
            (a = lambda_param_rule(p))  // lambda_param
15997
326k
            &&
15998
326k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
15999
326k
        )
16000
113k
        {
16001
113k
            D(fprintf(stderr, "%*c+ lambda_param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param ','"));
16002
113k
            _res = a;
16003
113k
            if (_res == NULL && PyErr_Occurred()) {
16004
0
                p->error_indicator = 1;
16005
0
                p->level--;
16006
0
                return NULL;
16007
0
            }
16008
113k
            goto done;
16009
113k
        }
16010
212k
        p->mark = _mark;
16011
212k
        D(fprintf(stderr, "%*c%s lambda_param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
16012
212k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param ','"));
16013
212k
    }
16014
0
    { // lambda_param &':'
16015
212k
        if (p->error_indicator) {
16016
29
            p->level--;
16017
29
            return NULL;
16018
29
        }
16019
212k
        D(fprintf(stderr, "%*c> lambda_param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param &':'"));
16020
212k
        arg_ty a;
16021
212k
        if (
16022
212k
            (a = lambda_param_rule(p))  // lambda_param
16023
212k
            &&
16024
212k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
16025
212k
        )
16026
13.6k
        {
16027
13.6k
            D(fprintf(stderr, "%*c+ lambda_param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param &':'"));
16028
13.6k
            _res = a;
16029
13.6k
            if (_res == NULL && PyErr_Occurred()) {
16030
0
                p->error_indicator = 1;
16031
0
                p->level--;
16032
0
                return NULL;
16033
0
            }
16034
13.6k
            goto done;
16035
13.6k
        }
16036
198k
        p->mark = _mark;
16037
198k
        D(fprintf(stderr, "%*c%s lambda_param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
16038
198k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param &':'"));
16039
198k
    }
16040
0
    _res = NULL;
16041
326k
  done:
16042
326k
    p->level--;
16043
326k
    return _res;
16044
198k
}
16045
16046
// lambda_param_with_default: lambda_param default ',' | lambda_param default &':'
16047
static NameDefaultPair*
16048
lambda_param_with_default_rule(Parser *p)
16049
133k
{
16050
133k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16051
0
        _Pypegen_stack_overflow(p);
16052
0
    }
16053
133k
    if (p->error_indicator) {
16054
0
        p->level--;
16055
0
        return NULL;
16056
0
    }
16057
133k
    NameDefaultPair* _res = NULL;
16058
133k
    int _mark = p->mark;
16059
133k
    { // lambda_param default ','
16060
133k
        if (p->error_indicator) {
16061
0
            p->level--;
16062
0
            return NULL;
16063
0
        }
16064
133k
        D(fprintf(stderr, "%*c> lambda_param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default ','"));
16065
133k
        Token * _literal;
16066
133k
        arg_ty a;
16067
133k
        expr_ty c;
16068
133k
        if (
16069
133k
            (a = lambda_param_rule(p))  // lambda_param
16070
133k
            &&
16071
133k
            (c = default_rule(p))  // default
16072
133k
            &&
16073
133k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
16074
133k
        )
16075
24.3k
        {
16076
24.3k
            D(fprintf(stderr, "%*c+ lambda_param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default ','"));
16077
24.3k
            _res = _PyPegen_name_default_pair ( p , a , c , NULL );
16078
24.3k
            if (_res == NULL && PyErr_Occurred()) {
16079
0
                p->error_indicator = 1;
16080
0
                p->level--;
16081
0
                return NULL;
16082
0
            }
16083
24.3k
            goto done;
16084
24.3k
        }
16085
109k
        p->mark = _mark;
16086
109k
        D(fprintf(stderr, "%*c%s lambda_param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
16087
109k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default ','"));
16088
109k
    }
16089
0
    { // lambda_param default &':'
16090
109k
        if (p->error_indicator) {
16091
1.08k
            p->level--;
16092
1.08k
            return NULL;
16093
1.08k
        }
16094
108k
        D(fprintf(stderr, "%*c> lambda_param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default &':'"));
16095
108k
        arg_ty a;
16096
108k
        expr_ty c;
16097
108k
        if (
16098
108k
            (a = lambda_param_rule(p))  // lambda_param
16099
108k
            &&
16100
108k
            (c = default_rule(p))  // default
16101
108k
            &&
16102
108k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
16103
108k
        )
16104
9.99k
        {
16105
9.99k
            D(fprintf(stderr, "%*c+ lambda_param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default &':'"));
16106
9.99k
            _res = _PyPegen_name_default_pair ( p , a , c , NULL );
16107
9.99k
            if (_res == NULL && PyErr_Occurred()) {
16108
0
                p->error_indicator = 1;
16109
0
                p->level--;
16110
0
                return NULL;
16111
0
            }
16112
9.99k
            goto done;
16113
9.99k
        }
16114
98.2k
        p->mark = _mark;
16115
98.2k
        D(fprintf(stderr, "%*c%s lambda_param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
16116
98.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default &':'"));
16117
98.2k
    }
16118
0
    _res = NULL;
16119
132k
  done:
16120
132k
    p->level--;
16121
132k
    return _res;
16122
98.2k
}
16123
16124
// lambda_param_maybe_default: lambda_param default? ',' | lambda_param default? &':'
16125
static NameDefaultPair*
16126
lambda_param_maybe_default_rule(Parser *p)
16127
49.5k
{
16128
49.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16129
0
        _Pypegen_stack_overflow(p);
16130
0
    }
16131
49.5k
    if (p->error_indicator) {
16132
0
        p->level--;
16133
0
        return NULL;
16134
0
    }
16135
49.5k
    NameDefaultPair* _res = NULL;
16136
49.5k
    int _mark = p->mark;
16137
49.5k
    { // lambda_param default? ','
16138
49.5k
        if (p->error_indicator) {
16139
0
            p->level--;
16140
0
            return NULL;
16141
0
        }
16142
49.5k
        D(fprintf(stderr, "%*c> lambda_param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default? ','"));
16143
49.5k
        Token * _literal;
16144
49.5k
        arg_ty a;
16145
49.5k
        void *c;
16146
49.5k
        if (
16147
49.5k
            (a = lambda_param_rule(p))  // lambda_param
16148
49.5k
            &&
16149
49.5k
            (c = default_rule(p), !p->error_indicator)  // default?
16150
49.5k
            &&
16151
49.5k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
16152
49.5k
        )
16153
19.0k
        {
16154
19.0k
            D(fprintf(stderr, "%*c+ lambda_param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default? ','"));
16155
19.0k
            _res = _PyPegen_name_default_pair ( p , a , c , NULL );
16156
19.0k
            if (_res == NULL && PyErr_Occurred()) {
16157
0
                p->error_indicator = 1;
16158
0
                p->level--;
16159
0
                return NULL;
16160
0
            }
16161
19.0k
            goto done;
16162
19.0k
        }
16163
30.4k
        p->mark = _mark;
16164
30.4k
        D(fprintf(stderr, "%*c%s lambda_param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
16165
30.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default? ','"));
16166
30.4k
    }
16167
0
    { // lambda_param default? &':'
16168
30.4k
        if (p->error_indicator) {
16169
1.14k
            p->level--;
16170
1.14k
            return NULL;
16171
1.14k
        }
16172
29.3k
        D(fprintf(stderr, "%*c> lambda_param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default? &':'"));
16173
29.3k
        arg_ty a;
16174
29.3k
        void *c;
16175
29.3k
        if (
16176
29.3k
            (a = lambda_param_rule(p))  // lambda_param
16177
29.3k
            &&
16178
29.3k
            (c = default_rule(p), !p->error_indicator)  // default?
16179
29.3k
            &&
16180
29.3k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
16181
29.3k
        )
16182
3.21k
        {
16183
3.21k
            D(fprintf(stderr, "%*c+ lambda_param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default? &':'"));
16184
3.21k
            _res = _PyPegen_name_default_pair ( p , a , c , NULL );
16185
3.21k
            if (_res == NULL && PyErr_Occurred()) {
16186
0
                p->error_indicator = 1;
16187
0
                p->level--;
16188
0
                return NULL;
16189
0
            }
16190
3.21k
            goto done;
16191
3.21k
        }
16192
26.1k
        p->mark = _mark;
16193
26.1k
        D(fprintf(stderr, "%*c%s lambda_param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
16194
26.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default? &':'"));
16195
26.1k
    }
16196
0
    _res = NULL;
16197
48.3k
  done:
16198
48.3k
    p->level--;
16199
48.3k
    return _res;
16200
26.1k
}
16201
16202
// lambda_param: NAME
16203
static arg_ty
16204
lambda_param_rule(Parser *p)
16205
866k
{
16206
866k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16207
0
        _Pypegen_stack_overflow(p);
16208
0
    }
16209
866k
    if (p->error_indicator) {
16210
0
        p->level--;
16211
0
        return NULL;
16212
0
    }
16213
866k
    arg_ty _res = NULL;
16214
866k
    int _mark = p->mark;
16215
866k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16216
66
        p->error_indicator = 1;
16217
66
        p->level--;
16218
66
        return NULL;
16219
66
    }
16220
866k
    int _start_lineno = p->tokens[_mark]->lineno;
16221
866k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16222
866k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16223
866k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16224
866k
    { // NAME
16225
866k
        if (p->error_indicator) {
16226
0
            p->level--;
16227
0
            return NULL;
16228
0
        }
16229
866k
        D(fprintf(stderr, "%*c> lambda_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
16230
866k
        expr_ty a;
16231
866k
        if (
16232
866k
            (a = _PyPegen_name_token(p))  // NAME
16233
866k
        )
16234
446k
        {
16235
446k
            D(fprintf(stderr, "%*c+ lambda_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
16236
446k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16237
446k
            if (_token == NULL) {
16238
0
                p->level--;
16239
0
                return NULL;
16240
0
            }
16241
446k
            int _end_lineno = _token->end_lineno;
16242
446k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16243
446k
            int _end_col_offset = _token->end_col_offset;
16244
446k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16245
446k
            _res = _PyAST_arg ( a -> v . Name . id , NULL , NULL , EXTRA );
16246
446k
            if (_res == NULL && PyErr_Occurred()) {
16247
0
                p->error_indicator = 1;
16248
0
                p->level--;
16249
0
                return NULL;
16250
0
            }
16251
446k
            goto done;
16252
446k
        }
16253
419k
        p->mark = _mark;
16254
419k
        D(fprintf(stderr, "%*c%s lambda_param[%d-%d]: %s failed!\n", p->level, ' ',
16255
419k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
16256
419k
    }
16257
0
    _res = NULL;
16258
866k
  done:
16259
866k
    p->level--;
16260
866k
    return _res;
16261
419k
}
16262
16263
// fstring_middle: fstring_replacement_field | FSTRING_MIDDLE
16264
static expr_ty
16265
fstring_middle_rule(Parser *p)
16266
58.8k
{
16267
58.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16268
1
        _Pypegen_stack_overflow(p);
16269
1
    }
16270
58.8k
    if (p->error_indicator) {
16271
1
        p->level--;
16272
1
        return NULL;
16273
1
    }
16274
58.8k
    expr_ty _res = NULL;
16275
58.8k
    int _mark = p->mark;
16276
58.8k
    { // fstring_replacement_field
16277
58.8k
        if (p->error_indicator) {
16278
0
            p->level--;
16279
0
            return NULL;
16280
0
        }
16281
58.8k
        D(fprintf(stderr, "%*c> fstring_middle[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field"));
16282
58.8k
        expr_ty fstring_replacement_field_var;
16283
58.8k
        if (
16284
58.8k
            (fstring_replacement_field_var = fstring_replacement_field_rule(p))  // fstring_replacement_field
16285
58.8k
        )
16286
15.9k
        {
16287
15.9k
            D(fprintf(stderr, "%*c+ fstring_middle[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field"));
16288
15.9k
            _res = fstring_replacement_field_var;
16289
15.9k
            goto done;
16290
15.9k
        }
16291
42.9k
        p->mark = _mark;
16292
42.9k
        D(fprintf(stderr, "%*c%s fstring_middle[%d-%d]: %s failed!\n", p->level, ' ',
16293
42.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_replacement_field"));
16294
42.9k
    }
16295
0
    { // FSTRING_MIDDLE
16296
42.9k
        if (p->error_indicator) {
16297
2.27k
            p->level--;
16298
2.27k
            return NULL;
16299
2.27k
        }
16300
40.6k
        D(fprintf(stderr, "%*c> fstring_middle[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE"));
16301
40.6k
        Token * t;
16302
40.6k
        if (
16303
40.6k
            (t = _PyPegen_expect_token(p, FSTRING_MIDDLE))  // token='FSTRING_MIDDLE'
16304
40.6k
        )
16305
26.1k
        {
16306
26.1k
            D(fprintf(stderr, "%*c+ fstring_middle[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE"));
16307
26.1k
            _res = _PyPegen_constant_from_token ( p , t );
16308
26.1k
            if (_res == NULL && PyErr_Occurred()) {
16309
5
                p->error_indicator = 1;
16310
5
                p->level--;
16311
5
                return NULL;
16312
5
            }
16313
26.1k
            goto done;
16314
26.1k
        }
16315
14.5k
        p->mark = _mark;
16316
14.5k
        D(fprintf(stderr, "%*c%s fstring_middle[%d-%d]: %s failed!\n", p->level, ' ',
16317
14.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_MIDDLE"));
16318
14.5k
    }
16319
0
    _res = NULL;
16320
56.5k
  done:
16321
56.5k
    p->level--;
16322
56.5k
    return _res;
16323
14.5k
}
16324
16325
// fstring_replacement_field:
16326
//     | '{' annotated_rhs '='? fstring_conversion? fstring_full_format_spec? '}'
16327
//     | invalid_fstring_replacement_field
16328
static expr_ty
16329
fstring_replacement_field_rule(Parser *p)
16330
66.0k
{
16331
66.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16332
1
        _Pypegen_stack_overflow(p);
16333
1
    }
16334
66.0k
    if (p->error_indicator) {
16335
1
        p->level--;
16336
1
        return NULL;
16337
1
    }
16338
66.0k
    expr_ty _res = NULL;
16339
66.0k
    int _mark = p->mark;
16340
66.0k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16341
161
        p->error_indicator = 1;
16342
161
        p->level--;
16343
161
        return NULL;
16344
161
    }
16345
65.9k
    int _start_lineno = p->tokens[_mark]->lineno;
16346
65.9k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16347
65.9k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16348
65.9k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16349
65.9k
    { // '{' annotated_rhs '='? fstring_conversion? fstring_full_format_spec? '}'
16350
65.9k
        if (p->error_indicator) {
16351
0
            p->level--;
16352
0
            return NULL;
16353
0
        }
16354
65.9k
        D(fprintf(stderr, "%*c> fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? fstring_full_format_spec? '}'"));
16355
65.9k
        Token * _literal;
16356
65.9k
        expr_ty a;
16357
65.9k
        void *conversion;
16358
65.9k
        void *debug_expr;
16359
65.9k
        void *format;
16360
65.9k
        Token * rbrace;
16361
65.9k
        if (
16362
65.9k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
16363
65.9k
            &&
16364
65.9k
            (a = annotated_rhs_rule(p))  // annotated_rhs
16365
65.9k
            &&
16366
65.9k
            (debug_expr = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
16367
65.9k
            &&
16368
65.9k
            (conversion = fstring_conversion_rule(p), !p->error_indicator)  // fstring_conversion?
16369
65.9k
            &&
16370
65.9k
            (format = fstring_full_format_spec_rule(p), !p->error_indicator)  // fstring_full_format_spec?
16371
65.9k
            &&
16372
65.9k
            (rbrace = _PyPegen_expect_token(p, 26))  // token='}'
16373
65.9k
        )
16374
19.5k
        {
16375
19.5k
            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? '}'"));
16376
19.5k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16377
19.5k
            if (_token == NULL) {
16378
0
                p->level--;
16379
0
                return NULL;
16380
0
            }
16381
19.5k
            int _end_lineno = _token->end_lineno;
16382
19.5k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16383
19.5k
            int _end_col_offset = _token->end_col_offset;
16384
19.5k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16385
19.5k
            _res = _PyPegen_formatted_value ( p , a , debug_expr , conversion , format , rbrace , EXTRA );
16386
19.5k
            if (_res == NULL && PyErr_Occurred()) {
16387
2
                p->error_indicator = 1;
16388
2
                p->level--;
16389
2
                return NULL;
16390
2
            }
16391
19.5k
            goto done;
16392
19.5k
        }
16393
46.3k
        p->mark = _mark;
16394
46.3k
        D(fprintf(stderr, "%*c%s fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16395
46.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? fstring_full_format_spec? '}'"));
16396
46.3k
    }
16397
46.3k
    if (p->call_invalid_rules) { // invalid_fstring_replacement_field
16398
9.26k
        if (p->error_indicator) {
16399
1.43k
            p->level--;
16400
1.43k
            return NULL;
16401
1.43k
        }
16402
7.82k
        D(fprintf(stderr, "%*c> fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_fstring_replacement_field"));
16403
7.82k
        void *invalid_fstring_replacement_field_var;
16404
7.82k
        if (
16405
7.82k
            (invalid_fstring_replacement_field_var = invalid_fstring_replacement_field_rule(p))  // invalid_fstring_replacement_field
16406
7.82k
        )
16407
0
        {
16408
0
            D(fprintf(stderr, "%*c+ fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_fstring_replacement_field"));
16409
0
            _res = invalid_fstring_replacement_field_var;
16410
0
            goto done;
16411
0
        }
16412
7.82k
        p->mark = _mark;
16413
7.82k
        D(fprintf(stderr, "%*c%s fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16414
7.82k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_fstring_replacement_field"));
16415
7.82k
    }
16416
44.9k
    _res = NULL;
16417
64.4k
  done:
16418
64.4k
    p->level--;
16419
64.4k
    return _res;
16420
44.9k
}
16421
16422
// fstring_conversion: "!" NAME
16423
static ResultTokenWithMetadata*
16424
fstring_conversion_rule(Parser *p)
16425
27.9k
{
16426
27.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16427
0
        _Pypegen_stack_overflow(p);
16428
0
    }
16429
27.9k
    if (p->error_indicator) {
16430
0
        p->level--;
16431
0
        return NULL;
16432
0
    }
16433
27.9k
    ResultTokenWithMetadata* _res = NULL;
16434
27.9k
    int _mark = p->mark;
16435
27.9k
    { // "!" NAME
16436
27.9k
        if (p->error_indicator) {
16437
0
            p->level--;
16438
0
            return NULL;
16439
0
        }
16440
27.9k
        D(fprintf(stderr, "%*c> fstring_conversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"!\" NAME"));
16441
27.9k
        expr_ty conv;
16442
27.9k
        Token * conv_token;
16443
27.9k
        if (
16444
27.9k
            (conv_token = _PyPegen_expect_token(p, 54))  // token='!'
16445
27.9k
            &&
16446
27.9k
            (conv = _PyPegen_name_token(p))  // NAME
16447
27.9k
        )
16448
1.51k
        {
16449
1.51k
            D(fprintf(stderr, "%*c+ fstring_conversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"!\" NAME"));
16450
1.51k
            _res = _PyPegen_check_fstring_conversion ( p , conv_token , conv );
16451
1.51k
            if (_res == NULL && PyErr_Occurred()) {
16452
12
                p->error_indicator = 1;
16453
12
                p->level--;
16454
12
                return NULL;
16455
12
            }
16456
1.49k
            goto done;
16457
1.51k
        }
16458
26.4k
        p->mark = _mark;
16459
26.4k
        D(fprintf(stderr, "%*c%s fstring_conversion[%d-%d]: %s failed!\n", p->level, ' ',
16460
26.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"!\" NAME"));
16461
26.4k
    }
16462
0
    _res = NULL;
16463
27.9k
  done:
16464
27.9k
    p->level--;
16465
27.9k
    return _res;
16466
26.4k
}
16467
16468
// fstring_full_format_spec: ':' fstring_format_spec*
16469
static ResultTokenWithMetadata*
16470
fstring_full_format_spec_rule(Parser *p)
16471
21.1k
{
16472
21.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16473
0
        _Pypegen_stack_overflow(p);
16474
0
    }
16475
21.1k
    if (p->error_indicator) {
16476
0
        p->level--;
16477
0
        return NULL;
16478
0
    }
16479
21.1k
    ResultTokenWithMetadata* _res = NULL;
16480
21.1k
    int _mark = p->mark;
16481
21.1k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16482
2
        p->error_indicator = 1;
16483
2
        p->level--;
16484
2
        return NULL;
16485
2
    }
16486
21.1k
    int _start_lineno = p->tokens[_mark]->lineno;
16487
21.1k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16488
21.1k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16489
21.1k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16490
21.1k
    { // ':' fstring_format_spec*
16491
21.1k
        if (p->error_indicator) {
16492
0
            p->level--;
16493
0
            return NULL;
16494
0
        }
16495
21.1k
        D(fprintf(stderr, "%*c> fstring_full_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' fstring_format_spec*"));
16496
21.1k
        Token * colon;
16497
21.1k
        asdl_seq * spec;
16498
21.1k
        if (
16499
21.1k
            (colon = _PyPegen_expect_token(p, 11))  // token=':'
16500
21.1k
            &&
16501
21.1k
            (spec = _loop0_76_rule(p))  // fstring_format_spec*
16502
21.1k
        )
16503
3.38k
        {
16504
3.38k
            D(fprintf(stderr, "%*c+ fstring_full_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' fstring_format_spec*"));
16505
3.38k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16506
3.38k
            if (_token == NULL) {
16507
0
                p->level--;
16508
0
                return NULL;
16509
0
            }
16510
3.38k
            int _end_lineno = _token->end_lineno;
16511
3.38k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16512
3.38k
            int _end_col_offset = _token->end_col_offset;
16513
3.38k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16514
3.38k
            _res = _PyPegen_setup_full_format_spec ( p , colon , ( asdl_expr_seq* ) spec , EXTRA );
16515
3.38k
            if (_res == NULL && PyErr_Occurred()) {
16516
0
                p->error_indicator = 1;
16517
0
                p->level--;
16518
0
                return NULL;
16519
0
            }
16520
3.38k
            goto done;
16521
3.38k
        }
16522
17.7k
        p->mark = _mark;
16523
17.7k
        D(fprintf(stderr, "%*c%s fstring_full_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16524
17.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' fstring_format_spec*"));
16525
17.7k
    }
16526
0
    _res = NULL;
16527
21.1k
  done:
16528
21.1k
    p->level--;
16529
21.1k
    return _res;
16530
17.7k
}
16531
16532
// fstring_format_spec: FSTRING_MIDDLE | fstring_replacement_field
16533
static expr_ty
16534
fstring_format_spec_rule(Parser *p)
16535
14.1k
{
16536
14.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16537
0
        _Pypegen_stack_overflow(p);
16538
0
    }
16539
14.1k
    if (p->error_indicator) {
16540
0
        p->level--;
16541
0
        return NULL;
16542
0
    }
16543
14.1k
    expr_ty _res = NULL;
16544
14.1k
    int _mark = p->mark;
16545
14.1k
    { // FSTRING_MIDDLE
16546
14.1k
        if (p->error_indicator) {
16547
0
            p->level--;
16548
0
            return NULL;
16549
0
        }
16550
14.1k
        D(fprintf(stderr, "%*c> fstring_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE"));
16551
14.1k
        Token * t;
16552
14.1k
        if (
16553
14.1k
            (t = _PyPegen_expect_token(p, FSTRING_MIDDLE))  // token='FSTRING_MIDDLE'
16554
14.1k
        )
16555
6.88k
        {
16556
6.88k
            D(fprintf(stderr, "%*c+ fstring_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE"));
16557
6.88k
            _res = _PyPegen_decoded_constant_from_token ( p , t );
16558
6.88k
            if (_res == NULL && PyErr_Occurred()) {
16559
1
                p->error_indicator = 1;
16560
1
                p->level--;
16561
1
                return NULL;
16562
1
            }
16563
6.88k
            goto done;
16564
6.88k
        }
16565
7.21k
        p->mark = _mark;
16566
7.21k
        D(fprintf(stderr, "%*c%s fstring_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16567
7.21k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_MIDDLE"));
16568
7.21k
    }
16569
0
    { // fstring_replacement_field
16570
7.21k
        if (p->error_indicator) {
16571
10
            p->level--;
16572
10
            return NULL;
16573
10
        }
16574
7.20k
        D(fprintf(stderr, "%*c> fstring_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field"));
16575
7.20k
        expr_ty fstring_replacement_field_var;
16576
7.20k
        if (
16577
7.20k
            (fstring_replacement_field_var = fstring_replacement_field_rule(p))  // fstring_replacement_field
16578
7.20k
        )
16579
3.63k
        {
16580
3.63k
            D(fprintf(stderr, "%*c+ fstring_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field"));
16581
3.63k
            _res = fstring_replacement_field_var;
16582
3.63k
            goto done;
16583
3.63k
        }
16584
3.57k
        p->mark = _mark;
16585
3.57k
        D(fprintf(stderr, "%*c%s fstring_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16586
3.57k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_replacement_field"));
16587
3.57k
    }
16588
0
    _res = NULL;
16589
14.0k
  done:
16590
14.0k
    p->level--;
16591
14.0k
    return _res;
16592
3.57k
}
16593
16594
// fstring: FSTRING_START fstring_middle* FSTRING_END
16595
static expr_ty
16596
fstring_rule(Parser *p)
16597
180k
{
16598
180k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16599
1
        _Pypegen_stack_overflow(p);
16600
1
    }
16601
180k
    if (p->error_indicator) {
16602
1
        p->level--;
16603
1
        return NULL;
16604
1
    }
16605
180k
    expr_ty _res = NULL;
16606
180k
    int _mark = p->mark;
16607
180k
    { // FSTRING_START fstring_middle* FSTRING_END
16608
180k
        if (p->error_indicator) {
16609
0
            p->level--;
16610
0
            return NULL;
16611
0
        }
16612
180k
        D(fprintf(stderr, "%*c> fstring[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_START fstring_middle* FSTRING_END"));
16613
180k
        Token * a;
16614
180k
        asdl_seq * b;
16615
180k
        Token * c;
16616
180k
        if (
16617
180k
            (a = _PyPegen_expect_token(p, FSTRING_START))  // token='FSTRING_START'
16618
180k
            &&
16619
180k
            (b = _loop0_77_rule(p))  // fstring_middle*
16620
180k
            &&
16621
180k
            (c = _PyPegen_expect_token(p, FSTRING_END))  // token='FSTRING_END'
16622
180k
        )
16623
13.0k
        {
16624
13.0k
            D(fprintf(stderr, "%*c+ fstring[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_START fstring_middle* FSTRING_END"));
16625
13.0k
            _res = _PyPegen_joined_str ( p , a , ( asdl_expr_seq* ) b , c );
16626
13.0k
            if (_res == NULL && PyErr_Occurred()) {
16627
0
                p->error_indicator = 1;
16628
0
                p->level--;
16629
0
                return NULL;
16630
0
            }
16631
13.0k
            goto done;
16632
13.0k
        }
16633
167k
        p->mark = _mark;
16634
167k
        D(fprintf(stderr, "%*c%s fstring[%d-%d]: %s failed!\n", p->level, ' ',
16635
167k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_START fstring_middle* FSTRING_END"));
16636
167k
    }
16637
0
    _res = NULL;
16638
180k
  done:
16639
180k
    p->level--;
16640
180k
    return _res;
16641
167k
}
16642
16643
// tstring_format_spec_replacement_field:
16644
//     | '{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'
16645
//     | invalid_tstring_replacement_field
16646
static expr_ty
16647
tstring_format_spec_replacement_field_rule(Parser *p)
16648
3.88k
{
16649
3.88k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16650
0
        _Pypegen_stack_overflow(p);
16651
0
    }
16652
3.88k
    if (p->error_indicator) {
16653
0
        p->level--;
16654
0
        return NULL;
16655
0
    }
16656
3.88k
    expr_ty _res = NULL;
16657
3.88k
    int _mark = p->mark;
16658
3.88k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16659
0
        p->error_indicator = 1;
16660
0
        p->level--;
16661
0
        return NULL;
16662
0
    }
16663
3.88k
    int _start_lineno = p->tokens[_mark]->lineno;
16664
3.88k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16665
3.88k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16666
3.88k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16667
3.88k
    { // '{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'
16668
3.88k
        if (p->error_indicator) {
16669
0
            p->level--;
16670
0
            return NULL;
16671
0
        }
16672
3.88k
        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? '}'"));
16673
3.88k
        Token * _literal;
16674
3.88k
        expr_ty a;
16675
3.88k
        void *conversion;
16676
3.88k
        void *debug_expr;
16677
3.88k
        void *format;
16678
3.88k
        Token * rbrace;
16679
3.88k
        if (
16680
3.88k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
16681
3.88k
            &&
16682
3.88k
            (a = annotated_rhs_rule(p))  // annotated_rhs
16683
3.88k
            &&
16684
3.88k
            (debug_expr = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
16685
3.88k
            &&
16686
3.88k
            (conversion = fstring_conversion_rule(p), !p->error_indicator)  // fstring_conversion?
16687
3.88k
            &&
16688
3.88k
            (format = tstring_full_format_spec_rule(p), !p->error_indicator)  // tstring_full_format_spec?
16689
3.88k
            &&
16690
3.88k
            (rbrace = _PyPegen_expect_token(p, 26))  // token='}'
16691
3.88k
        )
16692
1.23k
        {
16693
1.23k
            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? '}'"));
16694
1.23k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16695
1.23k
            if (_token == NULL) {
16696
0
                p->level--;
16697
0
                return NULL;
16698
0
            }
16699
1.23k
            int _end_lineno = _token->end_lineno;
16700
1.23k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16701
1.23k
            int _end_col_offset = _token->end_col_offset;
16702
1.23k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16703
1.23k
            _res = _PyPegen_formatted_value ( p , a , debug_expr , conversion , format , rbrace , EXTRA );
16704
1.23k
            if (_res == NULL && PyErr_Occurred()) {
16705
1
                p->error_indicator = 1;
16706
1
                p->level--;
16707
1
                return NULL;
16708
1
            }
16709
1.23k
            goto done;
16710
1.23k
        }
16711
2.65k
        p->mark = _mark;
16712
2.65k
        D(fprintf(stderr, "%*c%s tstring_format_spec_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16713
2.65k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'"));
16714
2.65k
    }
16715
2.65k
    if (p->call_invalid_rules) { // invalid_tstring_replacement_field
16716
1.03k
        if (p->error_indicator) {
16717
282
            p->level--;
16718
282
            return NULL;
16719
282
        }
16720
756
        D(fprintf(stderr, "%*c> tstring_format_spec_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_tstring_replacement_field"));
16721
756
        void *invalid_tstring_replacement_field_var;
16722
756
        if (
16723
756
            (invalid_tstring_replacement_field_var = invalid_tstring_replacement_field_rule(p))  // invalid_tstring_replacement_field
16724
756
        )
16725
0
        {
16726
0
            D(fprintf(stderr, "%*c+ tstring_format_spec_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_tstring_replacement_field"));
16727
0
            _res = invalid_tstring_replacement_field_var;
16728
0
            goto done;
16729
0
        }
16730
756
        p->mark = _mark;
16731
756
        D(fprintf(stderr, "%*c%s tstring_format_spec_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16732
756
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_tstring_replacement_field"));
16733
756
    }
16734
2.36k
    _res = NULL;
16735
3.60k
  done:
16736
3.60k
    p->level--;
16737
3.60k
    return _res;
16738
2.36k
}
16739
16740
// tstring_format_spec: TSTRING_MIDDLE | tstring_format_spec_replacement_field
16741
static expr_ty
16742
tstring_format_spec_rule(Parser *p)
16743
6.80k
{
16744
6.80k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16745
0
        _Pypegen_stack_overflow(p);
16746
0
    }
16747
6.80k
    if (p->error_indicator) {
16748
0
        p->level--;
16749
0
        return NULL;
16750
0
    }
16751
6.80k
    expr_ty _res = NULL;
16752
6.80k
    int _mark = p->mark;
16753
6.80k
    { // TSTRING_MIDDLE
16754
6.80k
        if (p->error_indicator) {
16755
0
            p->level--;
16756
0
            return NULL;
16757
0
        }
16758
6.80k
        D(fprintf(stderr, "%*c> tstring_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TSTRING_MIDDLE"));
16759
6.80k
        Token * t;
16760
6.80k
        if (
16761
6.80k
            (t = _PyPegen_expect_token(p, TSTRING_MIDDLE))  // token='TSTRING_MIDDLE'
16762
6.80k
        )
16763
2.90k
        {
16764
2.90k
            D(fprintf(stderr, "%*c+ tstring_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TSTRING_MIDDLE"));
16765
2.90k
            _res = _PyPegen_decoded_constant_from_token ( p , t );
16766
2.90k
            if (_res == NULL && PyErr_Occurred()) {
16767
1
                p->error_indicator = 1;
16768
1
                p->level--;
16769
1
                return NULL;
16770
1
            }
16771
2.90k
            goto done;
16772
2.90k
        }
16773
3.89k
        p->mark = _mark;
16774
3.89k
        D(fprintf(stderr, "%*c%s tstring_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16775
3.89k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TSTRING_MIDDLE"));
16776
3.89k
    }
16777
0
    { // tstring_format_spec_replacement_field
16778
3.89k
        if (p->error_indicator) {
16779
15
            p->level--;
16780
15
            return NULL;
16781
15
        }
16782
3.88k
        D(fprintf(stderr, "%*c> tstring_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring_format_spec_replacement_field"));
16783
3.88k
        expr_ty tstring_format_spec_replacement_field_var;
16784
3.88k
        if (
16785
3.88k
            (tstring_format_spec_replacement_field_var = tstring_format_spec_replacement_field_rule(p))  // tstring_format_spec_replacement_field
16786
3.88k
        )
16787
1.23k
        {
16788
1.23k
            D(fprintf(stderr, "%*c+ tstring_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tstring_format_spec_replacement_field"));
16789
1.23k
            _res = tstring_format_spec_replacement_field_var;
16790
1.23k
            goto done;
16791
1.23k
        }
16792
2.65k
        p->mark = _mark;
16793
2.65k
        D(fprintf(stderr, "%*c%s tstring_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16794
2.65k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring_format_spec_replacement_field"));
16795
2.65k
    }
16796
0
    _res = NULL;
16797
6.78k
  done:
16798
6.78k
    p->level--;
16799
6.78k
    return _res;
16800
2.65k
}
16801
16802
// tstring_full_format_spec: ':' tstring_format_spec*
16803
static ResultTokenWithMetadata*
16804
tstring_full_format_spec_rule(Parser *p)
16805
6.81k
{
16806
6.81k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16807
0
        _Pypegen_stack_overflow(p);
16808
0
    }
16809
6.81k
    if (p->error_indicator) {
16810
0
        p->level--;
16811
0
        return NULL;
16812
0
    }
16813
6.81k
    ResultTokenWithMetadata* _res = NULL;
16814
6.81k
    int _mark = p->mark;
16815
6.81k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16816
2
        p->error_indicator = 1;
16817
2
        p->level--;
16818
2
        return NULL;
16819
2
    }
16820
6.81k
    int _start_lineno = p->tokens[_mark]->lineno;
16821
6.81k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16822
6.81k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16823
6.81k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16824
6.81k
    { // ':' tstring_format_spec*
16825
6.81k
        if (p->error_indicator) {
16826
0
            p->level--;
16827
0
            return NULL;
16828
0
        }
16829
6.81k
        D(fprintf(stderr, "%*c> tstring_full_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' tstring_format_spec*"));
16830
6.81k
        Token * colon;
16831
6.81k
        asdl_seq * spec;
16832
6.81k
        if (
16833
6.81k
            (colon = _PyPegen_expect_token(p, 11))  // token=':'
16834
6.81k
            &&
16835
6.81k
            (spec = _loop0_78_rule(p))  // tstring_format_spec*
16836
6.81k
        )
16837
2.66k
        {
16838
2.66k
            D(fprintf(stderr, "%*c+ tstring_full_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' tstring_format_spec*"));
16839
2.66k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16840
2.66k
            if (_token == NULL) {
16841
0
                p->level--;
16842
0
                return NULL;
16843
0
            }
16844
2.66k
            int _end_lineno = _token->end_lineno;
16845
2.66k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16846
2.66k
            int _end_col_offset = _token->end_col_offset;
16847
2.66k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16848
2.66k
            _res = _PyPegen_setup_full_format_spec ( p , colon , ( asdl_expr_seq* ) spec , EXTRA );
16849
2.66k
            if (_res == NULL && PyErr_Occurred()) {
16850
0
                p->error_indicator = 1;
16851
0
                p->level--;
16852
0
                return NULL;
16853
0
            }
16854
2.66k
            goto done;
16855
2.66k
        }
16856
4.14k
        p->mark = _mark;
16857
4.14k
        D(fprintf(stderr, "%*c%s tstring_full_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16858
4.14k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' tstring_format_spec*"));
16859
4.14k
    }
16860
0
    _res = NULL;
16861
6.81k
  done:
16862
6.81k
    p->level--;
16863
6.81k
    return _res;
16864
4.14k
}
16865
16866
// tstring_replacement_field:
16867
//     | '{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'
16868
//     | invalid_tstring_replacement_field
16869
static expr_ty
16870
tstring_replacement_field_rule(Parser *p)
16871
17.2k
{
16872
17.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16873
1
        _Pypegen_stack_overflow(p);
16874
1
    }
16875
17.2k
    if (p->error_indicator) {
16876
1
        p->level--;
16877
1
        return NULL;
16878
1
    }
16879
17.2k
    expr_ty _res = NULL;
16880
17.2k
    int _mark = p->mark;
16881
17.2k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16882
150
        p->error_indicator = 1;
16883
150
        p->level--;
16884
150
        return NULL;
16885
150
    }
16886
17.0k
    int _start_lineno = p->tokens[_mark]->lineno;
16887
17.0k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16888
17.0k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16889
17.0k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16890
17.0k
    { // '{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'
16891
17.0k
        if (p->error_indicator) {
16892
0
            p->level--;
16893
0
            return NULL;
16894
0
        }
16895
17.0k
        D(fprintf(stderr, "%*c> tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'"));
16896
17.0k
        Token * _literal;
16897
17.0k
        expr_ty a;
16898
17.0k
        void *conversion;
16899
17.0k
        void *debug_expr;
16900
17.0k
        void *format;
16901
17.0k
        Token * rbrace;
16902
17.0k
        if (
16903
17.0k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
16904
17.0k
            &&
16905
17.0k
            (a = annotated_rhs_rule(p))  // annotated_rhs
16906
17.0k
            &&
16907
17.0k
            (debug_expr = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
16908
17.0k
            &&
16909
17.0k
            (conversion = fstring_conversion_rule(p), !p->error_indicator)  // fstring_conversion?
16910
17.0k
            &&
16911
17.0k
            (format = tstring_full_format_spec_rule(p), !p->error_indicator)  // tstring_full_format_spec?
16912
17.0k
            &&
16913
17.0k
            (rbrace = _PyPegen_expect_token(p, 26))  // token='}'
16914
17.0k
        )
16915
4.35k
        {
16916
4.35k
            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? '}'"));
16917
4.35k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16918
4.35k
            if (_token == NULL) {
16919
0
                p->level--;
16920
0
                return NULL;
16921
0
            }
16922
4.35k
            int _end_lineno = _token->end_lineno;
16923
4.35k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16924
4.35k
            int _end_col_offset = _token->end_col_offset;
16925
4.35k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16926
4.35k
            _res = _PyPegen_interpolation ( p , a , debug_expr , conversion , format , rbrace , EXTRA );
16927
4.35k
            if (_res == NULL && PyErr_Occurred()) {
16928
0
                p->error_indicator = 1;
16929
0
                p->level--;
16930
0
                return NULL;
16931
0
            }
16932
4.35k
            goto done;
16933
4.35k
        }
16934
12.7k
        p->mark = _mark;
16935
12.7k
        D(fprintf(stderr, "%*c%s tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16936
12.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'"));
16937
12.7k
    }
16938
12.7k
    if (p->call_invalid_rules) { // invalid_tstring_replacement_field
16939
5.07k
        if (p->error_indicator) {
16940
868
            p->level--;
16941
868
            return NULL;
16942
868
        }
16943
4.20k
        D(fprintf(stderr, "%*c> tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_tstring_replacement_field"));
16944
4.20k
        void *invalid_tstring_replacement_field_var;
16945
4.20k
        if (
16946
4.20k
            (invalid_tstring_replacement_field_var = invalid_tstring_replacement_field_rule(p))  // invalid_tstring_replacement_field
16947
4.20k
        )
16948
0
        {
16949
0
            D(fprintf(stderr, "%*c+ tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_tstring_replacement_field"));
16950
0
            _res = invalid_tstring_replacement_field_var;
16951
0
            goto done;
16952
0
        }
16953
4.20k
        p->mark = _mark;
16954
4.20k
        D(fprintf(stderr, "%*c%s tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16955
4.20k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_tstring_replacement_field"));
16956
4.20k
    }
16957
11.8k
    _res = NULL;
16958
16.2k
  done:
16959
16.2k
    p->level--;
16960
16.2k
    return _res;
16961
11.8k
}
16962
16963
// tstring_middle: tstring_replacement_field | TSTRING_MIDDLE
16964
static expr_ty
16965
tstring_middle_rule(Parser *p)
16966
17.2k
{
16967
17.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16968
1
        _Pypegen_stack_overflow(p);
16969
1
    }
16970
17.2k
    if (p->error_indicator) {
16971
1
        p->level--;
16972
1
        return NULL;
16973
1
    }
16974
17.2k
    expr_ty _res = NULL;
16975
17.2k
    int _mark = p->mark;
16976
17.2k
    { // tstring_replacement_field
16977
17.2k
        if (p->error_indicator) {
16978
0
            p->level--;
16979
0
            return NULL;
16980
0
        }
16981
17.2k
        D(fprintf(stderr, "%*c> tstring_middle[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring_replacement_field"));
16982
17.2k
        expr_ty tstring_replacement_field_var;
16983
17.2k
        if (
16984
17.2k
            (tstring_replacement_field_var = tstring_replacement_field_rule(p))  // tstring_replacement_field
16985
17.2k
        )
16986
4.35k
        {
16987
4.35k
            D(fprintf(stderr, "%*c+ tstring_middle[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tstring_replacement_field"));
16988
4.35k
            _res = tstring_replacement_field_var;
16989
4.35k
            goto done;
16990
4.35k
        }
16991
12.8k
        p->mark = _mark;
16992
12.8k
        D(fprintf(stderr, "%*c%s tstring_middle[%d-%d]: %s failed!\n", p->level, ' ',
16993
12.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring_replacement_field"));
16994
12.8k
    }
16995
0
    { // TSTRING_MIDDLE
16996
12.8k
        if (p->error_indicator) {
16997
1.36k
            p->level--;
16998
1.36k
            return NULL;
16999
1.36k
        }
17000
11.5k
        D(fprintf(stderr, "%*c> tstring_middle[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TSTRING_MIDDLE"));
17001
11.5k
        Token * t;
17002
11.5k
        if (
17003
11.5k
            (t = _PyPegen_expect_token(p, TSTRING_MIDDLE))  // token='TSTRING_MIDDLE'
17004
11.5k
        )
17005
7.44k
        {
17006
7.44k
            D(fprintf(stderr, "%*c+ tstring_middle[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TSTRING_MIDDLE"));
17007
7.44k
            _res = _PyPegen_constant_from_token ( p , t );
17008
7.44k
            if (_res == NULL && PyErr_Occurred()) {
17009
2
                p->error_indicator = 1;
17010
2
                p->level--;
17011
2
                return NULL;
17012
2
            }
17013
7.44k
            goto done;
17014
7.44k
        }
17015
4.06k
        p->mark = _mark;
17016
4.06k
        D(fprintf(stderr, "%*c%s tstring_middle[%d-%d]: %s failed!\n", p->level, ' ',
17017
4.06k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TSTRING_MIDDLE"));
17018
4.06k
    }
17019
0
    _res = NULL;
17020
15.8k
  done:
17021
15.8k
    p->level--;
17022
15.8k
    return _res;
17023
4.06k
}
17024
17025
// tstring: TSTRING_START tstring_middle* TSTRING_END
17026
static expr_ty
17027
tstring_rule(Parser *p)
17028
102k
{
17029
102k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17030
0
        _Pypegen_stack_overflow(p);
17031
0
    }
17032
102k
    if (p->error_indicator) {
17033
0
        p->level--;
17034
0
        return NULL;
17035
0
    }
17036
102k
    expr_ty _res = NULL;
17037
102k
    if (_PyPegen_is_memoized(p, tstring_type, &_res)) {
17038
869
        p->level--;
17039
869
        return _res;
17040
869
    }
17041
101k
    int _mark = p->mark;
17042
101k
    { // TSTRING_START tstring_middle* TSTRING_END
17043
101k
        if (p->error_indicator) {
17044
0
            p->level--;
17045
0
            return NULL;
17046
0
        }
17047
101k
        D(fprintf(stderr, "%*c> tstring[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TSTRING_START tstring_middle* TSTRING_END"));
17048
101k
        Token * a;
17049
101k
        asdl_seq * b;
17050
101k
        Token * c;
17051
101k
        if (
17052
101k
            (a = _PyPegen_expect_token(p, TSTRING_START))  // token='TSTRING_START'
17053
101k
            &&
17054
101k
            (b = _loop0_79_rule(p))  // tstring_middle*
17055
101k
            &&
17056
101k
            (c = _PyPegen_expect_token(p, TSTRING_END))  // token='TSTRING_END'
17057
101k
        )
17058
3.19k
        {
17059
3.19k
            D(fprintf(stderr, "%*c+ tstring[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TSTRING_START tstring_middle* TSTRING_END"));
17060
3.19k
            _res = CHECK_VERSION ( expr_ty , 14 , "t-strings are" , _PyPegen_template_str ( p , a , ( asdl_expr_seq* ) b , c ) );
17061
3.19k
            if (_res == NULL && PyErr_Occurred()) {
17062
0
                p->error_indicator = 1;
17063
0
                p->level--;
17064
0
                return NULL;
17065
0
            }
17066
3.19k
            goto done;
17067
3.19k
        }
17068
98.1k
        p->mark = _mark;
17069
98.1k
        D(fprintf(stderr, "%*c%s tstring[%d-%d]: %s failed!\n", p->level, ' ',
17070
98.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TSTRING_START tstring_middle* TSTRING_END"));
17071
98.1k
    }
17072
0
    _res = NULL;
17073
101k
  done:
17074
101k
    _PyPegen_insert_memo(p, _mark, tstring_type, _res);
17075
101k
    p->level--;
17076
101k
    return _res;
17077
98.1k
}
17078
17079
// string: STRING
17080
static expr_ty
17081
string_rule(Parser *p)
17082
165k
{
17083
165k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17084
0
        _Pypegen_stack_overflow(p);
17085
0
    }
17086
165k
    if (p->error_indicator) {
17087
0
        p->level--;
17088
0
        return NULL;
17089
0
    }
17090
165k
    expr_ty _res = NULL;
17091
165k
    int _mark = p->mark;
17092
165k
    { // STRING
17093
165k
        if (p->error_indicator) {
17094
0
            p->level--;
17095
0
            return NULL;
17096
0
        }
17097
165k
        D(fprintf(stderr, "%*c> string[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING"));
17098
165k
        Token* s;
17099
165k
        if (
17100
165k
            (s = (Token*)_PyPegen_string_token(p))  // STRING
17101
165k
        )
17102
63.3k
        {
17103
63.3k
            D(fprintf(stderr, "%*c+ string[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING"));
17104
63.3k
            _res = _PyPegen_constant_from_string ( p , s );
17105
63.3k
            if (_res == NULL && PyErr_Occurred()) {
17106
383
                p->error_indicator = 1;
17107
383
                p->level--;
17108
383
                return NULL;
17109
383
            }
17110
62.9k
            goto done;
17111
63.3k
        }
17112
102k
        p->mark = _mark;
17113
102k
        D(fprintf(stderr, "%*c%s string[%d-%d]: %s failed!\n", p->level, ' ',
17114
102k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING"));
17115
102k
    }
17116
0
    _res = NULL;
17117
165k
  done:
17118
165k
    p->level--;
17119
165k
    return _res;
17120
102k
}
17121
17122
// strings: ((fstring | string | tstring))+
17123
static expr_ty
17124
strings_rule(Parser *p)
17125
158k
{
17126
158k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17127
0
        _Pypegen_stack_overflow(p);
17128
0
    }
17129
158k
    if (p->error_indicator) {
17130
0
        p->level--;
17131
0
        return NULL;
17132
0
    }
17133
158k
    expr_ty _res = NULL;
17134
158k
    if (_PyPegen_is_memoized(p, strings_type, &_res)) {
17135
57.5k
        p->level--;
17136
57.5k
        return _res;
17137
57.5k
    }
17138
101k
    int _mark = p->mark;
17139
101k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17140
0
        p->error_indicator = 1;
17141
0
        p->level--;
17142
0
        return NULL;
17143
0
    }
17144
101k
    int _start_lineno = p->tokens[_mark]->lineno;
17145
101k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17146
101k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17147
101k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17148
101k
    { // ((fstring | string | tstring))+
17149
101k
        if (p->error_indicator) {
17150
0
            p->level--;
17151
0
            return NULL;
17152
0
        }
17153
101k
        D(fprintf(stderr, "%*c> strings[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((fstring | string | tstring))+"));
17154
101k
        asdl_expr_seq* a;
17155
101k
        if (
17156
101k
            (a = (asdl_expr_seq*)_loop1_80_rule(p))  // ((fstring | string | tstring))+
17157
101k
        )
17158
46.4k
        {
17159
46.4k
            D(fprintf(stderr, "%*c+ strings[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((fstring | string | tstring))+"));
17160
46.4k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17161
46.4k
            if (_token == NULL) {
17162
0
                p->level--;
17163
0
                return NULL;
17164
0
            }
17165
46.4k
            int _end_lineno = _token->end_lineno;
17166
46.4k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17167
46.4k
            int _end_col_offset = _token->end_col_offset;
17168
46.4k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17169
46.4k
            _res = _PyPegen_concatenate_strings ( p , a , EXTRA );
17170
46.4k
            if (_res == NULL && PyErr_Occurred()) {
17171
6
                p->error_indicator = 1;
17172
6
                p->level--;
17173
6
                return NULL;
17174
6
            }
17175
46.4k
            goto done;
17176
46.4k
        }
17177
54.9k
        p->mark = _mark;
17178
54.9k
        D(fprintf(stderr, "%*c%s strings[%d-%d]: %s failed!\n", p->level, ' ',
17179
54.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((fstring | string | tstring))+"));
17180
54.9k
    }
17181
0
    _res = NULL;
17182
101k
  done:
17183
101k
    _PyPegen_insert_memo(p, _mark, strings_type, _res);
17184
101k
    p->level--;
17185
101k
    return _res;
17186
54.9k
}
17187
17188
// list: '[' star_named_expressions? ']'
17189
static expr_ty
17190
list_rule(Parser *p)
17191
194k
{
17192
194k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17193
1
        _Pypegen_stack_overflow(p);
17194
1
    }
17195
194k
    if (p->error_indicator) {
17196
1
        p->level--;
17197
1
        return NULL;
17198
1
    }
17199
194k
    expr_ty _res = NULL;
17200
194k
    int _mark = p->mark;
17201
194k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17202
0
        p->error_indicator = 1;
17203
0
        p->level--;
17204
0
        return NULL;
17205
0
    }
17206
194k
    int _start_lineno = p->tokens[_mark]->lineno;
17207
194k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17208
194k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17209
194k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17210
194k
    { // '[' star_named_expressions? ']'
17211
194k
        if (p->error_indicator) {
17212
0
            p->level--;
17213
0
            return NULL;
17214
0
        }
17215
194k
        D(fprintf(stderr, "%*c> list[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' star_named_expressions? ']'"));
17216
194k
        Token * _literal;
17217
194k
        Token * _literal_1;
17218
194k
        void *a;
17219
194k
        if (
17220
194k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
17221
194k
            &&
17222
194k
            (a = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
17223
194k
            &&
17224
194k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
17225
194k
        )
17226
17.7k
        {
17227
17.7k
            D(fprintf(stderr, "%*c+ list[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' star_named_expressions? ']'"));
17228
17.7k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17229
17.7k
            if (_token == NULL) {
17230
0
                p->level--;
17231
0
                return NULL;
17232
0
            }
17233
17.7k
            int _end_lineno = _token->end_lineno;
17234
17.7k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17235
17.7k
            int _end_col_offset = _token->end_col_offset;
17236
17.7k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17237
17.7k
            _res = _PyAST_List ( a , Load , EXTRA );
17238
17.7k
            if (_res == NULL && PyErr_Occurred()) {
17239
0
                p->error_indicator = 1;
17240
0
                p->level--;
17241
0
                return NULL;
17242
0
            }
17243
17.7k
            goto done;
17244
17.7k
        }
17245
176k
        p->mark = _mark;
17246
176k
        D(fprintf(stderr, "%*c%s list[%d-%d]: %s failed!\n", p->level, ' ',
17247
176k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' star_named_expressions? ']'"));
17248
176k
    }
17249
0
    _res = NULL;
17250
194k
  done:
17251
194k
    p->level--;
17252
194k
    return _res;
17253
176k
}
17254
17255
// tuple: '(' [star_named_expression ',' star_named_expressions?] ')'
17256
static expr_ty
17257
tuple_rule(Parser *p)
17258
219k
{
17259
219k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17260
1
        _Pypegen_stack_overflow(p);
17261
1
    }
17262
219k
    if (p->error_indicator) {
17263
1
        p->level--;
17264
1
        return NULL;
17265
1
    }
17266
219k
    expr_ty _res = NULL;
17267
219k
    int _mark = p->mark;
17268
219k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17269
0
        p->error_indicator = 1;
17270
0
        p->level--;
17271
0
        return NULL;
17272
0
    }
17273
219k
    int _start_lineno = p->tokens[_mark]->lineno;
17274
219k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17275
219k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17276
219k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17277
219k
    { // '(' [star_named_expression ',' star_named_expressions?] ')'
17278
219k
        if (p->error_indicator) {
17279
0
            p->level--;
17280
0
            return NULL;
17281
0
        }
17282
219k
        D(fprintf(stderr, "%*c> tuple[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
17283
219k
        Token * _literal;
17284
219k
        Token * _literal_1;
17285
219k
        void *a;
17286
219k
        if (
17287
219k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
17288
219k
            &&
17289
219k
            (a = _tmp_81_rule(p), !p->error_indicator)  // [star_named_expression ',' star_named_expressions?]
17290
219k
            &&
17291
219k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
17292
219k
        )
17293
46.9k
        {
17294
46.9k
            D(fprintf(stderr, "%*c+ tuple[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
17295
46.9k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17296
46.9k
            if (_token == NULL) {
17297
0
                p->level--;
17298
0
                return NULL;
17299
0
            }
17300
46.9k
            int _end_lineno = _token->end_lineno;
17301
46.9k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17302
46.9k
            int _end_col_offset = _token->end_col_offset;
17303
46.9k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17304
46.9k
            _res = _PyAST_Tuple ( a , Load , EXTRA );
17305
46.9k
            if (_res == NULL && PyErr_Occurred()) {
17306
0
                p->error_indicator = 1;
17307
0
                p->level--;
17308
0
                return NULL;
17309
0
            }
17310
46.9k
            goto done;
17311
46.9k
        }
17312
172k
        p->mark = _mark;
17313
172k
        D(fprintf(stderr, "%*c%s tuple[%d-%d]: %s failed!\n", p->level, ' ',
17314
172k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
17315
172k
    }
17316
0
    _res = NULL;
17317
219k
  done:
17318
219k
    p->level--;
17319
219k
    return _res;
17320
172k
}
17321
17322
// set: '{' star_named_expressions '}'
17323
static expr_ty
17324
set_rule(Parser *p)
17325
11.6k
{
17326
11.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17327
0
        _Pypegen_stack_overflow(p);
17328
0
    }
17329
11.6k
    if (p->error_indicator) {
17330
0
        p->level--;
17331
0
        return NULL;
17332
0
    }
17333
11.6k
    expr_ty _res = NULL;
17334
11.6k
    int _mark = p->mark;
17335
11.6k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17336
0
        p->error_indicator = 1;
17337
0
        p->level--;
17338
0
        return NULL;
17339
0
    }
17340
11.6k
    int _start_lineno = p->tokens[_mark]->lineno;
17341
11.6k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17342
11.6k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17343
11.6k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17344
11.6k
    { // '{' star_named_expressions '}'
17345
11.6k
        if (p->error_indicator) {
17346
0
            p->level--;
17347
0
            return NULL;
17348
0
        }
17349
11.6k
        D(fprintf(stderr, "%*c> set[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' star_named_expressions '}'"));
17350
11.6k
        Token * _literal;
17351
11.6k
        Token * _literal_1;
17352
11.6k
        asdl_expr_seq* a;
17353
11.6k
        if (
17354
11.6k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
17355
11.6k
            &&
17356
11.6k
            (a = star_named_expressions_rule(p))  // star_named_expressions
17357
11.6k
            &&
17358
11.6k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
17359
11.6k
        )
17360
1.52k
        {
17361
1.52k
            D(fprintf(stderr, "%*c+ set[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' star_named_expressions '}'"));
17362
1.52k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17363
1.52k
            if (_token == NULL) {
17364
0
                p->level--;
17365
0
                return NULL;
17366
0
            }
17367
1.52k
            int _end_lineno = _token->end_lineno;
17368
1.52k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17369
1.52k
            int _end_col_offset = _token->end_col_offset;
17370
1.52k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17371
1.52k
            _res = _PyAST_Set ( a , EXTRA );
17372
1.52k
            if (_res == NULL && PyErr_Occurred()) {
17373
0
                p->error_indicator = 1;
17374
0
                p->level--;
17375
0
                return NULL;
17376
0
            }
17377
1.52k
            goto done;
17378
1.52k
        }
17379
10.1k
        p->mark = _mark;
17380
10.1k
        D(fprintf(stderr, "%*c%s set[%d-%d]: %s failed!\n", p->level, ' ',
17381
10.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' star_named_expressions '}'"));
17382
10.1k
    }
17383
0
    _res = NULL;
17384
11.6k
  done:
17385
11.6k
    p->level--;
17386
11.6k
    return _res;
17387
10.1k
}
17388
17389
// dict: '{' double_starred_kvpairs? '}' | '{' invalid_double_starred_kvpairs '}'
17390
static expr_ty
17391
dict_rule(Parser *p)
17392
24.3k
{
17393
24.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17394
1
        _Pypegen_stack_overflow(p);
17395
1
    }
17396
24.3k
    if (p->error_indicator) {
17397
1
        p->level--;
17398
1
        return NULL;
17399
1
    }
17400
24.3k
    expr_ty _res = NULL;
17401
24.3k
    int _mark = p->mark;
17402
24.3k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17403
0
        p->error_indicator = 1;
17404
0
        p->level--;
17405
0
        return NULL;
17406
0
    }
17407
24.3k
    int _start_lineno = p->tokens[_mark]->lineno;
17408
24.3k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17409
24.3k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17410
24.3k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17411
24.3k
    { // '{' double_starred_kvpairs? '}'
17412
24.3k
        if (p->error_indicator) {
17413
0
            p->level--;
17414
0
            return NULL;
17415
0
        }
17416
24.3k
        D(fprintf(stderr, "%*c> dict[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
17417
24.3k
        Token * _literal;
17418
24.3k
        Token * _literal_1;
17419
24.3k
        void *a;
17420
24.3k
        if (
17421
24.3k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
17422
24.3k
            &&
17423
24.3k
            (a = double_starred_kvpairs_rule(p), !p->error_indicator)  // double_starred_kvpairs?
17424
24.3k
            &&
17425
24.3k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
17426
24.3k
        )
17427
4.97k
        {
17428
4.97k
            D(fprintf(stderr, "%*c+ dict[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
17429
4.97k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17430
4.97k
            if (_token == NULL) {
17431
0
                p->level--;
17432
0
                return NULL;
17433
0
            }
17434
4.97k
            int _end_lineno = _token->end_lineno;
17435
4.97k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17436
4.97k
            int _end_col_offset = _token->end_col_offset;
17437
4.97k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17438
4.97k
            _res = _PyAST_Dict ( CHECK ( asdl_expr_seq* , _PyPegen_get_keys ( p , a ) ) , CHECK ( asdl_expr_seq* , _PyPegen_get_values ( p , a ) ) , EXTRA );
17439
4.97k
            if (_res == NULL && PyErr_Occurred()) {
17440
0
                p->error_indicator = 1;
17441
0
                p->level--;
17442
0
                return NULL;
17443
0
            }
17444
4.97k
            goto done;
17445
4.97k
        }
17446
19.3k
        p->mark = _mark;
17447
19.3k
        D(fprintf(stderr, "%*c%s dict[%d-%d]: %s failed!\n", p->level, ' ',
17448
19.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
17449
19.3k
    }
17450
0
    { // '{' invalid_double_starred_kvpairs '}'
17451
19.3k
        if (p->error_indicator) {
17452
7.41k
            p->level--;
17453
7.41k
            return NULL;
17454
7.41k
        }
17455
11.9k
        D(fprintf(stderr, "%*c> dict[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
17456
11.9k
        Token * _literal;
17457
11.9k
        Token * _literal_1;
17458
11.9k
        void *invalid_double_starred_kvpairs_var;
17459
11.9k
        if (
17460
11.9k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
17461
11.9k
            &&
17462
11.9k
            (invalid_double_starred_kvpairs_var = invalid_double_starred_kvpairs_rule(p))  // invalid_double_starred_kvpairs
17463
11.9k
            &&
17464
11.9k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
17465
11.9k
        )
17466
0
        {
17467
0
            D(fprintf(stderr, "%*c+ dict[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
17468
0
            _res = _PyPegen_dummy_name(p, _literal, invalid_double_starred_kvpairs_var, _literal_1);
17469
0
            goto done;
17470
0
        }
17471
11.9k
        p->mark = _mark;
17472
11.9k
        D(fprintf(stderr, "%*c%s dict[%d-%d]: %s failed!\n", p->level, ' ',
17473
11.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
17474
11.9k
    }
17475
0
    _res = NULL;
17476
16.9k
  done:
17477
16.9k
    p->level--;
17478
16.9k
    return _res;
17479
11.9k
}
17480
17481
// double_starred_kvpairs: ','.double_starred_kvpair+ ','?
17482
static asdl_seq*
17483
double_starred_kvpairs_rule(Parser *p)
17484
24.3k
{
17485
24.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17486
1
        _Pypegen_stack_overflow(p);
17487
1
    }
17488
24.3k
    if (p->error_indicator) {
17489
1
        p->level--;
17490
1
        return NULL;
17491
1
    }
17492
24.3k
    asdl_seq* _res = NULL;
17493
24.3k
    int _mark = p->mark;
17494
24.3k
    { // ','.double_starred_kvpair+ ','?
17495
24.3k
        if (p->error_indicator) {
17496
0
            p->level--;
17497
0
            return NULL;
17498
0
        }
17499
24.3k
        D(fprintf(stderr, "%*c> double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ','?"));
17500
24.3k
        void *_opt_var;
17501
24.3k
        UNUSED(_opt_var); // Silence compiler warnings
17502
24.3k
        asdl_seq * a;
17503
24.3k
        if (
17504
24.3k
            (a = _gather_83_rule(p))  // ','.double_starred_kvpair+
17505
24.3k
            &&
17506
24.3k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
17507
24.3k
        )
17508
6.20k
        {
17509
6.20k
            D(fprintf(stderr, "%*c+ double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ','?"));
17510
6.20k
            _res = a;
17511
6.20k
            if (_res == NULL && PyErr_Occurred()) {
17512
0
                p->error_indicator = 1;
17513
0
                p->level--;
17514
0
                return NULL;
17515
0
            }
17516
6.20k
            goto done;
17517
6.20k
        }
17518
18.1k
        p->mark = _mark;
17519
18.1k
        D(fprintf(stderr, "%*c%s double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
17520
18.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.double_starred_kvpair+ ','?"));
17521
18.1k
    }
17522
0
    _res = NULL;
17523
24.3k
  done:
17524
24.3k
    p->level--;
17525
24.3k
    return _res;
17526
18.1k
}
17527
17528
// double_starred_kvpair: '**' bitwise_or | kvpair
17529
static KeyValuePair*
17530
double_starred_kvpair_rule(Parser *p)
17531
70.9k
{
17532
70.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17533
1
        _Pypegen_stack_overflow(p);
17534
1
    }
17535
70.9k
    if (p->error_indicator) {
17536
1
        p->level--;
17537
1
        return NULL;
17538
1
    }
17539
70.9k
    KeyValuePair* _res = NULL;
17540
70.9k
    int _mark = p->mark;
17541
70.9k
    { // '**' bitwise_or
17542
70.9k
        if (p->error_indicator) {
17543
0
            p->level--;
17544
0
            return NULL;
17545
0
        }
17546
70.9k
        D(fprintf(stderr, "%*c> double_starred_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' bitwise_or"));
17547
70.9k
        Token * _literal;
17548
70.9k
        expr_ty a;
17549
70.9k
        if (
17550
70.9k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
17551
70.9k
            &&
17552
70.9k
            (a = bitwise_or_rule(p))  // bitwise_or
17553
70.9k
        )
17554
1.21k
        {
17555
1.21k
            D(fprintf(stderr, "%*c+ double_starred_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' bitwise_or"));
17556
1.21k
            _res = _PyPegen_key_value_pair ( p , NULL , a );
17557
1.21k
            if (_res == NULL && PyErr_Occurred()) {
17558
0
                p->error_indicator = 1;
17559
0
                p->level--;
17560
0
                return NULL;
17561
0
            }
17562
1.21k
            goto done;
17563
1.21k
        }
17564
69.7k
        p->mark = _mark;
17565
69.7k
        D(fprintf(stderr, "%*c%s double_starred_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
17566
69.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' bitwise_or"));
17567
69.7k
    }
17568
0
    { // kvpair
17569
69.7k
        if (p->error_indicator) {
17570
448
            p->level--;
17571
448
            return NULL;
17572
448
        }
17573
69.3k
        D(fprintf(stderr, "%*c> double_starred_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kvpair"));
17574
69.3k
        KeyValuePair* kvpair_var;
17575
69.3k
        if (
17576
69.3k
            (kvpair_var = kvpair_rule(p))  // kvpair
17577
69.3k
        )
17578
40.5k
        {
17579
40.5k
            D(fprintf(stderr, "%*c+ double_starred_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kvpair"));
17580
40.5k
            _res = kvpair_var;
17581
40.5k
            goto done;
17582
40.5k
        }
17583
28.7k
        p->mark = _mark;
17584
28.7k
        D(fprintf(stderr, "%*c%s double_starred_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
17585
28.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kvpair"));
17586
28.7k
    }
17587
0
    _res = NULL;
17588
70.5k
  done:
17589
70.5k
    p->level--;
17590
70.5k
    return _res;
17591
28.7k
}
17592
17593
// kvpair: expression ':' expression
17594
static KeyValuePair*
17595
kvpair_rule(Parser *p)
17596
79.0k
{
17597
79.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17598
1
        _Pypegen_stack_overflow(p);
17599
1
    }
17600
79.0k
    if (p->error_indicator) {
17601
1
        p->level--;
17602
1
        return NULL;
17603
1
    }
17604
79.0k
    KeyValuePair* _res = NULL;
17605
79.0k
    int _mark = p->mark;
17606
79.0k
    { // expression ':' expression
17607
79.0k
        if (p->error_indicator) {
17608
0
            p->level--;
17609
0
            return NULL;
17610
0
        }
17611
79.0k
        D(fprintf(stderr, "%*c> kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
17612
79.0k
        Token * _literal;
17613
79.0k
        expr_ty a;
17614
79.0k
        expr_ty b;
17615
79.0k
        if (
17616
79.0k
            (a = expression_rule(p))  // expression
17617
79.0k
            &&
17618
79.0k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
17619
79.0k
            &&
17620
79.0k
            (b = expression_rule(p))  // expression
17621
79.0k
        )
17622
43.1k
        {
17623
43.1k
            D(fprintf(stderr, "%*c+ kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
17624
43.1k
            _res = _PyPegen_key_value_pair ( p , a , b );
17625
43.1k
            if (_res == NULL && PyErr_Occurred()) {
17626
0
                p->error_indicator = 1;
17627
0
                p->level--;
17628
0
                return NULL;
17629
0
            }
17630
43.1k
            goto done;
17631
43.1k
        }
17632
35.9k
        p->mark = _mark;
17633
35.9k
        D(fprintf(stderr, "%*c%s kvpair[%d-%d]: %s failed!\n", p->level, ' ',
17634
35.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' expression"));
17635
35.9k
    }
17636
0
    _res = NULL;
17637
79.0k
  done:
17638
79.0k
    p->level--;
17639
79.0k
    return _res;
17640
35.9k
}
17641
17642
// for_if_clauses: for_if_clause+
17643
static asdl_comprehension_seq*
17644
for_if_clauses_rule(Parser *p)
17645
95.9k
{
17646
95.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17647
0
        _Pypegen_stack_overflow(p);
17648
0
    }
17649
95.9k
    if (p->error_indicator) {
17650
0
        p->level--;
17651
0
        return NULL;
17652
0
    }
17653
95.9k
    asdl_comprehension_seq* _res = NULL;
17654
95.9k
    int _mark = p->mark;
17655
95.9k
    { // for_if_clause+
17656
95.9k
        if (p->error_indicator) {
17657
0
            p->level--;
17658
0
            return NULL;
17659
0
        }
17660
95.9k
        D(fprintf(stderr, "%*c> for_if_clauses[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause+"));
17661
95.9k
        asdl_comprehension_seq* a;
17662
95.9k
        if (
17663
95.9k
            (a = (asdl_comprehension_seq*)_loop1_84_rule(p))  // for_if_clause+
17664
95.9k
        )
17665
9.94k
        {
17666
9.94k
            D(fprintf(stderr, "%*c+ for_if_clauses[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "for_if_clause+"));
17667
9.94k
            _res = a;
17668
9.94k
            if (_res == NULL && PyErr_Occurred()) {
17669
0
                p->error_indicator = 1;
17670
0
                p->level--;
17671
0
                return NULL;
17672
0
            }
17673
9.94k
            goto done;
17674
9.94k
        }
17675
86.0k
        p->mark = _mark;
17676
86.0k
        D(fprintf(stderr, "%*c%s for_if_clauses[%d-%d]: %s failed!\n", p->level, ' ',
17677
86.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause+"));
17678
86.0k
    }
17679
0
    _res = NULL;
17680
95.9k
  done:
17681
95.9k
    p->level--;
17682
95.9k
    return _res;
17683
86.0k
}
17684
17685
// for_if_clause:
17686
//     | 'async' 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
17687
//     | 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
17688
//     | invalid_for_if_clause
17689
//     | invalid_for_target
17690
static comprehension_ty
17691
for_if_clause_rule(Parser *p)
17692
106k
{
17693
106k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17694
0
        _Pypegen_stack_overflow(p);
17695
0
    }
17696
106k
    if (p->error_indicator) {
17697
73
        p->level--;
17698
73
        return NULL;
17699
73
    }
17700
106k
    comprehension_ty _res = NULL;
17701
106k
    int _mark = p->mark;
17702
106k
    { // 'async' 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
17703
106k
        if (p->error_indicator) {
17704
0
            p->level--;
17705
0
            return NULL;
17706
0
        }
17707
106k
        D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async' 'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
17708
106k
        int _cut_var = 0;
17709
106k
        Token * _keyword;
17710
106k
        Token * _keyword_1;
17711
106k
        Token * _keyword_2;
17712
106k
        expr_ty a;
17713
106k
        expr_ty b;
17714
106k
        asdl_expr_seq* c;
17715
106k
        if (
17716
106k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
17717
106k
            &&
17718
106k
            (_keyword_1 = _PyPegen_expect_token(p, 699))  // token='for'
17719
106k
            &&
17720
106k
            (a = star_targets_rule(p))  // star_targets
17721
106k
            &&
17722
106k
            (_keyword_2 = _PyPegen_expect_token(p, 700))  // token='in'
17723
106k
            &&
17724
106k
            (_cut_var = 1)
17725
106k
            &&
17726
106k
            (b = disjunction_rule(p))  // disjunction
17727
106k
            &&
17728
106k
            (c = (asdl_expr_seq*)_loop0_85_rule(p))  // (('if' disjunction))*
17729
106k
        )
17730
671
        {
17731
671
            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))*"));
17732
671
            _res = CHECK_VERSION ( comprehension_ty , 6 , "Async comprehensions are" , _PyAST_comprehension ( a , b , c , 1 , p -> arena ) );
17733
671
            if (_res == NULL && PyErr_Occurred()) {
17734
0
                p->error_indicator = 1;
17735
0
                p->level--;
17736
0
                return NULL;
17737
0
            }
17738
671
            goto done;
17739
671
        }
17740
106k
        p->mark = _mark;
17741
106k
        D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
17742
106k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
17743
106k
        if (_cut_var) {
17744
67
            p->level--;
17745
67
            return NULL;
17746
67
        }
17747
106k
    }
17748
106k
    { // 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
17749
106k
        if (p->error_indicator) {
17750
196
            p->level--;
17751
196
            return NULL;
17752
196
        }
17753
105k
        D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
17754
105k
        int _cut_var = 0;
17755
105k
        Token * _keyword;
17756
105k
        Token * _keyword_1;
17757
105k
        expr_ty a;
17758
105k
        expr_ty b;
17759
105k
        asdl_expr_seq* c;
17760
105k
        if (
17761
105k
            (_keyword = _PyPegen_expect_token(p, 699))  // token='for'
17762
105k
            &&
17763
105k
            (a = star_targets_rule(p))  // star_targets
17764
105k
            &&
17765
105k
            (_keyword_1 = _PyPegen_expect_token(p, 700))  // token='in'
17766
105k
            &&
17767
105k
            (_cut_var = 1)
17768
105k
            &&
17769
105k
            (b = disjunction_rule(p))  // disjunction
17770
105k
            &&
17771
105k
            (c = (asdl_expr_seq*)_loop0_85_rule(p))  // (('if' disjunction))*
17772
105k
        )
17773
10.3k
        {
17774
10.3k
            D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
17775
10.3k
            _res = _PyAST_comprehension ( a , b , c , 0 , p -> arena );
17776
10.3k
            if (_res == NULL && PyErr_Occurred()) {
17777
0
                p->error_indicator = 1;
17778
0
                p->level--;
17779
0
                return NULL;
17780
0
            }
17781
10.3k
            goto done;
17782
10.3k
        }
17783
95.6k
        p->mark = _mark;
17784
95.6k
        D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
17785
95.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
17786
95.6k
        if (_cut_var) {
17787
231
            p->level--;
17788
231
            return NULL;
17789
231
        }
17790
95.6k
    }
17791
95.4k
    if (p->call_invalid_rules) { // invalid_for_if_clause
17792
49.1k
        if (p->error_indicator) {
17793
944
            p->level--;
17794
944
            return NULL;
17795
944
        }
17796
48.1k
        D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_if_clause"));
17797
48.1k
        void *invalid_for_if_clause_var;
17798
48.1k
        if (
17799
48.1k
            (invalid_for_if_clause_var = invalid_for_if_clause_rule(p))  // invalid_for_if_clause
17800
48.1k
        )
17801
0
        {
17802
0
            D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_if_clause"));
17803
0
            _res = invalid_for_if_clause_var;
17804
0
            goto done;
17805
0
        }
17806
48.1k
        p->mark = _mark;
17807
48.1k
        D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
17808
48.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_if_clause"));
17809
48.1k
    }
17810
94.4k
    if (p->call_invalid_rules) { // invalid_for_target
17811
48.1k
        if (p->error_indicator) {
17812
555
            p->level--;
17813
555
            return NULL;
17814
555
        }
17815
47.6k
        D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
17816
47.6k
        void *invalid_for_target_var;
17817
47.6k
        if (
17818
47.6k
            (invalid_for_target_var = invalid_for_target_rule(p))  // invalid_for_target
17819
47.6k
        )
17820
0
        {
17821
0
            D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
17822
0
            _res = invalid_for_target_var;
17823
0
            goto done;
17824
0
        }
17825
47.6k
        p->mark = _mark;
17826
47.6k
        D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
17827
47.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_target"));
17828
47.6k
    }
17829
93.9k
    _res = NULL;
17830
104k
  done:
17831
104k
    p->level--;
17832
104k
    return _res;
17833
93.9k
}
17834
17835
// listcomp: '[' named_expression for_if_clauses ']' | invalid_comprehension
17836
static expr_ty
17837
listcomp_rule(Parser *p)
17838
32.7k
{
17839
32.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17840
0
        _Pypegen_stack_overflow(p);
17841
0
    }
17842
32.7k
    if (p->error_indicator) {
17843
0
        p->level--;
17844
0
        return NULL;
17845
0
    }
17846
32.7k
    expr_ty _res = NULL;
17847
32.7k
    int _mark = p->mark;
17848
32.7k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17849
0
        p->error_indicator = 1;
17850
0
        p->level--;
17851
0
        return NULL;
17852
0
    }
17853
32.7k
    int _start_lineno = p->tokens[_mark]->lineno;
17854
32.7k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17855
32.7k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17856
32.7k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17857
32.7k
    { // '[' named_expression for_if_clauses ']'
17858
32.7k
        if (p->error_indicator) {
17859
0
            p->level--;
17860
0
            return NULL;
17861
0
        }
17862
32.7k
        D(fprintf(stderr, "%*c> listcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
17863
32.7k
        Token * _literal;
17864
32.7k
        Token * _literal_1;
17865
32.7k
        expr_ty a;
17866
32.7k
        asdl_comprehension_seq* b;
17867
32.7k
        if (
17868
32.7k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
17869
32.7k
            &&
17870
32.7k
            (a = named_expression_rule(p))  // named_expression
17871
32.7k
            &&
17872
32.7k
            (b = for_if_clauses_rule(p))  // for_if_clauses
17873
32.7k
            &&
17874
32.7k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
17875
32.7k
        )
17876
1.25k
        {
17877
1.25k
            D(fprintf(stderr, "%*c+ listcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
17878
1.25k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17879
1.25k
            if (_token == NULL) {
17880
0
                p->level--;
17881
0
                return NULL;
17882
0
            }
17883
1.25k
            int _end_lineno = _token->end_lineno;
17884
1.25k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17885
1.25k
            int _end_col_offset = _token->end_col_offset;
17886
1.25k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17887
1.25k
            _res = _PyAST_ListComp ( a , b , EXTRA );
17888
1.25k
            if (_res == NULL && PyErr_Occurred()) {
17889
0
                p->error_indicator = 1;
17890
0
                p->level--;
17891
0
                return NULL;
17892
0
            }
17893
1.25k
            goto done;
17894
1.25k
        }
17895
31.4k
        p->mark = _mark;
17896
31.4k
        D(fprintf(stderr, "%*c%s listcomp[%d-%d]: %s failed!\n", p->level, ' ',
17897
31.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
17898
31.4k
    }
17899
31.4k
    if (p->call_invalid_rules) { // invalid_comprehension
17900
10.6k
        if (p->error_indicator) {
17901
424
            p->level--;
17902
424
            return NULL;
17903
424
        }
17904
10.2k
        D(fprintf(stderr, "%*c> listcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
17905
10.2k
        void *invalid_comprehension_var;
17906
10.2k
        if (
17907
10.2k
            (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
17908
10.2k
        )
17909
0
        {
17910
0
            D(fprintf(stderr, "%*c+ listcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
17911
0
            _res = invalid_comprehension_var;
17912
0
            goto done;
17913
0
        }
17914
10.2k
        p->mark = _mark;
17915
10.2k
        D(fprintf(stderr, "%*c%s listcomp[%d-%d]: %s failed!\n", p->level, ' ',
17916
10.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
17917
10.2k
    }
17918
31.0k
    _res = NULL;
17919
32.3k
  done:
17920
32.3k
    p->level--;
17921
32.3k
    return _res;
17922
31.0k
}
17923
17924
// setcomp: '{' named_expression for_if_clauses '}' | invalid_comprehension
17925
static expr_ty
17926
setcomp_rule(Parser *p)
17927
8.19k
{
17928
8.19k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17929
0
        _Pypegen_stack_overflow(p);
17930
0
    }
17931
8.19k
    if (p->error_indicator) {
17932
0
        p->level--;
17933
0
        return NULL;
17934
0
    }
17935
8.19k
    expr_ty _res = NULL;
17936
8.19k
    int _mark = p->mark;
17937
8.19k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17938
0
        p->error_indicator = 1;
17939
0
        p->level--;
17940
0
        return NULL;
17941
0
    }
17942
8.19k
    int _start_lineno = p->tokens[_mark]->lineno;
17943
8.19k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17944
8.19k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17945
8.19k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17946
8.19k
    { // '{' named_expression for_if_clauses '}'
17947
8.19k
        if (p->error_indicator) {
17948
0
            p->level--;
17949
0
            return NULL;
17950
0
        }
17951
8.19k
        D(fprintf(stderr, "%*c> setcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
17952
8.19k
        Token * _literal;
17953
8.19k
        Token * _literal_1;
17954
8.19k
        expr_ty a;
17955
8.19k
        asdl_comprehension_seq* b;
17956
8.19k
        if (
17957
8.19k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
17958
8.19k
            &&
17959
8.19k
            (a = named_expression_rule(p))  // named_expression
17960
8.19k
            &&
17961
8.19k
            (b = for_if_clauses_rule(p))  // for_if_clauses
17962
8.19k
            &&
17963
8.19k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
17964
8.19k
        )
17965
525
        {
17966
525
            D(fprintf(stderr, "%*c+ setcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
17967
525
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17968
525
            if (_token == NULL) {
17969
0
                p->level--;
17970
0
                return NULL;
17971
0
            }
17972
525
            int _end_lineno = _token->end_lineno;
17973
525
            UNUSED(_end_lineno); // Only used by EXTRA macro
17974
525
            int _end_col_offset = _token->end_col_offset;
17975
525
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17976
525
            _res = _PyAST_SetComp ( a , b , EXTRA );
17977
525
            if (_res == NULL && PyErr_Occurred()) {
17978
0
                p->error_indicator = 1;
17979
0
                p->level--;
17980
0
                return NULL;
17981
0
            }
17982
525
            goto done;
17983
525
        }
17984
7.67k
        p->mark = _mark;
17985
7.67k
        D(fprintf(stderr, "%*c%s setcomp[%d-%d]: %s failed!\n", p->level, ' ',
17986
7.67k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
17987
7.67k
    }
17988
7.67k
    if (p->call_invalid_rules) { // invalid_comprehension
17989
3.01k
        if (p->error_indicator) {
17990
88
            p->level--;
17991
88
            return NULL;
17992
88
        }
17993
2.92k
        D(fprintf(stderr, "%*c> setcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
17994
2.92k
        void *invalid_comprehension_var;
17995
2.92k
        if (
17996
2.92k
            (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
17997
2.92k
        )
17998
0
        {
17999
0
            D(fprintf(stderr, "%*c+ setcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
18000
0
            _res = invalid_comprehension_var;
18001
0
            goto done;
18002
0
        }
18003
2.92k
        p->mark = _mark;
18004
2.92k
        D(fprintf(stderr, "%*c%s setcomp[%d-%d]: %s failed!\n", p->level, ' ',
18005
2.92k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
18006
2.92k
    }
18007
7.58k
    _res = NULL;
18008
8.10k
  done:
18009
8.10k
    p->level--;
18010
8.10k
    return _res;
18011
7.58k
}
18012
18013
// genexp:
18014
//     | '(' (assignment_expression | expression !':=') for_if_clauses ')'
18015
//     | invalid_comprehension
18016
static expr_ty
18017
genexp_rule(Parser *p)
18018
660k
{
18019
660k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18020
0
        _Pypegen_stack_overflow(p);
18021
0
    }
18022
660k
    if (p->error_indicator) {
18023
0
        p->level--;
18024
0
        return NULL;
18025
0
    }
18026
660k
    expr_ty _res = NULL;
18027
660k
    int _mark = p->mark;
18028
660k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18029
0
        p->error_indicator = 1;
18030
0
        p->level--;
18031
0
        return NULL;
18032
0
    }
18033
660k
    int _start_lineno = p->tokens[_mark]->lineno;
18034
660k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18035
660k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18036
660k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18037
660k
    { // '(' (assignment_expression | expression !':=') for_if_clauses ')'
18038
660k
        if (p->error_indicator) {
18039
0
            p->level--;
18040
0
            return NULL;
18041
0
        }
18042
660k
        D(fprintf(stderr, "%*c> genexp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
18043
660k
        Token * _literal;
18044
660k
        Token * _literal_1;
18045
660k
        void *a;
18046
660k
        asdl_comprehension_seq* b;
18047
660k
        if (
18048
660k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
18049
660k
            &&
18050
660k
            (a = _tmp_86_rule(p))  // assignment_expression | expression !':='
18051
660k
            &&
18052
660k
            (b = for_if_clauses_rule(p))  // for_if_clauses
18053
660k
            &&
18054
660k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
18055
660k
        )
18056
4.96k
        {
18057
4.96k
            D(fprintf(stderr, "%*c+ genexp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
18058
4.96k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18059
4.96k
            if (_token == NULL) {
18060
0
                p->level--;
18061
0
                return NULL;
18062
0
            }
18063
4.96k
            int _end_lineno = _token->end_lineno;
18064
4.96k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18065
4.96k
            int _end_col_offset = _token->end_col_offset;
18066
4.96k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18067
4.96k
            _res = _PyAST_GeneratorExp ( a , b , EXTRA );
18068
4.96k
            if (_res == NULL && PyErr_Occurred()) {
18069
0
                p->error_indicator = 1;
18070
0
                p->level--;
18071
0
                return NULL;
18072
0
            }
18073
4.96k
            goto done;
18074
4.96k
        }
18075
655k
        p->mark = _mark;
18076
655k
        D(fprintf(stderr, "%*c%s genexp[%d-%d]: %s failed!\n", p->level, ' ',
18077
655k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
18078
655k
    }
18079
655k
    if (p->call_invalid_rules) { // invalid_comprehension
18080
224k
        if (p->error_indicator) {
18081
2.40k
            p->level--;
18082
2.40k
            return NULL;
18083
2.40k
        }
18084
222k
        D(fprintf(stderr, "%*c> genexp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
18085
222k
        void *invalid_comprehension_var;
18086
222k
        if (
18087
222k
            (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
18088
222k
        )
18089
0
        {
18090
0
            D(fprintf(stderr, "%*c+ genexp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
18091
0
            _res = invalid_comprehension_var;
18092
0
            goto done;
18093
0
        }
18094
222k
        p->mark = _mark;
18095
222k
        D(fprintf(stderr, "%*c%s genexp[%d-%d]: %s failed!\n", p->level, ' ',
18096
222k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
18097
222k
    }
18098
653k
    _res = NULL;
18099
658k
  done:
18100
658k
    p->level--;
18101
658k
    return _res;
18102
653k
}
18103
18104
// dictcomp: '{' kvpair for_if_clauses '}' | invalid_dict_comprehension
18105
static expr_ty
18106
dictcomp_rule(Parser *p)
18107
9.79k
{
18108
9.79k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18109
0
        _Pypegen_stack_overflow(p);
18110
0
    }
18111
9.79k
    if (p->error_indicator) {
18112
0
        p->level--;
18113
0
        return NULL;
18114
0
    }
18115
9.79k
    expr_ty _res = NULL;
18116
9.79k
    int _mark = p->mark;
18117
9.79k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18118
0
        p->error_indicator = 1;
18119
0
        p->level--;
18120
0
        return NULL;
18121
0
    }
18122
9.79k
    int _start_lineno = p->tokens[_mark]->lineno;
18123
9.79k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18124
9.79k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18125
9.79k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18126
9.79k
    { // '{' kvpair for_if_clauses '}'
18127
9.79k
        if (p->error_indicator) {
18128
0
            p->level--;
18129
0
            return NULL;
18130
0
        }
18131
9.79k
        D(fprintf(stderr, "%*c> dictcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
18132
9.79k
        Token * _literal;
18133
9.79k
        Token * _literal_1;
18134
9.79k
        KeyValuePair* a;
18135
9.79k
        asdl_comprehension_seq* b;
18136
9.79k
        if (
18137
9.79k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
18138
9.79k
            &&
18139
9.79k
            (a = kvpair_rule(p))  // kvpair
18140
9.79k
            &&
18141
9.79k
            (b = for_if_clauses_rule(p))  // for_if_clauses
18142
9.79k
            &&
18143
9.79k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
18144
9.79k
        )
18145
1.39k
        {
18146
1.39k
            D(fprintf(stderr, "%*c+ dictcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
18147
1.39k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18148
1.39k
            if (_token == NULL) {
18149
0
                p->level--;
18150
0
                return NULL;
18151
0
            }
18152
1.39k
            int _end_lineno = _token->end_lineno;
18153
1.39k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18154
1.39k
            int _end_col_offset = _token->end_col_offset;
18155
1.39k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18156
1.39k
            _res = _PyAST_DictComp ( a -> key , a -> value , b , EXTRA );
18157
1.39k
            if (_res == NULL && PyErr_Occurred()) {
18158
0
                p->error_indicator = 1;
18159
0
                p->level--;
18160
0
                return NULL;
18161
0
            }
18162
1.39k
            goto done;
18163
1.39k
        }
18164
8.39k
        p->mark = _mark;
18165
8.39k
        D(fprintf(stderr, "%*c%s dictcomp[%d-%d]: %s failed!\n", p->level, ' ',
18166
8.39k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
18167
8.39k
    }
18168
8.39k
    if (p->call_invalid_rules) { // invalid_dict_comprehension
18169
3.30k
        if (p->error_indicator) {
18170
194
            p->level--;
18171
194
            return NULL;
18172
194
        }
18173
3.10k
        D(fprintf(stderr, "%*c> dictcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_dict_comprehension"));
18174
3.10k
        void *invalid_dict_comprehension_var;
18175
3.10k
        if (
18176
3.10k
            (invalid_dict_comprehension_var = invalid_dict_comprehension_rule(p))  // invalid_dict_comprehension
18177
3.10k
        )
18178
0
        {
18179
0
            D(fprintf(stderr, "%*c+ dictcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_dict_comprehension"));
18180
0
            _res = invalid_dict_comprehension_var;
18181
0
            goto done;
18182
0
        }
18183
3.10k
        p->mark = _mark;
18184
3.10k
        D(fprintf(stderr, "%*c%s dictcomp[%d-%d]: %s failed!\n", p->level, ' ',
18185
3.10k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_dict_comprehension"));
18186
3.10k
    }
18187
8.20k
    _res = NULL;
18188
9.59k
  done:
18189
9.59k
    p->level--;
18190
9.59k
    return _res;
18191
8.20k
}
18192
18193
// arguments: args ','? &')' | invalid_arguments
18194
static expr_ty
18195
arguments_rule(Parser *p)
18196
61.0k
{
18197
61.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18198
0
        _Pypegen_stack_overflow(p);
18199
0
    }
18200
61.0k
    if (p->error_indicator) {
18201
0
        p->level--;
18202
0
        return NULL;
18203
0
    }
18204
61.0k
    expr_ty _res = NULL;
18205
61.0k
    if (_PyPegen_is_memoized(p, arguments_type, &_res)) {
18206
15.8k
        p->level--;
18207
15.8k
        return _res;
18208
15.8k
    }
18209
45.2k
    int _mark = p->mark;
18210
45.2k
    { // args ','? &')'
18211
45.2k
        if (p->error_indicator) {
18212
0
            p->level--;
18213
0
            return NULL;
18214
0
        }
18215
45.2k
        D(fprintf(stderr, "%*c> arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ','? &')'"));
18216
45.2k
        void *_opt_var;
18217
45.2k
        UNUSED(_opt_var); // Silence compiler warnings
18218
45.2k
        expr_ty a;
18219
45.2k
        if (
18220
45.2k
            (a = args_rule(p))  // args
18221
45.2k
            &&
18222
45.2k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
18223
45.2k
            &&
18224
45.2k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
18225
45.2k
        )
18226
17.7k
        {
18227
17.7k
            D(fprintf(stderr, "%*c+ arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ','? &')'"));
18228
17.7k
            _res = a;
18229
17.7k
            if (_res == NULL && PyErr_Occurred()) {
18230
0
                p->error_indicator = 1;
18231
0
                p->level--;
18232
0
                return NULL;
18233
0
            }
18234
17.7k
            goto done;
18235
17.7k
        }
18236
27.4k
        p->mark = _mark;
18237
27.4k
        D(fprintf(stderr, "%*c%s arguments[%d-%d]: %s failed!\n", p->level, ' ',
18238
27.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ','? &')'"));
18239
27.4k
    }
18240
27.4k
    if (p->call_invalid_rules) { // invalid_arguments
18241
9.28k
        if (p->error_indicator) {
18242
1.14k
            p->level--;
18243
1.14k
            return NULL;
18244
1.14k
        }
18245
8.13k
        D(fprintf(stderr, "%*c> arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_arguments"));
18246
8.13k
        void *invalid_arguments_var;
18247
8.13k
        if (
18248
8.13k
            (invalid_arguments_var = invalid_arguments_rule(p))  // invalid_arguments
18249
8.13k
        )
18250
0
        {
18251
0
            D(fprintf(stderr, "%*c+ arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_arguments"));
18252
0
            _res = invalid_arguments_var;
18253
0
            goto done;
18254
0
        }
18255
8.13k
        p->mark = _mark;
18256
8.13k
        D(fprintf(stderr, "%*c%s arguments[%d-%d]: %s failed!\n", p->level, ' ',
18257
8.13k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_arguments"));
18258
8.13k
    }
18259
26.3k
    _res = NULL;
18260
44.1k
  done:
18261
44.1k
    _PyPegen_insert_memo(p, _mark, arguments_type, _res);
18262
44.1k
    p->level--;
18263
44.1k
    return _res;
18264
26.3k
}
18265
18266
// args:
18267
//     | ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]
18268
//     | kwargs
18269
static expr_ty
18270
args_rule(Parser *p)
18271
74.6k
{
18272
74.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18273
0
        _Pypegen_stack_overflow(p);
18274
0
    }
18275
74.6k
    if (p->error_indicator) {
18276
0
        p->level--;
18277
0
        return NULL;
18278
0
    }
18279
74.6k
    expr_ty _res = NULL;
18280
74.6k
    int _mark = p->mark;
18281
74.6k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18282
1
        p->error_indicator = 1;
18283
1
        p->level--;
18284
1
        return NULL;
18285
1
    }
18286
74.6k
    int _start_lineno = p->tokens[_mark]->lineno;
18287
74.6k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18288
74.6k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18289
74.6k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18290
74.6k
    { // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]
18291
74.6k
        if (p->error_indicator) {
18292
0
            p->level--;
18293
0
            return NULL;
18294
0
        }
18295
74.6k
        D(fprintf(stderr, "%*c> args[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
18296
74.6k
        asdl_expr_seq* a;
18297
74.6k
        void *b;
18298
74.6k
        if (
18299
74.6k
            (a = (asdl_expr_seq*)_gather_88_rule(p))  // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+
18300
74.6k
            &&
18301
74.6k
            (b = _tmp_89_rule(p), !p->error_indicator)  // [',' kwargs]
18302
74.6k
        )
18303
34.5k
        {
18304
34.5k
            D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
18305
34.5k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18306
34.5k
            if (_token == NULL) {
18307
0
                p->level--;
18308
0
                return NULL;
18309
0
            }
18310
34.5k
            int _end_lineno = _token->end_lineno;
18311
34.5k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18312
34.5k
            int _end_col_offset = _token->end_col_offset;
18313
34.5k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18314
34.5k
            _res = _PyPegen_collect_call_seqs ( p , a , b , EXTRA );
18315
34.5k
            if (_res == NULL && PyErr_Occurred()) {
18316
0
                p->error_indicator = 1;
18317
0
                p->level--;
18318
0
                return NULL;
18319
0
            }
18320
34.5k
            goto done;
18321
34.5k
        }
18322
40.0k
        p->mark = _mark;
18323
40.0k
        D(fprintf(stderr, "%*c%s args[%d-%d]: %s failed!\n", p->level, ' ',
18324
40.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
18325
40.0k
    }
18326
0
    { // kwargs
18327
40.0k
        if (p->error_indicator) {
18328
941
            p->level--;
18329
941
            return NULL;
18330
941
        }
18331
39.1k
        D(fprintf(stderr, "%*c> args[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwargs"));
18332
39.1k
        asdl_seq* a;
18333
39.1k
        if (
18334
39.1k
            (a = kwargs_rule(p))  // kwargs
18335
39.1k
        )
18336
7.02k
        {
18337
7.02k
            D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwargs"));
18338
7.02k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18339
7.02k
            if (_token == NULL) {
18340
0
                p->level--;
18341
0
                return NULL;
18342
0
            }
18343
7.02k
            int _end_lineno = _token->end_lineno;
18344
7.02k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18345
7.02k
            int _end_col_offset = _token->end_col_offset;
18346
7.02k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18347
7.02k
            _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 );
18348
7.02k
            if (_res == NULL && PyErr_Occurred()) {
18349
0
                p->error_indicator = 1;
18350
0
                p->level--;
18351
0
                return NULL;
18352
0
            }
18353
7.02k
            goto done;
18354
7.02k
        }
18355
32.1k
        p->mark = _mark;
18356
32.1k
        D(fprintf(stderr, "%*c%s args[%d-%d]: %s failed!\n", p->level, ' ',
18357
32.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwargs"));
18358
32.1k
    }
18359
0
    _res = NULL;
18360
73.7k
  done:
18361
73.7k
    p->level--;
18362
73.7k
    return _res;
18363
32.1k
}
18364
18365
// kwargs:
18366
//     | ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
18367
//     | ','.kwarg_or_starred+
18368
//     | ','.kwarg_or_double_starred+
18369
static asdl_seq*
18370
kwargs_rule(Parser *p)
18371
51.7k
{
18372
51.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18373
0
        _Pypegen_stack_overflow(p);
18374
0
    }
18375
51.7k
    if (p->error_indicator) {
18376
0
        p->level--;
18377
0
        return NULL;
18378
0
    }
18379
51.7k
    asdl_seq* _res = NULL;
18380
51.7k
    int _mark = p->mark;
18381
51.7k
    { // ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
18382
51.7k
        if (p->error_indicator) {
18383
0
            p->level--;
18384
0
            return NULL;
18385
0
        }
18386
51.7k
        D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
18387
51.7k
        Token * _literal;
18388
51.7k
        asdl_seq * a;
18389
51.7k
        asdl_seq * b;
18390
51.7k
        if (
18391
51.7k
            (a = _gather_91_rule(p))  // ','.kwarg_or_starred+
18392
51.7k
            &&
18393
51.7k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
18394
51.7k
            &&
18395
51.7k
            (b = _gather_93_rule(p))  // ','.kwarg_or_double_starred+
18396
51.7k
        )
18397
341
        {
18398
341
            D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
18399
341
            _res = _PyPegen_join_sequences ( p , a , b );
18400
341
            if (_res == NULL && PyErr_Occurred()) {
18401
0
                p->error_indicator = 1;
18402
0
                p->level--;
18403
0
                return NULL;
18404
0
            }
18405
341
            goto done;
18406
341
        }
18407
51.4k
        p->mark = _mark;
18408
51.4k
        D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
18409
51.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
18410
51.4k
    }
18411
0
    { // ','.kwarg_or_starred+
18412
51.4k
        if (p->error_indicator) {
18413
893
            p->level--;
18414
893
            return NULL;
18415
893
        }
18416
50.5k
        D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+"));
18417
50.5k
        asdl_seq * _gather_91_var;
18418
50.5k
        if (
18419
50.5k
            (_gather_91_var = _gather_91_rule(p))  // ','.kwarg_or_starred+
18420
50.5k
        )
18421
7.74k
        {
18422
7.74k
            D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+"));
18423
7.74k
            _res = _gather_91_var;
18424
7.74k
            goto done;
18425
7.74k
        }
18426
42.7k
        p->mark = _mark;
18427
42.7k
        D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
18428
42.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_starred+"));
18429
42.7k
    }
18430
0
    { // ','.kwarg_or_double_starred+
18431
42.7k
        if (p->error_indicator) {
18432
0
            p->level--;
18433
0
            return NULL;
18434
0
        }
18435
42.7k
        D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_double_starred+"));
18436
42.7k
        asdl_seq * _gather_93_var;
18437
42.7k
        if (
18438
42.7k
            (_gather_93_var = _gather_93_rule(p))  // ','.kwarg_or_double_starred+
18439
42.7k
        )
18440
4.17k
        {
18441
4.17k
            D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_double_starred+"));
18442
4.17k
            _res = _gather_93_var;
18443
4.17k
            goto done;
18444
4.17k
        }
18445
38.6k
        p->mark = _mark;
18446
38.6k
        D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
18447
38.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_double_starred+"));
18448
38.6k
    }
18449
0
    _res = NULL;
18450
50.8k
  done:
18451
50.8k
    p->level--;
18452
50.8k
    return _res;
18453
38.6k
}
18454
18455
// starred_expression:
18456
//     | invalid_starred_expression_unpacking
18457
//     | '*' expression
18458
//     | invalid_starred_expression
18459
static expr_ty
18460
starred_expression_rule(Parser *p)
18461
260k
{
18462
260k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18463
0
        _Pypegen_stack_overflow(p);
18464
0
    }
18465
260k
    if (p->error_indicator) {
18466
0
        p->level--;
18467
0
        return NULL;
18468
0
    }
18469
260k
    expr_ty _res = NULL;
18470
260k
    int _mark = p->mark;
18471
260k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18472
203
        p->error_indicator = 1;
18473
203
        p->level--;
18474
203
        return NULL;
18475
203
    }
18476
259k
    int _start_lineno = p->tokens[_mark]->lineno;
18477
259k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18478
259k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18479
259k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18480
259k
    if (p->call_invalid_rules) { // invalid_starred_expression_unpacking
18481
183k
        if (p->error_indicator) {
18482
0
            p->level--;
18483
0
            return NULL;
18484
0
        }
18485
183k
        D(fprintf(stderr, "%*c> starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_starred_expression_unpacking"));
18486
183k
        void *invalid_starred_expression_unpacking_var;
18487
183k
        if (
18488
183k
            (invalid_starred_expression_unpacking_var = invalid_starred_expression_unpacking_rule(p))  // invalid_starred_expression_unpacking
18489
183k
        )
18490
0
        {
18491
0
            D(fprintf(stderr, "%*c+ starred_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_starred_expression_unpacking"));
18492
0
            _res = invalid_starred_expression_unpacking_var;
18493
0
            goto done;
18494
0
        }
18495
183k
        p->mark = _mark;
18496
183k
        D(fprintf(stderr, "%*c%s starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
18497
183k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_starred_expression_unpacking"));
18498
183k
    }
18499
259k
    { // '*' expression
18500
259k
        if (p->error_indicator) {
18501
1.40k
            p->level--;
18502
1.40k
            return NULL;
18503
1.40k
        }
18504
258k
        D(fprintf(stderr, "%*c> starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression"));
18505
258k
        Token * _literal;
18506
258k
        expr_ty a;
18507
258k
        if (
18508
258k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
18509
258k
            &&
18510
258k
            (a = expression_rule(p))  // expression
18511
258k
        )
18512
14.6k
        {
18513
14.6k
            D(fprintf(stderr, "%*c+ starred_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression"));
18514
14.6k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18515
14.6k
            if (_token == NULL) {
18516
0
                p->level--;
18517
0
                return NULL;
18518
0
            }
18519
14.6k
            int _end_lineno = _token->end_lineno;
18520
14.6k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18521
14.6k
            int _end_col_offset = _token->end_col_offset;
18522
14.6k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18523
14.6k
            _res = _PyAST_Starred ( a , Load , EXTRA );
18524
14.6k
            if (_res == NULL && PyErr_Occurred()) {
18525
0
                p->error_indicator = 1;
18526
0
                p->level--;
18527
0
                return NULL;
18528
0
            }
18529
14.6k
            goto done;
18530
14.6k
        }
18531
243k
        p->mark = _mark;
18532
243k
        D(fprintf(stderr, "%*c%s starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
18533
243k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression"));
18534
243k
    }
18535
243k
    if (p->call_invalid_rules) { // invalid_starred_expression
18536
169k
        if (p->error_indicator) {
18537
0
            p->level--;
18538
0
            return NULL;
18539
0
        }
18540
169k
        D(fprintf(stderr, "%*c> starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_starred_expression"));
18541
169k
        void *invalid_starred_expression_var;
18542
169k
        if (
18543
169k
            (invalid_starred_expression_var = invalid_starred_expression_rule(p))  // invalid_starred_expression
18544
169k
        )
18545
0
        {
18546
0
            D(fprintf(stderr, "%*c+ starred_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_starred_expression"));
18547
0
            _res = invalid_starred_expression_var;
18548
0
            goto done;
18549
0
        }
18550
169k
        p->mark = _mark;
18551
169k
        D(fprintf(stderr, "%*c%s starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
18552
169k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_starred_expression"));
18553
169k
    }
18554
243k
    _res = NULL;
18555
258k
  done:
18556
258k
    p->level--;
18557
258k
    return _res;
18558
243k
}
18559
18560
// kwarg_or_starred: invalid_kwarg | NAME '=' expression | starred_expression
18561
static KeywordOrStarred*
18562
kwarg_or_starred_rule(Parser *p)
18563
119k
{
18564
119k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18565
0
        _Pypegen_stack_overflow(p);
18566
0
    }
18567
119k
    if (p->error_indicator) {
18568
0
        p->level--;
18569
0
        return NULL;
18570
0
    }
18571
119k
    KeywordOrStarred* _res = NULL;
18572
119k
    int _mark = p->mark;
18573
119k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18574
9
        p->error_indicator = 1;
18575
9
        p->level--;
18576
9
        return NULL;
18577
9
    }
18578
119k
    int _start_lineno = p->tokens[_mark]->lineno;
18579
119k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18580
119k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18581
119k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18582
119k
    if (p->call_invalid_rules) { // invalid_kwarg
18583
83.6k
        if (p->error_indicator) {
18584
0
            p->level--;
18585
0
            return NULL;
18586
0
        }
18587
83.6k
        D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
18588
83.6k
        void *invalid_kwarg_var;
18589
83.6k
        if (
18590
83.6k
            (invalid_kwarg_var = invalid_kwarg_rule(p))  // invalid_kwarg
18591
83.6k
        )
18592
0
        {
18593
0
            D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
18594
0
            _res = invalid_kwarg_var;
18595
0
            goto done;
18596
0
        }
18597
83.6k
        p->mark = _mark;
18598
83.6k
        D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
18599
83.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwarg"));
18600
83.6k
    }
18601
119k
    { // NAME '=' expression
18602
119k
        if (p->error_indicator) {
18603
552
            p->level--;
18604
552
            return NULL;
18605
552
        }
18606
118k
        D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
18607
118k
        Token * _literal;
18608
118k
        expr_ty a;
18609
118k
        expr_ty b;
18610
118k
        if (
18611
118k
            (a = _PyPegen_name_token(p))  // NAME
18612
118k
            &&
18613
118k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
18614
118k
            &&
18615
118k
            (b = expression_rule(p))  // expression
18616
118k
        )
18617
22.3k
        {
18618
22.3k
            D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
18619
22.3k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18620
22.3k
            if (_token == NULL) {
18621
0
                p->level--;
18622
0
                return NULL;
18623
0
            }
18624
22.3k
            int _end_lineno = _token->end_lineno;
18625
22.3k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18626
22.3k
            int _end_col_offset = _token->end_col_offset;
18627
22.3k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18628
22.3k
            _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
18629
22.3k
            if (_res == NULL && PyErr_Occurred()) {
18630
0
                p->error_indicator = 1;
18631
0
                p->level--;
18632
0
                return NULL;
18633
0
            }
18634
22.3k
            goto done;
18635
22.3k
        }
18636
96.2k
        p->mark = _mark;
18637
96.2k
        D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
18638
96.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression"));
18639
96.2k
    }
18640
0
    { // starred_expression
18641
96.2k
        if (p->error_indicator) {
18642
328
            p->level--;
18643
328
            return NULL;
18644
328
        }
18645
95.9k
        D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
18646
95.9k
        expr_ty a;
18647
95.9k
        if (
18648
95.9k
            (a = starred_expression_rule(p))  // starred_expression
18649
95.9k
        )
18650
4.79k
        {
18651
4.79k
            D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
18652
4.79k
            _res = _PyPegen_keyword_or_starred ( p , a , 0 );
18653
4.79k
            if (_res == NULL && PyErr_Occurred()) {
18654
0
                p->error_indicator = 1;
18655
0
                p->level--;
18656
0
                return NULL;
18657
0
            }
18658
4.79k
            goto done;
18659
4.79k
        }
18660
91.1k
        p->mark = _mark;
18661
91.1k
        D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
18662
91.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
18663
91.1k
    }
18664
0
    _res = NULL;
18665
118k
  done:
18666
118k
    p->level--;
18667
118k
    return _res;
18668
91.1k
}
18669
18670
// kwarg_or_double_starred: invalid_kwarg | NAME '=' expression | '**' expression
18671
static KeywordOrStarred*
18672
kwarg_or_double_starred_rule(Parser *p)
18673
53.5k
{
18674
53.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18675
0
        _Pypegen_stack_overflow(p);
18676
0
    }
18677
53.5k
    if (p->error_indicator) {
18678
0
        p->level--;
18679
0
        return NULL;
18680
0
    }
18681
53.5k
    KeywordOrStarred* _res = NULL;
18682
53.5k
    int _mark = p->mark;
18683
53.5k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18684
6
        p->error_indicator = 1;
18685
6
        p->level--;
18686
6
        return NULL;
18687
6
    }
18688
53.5k
    int _start_lineno = p->tokens[_mark]->lineno;
18689
53.5k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18690
53.5k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18691
53.5k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18692
53.5k
    if (p->call_invalid_rules) { // invalid_kwarg
18693
36.6k
        if (p->error_indicator) {
18694
0
            p->level--;
18695
0
            return NULL;
18696
0
        }
18697
36.6k
        D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
18698
36.6k
        void *invalid_kwarg_var;
18699
36.6k
        if (
18700
36.6k
            (invalid_kwarg_var = invalid_kwarg_rule(p))  // invalid_kwarg
18701
36.6k
        )
18702
0
        {
18703
0
            D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
18704
0
            _res = invalid_kwarg_var;
18705
0
            goto done;
18706
0
        }
18707
36.6k
        p->mark = _mark;
18708
36.6k
        D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
18709
36.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwarg"));
18710
36.6k
    }
18711
53.5k
    { // NAME '=' expression
18712
53.5k
        if (p->error_indicator) {
18713
337
            p->level--;
18714
337
            return NULL;
18715
337
        }
18716
53.2k
        D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
18717
53.2k
        Token * _literal;
18718
53.2k
        expr_ty a;
18719
53.2k
        expr_ty b;
18720
53.2k
        if (
18721
53.2k
            (a = _PyPegen_name_token(p))  // NAME
18722
53.2k
            &&
18723
53.2k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
18724
53.2k
            &&
18725
53.2k
            (b = expression_rule(p))  // expression
18726
53.2k
        )
18727
2.26k
        {
18728
2.26k
            D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
18729
2.26k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18730
2.26k
            if (_token == NULL) {
18731
0
                p->level--;
18732
0
                return NULL;
18733
0
            }
18734
2.26k
            int _end_lineno = _token->end_lineno;
18735
2.26k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18736
2.26k
            int _end_col_offset = _token->end_col_offset;
18737
2.26k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18738
2.26k
            _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
18739
2.26k
            if (_res == NULL && PyErr_Occurred()) {
18740
0
                p->error_indicator = 1;
18741
0
                p->level--;
18742
0
                return NULL;
18743
0
            }
18744
2.26k
            goto done;
18745
2.26k
        }
18746
50.9k
        p->mark = _mark;
18747
50.9k
        D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
18748
50.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression"));
18749
50.9k
    }
18750
0
    { // '**' expression
18751
50.9k
        if (p->error_indicator) {
18752
69
            p->level--;
18753
69
            return NULL;
18754
69
        }
18755
50.9k
        D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' expression"));
18756
50.9k
        Token * _literal;
18757
50.9k
        expr_ty a;
18758
50.9k
        if (
18759
50.9k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
18760
50.9k
            &&
18761
50.9k
            (a = expression_rule(p))  // expression
18762
50.9k
        )
18763
7.85k
        {
18764
7.85k
            D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' expression"));
18765
7.85k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18766
7.85k
            if (_token == NULL) {
18767
0
                p->level--;
18768
0
                return NULL;
18769
0
            }
18770
7.85k
            int _end_lineno = _token->end_lineno;
18771
7.85k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18772
7.85k
            int _end_col_offset = _token->end_col_offset;
18773
7.85k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18774
7.85k
            _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( NULL , a , EXTRA ) ) , 1 );
18775
7.85k
            if (_res == NULL && PyErr_Occurred()) {
18776
0
                p->error_indicator = 1;
18777
0
                p->level--;
18778
0
                return NULL;
18779
0
            }
18780
7.85k
            goto done;
18781
7.85k
        }
18782
43.0k
        p->mark = _mark;
18783
43.0k
        D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
18784
43.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression"));
18785
43.0k
    }
18786
0
    _res = NULL;
18787
53.1k
  done:
18788
53.1k
    p->level--;
18789
53.1k
    return _res;
18790
43.0k
}
18791
18792
// star_targets: star_target !',' | star_target ((',' star_target))* ','?
18793
static expr_ty
18794
star_targets_rule(Parser *p)
18795
298k
{
18796
298k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18797
0
        _Pypegen_stack_overflow(p);
18798
0
    }
18799
298k
    if (p->error_indicator) {
18800
0
        p->level--;
18801
0
        return NULL;
18802
0
    }
18803
298k
    expr_ty _res = NULL;
18804
298k
    int _mark = p->mark;
18805
298k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18806
41
        p->error_indicator = 1;
18807
41
        p->level--;
18808
41
        return NULL;
18809
41
    }
18810
298k
    int _start_lineno = p->tokens[_mark]->lineno;
18811
298k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18812
298k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18813
298k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18814
298k
    { // star_target !','
18815
298k
        if (p->error_indicator) {
18816
0
            p->level--;
18817
0
            return NULL;
18818
0
        }
18819
298k
        D(fprintf(stderr, "%*c> star_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target !','"));
18820
298k
        expr_ty a;
18821
298k
        if (
18822
298k
            (a = star_target_rule(p))  // star_target
18823
298k
            &&
18824
298k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
18825
298k
        )
18826
145k
        {
18827
145k
            D(fprintf(stderr, "%*c+ star_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target !','"));
18828
145k
            _res = a;
18829
145k
            if (_res == NULL && PyErr_Occurred()) {
18830
0
                p->error_indicator = 1;
18831
0
                p->level--;
18832
0
                return NULL;
18833
0
            }
18834
145k
            goto done;
18835
145k
        }
18836
153k
        p->mark = _mark;
18837
153k
        D(fprintf(stderr, "%*c%s star_targets[%d-%d]: %s failed!\n", p->level, ' ',
18838
153k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target !','"));
18839
153k
    }
18840
0
    { // star_target ((',' star_target))* ','?
18841
153k
        if (p->error_indicator) {
18842
1.42k
            p->level--;
18843
1.42k
            return NULL;
18844
1.42k
        }
18845
151k
        D(fprintf(stderr, "%*c> star_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))* ','?"));
18846
151k
        void *_opt_var;
18847
151k
        UNUSED(_opt_var); // Silence compiler warnings
18848
151k
        expr_ty a;
18849
151k
        asdl_seq * b;
18850
151k
        if (
18851
151k
            (a = star_target_rule(p))  // star_target
18852
151k
            &&
18853
151k
            (b = _loop0_94_rule(p))  // ((',' star_target))*
18854
151k
            &&
18855
151k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
18856
151k
        )
18857
17.1k
        {
18858
17.1k
            D(fprintf(stderr, "%*c+ star_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))* ','?"));
18859
17.1k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18860
17.1k
            if (_token == NULL) {
18861
0
                p->level--;
18862
0
                return NULL;
18863
0
            }
18864
17.1k
            int _end_lineno = _token->end_lineno;
18865
17.1k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18866
17.1k
            int _end_col_offset = _token->end_col_offset;
18867
17.1k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18868
17.1k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Store , EXTRA );
18869
17.1k
            if (_res == NULL && PyErr_Occurred()) {
18870
0
                p->error_indicator = 1;
18871
0
                p->level--;
18872
0
                return NULL;
18873
0
            }
18874
17.1k
            goto done;
18875
17.1k
        }
18876
134k
        p->mark = _mark;
18877
134k
        D(fprintf(stderr, "%*c%s star_targets[%d-%d]: %s failed!\n", p->level, ' ',
18878
134k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ((',' star_target))* ','?"));
18879
134k
    }
18880
0
    _res = NULL;
18881
297k
  done:
18882
297k
    p->level--;
18883
297k
    return _res;
18884
134k
}
18885
18886
// star_targets_list_seq: ','.star_target+ ','?
18887
static asdl_expr_seq*
18888
star_targets_list_seq_rule(Parser *p)
18889
10.0k
{
18890
10.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18891
0
        _Pypegen_stack_overflow(p);
18892
0
    }
18893
10.0k
    if (p->error_indicator) {
18894
0
        p->level--;
18895
0
        return NULL;
18896
0
    }
18897
10.0k
    asdl_expr_seq* _res = NULL;
18898
10.0k
    int _mark = p->mark;
18899
10.0k
    { // ','.star_target+ ','?
18900
10.0k
        if (p->error_indicator) {
18901
0
            p->level--;
18902
0
            return NULL;
18903
0
        }
18904
10.0k
        D(fprintf(stderr, "%*c> star_targets_list_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.star_target+ ','?"));
18905
10.0k
        void *_opt_var;
18906
10.0k
        UNUSED(_opt_var); // Silence compiler warnings
18907
10.0k
        asdl_expr_seq* a;
18908
10.0k
        if (
18909
10.0k
            (a = (asdl_expr_seq*)_gather_96_rule(p))  // ','.star_target+
18910
10.0k
            &&
18911
10.0k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
18912
10.0k
        )
18913
2.77k
        {
18914
2.77k
            D(fprintf(stderr, "%*c+ star_targets_list_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_target+ ','?"));
18915
2.77k
            _res = a;
18916
2.77k
            if (_res == NULL && PyErr_Occurred()) {
18917
0
                p->error_indicator = 1;
18918
0
                p->level--;
18919
0
                return NULL;
18920
0
            }
18921
2.77k
            goto done;
18922
2.77k
        }
18923
7.31k
        p->mark = _mark;
18924
7.31k
        D(fprintf(stderr, "%*c%s star_targets_list_seq[%d-%d]: %s failed!\n", p->level, ' ',
18925
7.31k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.star_target+ ','?"));
18926
7.31k
    }
18927
0
    _res = NULL;
18928
10.0k
  done:
18929
10.0k
    p->level--;
18930
10.0k
    return _res;
18931
7.31k
}
18932
18933
// star_targets_tuple_seq: star_target ((',' star_target))+ ','? | star_target ','
18934
static asdl_expr_seq*
18935
star_targets_tuple_seq_rule(Parser *p)
18936
11.1k
{
18937
11.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18938
0
        _Pypegen_stack_overflow(p);
18939
0
    }
18940
11.1k
    if (p->error_indicator) {
18941
0
        p->level--;
18942
0
        return NULL;
18943
0
    }
18944
11.1k
    asdl_expr_seq* _res = NULL;
18945
11.1k
    int _mark = p->mark;
18946
11.1k
    { // star_target ((',' star_target))+ ','?
18947
11.1k
        if (p->error_indicator) {
18948
0
            p->level--;
18949
0
            return NULL;
18950
0
        }
18951
11.1k
        D(fprintf(stderr, "%*c> star_targets_tuple_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))+ ','?"));
18952
11.1k
        void *_opt_var;
18953
11.1k
        UNUSED(_opt_var); // Silence compiler warnings
18954
11.1k
        expr_ty a;
18955
11.1k
        asdl_seq * b;
18956
11.1k
        if (
18957
11.1k
            (a = star_target_rule(p))  // star_target
18958
11.1k
            &&
18959
11.1k
            (b = _loop1_97_rule(p))  // ((',' star_target))+
18960
11.1k
            &&
18961
11.1k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
18962
11.1k
        )
18963
680
        {
18964
680
            D(fprintf(stderr, "%*c+ star_targets_tuple_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))+ ','?"));
18965
680
            _res = ( asdl_expr_seq* ) _PyPegen_seq_insert_in_front ( p , a , b );
18966
680
            if (_res == NULL && PyErr_Occurred()) {
18967
0
                p->error_indicator = 1;
18968
0
                p->level--;
18969
0
                return NULL;
18970
0
            }
18971
680
            goto done;
18972
680
        }
18973
10.4k
        p->mark = _mark;
18974
10.4k
        D(fprintf(stderr, "%*c%s star_targets_tuple_seq[%d-%d]: %s failed!\n", p->level, ' ',
18975
10.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ((',' star_target))+ ','?"));
18976
10.4k
    }
18977
0
    { // star_target ','
18978
10.4k
        if (p->error_indicator) {
18979
0
            p->level--;
18980
0
            return NULL;
18981
0
        }
18982
10.4k
        D(fprintf(stderr, "%*c> star_targets_tuple_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ','"));
18983
10.4k
        Token * _literal;
18984
10.4k
        expr_ty a;
18985
10.4k
        if (
18986
10.4k
            (a = star_target_rule(p))  // star_target
18987
10.4k
            &&
18988
10.4k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
18989
10.4k
        )
18990
1.61k
        {
18991
1.61k
            D(fprintf(stderr, "%*c+ star_targets_tuple_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ','"));
18992
1.61k
            _res = ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , a );
18993
1.61k
            if (_res == NULL && PyErr_Occurred()) {
18994
0
                p->error_indicator = 1;
18995
0
                p->level--;
18996
0
                return NULL;
18997
0
            }
18998
1.61k
            goto done;
18999
1.61k
        }
19000
8.85k
        p->mark = _mark;
19001
8.85k
        D(fprintf(stderr, "%*c%s star_targets_tuple_seq[%d-%d]: %s failed!\n", p->level, ' ',
19002
8.85k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ','"));
19003
8.85k
    }
19004
0
    _res = NULL;
19005
11.1k
  done:
19006
11.1k
    p->level--;
19007
11.1k
    return _res;
19008
8.85k
}
19009
19010
// star_target: '*' (!'*' star_target) | target_with_star_atom
19011
static expr_ty
19012
star_target_rule(Parser *p)
19013
518k
{
19014
518k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19015
0
        _Pypegen_stack_overflow(p);
19016
0
    }
19017
518k
    if (p->error_indicator) {
19018
16
        p->level--;
19019
16
        return NULL;
19020
16
    }
19021
518k
    expr_ty _res = NULL;
19022
518k
    if (_PyPegen_is_memoized(p, star_target_type, &_res)) {
19023
257k
        p->level--;
19024
257k
        return _res;
19025
257k
    }
19026
260k
    int _mark = p->mark;
19027
260k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
19028
0
        p->error_indicator = 1;
19029
0
        p->level--;
19030
0
        return NULL;
19031
0
    }
19032
260k
    int _start_lineno = p->tokens[_mark]->lineno;
19033
260k
    UNUSED(_start_lineno); // Only used by EXTRA macro
19034
260k
    int _start_col_offset = p->tokens[_mark]->col_offset;
19035
260k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
19036
260k
    { // '*' (!'*' star_target)
19037
260k
        if (p->error_indicator) {
19038
0
            p->level--;
19039
0
            return NULL;
19040
0
        }
19041
260k
        D(fprintf(stderr, "%*c> star_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (!'*' star_target)"));
19042
260k
        Token * _literal;
19043
260k
        void *a;
19044
260k
        if (
19045
260k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
19046
260k
            &&
19047
260k
            (a = _tmp_98_rule(p))  // !'*' star_target
19048
260k
        )
19049
2.04k
        {
19050
2.04k
            D(fprintf(stderr, "%*c+ star_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (!'*' star_target)"));
19051
2.04k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19052
2.04k
            if (_token == NULL) {
19053
0
                p->level--;
19054
0
                return NULL;
19055
0
            }
19056
2.04k
            int _end_lineno = _token->end_lineno;
19057
2.04k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19058
2.04k
            int _end_col_offset = _token->end_col_offset;
19059
2.04k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19060
2.04k
            _res = _PyAST_Starred ( CHECK ( expr_ty , _PyPegen_set_expr_context ( p , a , Store ) ) , Store , EXTRA );
19061
2.04k
            if (_res == NULL && PyErr_Occurred()) {
19062
0
                p->error_indicator = 1;
19063
0
                p->level--;
19064
0
                return NULL;
19065
0
            }
19066
2.04k
            goto done;
19067
2.04k
        }
19068
258k
        p->mark = _mark;
19069
258k
        D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
19070
258k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (!'*' star_target)"));
19071
258k
    }
19072
0
    { // target_with_star_atom
19073
258k
        if (p->error_indicator) {
19074
425
            p->level--;
19075
425
            return NULL;
19076
425
        }
19077
258k
        D(fprintf(stderr, "%*c> star_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "target_with_star_atom"));
19078
258k
        expr_ty target_with_star_atom_var;
19079
258k
        if (
19080
258k
            (target_with_star_atom_var = target_with_star_atom_rule(p))  // target_with_star_atom
19081
258k
        )
19082
130k
        {
19083
130k
            D(fprintf(stderr, "%*c+ star_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "target_with_star_atom"));
19084
130k
            _res = target_with_star_atom_var;
19085
130k
            goto done;
19086
130k
        }
19087
127k
        p->mark = _mark;
19088
127k
        D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
19089
127k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "target_with_star_atom"));
19090
127k
    }
19091
0
    _res = NULL;
19092
260k
  done:
19093
260k
    _PyPegen_insert_memo(p, _mark, star_target_type, _res);
19094
260k
    p->level--;
19095
260k
    return _res;
19096
127k
}
19097
19098
// target_with_star_atom:
19099
//     | t_primary '.' NAME !t_lookahead
19100
//     | t_primary '[' slices ']' !t_lookahead
19101
//     | star_atom
19102
static expr_ty
19103
target_with_star_atom_rule(Parser *p)
19104
271k
{
19105
271k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19106
0
        _Pypegen_stack_overflow(p);
19107
0
    }
19108
271k
    if (p->error_indicator) {
19109
0
        p->level--;
19110
0
        return NULL;
19111
0
    }
19112
271k
    expr_ty _res = NULL;
19113
271k
    if (_PyPegen_is_memoized(p, target_with_star_atom_type, &_res)) {
19114
11.0k
        p->level--;
19115
11.0k
        return _res;
19116
11.0k
    }
19117
260k
    int _mark = p->mark;
19118
260k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
19119
0
        p->error_indicator = 1;
19120
0
        p->level--;
19121
0
        return NULL;
19122
0
    }
19123
260k
    int _start_lineno = p->tokens[_mark]->lineno;
19124
260k
    UNUSED(_start_lineno); // Only used by EXTRA macro
19125
260k
    int _start_col_offset = p->tokens[_mark]->col_offset;
19126
260k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
19127
260k
    { // t_primary '.' NAME !t_lookahead
19128
260k
        if (p->error_indicator) {
19129
0
            p->level--;
19130
0
            return NULL;
19131
0
        }
19132
260k
        D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19133
260k
        Token * _literal;
19134
260k
        expr_ty a;
19135
260k
        expr_ty b;
19136
260k
        if (
19137
260k
            (a = t_primary_rule(p))  // t_primary
19138
260k
            &&
19139
260k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
19140
260k
            &&
19141
260k
            (b = _PyPegen_name_token(p))  // NAME
19142
260k
            &&
19143
260k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
19144
260k
        )
19145
4.12k
        {
19146
4.12k
            D(fprintf(stderr, "%*c+ target_with_star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19147
4.12k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19148
4.12k
            if (_token == NULL) {
19149
0
                p->level--;
19150
0
                return NULL;
19151
0
            }
19152
4.12k
            int _end_lineno = _token->end_lineno;
19153
4.12k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19154
4.12k
            int _end_col_offset = _token->end_col_offset;
19155
4.12k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19156
4.12k
            _res = _PyAST_Attribute ( a , b -> v . Name . id , Store , EXTRA );
19157
4.12k
            if (_res == NULL && PyErr_Occurred()) {
19158
0
                p->error_indicator = 1;
19159
0
                p->level--;
19160
0
                return NULL;
19161
0
            }
19162
4.12k
            goto done;
19163
4.12k
        }
19164
256k
        p->mark = _mark;
19165
256k
        D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19166
256k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19167
256k
    }
19168
0
    { // t_primary '[' slices ']' !t_lookahead
19169
256k
        if (p->error_indicator) {
19170
1.62k
            p->level--;
19171
1.62k
            return NULL;
19172
1.62k
        }
19173
255k
        D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19174
255k
        Token * _literal;
19175
255k
        Token * _literal_1;
19176
255k
        expr_ty a;
19177
255k
        expr_ty b;
19178
255k
        if (
19179
255k
            (a = t_primary_rule(p))  // t_primary
19180
255k
            &&
19181
255k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
19182
255k
            &&
19183
255k
            (b = slices_rule(p))  // slices
19184
255k
            &&
19185
255k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
19186
255k
            &&
19187
255k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
19188
255k
        )
19189
2.01k
        {
19190
2.01k
            D(fprintf(stderr, "%*c+ target_with_star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19191
2.01k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19192
2.01k
            if (_token == NULL) {
19193
0
                p->level--;
19194
0
                return NULL;
19195
0
            }
19196
2.01k
            int _end_lineno = _token->end_lineno;
19197
2.01k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19198
2.01k
            int _end_col_offset = _token->end_col_offset;
19199
2.01k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19200
2.01k
            _res = _PyAST_Subscript ( a , b , Store , EXTRA );
19201
2.01k
            if (_res == NULL && PyErr_Occurred()) {
19202
0
                p->error_indicator = 1;
19203
0
                p->level--;
19204
0
                return NULL;
19205
0
            }
19206
2.01k
            goto done;
19207
2.01k
        }
19208
253k
        p->mark = _mark;
19209
253k
        D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19210
253k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19211
253k
    }
19212
0
    { // star_atom
19213
253k
        if (p->error_indicator) {
19214
0
            p->level--;
19215
0
            return NULL;
19216
0
        }
19217
253k
        D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_atom"));
19218
253k
        expr_ty star_atom_var;
19219
253k
        if (
19220
253k
            (star_atom_var = star_atom_rule(p))  // star_atom
19221
253k
        )
19222
126k
        {
19223
126k
            D(fprintf(stderr, "%*c+ target_with_star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_atom"));
19224
126k
            _res = star_atom_var;
19225
126k
            goto done;
19226
126k
        }
19227
126k
        p->mark = _mark;
19228
126k
        D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19229
126k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_atom"));
19230
126k
    }
19231
0
    _res = NULL;
19232
259k
  done:
19233
259k
    _PyPegen_insert_memo(p, _mark, target_with_star_atom_type, _res);
19234
259k
    p->level--;
19235
259k
    return _res;
19236
126k
}
19237
19238
// star_atom:
19239
//     | NAME
19240
//     | '(' target_with_star_atom ')'
19241
//     | '(' star_targets_tuple_seq? ')'
19242
//     | '[' star_targets_list_seq? ']'
19243
static expr_ty
19244
star_atom_rule(Parser *p)
19245
253k
{
19246
253k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19247
0
        _Pypegen_stack_overflow(p);
19248
0
    }
19249
253k
    if (p->error_indicator) {
19250
0
        p->level--;
19251
0
        return NULL;
19252
0
    }
19253
253k
    expr_ty _res = NULL;
19254
253k
    int _mark = p->mark;
19255
253k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
19256
0
        p->error_indicator = 1;
19257
0
        p->level--;
19258
0
        return NULL;
19259
0
    }
19260
253k
    int _start_lineno = p->tokens[_mark]->lineno;
19261
253k
    UNUSED(_start_lineno); // Only used by EXTRA macro
19262
253k
    int _start_col_offset = p->tokens[_mark]->col_offset;
19263
253k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
19264
253k
    { // NAME
19265
253k
        if (p->error_indicator) {
19266
0
            p->level--;
19267
0
            return NULL;
19268
0
        }
19269
253k
        D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
19270
253k
        expr_ty a;
19271
253k
        if (
19272
253k
            (a = _PyPegen_name_token(p))  // NAME
19273
253k
        )
19274
116k
        {
19275
116k
            D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
19276
116k
            _res = _PyPegen_set_expr_context ( p , a , Store );
19277
116k
            if (_res == NULL && PyErr_Occurred()) {
19278
0
                p->error_indicator = 1;
19279
0
                p->level--;
19280
0
                return NULL;
19281
0
            }
19282
116k
            goto done;
19283
116k
        }
19284
136k
        p->mark = _mark;
19285
136k
        D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19286
136k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
19287
136k
    }
19288
0
    { // '(' target_with_star_atom ')'
19289
136k
        if (p->error_indicator) {
19290
0
            p->level--;
19291
0
            return NULL;
19292
0
        }
19293
136k
        D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' target_with_star_atom ')'"));
19294
136k
        Token * _literal;
19295
136k
        Token * _literal_1;
19296
136k
        expr_ty a;
19297
136k
        if (
19298
136k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
19299
136k
            &&
19300
136k
            (a = target_with_star_atom_rule(p))  // target_with_star_atom
19301
136k
            &&
19302
136k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19303
136k
        )
19304
2.27k
        {
19305
2.27k
            D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' target_with_star_atom ')'"));
19306
2.27k
            _res = _PyPegen_set_expr_context ( p , a , Store );
19307
2.27k
            if (_res == NULL && PyErr_Occurred()) {
19308
0
                p->error_indicator = 1;
19309
0
                p->level--;
19310
0
                return NULL;
19311
0
            }
19312
2.27k
            goto done;
19313
2.27k
        }
19314
133k
        p->mark = _mark;
19315
133k
        D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19316
133k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' target_with_star_atom ')'"));
19317
133k
    }
19318
0
    { // '(' star_targets_tuple_seq? ')'
19319
133k
        if (p->error_indicator) {
19320
0
            p->level--;
19321
0
            return NULL;
19322
0
        }
19323
133k
        D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
19324
133k
        Token * _literal;
19325
133k
        Token * _literal_1;
19326
133k
        void *a;
19327
133k
        if (
19328
133k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
19329
133k
            &&
19330
133k
            (a = star_targets_tuple_seq_rule(p), !p->error_indicator)  // star_targets_tuple_seq?
19331
133k
            &&
19332
133k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19333
133k
        )
19334
5.16k
        {
19335
5.16k
            D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
19336
5.16k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19337
5.16k
            if (_token == NULL) {
19338
0
                p->level--;
19339
0
                return NULL;
19340
0
            }
19341
5.16k
            int _end_lineno = _token->end_lineno;
19342
5.16k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19343
5.16k
            int _end_col_offset = _token->end_col_offset;
19344
5.16k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19345
5.16k
            _res = _PyAST_Tuple ( a , Store , EXTRA );
19346
5.16k
            if (_res == NULL && PyErr_Occurred()) {
19347
0
                p->error_indicator = 1;
19348
0
                p->level--;
19349
0
                return NULL;
19350
0
            }
19351
5.16k
            goto done;
19352
5.16k
        }
19353
128k
        p->mark = _mark;
19354
128k
        D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19355
128k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
19356
128k
    }
19357
0
    { // '[' star_targets_list_seq? ']'
19358
128k
        if (p->error_indicator) {
19359
0
            p->level--;
19360
0
            return NULL;
19361
0
        }
19362
128k
        D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' star_targets_list_seq? ']'"));
19363
128k
        Token * _literal;
19364
128k
        Token * _literal_1;
19365
128k
        void *a;
19366
128k
        if (
19367
128k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
19368
128k
            &&
19369
128k
            (a = star_targets_list_seq_rule(p), !p->error_indicator)  // star_targets_list_seq?
19370
128k
            &&
19371
128k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
19372
128k
        )
19373
2.34k
        {
19374
2.34k
            D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' star_targets_list_seq? ']'"));
19375
2.34k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19376
2.34k
            if (_token == NULL) {
19377
0
                p->level--;
19378
0
                return NULL;
19379
0
            }
19380
2.34k
            int _end_lineno = _token->end_lineno;
19381
2.34k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19382
2.34k
            int _end_col_offset = _token->end_col_offset;
19383
2.34k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19384
2.34k
            _res = _PyAST_List ( a , Store , EXTRA );
19385
2.34k
            if (_res == NULL && PyErr_Occurred()) {
19386
0
                p->error_indicator = 1;
19387
0
                p->level--;
19388
0
                return NULL;
19389
0
            }
19390
2.34k
            goto done;
19391
2.34k
        }
19392
126k
        p->mark = _mark;
19393
126k
        D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19394
126k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' star_targets_list_seq? ']'"));
19395
126k
    }
19396
0
    _res = NULL;
19397
253k
  done:
19398
253k
    p->level--;
19399
253k
    return _res;
19400
126k
}
19401
19402
// single_target: single_subscript_attribute_target | NAME | '(' single_target ')'
19403
static expr_ty
19404
single_target_rule(Parser *p)
19405
183k
{
19406
183k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19407
0
        _Pypegen_stack_overflow(p);
19408
0
    }
19409
183k
    if (p->error_indicator) {
19410
0
        p->level--;
19411
0
        return NULL;
19412
0
    }
19413
183k
    expr_ty _res = NULL;
19414
183k
    int _mark = p->mark;
19415
183k
    { // single_subscript_attribute_target
19416
183k
        if (p->error_indicator) {
19417
0
            p->level--;
19418
0
            return NULL;
19419
0
        }
19420
183k
        D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
19421
183k
        expr_ty single_subscript_attribute_target_var;
19422
183k
        if (
19423
183k
            (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p))  // single_subscript_attribute_target
19424
183k
        )
19425
1.55k
        {
19426
1.55k
            D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
19427
1.55k
            _res = single_subscript_attribute_target_var;
19428
1.55k
            goto done;
19429
1.55k
        }
19430
182k
        p->mark = _mark;
19431
182k
        D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
19432
182k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_subscript_attribute_target"));
19433
182k
    }
19434
0
    { // NAME
19435
182k
        if (p->error_indicator) {
19436
152
            p->level--;
19437
152
            return NULL;
19438
152
        }
19439
182k
        D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
19440
182k
        expr_ty a;
19441
182k
        if (
19442
182k
            (a = _PyPegen_name_token(p))  // NAME
19443
182k
        )
19444
79.5k
        {
19445
79.5k
            D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
19446
79.5k
            _res = _PyPegen_set_expr_context ( p , a , Store );
19447
79.5k
            if (_res == NULL && PyErr_Occurred()) {
19448
0
                p->error_indicator = 1;
19449
0
                p->level--;
19450
0
                return NULL;
19451
0
            }
19452
79.5k
            goto done;
19453
79.5k
        }
19454
102k
        p->mark = _mark;
19455
102k
        D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
19456
102k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
19457
102k
    }
19458
0
    { // '(' single_target ')'
19459
102k
        if (p->error_indicator) {
19460
0
            p->level--;
19461
0
            return NULL;
19462
0
        }
19463
102k
        D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
19464
102k
        Token * _literal;
19465
102k
        Token * _literal_1;
19466
102k
        expr_ty a;
19467
102k
        if (
19468
102k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
19469
102k
            &&
19470
102k
            (a = single_target_rule(p))  // single_target
19471
102k
            &&
19472
102k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19473
102k
        )
19474
926
        {
19475
926
            D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
19476
926
            _res = a;
19477
926
            if (_res == NULL && PyErr_Occurred()) {
19478
0
                p->error_indicator = 1;
19479
0
                p->level--;
19480
0
                return NULL;
19481
0
            }
19482
926
            goto done;
19483
926
        }
19484
101k
        p->mark = _mark;
19485
101k
        D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
19486
101k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' single_target ')'"));
19487
101k
    }
19488
0
    _res = NULL;
19489
183k
  done:
19490
183k
    p->level--;
19491
183k
    return _res;
19492
101k
}
19493
19494
// single_subscript_attribute_target:
19495
//     | t_primary '.' NAME !t_lookahead
19496
//     | t_primary '[' slices ']' !t_lookahead
19497
static expr_ty
19498
single_subscript_attribute_target_rule(Parser *p)
19499
369k
{
19500
369k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19501
0
        _Pypegen_stack_overflow(p);
19502
0
    }
19503
369k
    if (p->error_indicator) {
19504
0
        p->level--;
19505
0
        return NULL;
19506
0
    }
19507
369k
    expr_ty _res = NULL;
19508
369k
    int _mark = p->mark;
19509
369k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
19510
27
        p->error_indicator = 1;
19511
27
        p->level--;
19512
27
        return NULL;
19513
27
    }
19514
369k
    int _start_lineno = p->tokens[_mark]->lineno;
19515
369k
    UNUSED(_start_lineno); // Only used by EXTRA macro
19516
369k
    int _start_col_offset = p->tokens[_mark]->col_offset;
19517
369k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
19518
369k
    { // t_primary '.' NAME !t_lookahead
19519
369k
        if (p->error_indicator) {
19520
0
            p->level--;
19521
0
            return NULL;
19522
0
        }
19523
369k
        D(fprintf(stderr, "%*c> single_subscript_attribute_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19524
369k
        Token * _literal;
19525
369k
        expr_ty a;
19526
369k
        expr_ty b;
19527
369k
        if (
19528
369k
            (a = t_primary_rule(p))  // t_primary
19529
369k
            &&
19530
369k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
19531
369k
            &&
19532
369k
            (b = _PyPegen_name_token(p))  // NAME
19533
369k
            &&
19534
369k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
19535
369k
        )
19536
5.03k
        {
19537
5.03k
            D(fprintf(stderr, "%*c+ single_subscript_attribute_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19538
5.03k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19539
5.03k
            if (_token == NULL) {
19540
0
                p->level--;
19541
0
                return NULL;
19542
0
            }
19543
5.03k
            int _end_lineno = _token->end_lineno;
19544
5.03k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19545
5.03k
            int _end_col_offset = _token->end_col_offset;
19546
5.03k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19547
5.03k
            _res = _PyAST_Attribute ( a , b -> v . Name . id , Store , EXTRA );
19548
5.03k
            if (_res == NULL && PyErr_Occurred()) {
19549
0
                p->error_indicator = 1;
19550
0
                p->level--;
19551
0
                return NULL;
19552
0
            }
19553
5.03k
            goto done;
19554
5.03k
        }
19555
364k
        p->mark = _mark;
19556
364k
        D(fprintf(stderr, "%*c%s single_subscript_attribute_target[%d-%d]: %s failed!\n", p->level, ' ',
19557
364k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19558
364k
    }
19559
0
    { // t_primary '[' slices ']' !t_lookahead
19560
364k
        if (p->error_indicator) {
19561
2.79k
            p->level--;
19562
2.79k
            return NULL;
19563
2.79k
        }
19564
361k
        D(fprintf(stderr, "%*c> single_subscript_attribute_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19565
361k
        Token * _literal;
19566
361k
        Token * _literal_1;
19567
361k
        expr_ty a;
19568
361k
        expr_ty b;
19569
361k
        if (
19570
361k
            (a = t_primary_rule(p))  // t_primary
19571
361k
            &&
19572
361k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
19573
361k
            &&
19574
361k
            (b = slices_rule(p))  // slices
19575
361k
            &&
19576
361k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
19577
361k
            &&
19578
361k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
19579
361k
        )
19580
1.03k
        {
19581
1.03k
            D(fprintf(stderr, "%*c+ single_subscript_attribute_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19582
1.03k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19583
1.03k
            if (_token == NULL) {
19584
0
                p->level--;
19585
0
                return NULL;
19586
0
            }
19587
1.03k
            int _end_lineno = _token->end_lineno;
19588
1.03k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19589
1.03k
            int _end_col_offset = _token->end_col_offset;
19590
1.03k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19591
1.03k
            _res = _PyAST_Subscript ( a , b , Store , EXTRA );
19592
1.03k
            if (_res == NULL && PyErr_Occurred()) {
19593
0
                p->error_indicator = 1;
19594
0
                p->level--;
19595
0
                return NULL;
19596
0
            }
19597
1.03k
            goto done;
19598
1.03k
        }
19599
360k
        p->mark = _mark;
19600
360k
        D(fprintf(stderr, "%*c%s single_subscript_attribute_target[%d-%d]: %s failed!\n", p->level, ' ',
19601
360k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19602
360k
    }
19603
0
    _res = NULL;
19604
366k
  done:
19605
366k
    p->level--;
19606
366k
    return _res;
19607
360k
}
19608
19609
// Left-recursive
19610
// t_primary:
19611
//     | t_primary '.' NAME &t_lookahead
19612
//     | t_primary '[' slices ']' &t_lookahead
19613
//     | t_primary genexp &t_lookahead
19614
//     | t_primary '(' arguments? ')' &t_lookahead
19615
//     | atom &t_lookahead
19616
static expr_ty t_primary_raw(Parser *);
19617
static expr_ty
19618
t_primary_rule(Parser *p)
19619
2.49M
{
19620
2.49M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19621
0
        _Pypegen_stack_overflow(p);
19622
0
    }
19623
2.49M
    expr_ty _res = NULL;
19624
2.49M
    if (_PyPegen_is_memoized(p, t_primary_type, &_res)) {
19625
2.21M
        p->level--;
19626
2.21M
        return _res;
19627
2.21M
    }
19628
277k
    int _mark = p->mark;
19629
277k
    int _resmark = p->mark;
19630
311k
    while (1) {
19631
311k
        int tmpvar_9 = _PyPegen_update_memo(p, _mark, t_primary_type, _res);
19632
311k
        if (tmpvar_9) {
19633
0
            p->level--;
19634
0
            return _res;
19635
0
        }
19636
311k
        p->mark = _mark;
19637
311k
        void *_raw = t_primary_raw(p);
19638
311k
        if (p->error_indicator) {
19639
4.55k
            p->level--;
19640
4.55k
            return NULL;
19641
4.55k
        }
19642
306k
        if (_raw == NULL || p->mark <= _resmark)
19643
272k
            break;
19644
33.9k
        _resmark = p->mark;
19645
33.9k
        _res = _raw;
19646
33.9k
    }
19647
272k
    p->mark = _resmark;
19648
272k
    p->level--;
19649
272k
    return _res;
19650
277k
}
19651
static expr_ty
19652
t_primary_raw(Parser *p)
19653
311k
{
19654
311k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19655
0
        _Pypegen_stack_overflow(p);
19656
0
    }
19657
311k
    if (p->error_indicator) {
19658
0
        p->level--;
19659
0
        return NULL;
19660
0
    }
19661
311k
    expr_ty _res = NULL;
19662
311k
    int _mark = p->mark;
19663
311k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
19664
0
        p->error_indicator = 1;
19665
0
        p->level--;
19666
0
        return NULL;
19667
0
    }
19668
311k
    int _start_lineno = p->tokens[_mark]->lineno;
19669
311k
    UNUSED(_start_lineno); // Only used by EXTRA macro
19670
311k
    int _start_col_offset = p->tokens[_mark]->col_offset;
19671
311k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
19672
311k
    { // t_primary '.' NAME &t_lookahead
19673
311k
        if (p->error_indicator) {
19674
0
            p->level--;
19675
0
            return NULL;
19676
0
        }
19677
311k
        D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
19678
311k
        Token * _literal;
19679
311k
        expr_ty a;
19680
311k
        expr_ty b;
19681
311k
        if (
19682
311k
            (a = t_primary_rule(p))  // t_primary
19683
311k
            &&
19684
311k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
19685
311k
            &&
19686
311k
            (b = _PyPegen_name_token(p))  // NAME
19687
311k
            &&
19688
311k
            _PyPegen_lookahead(1, t_lookahead_rule, p)
19689
311k
        )
19690
6.26k
        {
19691
6.26k
            D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
19692
6.26k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19693
6.26k
            if (_token == NULL) {
19694
0
                p->level--;
19695
0
                return NULL;
19696
0
            }
19697
6.26k
            int _end_lineno = _token->end_lineno;
19698
6.26k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19699
6.26k
            int _end_col_offset = _token->end_col_offset;
19700
6.26k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19701
6.26k
            _res = _PyAST_Attribute ( a , b -> v . Name . id , Load , EXTRA );
19702
6.26k
            if (_res == NULL && PyErr_Occurred()) {
19703
0
                p->error_indicator = 1;
19704
0
                p->level--;
19705
0
                return NULL;
19706
0
            }
19707
6.26k
            goto done;
19708
6.26k
        }
19709
305k
        p->mark = _mark;
19710
305k
        D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
19711
305k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
19712
305k
    }
19713
0
    { // t_primary '[' slices ']' &t_lookahead
19714
305k
        if (p->error_indicator) {
19715
15
            p->level--;
19716
15
            return NULL;
19717
15
        }
19718
305k
        D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
19719
305k
        Token * _literal;
19720
305k
        Token * _literal_1;
19721
305k
        expr_ty a;
19722
305k
        expr_ty b;
19723
305k
        if (
19724
305k
            (a = t_primary_rule(p))  // t_primary
19725
305k
            &&
19726
305k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
19727
305k
            &&
19728
305k
            (b = slices_rule(p))  // slices
19729
305k
            &&
19730
305k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
19731
305k
            &&
19732
305k
            _PyPegen_lookahead(1, t_lookahead_rule, p)
19733
305k
        )
19734
701
        {
19735
701
            D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
19736
701
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19737
701
            if (_token == NULL) {
19738
0
                p->level--;
19739
0
                return NULL;
19740
0
            }
19741
701
            int _end_lineno = _token->end_lineno;
19742
701
            UNUSED(_end_lineno); // Only used by EXTRA macro
19743
701
            int _end_col_offset = _token->end_col_offset;
19744
701
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19745
701
            _res = _PyAST_Subscript ( a , b , Load , EXTRA );
19746
701
            if (_res == NULL && PyErr_Occurred()) {
19747
0
                p->error_indicator = 1;
19748
0
                p->level--;
19749
0
                return NULL;
19750
0
            }
19751
701
            goto done;
19752
701
        }
19753
304k
        p->mark = _mark;
19754
304k
        D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
19755
304k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
19756
304k
    }
19757
0
    { // t_primary genexp &t_lookahead
19758
304k
        if (p->error_indicator) {
19759
249
            p->level--;
19760
249
            return NULL;
19761
249
        }
19762
304k
        D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary genexp &t_lookahead"));
19763
304k
        expr_ty a;
19764
304k
        expr_ty b;
19765
304k
        if (
19766
304k
            (a = t_primary_rule(p))  // t_primary
19767
304k
            &&
19768
304k
            (b = genexp_rule(p))  // genexp
19769
304k
            &&
19770
304k
            _PyPegen_lookahead(1, t_lookahead_rule, p)
19771
304k
        )
19772
543
        {
19773
543
            D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary genexp &t_lookahead"));
19774
543
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19775
543
            if (_token == NULL) {
19776
0
                p->level--;
19777
0
                return NULL;
19778
0
            }
19779
543
            int _end_lineno = _token->end_lineno;
19780
543
            UNUSED(_end_lineno); // Only used by EXTRA macro
19781
543
            int _end_col_offset = _token->end_col_offset;
19782
543
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19783
543
            _res = _PyAST_Call ( a , CHECK ( asdl_expr_seq* , ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
19784
543
            if (_res == NULL && PyErr_Occurred()) {
19785
0
                p->error_indicator = 1;
19786
0
                p->level--;
19787
0
                return NULL;
19788
0
            }
19789
543
            goto done;
19790
543
        }
19791
303k
        p->mark = _mark;
19792
303k
        D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
19793
303k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary genexp &t_lookahead"));
19794
303k
    }
19795
0
    { // t_primary '(' arguments? ')' &t_lookahead
19796
303k
        if (p->error_indicator) {
19797
446
            p->level--;
19798
446
            return NULL;
19799
446
        }
19800
303k
        D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
19801
303k
        Token * _literal;
19802
303k
        Token * _literal_1;
19803
303k
        expr_ty a;
19804
303k
        void *b;
19805
303k
        if (
19806
303k
            (a = t_primary_rule(p))  // t_primary
19807
303k
            &&
19808
303k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
19809
303k
            &&
19810
303k
            (b = arguments_rule(p), !p->error_indicator)  // arguments?
19811
303k
            &&
19812
303k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19813
303k
            &&
19814
303k
            _PyPegen_lookahead(1, t_lookahead_rule, p)
19815
303k
        )
19816
3.33k
        {
19817
3.33k
            D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
19818
3.33k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19819
3.33k
            if (_token == NULL) {
19820
0
                p->level--;
19821
0
                return NULL;
19822
0
            }
19823
3.33k
            int _end_lineno = _token->end_lineno;
19824
3.33k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19825
3.33k
            int _end_col_offset = _token->end_col_offset;
19826
3.33k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19827
3.33k
            _res = _PyAST_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
19828
3.33k
            if (_res == NULL && PyErr_Occurred()) {
19829
0
                p->error_indicator = 1;
19830
0
                p->level--;
19831
0
                return NULL;
19832
0
            }
19833
3.33k
            goto done;
19834
3.33k
        }
19835
299k
        p->mark = _mark;
19836
299k
        D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
19837
299k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
19838
299k
    }
19839
0
    { // atom &t_lookahead
19840
299k
        if (p->error_indicator) {
19841
408
            p->level--;
19842
408
            return NULL;
19843
408
        }
19844
299k
        D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "atom &t_lookahead"));
19845
299k
        expr_ty a;
19846
299k
        if (
19847
299k
            (a = atom_rule(p))  // atom
19848
299k
            &&
19849
299k
            _PyPegen_lookahead(1, t_lookahead_rule, p)
19850
299k
        )
19851
45.0k
        {
19852
45.0k
            D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "atom &t_lookahead"));
19853
45.0k
            _res = a;
19854
45.0k
            if (_res == NULL && PyErr_Occurred()) {
19855
0
                p->error_indicator = 1;
19856
0
                p->level--;
19857
0
                return NULL;
19858
0
            }
19859
45.0k
            goto done;
19860
45.0k
        }
19861
254k
        p->mark = _mark;
19862
254k
        D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
19863
254k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "atom &t_lookahead"));
19864
254k
    }
19865
0
    _res = NULL;
19866
310k
  done:
19867
310k
    p->level--;
19868
310k
    return _res;
19869
254k
}
19870
19871
// t_lookahead: '(' | '[' | '.'
19872
static void *
19873
t_lookahead_rule(Parser *p)
19874
240k
{
19875
240k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19876
0
        _Pypegen_stack_overflow(p);
19877
0
    }
19878
240k
    if (p->error_indicator) {
19879
0
        p->level--;
19880
0
        return NULL;
19881
0
    }
19882
240k
    void * _res = NULL;
19883
240k
    int _mark = p->mark;
19884
240k
    { // '('
19885
240k
        if (p->error_indicator) {
19886
0
            p->level--;
19887
0
            return NULL;
19888
0
        }
19889
240k
        D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
19890
240k
        Token * _literal;
19891
240k
        if (
19892
240k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
19893
240k
        )
19894
26.5k
        {
19895
26.5k
            D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
19896
26.5k
            _res = _literal;
19897
26.5k
            goto done;
19898
26.5k
        }
19899
213k
        p->mark = _mark;
19900
213k
        D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
19901
213k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
19902
213k
    }
19903
0
    { // '['
19904
213k
        if (p->error_indicator) {
19905
202
            p->level--;
19906
202
            return NULL;
19907
202
        }
19908
213k
        D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
19909
213k
        Token * _literal;
19910
213k
        if (
19911
213k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
19912
213k
        )
19913
7.16k
        {
19914
7.16k
            D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
19915
7.16k
            _res = _literal;
19916
7.16k
            goto done;
19917
7.16k
        }
19918
206k
        p->mark = _mark;
19919
206k
        D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
19920
206k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
19921
206k
    }
19922
0
    { // '.'
19923
206k
        if (p->error_indicator) {
19924
0
            p->level--;
19925
0
            return NULL;
19926
0
        }
19927
206k
        D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
19928
206k
        Token * _literal;
19929
206k
        if (
19930
206k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
19931
206k
        )
19932
22.2k
        {
19933
22.2k
            D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
19934
22.2k
            _res = _literal;
19935
22.2k
            goto done;
19936
22.2k
        }
19937
184k
        p->mark = _mark;
19938
184k
        D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
19939
184k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
19940
184k
    }
19941
0
    _res = NULL;
19942
240k
  done:
19943
240k
    p->level--;
19944
240k
    return _res;
19945
184k
}
19946
19947
// del_targets: ','.del_target+ ','?
19948
static asdl_expr_seq*
19949
del_targets_rule(Parser *p)
19950
5.84k
{
19951
5.84k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19952
0
        _Pypegen_stack_overflow(p);
19953
0
    }
19954
5.84k
    if (p->error_indicator) {
19955
0
        p->level--;
19956
0
        return NULL;
19957
0
    }
19958
5.84k
    asdl_expr_seq* _res = NULL;
19959
5.84k
    int _mark = p->mark;
19960
5.84k
    { // ','.del_target+ ','?
19961
5.84k
        if (p->error_indicator) {
19962
0
            p->level--;
19963
0
            return NULL;
19964
0
        }
19965
5.84k
        D(fprintf(stderr, "%*c> del_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.del_target+ ','?"));
19966
5.84k
        void *_opt_var;
19967
5.84k
        UNUSED(_opt_var); // Silence compiler warnings
19968
5.84k
        asdl_expr_seq* a;
19969
5.84k
        if (
19970
5.84k
            (a = (asdl_expr_seq*)_gather_100_rule(p))  // ','.del_target+
19971
5.84k
            &&
19972
5.84k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
19973
5.84k
        )
19974
2.89k
        {
19975
2.89k
            D(fprintf(stderr, "%*c+ del_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.del_target+ ','?"));
19976
2.89k
            _res = a;
19977
2.89k
            if (_res == NULL && PyErr_Occurred()) {
19978
0
                p->error_indicator = 1;
19979
0
                p->level--;
19980
0
                return NULL;
19981
0
            }
19982
2.89k
            goto done;
19983
2.89k
        }
19984
2.95k
        p->mark = _mark;
19985
2.95k
        D(fprintf(stderr, "%*c%s del_targets[%d-%d]: %s failed!\n", p->level, ' ',
19986
2.95k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.del_target+ ','?"));
19987
2.95k
    }
19988
0
    _res = NULL;
19989
5.84k
  done:
19990
5.84k
    p->level--;
19991
5.84k
    return _res;
19992
2.95k
}
19993
19994
// del_target:
19995
//     | t_primary '.' NAME !t_lookahead
19996
//     | t_primary '[' slices ']' !t_lookahead
19997
//     | del_t_atom
19998
static expr_ty
19999
del_target_rule(Parser *p)
20000
15.5k
{
20001
15.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20002
0
        _Pypegen_stack_overflow(p);
20003
0
    }
20004
15.5k
    if (p->error_indicator) {
20005
0
        p->level--;
20006
0
        return NULL;
20007
0
    }
20008
15.5k
    expr_ty _res = NULL;
20009
15.5k
    if (_PyPegen_is_memoized(p, del_target_type, &_res)) {
20010
3.23k
        p->level--;
20011
3.23k
        return _res;
20012
3.23k
    }
20013
12.2k
    int _mark = p->mark;
20014
12.2k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
20015
0
        p->error_indicator = 1;
20016
0
        p->level--;
20017
0
        return NULL;
20018
0
    }
20019
12.2k
    int _start_lineno = p->tokens[_mark]->lineno;
20020
12.2k
    UNUSED(_start_lineno); // Only used by EXTRA macro
20021
12.2k
    int _start_col_offset = p->tokens[_mark]->col_offset;
20022
12.2k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
20023
12.2k
    { // t_primary '.' NAME !t_lookahead
20024
12.2k
        if (p->error_indicator) {
20025
0
            p->level--;
20026
0
            return NULL;
20027
0
        }
20028
12.2k
        D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
20029
12.2k
        Token * _literal;
20030
12.2k
        expr_ty a;
20031
12.2k
        expr_ty b;
20032
12.2k
        if (
20033
12.2k
            (a = t_primary_rule(p))  // t_primary
20034
12.2k
            &&
20035
12.2k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
20036
12.2k
            &&
20037
12.2k
            (b = _PyPegen_name_token(p))  // NAME
20038
12.2k
            &&
20039
12.2k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
20040
12.2k
        )
20041
339
        {
20042
339
            D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
20043
339
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
20044
339
            if (_token == NULL) {
20045
0
                p->level--;
20046
0
                return NULL;
20047
0
            }
20048
339
            int _end_lineno = _token->end_lineno;
20049
339
            UNUSED(_end_lineno); // Only used by EXTRA macro
20050
339
            int _end_col_offset = _token->end_col_offset;
20051
339
            UNUSED(_end_col_offset); // Only used by EXTRA macro
20052
339
            _res = _PyAST_Attribute ( a , b -> v . Name . id , Del , EXTRA );
20053
339
            if (_res == NULL && PyErr_Occurred()) {
20054
0
                p->error_indicator = 1;
20055
0
                p->level--;
20056
0
                return NULL;
20057
0
            }
20058
339
            goto done;
20059
339
        }
20060
11.9k
        p->mark = _mark;
20061
11.9k
        D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
20062
11.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
20063
11.9k
    }
20064
0
    { // t_primary '[' slices ']' !t_lookahead
20065
11.9k
        if (p->error_indicator) {
20066
127
            p->level--;
20067
127
            return NULL;
20068
127
        }
20069
11.8k
        D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
20070
11.8k
        Token * _literal;
20071
11.8k
        Token * _literal_1;
20072
11.8k
        expr_ty a;
20073
11.8k
        expr_ty b;
20074
11.8k
        if (
20075
11.8k
            (a = t_primary_rule(p))  // t_primary
20076
11.8k
            &&
20077
11.8k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
20078
11.8k
            &&
20079
11.8k
            (b = slices_rule(p))  // slices
20080
11.8k
            &&
20081
11.8k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
20082
11.8k
            &&
20083
11.8k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
20084
11.8k
        )
20085
269
        {
20086
269
            D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
20087
269
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
20088
269
            if (_token == NULL) {
20089
0
                p->level--;
20090
0
                return NULL;
20091
0
            }
20092
269
            int _end_lineno = _token->end_lineno;
20093
269
            UNUSED(_end_lineno); // Only used by EXTRA macro
20094
269
            int _end_col_offset = _token->end_col_offset;
20095
269
            UNUSED(_end_col_offset); // Only used by EXTRA macro
20096
269
            _res = _PyAST_Subscript ( a , b , Del , EXTRA );
20097
269
            if (_res == NULL && PyErr_Occurred()) {
20098
0
                p->error_indicator = 1;
20099
0
                p->level--;
20100
0
                return NULL;
20101
0
            }
20102
269
            goto done;
20103
269
        }
20104
11.5k
        p->mark = _mark;
20105
11.5k
        D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
20106
11.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
20107
11.5k
    }
20108
0
    { // del_t_atom
20109
11.5k
        if (p->error_indicator) {
20110
0
            p->level--;
20111
0
            return NULL;
20112
0
        }
20113
11.5k
        D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "del_t_atom"));
20114
11.5k
        expr_ty del_t_atom_var;
20115
11.5k
        if (
20116
11.5k
            (del_t_atom_var = del_t_atom_rule(p))  // del_t_atom
20117
11.5k
        )
20118
7.77k
        {
20119
7.77k
            D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "del_t_atom"));
20120
7.77k
            _res = del_t_atom_var;
20121
7.77k
            goto done;
20122
7.77k
        }
20123
3.76k
        p->mark = _mark;
20124
3.76k
        D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
20125
3.76k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_t_atom"));
20126
3.76k
    }
20127
0
    _res = NULL;
20128
12.1k
  done:
20129
12.1k
    _PyPegen_insert_memo(p, _mark, del_target_type, _res);
20130
12.1k
    p->level--;
20131
12.1k
    return _res;
20132
3.76k
}
20133
20134
// del_t_atom: NAME | '(' del_target ')' | '(' del_targets? ')' | '[' del_targets? ']'
20135
static expr_ty
20136
del_t_atom_rule(Parser *p)
20137
11.5k
{
20138
11.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20139
0
        _Pypegen_stack_overflow(p);
20140
0
    }
20141
11.5k
    if (p->error_indicator) {
20142
0
        p->level--;
20143
0
        return NULL;
20144
0
    }
20145
11.5k
    expr_ty _res = NULL;
20146
11.5k
    int _mark = p->mark;
20147
11.5k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
20148
0
        p->error_indicator = 1;
20149
0
        p->level--;
20150
0
        return NULL;
20151
0
    }
20152
11.5k
    int _start_lineno = p->tokens[_mark]->lineno;
20153
11.5k
    UNUSED(_start_lineno); // Only used by EXTRA macro
20154
11.5k
    int _start_col_offset = p->tokens[_mark]->col_offset;
20155
11.5k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
20156
11.5k
    { // NAME
20157
11.5k
        if (p->error_indicator) {
20158
0
            p->level--;
20159
0
            return NULL;
20160
0
        }
20161
11.5k
        D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
20162
11.5k
        expr_ty a;
20163
11.5k
        if (
20164
11.5k
            (a = _PyPegen_name_token(p))  // NAME
20165
11.5k
        )
20166
4.33k
        {
20167
4.33k
            D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
20168
4.33k
            _res = _PyPegen_set_expr_context ( p , a , Del );
20169
4.33k
            if (_res == NULL && PyErr_Occurred()) {
20170
0
                p->error_indicator = 1;
20171
0
                p->level--;
20172
0
                return NULL;
20173
0
            }
20174
4.33k
            goto done;
20175
4.33k
        }
20176
7.20k
        p->mark = _mark;
20177
7.20k
        D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
20178
7.20k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
20179
7.20k
    }
20180
0
    { // '(' del_target ')'
20181
7.20k
        if (p->error_indicator) {
20182
0
            p->level--;
20183
0
            return NULL;
20184
0
        }
20185
7.20k
        D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' del_target ')'"));
20186
7.20k
        Token * _literal;
20187
7.20k
        Token * _literal_1;
20188
7.20k
        expr_ty a;
20189
7.20k
        if (
20190
7.20k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
20191
7.20k
            &&
20192
7.20k
            (a = del_target_rule(p))  // del_target
20193
7.20k
            &&
20194
7.20k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
20195
7.20k
        )
20196
274
        {
20197
274
            D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' del_target ')'"));
20198
274
            _res = _PyPegen_set_expr_context ( p , a , Del );
20199
274
            if (_res == NULL && PyErr_Occurred()) {
20200
0
                p->error_indicator = 1;
20201
0
                p->level--;
20202
0
                return NULL;
20203
0
            }
20204
274
            goto done;
20205
274
        }
20206
6.92k
        p->mark = _mark;
20207
6.92k
        D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
20208
6.92k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' del_target ')'"));
20209
6.92k
    }
20210
0
    { // '(' del_targets? ')'
20211
6.92k
        if (p->error_indicator) {
20212
0
            p->level--;
20213
0
            return NULL;
20214
0
        }
20215
6.92k
        D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' del_targets? ')'"));
20216
6.92k
        Token * _literal;
20217
6.92k
        Token * _literal_1;
20218
6.92k
        void *a;
20219
6.92k
        if (
20220
6.92k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
20221
6.92k
            &&
20222
6.92k
            (a = del_targets_rule(p), !p->error_indicator)  // del_targets?
20223
6.92k
            &&
20224
6.92k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
20225
6.92k
        )
20226
2.42k
        {
20227
2.42k
            D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' del_targets? ')'"));
20228
2.42k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
20229
2.42k
            if (_token == NULL) {
20230
0
                p->level--;
20231
0
                return NULL;
20232
0
            }
20233
2.42k
            int _end_lineno = _token->end_lineno;
20234
2.42k
            UNUSED(_end_lineno); // Only used by EXTRA macro
20235
2.42k
            int _end_col_offset = _token->end_col_offset;
20236
2.42k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
20237
2.42k
            _res = _PyAST_Tuple ( a , Del , EXTRA );
20238
2.42k
            if (_res == NULL && PyErr_Occurred()) {
20239
0
                p->error_indicator = 1;
20240
0
                p->level--;
20241
0
                return NULL;
20242
0
            }
20243
2.42k
            goto done;
20244
2.42k
        }
20245
4.50k
        p->mark = _mark;
20246
4.50k
        D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
20247
4.50k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' del_targets? ')'"));
20248
4.50k
    }
20249
0
    { // '[' del_targets? ']'
20250
4.50k
        if (p->error_indicator) {
20251
0
            p->level--;
20252
0
            return NULL;
20253
0
        }
20254
4.50k
        D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' del_targets? ']'"));
20255
4.50k
        Token * _literal;
20256
4.50k
        Token * _literal_1;
20257
4.50k
        void *a;
20258
4.50k
        if (
20259
4.50k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
20260
4.50k
            &&
20261
4.50k
            (a = del_targets_rule(p), !p->error_indicator)  // del_targets?
20262
4.50k
            &&
20263
4.50k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
20264
4.50k
        )
20265
734
        {
20266
734
            D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' del_targets? ']'"));
20267
734
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
20268
734
            if (_token == NULL) {
20269
0
                p->level--;
20270
0
                return NULL;
20271
0
            }
20272
734
            int _end_lineno = _token->end_lineno;
20273
734
            UNUSED(_end_lineno); // Only used by EXTRA macro
20274
734
            int _end_col_offset = _token->end_col_offset;
20275
734
            UNUSED(_end_col_offset); // Only used by EXTRA macro
20276
734
            _res = _PyAST_List ( a , Del , EXTRA );
20277
734
            if (_res == NULL && PyErr_Occurred()) {
20278
0
                p->error_indicator = 1;
20279
0
                p->level--;
20280
0
                return NULL;
20281
0
            }
20282
734
            goto done;
20283
734
        }
20284
3.76k
        p->mark = _mark;
20285
3.76k
        D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
20286
3.76k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' del_targets? ']'"));
20287
3.76k
    }
20288
0
    _res = NULL;
20289
11.5k
  done:
20290
11.5k
    p->level--;
20291
11.5k
    return _res;
20292
3.76k
}
20293
20294
// type_expressions:
20295
//     | ','.expression+ ',' '*' expression ',' '**' expression
20296
//     | ','.expression+ ',' '*' expression
20297
//     | ','.expression+ ',' '**' expression
20298
//     | '*' expression ',' '**' expression
20299
//     | '*' expression
20300
//     | '**' expression
20301
//     | ','.expression+
20302
static asdl_expr_seq*
20303
type_expressions_rule(Parser *p)
20304
0
{
20305
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20306
0
        _Pypegen_stack_overflow(p);
20307
0
    }
20308
0
    if (p->error_indicator) {
20309
0
        p->level--;
20310
0
        return NULL;
20311
0
    }
20312
0
    asdl_expr_seq* _res = NULL;
20313
0
    int _mark = p->mark;
20314
0
    { // ','.expression+ ',' '*' expression ',' '**' expression
20315
0
        if (p->error_indicator) {
20316
0
            p->level--;
20317
0
            return NULL;
20318
0
        }
20319
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
20320
0
        Token * _literal;
20321
0
        Token * _literal_1;
20322
0
        Token * _literal_2;
20323
0
        Token * _literal_3;
20324
0
        asdl_seq * a;
20325
0
        expr_ty b;
20326
0
        expr_ty c;
20327
0
        if (
20328
0
            (a = _gather_102_rule(p))  // ','.expression+
20329
0
            &&
20330
0
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20331
0
            &&
20332
0
            (_literal_1 = _PyPegen_expect_token(p, 16))  // token='*'
20333
0
            &&
20334
0
            (b = expression_rule(p))  // expression
20335
0
            &&
20336
0
            (_literal_2 = _PyPegen_expect_token(p, 12))  // token=','
20337
0
            &&
20338
0
            (_literal_3 = _PyPegen_expect_token(p, 35))  // token='**'
20339
0
            &&
20340
0
            (c = expression_rule(p))  // expression
20341
0
        )
20342
0
        {
20343
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
20344
0
            _res = ( asdl_expr_seq* ) _PyPegen_seq_append_to_end ( p , CHECK ( asdl_seq* , _PyPegen_seq_append_to_end ( p , a , b ) ) , c );
20345
0
            if (_res == NULL && PyErr_Occurred()) {
20346
0
                p->error_indicator = 1;
20347
0
                p->level--;
20348
0
                return NULL;
20349
0
            }
20350
0
            goto done;
20351
0
        }
20352
0
        p->mark = _mark;
20353
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
20354
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
20355
0
    }
20356
0
    { // ','.expression+ ',' '*' expression
20357
0
        if (p->error_indicator) {
20358
0
            p->level--;
20359
0
            return NULL;
20360
0
        }
20361
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression"));
20362
0
        Token * _literal;
20363
0
        Token * _literal_1;
20364
0
        asdl_seq * a;
20365
0
        expr_ty b;
20366
0
        if (
20367
0
            (a = _gather_102_rule(p))  // ','.expression+
20368
0
            &&
20369
0
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20370
0
            &&
20371
0
            (_literal_1 = _PyPegen_expect_token(p, 16))  // token='*'
20372
0
            &&
20373
0
            (b = expression_rule(p))  // expression
20374
0
        )
20375
0
        {
20376
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression"));
20377
0
            _res = ( asdl_expr_seq* ) _PyPegen_seq_append_to_end ( p , a , b );
20378
0
            if (_res == NULL && PyErr_Occurred()) {
20379
0
                p->error_indicator = 1;
20380
0
                p->level--;
20381
0
                return NULL;
20382
0
            }
20383
0
            goto done;
20384
0
        }
20385
0
        p->mark = _mark;
20386
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
20387
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '*' expression"));
20388
0
    }
20389
0
    { // ','.expression+ ',' '**' expression
20390
0
        if (p->error_indicator) {
20391
0
            p->level--;
20392
0
            return NULL;
20393
0
        }
20394
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '**' expression"));
20395
0
        Token * _literal;
20396
0
        Token * _literal_1;
20397
0
        asdl_seq * a;
20398
0
        expr_ty b;
20399
0
        if (
20400
0
            (a = _gather_102_rule(p))  // ','.expression+
20401
0
            &&
20402
0
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20403
0
            &&
20404
0
            (_literal_1 = _PyPegen_expect_token(p, 35))  // token='**'
20405
0
            &&
20406
0
            (b = expression_rule(p))  // expression
20407
0
        )
20408
0
        {
20409
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '**' expression"));
20410
0
            _res = ( asdl_expr_seq* ) _PyPegen_seq_append_to_end ( p , a , b );
20411
0
            if (_res == NULL && PyErr_Occurred()) {
20412
0
                p->error_indicator = 1;
20413
0
                p->level--;
20414
0
                return NULL;
20415
0
            }
20416
0
            goto done;
20417
0
        }
20418
0
        p->mark = _mark;
20419
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
20420
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '**' expression"));
20421
0
    }
20422
0
    { // '*' expression ',' '**' expression
20423
0
        if (p->error_indicator) {
20424
0
            p->level--;
20425
0
            return NULL;
20426
0
        }
20427
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression ',' '**' expression"));
20428
0
        Token * _literal;
20429
0
        Token * _literal_1;
20430
0
        Token * _literal_2;
20431
0
        expr_ty a;
20432
0
        expr_ty b;
20433
0
        if (
20434
0
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
20435
0
            &&
20436
0
            (a = expression_rule(p))  // expression
20437
0
            &&
20438
0
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
20439
0
            &&
20440
0
            (_literal_2 = _PyPegen_expect_token(p, 35))  // token='**'
20441
0
            &&
20442
0
            (b = expression_rule(p))  // expression
20443
0
        )
20444
0
        {
20445
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression ',' '**' expression"));
20446
0
            _res = ( asdl_expr_seq* ) _PyPegen_seq_append_to_end ( p , CHECK ( asdl_seq* , _PyPegen_singleton_seq ( p , a ) ) , b );
20447
0
            if (_res == NULL && PyErr_Occurred()) {
20448
0
                p->error_indicator = 1;
20449
0
                p->level--;
20450
0
                return NULL;
20451
0
            }
20452
0
            goto done;
20453
0
        }
20454
0
        p->mark = _mark;
20455
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
20456
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression ',' '**' expression"));
20457
0
    }
20458
0
    { // '*' expression
20459
0
        if (p->error_indicator) {
20460
0
            p->level--;
20461
0
            return NULL;
20462
0
        }
20463
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression"));
20464
0
        Token * _literal;
20465
0
        expr_ty a;
20466
0
        if (
20467
0
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
20468
0
            &&
20469
0
            (a = expression_rule(p))  // expression
20470
0
        )
20471
0
        {
20472
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression"));
20473
0
            _res = ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , a );
20474
0
            if (_res == NULL && PyErr_Occurred()) {
20475
0
                p->error_indicator = 1;
20476
0
                p->level--;
20477
0
                return NULL;
20478
0
            }
20479
0
            goto done;
20480
0
        }
20481
0
        p->mark = _mark;
20482
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
20483
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression"));
20484
0
    }
20485
0
    { // '**' expression
20486
0
        if (p->error_indicator) {
20487
0
            p->level--;
20488
0
            return NULL;
20489
0
        }
20490
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' expression"));
20491
0
        Token * _literal;
20492
0
        expr_ty a;
20493
0
        if (
20494
0
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
20495
0
            &&
20496
0
            (a = expression_rule(p))  // expression
20497
0
        )
20498
0
        {
20499
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' expression"));
20500
0
            _res = ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , a );
20501
0
            if (_res == NULL && PyErr_Occurred()) {
20502
0
                p->error_indicator = 1;
20503
0
                p->level--;
20504
0
                return NULL;
20505
0
            }
20506
0
            goto done;
20507
0
        }
20508
0
        p->mark = _mark;
20509
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
20510
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression"));
20511
0
    }
20512
0
    { // ','.expression+
20513
0
        if (p->error_indicator) {
20514
0
            p->level--;
20515
0
            return NULL;
20516
0
        }
20517
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+"));
20518
0
        asdl_expr_seq* a;
20519
0
        if (
20520
0
            (a = (asdl_expr_seq*)_gather_102_rule(p))  // ','.expression+
20521
0
        )
20522
0
        {
20523
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+"));
20524
0
            _res = a;
20525
0
            if (_res == NULL && PyErr_Occurred()) {
20526
0
                p->error_indicator = 1;
20527
0
                p->level--;
20528
0
                return NULL;
20529
0
            }
20530
0
            goto done;
20531
0
        }
20532
0
        p->mark = _mark;
20533
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
20534
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+"));
20535
0
    }
20536
0
    _res = NULL;
20537
0
  done:
20538
0
    p->level--;
20539
0
    return _res;
20540
0
}
20541
20542
// func_type_comment:
20543
//     | NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
20544
//     | invalid_double_type_comments
20545
//     | TYPE_COMMENT
20546
static Token*
20547
func_type_comment_rule(Parser *p)
20548
10.7k
{
20549
10.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20550
0
        _Pypegen_stack_overflow(p);
20551
0
    }
20552
10.7k
    if (p->error_indicator) {
20553
0
        p->level--;
20554
0
        return NULL;
20555
0
    }
20556
10.7k
    Token* _res = NULL;
20557
10.7k
    int _mark = p->mark;
20558
10.7k
    { // NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
20559
10.7k
        if (p->error_indicator) {
20560
0
            p->level--;
20561
0
            return NULL;
20562
0
        }
20563
10.7k
        D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
20564
10.7k
        Token * newline_var;
20565
10.7k
        Token * t;
20566
10.7k
        if (
20567
10.7k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20568
10.7k
            &&
20569
10.7k
            (t = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
20570
10.7k
            &&
20571
10.7k
            _PyPegen_lookahead(1, _tmp_103_rule, p)
20572
10.7k
        )
20573
0
        {
20574
0
            D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
20575
0
            _res = t;
20576
0
            if (_res == NULL && PyErr_Occurred()) {
20577
0
                p->error_indicator = 1;
20578
0
                p->level--;
20579
0
                return NULL;
20580
0
            }
20581
0
            goto done;
20582
0
        }
20583
10.7k
        p->mark = _mark;
20584
10.7k
        D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
20585
10.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
20586
10.7k
    }
20587
10.7k
    if (p->call_invalid_rules) { // invalid_double_type_comments
20588
2.16k
        if (p->error_indicator) {
20589
0
            p->level--;
20590
0
            return NULL;
20591
0
        }
20592
2.16k
        D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_double_type_comments"));
20593
2.16k
        void *invalid_double_type_comments_var;
20594
2.16k
        if (
20595
2.16k
            (invalid_double_type_comments_var = invalid_double_type_comments_rule(p))  // invalid_double_type_comments
20596
2.16k
        )
20597
0
        {
20598
0
            D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_double_type_comments"));
20599
0
            _res = invalid_double_type_comments_var;
20600
0
            goto done;
20601
0
        }
20602
2.16k
        p->mark = _mark;
20603
2.16k
        D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
20604
2.16k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_double_type_comments"));
20605
2.16k
    }
20606
10.7k
    { // TYPE_COMMENT
20607
10.7k
        if (p->error_indicator) {
20608
3
            p->level--;
20609
3
            return NULL;
20610
3
        }
20611
10.7k
        D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT"));
20612
10.7k
        Token * type_comment_var;
20613
10.7k
        if (
20614
10.7k
            (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
20615
10.7k
        )
20616
0
        {
20617
0
            D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT"));
20618
0
            _res = type_comment_var;
20619
0
            goto done;
20620
0
        }
20621
10.7k
        p->mark = _mark;
20622
10.7k
        D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
20623
10.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TYPE_COMMENT"));
20624
10.7k
    }
20625
0
    _res = NULL;
20626
10.7k
  done:
20627
10.7k
    p->level--;
20628
10.7k
    return _res;
20629
10.7k
}
20630
20631
// invalid_arguments:
20632
//     | ((','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs) | kwargs) ',' ','.(starred_expression !'=')+
20633
//     | expression for_if_clauses ',' [args | expression for_if_clauses]
20634
//     | NAME '=' expression for_if_clauses
20635
//     | [(args ',')] NAME '=' &(',' | ')')
20636
//     | args for_if_clauses
20637
//     | args ',' expression for_if_clauses
20638
//     | args ',' args
20639
static void *
20640
invalid_arguments_rule(Parser *p)
20641
8.13k
{
20642
8.13k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20643
0
        _Pypegen_stack_overflow(p);
20644
0
    }
20645
8.13k
    if (p->error_indicator) {
20646
0
        p->level--;
20647
0
        return NULL;
20648
0
    }
20649
8.13k
    void * _res = NULL;
20650
8.13k
    int _mark = p->mark;
20651
8.13k
    { // ((','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs) | kwargs) ',' ','.(starred_expression !'=')+
20652
8.13k
        if (p->error_indicator) {
20653
0
            p->level--;
20654
0
            return NULL;
20655
0
        }
20656
8.13k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs) | kwargs) ',' ','.(starred_expression !'=')+"));
20657
8.13k
        asdl_seq * _gather_106_var;
20658
8.13k
        void *_tmp_104_var;
20659
8.13k
        Token * a;
20660
8.13k
        if (
20661
8.13k
            (_tmp_104_var = _tmp_104_rule(p))  // (','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs) | kwargs
20662
8.13k
            &&
20663
8.13k
            (a = _PyPegen_expect_token(p, 12))  // token=','
20664
8.13k
            &&
20665
8.13k
            (_gather_106_var = _gather_106_rule(p))  // ','.(starred_expression !'=')+
20666
8.13k
        )
20667
594
        {
20668
594
            D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs) | kwargs) ',' ','.(starred_expression !'=')+"));
20669
594
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "iterable argument unpacking follows keyword argument unpacking" );
20670
594
            if (_res == NULL && PyErr_Occurred()) {
20671
594
                p->error_indicator = 1;
20672
594
                p->level--;
20673
594
                return NULL;
20674
594
            }
20675
0
            goto done;
20676
594
        }
20677
7.54k
        p->mark = _mark;
20678
7.54k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20679
7.54k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs) | kwargs) ',' ','.(starred_expression !'=')+"));
20680
7.54k
    }
20681
0
    { // expression for_if_clauses ',' [args | expression for_if_clauses]
20682
7.54k
        if (p->error_indicator) {
20683
75
            p->level--;
20684
75
            return NULL;
20685
75
        }
20686
7.46k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]"));
20687
7.46k
        Token * _literal;
20688
7.46k
        void *_opt_var;
20689
7.46k
        UNUSED(_opt_var); // Silence compiler warnings
20690
7.46k
        expr_ty a;
20691
7.46k
        asdl_comprehension_seq* b;
20692
7.46k
        if (
20693
7.46k
            (a = expression_rule(p))  // expression
20694
7.46k
            &&
20695
7.46k
            (b = for_if_clauses_rule(p))  // for_if_clauses
20696
7.46k
            &&
20697
7.46k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20698
7.46k
            &&
20699
7.46k
            (_opt_var = _tmp_107_rule(p), !p->error_indicator)  // [args | expression for_if_clauses]
20700
7.46k
        )
20701
4
        {
20702
4
            D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]"));
20703
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , _PyPegen_get_last_comprehension_item ( PyPegen_last_item ( b , comprehension_ty ) ) , "Generator expression must be parenthesized" );
20704
4
            if (_res == NULL && PyErr_Occurred()) {
20705
4
                p->error_indicator = 1;
20706
4
                p->level--;
20707
4
                return NULL;
20708
4
            }
20709
0
            goto done;
20710
4
        }
20711
7.46k
        p->mark = _mark;
20712
7.46k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20713
7.46k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]"));
20714
7.46k
    }
20715
0
    { // NAME '=' expression for_if_clauses
20716
7.46k
        if (p->error_indicator) {
20717
48
            p->level--;
20718
48
            return NULL;
20719
48
        }
20720
7.41k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
20721
7.41k
        expr_ty a;
20722
7.41k
        Token * b;
20723
7.41k
        expr_ty expression_var;
20724
7.41k
        asdl_comprehension_seq* for_if_clauses_var;
20725
7.41k
        if (
20726
7.41k
            (a = _PyPegen_name_token(p))  // NAME
20727
7.41k
            &&
20728
7.41k
            (b = _PyPegen_expect_token(p, 22))  // token='='
20729
7.41k
            &&
20730
7.41k
            (expression_var = expression_rule(p))  // expression
20731
7.41k
            &&
20732
7.41k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
20733
7.41k
        )
20734
0
        {
20735
0
            D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
20736
0
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "invalid syntax. Maybe you meant '==' or ':=' instead of '='?" );
20737
0
            if (_res == NULL && PyErr_Occurred()) {
20738
0
                p->error_indicator = 1;
20739
0
                p->level--;
20740
0
                return NULL;
20741
0
            }
20742
0
            goto done;
20743
0
        }
20744
7.41k
        p->mark = _mark;
20745
7.41k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20746
7.41k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression for_if_clauses"));
20747
7.41k
    }
20748
0
    { // [(args ',')] NAME '=' &(',' | ')')
20749
7.41k
        if (p->error_indicator) {
20750
0
            p->level--;
20751
0
            return NULL;
20752
0
        }
20753
7.41k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "[(args ',')] NAME '=' &(',' | ')')"));
20754
7.41k
        void *_opt_var;
20755
7.41k
        UNUSED(_opt_var); // Silence compiler warnings
20756
7.41k
        expr_ty a;
20757
7.41k
        Token * b;
20758
7.41k
        if (
20759
7.41k
            (_opt_var = _tmp_108_rule(p), !p->error_indicator)  // [(args ',')]
20760
7.41k
            &&
20761
7.41k
            (a = _PyPegen_name_token(p))  // NAME
20762
7.41k
            &&
20763
7.41k
            (b = _PyPegen_expect_token(p, 22))  // token='='
20764
7.41k
            &&
20765
7.41k
            _PyPegen_lookahead(1, _tmp_109_rule, p)
20766
7.41k
        )
20767
15
        {
20768
15
            D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "[(args ',')] NAME '=' &(',' | ')')"));
20769
15
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "expected argument value expression" );
20770
15
            if (_res == NULL && PyErr_Occurred()) {
20771
15
                p->error_indicator = 1;
20772
15
                p->level--;
20773
15
                return NULL;
20774
15
            }
20775
0
            goto done;
20776
15
        }
20777
7.39k
        p->mark = _mark;
20778
7.39k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20779
7.39k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "[(args ',')] NAME '=' &(',' | ')')"));
20780
7.39k
    }
20781
0
    { // args for_if_clauses
20782
7.39k
        if (p->error_indicator) {
20783
0
            p->level--;
20784
0
            return NULL;
20785
0
        }
20786
7.39k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args for_if_clauses"));
20787
7.39k
        expr_ty a;
20788
7.39k
        asdl_comprehension_seq* b;
20789
7.39k
        if (
20790
7.39k
            (a = args_rule(p))  // args
20791
7.39k
            &&
20792
7.39k
            (b = for_if_clauses_rule(p))  // for_if_clauses
20793
7.39k
        )
20794
307
        {
20795
307
            D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args for_if_clauses"));
20796
307
            _res = _PyPegen_nonparen_genexp_in_call ( p , a , b );
20797
307
            if (_res == NULL && PyErr_Occurred()) {
20798
2
                p->error_indicator = 1;
20799
2
                p->level--;
20800
2
                return NULL;
20801
2
            }
20802
305
            goto done;
20803
307
        }
20804
7.09k
        p->mark = _mark;
20805
7.09k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20806
7.09k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args for_if_clauses"));
20807
7.09k
    }
20808
0
    { // args ',' expression for_if_clauses
20809
7.09k
        if (p->error_indicator) {
20810
83
            p->level--;
20811
83
            return NULL;
20812
83
        }
20813
7.00k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' expression for_if_clauses"));
20814
7.00k
        Token * _literal;
20815
7.00k
        expr_ty a;
20816
7.00k
        expr_ty args_var;
20817
7.00k
        asdl_comprehension_seq* b;
20818
7.00k
        if (
20819
7.00k
            (args_var = args_rule(p))  // args
20820
7.00k
            &&
20821
7.00k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20822
7.00k
            &&
20823
7.00k
            (a = expression_rule(p))  // expression
20824
7.00k
            &&
20825
7.00k
            (b = for_if_clauses_rule(p))  // for_if_clauses
20826
7.00k
        )
20827
1
        {
20828
1
            D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' expression for_if_clauses"));
20829
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , _PyPegen_get_last_comprehension_item ( PyPegen_last_item ( b , comprehension_ty ) ) , "Generator expression must be parenthesized" );
20830
1
            if (_res == NULL && PyErr_Occurred()) {
20831
1
                p->error_indicator = 1;
20832
1
                p->level--;
20833
1
                return NULL;
20834
1
            }
20835
0
            goto done;
20836
1
        }
20837
7.00k
        p->mark = _mark;
20838
7.00k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20839
7.00k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' expression for_if_clauses"));
20840
7.00k
    }
20841
0
    { // args ',' args
20842
7.00k
        if (p->error_indicator) {
20843
77
            p->level--;
20844
77
            return NULL;
20845
77
        }
20846
6.93k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' args"));
20847
6.93k
        Token * _literal;
20848
6.93k
        expr_ty a;
20849
6.93k
        expr_ty args_var;
20850
6.93k
        if (
20851
6.93k
            (a = args_rule(p))  // args
20852
6.93k
            &&
20853
6.93k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20854
6.93k
            &&
20855
6.93k
            (args_var = args_rule(p))  // args
20856
6.93k
        )
20857
30
        {
20858
30
            D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' args"));
20859
30
            _res = _PyPegen_arguments_parsing_error ( p , a );
20860
30
            if (_res == NULL && PyErr_Occurred()) {
20861
30
                p->error_indicator = 1;
20862
30
                p->level--;
20863
30
                return NULL;
20864
30
            }
20865
0
            goto done;
20866
30
        }
20867
6.90k
        p->mark = _mark;
20868
6.90k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20869
6.90k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' args"));
20870
6.90k
    }
20871
0
    _res = NULL;
20872
7.20k
  done:
20873
7.20k
    p->level--;
20874
7.20k
    return _res;
20875
6.90k
}
20876
20877
// invalid_kwarg:
20878
//     | ('True' | 'False' | 'None') '='
20879
//     | NAME '=' expression for_if_clauses
20880
//     | !(NAME '=') expression '='
20881
//     | '**' expression '=' expression
20882
static void *
20883
invalid_kwarg_rule(Parser *p)
20884
120k
{
20885
120k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20886
0
        _Pypegen_stack_overflow(p);
20887
0
    }
20888
120k
    if (p->error_indicator) {
20889
0
        p->level--;
20890
0
        return NULL;
20891
0
    }
20892
120k
    void * _res = NULL;
20893
120k
    int _mark = p->mark;
20894
120k
    { // ('True' | 'False' | 'None') '='
20895
120k
        if (p->error_indicator) {
20896
0
            p->level--;
20897
0
            return NULL;
20898
0
        }
20899
120k
        D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('True' | 'False' | 'None') '='"));
20900
120k
        Token* a;
20901
120k
        Token * b;
20902
120k
        if (
20903
120k
            (a = (Token*)_tmp_110_rule(p))  // 'True' | 'False' | 'None'
20904
120k
            &&
20905
120k
            (b = _PyPegen_expect_token(p, 22))  // token='='
20906
120k
        )
20907
3
        {
20908
3
            D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('True' | 'False' | 'None') '='"));
20909
3
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "cannot assign to %s" , PyBytes_AS_STRING ( a -> bytes ) );
20910
3
            if (_res == NULL && PyErr_Occurred()) {
20911
3
                p->error_indicator = 1;
20912
3
                p->level--;
20913
3
                return NULL;
20914
3
            }
20915
0
            goto done;
20916
3
        }
20917
120k
        p->mark = _mark;
20918
120k
        D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
20919
120k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('True' | 'False' | 'None') '='"));
20920
120k
    }
20921
0
    { // NAME '=' expression for_if_clauses
20922
120k
        if (p->error_indicator) {
20923
5
            p->level--;
20924
5
            return NULL;
20925
5
        }
20926
120k
        D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
20927
120k
        expr_ty a;
20928
120k
        Token * b;
20929
120k
        expr_ty expression_var;
20930
120k
        asdl_comprehension_seq* for_if_clauses_var;
20931
120k
        if (
20932
120k
            (a = _PyPegen_name_token(p))  // NAME
20933
120k
            &&
20934
120k
            (b = _PyPegen_expect_token(p, 22))  // token='='
20935
120k
            &&
20936
120k
            (expression_var = expression_rule(p))  // expression
20937
120k
            &&
20938
120k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
20939
120k
        )
20940
1
        {
20941
1
            D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
20942
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "invalid syntax. Maybe you meant '==' or ':=' instead of '='?" );
20943
1
            if (_res == NULL && PyErr_Occurred()) {
20944
1
                p->error_indicator = 1;
20945
1
                p->level--;
20946
1
                return NULL;
20947
1
            }
20948
0
            goto done;
20949
1
        }
20950
120k
        p->mark = _mark;
20951
120k
        D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
20952
120k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression for_if_clauses"));
20953
120k
    }
20954
0
    { // !(NAME '=') expression '='
20955
120k
        if (p->error_indicator) {
20956
224
            p->level--;
20957
224
            return NULL;
20958
224
        }
20959
120k
        D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!(NAME '=') expression '='"));
20960
120k
        expr_ty a;
20961
120k
        Token * b;
20962
120k
        if (
20963
120k
            _PyPegen_lookahead(0, _tmp_111_rule, p)
20964
120k
            &&
20965
120k
            (a = expression_rule(p))  // expression
20966
120k
            &&
20967
120k
            (b = _PyPegen_expect_token(p, 22))  // token='='
20968
120k
        )
20969
6
        {
20970
6
            D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!(NAME '=') expression '='"));
20971
6
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "expression cannot contain assignment, perhaps you meant \"==\"?" );
20972
6
            if (_res == NULL && PyErr_Occurred()) {
20973
6
                p->error_indicator = 1;
20974
6
                p->level--;
20975
6
                return NULL;
20976
6
            }
20977
0
            goto done;
20978
6
        }
20979
120k
        p->mark = _mark;
20980
120k
        D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
20981
120k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(NAME '=') expression '='"));
20982
120k
    }
20983
0
    { // '**' expression '=' expression
20984
120k
        if (p->error_indicator) {
20985
544
            p->level--;
20986
544
            return NULL;
20987
544
        }
20988
119k
        D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' expression '=' expression"));
20989
119k
        Token * _literal;
20990
119k
        Token * a;
20991
119k
        expr_ty b;
20992
119k
        expr_ty expression_var;
20993
119k
        if (
20994
119k
            (a = _PyPegen_expect_token(p, 35))  // token='**'
20995
119k
            &&
20996
119k
            (expression_var = expression_rule(p))  // expression
20997
119k
            &&
20998
119k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
20999
119k
            &&
21000
119k
            (b = expression_rule(p))  // expression
21001
119k
        )
21002
1
        {
21003
1
            D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' expression '=' expression"));
21004
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "cannot assign to keyword argument unpacking" );
21005
1
            if (_res == NULL && PyErr_Occurred()) {
21006
1
                p->error_indicator = 1;
21007
1
                p->level--;
21008
1
                return NULL;
21009
1
            }
21010
0
            goto done;
21011
1
        }
21012
119k
        p->mark = _mark;
21013
119k
        D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
21014
119k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression '=' expression"));
21015
119k
    }
21016
0
    _res = NULL;
21017
119k
  done:
21018
119k
    p->level--;
21019
119k
    return _res;
21020
119k
}
21021
21022
// expression_without_invalid:
21023
//     | disjunction 'if' disjunction 'else' expression
21024
//     | disjunction
21025
//     | lambdef
21026
static expr_ty
21027
expression_without_invalid_rule(Parser *p)
21028
100k
{
21029
100k
    int _prev_call_invalid = p->call_invalid_rules;
21030
100k
    p->call_invalid_rules = 0;
21031
100k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21032
1
        _Pypegen_stack_overflow(p);
21033
1
    }
21034
100k
    if (p->error_indicator) {
21035
17
        p->call_invalid_rules = _prev_call_invalid;
21036
17
        p->level--;
21037
17
        return NULL;
21038
17
    }
21039
100k
    expr_ty _res = NULL;
21040
100k
    int _mark = p->mark;
21041
100k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
21042
0
        p->error_indicator = 1;
21043
0
        p->call_invalid_rules = _prev_call_invalid;
21044
0
        p->level--;
21045
0
        return NULL;
21046
0
    }
21047
100k
    int _start_lineno = p->tokens[_mark]->lineno;
21048
100k
    UNUSED(_start_lineno); // Only used by EXTRA macro
21049
100k
    int _start_col_offset = p->tokens[_mark]->col_offset;
21050
100k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
21051
100k
    { // disjunction 'if' disjunction 'else' expression
21052
100k
        if (p->error_indicator) {
21053
0
            p->call_invalid_rules = _prev_call_invalid;
21054
0
            p->level--;
21055
0
            return NULL;
21056
0
        }
21057
100k
        D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
21058
100k
        Token * _keyword;
21059
100k
        Token * _keyword_1;
21060
100k
        expr_ty a;
21061
100k
        expr_ty b;
21062
100k
        expr_ty c;
21063
100k
        if (
21064
100k
            (a = disjunction_rule(p))  // disjunction
21065
100k
            &&
21066
100k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
21067
100k
            &&
21068
100k
            (b = disjunction_rule(p))  // disjunction
21069
100k
            &&
21070
100k
            (_keyword_1 = _PyPegen_expect_token(p, 691))  // token='else'
21071
100k
            &&
21072
100k
            (c = expression_rule(p))  // expression
21073
100k
        )
21074
66
        {
21075
66
            D(fprintf(stderr, "%*c+ expression_without_invalid[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
21076
66
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
21077
66
            if (_token == NULL) {
21078
0
                p->call_invalid_rules = _prev_call_invalid;
21079
0
                p->level--;
21080
0
                return NULL;
21081
0
            }
21082
66
            int _end_lineno = _token->end_lineno;
21083
66
            UNUSED(_end_lineno); // Only used by EXTRA macro
21084
66
            int _end_col_offset = _token->end_col_offset;
21085
66
            UNUSED(_end_col_offset); // Only used by EXTRA macro
21086
66
            _res = _PyAST_IfExp ( b , a , c , EXTRA );
21087
66
            if (_res == NULL && PyErr_Occurred()) {
21088
0
                p->error_indicator = 1;
21089
0
                p->call_invalid_rules = _prev_call_invalid;
21090
0
                p->level--;
21091
0
                return NULL;
21092
0
            }
21093
66
            goto done;
21094
66
        }
21095
100k
        p->mark = _mark;
21096
100k
        D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
21097
100k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
21098
100k
    }
21099
0
    { // disjunction
21100
100k
        if (p->error_indicator) {
21101
394
            p->call_invalid_rules = _prev_call_invalid;
21102
394
            p->level--;
21103
394
            return NULL;
21104
394
        }
21105
100k
        D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction"));
21106
100k
        expr_ty disjunction_var;
21107
100k
        if (
21108
100k
            (disjunction_var = disjunction_rule(p))  // disjunction
21109
100k
        )
21110
7.04k
        {
21111
7.04k
            D(fprintf(stderr, "%*c+ expression_without_invalid[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction"));
21112
7.04k
            _res = disjunction_var;
21113
7.04k
            goto done;
21114
7.04k
        }
21115
93.0k
        p->mark = _mark;
21116
93.0k
        D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
21117
93.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction"));
21118
93.0k
    }
21119
0
    { // lambdef
21120
93.0k
        if (p->error_indicator) {
21121
0
            p->call_invalid_rules = _prev_call_invalid;
21122
0
            p->level--;
21123
0
            return NULL;
21124
0
        }
21125
93.0k
        D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambdef"));
21126
93.0k
        expr_ty lambdef_var;
21127
93.0k
        if (
21128
93.0k
            (lambdef_var = lambdef_rule(p))  // lambdef
21129
93.0k
        )
21130
76
        {
21131
76
            D(fprintf(stderr, "%*c+ expression_without_invalid[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambdef"));
21132
76
            _res = lambdef_var;
21133
76
            goto done;
21134
76
        }
21135
92.9k
        p->mark = _mark;
21136
92.9k
        D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
21137
92.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambdef"));
21138
92.9k
    }
21139
0
    _res = NULL;
21140
100k
  done:
21141
100k
    p->call_invalid_rules = _prev_call_invalid;
21142
100k
    p->level--;
21143
100k
    return _res;
21144
92.9k
}
21145
21146
// invalid_legacy_expression: NAME !'(' star_expressions
21147
static void *
21148
invalid_legacy_expression_rule(Parser *p)
21149
207k
{
21150
207k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21151
0
        _Pypegen_stack_overflow(p);
21152
0
    }
21153
207k
    if (p->error_indicator) {
21154
0
        p->level--;
21155
0
        return NULL;
21156
0
    }
21157
207k
    void * _res = NULL;
21158
207k
    int _mark = p->mark;
21159
207k
    { // NAME !'(' star_expressions
21160
207k
        if (p->error_indicator) {
21161
0
            p->level--;
21162
0
            return NULL;
21163
0
        }
21164
207k
        D(fprintf(stderr, "%*c> invalid_legacy_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME !'(' star_expressions"));
21165
207k
        expr_ty a;
21166
207k
        expr_ty b;
21167
207k
        if (
21168
207k
            (a = _PyPegen_name_token(p))  // NAME
21169
207k
            &&
21170
207k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 7)  // token='('
21171
207k
            &&
21172
207k
            (b = star_expressions_rule(p))  // star_expressions
21173
207k
        )
21174
3.96k
        {
21175
3.96k
            D(fprintf(stderr, "%*c+ invalid_legacy_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME !'(' star_expressions"));
21176
3.96k
            _res = _PyPegen_check_legacy_stmt ( p , a ) ? RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "Missing parentheses in call to '%U'. Did you mean %U(...)?" , a -> v . Name . id , a -> v . Name . id ) : NULL;
21177
3.96k
            if (_res == NULL && PyErr_Occurred()) {
21178
20
                p->error_indicator = 1;
21179
20
                p->level--;
21180
20
                return NULL;
21181
20
            }
21182
3.94k
            goto done;
21183
3.96k
        }
21184
203k
        p->mark = _mark;
21185
203k
        D(fprintf(stderr, "%*c%s invalid_legacy_expression[%d-%d]: %s failed!\n", p->level, ' ',
21186
203k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME !'(' star_expressions"));
21187
203k
    }
21188
0
    _res = NULL;
21189
207k
  done:
21190
207k
    p->level--;
21191
207k
    return _res;
21192
203k
}
21193
21194
// invalid_type_param: '*' NAME ':' expression | '**' NAME ':' expression
21195
static void *
21196
invalid_type_param_rule(Parser *p)
21197
960
{
21198
960
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21199
0
        _Pypegen_stack_overflow(p);
21200
0
    }
21201
960
    if (p->error_indicator) {
21202
0
        p->level--;
21203
0
        return NULL;
21204
0
    }
21205
960
    void * _res = NULL;
21206
960
    int _mark = p->mark;
21207
960
    { // '*' NAME ':' expression
21208
960
        if (p->error_indicator) {
21209
0
            p->level--;
21210
0
            return NULL;
21211
0
        }
21212
960
        D(fprintf(stderr, "%*c> invalid_type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' NAME ':' expression"));
21213
960
        Token * _literal;
21214
960
        expr_ty a;
21215
960
        Token * colon;
21216
960
        expr_ty e;
21217
960
        if (
21218
960
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
21219
960
            &&
21220
960
            (a = _PyPegen_name_token(p))  // NAME
21221
960
            &&
21222
960
            (colon = _PyPegen_expect_token(p, 11))  // token=':'
21223
960
            &&
21224
960
            (e = expression_rule(p))  // expression
21225
960
        )
21226
1
        {
21227
1
            D(fprintf(stderr, "%*c+ invalid_type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' NAME ':' expression"));
21228
1
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( colon , e -> kind == Tuple_kind ? "cannot use constraints with TypeVarTuple" : "cannot use bound with TypeVarTuple" );
21229
1
            if (_res == NULL && PyErr_Occurred()) {
21230
1
                p->error_indicator = 1;
21231
1
                p->level--;
21232
1
                return NULL;
21233
1
            }
21234
0
            goto done;
21235
1
        }
21236
959
        p->mark = _mark;
21237
959
        D(fprintf(stderr, "%*c%s invalid_type_param[%d-%d]: %s failed!\n", p->level, ' ',
21238
959
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' NAME ':' expression"));
21239
959
    }
21240
0
    { // '**' NAME ':' expression
21241
959
        if (p->error_indicator) {
21242
1
            p->level--;
21243
1
            return NULL;
21244
1
        }
21245
958
        D(fprintf(stderr, "%*c> invalid_type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' NAME ':' expression"));
21246
958
        Token * _literal;
21247
958
        expr_ty a;
21248
958
        Token * colon;
21249
958
        expr_ty e;
21250
958
        if (
21251
958
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
21252
958
            &&
21253
958
            (a = _PyPegen_name_token(p))  // NAME
21254
958
            &&
21255
958
            (colon = _PyPegen_expect_token(p, 11))  // token=':'
21256
958
            &&
21257
958
            (e = expression_rule(p))  // expression
21258
958
        )
21259
1
        {
21260
1
            D(fprintf(stderr, "%*c+ invalid_type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' NAME ':' expression"));
21261
1
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( colon , e -> kind == Tuple_kind ? "cannot use constraints with ParamSpec" : "cannot use bound with ParamSpec" );
21262
1
            if (_res == NULL && PyErr_Occurred()) {
21263
1
                p->error_indicator = 1;
21264
1
                p->level--;
21265
1
                return NULL;
21266
1
            }
21267
0
            goto done;
21268
1
        }
21269
957
        p->mark = _mark;
21270
957
        D(fprintf(stderr, "%*c%s invalid_type_param[%d-%d]: %s failed!\n", p->level, ' ',
21271
957
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' NAME ':' expression"));
21272
957
    }
21273
0
    _res = NULL;
21274
957
  done:
21275
957
    p->level--;
21276
957
    return _res;
21277
957
}
21278
21279
// invalid_expression:
21280
//     | STRING ((!STRING expression_without_invalid))+ STRING
21281
//     | !(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid
21282
//     | disjunction 'if' disjunction !('else' | ':')
21283
//     | disjunction 'if' disjunction 'else' !expression
21284
//     | (pass_stmt | break_stmt | continue_stmt) 'if' disjunction 'else' simple_stmt
21285
//     | 'lambda' lambda_params? ':' &FSTRING_MIDDLE
21286
//     | 'lambda' lambda_params? ':' &TSTRING_MIDDLE
21287
static void *
21288
invalid_expression_rule(Parser *p)
21289
238k
{
21290
238k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21291
1
        _Pypegen_stack_overflow(p);
21292
1
    }
21293
238k
    if (p->error_indicator) {
21294
1
        p->level--;
21295
1
        return NULL;
21296
1
    }
21297
238k
    void * _res = NULL;
21298
238k
    int _mark = p->mark;
21299
238k
    { // STRING ((!STRING expression_without_invalid))+ STRING
21300
238k
        if (p->error_indicator) {
21301
0
            p->level--;
21302
0
            return NULL;
21303
0
        }
21304
238k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING ((!STRING expression_without_invalid))+ STRING"));
21305
238k
        asdl_seq * a;
21306
238k
        expr_ty string_var;
21307
238k
        expr_ty string_var_1;
21308
238k
        if (
21309
238k
            (string_var = _PyPegen_string_token(p))  // STRING
21310
238k
            &&
21311
238k
            (a = _loop1_112_rule(p))  // ((!STRING expression_without_invalid))+
21312
238k
            &&
21313
238k
            (string_var_1 = _PyPegen_string_token(p))  // STRING
21314
238k
        )
21315
9
        {
21316
9
            D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING ((!STRING expression_without_invalid))+ STRING"));
21317
9
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( PyPegen_first_item ( a , expr_ty ) , PyPegen_last_item ( a , expr_ty ) , "invalid syntax. Is this intended to be part of the string?" );
21318
9
            if (_res == NULL && PyErr_Occurred()) {
21319
9
                p->error_indicator = 1;
21320
9
                p->level--;
21321
9
                return NULL;
21322
9
            }
21323
0
            goto done;
21324
9
        }
21325
238k
        p->mark = _mark;
21326
238k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21327
238k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING ((!STRING expression_without_invalid))+ STRING"));
21328
238k
    }
21329
0
    { // !(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid
21330
238k
        if (p->error_indicator) {
21331
114
            p->level--;
21332
114
            return NULL;
21333
114
        }
21334
238k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid"));
21335
238k
        expr_ty a;
21336
238k
        expr_ty b;
21337
238k
        if (
21338
238k
            _PyPegen_lookahead(0, _tmp_113_rule, p)
21339
238k
            &&
21340
238k
            (a = disjunction_rule(p))  // disjunction
21341
238k
            &&
21342
238k
            (b = expression_without_invalid_rule(p))  // expression_without_invalid
21343
238k
        )
21344
5.20k
        {
21345
5.20k
            D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid"));
21346
5.20k
            _res = _PyPegen_check_legacy_stmt ( p , a ) ? NULL : p -> tokens [p -> mark - 1] -> level == 0 ? NULL : RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "invalid syntax. Perhaps you forgot a comma?" );
21347
5.20k
            if (_res == NULL && PyErr_Occurred()) {
21348
108
                p->error_indicator = 1;
21349
108
                p->level--;
21350
108
                return NULL;
21351
108
            }
21352
5.09k
            goto done;
21353
5.20k
        }
21354
232k
        p->mark = _mark;
21355
232k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21356
232k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid"));
21357
232k
    }
21358
0
    { // disjunction 'if' disjunction !('else' | ':')
21359
232k
        if (p->error_indicator) {
21360
27.8k
            p->level--;
21361
27.8k
            return NULL;
21362
27.8k
        }
21363
205k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')"));
21364
205k
        Token * _keyword;
21365
205k
        expr_ty a;
21366
205k
        expr_ty b;
21367
205k
        if (
21368
205k
            (a = disjunction_rule(p))  // disjunction
21369
205k
            &&
21370
205k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
21371
205k
            &&
21372
205k
            (b = disjunction_rule(p))  // disjunction
21373
205k
            &&
21374
205k
            _PyPegen_lookahead(0, _tmp_114_rule, p)
21375
205k
        )
21376
18
        {
21377
18
            D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')"));
21378
18
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "expected 'else' after 'if' expression" );
21379
18
            if (_res == NULL && PyErr_Occurred()) {
21380
18
                p->error_indicator = 1;
21381
18
                p->level--;
21382
18
                return NULL;
21383
18
            }
21384
0
            goto done;
21385
18
        }
21386
205k
        p->mark = _mark;
21387
205k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21388
205k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')"));
21389
205k
    }
21390
0
    { // disjunction 'if' disjunction 'else' !expression
21391
205k
        if (p->error_indicator) {
21392
650
            p->level--;
21393
650
            return NULL;
21394
650
        }
21395
204k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' !expression"));
21396
204k
        Token * _keyword;
21397
204k
        Token * _keyword_1;
21398
204k
        expr_ty a;
21399
204k
        expr_ty b;
21400
204k
        if (
21401
204k
            (a = disjunction_rule(p))  // disjunction
21402
204k
            &&
21403
204k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
21404
204k
            &&
21405
204k
            (b = disjunction_rule(p))  // disjunction
21406
204k
            &&
21407
204k
            (_keyword_1 = _PyPegen_expect_token(p, 691))  // token='else'
21408
204k
            &&
21409
204k
            _PyPegen_lookahead_for_expr(0, expression_rule, p)
21410
204k
        )
21411
225
        {
21412
225
            D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' !expression"));
21413
225
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "expected expression after 'else', but statement is given" );
21414
225
            if (_res == NULL && PyErr_Occurred()) {
21415
225
                p->error_indicator = 1;
21416
225
                p->level--;
21417
225
                return NULL;
21418
225
            }
21419
0
            goto done;
21420
225
        }
21421
204k
        p->mark = _mark;
21422
204k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21423
204k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' !expression"));
21424
204k
    }
21425
0
    { // (pass_stmt | break_stmt | continue_stmt) 'if' disjunction 'else' simple_stmt
21426
204k
        if (p->error_indicator) {
21427
0
            p->level--;
21428
0
            return NULL;
21429
0
        }
21430
204k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(pass_stmt | break_stmt | continue_stmt) 'if' disjunction 'else' simple_stmt"));
21431
204k
        Token * _keyword;
21432
204k
        Token * _keyword_1;
21433
204k
        stmt_ty a;
21434
204k
        expr_ty b;
21435
204k
        stmt_ty c;
21436
204k
        if (
21437
204k
            (a = (stmt_ty)_tmp_115_rule(p))  // pass_stmt | break_stmt | continue_stmt
21438
204k
            &&
21439
204k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
21440
204k
            &&
21441
204k
            (b = disjunction_rule(p))  // disjunction
21442
204k
            &&
21443
204k
            (_keyword_1 = _PyPegen_expect_token(p, 691))  // token='else'
21444
204k
            &&
21445
204k
            (c = simple_stmt_rule(p))  // simple_stmt
21446
204k
        )
21447
9
        {
21448
9
            D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(pass_stmt | break_stmt | continue_stmt) 'if' disjunction 'else' simple_stmt"));
21449
9
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expected expression before 'if', but statement is given" );
21450
9
            if (_res == NULL && PyErr_Occurred()) {
21451
9
                p->error_indicator = 1;
21452
9
                p->level--;
21453
9
                return NULL;
21454
9
            }
21455
0
            goto done;
21456
9
        }
21457
204k
        p->mark = _mark;
21458
204k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21459
204k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(pass_stmt | break_stmt | continue_stmt) 'if' disjunction 'else' simple_stmt"));
21460
204k
    }
21461
0
    { // 'lambda' lambda_params? ':' &FSTRING_MIDDLE
21462
204k
        if (p->error_indicator) {
21463
1.15k
            p->level--;
21464
1.15k
            return NULL;
21465
1.15k
        }
21466
202k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' &FSTRING_MIDDLE"));
21467
202k
        void *_opt_var;
21468
202k
        UNUSED(_opt_var); // Silence compiler warnings
21469
202k
        Token * a;
21470
202k
        Token * b;
21471
202k
        if (
21472
202k
            (a = _PyPegen_expect_token(p, 622))  // token='lambda'
21473
202k
            &&
21474
202k
            (_opt_var = lambda_params_rule(p), !p->error_indicator)  // lambda_params?
21475
202k
            &&
21476
202k
            (b = _PyPegen_expect_token(p, 11))  // token=':'
21477
202k
            &&
21478
202k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, FSTRING_MIDDLE)  // token=FSTRING_MIDDLE
21479
202k
        )
21480
1
        {
21481
1
            D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' &FSTRING_MIDDLE"));
21482
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "f-string: lambda expressions are not allowed without parentheses" );
21483
1
            if (_res == NULL && PyErr_Occurred()) {
21484
1
                p->error_indicator = 1;
21485
1
                p->level--;
21486
1
                return NULL;
21487
1
            }
21488
0
            goto done;
21489
1
        }
21490
202k
        p->mark = _mark;
21491
202k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21492
202k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'lambda' lambda_params? ':' &FSTRING_MIDDLE"));
21493
202k
    }
21494
0
    { // 'lambda' lambda_params? ':' &TSTRING_MIDDLE
21495
202k
        if (p->error_indicator) {
21496
702
            p->level--;
21497
702
            return NULL;
21498
702
        }
21499
202k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' &TSTRING_MIDDLE"));
21500
202k
        void *_opt_var;
21501
202k
        UNUSED(_opt_var); // Silence compiler warnings
21502
202k
        Token * a;
21503
202k
        Token * b;
21504
202k
        if (
21505
202k
            (a = _PyPegen_expect_token(p, 622))  // token='lambda'
21506
202k
            &&
21507
202k
            (_opt_var = lambda_params_rule(p), !p->error_indicator)  // lambda_params?
21508
202k
            &&
21509
202k
            (b = _PyPegen_expect_token(p, 11))  // token=':'
21510
202k
            &&
21511
202k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, TSTRING_MIDDLE)  // token=TSTRING_MIDDLE
21512
202k
        )
21513
7
        {
21514
7
            D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' &TSTRING_MIDDLE"));
21515
7
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "t-string: lambda expressions are not allowed without parentheses" );
21516
7
            if (_res == NULL && PyErr_Occurred()) {
21517
7
                p->error_indicator = 1;
21518
7
                p->level--;
21519
7
                return NULL;
21520
7
            }
21521
0
            goto done;
21522
7
        }
21523
202k
        p->mark = _mark;
21524
202k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21525
202k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'lambda' lambda_params? ':' &TSTRING_MIDDLE"));
21526
202k
    }
21527
0
    _res = NULL;
21528
207k
  done:
21529
207k
    p->level--;
21530
207k
    return _res;
21531
202k
}
21532
21533
// invalid_named_expression:
21534
//     | expression ':=' expression
21535
//     | NAME '=' bitwise_or !('=' | ':=')
21536
//     | !(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')
21537
static void *
21538
invalid_named_expression_rule(Parser *p)
21539
275k
{
21540
275k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21541
0
        _Pypegen_stack_overflow(p);
21542
0
    }
21543
275k
    if (p->error_indicator) {
21544
0
        p->level--;
21545
0
        return NULL;
21546
0
    }
21547
275k
    void * _res = NULL;
21548
275k
    if (_PyPegen_is_memoized(p, invalid_named_expression_type, &_res)) {
21549
168k
        p->level--;
21550
168k
        return _res;
21551
168k
    }
21552
107k
    int _mark = p->mark;
21553
107k
    { // expression ':=' expression
21554
107k
        if (p->error_indicator) {
21555
0
            p->level--;
21556
0
            return NULL;
21557
0
        }
21558
107k
        D(fprintf(stderr, "%*c> invalid_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':=' expression"));
21559
107k
        Token * _literal;
21560
107k
        expr_ty a;
21561
107k
        expr_ty expression_var;
21562
107k
        if (
21563
107k
            (a = expression_rule(p))  // expression
21564
107k
            &&
21565
107k
            (_literal = _PyPegen_expect_token(p, 53))  // token=':='
21566
107k
            &&
21567
107k
            (expression_var = expression_rule(p))  // expression
21568
107k
        )
21569
3
        {
21570
3
            D(fprintf(stderr, "%*c+ invalid_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':=' expression"));
21571
3
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use assignment expressions with %s" , _PyPegen_get_expr_name ( a ) );
21572
3
            if (_res == NULL && PyErr_Occurred()) {
21573
3
                p->error_indicator = 1;
21574
3
                p->level--;
21575
3
                return NULL;
21576
3
            }
21577
0
            goto done;
21578
3
        }
21579
107k
        p->mark = _mark;
21580
107k
        D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
21581
107k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':=' expression"));
21582
107k
    }
21583
0
    { // NAME '=' bitwise_or !('=' | ':=')
21584
107k
        if (p->error_indicator) {
21585
16.2k
            p->level--;
21586
16.2k
            return NULL;
21587
16.2k
        }
21588
91.0k
        D(fprintf(stderr, "%*c> invalid_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
21589
91.0k
        Token * _literal;
21590
91.0k
        expr_ty a;
21591
91.0k
        expr_ty b;
21592
91.0k
        if (
21593
91.0k
            (a = _PyPegen_name_token(p))  // NAME
21594
91.0k
            &&
21595
91.0k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
21596
91.0k
            &&
21597
91.0k
            (b = bitwise_or_rule(p))  // bitwise_or
21598
91.0k
            &&
21599
91.0k
            _PyPegen_lookahead(0, _tmp_116_rule, p)
21600
91.0k
        )
21601
12
        {
21602
12
            D(fprintf(stderr, "%*c+ invalid_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
21603
12
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "invalid syntax. Maybe you meant '==' or ':=' instead of '='?" );
21604
12
            if (_res == NULL && PyErr_Occurred()) {
21605
12
                p->error_indicator = 1;
21606
12
                p->level--;
21607
12
                return NULL;
21608
12
            }
21609
0
            goto done;
21610
12
        }
21611
91.0k
        p->mark = _mark;
21612
91.0k
        D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
21613
91.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
21614
91.0k
    }
21615
0
    { // !(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')
21616
91.0k
        if (p->error_indicator) {
21617
303
            p->level--;
21618
303
            return NULL;
21619
303
        }
21620
90.7k
        D(fprintf(stderr, "%*c> invalid_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')"));
21621
90.7k
        expr_ty a;
21622
90.7k
        Token * b;
21623
90.7k
        expr_ty bitwise_or_var;
21624
90.7k
        if (
21625
90.7k
            _PyPegen_lookahead(0, _tmp_117_rule, p)
21626
90.7k
            &&
21627
90.7k
            (a = bitwise_or_rule(p))  // bitwise_or
21628
90.7k
            &&
21629
90.7k
            (b = _PyPegen_expect_token(p, 22))  // token='='
21630
90.7k
            &&
21631
90.7k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
21632
90.7k
            &&
21633
90.7k
            _PyPegen_lookahead(0, _tmp_116_rule, p)
21634
90.7k
        )
21635
16
        {
21636
16
            D(fprintf(stderr, "%*c+ invalid_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')"));
21637
16
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot assign to %s here. Maybe you meant '==' instead of '='?" , _PyPegen_get_expr_name ( a ) );
21638
16
            if (_res == NULL && PyErr_Occurred()) {
21639
16
                p->error_indicator = 1;
21640
16
                p->level--;
21641
16
                return NULL;
21642
16
            }
21643
0
            goto done;
21644
16
        }
21645
90.7k
        p->mark = _mark;
21646
90.7k
        D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
21647
90.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')"));
21648
90.7k
    }
21649
0
    _res = NULL;
21650
90.7k
  done:
21651
90.7k
    _PyPegen_insert_memo(p, _mark, invalid_named_expression_type, _res);
21652
90.7k
    p->level--;
21653
90.7k
    return _res;
21654
90.7k
}
21655
21656
// invalid_assignment:
21657
//     | invalid_ann_assign_target ':' expression
21658
//     | star_named_expression ',' star_named_expressions* ':' expression
21659
//     | expression ':' expression
21660
//     | ((star_targets '='))* star_expressions '='
21661
//     | ((star_targets '='))* yield_expr '='
21662
//     | star_expressions augassign annotated_rhs
21663
static void *
21664
invalid_assignment_rule(Parser *p)
21665
40.5k
{
21666
40.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21667
0
        _Pypegen_stack_overflow(p);
21668
0
    }
21669
40.5k
    if (p->error_indicator) {
21670
0
        p->level--;
21671
0
        return NULL;
21672
0
    }
21673
40.5k
    void * _res = NULL;
21674
40.5k
    int _mark = p->mark;
21675
40.5k
    { // invalid_ann_assign_target ':' expression
21676
40.5k
        if (p->error_indicator) {
21677
0
            p->level--;
21678
0
            return NULL;
21679
0
        }
21680
40.5k
        D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_ann_assign_target ':' expression"));
21681
40.5k
        Token * _literal;
21682
40.5k
        expr_ty a;
21683
40.5k
        expr_ty expression_var;
21684
40.5k
        if (
21685
40.5k
            (a = invalid_ann_assign_target_rule(p))  // invalid_ann_assign_target
21686
40.5k
            &&
21687
40.5k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21688
40.5k
            &&
21689
40.5k
            (expression_var = expression_rule(p))  // expression
21690
40.5k
        )
21691
4
        {
21692
4
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_ann_assign_target ':' expression"));
21693
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not %s) can be annotated" , _PyPegen_get_expr_name ( a ) );
21694
4
            if (_res == NULL && PyErr_Occurred()) {
21695
4
                p->error_indicator = 1;
21696
4
                p->level--;
21697
4
                return NULL;
21698
4
            }
21699
0
            goto done;
21700
4
        }
21701
40.5k
        p->mark = _mark;
21702
40.5k
        D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
21703
40.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_ann_assign_target ':' expression"));
21704
40.5k
    }
21705
0
    { // star_named_expression ',' star_named_expressions* ':' expression
21706
40.5k
        if (p->error_indicator) {
21707
36
            p->level--;
21708
36
            return NULL;
21709
36
        }
21710
40.5k
        D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression"));
21711
40.5k
        Token * _literal;
21712
40.5k
        Token * _literal_1;
21713
40.5k
        asdl_seq * _loop0_118_var;
21714
40.5k
        expr_ty a;
21715
40.5k
        expr_ty expression_var;
21716
40.5k
        if (
21717
40.5k
            (a = star_named_expression_rule(p))  // star_named_expression
21718
40.5k
            &&
21719
40.5k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
21720
40.5k
            &&
21721
40.5k
            (_loop0_118_var = _loop0_118_rule(p))  // star_named_expressions*
21722
40.5k
            &&
21723
40.5k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
21724
40.5k
            &&
21725
40.5k
            (expression_var = expression_rule(p))  // expression
21726
40.5k
        )
21727
10
        {
21728
10
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression"));
21729
10
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
21730
10
            if (_res == NULL && PyErr_Occurred()) {
21731
10
                p->error_indicator = 1;
21732
10
                p->level--;
21733
10
                return NULL;
21734
10
            }
21735
0
            goto done;
21736
10
        }
21737
40.5k
        p->mark = _mark;
21738
40.5k
        D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
21739
40.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression"));
21740
40.5k
    }
21741
0
    { // expression ':' expression
21742
40.5k
        if (p->error_indicator) {
21743
826
            p->level--;
21744
826
            return NULL;
21745
826
        }
21746
39.7k
        D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
21747
39.7k
        Token * _literal;
21748
39.7k
        expr_ty a;
21749
39.7k
        expr_ty expression_var;
21750
39.7k
        if (
21751
39.7k
            (a = expression_rule(p))  // expression
21752
39.7k
            &&
21753
39.7k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21754
39.7k
            &&
21755
39.7k
            (expression_var = expression_rule(p))  // expression
21756
39.7k
        )
21757
33
        {
21758
33
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
21759
33
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "illegal target for annotation" );
21760
33
            if (_res == NULL && PyErr_Occurred()) {
21761
33
                p->error_indicator = 1;
21762
33
                p->level--;
21763
33
                return NULL;
21764
33
            }
21765
0
            goto done;
21766
33
        }
21767
39.6k
        p->mark = _mark;
21768
39.6k
        D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
21769
39.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' expression"));
21770
39.6k
    }
21771
0
    { // ((star_targets '='))* star_expressions '='
21772
39.6k
        if (p->error_indicator) {
21773
179
            p->level--;
21774
179
            return NULL;
21775
179
        }
21776
39.5k
        D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* star_expressions '='"));
21777
39.5k
        Token * _literal;
21778
39.5k
        asdl_seq * _loop0_119_var;
21779
39.5k
        expr_ty a;
21780
39.5k
        if (
21781
39.5k
            (_loop0_119_var = _loop0_119_rule(p))  // ((star_targets '='))*
21782
39.5k
            &&
21783
39.5k
            (a = star_expressions_rule(p))  // star_expressions
21784
39.5k
            &&
21785
39.5k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
21786
39.5k
        )
21787
127
        {
21788
127
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* star_expressions '='"));
21789
127
            _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( STAR_TARGETS , a );
21790
127
            if (_res == NULL && PyErr_Occurred()) {
21791
127
                p->error_indicator = 1;
21792
127
                p->level--;
21793
127
                return NULL;
21794
127
            }
21795
0
            goto done;
21796
127
        }
21797
39.3k
        p->mark = _mark;
21798
39.3k
        D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
21799
39.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))* star_expressions '='"));
21800
39.3k
    }
21801
0
    { // ((star_targets '='))* yield_expr '='
21802
39.3k
        if (p->error_indicator) {
21803
0
            p->level--;
21804
0
            return NULL;
21805
0
        }
21806
39.3k
        D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* yield_expr '='"));
21807
39.3k
        Token * _literal;
21808
39.3k
        asdl_seq * _loop0_119_var;
21809
39.3k
        expr_ty a;
21810
39.3k
        if (
21811
39.3k
            (_loop0_119_var = _loop0_119_rule(p))  // ((star_targets '='))*
21812
39.3k
            &&
21813
39.3k
            (a = yield_expr_rule(p))  // yield_expr
21814
39.3k
            &&
21815
39.3k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
21816
39.3k
        )
21817
1
        {
21818
1
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* yield_expr '='"));
21819
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "assignment to yield expression not possible" );
21820
1
            if (_res == NULL && PyErr_Occurred()) {
21821
1
                p->error_indicator = 1;
21822
1
                p->level--;
21823
1
                return NULL;
21824
1
            }
21825
0
            goto done;
21826
1
        }
21827
39.3k
        p->mark = _mark;
21828
39.3k
        D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
21829
39.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))* yield_expr '='"));
21830
39.3k
    }
21831
0
    { // star_expressions augassign annotated_rhs
21832
39.3k
        if (p->error_indicator) {
21833
91
            p->level--;
21834
91
            return NULL;
21835
91
        }
21836
39.2k
        D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions augassign annotated_rhs"));
21837
39.2k
        expr_ty a;
21838
39.2k
        expr_ty annotated_rhs_var;
21839
39.2k
        AugOperator* augassign_var;
21840
39.2k
        if (
21841
39.2k
            (a = star_expressions_rule(p))  // star_expressions
21842
39.2k
            &&
21843
39.2k
            (augassign_var = augassign_rule(p))  // augassign
21844
39.2k
            &&
21845
39.2k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
21846
39.2k
        )
21847
13
        {
21848
13
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions augassign annotated_rhs"));
21849
13
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "'%s' is an illegal expression for augmented assignment" , _PyPegen_get_expr_name ( a ) );
21850
13
            if (_res == NULL && PyErr_Occurred()) {
21851
13
                p->error_indicator = 1;
21852
13
                p->level--;
21853
13
                return NULL;
21854
13
            }
21855
0
            goto done;
21856
13
        }
21857
39.2k
        p->mark = _mark;
21858
39.2k
        D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
21859
39.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions augassign annotated_rhs"));
21860
39.2k
    }
21861
0
    _res = NULL;
21862
39.2k
  done:
21863
39.2k
    p->level--;
21864
39.2k
    return _res;
21865
39.2k
}
21866
21867
// invalid_ann_assign_target: list | tuple | '(' invalid_ann_assign_target ')'
21868
static expr_ty
21869
invalid_ann_assign_target_rule(Parser *p)
21870
42.7k
{
21871
42.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21872
0
        _Pypegen_stack_overflow(p);
21873
0
    }
21874
42.7k
    if (p->error_indicator) {
21875
0
        p->level--;
21876
0
        return NULL;
21877
0
    }
21878
42.7k
    expr_ty _res = NULL;
21879
42.7k
    int _mark = p->mark;
21880
42.7k
    { // list
21881
42.7k
        if (p->error_indicator) {
21882
0
            p->level--;
21883
0
            return NULL;
21884
0
        }
21885
42.7k
        D(fprintf(stderr, "%*c> invalid_ann_assign_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
21886
42.7k
        expr_ty list_var;
21887
42.7k
        if (
21888
42.7k
            (list_var = list_rule(p))  // list
21889
42.7k
        )
21890
101
        {
21891
101
            D(fprintf(stderr, "%*c+ invalid_ann_assign_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
21892
101
            _res = list_var;
21893
101
            goto done;
21894
101
        }
21895
42.6k
        p->mark = _mark;
21896
42.6k
        D(fprintf(stderr, "%*c%s invalid_ann_assign_target[%d-%d]: %s failed!\n", p->level, ' ',
21897
42.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
21898
42.6k
    }
21899
0
    { // tuple
21900
42.6k
        if (p->error_indicator) {
21901
0
            p->level--;
21902
0
            return NULL;
21903
0
        }
21904
42.6k
        D(fprintf(stderr, "%*c> invalid_ann_assign_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
21905
42.6k
        expr_ty tuple_var;
21906
42.6k
        if (
21907
42.6k
            (tuple_var = tuple_rule(p))  // tuple
21908
42.6k
        )
21909
868
        {
21910
868
            D(fprintf(stderr, "%*c+ invalid_ann_assign_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
21911
868
            _res = tuple_var;
21912
868
            goto done;
21913
868
        }
21914
41.7k
        p->mark = _mark;
21915
41.7k
        D(fprintf(stderr, "%*c%s invalid_ann_assign_target[%d-%d]: %s failed!\n", p->level, ' ',
21916
41.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
21917
41.7k
    }
21918
0
    { // '(' invalid_ann_assign_target ')'
21919
41.7k
        if (p->error_indicator) {
21920
0
            p->level--;
21921
0
            return NULL;
21922
0
        }
21923
41.7k
        D(fprintf(stderr, "%*c> invalid_ann_assign_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' invalid_ann_assign_target ')'"));
21924
41.7k
        Token * _literal;
21925
41.7k
        Token * _literal_1;
21926
41.7k
        expr_ty a;
21927
41.7k
        if (
21928
41.7k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
21929
41.7k
            &&
21930
41.7k
            (a = invalid_ann_assign_target_rule(p))  // invalid_ann_assign_target
21931
41.7k
            &&
21932
41.7k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
21933
41.7k
        )
21934
568
        {
21935
568
            D(fprintf(stderr, "%*c+ invalid_ann_assign_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' invalid_ann_assign_target ')'"));
21936
568
            _res = a;
21937
568
            if (_res == NULL && PyErr_Occurred()) {
21938
0
                p->error_indicator = 1;
21939
0
                p->level--;
21940
0
                return NULL;
21941
0
            }
21942
568
            goto done;
21943
568
        }
21944
41.1k
        p->mark = _mark;
21945
41.1k
        D(fprintf(stderr, "%*c%s invalid_ann_assign_target[%d-%d]: %s failed!\n", p->level, ' ',
21946
41.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' invalid_ann_assign_target ')'"));
21947
41.1k
    }
21948
0
    _res = NULL;
21949
42.7k
  done:
21950
42.7k
    p->level--;
21951
42.7k
    return _res;
21952
41.1k
}
21953
21954
// invalid_raise_stmt: 'raise' 'from' | 'raise' expression 'from'
21955
static void *
21956
invalid_raise_stmt_rule(Parser *p)
21957
578
{
21958
578
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21959
0
        _Pypegen_stack_overflow(p);
21960
0
    }
21961
578
    if (p->error_indicator) {
21962
0
        p->level--;
21963
0
        return NULL;
21964
0
    }
21965
578
    void * _res = NULL;
21966
578
    int _mark = p->mark;
21967
578
    { // 'raise' 'from'
21968
578
        if (p->error_indicator) {
21969
0
            p->level--;
21970
0
            return NULL;
21971
0
        }
21972
578
        D(fprintf(stderr, "%*c> invalid_raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' 'from'"));
21973
578
        Token * a;
21974
578
        Token * b;
21975
578
        if (
21976
578
            (a = _PyPegen_expect_token(p, 628))  // token='raise'
21977
578
            &&
21978
578
            (b = _PyPegen_expect_token(p, 638))  // token='from'
21979
578
        )
21980
2
        {
21981
2
            D(fprintf(stderr, "%*c+ invalid_raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' 'from'"));
21982
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "did you forget an expression between 'raise' and 'from'?" );
21983
2
            if (_res == NULL && PyErr_Occurred()) {
21984
2
                p->error_indicator = 1;
21985
2
                p->level--;
21986
2
                return NULL;
21987
2
            }
21988
0
            goto done;
21989
2
        }
21990
576
        p->mark = _mark;
21991
576
        D(fprintf(stderr, "%*c%s invalid_raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
21992
576
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' 'from'"));
21993
576
    }
21994
0
    { // 'raise' expression 'from'
21995
576
        if (p->error_indicator) {
21996
0
            p->level--;
21997
0
            return NULL;
21998
0
        }
21999
576
        D(fprintf(stderr, "%*c> invalid_raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' expression 'from'"));
22000
576
        Token * _keyword;
22001
576
        Token * a;
22002
576
        expr_ty expression_var;
22003
576
        if (
22004
576
            (_keyword = _PyPegen_expect_token(p, 628))  // token='raise'
22005
576
            &&
22006
576
            (expression_var = expression_rule(p))  // expression
22007
576
            &&
22008
576
            (a = _PyPegen_expect_token(p, 638))  // token='from'
22009
576
        )
22010
1
        {
22011
1
            D(fprintf(stderr, "%*c+ invalid_raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' expression 'from'"));
22012
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "did you forget an expression after 'from'?" );
22013
1
            if (_res == NULL && PyErr_Occurred()) {
22014
1
                p->error_indicator = 1;
22015
1
                p->level--;
22016
1
                return NULL;
22017
1
            }
22018
0
            goto done;
22019
1
        }
22020
575
        p->mark = _mark;
22021
575
        D(fprintf(stderr, "%*c%s invalid_raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22022
575
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' expression 'from'"));
22023
575
    }
22024
0
    _res = NULL;
22025
575
  done:
22026
575
    p->level--;
22027
575
    return _res;
22028
575
}
22029
22030
// invalid_del_stmt: 'del' star_expressions
22031
static void *
22032
invalid_del_stmt_rule(Parser *p)
22033
302
{
22034
302
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22035
0
        _Pypegen_stack_overflow(p);
22036
0
    }
22037
302
    if (p->error_indicator) {
22038
0
        p->level--;
22039
0
        return NULL;
22040
0
    }
22041
302
    void * _res = NULL;
22042
302
    int _mark = p->mark;
22043
302
    { // 'del' star_expressions
22044
302
        if (p->error_indicator) {
22045
0
            p->level--;
22046
0
            return NULL;
22047
0
        }
22048
302
        D(fprintf(stderr, "%*c> invalid_del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'del' star_expressions"));
22049
302
        Token * _keyword;
22050
302
        expr_ty a;
22051
302
        if (
22052
302
            (_keyword = _PyPegen_expect_token(p, 630))  // token='del'
22053
302
            &&
22054
302
            (a = star_expressions_rule(p))  // star_expressions
22055
302
        )
22056
145
        {
22057
145
            D(fprintf(stderr, "%*c+ invalid_del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'del' star_expressions"));
22058
145
            _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( DEL_TARGETS , a );
22059
145
            if (_res == NULL && PyErr_Occurred()) {
22060
13
                p->error_indicator = 1;
22061
13
                p->level--;
22062
13
                return NULL;
22063
13
            }
22064
132
            goto done;
22065
145
        }
22066
157
        p->mark = _mark;
22067
157
        D(fprintf(stderr, "%*c%s invalid_del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22068
157
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'del' star_expressions"));
22069
157
    }
22070
0
    _res = NULL;
22071
289
  done:
22072
289
    p->level--;
22073
289
    return _res;
22074
157
}
22075
22076
// invalid_block: NEWLINE !INDENT
22077
static void *
22078
invalid_block_rule(Parser *p)
22079
2.21k
{
22080
2.21k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22081
0
        _Pypegen_stack_overflow(p);
22082
0
    }
22083
2.21k
    if (p->error_indicator) {
22084
0
        p->level--;
22085
0
        return NULL;
22086
0
    }
22087
2.21k
    void * _res = NULL;
22088
2.21k
    int _mark = p->mark;
22089
2.21k
    { // NEWLINE !INDENT
22090
2.21k
        if (p->error_indicator) {
22091
0
            p->level--;
22092
0
            return NULL;
22093
0
        }
22094
2.21k
        D(fprintf(stderr, "%*c> invalid_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE !INDENT"));
22095
2.21k
        Token * newline_var;
22096
2.21k
        if (
22097
2.21k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
22098
2.21k
            &&
22099
2.21k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
22100
2.21k
        )
22101
4
        {
22102
4
            D(fprintf(stderr, "%*c+ invalid_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE !INDENT"));
22103
4
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block" );
22104
4
            if (_res == NULL && PyErr_Occurred()) {
22105
4
                p->error_indicator = 1;
22106
4
                p->level--;
22107
4
                return NULL;
22108
4
            }
22109
0
            goto done;
22110
4
        }
22111
2.20k
        p->mark = _mark;
22112
2.20k
        D(fprintf(stderr, "%*c%s invalid_block[%d-%d]: %s failed!\n", p->level, ' ',
22113
2.20k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE !INDENT"));
22114
2.20k
    }
22115
0
    _res = NULL;
22116
2.20k
  done:
22117
2.20k
    p->level--;
22118
2.20k
    return _res;
22119
2.20k
}
22120
22121
// invalid_comprehension:
22122
//     | ('[' | '(' | '{') starred_expression for_if_clauses
22123
//     | ('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses
22124
//     | ('[' | '{') star_named_expression ',' for_if_clauses
22125
static void *
22126
invalid_comprehension_rule(Parser *p)
22127
235k
{
22128
235k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22129
1
        _Pypegen_stack_overflow(p);
22130
1
    }
22131
235k
    if (p->error_indicator) {
22132
1
        p->level--;
22133
1
        return NULL;
22134
1
    }
22135
235k
    void * _res = NULL;
22136
235k
    int _mark = p->mark;
22137
235k
    { // ('[' | '(' | '{') starred_expression for_if_clauses
22138
235k
        if (p->error_indicator) {
22139
0
            p->level--;
22140
0
            return NULL;
22141
0
        }
22142
235k
        D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
22143
235k
        void *_tmp_120_var;
22144
235k
        expr_ty a;
22145
235k
        asdl_comprehension_seq* for_if_clauses_var;
22146
235k
        if (
22147
235k
            (_tmp_120_var = _tmp_120_rule(p))  // '[' | '(' | '{'
22148
235k
            &&
22149
235k
            (a = starred_expression_rule(p))  // starred_expression
22150
235k
            &&
22151
235k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
22152
235k
        )
22153
1
        {
22154
1
            D(fprintf(stderr, "%*c+ invalid_comprehension[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
22155
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "iterable unpacking cannot be used in comprehension" );
22156
1
            if (_res == NULL && PyErr_Occurred()) {
22157
1
                p->error_indicator = 1;
22158
1
                p->level--;
22159
1
                return NULL;
22160
1
            }
22161
0
            goto done;
22162
1
        }
22163
235k
        p->mark = _mark;
22164
235k
        D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
22165
235k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
22166
235k
    }
22167
0
    { // ('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses
22168
235k
        if (p->error_indicator) {
22169
684
            p->level--;
22170
684
            return NULL;
22171
684
        }
22172
234k
        D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses"));
22173
234k
        Token * _literal;
22174
234k
        void *_tmp_121_var;
22175
234k
        expr_ty a;
22176
234k
        asdl_expr_seq* b;
22177
234k
        asdl_comprehension_seq* for_if_clauses_var;
22178
234k
        if (
22179
234k
            (_tmp_121_var = _tmp_121_rule(p))  // '[' | '{'
22180
234k
            &&
22181
234k
            (a = star_named_expression_rule(p))  // star_named_expression
22182
234k
            &&
22183
234k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
22184
234k
            &&
22185
234k
            (b = star_named_expressions_rule(p))  // star_named_expressions
22186
234k
            &&
22187
234k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
22188
234k
        )
22189
1
        {
22190
1
            D(fprintf(stderr, "%*c+ invalid_comprehension[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses"));
22191
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , PyPegen_last_item ( b , expr_ty ) , "did you forget parentheses around the comprehension target?" );
22192
1
            if (_res == NULL && PyErr_Occurred()) {
22193
1
                p->error_indicator = 1;
22194
1
                p->level--;
22195
1
                return NULL;
22196
1
            }
22197
0
            goto done;
22198
1
        }
22199
234k
        p->mark = _mark;
22200
234k
        D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
22201
234k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses"));
22202
234k
    }
22203
0
    { // ('[' | '{') star_named_expression ',' for_if_clauses
22204
234k
        if (p->error_indicator) {
22205
1.69k
            p->level--;
22206
1.69k
            return NULL;
22207
1.69k
        }
22208
232k
        D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses"));
22209
232k
        void *_tmp_121_var;
22210
232k
        expr_ty a;
22211
232k
        Token * b;
22212
232k
        asdl_comprehension_seq* for_if_clauses_var;
22213
232k
        if (
22214
232k
            (_tmp_121_var = _tmp_121_rule(p))  // '[' | '{'
22215
232k
            &&
22216
232k
            (a = star_named_expression_rule(p))  // star_named_expression
22217
232k
            &&
22218
232k
            (b = _PyPegen_expect_token(p, 12))  // token=','
22219
232k
            &&
22220
232k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
22221
232k
        )
22222
1
        {
22223
1
            D(fprintf(stderr, "%*c+ invalid_comprehension[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses"));
22224
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "did you forget parentheses around the comprehension target?" );
22225
1
            if (_res == NULL && PyErr_Occurred()) {
22226
1
                p->error_indicator = 1;
22227
1
                p->level--;
22228
1
                return NULL;
22229
1
            }
22230
0
            goto done;
22231
1
        }
22232
232k
        p->mark = _mark;
22233
232k
        D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
22234
232k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses"));
22235
232k
    }
22236
0
    _res = NULL;
22237
232k
  done:
22238
232k
    p->level--;
22239
232k
    return _res;
22240
232k
}
22241
22242
// invalid_dict_comprehension: '{' '**' bitwise_or for_if_clauses '}'
22243
static void *
22244
invalid_dict_comprehension_rule(Parser *p)
22245
3.10k
{
22246
3.10k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22247
0
        _Pypegen_stack_overflow(p);
22248
0
    }
22249
3.10k
    if (p->error_indicator) {
22250
0
        p->level--;
22251
0
        return NULL;
22252
0
    }
22253
3.10k
    void * _res = NULL;
22254
3.10k
    int _mark = p->mark;
22255
3.10k
    { // '{' '**' bitwise_or for_if_clauses '}'
22256
3.10k
        if (p->error_indicator) {
22257
0
            p->level--;
22258
0
            return NULL;
22259
0
        }
22260
3.10k
        D(fprintf(stderr, "%*c> invalid_dict_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
22261
3.10k
        Token * _literal;
22262
3.10k
        Token * _literal_1;
22263
3.10k
        Token * a;
22264
3.10k
        expr_ty bitwise_or_var;
22265
3.10k
        asdl_comprehension_seq* for_if_clauses_var;
22266
3.10k
        if (
22267
3.10k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
22268
3.10k
            &&
22269
3.10k
            (a = _PyPegen_expect_token(p, 35))  // token='**'
22270
3.10k
            &&
22271
3.10k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
22272
3.10k
            &&
22273
3.10k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
22274
3.10k
            &&
22275
3.10k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
22276
3.10k
        )
22277
1
        {
22278
1
            D(fprintf(stderr, "%*c+ invalid_dict_comprehension[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
22279
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "dict unpacking cannot be used in dict comprehension" );
22280
1
            if (_res == NULL && PyErr_Occurred()) {
22281
1
                p->error_indicator = 1;
22282
1
                p->level--;
22283
1
                return NULL;
22284
1
            }
22285
0
            goto done;
22286
1
        }
22287
3.10k
        p->mark = _mark;
22288
3.10k
        D(fprintf(stderr, "%*c%s invalid_dict_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
22289
3.10k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
22290
3.10k
    }
22291
0
    _res = NULL;
22292
3.10k
  done:
22293
3.10k
    p->level--;
22294
3.10k
    return _res;
22295
3.10k
}
22296
22297
// invalid_parameters:
22298
//     | "/" ','
22299
//     | (slash_no_default | slash_with_default) param_maybe_default* '/'
22300
//     | slash_no_default? param_no_default* invalid_parameters_helper param_no_default
22301
//     | param_no_default* '(' param_no_default+ ','? ')'
22302
//     | [(slash_no_default | slash_with_default)] param_maybe_default* '*' (',' | param_no_default) param_maybe_default* '/'
22303
//     | param_maybe_default+ '/' '*'
22304
static void *
22305
invalid_parameters_rule(Parser *p)
22306
4.86k
{
22307
4.86k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22308
0
        _Pypegen_stack_overflow(p);
22309
0
    }
22310
4.86k
    if (p->error_indicator) {
22311
0
        p->level--;
22312
0
        return NULL;
22313
0
    }
22314
4.86k
    void * _res = NULL;
22315
4.86k
    int _mark = p->mark;
22316
4.86k
    { // "/" ','
22317
4.86k
        if (p->error_indicator) {
22318
0
            p->level--;
22319
0
            return NULL;
22320
0
        }
22321
4.86k
        D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"/\" ','"));
22322
4.86k
        Token * _literal;
22323
4.86k
        Token * a;
22324
4.86k
        if (
22325
4.86k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
22326
4.86k
            &&
22327
4.86k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
22328
4.86k
        )
22329
1
        {
22330
1
            D(fprintf(stderr, "%*c+ invalid_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"/\" ','"));
22331
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "at least one parameter must precede /" );
22332
1
            if (_res == NULL && PyErr_Occurred()) {
22333
1
                p->error_indicator = 1;
22334
1
                p->level--;
22335
1
                return NULL;
22336
1
            }
22337
0
            goto done;
22338
1
        }
22339
4.86k
        p->mark = _mark;
22340
4.86k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22341
4.86k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"/\" ','"));
22342
4.86k
    }
22343
0
    { // (slash_no_default | slash_with_default) param_maybe_default* '/'
22344
4.86k
        if (p->error_indicator) {
22345
1
            p->level--;
22346
1
            return NULL;
22347
1
        }
22348
4.86k
        D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(slash_no_default | slash_with_default) param_maybe_default* '/'"));
22349
4.86k
        asdl_seq * _loop0_31_var;
22350
4.86k
        void *_tmp_122_var;
22351
4.86k
        Token * a;
22352
4.86k
        if (
22353
4.86k
            (_tmp_122_var = _tmp_122_rule(p))  // slash_no_default | slash_with_default
22354
4.86k
            &&
22355
4.86k
            (_loop0_31_var = _loop0_31_rule(p))  // param_maybe_default*
22356
4.86k
            &&
22357
4.86k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
22358
4.86k
        )
22359
2
        {
22360
2
            D(fprintf(stderr, "%*c+ invalid_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(slash_no_default | slash_with_default) param_maybe_default* '/'"));
22361
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "/ may appear only once" );
22362
2
            if (_res == NULL && PyErr_Occurred()) {
22363
2
                p->error_indicator = 1;
22364
2
                p->level--;
22365
2
                return NULL;
22366
2
            }
22367
0
            goto done;
22368
2
        }
22369
4.86k
        p->mark = _mark;
22370
4.86k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22371
4.86k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(slash_no_default | slash_with_default) param_maybe_default* '/'"));
22372
4.86k
    }
22373
0
    { // slash_no_default? param_no_default* invalid_parameters_helper param_no_default
22374
4.86k
        if (p->error_indicator) {
22375
7
            p->level--;
22376
7
            return NULL;
22377
7
        }
22378
4.85k
        D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_no_default? param_no_default* invalid_parameters_helper param_no_default"));
22379
4.85k
        asdl_seq * _loop0_27_var;
22380
4.85k
        void *_opt_var;
22381
4.85k
        UNUSED(_opt_var); // Silence compiler warnings
22382
4.85k
        arg_ty a;
22383
4.85k
        void *invalid_parameters_helper_var;
22384
4.85k
        if (
22385
4.85k
            (_opt_var = slash_no_default_rule(p), !p->error_indicator)  // slash_no_default?
22386
4.85k
            &&
22387
4.85k
            (_loop0_27_var = _loop0_27_rule(p))  // param_no_default*
22388
4.85k
            &&
22389
4.85k
            (invalid_parameters_helper_var = invalid_parameters_helper_rule(p))  // invalid_parameters_helper
22390
4.85k
            &&
22391
4.85k
            (a = param_no_default_rule(p))  // param_no_default
22392
4.85k
        )
22393
4
        {
22394
4
            D(fprintf(stderr, "%*c+ invalid_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_no_default? param_no_default* invalid_parameters_helper param_no_default"));
22395
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "parameter without a default follows parameter with a default" );
22396
4
            if (_res == NULL && PyErr_Occurred()) {
22397
4
                p->error_indicator = 1;
22398
4
                p->level--;
22399
4
                return NULL;
22400
4
            }
22401
0
            goto done;
22402
4
        }
22403
4.85k
        p->mark = _mark;
22404
4.85k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22405
4.85k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_no_default? param_no_default* invalid_parameters_helper param_no_default"));
22406
4.85k
    }
22407
0
    { // param_no_default* '(' param_no_default+ ','? ')'
22408
4.85k
        if (p->error_indicator) {
22409
1
            p->level--;
22410
1
            return NULL;
22411
1
        }
22412
4.85k
        D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* '(' param_no_default+ ','? ')'"));
22413
4.85k
        asdl_seq * _loop0_27_var;
22414
4.85k
        asdl_seq * _loop1_29_var;
22415
4.85k
        void *_opt_var;
22416
4.85k
        UNUSED(_opt_var); // Silence compiler warnings
22417
4.85k
        Token * a;
22418
4.85k
        Token * b;
22419
4.85k
        if (
22420
4.85k
            (_loop0_27_var = _loop0_27_rule(p))  // param_no_default*
22421
4.85k
            &&
22422
4.85k
            (a = _PyPegen_expect_token(p, 7))  // token='('
22423
4.85k
            &&
22424
4.85k
            (_loop1_29_var = _loop1_29_rule(p))  // param_no_default+
22425
4.85k
            &&
22426
4.85k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
22427
4.85k
            &&
22428
4.85k
            (b = _PyPegen_expect_token(p, 8))  // token=')'
22429
4.85k
        )
22430
1
        {
22431
1
            D(fprintf(stderr, "%*c+ invalid_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* '(' param_no_default+ ','? ')'"));
22432
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "Function parameters cannot be parenthesized" );
22433
1
            if (_res == NULL && PyErr_Occurred()) {
22434
1
                p->error_indicator = 1;
22435
1
                p->level--;
22436
1
                return NULL;
22437
1
            }
22438
0
            goto done;
22439
1
        }
22440
4.85k
        p->mark = _mark;
22441
4.85k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22442
4.85k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* '(' param_no_default+ ','? ')'"));
22443
4.85k
    }
22444
0
    { // [(slash_no_default | slash_with_default)] param_maybe_default* '*' (',' | param_no_default) param_maybe_default* '/'
22445
4.85k
        if (p->error_indicator) {
22446
4
            p->level--;
22447
4
            return NULL;
22448
4
        }
22449
4.84k
        D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "[(slash_no_default | slash_with_default)] param_maybe_default* '*' (',' | param_no_default) param_maybe_default* '/'"));
22450
4.84k
        Token * _literal;
22451
4.84k
        asdl_seq * _loop0_31_var;
22452
4.84k
        asdl_seq * _loop0_31_var_1;
22453
4.84k
        void *_opt_var;
22454
4.84k
        UNUSED(_opt_var); // Silence compiler warnings
22455
4.84k
        void *_tmp_123_var;
22456
4.84k
        Token * a;
22457
4.84k
        if (
22458
4.84k
            (_opt_var = _tmp_122_rule(p), !p->error_indicator)  // [(slash_no_default | slash_with_default)]
22459
4.84k
            &&
22460
4.84k
            (_loop0_31_var = _loop0_31_rule(p))  // param_maybe_default*
22461
4.84k
            &&
22462
4.84k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
22463
4.84k
            &&
22464
4.84k
            (_tmp_123_var = _tmp_123_rule(p))  // ',' | param_no_default
22465
4.84k
            &&
22466
4.84k
            (_loop0_31_var_1 = _loop0_31_rule(p))  // param_maybe_default*
22467
4.84k
            &&
22468
4.84k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
22469
4.84k
        )
22470
1
        {
22471
1
            D(fprintf(stderr, "%*c+ invalid_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "[(slash_no_default | slash_with_default)] param_maybe_default* '*' (',' | param_no_default) param_maybe_default* '/'"));
22472
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "/ must be ahead of *" );
22473
1
            if (_res == NULL && PyErr_Occurred()) {
22474
1
                p->error_indicator = 1;
22475
1
                p->level--;
22476
1
                return NULL;
22477
1
            }
22478
0
            goto done;
22479
1
        }
22480
4.84k
        p->mark = _mark;
22481
4.84k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22482
4.84k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "[(slash_no_default | slash_with_default)] param_maybe_default* '*' (',' | param_no_default) param_maybe_default* '/'"));
22483
4.84k
    }
22484
0
    { // param_maybe_default+ '/' '*'
22485
4.84k
        if (p->error_indicator) {
22486
4
            p->level--;
22487
4
            return NULL;
22488
4
        }
22489
4.84k
        D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default+ '/' '*'"));
22490
4.84k
        Token * _literal;
22491
4.84k
        asdl_seq * _loop1_32_var;
22492
4.84k
        Token * a;
22493
4.84k
        if (
22494
4.84k
            (_loop1_32_var = _loop1_32_rule(p))  // param_maybe_default+
22495
4.84k
            &&
22496
4.84k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
22497
4.84k
            &&
22498
4.84k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
22499
4.84k
        )
22500
2
        {
22501
2
            D(fprintf(stderr, "%*c+ invalid_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_maybe_default+ '/' '*'"));
22502
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expected comma between / and *" );
22503
2
            if (_res == NULL && PyErr_Occurred()) {
22504
2
                p->error_indicator = 1;
22505
2
                p->level--;
22506
2
                return NULL;
22507
2
            }
22508
0
            goto done;
22509
2
        }
22510
4.84k
        p->mark = _mark;
22511
4.84k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22512
4.84k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default+ '/' '*'"));
22513
4.84k
    }
22514
0
    _res = NULL;
22515
4.84k
  done:
22516
4.84k
    p->level--;
22517
4.84k
    return _res;
22518
4.84k
}
22519
22520
// invalid_default: '=' &(')' | ',')
22521
static void *
22522
invalid_default_rule(Parser *p)
22523
69.7k
{
22524
69.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22525
0
        _Pypegen_stack_overflow(p);
22526
0
    }
22527
69.7k
    if (p->error_indicator) {
22528
0
        p->level--;
22529
0
        return NULL;
22530
0
    }
22531
69.7k
    void * _res = NULL;
22532
69.7k
    int _mark = p->mark;
22533
69.7k
    { // '=' &(')' | ',')
22534
69.7k
        if (p->error_indicator) {
22535
0
            p->level--;
22536
0
            return NULL;
22537
0
        }
22538
69.7k
        D(fprintf(stderr, "%*c> invalid_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' &(')' | ',')"));
22539
69.7k
        Token * a;
22540
69.7k
        if (
22541
69.7k
            (a = _PyPegen_expect_token(p, 22))  // token='='
22542
69.7k
            &&
22543
69.7k
            _PyPegen_lookahead(1, _tmp_124_rule, p)
22544
69.7k
        )
22545
15
        {
22546
15
            D(fprintf(stderr, "%*c+ invalid_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' &(')' | ',')"));
22547
15
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expected default value expression" );
22548
15
            if (_res == NULL && PyErr_Occurred()) {
22549
15
                p->error_indicator = 1;
22550
15
                p->level--;
22551
15
                return NULL;
22552
15
            }
22553
0
            goto done;
22554
15
        }
22555
69.6k
        p->mark = _mark;
22556
69.6k
        D(fprintf(stderr, "%*c%s invalid_default[%d-%d]: %s failed!\n", p->level, ' ',
22557
69.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' &(')' | ',')"));
22558
69.6k
    }
22559
0
    _res = NULL;
22560
69.6k
  done:
22561
69.6k
    p->level--;
22562
69.6k
    return _res;
22563
69.6k
}
22564
22565
// invalid_star_etc:
22566
//     | '*' (')' | ',' (')' | '**'))
22567
//     | '*' ',' TYPE_COMMENT
22568
//     | '*' param '='
22569
//     | '*' (param_no_default | ',') param_maybe_default* '*' (param_no_default | ',')
22570
static void *
22571
invalid_star_etc_rule(Parser *p)
22572
4.84k
{
22573
4.84k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22574
0
        _Pypegen_stack_overflow(p);
22575
0
    }
22576
4.84k
    if (p->error_indicator) {
22577
0
        p->level--;
22578
0
        return NULL;
22579
0
    }
22580
4.84k
    void * _res = NULL;
22581
4.84k
    int _mark = p->mark;
22582
4.84k
    { // '*' (')' | ',' (')' | '**'))
22583
4.84k
        if (p->error_indicator) {
22584
0
            p->level--;
22585
0
            return NULL;
22586
0
        }
22587
4.84k
        D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
22588
4.84k
        void *_tmp_125_var;
22589
4.84k
        Token * a;
22590
4.84k
        if (
22591
4.84k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
22592
4.84k
            &&
22593
4.84k
            (_tmp_125_var = _tmp_125_rule(p))  // ')' | ',' (')' | '**')
22594
4.84k
        )
22595
3
        {
22596
3
            D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
22597
3
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "named parameters must follow bare *" );
22598
3
            if (_res == NULL && PyErr_Occurred()) {
22599
3
                p->error_indicator = 1;
22600
3
                p->level--;
22601
3
                return NULL;
22602
3
            }
22603
0
            goto done;
22604
3
        }
22605
4.83k
        p->mark = _mark;
22606
4.83k
        D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
22607
4.83k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
22608
4.83k
    }
22609
0
    { // '*' ',' TYPE_COMMENT
22610
4.83k
        if (p->error_indicator) {
22611
0
            p->level--;
22612
0
            return NULL;
22613
0
        }
22614
4.83k
        D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' TYPE_COMMENT"));
22615
4.83k
        Token * _literal;
22616
4.83k
        Token * _literal_1;
22617
4.83k
        Token * type_comment_var;
22618
4.83k
        if (
22619
4.83k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
22620
4.83k
            &&
22621
4.83k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
22622
4.83k
            &&
22623
4.83k
            (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
22624
4.83k
        )
22625
0
        {
22626
0
            D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' TYPE_COMMENT"));
22627
0
            _res = RAISE_SYNTAX_ERROR ( "bare * has associated type comment" );
22628
0
            if (_res == NULL && PyErr_Occurred()) {
22629
0
                p->error_indicator = 1;
22630
0
                p->level--;
22631
0
                return NULL;
22632
0
            }
22633
0
            goto done;
22634
0
        }
22635
4.83k
        p->mark = _mark;
22636
4.83k
        D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
22637
4.83k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' TYPE_COMMENT"));
22638
4.83k
    }
22639
0
    { // '*' param '='
22640
4.83k
        if (p->error_indicator) {
22641
0
            p->level--;
22642
0
            return NULL;
22643
0
        }
22644
4.83k
        D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' param '='"));
22645
4.83k
        Token * _literal;
22646
4.83k
        Token * a;
22647
4.83k
        arg_ty param_var;
22648
4.83k
        if (
22649
4.83k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
22650
4.83k
            &&
22651
4.83k
            (param_var = param_rule(p))  // param
22652
4.83k
            &&
22653
4.83k
            (a = _PyPegen_expect_token(p, 22))  // token='='
22654
4.83k
        )
22655
1
        {
22656
1
            D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' param '='"));
22657
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "var-positional parameter cannot have default value" );
22658
1
            if (_res == NULL && PyErr_Occurred()) {
22659
1
                p->error_indicator = 1;
22660
1
                p->level--;
22661
1
                return NULL;
22662
1
            }
22663
0
            goto done;
22664
1
        }
22665
4.83k
        p->mark = _mark;
22666
4.83k
        D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
22667
4.83k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' param '='"));
22668
4.83k
    }
22669
0
    { // '*' (param_no_default | ',') param_maybe_default* '*' (param_no_default | ',')
22670
4.83k
        if (p->error_indicator) {
22671
0
            p->level--;
22672
0
            return NULL;
22673
0
        }
22674
4.83k
        D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (param_no_default | ',') param_maybe_default* '*' (param_no_default | ',')"));
22675
4.83k
        Token * _literal;
22676
4.83k
        asdl_seq * _loop0_31_var;
22677
4.83k
        void *_tmp_126_var;
22678
4.83k
        void *_tmp_126_var_1;
22679
4.83k
        Token * a;
22680
4.83k
        if (
22681
4.83k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
22682
4.83k
            &&
22683
4.83k
            (_tmp_126_var = _tmp_126_rule(p))  // param_no_default | ','
22684
4.83k
            &&
22685
4.83k
            (_loop0_31_var = _loop0_31_rule(p))  // param_maybe_default*
22686
4.83k
            &&
22687
4.83k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
22688
4.83k
            &&
22689
4.83k
            (_tmp_126_var_1 = _tmp_126_rule(p))  // param_no_default | ','
22690
4.83k
        )
22691
2
        {
22692
2
            D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (param_no_default | ',') param_maybe_default* '*' (param_no_default | ',')"));
22693
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "* may appear only once" );
22694
2
            if (_res == NULL && PyErr_Occurred()) {
22695
2
                p->error_indicator = 1;
22696
2
                p->level--;
22697
2
                return NULL;
22698
2
            }
22699
0
            goto done;
22700
2
        }
22701
4.83k
        p->mark = _mark;
22702
4.83k
        D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
22703
4.83k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (param_no_default | ',') param_maybe_default* '*' (param_no_default | ',')"));
22704
4.83k
    }
22705
0
    _res = NULL;
22706
4.83k
  done:
22707
4.83k
    p->level--;
22708
4.83k
    return _res;
22709
4.83k
}
22710
22711
// invalid_kwds: '**' param '=' | '**' param ',' param | '**' param ',' ('*' | '**' | '/')
22712
static void *
22713
invalid_kwds_rule(Parser *p)
22714
4.83k
{
22715
4.83k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22716
0
        _Pypegen_stack_overflow(p);
22717
0
    }
22718
4.83k
    if (p->error_indicator) {
22719
0
        p->level--;
22720
0
        return NULL;
22721
0
    }
22722
4.83k
    void * _res = NULL;
22723
4.83k
    int _mark = p->mark;
22724
4.83k
    { // '**' param '='
22725
4.83k
        if (p->error_indicator) {
22726
0
            p->level--;
22727
0
            return NULL;
22728
0
        }
22729
4.83k
        D(fprintf(stderr, "%*c> invalid_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param '='"));
22730
4.83k
        Token * _literal;
22731
4.83k
        Token * a;
22732
4.83k
        arg_ty param_var;
22733
4.83k
        if (
22734
4.83k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
22735
4.83k
            &&
22736
4.83k
            (param_var = param_rule(p))  // param
22737
4.83k
            &&
22738
4.83k
            (a = _PyPegen_expect_token(p, 22))  // token='='
22739
4.83k
        )
22740
1
        {
22741
1
            D(fprintf(stderr, "%*c+ invalid_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' param '='"));
22742
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "var-keyword parameter cannot have default value" );
22743
1
            if (_res == NULL && PyErr_Occurred()) {
22744
1
                p->error_indicator = 1;
22745
1
                p->level--;
22746
1
                return NULL;
22747
1
            }
22748
0
            goto done;
22749
1
        }
22750
4.83k
        p->mark = _mark;
22751
4.83k
        D(fprintf(stderr, "%*c%s invalid_kwds[%d-%d]: %s failed!\n", p->level, ' ',
22752
4.83k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param '='"));
22753
4.83k
    }
22754
0
    { // '**' param ',' param
22755
4.83k
        if (p->error_indicator) {
22756
1
            p->level--;
22757
1
            return NULL;
22758
1
        }
22759
4.83k
        D(fprintf(stderr, "%*c> invalid_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param ',' param"));
22760
4.83k
        Token * _literal;
22761
4.83k
        Token * _literal_1;
22762
4.83k
        arg_ty a;
22763
4.83k
        arg_ty param_var;
22764
4.83k
        if (
22765
4.83k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
22766
4.83k
            &&
22767
4.83k
            (param_var = param_rule(p))  // param
22768
4.83k
            &&
22769
4.83k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
22770
4.83k
            &&
22771
4.83k
            (a = param_rule(p))  // param
22772
4.83k
        )
22773
1
        {
22774
1
            D(fprintf(stderr, "%*c+ invalid_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' param ',' param"));
22775
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "parameters cannot follow var-keyword parameter" );
22776
1
            if (_res == NULL && PyErr_Occurred()) {
22777
1
                p->error_indicator = 1;
22778
1
                p->level--;
22779
1
                return NULL;
22780
1
            }
22781
0
            goto done;
22782
1
        }
22783
4.82k
        p->mark = _mark;
22784
4.82k
        D(fprintf(stderr, "%*c%s invalid_kwds[%d-%d]: %s failed!\n", p->level, ' ',
22785
4.82k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param ',' param"));
22786
4.82k
    }
22787
0
    { // '**' param ',' ('*' | '**' | '/')
22788
4.82k
        if (p->error_indicator) {
22789
1
            p->level--;
22790
1
            return NULL;
22791
1
        }
22792
4.82k
        D(fprintf(stderr, "%*c> invalid_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param ',' ('*' | '**' | '/')"));
22793
4.82k
        Token * _literal;
22794
4.82k
        Token * _literal_1;
22795
4.82k
        Token* a;
22796
4.82k
        arg_ty param_var;
22797
4.82k
        if (
22798
4.82k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
22799
4.82k
            &&
22800
4.82k
            (param_var = param_rule(p))  // param
22801
4.82k
            &&
22802
4.82k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
22803
4.82k
            &&
22804
4.82k
            (a = (Token*)_tmp_127_rule(p))  // '*' | '**' | '/'
22805
4.82k
        )
22806
2
        {
22807
2
            D(fprintf(stderr, "%*c+ invalid_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' param ',' ('*' | '**' | '/')"));
22808
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "parameters cannot follow var-keyword parameter" );
22809
2
            if (_res == NULL && PyErr_Occurred()) {
22810
2
                p->error_indicator = 1;
22811
2
                p->level--;
22812
2
                return NULL;
22813
2
            }
22814
0
            goto done;
22815
2
        }
22816
4.82k
        p->mark = _mark;
22817
4.82k
        D(fprintf(stderr, "%*c%s invalid_kwds[%d-%d]: %s failed!\n", p->level, ' ',
22818
4.82k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param ',' ('*' | '**' | '/')"));
22819
4.82k
    }
22820
0
    _res = NULL;
22821
4.82k
  done:
22822
4.82k
    p->level--;
22823
4.82k
    return _res;
22824
4.82k
}
22825
22826
// invalid_parameters_helper: slash_with_default | param_with_default+
22827
static void *
22828
invalid_parameters_helper_rule(Parser *p)
22829
4.85k
{
22830
4.85k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22831
0
        _Pypegen_stack_overflow(p);
22832
0
    }
22833
4.85k
    if (p->error_indicator) {
22834
0
        p->level--;
22835
0
        return NULL;
22836
0
    }
22837
4.85k
    void * _res = NULL;
22838
4.85k
    int _mark = p->mark;
22839
4.85k
    { // slash_with_default
22840
4.85k
        if (p->error_indicator) {
22841
0
            p->level--;
22842
0
            return NULL;
22843
0
        }
22844
4.85k
        D(fprintf(stderr, "%*c> invalid_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
22845
4.85k
        SlashWithDefault* a;
22846
4.85k
        if (
22847
4.85k
            (a = slash_with_default_rule(p))  // slash_with_default
22848
4.85k
        )
22849
438
        {
22850
438
            D(fprintf(stderr, "%*c+ invalid_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
22851
438
            _res = _PyPegen_singleton_seq ( p , a );
22852
438
            if (_res == NULL && PyErr_Occurred()) {
22853
0
                p->error_indicator = 1;
22854
0
                p->level--;
22855
0
                return NULL;
22856
0
            }
22857
438
            goto done;
22858
438
        }
22859
4.42k
        p->mark = _mark;
22860
4.42k
        D(fprintf(stderr, "%*c%s invalid_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
22861
4.42k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default"));
22862
4.42k
    }
22863
0
    { // param_with_default+
22864
4.42k
        if (p->error_indicator) {
22865
0
            p->level--;
22866
0
            return NULL;
22867
0
        }
22868
4.42k
        D(fprintf(stderr, "%*c> invalid_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+"));
22869
4.42k
        asdl_seq * _loop1_30_var;
22870
4.42k
        if (
22871
4.42k
            (_loop1_30_var = _loop1_30_rule(p))  // param_with_default+
22872
4.42k
        )
22873
536
        {
22874
536
            D(fprintf(stderr, "%*c+ invalid_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+"));
22875
536
            _res = _loop1_30_var;
22876
536
            goto done;
22877
536
        }
22878
3.88k
        p->mark = _mark;
22879
3.88k
        D(fprintf(stderr, "%*c%s invalid_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
22880
3.88k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default+"));
22881
3.88k
    }
22882
0
    _res = NULL;
22883
4.85k
  done:
22884
4.85k
    p->level--;
22885
4.85k
    return _res;
22886
3.88k
}
22887
22888
// invalid_lambda_parameters:
22889
//     | "/" ','
22890
//     | (lambda_slash_no_default | lambda_slash_with_default) lambda_param_maybe_default* '/'
22891
//     | lambda_slash_no_default? lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default
22892
//     | lambda_param_no_default* '(' ','.lambda_param+ ','? ')'
22893
//     | [(lambda_slash_no_default | lambda_slash_with_default)] lambda_param_maybe_default* '*' (',' | lambda_param_no_default) lambda_param_maybe_default* '/'
22894
//     | lambda_param_maybe_default+ '/' '*'
22895
static void *
22896
invalid_lambda_parameters_rule(Parser *p)
22897
9.40k
{
22898
9.40k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22899
0
        _Pypegen_stack_overflow(p);
22900
0
    }
22901
9.40k
    if (p->error_indicator) {
22902
0
        p->level--;
22903
0
        return NULL;
22904
0
    }
22905
9.40k
    void * _res = NULL;
22906
9.40k
    int _mark = p->mark;
22907
9.40k
    { // "/" ','
22908
9.40k
        if (p->error_indicator) {
22909
0
            p->level--;
22910
0
            return NULL;
22911
0
        }
22912
9.40k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"/\" ','"));
22913
9.40k
        Token * _literal;
22914
9.40k
        Token * a;
22915
9.40k
        if (
22916
9.40k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
22917
9.40k
            &&
22918
9.40k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
22919
9.40k
        )
22920
1
        {
22921
1
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"/\" ','"));
22922
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "at least one parameter must precede /" );
22923
1
            if (_res == NULL && PyErr_Occurred()) {
22924
1
                p->error_indicator = 1;
22925
1
                p->level--;
22926
1
                return NULL;
22927
1
            }
22928
0
            goto done;
22929
1
        }
22930
9.40k
        p->mark = _mark;
22931
9.40k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22932
9.40k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"/\" ','"));
22933
9.40k
    }
22934
0
    { // (lambda_slash_no_default | lambda_slash_with_default) lambda_param_maybe_default* '/'
22935
9.40k
        if (p->error_indicator) {
22936
2
            p->level--;
22937
2
            return NULL;
22938
2
        }
22939
9.39k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(lambda_slash_no_default | lambda_slash_with_default) lambda_param_maybe_default* '/'"));
22940
9.39k
        asdl_seq * _loop0_74_var;
22941
9.39k
        void *_tmp_128_var;
22942
9.39k
        Token * a;
22943
9.39k
        if (
22944
9.39k
            (_tmp_128_var = _tmp_128_rule(p))  // lambda_slash_no_default | lambda_slash_with_default
22945
9.39k
            &&
22946
9.39k
            (_loop0_74_var = _loop0_74_rule(p))  // lambda_param_maybe_default*
22947
9.39k
            &&
22948
9.39k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
22949
9.39k
        )
22950
4
        {
22951
4
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(lambda_slash_no_default | lambda_slash_with_default) lambda_param_maybe_default* '/'"));
22952
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "/ may appear only once" );
22953
4
            if (_res == NULL && PyErr_Occurred()) {
22954
4
                p->error_indicator = 1;
22955
4
                p->level--;
22956
4
                return NULL;
22957
4
            }
22958
0
            goto done;
22959
4
        }
22960
9.39k
        p->mark = _mark;
22961
9.39k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22962
9.39k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(lambda_slash_no_default | lambda_slash_with_default) lambda_param_maybe_default* '/'"));
22963
9.39k
    }
22964
0
    { // lambda_slash_no_default? lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default
22965
9.39k
        if (p->error_indicator) {
22966
413
            p->level--;
22967
413
            return NULL;
22968
413
        }
22969
8.98k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default? lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default"));
22970
8.98k
        asdl_seq * _loop0_70_var;
22971
8.98k
        void *_opt_var;
22972
8.98k
        UNUSED(_opt_var); // Silence compiler warnings
22973
8.98k
        arg_ty a;
22974
8.98k
        void *invalid_lambda_parameters_helper_var;
22975
8.98k
        if (
22976
8.98k
            (_opt_var = lambda_slash_no_default_rule(p), !p->error_indicator)  // lambda_slash_no_default?
22977
8.98k
            &&
22978
8.98k
            (_loop0_70_var = _loop0_70_rule(p))  // lambda_param_no_default*
22979
8.98k
            &&
22980
8.98k
            (invalid_lambda_parameters_helper_var = invalid_lambda_parameters_helper_rule(p))  // invalid_lambda_parameters_helper
22981
8.98k
            &&
22982
8.98k
            (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
22983
8.98k
        )
22984
3
        {
22985
3
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default? lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default"));
22986
3
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "parameter without a default follows parameter with a default" );
22987
3
            if (_res == NULL && PyErr_Occurred()) {
22988
3
                p->error_indicator = 1;
22989
3
                p->level--;
22990
3
                return NULL;
22991
3
            }
22992
0
            goto done;
22993
3
        }
22994
8.97k
        p->mark = _mark;
22995
8.97k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22996
8.97k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_no_default? lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default"));
22997
8.97k
    }
22998
0
    { // lambda_param_no_default* '(' ','.lambda_param+ ','? ')'
22999
8.97k
        if (p->error_indicator) {
23000
0
            p->level--;
23001
0
            return NULL;
23002
0
        }
23003
8.97k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* '(' ','.lambda_param+ ','? ')'"));
23004
8.97k
        asdl_seq * _gather_130_var;
23005
8.97k
        asdl_seq * _loop0_70_var;
23006
8.97k
        void *_opt_var;
23007
8.97k
        UNUSED(_opt_var); // Silence compiler warnings
23008
8.97k
        Token * a;
23009
8.97k
        Token * b;
23010
8.97k
        if (
23011
8.97k
            (_loop0_70_var = _loop0_70_rule(p))  // lambda_param_no_default*
23012
8.97k
            &&
23013
8.97k
            (a = _PyPegen_expect_token(p, 7))  // token='('
23014
8.97k
            &&
23015
8.97k
            (_gather_130_var = _gather_130_rule(p))  // ','.lambda_param+
23016
8.97k
            &&
23017
8.97k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
23018
8.97k
            &&
23019
8.97k
            (b = _PyPegen_expect_token(p, 8))  // token=')'
23020
8.97k
        )
23021
1
        {
23022
1
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* '(' ','.lambda_param+ ','? ')'"));
23023
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "Lambda expression parameters cannot be parenthesized" );
23024
1
            if (_res == NULL && PyErr_Occurred()) {
23025
1
                p->error_indicator = 1;
23026
1
                p->level--;
23027
1
                return NULL;
23028
1
            }
23029
0
            goto done;
23030
1
        }
23031
8.97k
        p->mark = _mark;
23032
8.97k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
23033
8.97k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* '(' ','.lambda_param+ ','? ')'"));
23034
8.97k
    }
23035
0
    { // [(lambda_slash_no_default | lambda_slash_with_default)] lambda_param_maybe_default* '*' (',' | lambda_param_no_default) lambda_param_maybe_default* '/'
23036
8.97k
        if (p->error_indicator) {
23037
10
            p->level--;
23038
10
            return NULL;
23039
10
        }
23040
8.96k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "[(lambda_slash_no_default | lambda_slash_with_default)] lambda_param_maybe_default* '*' (',' | lambda_param_no_default) lambda_param_maybe_default* '/'"));
23041
8.96k
        Token * _literal;
23042
8.96k
        asdl_seq * _loop0_74_var;
23043
8.96k
        asdl_seq * _loop0_74_var_1;
23044
8.96k
        void *_opt_var;
23045
8.96k
        UNUSED(_opt_var); // Silence compiler warnings
23046
8.96k
        void *_tmp_131_var;
23047
8.96k
        Token * a;
23048
8.96k
        if (
23049
8.96k
            (_opt_var = _tmp_128_rule(p), !p->error_indicator)  // [(lambda_slash_no_default | lambda_slash_with_default)]
23050
8.96k
            &&
23051
8.96k
            (_loop0_74_var = _loop0_74_rule(p))  // lambda_param_maybe_default*
23052
8.96k
            &&
23053
8.96k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
23054
8.96k
            &&
23055
8.96k
            (_tmp_131_var = _tmp_131_rule(p))  // ',' | lambda_param_no_default
23056
8.96k
            &&
23057
8.96k
            (_loop0_74_var_1 = _loop0_74_rule(p))  // lambda_param_maybe_default*
23058
8.96k
            &&
23059
8.96k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
23060
8.96k
        )
23061
3
        {
23062
3
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "[(lambda_slash_no_default | lambda_slash_with_default)] lambda_param_maybe_default* '*' (',' | lambda_param_no_default) lambda_param_maybe_default* '/'"));
23063
3
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "/ must be ahead of *" );
23064
3
            if (_res == NULL && PyErr_Occurred()) {
23065
3
                p->error_indicator = 1;
23066
3
                p->level--;
23067
3
                return NULL;
23068
3
            }
23069
0
            goto done;
23070
3
        }
23071
8.96k
        p->mark = _mark;
23072
8.96k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
23073
8.96k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "[(lambda_slash_no_default | lambda_slash_with_default)] lambda_param_maybe_default* '*' (',' | lambda_param_no_default) lambda_param_maybe_default* '/'"));
23074
8.96k
    }
23075
0
    { // lambda_param_maybe_default+ '/' '*'
23076
8.96k
        if (p->error_indicator) {
23077
227
            p->level--;
23078
227
            return NULL;
23079
227
        }
23080
8.73k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default+ '/' '*'"));
23081
8.73k
        Token * _literal;
23082
8.73k
        asdl_seq * _loop1_75_var;
23083
8.73k
        Token * a;
23084
8.73k
        if (
23085
8.73k
            (_loop1_75_var = _loop1_75_rule(p))  // lambda_param_maybe_default+
23086
8.73k
            &&
23087
8.73k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
23088
8.73k
            &&
23089
8.73k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
23090
8.73k
        )
23091
4
        {
23092
4
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default+ '/' '*'"));
23093
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expected comma between / and *" );
23094
4
            if (_res == NULL && PyErr_Occurred()) {
23095
4
                p->error_indicator = 1;
23096
4
                p->level--;
23097
4
                return NULL;
23098
4
            }
23099
0
            goto done;
23100
4
        }
23101
8.73k
        p->mark = _mark;
23102
8.73k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
23103
8.73k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default+ '/' '*'"));
23104
8.73k
    }
23105
0
    _res = NULL;
23106
8.73k
  done:
23107
8.73k
    p->level--;
23108
8.73k
    return _res;
23109
8.73k
}
23110
23111
// invalid_lambda_parameters_helper:
23112
//     | lambda_slash_with_default
23113
//     | lambda_param_with_default+
23114
static void *
23115
invalid_lambda_parameters_helper_rule(Parser *p)
23116
8.98k
{
23117
8.98k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23118
0
        _Pypegen_stack_overflow(p);
23119
0
    }
23120
8.98k
    if (p->error_indicator) {
23121
0
        p->level--;
23122
0
        return NULL;
23123
0
    }
23124
8.98k
    void * _res = NULL;
23125
8.98k
    int _mark = p->mark;
23126
8.98k
    { // lambda_slash_with_default
23127
8.98k
        if (p->error_indicator) {
23128
0
            p->level--;
23129
0
            return NULL;
23130
0
        }
23131
8.98k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
23132
8.98k
        SlashWithDefault* a;
23133
8.98k
        if (
23134
8.98k
            (a = lambda_slash_with_default_rule(p))  // lambda_slash_with_default
23135
8.98k
        )
23136
1.07k
        {
23137
1.07k
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
23138
1.07k
            _res = _PyPegen_singleton_seq ( p , a );
23139
1.07k
            if (_res == NULL && PyErr_Occurred()) {
23140
0
                p->error_indicator = 1;
23141
0
                p->level--;
23142
0
                return NULL;
23143
0
            }
23144
1.07k
            goto done;
23145
1.07k
        }
23146
7.91k
        p->mark = _mark;
23147
7.91k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
23148
7.91k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default"));
23149
7.91k
    }
23150
0
    { // lambda_param_with_default+
23151
7.91k
        if (p->error_indicator) {
23152
0
            p->level--;
23153
0
            return NULL;
23154
0
        }
23155
7.91k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+"));
23156
7.91k
        asdl_seq * _loop1_73_var;
23157
7.91k
        if (
23158
7.91k
            (_loop1_73_var = _loop1_73_rule(p))  // lambda_param_with_default+
23159
7.91k
        )
23160
1.93k
        {
23161
1.93k
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+"));
23162
1.93k
            _res = _loop1_73_var;
23163
1.93k
            goto done;
23164
1.93k
        }
23165
5.97k
        p->mark = _mark;
23166
5.97k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
23167
5.97k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default+"));
23168
5.97k
    }
23169
0
    _res = NULL;
23170
8.98k
  done:
23171
8.98k
    p->level--;
23172
8.98k
    return _res;
23173
5.97k
}
23174
23175
// invalid_lambda_star_etc:
23176
//     | '*' (':' | ',' (':' | '**'))
23177
//     | '*' lambda_param '='
23178
//     | '*' (lambda_param_no_default | ',') lambda_param_maybe_default* '*' (lambda_param_no_default | ',')
23179
static void *
23180
invalid_lambda_star_etc_rule(Parser *p)
23181
8.73k
{
23182
8.73k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23183
0
        _Pypegen_stack_overflow(p);
23184
0
    }
23185
8.73k
    if (p->error_indicator) {
23186
0
        p->level--;
23187
0
        return NULL;
23188
0
    }
23189
8.73k
    void * _res = NULL;
23190
8.73k
    int _mark = p->mark;
23191
8.73k
    { // '*' (':' | ',' (':' | '**'))
23192
8.73k
        if (p->error_indicator) {
23193
0
            p->level--;
23194
0
            return NULL;
23195
0
        }
23196
8.73k
        D(fprintf(stderr, "%*c> invalid_lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
23197
8.73k
        Token * _literal;
23198
8.73k
        void *_tmp_132_var;
23199
8.73k
        if (
23200
8.73k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
23201
8.73k
            &&
23202
8.73k
            (_tmp_132_var = _tmp_132_rule(p))  // ':' | ',' (':' | '**')
23203
8.73k
        )
23204
7
        {
23205
7
            D(fprintf(stderr, "%*c+ invalid_lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
23206
7
            _res = RAISE_SYNTAX_ERROR ( "named parameters must follow bare *" );
23207
7
            if (_res == NULL && PyErr_Occurred()) {
23208
7
                p->error_indicator = 1;
23209
7
                p->level--;
23210
7
                return NULL;
23211
7
            }
23212
0
            goto done;
23213
7
        }
23214
8.72k
        p->mark = _mark;
23215
8.72k
        D(fprintf(stderr, "%*c%s invalid_lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
23216
8.72k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
23217
8.72k
    }
23218
0
    { // '*' lambda_param '='
23219
8.72k
        if (p->error_indicator) {
23220
0
            p->level--;
23221
0
            return NULL;
23222
0
        }
23223
8.72k
        D(fprintf(stderr, "%*c> invalid_lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' lambda_param '='"));
23224
8.72k
        Token * _literal;
23225
8.72k
        Token * a;
23226
8.72k
        arg_ty lambda_param_var;
23227
8.72k
        if (
23228
8.72k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
23229
8.72k
            &&
23230
8.72k
            (lambda_param_var = lambda_param_rule(p))  // lambda_param
23231
8.72k
            &&
23232
8.72k
            (a = _PyPegen_expect_token(p, 22))  // token='='
23233
8.72k
        )
23234
9
        {
23235
9
            D(fprintf(stderr, "%*c+ invalid_lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' lambda_param '='"));
23236
9
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "var-positional parameter cannot have default value" );
23237
9
            if (_res == NULL && PyErr_Occurred()) {
23238
9
                p->error_indicator = 1;
23239
9
                p->level--;
23240
9
                return NULL;
23241
9
            }
23242
0
            goto done;
23243
9
        }
23244
8.71k
        p->mark = _mark;
23245
8.71k
        D(fprintf(stderr, "%*c%s invalid_lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
23246
8.71k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' lambda_param '='"));
23247
8.71k
    }
23248
0
    { // '*' (lambda_param_no_default | ',') lambda_param_maybe_default* '*' (lambda_param_no_default | ',')
23249
8.71k
        if (p->error_indicator) {
23250
0
            p->level--;
23251
0
            return NULL;
23252
0
        }
23253
8.71k
        D(fprintf(stderr, "%*c> invalid_lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (lambda_param_no_default | ',') lambda_param_maybe_default* '*' (lambda_param_no_default | ',')"));
23254
8.71k
        Token * _literal;
23255
8.71k
        asdl_seq * _loop0_74_var;
23256
8.71k
        void *_tmp_133_var;
23257
8.71k
        void *_tmp_133_var_1;
23258
8.71k
        Token * a;
23259
8.71k
        if (
23260
8.71k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
23261
8.71k
            &&
23262
8.71k
            (_tmp_133_var = _tmp_133_rule(p))  // lambda_param_no_default | ','
23263
8.71k
            &&
23264
8.71k
            (_loop0_74_var = _loop0_74_rule(p))  // lambda_param_maybe_default*
23265
8.71k
            &&
23266
8.71k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
23267
8.71k
            &&
23268
8.71k
            (_tmp_133_var_1 = _tmp_133_rule(p))  // lambda_param_no_default | ','
23269
8.71k
        )
23270
3
        {
23271
3
            D(fprintf(stderr, "%*c+ invalid_lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (lambda_param_no_default | ',') lambda_param_maybe_default* '*' (lambda_param_no_default | ',')"));
23272
3
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "* may appear only once" );
23273
3
            if (_res == NULL && PyErr_Occurred()) {
23274
3
                p->error_indicator = 1;
23275
3
                p->level--;
23276
3
                return NULL;
23277
3
            }
23278
0
            goto done;
23279
3
        }
23280
8.71k
        p->mark = _mark;
23281
8.71k
        D(fprintf(stderr, "%*c%s invalid_lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
23282
8.71k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (lambda_param_no_default | ',') lambda_param_maybe_default* '*' (lambda_param_no_default | ',')"));
23283
8.71k
    }
23284
0
    _res = NULL;
23285
8.71k
  done:
23286
8.71k
    p->level--;
23287
8.71k
    return _res;
23288
8.71k
}
23289
23290
// invalid_lambda_kwds:
23291
//     | '**' lambda_param '='
23292
//     | '**' lambda_param ',' lambda_param
23293
//     | '**' lambda_param ',' ('*' | '**' | '/')
23294
static void *
23295
invalid_lambda_kwds_rule(Parser *p)
23296
8.71k
{
23297
8.71k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23298
0
        _Pypegen_stack_overflow(p);
23299
0
    }
23300
8.71k
    if (p->error_indicator) {
23301
0
        p->level--;
23302
0
        return NULL;
23303
0
    }
23304
8.71k
    void * _res = NULL;
23305
8.71k
    int _mark = p->mark;
23306
8.71k
    { // '**' lambda_param '='
23307
8.71k
        if (p->error_indicator) {
23308
0
            p->level--;
23309
0
            return NULL;
23310
0
        }
23311
8.71k
        D(fprintf(stderr, "%*c> invalid_lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param '='"));
23312
8.71k
        Token * _literal;
23313
8.71k
        Token * a;
23314
8.71k
        arg_ty lambda_param_var;
23315
8.71k
        if (
23316
8.71k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
23317
8.71k
            &&
23318
8.71k
            (lambda_param_var = lambda_param_rule(p))  // lambda_param
23319
8.71k
            &&
23320
8.71k
            (a = _PyPegen_expect_token(p, 22))  // token='='
23321
8.71k
        )
23322
1
        {
23323
1
            D(fprintf(stderr, "%*c+ invalid_lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' lambda_param '='"));
23324
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "var-keyword parameter cannot have default value" );
23325
1
            if (_res == NULL && PyErr_Occurred()) {
23326
1
                p->error_indicator = 1;
23327
1
                p->level--;
23328
1
                return NULL;
23329
1
            }
23330
0
            goto done;
23331
1
        }
23332
8.71k
        p->mark = _mark;
23333
8.71k
        D(fprintf(stderr, "%*c%s invalid_lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
23334
8.71k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param '='"));
23335
8.71k
    }
23336
0
    { // '**' lambda_param ',' lambda_param
23337
8.71k
        if (p->error_indicator) {
23338
1
            p->level--;
23339
1
            return NULL;
23340
1
        }
23341
8.71k
        D(fprintf(stderr, "%*c> invalid_lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param ',' lambda_param"));
23342
8.71k
        Token * _literal;
23343
8.71k
        Token * _literal_1;
23344
8.71k
        arg_ty a;
23345
8.71k
        arg_ty lambda_param_var;
23346
8.71k
        if (
23347
8.71k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
23348
8.71k
            &&
23349
8.71k
            (lambda_param_var = lambda_param_rule(p))  // lambda_param
23350
8.71k
            &&
23351
8.71k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
23352
8.71k
            &&
23353
8.71k
            (a = lambda_param_rule(p))  // lambda_param
23354
8.71k
        )
23355
1
        {
23356
1
            D(fprintf(stderr, "%*c+ invalid_lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' lambda_param ',' lambda_param"));
23357
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "parameters cannot follow var-keyword parameter" );
23358
1
            if (_res == NULL && PyErr_Occurred()) {
23359
1
                p->error_indicator = 1;
23360
1
                p->level--;
23361
1
                return NULL;
23362
1
            }
23363
0
            goto done;
23364
1
        }
23365
8.71k
        p->mark = _mark;
23366
8.71k
        D(fprintf(stderr, "%*c%s invalid_lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
23367
8.71k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param ',' lambda_param"));
23368
8.71k
    }
23369
0
    { // '**' lambda_param ',' ('*' | '**' | '/')
23370
8.71k
        if (p->error_indicator) {
23371
1
            p->level--;
23372
1
            return NULL;
23373
1
        }
23374
8.70k
        D(fprintf(stderr, "%*c> invalid_lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param ',' ('*' | '**' | '/')"));
23375
8.70k
        Token * _literal;
23376
8.70k
        Token * _literal_1;
23377
8.70k
        Token* a;
23378
8.70k
        arg_ty lambda_param_var;
23379
8.70k
        if (
23380
8.70k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
23381
8.70k
            &&
23382
8.70k
            (lambda_param_var = lambda_param_rule(p))  // lambda_param
23383
8.70k
            &&
23384
8.70k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
23385
8.70k
            &&
23386
8.70k
            (a = (Token*)_tmp_127_rule(p))  // '*' | '**' | '/'
23387
8.70k
        )
23388
1
        {
23389
1
            D(fprintf(stderr, "%*c+ invalid_lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' lambda_param ',' ('*' | '**' | '/')"));
23390
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "parameters cannot follow var-keyword parameter" );
23391
1
            if (_res == NULL && PyErr_Occurred()) {
23392
1
                p->error_indicator = 1;
23393
1
                p->level--;
23394
1
                return NULL;
23395
1
            }
23396
0
            goto done;
23397
1
        }
23398
8.70k
        p->mark = _mark;
23399
8.70k
        D(fprintf(stderr, "%*c%s invalid_lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
23400
8.70k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param ',' ('*' | '**' | '/')"));
23401
8.70k
    }
23402
0
    _res = NULL;
23403
8.70k
  done:
23404
8.70k
    p->level--;
23405
8.70k
    return _res;
23406
8.70k
}
23407
23408
// invalid_double_type_comments: TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
23409
static void *
23410
invalid_double_type_comments_rule(Parser *p)
23411
2.16k
{
23412
2.16k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23413
0
        _Pypegen_stack_overflow(p);
23414
0
    }
23415
2.16k
    if (p->error_indicator) {
23416
0
        p->level--;
23417
0
        return NULL;
23418
0
    }
23419
2.16k
    void * _res = NULL;
23420
2.16k
    int _mark = p->mark;
23421
2.16k
    { // TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
23422
2.16k
        if (p->error_indicator) {
23423
0
            p->level--;
23424
0
            return NULL;
23425
0
        }
23426
2.16k
        D(fprintf(stderr, "%*c> invalid_double_type_comments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT"));
23427
2.16k
        Token * indent_var;
23428
2.16k
        Token * newline_var;
23429
2.16k
        Token * newline_var_1;
23430
2.16k
        Token * type_comment_var;
23431
2.16k
        Token * type_comment_var_1;
23432
2.16k
        if (
23433
2.16k
            (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
23434
2.16k
            &&
23435
2.16k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23436
2.16k
            &&
23437
2.16k
            (type_comment_var_1 = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
23438
2.16k
            &&
23439
2.16k
            (newline_var_1 = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23440
2.16k
            &&
23441
2.16k
            (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
23442
2.16k
        )
23443
0
        {
23444
0
            D(fprintf(stderr, "%*c+ invalid_double_type_comments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT"));
23445
0
            _res = RAISE_SYNTAX_ERROR ( "Cannot have two type comments on def" );
23446
0
            if (_res == NULL && PyErr_Occurred()) {
23447
0
                p->error_indicator = 1;
23448
0
                p->level--;
23449
0
                return NULL;
23450
0
            }
23451
0
            goto done;
23452
0
        }
23453
2.16k
        p->mark = _mark;
23454
2.16k
        D(fprintf(stderr, "%*c%s invalid_double_type_comments[%d-%d]: %s failed!\n", p->level, ' ',
23455
2.16k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT"));
23456
2.16k
    }
23457
0
    _res = NULL;
23458
2.16k
  done:
23459
2.16k
    p->level--;
23460
2.16k
    return _res;
23461
2.16k
}
23462
23463
// invalid_with_item: expression 'as' expression &(',' | ')' | ':')
23464
static void *
23465
invalid_with_item_rule(Parser *p)
23466
5.78k
{
23467
5.78k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23468
0
        _Pypegen_stack_overflow(p);
23469
0
    }
23470
5.78k
    if (p->error_indicator) {
23471
0
        p->level--;
23472
0
        return NULL;
23473
0
    }
23474
5.78k
    void * _res = NULL;
23475
5.78k
    int _mark = p->mark;
23476
5.78k
    { // expression 'as' expression &(',' | ')' | ':')
23477
5.78k
        if (p->error_indicator) {
23478
0
            p->level--;
23479
0
            return NULL;
23480
0
        }
23481
5.78k
        D(fprintf(stderr, "%*c> invalid_with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')"));
23482
5.78k
        Token * _keyword;
23483
5.78k
        expr_ty a;
23484
5.78k
        expr_ty expression_var;
23485
5.78k
        if (
23486
5.78k
            (expression_var = expression_rule(p))  // expression
23487
5.78k
            &&
23488
5.78k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
23489
5.78k
            &&
23490
5.78k
            (a = expression_rule(p))  // expression
23491
5.78k
            &&
23492
5.78k
            _PyPegen_lookahead(1, _tmp_35_rule, p)
23493
5.78k
        )
23494
3
        {
23495
3
            D(fprintf(stderr, "%*c+ invalid_with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')"));
23496
3
            _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( STAR_TARGETS , a );
23497
3
            if (_res == NULL && PyErr_Occurred()) {
23498
3
                p->error_indicator = 1;
23499
3
                p->level--;
23500
3
                return NULL;
23501
3
            }
23502
0
            goto done;
23503
3
        }
23504
5.78k
        p->mark = _mark;
23505
5.78k
        D(fprintf(stderr, "%*c%s invalid_with_item[%d-%d]: %s failed!\n", p->level, ' ',
23506
5.78k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')"));
23507
5.78k
    }
23508
0
    _res = NULL;
23509
5.78k
  done:
23510
5.78k
    p->level--;
23511
5.78k
    return _res;
23512
5.78k
}
23513
23514
// invalid_for_if_clause: 'async'? 'for' (bitwise_or ((',' bitwise_or))* ','?) !'in'
23515
static void *
23516
invalid_for_if_clause_rule(Parser *p)
23517
48.1k
{
23518
48.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23519
0
        _Pypegen_stack_overflow(p);
23520
0
    }
23521
48.1k
    if (p->error_indicator) {
23522
0
        p->level--;
23523
0
        return NULL;
23524
0
    }
23525
48.1k
    void * _res = NULL;
23526
48.1k
    int _mark = p->mark;
23527
48.1k
    { // 'async'? 'for' (bitwise_or ((',' bitwise_or))* ','?) !'in'
23528
48.1k
        if (p->error_indicator) {
23529
0
            p->level--;
23530
0
            return NULL;
23531
0
        }
23532
48.1k
        D(fprintf(stderr, "%*c> invalid_for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'? 'for' (bitwise_or ((',' bitwise_or))* ','?) !'in'"));
23533
48.1k
        Token * _keyword;
23534
48.1k
        void *_opt_var;
23535
48.1k
        UNUSED(_opt_var); // Silence compiler warnings
23536
48.1k
        void *_tmp_134_var;
23537
48.1k
        if (
23538
48.1k
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
23539
48.1k
            &&
23540
48.1k
            (_keyword = _PyPegen_expect_token(p, 699))  // token='for'
23541
48.1k
            &&
23542
48.1k
            (_tmp_134_var = _tmp_134_rule(p))  // bitwise_or ((',' bitwise_or))* ','?
23543
48.1k
            &&
23544
48.1k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 700)  // token='in'
23545
48.1k
        )
23546
18
        {
23547
18
            D(fprintf(stderr, "%*c+ invalid_for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'? 'for' (bitwise_or ((',' bitwise_or))* ','?) !'in'"));
23548
18
            _res = RAISE_SYNTAX_ERROR ( "'in' expected after for-loop variables" );
23549
18
            if (_res == NULL && PyErr_Occurred()) {
23550
18
                p->error_indicator = 1;
23551
18
                p->level--;
23552
18
                return NULL;
23553
18
            }
23554
0
            goto done;
23555
18
        }
23556
48.1k
        p->mark = _mark;
23557
48.1k
        D(fprintf(stderr, "%*c%s invalid_for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
23558
48.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'for' (bitwise_or ((',' bitwise_or))* ','?) !'in'"));
23559
48.1k
    }
23560
0
    _res = NULL;
23561
48.1k
  done:
23562
48.1k
    p->level--;
23563
48.1k
    return _res;
23564
48.1k
}
23565
23566
// invalid_for_target: 'async'? 'for' star_expressions
23567
static void *
23568
invalid_for_target_rule(Parser *p)
23569
47.7k
{
23570
47.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23571
0
        _Pypegen_stack_overflow(p);
23572
0
    }
23573
47.7k
    if (p->error_indicator) {
23574
0
        p->level--;
23575
0
        return NULL;
23576
0
    }
23577
47.7k
    void * _res = NULL;
23578
47.7k
    int _mark = p->mark;
23579
47.7k
    { // 'async'? 'for' star_expressions
23580
47.7k
        if (p->error_indicator) {
23581
0
            p->level--;
23582
0
            return NULL;
23583
0
        }
23584
47.7k
        D(fprintf(stderr, "%*c> invalid_for_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'? 'for' star_expressions"));
23585
47.7k
        Token * _keyword;
23586
47.7k
        void *_opt_var;
23587
47.7k
        UNUSED(_opt_var); // Silence compiler warnings
23588
47.7k
        expr_ty a;
23589
47.7k
        if (
23590
47.7k
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
23591
47.7k
            &&
23592
47.7k
            (_keyword = _PyPegen_expect_token(p, 699))  // token='for'
23593
47.7k
            &&
23594
47.7k
            (a = star_expressions_rule(p))  // star_expressions
23595
47.7k
        )
23596
1.47k
        {
23597
1.47k
            D(fprintf(stderr, "%*c+ invalid_for_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'? 'for' star_expressions"));
23598
1.47k
            _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( FOR_TARGETS , a );
23599
1.47k
            if (_res == NULL && PyErr_Occurred()) {
23600
2
                p->error_indicator = 1;
23601
2
                p->level--;
23602
2
                return NULL;
23603
2
            }
23604
1.46k
            goto done;
23605
1.47k
        }
23606
46.2k
        p->mark = _mark;
23607
46.2k
        D(fprintf(stderr, "%*c%s invalid_for_target[%d-%d]: %s failed!\n", p->level, ' ',
23608
46.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'for' star_expressions"));
23609
46.2k
    }
23610
0
    _res = NULL;
23611
47.7k
  done:
23612
47.7k
    p->level--;
23613
47.7k
    return _res;
23614
46.2k
}
23615
23616
// invalid_group: '(' starred_expression ')' | '(' '**' expression ')'
23617
static void *
23618
invalid_group_rule(Parser *p)
23619
8.67k
{
23620
8.67k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23621
0
        _Pypegen_stack_overflow(p);
23622
0
    }
23623
8.67k
    if (p->error_indicator) {
23624
0
        p->level--;
23625
0
        return NULL;
23626
0
    }
23627
8.67k
    void * _res = NULL;
23628
8.67k
    int _mark = p->mark;
23629
8.67k
    { // '(' starred_expression ')'
23630
8.67k
        if (p->error_indicator) {
23631
0
            p->level--;
23632
0
            return NULL;
23633
0
        }
23634
8.67k
        D(fprintf(stderr, "%*c> invalid_group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' starred_expression ')'"));
23635
8.67k
        Token * _literal;
23636
8.67k
        Token * _literal_1;
23637
8.67k
        expr_ty a;
23638
8.67k
        if (
23639
8.67k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
23640
8.67k
            &&
23641
8.67k
            (a = starred_expression_rule(p))  // starred_expression
23642
8.67k
            &&
23643
8.67k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
23644
8.67k
        )
23645
1
        {
23646
1
            D(fprintf(stderr, "%*c+ invalid_group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' starred_expression ')'"));
23647
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use starred expression here" );
23648
1
            if (_res == NULL && PyErr_Occurred()) {
23649
1
                p->error_indicator = 1;
23650
1
                p->level--;
23651
1
                return NULL;
23652
1
            }
23653
0
            goto done;
23654
1
        }
23655
8.67k
        p->mark = _mark;
23656
8.67k
        D(fprintf(stderr, "%*c%s invalid_group[%d-%d]: %s failed!\n", p->level, ' ',
23657
8.67k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' starred_expression ')'"));
23658
8.67k
    }
23659
0
    { // '(' '**' expression ')'
23660
8.67k
        if (p->error_indicator) {
23661
299
            p->level--;
23662
299
            return NULL;
23663
299
        }
23664
8.37k
        D(fprintf(stderr, "%*c> invalid_group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' '**' expression ')'"));
23665
8.37k
        Token * _literal;
23666
8.37k
        Token * _literal_1;
23667
8.37k
        Token * a;
23668
8.37k
        expr_ty expression_var;
23669
8.37k
        if (
23670
8.37k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
23671
8.37k
            &&
23672
8.37k
            (a = _PyPegen_expect_token(p, 35))  // token='**'
23673
8.37k
            &&
23674
8.37k
            (expression_var = expression_rule(p))  // expression
23675
8.37k
            &&
23676
8.37k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
23677
8.37k
        )
23678
2
        {
23679
2
            D(fprintf(stderr, "%*c+ invalid_group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' '**' expression ')'"));
23680
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use double starred expression here" );
23681
2
            if (_res == NULL && PyErr_Occurred()) {
23682
2
                p->error_indicator = 1;
23683
2
                p->level--;
23684
2
                return NULL;
23685
2
            }
23686
0
            goto done;
23687
2
        }
23688
8.36k
        p->mark = _mark;
23689
8.36k
        D(fprintf(stderr, "%*c%s invalid_group[%d-%d]: %s failed!\n", p->level, ' ',
23690
8.36k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' '**' expression ')'"));
23691
8.36k
    }
23692
0
    _res = NULL;
23693
8.36k
  done:
23694
8.36k
    p->level--;
23695
8.36k
    return _res;
23696
8.36k
}
23697
23698
// invalid_import: 'import' ','.dotted_name+ 'from' dotted_name | 'import' NEWLINE
23699
static void *
23700
invalid_import_rule(Parser *p)
23701
1.78k
{
23702
1.78k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23703
0
        _Pypegen_stack_overflow(p);
23704
0
    }
23705
1.78k
    if (p->error_indicator) {
23706
0
        p->level--;
23707
0
        return NULL;
23708
0
    }
23709
1.78k
    void * _res = NULL;
23710
1.78k
    int _mark = p->mark;
23711
1.78k
    { // 'import' ','.dotted_name+ 'from' dotted_name
23712
1.78k
        if (p->error_indicator) {
23713
0
            p->level--;
23714
0
            return NULL;
23715
0
        }
23716
1.78k
        D(fprintf(stderr, "%*c> invalid_import[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import' ','.dotted_name+ 'from' dotted_name"));
23717
1.78k
        asdl_seq * _gather_136_var;
23718
1.78k
        Token * _keyword;
23719
1.78k
        Token * a;
23720
1.78k
        expr_ty dotted_name_var;
23721
1.78k
        if (
23722
1.78k
            (a = _PyPegen_expect_token(p, 639))  // token='import'
23723
1.78k
            &&
23724
1.78k
            (_gather_136_var = _gather_136_rule(p))  // ','.dotted_name+
23725
1.78k
            &&
23726
1.78k
            (_keyword = _PyPegen_expect_token(p, 638))  // token='from'
23727
1.78k
            &&
23728
1.78k
            (dotted_name_var = dotted_name_rule(p))  // dotted_name
23729
1.78k
        )
23730
1
        {
23731
1
            D(fprintf(stderr, "%*c+ invalid_import[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import' ','.dotted_name+ 'from' dotted_name"));
23732
1
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "Did you mean to use 'from ... import ...' instead?" );
23733
1
            if (_res == NULL && PyErr_Occurred()) {
23734
1
                p->error_indicator = 1;
23735
1
                p->level--;
23736
1
                return NULL;
23737
1
            }
23738
0
            goto done;
23739
1
        }
23740
1.78k
        p->mark = _mark;
23741
1.78k
        D(fprintf(stderr, "%*c%s invalid_import[%d-%d]: %s failed!\n", p->level, ' ',
23742
1.78k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import' ','.dotted_name+ 'from' dotted_name"));
23743
1.78k
    }
23744
0
    { // 'import' NEWLINE
23745
1.78k
        if (p->error_indicator) {
23746
2
            p->level--;
23747
2
            return NULL;
23748
2
        }
23749
1.78k
        D(fprintf(stderr, "%*c> invalid_import[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import' NEWLINE"));
23750
1.78k
        Token * _keyword;
23751
1.78k
        Token * token;
23752
1.78k
        if (
23753
1.78k
            (_keyword = _PyPegen_expect_token(p, 639))  // token='import'
23754
1.78k
            &&
23755
1.78k
            (token = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23756
1.78k
        )
23757
4
        {
23758
4
            D(fprintf(stderr, "%*c+ invalid_import[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import' NEWLINE"));
23759
4
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( token , "Expected one or more names after 'import'" );
23760
4
            if (_res == NULL && PyErr_Occurred()) {
23761
4
                p->error_indicator = 1;
23762
4
                p->level--;
23763
4
                return NULL;
23764
4
            }
23765
0
            goto done;
23766
4
        }
23767
1.77k
        p->mark = _mark;
23768
1.77k
        D(fprintf(stderr, "%*c%s invalid_import[%d-%d]: %s failed!\n", p->level, ' ',
23769
1.77k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import' NEWLINE"));
23770
1.77k
    }
23771
0
    _res = NULL;
23772
1.77k
  done:
23773
1.77k
    p->level--;
23774
1.77k
    return _res;
23775
1.77k
}
23776
23777
// invalid_dotted_as_name: dotted_name 'as' !(NAME (',' | ')' | NEWLINE)) expression
23778
static void *
23779
invalid_dotted_as_name_rule(Parser *p)
23780
2.76k
{
23781
2.76k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23782
0
        _Pypegen_stack_overflow(p);
23783
0
    }
23784
2.76k
    if (p->error_indicator) {
23785
0
        p->level--;
23786
0
        return NULL;
23787
0
    }
23788
2.76k
    void * _res = NULL;
23789
2.76k
    int _mark = p->mark;
23790
2.76k
    { // dotted_name 'as' !(NAME (',' | ')' | NEWLINE)) expression
23791
2.76k
        if (p->error_indicator) {
23792
0
            p->level--;
23793
0
            return NULL;
23794
0
        }
23795
2.76k
        D(fprintf(stderr, "%*c> invalid_dotted_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name 'as' !(NAME (',' | ')' | NEWLINE)) expression"));
23796
2.76k
        Token * _keyword;
23797
2.76k
        expr_ty a;
23798
2.76k
        expr_ty dotted_name_var;
23799
2.76k
        if (
23800
2.76k
            (dotted_name_var = dotted_name_rule(p))  // dotted_name
23801
2.76k
            &&
23802
2.76k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
23803
2.76k
            &&
23804
2.76k
            _PyPegen_lookahead(0, _tmp_137_rule, p)
23805
2.76k
            &&
23806
2.76k
            (a = expression_rule(p))  // expression
23807
2.76k
        )
23808
8
        {
23809
8
            D(fprintf(stderr, "%*c+ invalid_dotted_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name 'as' !(NAME (',' | ')' | NEWLINE)) expression"));
23810
8
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use %s as import target" , _PyPegen_get_expr_name ( a ) );
23811
8
            if (_res == NULL && PyErr_Occurred()) {
23812
8
                p->error_indicator = 1;
23813
8
                p->level--;
23814
8
                return NULL;
23815
8
            }
23816
0
            goto done;
23817
8
        }
23818
2.75k
        p->mark = _mark;
23819
2.75k
        D(fprintf(stderr, "%*c%s invalid_dotted_as_name[%d-%d]: %s failed!\n", p->level, ' ',
23820
2.75k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name 'as' !(NAME (',' | ')' | NEWLINE)) expression"));
23821
2.75k
    }
23822
0
    _res = NULL;
23823
2.75k
  done:
23824
2.75k
    p->level--;
23825
2.75k
    return _res;
23826
2.75k
}
23827
23828
// invalid_import_from_as_name: NAME 'as' !(NAME (',' | ')' | NEWLINE)) expression
23829
static void *
23830
invalid_import_from_as_name_rule(Parser *p)
23831
2.46k
{
23832
2.46k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23833
0
        _Pypegen_stack_overflow(p);
23834
0
    }
23835
2.46k
    if (p->error_indicator) {
23836
0
        p->level--;
23837
0
        return NULL;
23838
0
    }
23839
2.46k
    void * _res = NULL;
23840
2.46k
    int _mark = p->mark;
23841
2.46k
    { // NAME 'as' !(NAME (',' | ')' | NEWLINE)) expression
23842
2.46k
        if (p->error_indicator) {
23843
0
            p->level--;
23844
0
            return NULL;
23845
0
        }
23846
2.46k
        D(fprintf(stderr, "%*c> invalid_import_from_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME 'as' !(NAME (',' | ')' | NEWLINE)) expression"));
23847
2.46k
        Token * _keyword;
23848
2.46k
        expr_ty a;
23849
2.46k
        expr_ty name_var;
23850
2.46k
        if (
23851
2.46k
            (name_var = _PyPegen_name_token(p))  // NAME
23852
2.46k
            &&
23853
2.46k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
23854
2.46k
            &&
23855
2.46k
            _PyPegen_lookahead(0, _tmp_137_rule, p)
23856
2.46k
            &&
23857
2.46k
            (a = expression_rule(p))  // expression
23858
2.46k
        )
23859
1
        {
23860
1
            D(fprintf(stderr, "%*c+ invalid_import_from_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME 'as' !(NAME (',' | ')' | NEWLINE)) expression"));
23861
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use %s as import target" , _PyPegen_get_expr_name ( a ) );
23862
1
            if (_res == NULL && PyErr_Occurred()) {
23863
1
                p->error_indicator = 1;
23864
1
                p->level--;
23865
1
                return NULL;
23866
1
            }
23867
0
            goto done;
23868
1
        }
23869
2.46k
        p->mark = _mark;
23870
2.46k
        D(fprintf(stderr, "%*c%s invalid_import_from_as_name[%d-%d]: %s failed!\n", p->level, ' ',
23871
2.46k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME 'as' !(NAME (',' | ')' | NEWLINE)) expression"));
23872
2.46k
    }
23873
0
    _res = NULL;
23874
2.46k
  done:
23875
2.46k
    p->level--;
23876
2.46k
    return _res;
23877
2.46k
}
23878
23879
// invalid_import_from_targets: import_from_as_names ',' NEWLINE | NEWLINE
23880
static void *
23881
invalid_import_from_targets_rule(Parser *p)
23882
32
{
23883
32
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23884
0
        _Pypegen_stack_overflow(p);
23885
0
    }
23886
32
    if (p->error_indicator) {
23887
0
        p->level--;
23888
0
        return NULL;
23889
0
    }
23890
32
    void * _res = NULL;
23891
32
    int _mark = p->mark;
23892
32
    { // import_from_as_names ',' NEWLINE
23893
32
        if (p->error_indicator) {
23894
0
            p->level--;
23895
0
            return NULL;
23896
0
        }
23897
32
        D(fprintf(stderr, "%*c> invalid_import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_names ',' NEWLINE"));
23898
32
        Token * _literal;
23899
32
        asdl_alias_seq* import_from_as_names_var;
23900
32
        Token * newline_var;
23901
32
        if (
23902
32
            (import_from_as_names_var = import_from_as_names_rule(p))  // import_from_as_names
23903
32
            &&
23904
32
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
23905
32
            &&
23906
32
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23907
32
        )
23908
16
        {
23909
16
            D(fprintf(stderr, "%*c+ invalid_import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_names ',' NEWLINE"));
23910
16
            _res = RAISE_SYNTAX_ERROR ( "trailing comma not allowed without surrounding parentheses" );
23911
16
            if (_res == NULL && PyErr_Occurred()) {
23912
16
                p->error_indicator = 1;
23913
16
                p->level--;
23914
16
                return NULL;
23915
16
            }
23916
0
            goto done;
23917
16
        }
23918
16
        p->mark = _mark;
23919
16
        D(fprintf(stderr, "%*c%s invalid_import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
23920
16
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_names ',' NEWLINE"));
23921
16
    }
23922
0
    { // NEWLINE
23923
16
        if (p->error_indicator) {
23924
0
            p->level--;
23925
0
            return NULL;
23926
0
        }
23927
16
        D(fprintf(stderr, "%*c> invalid_import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
23928
16
        Token * token;
23929
16
        if (
23930
16
            (token = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23931
16
        )
23932
5
        {
23933
5
            D(fprintf(stderr, "%*c+ invalid_import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
23934
5
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( token , "Expected one or more names after 'import'" );
23935
5
            if (_res == NULL && PyErr_Occurred()) {
23936
5
                p->error_indicator = 1;
23937
5
                p->level--;
23938
5
                return NULL;
23939
5
            }
23940
0
            goto done;
23941
5
        }
23942
11
        p->mark = _mark;
23943
11
        D(fprintf(stderr, "%*c%s invalid_import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
23944
11
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
23945
11
    }
23946
0
    _res = NULL;
23947
11
  done:
23948
11
    p->level--;
23949
11
    return _res;
23950
11
}
23951
23952
// invalid_with_stmt:
23953
//     | 'async'? 'with' ','.(expression ['as' star_target])+ NEWLINE
23954
//     | 'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE
23955
static void *
23956
invalid_with_stmt_rule(Parser *p)
23957
516
{
23958
516
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23959
0
        _Pypegen_stack_overflow(p);
23960
0
    }
23961
516
    if (p->error_indicator) {
23962
0
        p->level--;
23963
0
        return NULL;
23964
0
    }
23965
516
    void * _res = NULL;
23966
516
    int _mark = p->mark;
23967
516
    { // 'async'? 'with' ','.(expression ['as' star_target])+ NEWLINE
23968
516
        if (p->error_indicator) {
23969
0
            p->level--;
23970
0
            return NULL;
23971
0
        }
23972
516
        D(fprintf(stderr, "%*c> invalid_with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'? 'with' ','.(expression ['as' star_target])+ NEWLINE"));
23973
516
        asdl_seq * _gather_139_var;
23974
516
        Token * _keyword;
23975
516
        void *_opt_var;
23976
516
        UNUSED(_opt_var); // Silence compiler warnings
23977
516
        Token * newline_var;
23978
516
        if (
23979
516
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
23980
516
            &&
23981
516
            (_keyword = _PyPegen_expect_token(p, 652))  // token='with'
23982
516
            &&
23983
516
            (_gather_139_var = _gather_139_rule(p))  // ','.(expression ['as' star_target])+
23984
516
            &&
23985
516
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23986
516
        )
23987
41
        {
23988
41
            D(fprintf(stderr, "%*c+ invalid_with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'? 'with' ','.(expression ['as' star_target])+ NEWLINE"));
23989
41
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
23990
41
            if (_res == NULL && PyErr_Occurred()) {
23991
41
                p->error_indicator = 1;
23992
41
                p->level--;
23993
41
                return NULL;
23994
41
            }
23995
0
            goto done;
23996
41
        }
23997
475
        p->mark = _mark;
23998
475
        D(fprintf(stderr, "%*c%s invalid_with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
23999
475
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'with' ','.(expression ['as' star_target])+ NEWLINE"));
24000
475
    }
24001
0
    { // 'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE
24002
475
        if (p->error_indicator) {
24003
0
            p->level--;
24004
0
            return NULL;
24005
0
        }
24006
475
        D(fprintf(stderr, "%*c> invalid_with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE"));
24007
475
        asdl_seq * _gather_141_var;
24008
475
        Token * _keyword;
24009
475
        Token * _literal;
24010
475
        Token * _literal_1;
24011
475
        void *_opt_var;
24012
475
        UNUSED(_opt_var); // Silence compiler warnings
24013
475
        void *_opt_var_1;
24014
475
        UNUSED(_opt_var_1); // Silence compiler warnings
24015
475
        Token * newline_var;
24016
475
        if (
24017
475
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
24018
475
            &&
24019
475
            (_keyword = _PyPegen_expect_token(p, 652))  // token='with'
24020
475
            &&
24021
475
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
24022
475
            &&
24023
475
            (_gather_141_var = _gather_141_rule(p))  // ','.(expressions ['as' star_target])+
24024
475
            &&
24025
475
            (_opt_var_1 = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
24026
475
            &&
24027
475
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
24028
475
            &&
24029
475
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24030
475
        )
24031
6
        {
24032
6
            D(fprintf(stderr, "%*c+ invalid_with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE"));
24033
6
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
24034
6
            if (_res == NULL && PyErr_Occurred()) {
24035
6
                p->error_indicator = 1;
24036
6
                p->level--;
24037
6
                return NULL;
24038
6
            }
24039
0
            goto done;
24040
6
        }
24041
469
        p->mark = _mark;
24042
469
        D(fprintf(stderr, "%*c%s invalid_with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24043
469
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE"));
24044
469
    }
24045
0
    _res = NULL;
24046
469
  done:
24047
469
    p->level--;
24048
469
    return _res;
24049
469
}
24050
24051
// invalid_with_stmt_indent:
24052
//     | 'async'? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT
24053
//     | 'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT
24054
static void *
24055
invalid_with_stmt_indent_rule(Parser *p)
24056
2.65k
{
24057
2.65k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24058
0
        _Pypegen_stack_overflow(p);
24059
0
    }
24060
2.65k
    if (p->error_indicator) {
24061
0
        p->level--;
24062
0
        return NULL;
24063
0
    }
24064
2.65k
    void * _res = NULL;
24065
2.65k
    int _mark = p->mark;
24066
2.65k
    { // 'async'? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT
24067
2.65k
        if (p->error_indicator) {
24068
0
            p->level--;
24069
0
            return NULL;
24070
0
        }
24071
2.65k
        D(fprintf(stderr, "%*c> invalid_with_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT"));
24072
2.65k
        asdl_seq * _gather_139_var;
24073
2.65k
        Token * _literal;
24074
2.65k
        void *_opt_var;
24075
2.65k
        UNUSED(_opt_var); // Silence compiler warnings
24076
2.65k
        Token * a;
24077
2.65k
        Token * newline_var;
24078
2.65k
        if (
24079
2.65k
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
24080
2.65k
            &&
24081
2.65k
            (a = _PyPegen_expect_token(p, 652))  // token='with'
24082
2.65k
            &&
24083
2.65k
            (_gather_139_var = _gather_139_rule(p))  // ','.(expression ['as' star_target])+
24084
2.65k
            &&
24085
2.65k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24086
2.65k
            &&
24087
2.65k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24088
2.65k
            &&
24089
2.65k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24090
2.65k
        )
24091
18
        {
24092
18
            D(fprintf(stderr, "%*c+ invalid_with_stmt_indent[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT"));
24093
18
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'with' statement on line %d" , a -> lineno );
24094
18
            if (_res == NULL && PyErr_Occurred()) {
24095
18
                p->error_indicator = 1;
24096
18
                p->level--;
24097
18
                return NULL;
24098
18
            }
24099
0
            goto done;
24100
18
        }
24101
2.63k
        p->mark = _mark;
24102
2.63k
        D(fprintf(stderr, "%*c%s invalid_with_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
24103
2.63k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT"));
24104
2.63k
    }
24105
0
    { // 'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT
24106
2.63k
        if (p->error_indicator) {
24107
12
            p->level--;
24108
12
            return NULL;
24109
12
        }
24110
2.62k
        D(fprintf(stderr, "%*c> invalid_with_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT"));
24111
2.62k
        asdl_seq * _gather_141_var;
24112
2.62k
        Token * _literal;
24113
2.62k
        Token * _literal_1;
24114
2.62k
        Token * _literal_2;
24115
2.62k
        void *_opt_var;
24116
2.62k
        UNUSED(_opt_var); // Silence compiler warnings
24117
2.62k
        void *_opt_var_1;
24118
2.62k
        UNUSED(_opt_var_1); // Silence compiler warnings
24119
2.62k
        Token * a;
24120
2.62k
        Token * newline_var;
24121
2.62k
        if (
24122
2.62k
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
24123
2.62k
            &&
24124
2.62k
            (a = _PyPegen_expect_token(p, 652))  // token='with'
24125
2.62k
            &&
24126
2.62k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
24127
2.62k
            &&
24128
2.62k
            (_gather_141_var = _gather_141_rule(p))  // ','.(expressions ['as' star_target])+
24129
2.62k
            &&
24130
2.62k
            (_opt_var_1 = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
24131
2.62k
            &&
24132
2.62k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
24133
2.62k
            &&
24134
2.62k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
24135
2.62k
            &&
24136
2.62k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24137
2.62k
            &&
24138
2.62k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24139
2.62k
        )
24140
1
        {
24141
1
            D(fprintf(stderr, "%*c+ invalid_with_stmt_indent[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT"));
24142
1
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'with' statement on line %d" , a -> lineno );
24143
1
            if (_res == NULL && PyErr_Occurred()) {
24144
1
                p->error_indicator = 1;
24145
1
                p->level--;
24146
1
                return NULL;
24147
1
            }
24148
0
            goto done;
24149
1
        }
24150
2.62k
        p->mark = _mark;
24151
2.62k
        D(fprintf(stderr, "%*c%s invalid_with_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
24152
2.62k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT"));
24153
2.62k
    }
24154
0
    _res = NULL;
24155
2.62k
  done:
24156
2.62k
    p->level--;
24157
2.62k
    return _res;
24158
2.62k
}
24159
24160
// invalid_try_stmt:
24161
//     | 'try' ':' NEWLINE !INDENT
24162
//     | 'try' ':' block !('except' | 'finally')
24163
//     | 'try' ':' block* except_block+ 'except' '*' expression ['as' NAME] ':'
24164
//     | 'try' ':' block* except_star_block+ 'except' [expression ['as' NAME]] ':'
24165
static void *
24166
invalid_try_stmt_rule(Parser *p)
24167
1.94k
{
24168
1.94k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24169
0
        _Pypegen_stack_overflow(p);
24170
0
    }
24171
1.94k
    if (p->error_indicator) {
24172
0
        p->level--;
24173
0
        return NULL;
24174
0
    }
24175
1.94k
    void * _res = NULL;
24176
1.94k
    int _mark = p->mark;
24177
1.94k
    { // 'try' ':' NEWLINE !INDENT
24178
1.94k
        if (p->error_indicator) {
24179
0
            p->level--;
24180
0
            return NULL;
24181
0
        }
24182
1.94k
        D(fprintf(stderr, "%*c> invalid_try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' NEWLINE !INDENT"));
24183
1.94k
        Token * _literal;
24184
1.94k
        Token * a;
24185
1.94k
        Token * newline_var;
24186
1.94k
        if (
24187
1.94k
            (a = _PyPegen_expect_token(p, 661))  // token='try'
24188
1.94k
            &&
24189
1.94k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24190
1.94k
            &&
24191
1.94k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24192
1.94k
            &&
24193
1.94k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24194
1.94k
        )
24195
6
        {
24196
6
            D(fprintf(stderr, "%*c+ invalid_try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' NEWLINE !INDENT"));
24197
6
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'try' statement on line %d" , a -> lineno );
24198
6
            if (_res == NULL && PyErr_Occurred()) {
24199
6
                p->error_indicator = 1;
24200
6
                p->level--;
24201
6
                return NULL;
24202
6
            }
24203
0
            goto done;
24204
6
        }
24205
1.94k
        p->mark = _mark;
24206
1.94k
        D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24207
1.94k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' NEWLINE !INDENT"));
24208
1.94k
    }
24209
0
    { // 'try' ':' block !('except' | 'finally')
24210
1.94k
        if (p->error_indicator) {
24211
1
            p->level--;
24212
1
            return NULL;
24213
1
        }
24214
1.94k
        D(fprintf(stderr, "%*c> invalid_try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
24215
1.94k
        Token * _keyword;
24216
1.94k
        Token * _literal;
24217
1.94k
        asdl_stmt_seq* block_var;
24218
1.94k
        if (
24219
1.94k
            (_keyword = _PyPegen_expect_token(p, 661))  // token='try'
24220
1.94k
            &&
24221
1.94k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24222
1.94k
            &&
24223
1.94k
            (block_var = block_rule(p))  // block
24224
1.94k
            &&
24225
1.94k
            _PyPegen_lookahead(0, _tmp_142_rule, p)
24226
1.94k
        )
24227
38
        {
24228
38
            D(fprintf(stderr, "%*c+ invalid_try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
24229
38
            _res = RAISE_SYNTAX_ERROR ( "expected 'except' or 'finally' block" );
24230
38
            if (_res == NULL && PyErr_Occurred()) {
24231
38
                p->error_indicator = 1;
24232
38
                p->level--;
24233
38
                return NULL;
24234
38
            }
24235
0
            goto done;
24236
38
        }
24237
1.90k
        p->mark = _mark;
24238
1.90k
        D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24239
1.90k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
24240
1.90k
    }
24241
0
    { // 'try' ':' block* except_block+ 'except' '*' expression ['as' NAME] ':'
24242
1.90k
        if (p->error_indicator) {
24243
17
            p->level--;
24244
17
            return NULL;
24245
17
        }
24246
1.88k
        D(fprintf(stderr, "%*c> invalid_try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' block* except_block+ 'except' '*' expression ['as' NAME] ':'"));
24247
1.88k
        Token * _keyword;
24248
1.88k
        Token * _literal;
24249
1.88k
        Token * _literal_1;
24250
1.88k
        asdl_seq * _loop0_143_var;
24251
1.88k
        asdl_seq * _loop1_36_var;
24252
1.88k
        void *_opt_var;
24253
1.88k
        UNUSED(_opt_var); // Silence compiler warnings
24254
1.88k
        Token * a;
24255
1.88k
        Token * b;
24256
1.88k
        expr_ty expression_var;
24257
1.88k
        if (
24258
1.88k
            (_keyword = _PyPegen_expect_token(p, 661))  // token='try'
24259
1.88k
            &&
24260
1.88k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24261
1.88k
            &&
24262
1.88k
            (_loop0_143_var = _loop0_143_rule(p))  // block*
24263
1.88k
            &&
24264
1.88k
            (_loop1_36_var = _loop1_36_rule(p))  // except_block+
24265
1.88k
            &&
24266
1.88k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24267
1.88k
            &&
24268
1.88k
            (b = _PyPegen_expect_token(p, 16))  // token='*'
24269
1.88k
            &&
24270
1.88k
            (expression_var = expression_rule(p))  // expression
24271
1.88k
            &&
24272
1.88k
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
24273
1.88k
            &&
24274
1.88k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
24275
1.88k
        )
24276
2
        {
24277
2
            D(fprintf(stderr, "%*c+ invalid_try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' block* except_block+ 'except' '*' expression ['as' NAME] ':'"));
24278
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "cannot have both 'except' and 'except*' on the same 'try'" );
24279
2
            if (_res == NULL && PyErr_Occurred()) {
24280
2
                p->error_indicator = 1;
24281
2
                p->level--;
24282
2
                return NULL;
24283
2
            }
24284
0
            goto done;
24285
2
        }
24286
1.88k
        p->mark = _mark;
24287
1.88k
        D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24288
1.88k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block* except_block+ 'except' '*' expression ['as' NAME] ':'"));
24289
1.88k
    }
24290
0
    { // 'try' ':' block* except_star_block+ 'except' [expression ['as' NAME]] ':'
24291
1.88k
        if (p->error_indicator) {
24292
46
            p->level--;
24293
46
            return NULL;
24294
46
        }
24295
1.83k
        D(fprintf(stderr, "%*c> invalid_try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' block* except_star_block+ 'except' [expression ['as' NAME]] ':'"));
24296
1.83k
        Token * _keyword;
24297
1.83k
        Token * _literal;
24298
1.83k
        Token * _literal_1;
24299
1.83k
        asdl_seq * _loop0_143_var;
24300
1.83k
        asdl_seq * _loop1_37_var;
24301
1.83k
        void *_opt_var;
24302
1.83k
        UNUSED(_opt_var); // Silence compiler warnings
24303
1.83k
        Token * a;
24304
1.83k
        if (
24305
1.83k
            (_keyword = _PyPegen_expect_token(p, 661))  // token='try'
24306
1.83k
            &&
24307
1.83k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24308
1.83k
            &&
24309
1.83k
            (_loop0_143_var = _loop0_143_rule(p))  // block*
24310
1.83k
            &&
24311
1.83k
            (_loop1_37_var = _loop1_37_rule(p))  // except_star_block+
24312
1.83k
            &&
24313
1.83k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24314
1.83k
            &&
24315
1.83k
            (_opt_var = _tmp_144_rule(p), !p->error_indicator)  // [expression ['as' NAME]]
24316
1.83k
            &&
24317
1.83k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
24318
1.83k
        )
24319
3
        {
24320
3
            D(fprintf(stderr, "%*c+ invalid_try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' block* except_star_block+ 'except' [expression ['as' NAME]] ':'"));
24321
3
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot have both 'except' and 'except*' on the same 'try'" );
24322
3
            if (_res == NULL && PyErr_Occurred()) {
24323
3
                p->error_indicator = 1;
24324
3
                p->level--;
24325
3
                return NULL;
24326
3
            }
24327
0
            goto done;
24328
3
        }
24329
1.83k
        p->mark = _mark;
24330
1.83k
        D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24331
1.83k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block* except_star_block+ 'except' [expression ['as' NAME]] ':'"));
24332
1.83k
    }
24333
0
    _res = NULL;
24334
1.83k
  done:
24335
1.83k
    p->level--;
24336
1.83k
    return _res;
24337
1.83k
}
24338
24339
// invalid_except_stmt:
24340
//     | 'except' expression ',' expressions 'as' NAME ':'
24341
//     | 'except' expression ['as' NAME] NEWLINE
24342
//     | 'except' NEWLINE
24343
//     | 'except' expression 'as' expression ':' block
24344
static void *
24345
invalid_except_stmt_rule(Parser *p)
24346
3.37k
{
24347
3.37k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24348
0
        _Pypegen_stack_overflow(p);
24349
0
    }
24350
3.37k
    if (p->error_indicator) {
24351
0
        p->level--;
24352
0
        return NULL;
24353
0
    }
24354
3.37k
    void * _res = NULL;
24355
3.37k
    int _mark = p->mark;
24356
3.37k
    { // 'except' expression ',' expressions 'as' NAME ':'
24357
3.37k
        if (p->error_indicator) {
24358
0
            p->level--;
24359
0
            return NULL;
24360
0
        }
24361
3.37k
        D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ',' expressions 'as' NAME ':'"));
24362
3.37k
        Token * _keyword;
24363
3.37k
        Token * _keyword_1;
24364
3.37k
        Token * _literal;
24365
3.37k
        Token * _literal_1;
24366
3.37k
        expr_ty a;
24367
3.37k
        expr_ty expressions_var;
24368
3.37k
        expr_ty name_var;
24369
3.37k
        if (
24370
3.37k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
24371
3.37k
            &&
24372
3.37k
            (a = expression_rule(p))  // expression
24373
3.37k
            &&
24374
3.37k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
24375
3.37k
            &&
24376
3.37k
            (expressions_var = expressions_rule(p))  // expressions
24377
3.37k
            &&
24378
3.37k
            (_keyword_1 = _PyPegen_expect_token(p, 685))  // token='as'
24379
3.37k
            &&
24380
3.37k
            (name_var = _PyPegen_name_token(p))  // NAME
24381
3.37k
            &&
24382
3.37k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
24383
3.37k
        )
24384
1
        {
24385
1
            D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ',' expressions 'as' NAME ':'"));
24386
1
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "multiple exception types must be parenthesized when using 'as'" );
24387
1
            if (_res == NULL && PyErr_Occurred()) {
24388
1
                p->error_indicator = 1;
24389
1
                p->level--;
24390
1
                return NULL;
24391
1
            }
24392
0
            goto done;
24393
1
        }
24394
3.37k
        p->mark = _mark;
24395
3.37k
        D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24396
3.37k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ',' expressions 'as' NAME ':'"));
24397
3.37k
    }
24398
0
    { // 'except' expression ['as' NAME] NEWLINE
24399
3.37k
        if (p->error_indicator) {
24400
1
            p->level--;
24401
1
            return NULL;
24402
1
        }
24403
3.37k
        D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] NEWLINE"));
24404
3.37k
        void *_opt_var;
24405
3.37k
        UNUSED(_opt_var); // Silence compiler warnings
24406
3.37k
        Token * a;
24407
3.37k
        expr_ty expression_var;
24408
3.37k
        Token * newline_var;
24409
3.37k
        if (
24410
3.37k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24411
3.37k
            &&
24412
3.37k
            (expression_var = expression_rule(p))  // expression
24413
3.37k
            &&
24414
3.37k
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
24415
3.37k
            &&
24416
3.37k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24417
3.37k
        )
24418
4
        {
24419
4
            D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] NEWLINE"));
24420
4
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
24421
4
            if (_res == NULL && PyErr_Occurred()) {
24422
4
                p->error_indicator = 1;
24423
4
                p->level--;
24424
4
                return NULL;
24425
4
            }
24426
0
            goto done;
24427
4
        }
24428
3.37k
        p->mark = _mark;
24429
3.37k
        D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24430
3.37k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ['as' NAME] NEWLINE"));
24431
3.37k
    }
24432
0
    { // 'except' NEWLINE
24433
3.37k
        if (p->error_indicator) {
24434
0
            p->level--;
24435
0
            return NULL;
24436
0
        }
24437
3.37k
        D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' NEWLINE"));
24438
3.37k
        Token * a;
24439
3.37k
        Token * newline_var;
24440
3.37k
        if (
24441
3.37k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24442
3.37k
            &&
24443
3.37k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24444
3.37k
        )
24445
7
        {
24446
7
            D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' NEWLINE"));
24447
7
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
24448
7
            if (_res == NULL && PyErr_Occurred()) {
24449
7
                p->error_indicator = 1;
24450
7
                p->level--;
24451
7
                return NULL;
24452
7
            }
24453
0
            goto done;
24454
7
        }
24455
3.36k
        p->mark = _mark;
24456
3.36k
        D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24457
3.36k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' NEWLINE"));
24458
3.36k
    }
24459
0
    { // 'except' expression 'as' expression ':' block
24460
3.36k
        if (p->error_indicator) {
24461
0
            p->level--;
24462
0
            return NULL;
24463
0
        }
24464
3.36k
        D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression 'as' expression ':' block"));
24465
3.36k
        Token * _keyword;
24466
3.36k
        Token * _keyword_1;
24467
3.36k
        Token * _literal;
24468
3.36k
        expr_ty a;
24469
3.36k
        asdl_stmt_seq* block_var;
24470
3.36k
        expr_ty expression_var;
24471
3.36k
        if (
24472
3.36k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
24473
3.36k
            &&
24474
3.36k
            (expression_var = expression_rule(p))  // expression
24475
3.36k
            &&
24476
3.36k
            (_keyword_1 = _PyPegen_expect_token(p, 685))  // token='as'
24477
3.36k
            &&
24478
3.36k
            (a = expression_rule(p))  // expression
24479
3.36k
            &&
24480
3.36k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24481
3.36k
            &&
24482
3.36k
            (block_var = block_rule(p))  // block
24483
3.36k
        )
24484
1
        {
24485
1
            D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression 'as' expression ':' block"));
24486
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use except statement with %s" , _PyPegen_get_expr_name ( a ) );
24487
1
            if (_res == NULL && PyErr_Occurred()) {
24488
1
                p->error_indicator = 1;
24489
1
                p->level--;
24490
1
                return NULL;
24491
1
            }
24492
0
            goto done;
24493
1
        }
24494
3.36k
        p->mark = _mark;
24495
3.36k
        D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24496
3.36k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression 'as' expression ':' block"));
24497
3.36k
    }
24498
0
    _res = NULL;
24499
3.36k
  done:
24500
3.36k
    p->level--;
24501
3.36k
    return _res;
24502
3.36k
}
24503
24504
// invalid_except_star_stmt:
24505
//     | 'except' '*' expression ',' expressions 'as' NAME ':'
24506
//     | 'except' '*' expression ['as' NAME] NEWLINE
24507
//     | 'except' '*' (NEWLINE | ':')
24508
//     | 'except' '*' expression 'as' expression ':' block
24509
static void *
24510
invalid_except_star_stmt_rule(Parser *p)
24511
2.59k
{
24512
2.59k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24513
0
        _Pypegen_stack_overflow(p);
24514
0
    }
24515
2.59k
    if (p->error_indicator) {
24516
0
        p->level--;
24517
0
        return NULL;
24518
0
    }
24519
2.59k
    void * _res = NULL;
24520
2.59k
    int _mark = p->mark;
24521
2.59k
    { // 'except' '*' expression ',' expressions 'as' NAME ':'
24522
2.59k
        if (p->error_indicator) {
24523
0
            p->level--;
24524
0
            return NULL;
24525
0
        }
24526
2.59k
        D(fprintf(stderr, "%*c> invalid_except_star_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ',' expressions 'as' NAME ':'"));
24527
2.59k
        Token * _keyword;
24528
2.59k
        Token * _keyword_1;
24529
2.59k
        Token * _literal;
24530
2.59k
        Token * _literal_1;
24531
2.59k
        Token * _literal_2;
24532
2.59k
        expr_ty a;
24533
2.59k
        expr_ty expressions_var;
24534
2.59k
        expr_ty name_var;
24535
2.59k
        if (
24536
2.59k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
24537
2.59k
            &&
24538
2.59k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
24539
2.59k
            &&
24540
2.59k
            (a = expression_rule(p))  // expression
24541
2.59k
            &&
24542
2.59k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
24543
2.59k
            &&
24544
2.59k
            (expressions_var = expressions_rule(p))  // expressions
24545
2.59k
            &&
24546
2.59k
            (_keyword_1 = _PyPegen_expect_token(p, 685))  // token='as'
24547
2.59k
            &&
24548
2.59k
            (name_var = _PyPegen_name_token(p))  // NAME
24549
2.59k
            &&
24550
2.59k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
24551
2.59k
        )
24552
1
        {
24553
1
            D(fprintf(stderr, "%*c+ invalid_except_star_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ',' expressions 'as' NAME ':'"));
24554
1
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "multiple exception types must be parenthesized when using 'as'" );
24555
1
            if (_res == NULL && PyErr_Occurred()) {
24556
1
                p->error_indicator = 1;
24557
1
                p->level--;
24558
1
                return NULL;
24559
1
            }
24560
0
            goto done;
24561
1
        }
24562
2.59k
        p->mark = _mark;
24563
2.59k
        D(fprintf(stderr, "%*c%s invalid_except_star_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24564
2.59k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression ',' expressions 'as' NAME ':'"));
24565
2.59k
    }
24566
0
    { // 'except' '*' expression ['as' NAME] NEWLINE
24567
2.59k
        if (p->error_indicator) {
24568
1
            p->level--;
24569
1
            return NULL;
24570
1
        }
24571
2.59k
        D(fprintf(stderr, "%*c> invalid_except_star_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ['as' NAME] NEWLINE"));
24572
2.59k
        Token * _literal;
24573
2.59k
        void *_opt_var;
24574
2.59k
        UNUSED(_opt_var); // Silence compiler warnings
24575
2.59k
        Token * a;
24576
2.59k
        expr_ty expression_var;
24577
2.59k
        Token * newline_var;
24578
2.59k
        if (
24579
2.59k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24580
2.59k
            &&
24581
2.59k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
24582
2.59k
            &&
24583
2.59k
            (expression_var = expression_rule(p))  // expression
24584
2.59k
            &&
24585
2.59k
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
24586
2.59k
            &&
24587
2.59k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24588
2.59k
        )
24589
5
        {
24590
5
            D(fprintf(stderr, "%*c+ invalid_except_star_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ['as' NAME] NEWLINE"));
24591
5
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
24592
5
            if (_res == NULL && PyErr_Occurred()) {
24593
5
                p->error_indicator = 1;
24594
5
                p->level--;
24595
5
                return NULL;
24596
5
            }
24597
0
            goto done;
24598
5
        }
24599
2.59k
        p->mark = _mark;
24600
2.59k
        D(fprintf(stderr, "%*c%s invalid_except_star_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24601
2.59k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression ['as' NAME] NEWLINE"));
24602
2.59k
    }
24603
0
    { // 'except' '*' (NEWLINE | ':')
24604
2.59k
        if (p->error_indicator) {
24605
0
            p->level--;
24606
0
            return NULL;
24607
0
        }
24608
2.59k
        D(fprintf(stderr, "%*c> invalid_except_star_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' (NEWLINE | ':')"));
24609
2.59k
        Token * _literal;
24610
2.59k
        void *_tmp_145_var;
24611
2.59k
        Token * a;
24612
2.59k
        if (
24613
2.59k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24614
2.59k
            &&
24615
2.59k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
24616
2.59k
            &&
24617
2.59k
            (_tmp_145_var = _tmp_145_rule(p))  // NEWLINE | ':'
24618
2.59k
        )
24619
8
        {
24620
8
            D(fprintf(stderr, "%*c+ invalid_except_star_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' (NEWLINE | ':')"));
24621
8
            _res = RAISE_SYNTAX_ERROR ( "expected one or more exception types" );
24622
8
            if (_res == NULL && PyErr_Occurred()) {
24623
8
                p->error_indicator = 1;
24624
8
                p->level--;
24625
8
                return NULL;
24626
8
            }
24627
0
            goto done;
24628
8
        }
24629
2.58k
        p->mark = _mark;
24630
2.58k
        D(fprintf(stderr, "%*c%s invalid_except_star_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24631
2.58k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' (NEWLINE | ':')"));
24632
2.58k
    }
24633
0
    { // 'except' '*' expression 'as' expression ':' block
24634
2.58k
        if (p->error_indicator) {
24635
0
            p->level--;
24636
0
            return NULL;
24637
0
        }
24638
2.58k
        D(fprintf(stderr, "%*c> invalid_except_star_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression 'as' expression ':' block"));
24639
2.58k
        Token * _keyword;
24640
2.58k
        Token * _keyword_1;
24641
2.58k
        Token * _literal;
24642
2.58k
        Token * _literal_1;
24643
2.58k
        expr_ty a;
24644
2.58k
        asdl_stmt_seq* block_var;
24645
2.58k
        expr_ty expression_var;
24646
2.58k
        if (
24647
2.58k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
24648
2.58k
            &&
24649
2.58k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
24650
2.58k
            &&
24651
2.58k
            (expression_var = expression_rule(p))  // expression
24652
2.58k
            &&
24653
2.58k
            (_keyword_1 = _PyPegen_expect_token(p, 685))  // token='as'
24654
2.58k
            &&
24655
2.58k
            (a = expression_rule(p))  // expression
24656
2.58k
            &&
24657
2.58k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
24658
2.58k
            &&
24659
2.58k
            (block_var = block_rule(p))  // block
24660
2.58k
        )
24661
1
        {
24662
1
            D(fprintf(stderr, "%*c+ invalid_except_star_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expression 'as' expression ':' block"));
24663
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use except* statement with %s" , _PyPegen_get_expr_name ( a ) );
24664
1
            if (_res == NULL && PyErr_Occurred()) {
24665
1
                p->error_indicator = 1;
24666
1
                p->level--;
24667
1
                return NULL;
24668
1
            }
24669
0
            goto done;
24670
1
        }
24671
2.58k
        p->mark = _mark;
24672
2.58k
        D(fprintf(stderr, "%*c%s invalid_except_star_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24673
2.58k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression 'as' expression ':' block"));
24674
2.58k
    }
24675
0
    _res = NULL;
24676
2.58k
  done:
24677
2.58k
    p->level--;
24678
2.58k
    return _res;
24679
2.58k
}
24680
24681
// invalid_finally_stmt: 'finally' ':' NEWLINE !INDENT
24682
static void *
24683
invalid_finally_stmt_rule(Parser *p)
24684
3.18k
{
24685
3.18k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24686
0
        _Pypegen_stack_overflow(p);
24687
0
    }
24688
3.18k
    if (p->error_indicator) {
24689
0
        p->level--;
24690
0
        return NULL;
24691
0
    }
24692
3.18k
    void * _res = NULL;
24693
3.18k
    int _mark = p->mark;
24694
3.18k
    { // 'finally' ':' NEWLINE !INDENT
24695
3.18k
        if (p->error_indicator) {
24696
0
            p->level--;
24697
0
            return NULL;
24698
0
        }
24699
3.18k
        D(fprintf(stderr, "%*c> invalid_finally_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally' ':' NEWLINE !INDENT"));
24700
3.18k
        Token * _literal;
24701
3.18k
        Token * a;
24702
3.18k
        Token * newline_var;
24703
3.18k
        if (
24704
3.18k
            (a = _PyPegen_expect_token(p, 678))  // token='finally'
24705
3.18k
            &&
24706
3.18k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24707
3.18k
            &&
24708
3.18k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24709
3.18k
            &&
24710
3.18k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24711
3.18k
        )
24712
1
        {
24713
1
            D(fprintf(stderr, "%*c+ invalid_finally_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally' ':' NEWLINE !INDENT"));
24714
1
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'finally' statement on line %d" , a -> lineno );
24715
1
            if (_res == NULL && PyErr_Occurred()) {
24716
1
                p->error_indicator = 1;
24717
1
                p->level--;
24718
1
                return NULL;
24719
1
            }
24720
0
            goto done;
24721
1
        }
24722
3.18k
        p->mark = _mark;
24723
3.18k
        D(fprintf(stderr, "%*c%s invalid_finally_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24724
3.18k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally' ':' NEWLINE !INDENT"));
24725
3.18k
    }
24726
0
    _res = NULL;
24727
3.18k
  done:
24728
3.18k
    p->level--;
24729
3.18k
    return _res;
24730
3.18k
}
24731
24732
// invalid_except_stmt_indent:
24733
//     | 'except' expression ['as' NAME] ':' NEWLINE !INDENT
24734
//     | 'except' ':' NEWLINE !INDENT
24735
static void *
24736
invalid_except_stmt_indent_rule(Parser *p)
24737
6.71k
{
24738
6.71k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24739
0
        _Pypegen_stack_overflow(p);
24740
0
    }
24741
6.71k
    if (p->error_indicator) {
24742
0
        p->level--;
24743
0
        return NULL;
24744
0
    }
24745
6.71k
    void * _res = NULL;
24746
6.71k
    int _mark = p->mark;
24747
6.71k
    { // 'except' expression ['as' NAME] ':' NEWLINE !INDENT
24748
6.71k
        if (p->error_indicator) {
24749
0
            p->level--;
24750
0
            return NULL;
24751
0
        }
24752
6.71k
        D(fprintf(stderr, "%*c> invalid_except_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] ':' NEWLINE !INDENT"));
24753
6.71k
        Token * _literal;
24754
6.71k
        void *_opt_var;
24755
6.71k
        UNUSED(_opt_var); // Silence compiler warnings
24756
6.71k
        Token * a;
24757
6.71k
        expr_ty expression_var;
24758
6.71k
        Token * newline_var;
24759
6.71k
        if (
24760
6.71k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24761
6.71k
            &&
24762
6.71k
            (expression_var = expression_rule(p))  // expression
24763
6.71k
            &&
24764
6.71k
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
24765
6.71k
            &&
24766
6.71k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24767
6.71k
            &&
24768
6.71k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24769
6.71k
            &&
24770
6.71k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24771
6.71k
        )
24772
1
        {
24773
1
            D(fprintf(stderr, "%*c+ invalid_except_stmt_indent[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] ':' NEWLINE !INDENT"));
24774
1
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'except' statement on line %d" , a -> lineno );
24775
1
            if (_res == NULL && PyErr_Occurred()) {
24776
1
                p->error_indicator = 1;
24777
1
                p->level--;
24778
1
                return NULL;
24779
1
            }
24780
0
            goto done;
24781
1
        }
24782
6.71k
        p->mark = _mark;
24783
6.71k
        D(fprintf(stderr, "%*c%s invalid_except_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
24784
6.71k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ['as' NAME] ':' NEWLINE !INDENT"));
24785
6.71k
    }
24786
0
    { // 'except' ':' NEWLINE !INDENT
24787
6.71k
        if (p->error_indicator) {
24788
2
            p->level--;
24789
2
            return NULL;
24790
2
        }
24791
6.71k
        D(fprintf(stderr, "%*c> invalid_except_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
24792
6.71k
        Token * _literal;
24793
6.71k
        Token * a;
24794
6.71k
        Token * newline_var;
24795
6.71k
        if (
24796
6.71k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24797
6.71k
            &&
24798
6.71k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24799
6.71k
            &&
24800
6.71k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24801
6.71k
            &&
24802
6.71k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24803
6.71k
        )
24804
2
        {
24805
2
            D(fprintf(stderr, "%*c+ invalid_except_stmt_indent[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
24806
2
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'except' statement on line %d" , a -> lineno );
24807
2
            if (_res == NULL && PyErr_Occurred()) {
24808
2
                p->error_indicator = 1;
24809
2
                p->level--;
24810
2
                return NULL;
24811
2
            }
24812
0
            goto done;
24813
2
        }
24814
6.71k
        p->mark = _mark;
24815
6.71k
        D(fprintf(stderr, "%*c%s invalid_except_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
24816
6.71k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
24817
6.71k
    }
24818
0
    _res = NULL;
24819
6.71k
  done:
24820
6.71k
    p->level--;
24821
6.71k
    return _res;
24822
6.71k
}
24823
24824
// invalid_except_star_stmt_indent:
24825
//     | 'except' '*' expression ['as' NAME] ':' NEWLINE !INDENT
24826
static void *
24827
invalid_except_star_stmt_indent_rule(Parser *p)
24828
4.96k
{
24829
4.96k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24830
0
        _Pypegen_stack_overflow(p);
24831
0
    }
24832
4.96k
    if (p->error_indicator) {
24833
0
        p->level--;
24834
0
        return NULL;
24835
0
    }
24836
4.96k
    void * _res = NULL;
24837
4.96k
    int _mark = p->mark;
24838
4.96k
    { // 'except' '*' expression ['as' NAME] ':' NEWLINE !INDENT
24839
4.96k
        if (p->error_indicator) {
24840
0
            p->level--;
24841
0
            return NULL;
24842
0
        }
24843
4.96k
        D(fprintf(stderr, "%*c> invalid_except_star_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ['as' NAME] ':' NEWLINE !INDENT"));
24844
4.96k
        Token * _literal;
24845
4.96k
        Token * _literal_1;
24846
4.96k
        void *_opt_var;
24847
4.96k
        UNUSED(_opt_var); // Silence compiler warnings
24848
4.96k
        Token * a;
24849
4.96k
        expr_ty expression_var;
24850
4.96k
        Token * newline_var;
24851
4.96k
        if (
24852
4.96k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24853
4.96k
            &&
24854
4.96k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
24855
4.96k
            &&
24856
4.96k
            (expression_var = expression_rule(p))  // expression
24857
4.96k
            &&
24858
4.96k
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
24859
4.96k
            &&
24860
4.96k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
24861
4.96k
            &&
24862
4.96k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24863
4.96k
            &&
24864
4.96k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24865
4.96k
        )
24866
2
        {
24867
2
            D(fprintf(stderr, "%*c+ invalid_except_star_stmt_indent[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ['as' NAME] ':' NEWLINE !INDENT"));
24868
2
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'except*' statement on line %d" , a -> lineno );
24869
2
            if (_res == NULL && PyErr_Occurred()) {
24870
2
                p->error_indicator = 1;
24871
2
                p->level--;
24872
2
                return NULL;
24873
2
            }
24874
0
            goto done;
24875
2
        }
24876
4.96k
        p->mark = _mark;
24877
4.96k
        D(fprintf(stderr, "%*c%s invalid_except_star_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
24878
4.96k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression ['as' NAME] ':' NEWLINE !INDENT"));
24879
4.96k
    }
24880
0
    _res = NULL;
24881
4.96k
  done:
24882
4.96k
    p->level--;
24883
4.96k
    return _res;
24884
4.96k
}
24885
24886
// invalid_match_stmt:
24887
//     | "match" subject_expr NEWLINE
24888
//     | "match" subject_expr ':' NEWLINE !INDENT
24889
static void *
24890
invalid_match_stmt_rule(Parser *p)
24891
22.2k
{
24892
22.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24893
0
        _Pypegen_stack_overflow(p);
24894
0
    }
24895
22.2k
    if (p->error_indicator) {
24896
0
        p->level--;
24897
0
        return NULL;
24898
0
    }
24899
22.2k
    void * _res = NULL;
24900
22.2k
    int _mark = p->mark;
24901
22.2k
    { // "match" subject_expr NEWLINE
24902
22.2k
        if (p->error_indicator) {
24903
0
            p->level--;
24904
0
            return NULL;
24905
0
        }
24906
22.2k
        D(fprintf(stderr, "%*c> invalid_match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr NEWLINE"));
24907
22.2k
        expr_ty _keyword;
24908
22.2k
        Token * newline_var;
24909
22.2k
        expr_ty subject_expr_var;
24910
22.2k
        if (
24911
22.2k
            (_keyword = _PyPegen_expect_soft_keyword(p, "match"))  // soft_keyword='"match"'
24912
22.2k
            &&
24913
22.2k
            (subject_expr_var = subject_expr_rule(p))  // subject_expr
24914
22.2k
            &&
24915
22.2k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24916
22.2k
        )
24917
10
        {
24918
10
            D(fprintf(stderr, "%*c+ invalid_match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr NEWLINE"));
24919
10
            _res = CHECK_VERSION ( void* , 10 , "Pattern matching is" , RAISE_SYNTAX_ERROR ( "expected ':'" ) );
24920
10
            if (_res == NULL && PyErr_Occurred()) {
24921
10
                p->error_indicator = 1;
24922
10
                p->level--;
24923
10
                return NULL;
24924
10
            }
24925
0
            goto done;
24926
10
        }
24927
22.2k
        p->mark = _mark;
24928
22.2k
        D(fprintf(stderr, "%*c%s invalid_match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24929
22.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr NEWLINE"));
24930
22.2k
    }
24931
0
    { // "match" subject_expr ':' NEWLINE !INDENT
24932
22.2k
        if (p->error_indicator) {
24933
0
            p->level--;
24934
0
            return NULL;
24935
0
        }
24936
22.2k
        D(fprintf(stderr, "%*c> invalid_match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE !INDENT"));
24937
22.2k
        Token * _literal;
24938
22.2k
        expr_ty a;
24939
22.2k
        Token * newline_var;
24940
22.2k
        expr_ty subject;
24941
22.2k
        if (
24942
22.2k
            (a = _PyPegen_expect_soft_keyword(p, "match"))  // soft_keyword='"match"'
24943
22.2k
            &&
24944
22.2k
            (subject = subject_expr_rule(p))  // subject_expr
24945
22.2k
            &&
24946
22.2k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24947
22.2k
            &&
24948
22.2k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24949
22.2k
            &&
24950
22.2k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24951
22.2k
        )
24952
3
        {
24953
3
            D(fprintf(stderr, "%*c+ invalid_match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE !INDENT"));
24954
3
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'match' statement on line %d" , a -> lineno );
24955
3
            if (_res == NULL && PyErr_Occurred()) {
24956
3
                p->error_indicator = 1;
24957
3
                p->level--;
24958
3
                return NULL;
24959
3
            }
24960
0
            goto done;
24961
3
        }
24962
22.2k
        p->mark = _mark;
24963
22.2k
        D(fprintf(stderr, "%*c%s invalid_match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24964
22.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr ':' NEWLINE !INDENT"));
24965
22.2k
    }
24966
0
    _res = NULL;
24967
22.2k
  done:
24968
22.2k
    p->level--;
24969
22.2k
    return _res;
24970
22.2k
}
24971
24972
// invalid_case_block:
24973
//     | "case" patterns guard? NEWLINE
24974
//     | "case" patterns guard? ':' NEWLINE !INDENT
24975
static void *
24976
invalid_case_block_rule(Parser *p)
24977
2.44k
{
24978
2.44k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24979
0
        _Pypegen_stack_overflow(p);
24980
0
    }
24981
2.44k
    if (p->error_indicator) {
24982
0
        p->level--;
24983
0
        return NULL;
24984
0
    }
24985
2.44k
    void * _res = NULL;
24986
2.44k
    int _mark = p->mark;
24987
2.44k
    { // "case" patterns guard? NEWLINE
24988
2.44k
        if (p->error_indicator) {
24989
0
            p->level--;
24990
0
            return NULL;
24991
0
        }
24992
2.44k
        D(fprintf(stderr, "%*c> invalid_case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? NEWLINE"));
24993
2.44k
        expr_ty _keyword;
24994
2.44k
        void *_opt_var;
24995
2.44k
        UNUSED(_opt_var); // Silence compiler warnings
24996
2.44k
        Token * newline_var;
24997
2.44k
        pattern_ty patterns_var;
24998
2.44k
        if (
24999
2.44k
            (_keyword = _PyPegen_expect_soft_keyword(p, "case"))  // soft_keyword='"case"'
25000
2.44k
            &&
25001
2.44k
            (patterns_var = patterns_rule(p))  // patterns
25002
2.44k
            &&
25003
2.44k
            (_opt_var = guard_rule(p), !p->error_indicator)  // guard?
25004
2.44k
            &&
25005
2.44k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25006
2.44k
        )
25007
73
        {
25008
73
            D(fprintf(stderr, "%*c+ invalid_case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? NEWLINE"));
25009
73
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
25010
73
            if (_res == NULL && PyErr_Occurred()) {
25011
73
                p->error_indicator = 1;
25012
73
                p->level--;
25013
73
                return NULL;
25014
73
            }
25015
0
            goto done;
25016
73
        }
25017
2.37k
        p->mark = _mark;
25018
2.37k
        D(fprintf(stderr, "%*c%s invalid_case_block[%d-%d]: %s failed!\n", p->level, ' ',
25019
2.37k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"case\" patterns guard? NEWLINE"));
25020
2.37k
    }
25021
0
    { // "case" patterns guard? ':' NEWLINE !INDENT
25022
2.37k
        if (p->error_indicator) {
25023
59
            p->level--;
25024
59
            return NULL;
25025
59
        }
25026
2.31k
        D(fprintf(stderr, "%*c> invalid_case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' NEWLINE !INDENT"));
25027
2.31k
        Token * _literal;
25028
2.31k
        void *_opt_var;
25029
2.31k
        UNUSED(_opt_var); // Silence compiler warnings
25030
2.31k
        expr_ty a;
25031
2.31k
        Token * newline_var;
25032
2.31k
        pattern_ty patterns_var;
25033
2.31k
        if (
25034
2.31k
            (a = _PyPegen_expect_soft_keyword(p, "case"))  // soft_keyword='"case"'
25035
2.31k
            &&
25036
2.31k
            (patterns_var = patterns_rule(p))  // patterns
25037
2.31k
            &&
25038
2.31k
            (_opt_var = guard_rule(p), !p->error_indicator)  // guard?
25039
2.31k
            &&
25040
2.31k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25041
2.31k
            &&
25042
2.31k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25043
2.31k
            &&
25044
2.31k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25045
2.31k
        )
25046
12
        {
25047
12
            D(fprintf(stderr, "%*c+ invalid_case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' NEWLINE !INDENT"));
25048
12
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'case' statement on line %d" , a -> lineno );
25049
12
            if (_res == NULL && PyErr_Occurred()) {
25050
12
                p->error_indicator = 1;
25051
12
                p->level--;
25052
12
                return NULL;
25053
12
            }
25054
0
            goto done;
25055
12
        }
25056
2.30k
        p->mark = _mark;
25057
2.30k
        D(fprintf(stderr, "%*c%s invalid_case_block[%d-%d]: %s failed!\n", p->level, ' ',
25058
2.30k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"case\" patterns guard? ':' NEWLINE !INDENT"));
25059
2.30k
    }
25060
0
    _res = NULL;
25061
2.30k
  done:
25062
2.30k
    p->level--;
25063
2.30k
    return _res;
25064
2.30k
}
25065
25066
// invalid_as_pattern: or_pattern 'as' "_" | or_pattern 'as' expression
25067
static void *
25068
invalid_as_pattern_rule(Parser *p)
25069
47.0k
{
25070
47.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25071
0
        _Pypegen_stack_overflow(p);
25072
0
    }
25073
47.0k
    if (p->error_indicator) {
25074
0
        p->level--;
25075
0
        return NULL;
25076
0
    }
25077
47.0k
    void * _res = NULL;
25078
47.0k
    int _mark = p->mark;
25079
47.0k
    { // or_pattern 'as' "_"
25080
47.0k
        if (p->error_indicator) {
25081
0
            p->level--;
25082
0
            return NULL;
25083
0
        }
25084
47.0k
        D(fprintf(stderr, "%*c> invalid_as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' \"_\""));
25085
47.0k
        Token * _keyword;
25086
47.0k
        expr_ty a;
25087
47.0k
        pattern_ty or_pattern_var;
25088
47.0k
        if (
25089
47.0k
            (or_pattern_var = or_pattern_rule(p))  // or_pattern
25090
47.0k
            &&
25091
47.0k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
25092
47.0k
            &&
25093
47.0k
            (a = _PyPegen_expect_soft_keyword(p, "_"))  // soft_keyword='"_"'
25094
47.0k
        )
25095
1
        {
25096
1
            D(fprintf(stderr, "%*c+ invalid_as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' \"_\""));
25097
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use '_' as a target" );
25098
1
            if (_res == NULL && PyErr_Occurred()) {
25099
1
                p->error_indicator = 1;
25100
1
                p->level--;
25101
1
                return NULL;
25102
1
            }
25103
0
            goto done;
25104
1
        }
25105
47.0k
        p->mark = _mark;
25106
47.0k
        D(fprintf(stderr, "%*c%s invalid_as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
25107
47.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' \"_\""));
25108
47.0k
    }
25109
0
    { // or_pattern 'as' expression
25110
47.0k
        if (p->error_indicator) {
25111
0
            p->level--;
25112
0
            return NULL;
25113
0
        }
25114
47.0k
        D(fprintf(stderr, "%*c> invalid_as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' expression"));
25115
47.0k
        Token * _keyword;
25116
47.0k
        expr_ty a;
25117
47.0k
        pattern_ty or_pattern_var;
25118
47.0k
        if (
25119
47.0k
            (or_pattern_var = or_pattern_rule(p))  // or_pattern
25120
47.0k
            &&
25121
47.0k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
25122
47.0k
            &&
25123
47.0k
            (a = expression_rule(p))  // expression
25124
47.0k
        )
25125
1
        {
25126
1
            D(fprintf(stderr, "%*c+ invalid_as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' expression"));
25127
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use %s as pattern target" , _PyPegen_get_expr_name ( a ) );
25128
1
            if (_res == NULL && PyErr_Occurred()) {
25129
1
                p->error_indicator = 1;
25130
1
                p->level--;
25131
1
                return NULL;
25132
1
            }
25133
0
            goto done;
25134
1
        }
25135
47.0k
        p->mark = _mark;
25136
47.0k
        D(fprintf(stderr, "%*c%s invalid_as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
25137
47.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' expression"));
25138
47.0k
    }
25139
0
    _res = NULL;
25140
47.0k
  done:
25141
47.0k
    p->level--;
25142
47.0k
    return _res;
25143
47.0k
}
25144
25145
// invalid_class_pattern: name_or_attr '(' invalid_class_argument_pattern
25146
static void *
25147
invalid_class_pattern_rule(Parser *p)
25148
8.80k
{
25149
8.80k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25150
0
        _Pypegen_stack_overflow(p);
25151
0
    }
25152
8.80k
    if (p->error_indicator) {
25153
0
        p->level--;
25154
0
        return NULL;
25155
0
    }
25156
8.80k
    void * _res = NULL;
25157
8.80k
    int _mark = p->mark;
25158
8.80k
    { // name_or_attr '(' invalid_class_argument_pattern
25159
8.80k
        if (p->error_indicator) {
25160
0
            p->level--;
25161
0
            return NULL;
25162
0
        }
25163
8.80k
        D(fprintf(stderr, "%*c> invalid_class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern"));
25164
8.80k
        Token * _literal;
25165
8.80k
        asdl_pattern_seq* a;
25166
8.80k
        expr_ty name_or_attr_var;
25167
8.80k
        if (
25168
8.80k
            (name_or_attr_var = name_or_attr_rule(p))  // name_or_attr
25169
8.80k
            &&
25170
8.80k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
25171
8.80k
            &&
25172
8.80k
            (a = invalid_class_argument_pattern_rule(p))  // invalid_class_argument_pattern
25173
8.80k
        )
25174
608
        {
25175
608
            D(fprintf(stderr, "%*c+ invalid_class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern"));
25176
608
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( PyPegen_first_item ( a , pattern_ty ) , PyPegen_last_item ( a , pattern_ty ) , "positional patterns follow keyword patterns" );
25177
608
            if (_res == NULL && PyErr_Occurred()) {
25178
608
                p->error_indicator = 1;
25179
608
                p->level--;
25180
608
                return NULL;
25181
608
            }
25182
0
            goto done;
25183
608
        }
25184
8.20k
        p->mark = _mark;
25185
8.20k
        D(fprintf(stderr, "%*c%s invalid_class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
25186
8.20k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern"));
25187
8.20k
    }
25188
0
    _res = NULL;
25189
8.20k
  done:
25190
8.20k
    p->level--;
25191
8.20k
    return _res;
25192
8.20k
}
25193
25194
// invalid_class_argument_pattern:
25195
//     | [positional_patterns ','] keyword_patterns ',' positional_patterns
25196
static asdl_pattern_seq*
25197
invalid_class_argument_pattern_rule(Parser *p)
25198
3.38k
{
25199
3.38k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25200
0
        _Pypegen_stack_overflow(p);
25201
0
    }
25202
3.38k
    if (p->error_indicator) {
25203
0
        p->level--;
25204
0
        return NULL;
25205
0
    }
25206
3.38k
    asdl_pattern_seq* _res = NULL;
25207
3.38k
    int _mark = p->mark;
25208
3.38k
    { // [positional_patterns ','] keyword_patterns ',' positional_patterns
25209
3.38k
        if (p->error_indicator) {
25210
0
            p->level--;
25211
0
            return NULL;
25212
0
        }
25213
3.38k
        D(fprintf(stderr, "%*c> invalid_class_argument_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns"));
25214
3.38k
        Token * _literal;
25215
3.38k
        void *_opt_var;
25216
3.38k
        UNUSED(_opt_var); // Silence compiler warnings
25217
3.38k
        asdl_pattern_seq* a;
25218
3.38k
        asdl_seq* keyword_patterns_var;
25219
3.38k
        if (
25220
3.38k
            (_opt_var = _tmp_146_rule(p), !p->error_indicator)  // [positional_patterns ',']
25221
3.38k
            &&
25222
3.38k
            (keyword_patterns_var = keyword_patterns_rule(p))  // keyword_patterns
25223
3.38k
            &&
25224
3.38k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
25225
3.38k
            &&
25226
3.38k
            (a = positional_patterns_rule(p))  // positional_patterns
25227
3.38k
        )
25228
608
        {
25229
608
            D(fprintf(stderr, "%*c+ invalid_class_argument_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns"));
25230
608
            _res = a;
25231
608
            if (_res == NULL && PyErr_Occurred()) {
25232
0
                p->error_indicator = 1;
25233
0
                p->level--;
25234
0
                return NULL;
25235
0
            }
25236
608
            goto done;
25237
608
        }
25238
2.78k
        p->mark = _mark;
25239
2.78k
        D(fprintf(stderr, "%*c%s invalid_class_argument_pattern[%d-%d]: %s failed!\n", p->level, ' ',
25240
2.78k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns"));
25241
2.78k
    }
25242
0
    _res = NULL;
25243
3.38k
  done:
25244
3.38k
    p->level--;
25245
3.38k
    return _res;
25246
2.78k
}
25247
25248
// invalid_if_stmt:
25249
//     | 'if' named_expression NEWLINE
25250
//     | 'if' named_expression ':' NEWLINE !INDENT
25251
static void *
25252
invalid_if_stmt_rule(Parser *p)
25253
772
{
25254
772
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25255
0
        _Pypegen_stack_overflow(p);
25256
0
    }
25257
772
    if (p->error_indicator) {
25258
0
        p->level--;
25259
0
        return NULL;
25260
0
    }
25261
772
    void * _res = NULL;
25262
772
    int _mark = p->mark;
25263
772
    { // 'if' named_expression NEWLINE
25264
772
        if (p->error_indicator) {
25265
0
            p->level--;
25266
0
            return NULL;
25267
0
        }
25268
772
        D(fprintf(stderr, "%*c> invalid_if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression NEWLINE"));
25269
772
        Token * _keyword;
25270
772
        expr_ty named_expression_var;
25271
772
        Token * newline_var;
25272
772
        if (
25273
772
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
25274
772
            &&
25275
772
            (named_expression_var = named_expression_rule(p))  // named_expression
25276
772
            &&
25277
772
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25278
772
        )
25279
5
        {
25280
5
            D(fprintf(stderr, "%*c+ invalid_if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression NEWLINE"));
25281
5
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
25282
5
            if (_res == NULL && PyErr_Occurred()) {
25283
5
                p->error_indicator = 1;
25284
5
                p->level--;
25285
5
                return NULL;
25286
5
            }
25287
0
            goto done;
25288
5
        }
25289
767
        p->mark = _mark;
25290
767
        D(fprintf(stderr, "%*c%s invalid_if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25291
767
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression NEWLINE"));
25292
767
    }
25293
0
    { // 'if' named_expression ':' NEWLINE !INDENT
25294
767
        if (p->error_indicator) {
25295
4
            p->level--;
25296
4
            return NULL;
25297
4
        }
25298
763
        D(fprintf(stderr, "%*c> invalid_if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' NEWLINE !INDENT"));
25299
763
        Token * _literal;
25300
763
        Token * a;
25301
763
        expr_ty a_1;
25302
763
        Token * newline_var;
25303
763
        if (
25304
763
            (a = _PyPegen_expect_token(p, 687))  // token='if'
25305
763
            &&
25306
763
            (a_1 = named_expression_rule(p))  // named_expression
25307
763
            &&
25308
763
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25309
763
            &&
25310
763
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25311
763
            &&
25312
763
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25313
763
        )
25314
4
        {
25315
4
            D(fprintf(stderr, "%*c+ invalid_if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' NEWLINE !INDENT"));
25316
4
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'if' statement on line %d" , a -> lineno );
25317
4
            if (_res == NULL && PyErr_Occurred()) {
25318
4
                p->error_indicator = 1;
25319
4
                p->level--;
25320
4
                return NULL;
25321
4
            }
25322
0
            goto done;
25323
4
        }
25324
759
        p->mark = _mark;
25325
759
        D(fprintf(stderr, "%*c%s invalid_if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25326
759
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' NEWLINE !INDENT"));
25327
759
    }
25328
0
    _res = NULL;
25329
759
  done:
25330
759
    p->level--;
25331
759
    return _res;
25332
759
}
25333
25334
// invalid_elif_stmt:
25335
//     | 'elif' named_expression NEWLINE
25336
//     | 'elif' named_expression ':' NEWLINE !INDENT
25337
static void *
25338
invalid_elif_stmt_rule(Parser *p)
25339
1.02k
{
25340
1.02k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25341
0
        _Pypegen_stack_overflow(p);
25342
0
    }
25343
1.02k
    if (p->error_indicator) {
25344
0
        p->level--;
25345
0
        return NULL;
25346
0
    }
25347
1.02k
    void * _res = NULL;
25348
1.02k
    int _mark = p->mark;
25349
1.02k
    { // 'elif' named_expression NEWLINE
25350
1.02k
        if (p->error_indicator) {
25351
0
            p->level--;
25352
0
            return NULL;
25353
0
        }
25354
1.02k
        D(fprintf(stderr, "%*c> invalid_elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression NEWLINE"));
25355
1.02k
        Token * _keyword;
25356
1.02k
        expr_ty named_expression_var;
25357
1.02k
        Token * newline_var;
25358
1.02k
        if (
25359
1.02k
            (_keyword = _PyPegen_expect_token(p, 692))  // token='elif'
25360
1.02k
            &&
25361
1.02k
            (named_expression_var = named_expression_rule(p))  // named_expression
25362
1.02k
            &&
25363
1.02k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25364
1.02k
        )
25365
1
        {
25366
1
            D(fprintf(stderr, "%*c+ invalid_elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression NEWLINE"));
25367
1
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
25368
1
            if (_res == NULL && PyErr_Occurred()) {
25369
1
                p->error_indicator = 1;
25370
1
                p->level--;
25371
1
                return NULL;
25372
1
            }
25373
0
            goto done;
25374
1
        }
25375
1.02k
        p->mark = _mark;
25376
1.02k
        D(fprintf(stderr, "%*c%s invalid_elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25377
1.02k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression NEWLINE"));
25378
1.02k
    }
25379
0
    { // 'elif' named_expression ':' NEWLINE !INDENT
25380
1.02k
        if (p->error_indicator) {
25381
1
            p->level--;
25382
1
            return NULL;
25383
1
        }
25384
1.02k
        D(fprintf(stderr, "%*c> invalid_elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' NEWLINE !INDENT"));
25385
1.02k
        Token * _literal;
25386
1.02k
        Token * a;
25387
1.02k
        expr_ty named_expression_var;
25388
1.02k
        Token * newline_var;
25389
1.02k
        if (
25390
1.02k
            (a = _PyPegen_expect_token(p, 692))  // token='elif'
25391
1.02k
            &&
25392
1.02k
            (named_expression_var = named_expression_rule(p))  // named_expression
25393
1.02k
            &&
25394
1.02k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25395
1.02k
            &&
25396
1.02k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25397
1.02k
            &&
25398
1.02k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25399
1.02k
        )
25400
7
        {
25401
7
            D(fprintf(stderr, "%*c+ invalid_elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' NEWLINE !INDENT"));
25402
7
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'elif' statement on line %d" , a -> lineno );
25403
7
            if (_res == NULL && PyErr_Occurred()) {
25404
7
                p->error_indicator = 1;
25405
7
                p->level--;
25406
7
                return NULL;
25407
7
            }
25408
0
            goto done;
25409
7
        }
25410
1.01k
        p->mark = _mark;
25411
1.01k
        D(fprintf(stderr, "%*c%s invalid_elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25412
1.01k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' NEWLINE !INDENT"));
25413
1.01k
    }
25414
0
    _res = NULL;
25415
1.01k
  done:
25416
1.01k
    p->level--;
25417
1.01k
    return _res;
25418
1.01k
}
25419
25420
// invalid_else_stmt: 'else' ':' NEWLINE !INDENT | 'else' ':' block 'elif'
25421
static void *
25422
invalid_else_stmt_rule(Parser *p)
25423
3.01k
{
25424
3.01k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25425
0
        _Pypegen_stack_overflow(p);
25426
0
    }
25427
3.01k
    if (p->error_indicator) {
25428
0
        p->level--;
25429
0
        return NULL;
25430
0
    }
25431
3.01k
    void * _res = NULL;
25432
3.01k
    int _mark = p->mark;
25433
3.01k
    { // 'else' ':' NEWLINE !INDENT
25434
3.01k
        if (p->error_indicator) {
25435
0
            p->level--;
25436
0
            return NULL;
25437
0
        }
25438
3.01k
        D(fprintf(stderr, "%*c> invalid_else_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else' ':' NEWLINE !INDENT"));
25439
3.01k
        Token * _literal;
25440
3.01k
        Token * a;
25441
3.01k
        Token * newline_var;
25442
3.01k
        if (
25443
3.01k
            (a = _PyPegen_expect_token(p, 691))  // token='else'
25444
3.01k
            &&
25445
3.01k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25446
3.01k
            &&
25447
3.01k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25448
3.01k
            &&
25449
3.01k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25450
3.01k
        )
25451
3
        {
25452
3
            D(fprintf(stderr, "%*c+ invalid_else_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else' ':' NEWLINE !INDENT"));
25453
3
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'else' statement on line %d" , a -> lineno );
25454
3
            if (_res == NULL && PyErr_Occurred()) {
25455
3
                p->error_indicator = 1;
25456
3
                p->level--;
25457
3
                return NULL;
25458
3
            }
25459
0
            goto done;
25460
3
        }
25461
3.01k
        p->mark = _mark;
25462
3.01k
        D(fprintf(stderr, "%*c%s invalid_else_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25463
3.01k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else' ':' NEWLINE !INDENT"));
25464
3.01k
    }
25465
0
    { // 'else' ':' block 'elif'
25466
3.01k
        if (p->error_indicator) {
25467
0
            p->level--;
25468
0
            return NULL;
25469
0
        }
25470
3.01k
        D(fprintf(stderr, "%*c> invalid_else_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else' ':' block 'elif'"));
25471
3.01k
        Token * _keyword;
25472
3.01k
        Token * _keyword_1;
25473
3.01k
        Token * _literal;
25474
3.01k
        asdl_stmt_seq* block_var;
25475
3.01k
        if (
25476
3.01k
            (_keyword = _PyPegen_expect_token(p, 691))  // token='else'
25477
3.01k
            &&
25478
3.01k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25479
3.01k
            &&
25480
3.01k
            (block_var = block_rule(p))  // block
25481
3.01k
            &&
25482
3.01k
            (_keyword_1 = _PyPegen_expect_token(p, 692))  // token='elif'
25483
3.01k
        )
25484
1
        {
25485
1
            D(fprintf(stderr, "%*c+ invalid_else_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else' ':' block 'elif'"));
25486
1
            _res = RAISE_SYNTAX_ERROR ( "'elif' block follows an 'else' block" );
25487
1
            if (_res == NULL && PyErr_Occurred()) {
25488
1
                p->error_indicator = 1;
25489
1
                p->level--;
25490
1
                return NULL;
25491
1
            }
25492
0
            goto done;
25493
1
        }
25494
3.01k
        p->mark = _mark;
25495
3.01k
        D(fprintf(stderr, "%*c%s invalid_else_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25496
3.01k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else' ':' block 'elif'"));
25497
3.01k
    }
25498
0
    _res = NULL;
25499
3.01k
  done:
25500
3.01k
    p->level--;
25501
3.01k
    return _res;
25502
3.01k
}
25503
25504
// invalid_while_stmt:
25505
//     | 'while' named_expression NEWLINE
25506
//     | 'while' named_expression ':' NEWLINE !INDENT
25507
static void *
25508
invalid_while_stmt_rule(Parser *p)
25509
385
{
25510
385
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25511
0
        _Pypegen_stack_overflow(p);
25512
0
    }
25513
385
    if (p->error_indicator) {
25514
0
        p->level--;
25515
0
        return NULL;
25516
0
    }
25517
385
    void * _res = NULL;
25518
385
    int _mark = p->mark;
25519
385
    { // 'while' named_expression NEWLINE
25520
385
        if (p->error_indicator) {
25521
0
            p->level--;
25522
0
            return NULL;
25523
0
        }
25524
385
        D(fprintf(stderr, "%*c> invalid_while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression NEWLINE"));
25525
385
        Token * _keyword;
25526
385
        expr_ty named_expression_var;
25527
385
        Token * newline_var;
25528
385
        if (
25529
385
            (_keyword = _PyPegen_expect_token(p, 694))  // token='while'
25530
385
            &&
25531
385
            (named_expression_var = named_expression_rule(p))  // named_expression
25532
385
            &&
25533
385
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25534
385
        )
25535
3
        {
25536
3
            D(fprintf(stderr, "%*c+ invalid_while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'while' named_expression NEWLINE"));
25537
3
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
25538
3
            if (_res == NULL && PyErr_Occurred()) {
25539
3
                p->error_indicator = 1;
25540
3
                p->level--;
25541
3
                return NULL;
25542
3
            }
25543
0
            goto done;
25544
3
        }
25545
382
        p->mark = _mark;
25546
382
        D(fprintf(stderr, "%*c%s invalid_while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25547
382
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression NEWLINE"));
25548
382
    }
25549
0
    { // 'while' named_expression ':' NEWLINE !INDENT
25550
382
        if (p->error_indicator) {
25551
1
            p->level--;
25552
1
            return NULL;
25553
1
        }
25554
381
        D(fprintf(stderr, "%*c> invalid_while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' NEWLINE !INDENT"));
25555
381
        Token * _literal;
25556
381
        Token * a;
25557
381
        expr_ty named_expression_var;
25558
381
        Token * newline_var;
25559
381
        if (
25560
381
            (a = _PyPegen_expect_token(p, 694))  // token='while'
25561
381
            &&
25562
381
            (named_expression_var = named_expression_rule(p))  // named_expression
25563
381
            &&
25564
381
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25565
381
            &&
25566
381
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25567
381
            &&
25568
381
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25569
381
        )
25570
2
        {
25571
2
            D(fprintf(stderr, "%*c+ invalid_while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' NEWLINE !INDENT"));
25572
2
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'while' statement on line %d" , a -> lineno );
25573
2
            if (_res == NULL && PyErr_Occurred()) {
25574
2
                p->error_indicator = 1;
25575
2
                p->level--;
25576
2
                return NULL;
25577
2
            }
25578
0
            goto done;
25579
2
        }
25580
379
        p->mark = _mark;
25581
379
        D(fprintf(stderr, "%*c%s invalid_while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25582
379
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression ':' NEWLINE !INDENT"));
25583
379
    }
25584
0
    _res = NULL;
25585
379
  done:
25586
379
    p->level--;
25587
379
    return _res;
25588
379
}
25589
25590
// invalid_for_stmt:
25591
//     | 'async'? 'for' star_targets 'in' star_expressions NEWLINE
25592
//     | 'async'? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT
25593
static void *
25594
invalid_for_stmt_rule(Parser *p)
25595
649
{
25596
649
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25597
0
        _Pypegen_stack_overflow(p);
25598
0
    }
25599
649
    if (p->error_indicator) {
25600
0
        p->level--;
25601
0
        return NULL;
25602
0
    }
25603
649
    void * _res = NULL;
25604
649
    int _mark = p->mark;
25605
649
    { // 'async'? 'for' star_targets 'in' star_expressions NEWLINE
25606
649
        if (p->error_indicator) {
25607
0
            p->level--;
25608
0
            return NULL;
25609
0
        }
25610
649
        D(fprintf(stderr, "%*c> invalid_for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'? 'for' star_targets 'in' star_expressions NEWLINE"));
25611
649
        Token * _keyword;
25612
649
        Token * _keyword_1;
25613
649
        void *_opt_var;
25614
649
        UNUSED(_opt_var); // Silence compiler warnings
25615
649
        Token * newline_var;
25616
649
        expr_ty star_expressions_var;
25617
649
        expr_ty star_targets_var;
25618
649
        if (
25619
649
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
25620
649
            &&
25621
649
            (_keyword = _PyPegen_expect_token(p, 699))  // token='for'
25622
649
            &&
25623
649
            (star_targets_var = star_targets_rule(p))  // star_targets
25624
649
            &&
25625
649
            (_keyword_1 = _PyPegen_expect_token(p, 700))  // token='in'
25626
649
            &&
25627
649
            (star_expressions_var = star_expressions_rule(p))  // star_expressions
25628
649
            &&
25629
649
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25630
649
        )
25631
3
        {
25632
3
            D(fprintf(stderr, "%*c+ invalid_for_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'? 'for' star_targets 'in' star_expressions NEWLINE"));
25633
3
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
25634
3
            if (_res == NULL && PyErr_Occurred()) {
25635
3
                p->error_indicator = 1;
25636
3
                p->level--;
25637
3
                return NULL;
25638
3
            }
25639
0
            goto done;
25640
3
        }
25641
646
        p->mark = _mark;
25642
646
        D(fprintf(stderr, "%*c%s invalid_for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25643
646
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'for' star_targets 'in' star_expressions NEWLINE"));
25644
646
    }
25645
0
    { // 'async'? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT
25646
646
        if (p->error_indicator) {
25647
3
            p->level--;
25648
3
            return NULL;
25649
3
        }
25650
643
        D(fprintf(stderr, "%*c> invalid_for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT"));
25651
643
        Token * _keyword;
25652
643
        Token * _literal;
25653
643
        void *_opt_var;
25654
643
        UNUSED(_opt_var); // Silence compiler warnings
25655
643
        Token * a;
25656
643
        Token * newline_var;
25657
643
        expr_ty star_expressions_var;
25658
643
        expr_ty star_targets_var;
25659
643
        if (
25660
643
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
25661
643
            &&
25662
643
            (a = _PyPegen_expect_token(p, 699))  // token='for'
25663
643
            &&
25664
643
            (star_targets_var = star_targets_rule(p))  // star_targets
25665
643
            &&
25666
643
            (_keyword = _PyPegen_expect_token(p, 700))  // token='in'
25667
643
            &&
25668
643
            (star_expressions_var = star_expressions_rule(p))  // star_expressions
25669
643
            &&
25670
643
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25671
643
            &&
25672
643
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25673
643
            &&
25674
643
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25675
643
        )
25676
4
        {
25677
4
            D(fprintf(stderr, "%*c+ invalid_for_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT"));
25678
4
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'for' statement on line %d" , a -> lineno );
25679
4
            if (_res == NULL && PyErr_Occurred()) {
25680
4
                p->error_indicator = 1;
25681
4
                p->level--;
25682
4
                return NULL;
25683
4
            }
25684
0
            goto done;
25685
4
        }
25686
639
        p->mark = _mark;
25687
639
        D(fprintf(stderr, "%*c%s invalid_for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25688
639
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT"));
25689
639
    }
25690
0
    _res = NULL;
25691
639
  done:
25692
639
    p->level--;
25693
639
    return _res;
25694
639
}
25695
25696
// invalid_def_raw:
25697
//     | 'async'? 'def' NAME type_params? '(' params? ')' ['->' expression] ':' NEWLINE !INDENT
25698
//     | 'async'? 'def' NAME type_params? &&'(' params? ')' ['->' expression] &&':' func_type_comment? block
25699
static void *
25700
invalid_def_raw_rule(Parser *p)
25701
3.99k
{
25702
3.99k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25703
0
        _Pypegen_stack_overflow(p);
25704
0
    }
25705
3.99k
    if (p->error_indicator) {
25706
0
        p->level--;
25707
0
        return NULL;
25708
0
    }
25709
3.99k
    void * _res = NULL;
25710
3.99k
    int _mark = p->mark;
25711
3.99k
    { // 'async'? 'def' NAME type_params? '(' params? ')' ['->' expression] ':' NEWLINE !INDENT
25712
3.99k
        if (p->error_indicator) {
25713
0
            p->level--;
25714
0
            return NULL;
25715
0
        }
25716
3.99k
        D(fprintf(stderr, "%*c> invalid_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'? 'def' NAME type_params? '(' params? ')' ['->' expression] ':' NEWLINE !INDENT"));
25717
3.99k
        Token * _literal;
25718
3.99k
        Token * _literal_1;
25719
3.99k
        Token * _literal_2;
25720
3.99k
        void *_opt_var;
25721
3.99k
        UNUSED(_opt_var); // Silence compiler warnings
25722
3.99k
        void *_opt_var_1;
25723
3.99k
        UNUSED(_opt_var_1); // Silence compiler warnings
25724
3.99k
        void *_opt_var_2;
25725
3.99k
        UNUSED(_opt_var_2); // Silence compiler warnings
25726
3.99k
        void *_opt_var_3;
25727
3.99k
        UNUSED(_opt_var_3); // Silence compiler warnings
25728
3.99k
        Token * a;
25729
3.99k
        expr_ty name_var;
25730
3.99k
        Token * newline_var;
25731
3.99k
        if (
25732
3.99k
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
25733
3.99k
            &&
25734
3.99k
            (a = _PyPegen_expect_token(p, 704))  // token='def'
25735
3.99k
            &&
25736
3.99k
            (name_var = _PyPegen_name_token(p))  // NAME
25737
3.99k
            &&
25738
3.99k
            (_opt_var_1 = type_params_rule(p), !p->error_indicator)  // type_params?
25739
3.99k
            &&
25740
3.99k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
25741
3.99k
            &&
25742
3.99k
            (_opt_var_2 = params_rule(p), !p->error_indicator)  // params?
25743
3.99k
            &&
25744
3.99k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
25745
3.99k
            &&
25746
3.99k
            (_opt_var_3 = _tmp_26_rule(p), !p->error_indicator)  // ['->' expression]
25747
3.99k
            &&
25748
3.99k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
25749
3.99k
            &&
25750
3.99k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25751
3.99k
            &&
25752
3.99k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25753
3.99k
        )
25754
26
        {
25755
26
            D(fprintf(stderr, "%*c+ invalid_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'? 'def' NAME type_params? '(' params? ')' ['->' expression] ':' NEWLINE !INDENT"));
25756
26
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after function definition on line %d" , a -> lineno );
25757
26
            if (_res == NULL && PyErr_Occurred()) {
25758
26
                p->error_indicator = 1;
25759
26
                p->level--;
25760
26
                return NULL;
25761
26
            }
25762
0
            goto done;
25763
26
        }
25764
3.96k
        p->mark = _mark;
25765
3.96k
        D(fprintf(stderr, "%*c%s invalid_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
25766
3.96k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'def' NAME type_params? '(' params? ')' ['->' expression] ':' NEWLINE !INDENT"));
25767
3.96k
    }
25768
0
    { // 'async'? 'def' NAME type_params? &&'(' params? ')' ['->' expression] &&':' func_type_comment? block
25769
3.96k
        if (p->error_indicator) {
25770
57
            p->level--;
25771
57
            return NULL;
25772
57
        }
25773
3.90k
        D(fprintf(stderr, "%*c> invalid_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'? 'def' NAME type_params? &&'(' params? ')' ['->' expression] &&':' func_type_comment? block"));
25774
3.90k
        Token * _keyword;
25775
3.90k
        Token * _literal;
25776
3.90k
        Token * _literal_1;
25777
3.90k
        Token * _literal_2;
25778
3.90k
        void *_opt_var;
25779
3.90k
        UNUSED(_opt_var); // Silence compiler warnings
25780
3.90k
        void *_opt_var_1;
25781
3.90k
        UNUSED(_opt_var_1); // Silence compiler warnings
25782
3.90k
        void *_opt_var_2;
25783
3.90k
        UNUSED(_opt_var_2); // Silence compiler warnings
25784
3.90k
        void *_opt_var_3;
25785
3.90k
        UNUSED(_opt_var_3); // Silence compiler warnings
25786
3.90k
        void *_opt_var_4;
25787
3.90k
        UNUSED(_opt_var_4); // Silence compiler warnings
25788
3.90k
        asdl_stmt_seq* block_var;
25789
3.90k
        expr_ty name_var;
25790
3.90k
        if (
25791
3.90k
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
25792
3.90k
            &&
25793
3.90k
            (_keyword = _PyPegen_expect_token(p, 704))  // token='def'
25794
3.90k
            &&
25795
3.90k
            (name_var = _PyPegen_name_token(p))  // NAME
25796
3.90k
            &&
25797
3.90k
            (_opt_var_1 = type_params_rule(p), !p->error_indicator)  // type_params?
25798
3.90k
            &&
25799
3.90k
            (_literal = _PyPegen_expect_forced_token(p, 7, "("))  // forced_token='('
25800
3.90k
            &&
25801
3.90k
            (_opt_var_2 = params_rule(p), !p->error_indicator)  // params?
25802
3.90k
            &&
25803
3.90k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
25804
3.90k
            &&
25805
3.90k
            (_opt_var_3 = _tmp_26_rule(p), !p->error_indicator)  // ['->' expression]
25806
3.90k
            &&
25807
3.90k
            (_literal_2 = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
25808
3.90k
            &&
25809
3.90k
            (_opt_var_4 = func_type_comment_rule(p), !p->error_indicator)  // func_type_comment?
25810
3.90k
            &&
25811
3.90k
            (block_var = block_rule(p))  // block
25812
3.90k
        )
25813
1.97k
        {
25814
1.97k
            D(fprintf(stderr, "%*c+ invalid_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'? 'def' NAME type_params? &&'(' params? ')' ['->' expression] &&':' func_type_comment? block"));
25815
1.97k
            _res = _PyPegen_dummy_name(p, _opt_var, _keyword, name_var, _opt_var_1, _literal, _opt_var_2, _literal_1, _opt_var_3, _literal_2, _opt_var_4, block_var);
25816
1.97k
            goto done;
25817
1.97k
        }
25818
1.93k
        p->mark = _mark;
25819
1.93k
        D(fprintf(stderr, "%*c%s invalid_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
25820
1.93k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'def' NAME type_params? &&'(' params? ')' ['->' expression] &&':' func_type_comment? block"));
25821
1.93k
    }
25822
0
    _res = NULL;
25823
3.90k
  done:
25824
3.90k
    p->level--;
25825
3.90k
    return _res;
25826
1.93k
}
25827
25828
// invalid_class_def_raw:
25829
//     | 'class' NAME type_params? ['(' arguments? ')'] NEWLINE
25830
//     | 'class' NAME type_params? ['(' arguments? ')'] ':' NEWLINE !INDENT
25831
static void *
25832
invalid_class_def_raw_rule(Parser *p)
25833
1.26k
{
25834
1.26k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25835
0
        _Pypegen_stack_overflow(p);
25836
0
    }
25837
1.26k
    if (p->error_indicator) {
25838
0
        p->level--;
25839
0
        return NULL;
25840
0
    }
25841
1.26k
    void * _res = NULL;
25842
1.26k
    int _mark = p->mark;
25843
1.26k
    { // 'class' NAME type_params? ['(' arguments? ')'] NEWLINE
25844
1.26k
        if (p->error_indicator) {
25845
0
            p->level--;
25846
0
            return NULL;
25847
0
        }
25848
1.26k
        D(fprintf(stderr, "%*c> invalid_class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] NEWLINE"));
25849
1.26k
        Token * _keyword;
25850
1.26k
        void *_opt_var;
25851
1.26k
        UNUSED(_opt_var); // Silence compiler warnings
25852
1.26k
        void *_opt_var_1;
25853
1.26k
        UNUSED(_opt_var_1); // Silence compiler warnings
25854
1.26k
        expr_ty name_var;
25855
1.26k
        Token * newline_var;
25856
1.26k
        if (
25857
1.26k
            (_keyword = _PyPegen_expect_token(p, 706))  // token='class'
25858
1.26k
            &&
25859
1.26k
            (name_var = _PyPegen_name_token(p))  // NAME
25860
1.26k
            &&
25861
1.26k
            (_opt_var = type_params_rule(p), !p->error_indicator)  // type_params?
25862
1.26k
            &&
25863
1.26k
            (_opt_var_1 = _tmp_25_rule(p), !p->error_indicator)  // ['(' arguments? ')']
25864
1.26k
            &&
25865
1.26k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25866
1.26k
        )
25867
9
        {
25868
9
            D(fprintf(stderr, "%*c+ invalid_class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] NEWLINE"));
25869
9
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
25870
9
            if (_res == NULL && PyErr_Occurred()) {
25871
9
                p->error_indicator = 1;
25872
9
                p->level--;
25873
9
                return NULL;
25874
9
            }
25875
0
            goto done;
25876
9
        }
25877
1.25k
        p->mark = _mark;
25878
1.25k
        D(fprintf(stderr, "%*c%s invalid_class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
25879
1.25k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] NEWLINE"));
25880
1.25k
    }
25881
0
    { // 'class' NAME type_params? ['(' arguments? ')'] ':' NEWLINE !INDENT
25882
1.25k
        if (p->error_indicator) {
25883
4
            p->level--;
25884
4
            return NULL;
25885
4
        }
25886
1.24k
        D(fprintf(stderr, "%*c> invalid_class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] ':' NEWLINE !INDENT"));
25887
1.24k
        Token * _literal;
25888
1.24k
        void *_opt_var;
25889
1.24k
        UNUSED(_opt_var); // Silence compiler warnings
25890
1.24k
        void *_opt_var_1;
25891
1.24k
        UNUSED(_opt_var_1); // Silence compiler warnings
25892
1.24k
        Token * a;
25893
1.24k
        expr_ty name_var;
25894
1.24k
        Token * newline_var;
25895
1.24k
        if (
25896
1.24k
            (a = _PyPegen_expect_token(p, 706))  // token='class'
25897
1.24k
            &&
25898
1.24k
            (name_var = _PyPegen_name_token(p))  // NAME
25899
1.24k
            &&
25900
1.24k
            (_opt_var = type_params_rule(p), !p->error_indicator)  // type_params?
25901
1.24k
            &&
25902
1.24k
            (_opt_var_1 = _tmp_25_rule(p), !p->error_indicator)  // ['(' arguments? ')']
25903
1.24k
            &&
25904
1.24k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25905
1.24k
            &&
25906
1.24k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25907
1.24k
            &&
25908
1.24k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25909
1.24k
        )
25910
7
        {
25911
7
            D(fprintf(stderr, "%*c+ invalid_class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] ':' NEWLINE !INDENT"));
25912
7
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after class definition on line %d" , a -> lineno );
25913
7
            if (_res == NULL && PyErr_Occurred()) {
25914
7
                p->error_indicator = 1;
25915
7
                p->level--;
25916
7
                return NULL;
25917
7
            }
25918
0
            goto done;
25919
7
        }
25920
1.24k
        p->mark = _mark;
25921
1.24k
        D(fprintf(stderr, "%*c%s invalid_class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
25922
1.24k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] ':' NEWLINE !INDENT"));
25923
1.24k
    }
25924
0
    _res = NULL;
25925
1.24k
  done:
25926
1.24k
    p->level--;
25927
1.24k
    return _res;
25928
1.24k
}
25929
25930
// invalid_double_starred_kvpairs:
25931
//     | ','.double_starred_kvpair+ ',' invalid_kvpair
25932
//     | expression ':' '*' bitwise_or
25933
//     | expression ':' &('}' | ',')
25934
static void *
25935
invalid_double_starred_kvpairs_rule(Parser *p)
25936
11.9k
{
25937
11.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25938
0
        _Pypegen_stack_overflow(p);
25939
0
    }
25940
11.9k
    if (p->error_indicator) {
25941
0
        p->level--;
25942
0
        return NULL;
25943
0
    }
25944
11.9k
    void * _res = NULL;
25945
11.9k
    int _mark = p->mark;
25946
11.9k
    { // ','.double_starred_kvpair+ ',' invalid_kvpair
25947
11.9k
        if (p->error_indicator) {
25948
0
            p->level--;
25949
0
            return NULL;
25950
0
        }
25951
11.9k
        D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair"));
25952
11.9k
        asdl_seq * _gather_83_var;
25953
11.9k
        Token * _literal;
25954
11.9k
        void *invalid_kvpair_var;
25955
11.9k
        if (
25956
11.9k
            (_gather_83_var = _gather_83_rule(p))  // ','.double_starred_kvpair+
25957
11.9k
            &&
25958
11.9k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
25959
11.9k
            &&
25960
11.9k
            (invalid_kvpair_var = invalid_kvpair_rule(p))  // invalid_kvpair
25961
11.9k
        )
25962
0
        {
25963
0
            D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair"));
25964
0
            _res = _PyPegen_dummy_name(p, _gather_83_var, _literal, invalid_kvpair_var);
25965
0
            goto done;
25966
0
        }
25967
11.9k
        p->mark = _mark;
25968
11.9k
        D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
25969
11.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair"));
25970
11.9k
    }
25971
0
    { // expression ':' '*' bitwise_or
25972
11.9k
        if (p->error_indicator) {
25973
70
            p->level--;
25974
70
            return NULL;
25975
70
        }
25976
11.8k
        D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
25977
11.8k
        Token * _literal;
25978
11.8k
        Token * a;
25979
11.8k
        expr_ty bitwise_or_var;
25980
11.8k
        expr_ty expression_var;
25981
11.8k
        if (
25982
11.8k
            (expression_var = expression_rule(p))  // expression
25983
11.8k
            &&
25984
11.8k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25985
11.8k
            &&
25986
11.8k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
25987
11.8k
            &&
25988
11.8k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
25989
11.8k
        )
25990
1
        {
25991
1
            D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
25992
1
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "cannot use a starred expression in a dictionary value" );
25993
1
            if (_res == NULL && PyErr_Occurred()) {
25994
1
                p->error_indicator = 1;
25995
1
                p->level--;
25996
1
                return NULL;
25997
1
            }
25998
0
            goto done;
25999
1
        }
26000
11.8k
        p->mark = _mark;
26001
11.8k
        D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
26002
11.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' '*' bitwise_or"));
26003
11.8k
    }
26004
0
    { // expression ':' &('}' | ',')
26005
11.8k
        if (p->error_indicator) {
26006
260
            p->level--;
26007
260
            return NULL;
26008
260
        }
26009
11.6k
        D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
26010
11.6k
        Token * a;
26011
11.6k
        expr_ty expression_var;
26012
11.6k
        if (
26013
11.6k
            (expression_var = expression_rule(p))  // expression
26014
11.6k
            &&
26015
11.6k
            (a = _PyPegen_expect_token(p, 11))  // token=':'
26016
11.6k
            &&
26017
11.6k
            _PyPegen_lookahead(1, _tmp_147_rule, p)
26018
11.6k
        )
26019
4
        {
26020
4
            D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
26021
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expression expected after dictionary key and ':'" );
26022
4
            if (_res == NULL && PyErr_Occurred()) {
26023
4
                p->error_indicator = 1;
26024
4
                p->level--;
26025
4
                return NULL;
26026
4
            }
26027
0
            goto done;
26028
4
        }
26029
11.6k
        p->mark = _mark;
26030
11.6k
        D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
26031
11.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' &('}' | ',')"));
26032
11.6k
    }
26033
0
    _res = NULL;
26034
11.6k
  done:
26035
11.6k
    p->level--;
26036
11.6k
    return _res;
26037
11.6k
}
26038
26039
// invalid_kvpair:
26040
//     | expression !(':')
26041
//     | expression ':' '*' bitwise_or
26042
//     | expression ':' &('}' | ',')
26043
static void *
26044
invalid_kvpair_rule(Parser *p)
26045
953
{
26046
953
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26047
0
        _Pypegen_stack_overflow(p);
26048
0
    }
26049
953
    if (p->error_indicator) {
26050
0
        p->level--;
26051
0
        return NULL;
26052
0
    }
26053
953
    void * _res = NULL;
26054
953
    int _mark = p->mark;
26055
953
    { // expression !(':')
26056
953
        if (p->error_indicator) {
26057
0
            p->level--;
26058
0
            return NULL;
26059
0
        }
26060
953
        D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !(':')"));
26061
953
        expr_ty a;
26062
953
        if (
26063
953
            (a = expression_rule(p))  // expression
26064
953
            &&
26065
953
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 11)  // token=(':')
26066
953
        )
26067
2
        {
26068
2
            D(fprintf(stderr, "%*c+ invalid_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !(':')"));
26069
2
            _res = RAISE_ERROR_KNOWN_LOCATION ( p , PyExc_SyntaxError , a -> lineno , a -> end_col_offset - 1 , a -> end_lineno , - 1 , "':' expected after dictionary key" );
26070
2
            if (_res == NULL && PyErr_Occurred()) {
26071
2
                p->error_indicator = 1;
26072
2
                p->level--;
26073
2
                return NULL;
26074
2
            }
26075
0
            goto done;
26076
2
        }
26077
951
        p->mark = _mark;
26078
951
        D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
26079
951
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !(':')"));
26080
951
    }
26081
0
    { // expression ':' '*' bitwise_or
26082
951
        if (p->error_indicator) {
26083
0
            p->level--;
26084
0
            return NULL;
26085
0
        }
26086
951
        D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
26087
951
        Token * _literal;
26088
951
        Token * a;
26089
951
        expr_ty bitwise_or_var;
26090
951
        expr_ty expression_var;
26091
951
        if (
26092
951
            (expression_var = expression_rule(p))  // expression
26093
951
            &&
26094
951
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
26095
951
            &&
26096
951
            (a = _PyPegen_expect_token(p, 16))  // token='*'
26097
951
            &&
26098
951
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
26099
951
        )
26100
1
        {
26101
1
            D(fprintf(stderr, "%*c+ invalid_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
26102
1
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "cannot use a starred expression in a dictionary value" );
26103
1
            if (_res == NULL && PyErr_Occurred()) {
26104
1
                p->error_indicator = 1;
26105
1
                p->level--;
26106
1
                return NULL;
26107
1
            }
26108
0
            goto done;
26109
1
        }
26110
950
        p->mark = _mark;
26111
950
        D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
26112
950
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' '*' bitwise_or"));
26113
950
    }
26114
0
    { // expression ':' &('}' | ',')
26115
950
        if (p->error_indicator) {
26116
66
            p->level--;
26117
66
            return NULL;
26118
66
        }
26119
884
        D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
26120
884
        Token * a;
26121
884
        expr_ty expression_var;
26122
884
        if (
26123
884
            (expression_var = expression_rule(p))  // expression
26124
884
            &&
26125
884
            (a = _PyPegen_expect_token(p, 11))  // token=':'
26126
884
            &&
26127
884
            _PyPegen_lookahead(1, _tmp_147_rule, p)
26128
884
        )
26129
1
        {
26130
1
            D(fprintf(stderr, "%*c+ invalid_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
26131
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expression expected after dictionary key and ':'" );
26132
1
            if (_res == NULL && PyErr_Occurred()) {
26133
1
                p->error_indicator = 1;
26134
1
                p->level--;
26135
1
                return NULL;
26136
1
            }
26137
0
            goto done;
26138
1
        }
26139
883
        p->mark = _mark;
26140
883
        D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
26141
883
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' &('}' | ',')"));
26142
883
    }
26143
0
    _res = NULL;
26144
883
  done:
26145
883
    p->level--;
26146
883
    return _res;
26147
883
}
26148
26149
// invalid_starred_expression_unpacking: '*' expression '=' expression
26150
static void *
26151
invalid_starred_expression_unpacking_rule(Parser *p)
26152
183k
{
26153
183k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26154
1
        _Pypegen_stack_overflow(p);
26155
1
    }
26156
183k
    if (p->error_indicator) {
26157
1
        p->level--;
26158
1
        return NULL;
26159
1
    }
26160
183k
    void * _res = NULL;
26161
183k
    int _mark = p->mark;
26162
183k
    { // '*' expression '=' expression
26163
183k
        if (p->error_indicator) {
26164
0
            p->level--;
26165
0
            return NULL;
26166
0
        }
26167
183k
        D(fprintf(stderr, "%*c> invalid_starred_expression_unpacking[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression '=' expression"));
26168
183k
        Token * _literal;
26169
183k
        Token * a;
26170
183k
        expr_ty b;
26171
183k
        expr_ty expression_var;
26172
183k
        if (
26173
183k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
26174
183k
            &&
26175
183k
            (expression_var = expression_rule(p))  // expression
26176
183k
            &&
26177
183k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
26178
183k
            &&
26179
183k
            (b = expression_rule(p))  // expression
26180
183k
        )
26181
1
        {
26182
1
            D(fprintf(stderr, "%*c+ invalid_starred_expression_unpacking[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression '=' expression"));
26183
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "cannot assign to iterable argument unpacking" );
26184
1
            if (_res == NULL && PyErr_Occurred()) {
26185
1
                p->error_indicator = 1;
26186
1
                p->level--;
26187
1
                return NULL;
26188
1
            }
26189
0
            goto done;
26190
1
        }
26191
183k
        p->mark = _mark;
26192
183k
        D(fprintf(stderr, "%*c%s invalid_starred_expression_unpacking[%d-%d]: %s failed!\n", p->level, ' ',
26193
183k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression '=' expression"));
26194
183k
    }
26195
0
    _res = NULL;
26196
183k
  done:
26197
183k
    p->level--;
26198
183k
    return _res;
26199
183k
}
26200
26201
// invalid_starred_expression: '*'
26202
static void *
26203
invalid_starred_expression_rule(Parser *p)
26204
169k
{
26205
169k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26206
0
        _Pypegen_stack_overflow(p);
26207
0
    }
26208
169k
    if (p->error_indicator) {
26209
0
        p->level--;
26210
0
        return NULL;
26211
0
    }
26212
169k
    void * _res = NULL;
26213
169k
    int _mark = p->mark;
26214
169k
    { // '*'
26215
169k
        if (p->error_indicator) {
26216
0
            p->level--;
26217
0
            return NULL;
26218
0
        }
26219
169k
        D(fprintf(stderr, "%*c> invalid_starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
26220
169k
        Token * _literal;
26221
169k
        if (
26222
169k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
26223
169k
        )
26224
65
        {
26225
65
            D(fprintf(stderr, "%*c+ invalid_starred_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
26226
65
            _res = RAISE_SYNTAX_ERROR ( "Invalid star expression" );
26227
65
            if (_res == NULL && PyErr_Occurred()) {
26228
65
                p->error_indicator = 1;
26229
65
                p->level--;
26230
65
                return NULL;
26231
65
            }
26232
0
            goto done;
26233
65
        }
26234
169k
        p->mark = _mark;
26235
169k
        D(fprintf(stderr, "%*c%s invalid_starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
26236
169k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
26237
169k
    }
26238
0
    _res = NULL;
26239
169k
  done:
26240
169k
    p->level--;
26241
169k
    return _res;
26242
169k
}
26243
26244
// invalid_fstring_replacement_field:
26245
//     | '{' '='
26246
//     | '{' '!'
26247
//     | '{' ':'
26248
//     | '{' '}'
26249
//     | '{' !annotated_rhs
26250
//     | '{' annotated_rhs !('=' | '!' | ':' | '}')
26251
//     | '{' annotated_rhs '=' !('!' | ':' | '}')
26252
//     | '{' annotated_rhs '='? invalid_fstring_conversion_character
26253
//     | '{' annotated_rhs '='? ['!' NAME] !(':' | '}')
26254
//     | '{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'
26255
//     | '{' annotated_rhs '='? ['!' NAME] !'}'
26256
static void *
26257
invalid_fstring_replacement_field_rule(Parser *p)
26258
7.82k
{
26259
7.82k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26260
1
        _Pypegen_stack_overflow(p);
26261
1
    }
26262
7.82k
    if (p->error_indicator) {
26263
1
        p->level--;
26264
1
        return NULL;
26265
1
    }
26266
7.82k
    void * _res = NULL;
26267
7.82k
    int _mark = p->mark;
26268
7.82k
    { // '{' '='
26269
7.82k
        if (p->error_indicator) {
26270
0
            p->level--;
26271
0
            return NULL;
26272
0
        }
26273
7.82k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '='"));
26274
7.82k
        Token * _literal;
26275
7.82k
        Token * a;
26276
7.82k
        if (
26277
7.82k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26278
7.82k
            &&
26279
7.82k
            (a = _PyPegen_expect_token(p, 22))  // token='='
26280
7.82k
        )
26281
30
        {
26282
30
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '='"));
26283
30
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "f-string: valid expression required before '='" );
26284
30
            if (_res == NULL && PyErr_Occurred()) {
26285
30
                p->error_indicator = 1;
26286
30
                p->level--;
26287
30
                return NULL;
26288
30
            }
26289
0
            goto done;
26290
30
        }
26291
7.79k
        p->mark = _mark;
26292
7.79k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26293
7.79k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '='"));
26294
7.79k
    }
26295
0
    { // '{' '!'
26296
7.79k
        if (p->error_indicator) {
26297
0
            p->level--;
26298
0
            return NULL;
26299
0
        }
26300
7.79k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '!'"));
26301
7.79k
        Token * _literal;
26302
7.79k
        Token * a;
26303
7.79k
        if (
26304
7.79k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26305
7.79k
            &&
26306
7.79k
            (a = _PyPegen_expect_token(p, 54))  // token='!'
26307
7.79k
        )
26308
11
        {
26309
11
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '!'"));
26310
11
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "f-string: valid expression required before '!'" );
26311
11
            if (_res == NULL && PyErr_Occurred()) {
26312
11
                p->error_indicator = 1;
26313
11
                p->level--;
26314
11
                return NULL;
26315
11
            }
26316
0
            goto done;
26317
11
        }
26318
7.78k
        p->mark = _mark;
26319
7.78k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26320
7.78k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '!'"));
26321
7.78k
    }
26322
0
    { // '{' ':'
26323
7.78k
        if (p->error_indicator) {
26324
0
            p->level--;
26325
0
            return NULL;
26326
0
        }
26327
7.78k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' ':'"));
26328
7.78k
        Token * _literal;
26329
7.78k
        Token * a;
26330
7.78k
        if (
26331
7.78k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26332
7.78k
            &&
26333
7.78k
            (a = _PyPegen_expect_token(p, 11))  // token=':'
26334
7.78k
        )
26335
80
        {
26336
80
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' ':'"));
26337
80
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "f-string: valid expression required before ':'" );
26338
80
            if (_res == NULL && PyErr_Occurred()) {
26339
80
                p->error_indicator = 1;
26340
80
                p->level--;
26341
80
                return NULL;
26342
80
            }
26343
0
            goto done;
26344
80
        }
26345
7.70k
        p->mark = _mark;
26346
7.70k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26347
7.70k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' ':'"));
26348
7.70k
    }
26349
0
    { // '{' '}'
26350
7.70k
        if (p->error_indicator) {
26351
0
            p->level--;
26352
0
            return NULL;
26353
0
        }
26354
7.70k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
26355
7.70k
        Token * _literal;
26356
7.70k
        Token * a;
26357
7.70k
        if (
26358
7.70k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26359
7.70k
            &&
26360
7.70k
            (a = _PyPegen_expect_token(p, 26))  // token='}'
26361
7.70k
        )
26362
18
        {
26363
18
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
26364
18
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "f-string: valid expression required before '}'" );
26365
18
            if (_res == NULL && PyErr_Occurred()) {
26366
18
                p->error_indicator = 1;
26367
18
                p->level--;
26368
18
                return NULL;
26369
18
            }
26370
0
            goto done;
26371
18
        }
26372
7.68k
        p->mark = _mark;
26373
7.68k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26374
7.68k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '}'"));
26375
7.68k
    }
26376
0
    { // '{' !annotated_rhs
26377
7.68k
        if (p->error_indicator) {
26378
0
            p->level--;
26379
0
            return NULL;
26380
0
        }
26381
7.68k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' !annotated_rhs"));
26382
7.68k
        Token * _literal;
26383
7.68k
        if (
26384
7.68k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26385
7.68k
            &&
26386
7.68k
            _PyPegen_lookahead_for_expr(0, annotated_rhs_rule, p)
26387
7.68k
        )
26388
42
        {
26389
42
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' !annotated_rhs"));
26390
42
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting a valid expression after '{'" );
26391
42
            if (_res == NULL && PyErr_Occurred()) {
26392
42
                p->error_indicator = 1;
26393
42
                p->level--;
26394
42
                return NULL;
26395
42
            }
26396
0
            goto done;
26397
42
        }
26398
7.64k
        p->mark = _mark;
26399
7.64k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26400
7.64k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' !annotated_rhs"));
26401
7.64k
    }
26402
0
    { // '{' annotated_rhs !('=' | '!' | ':' | '}')
26403
7.64k
        if (p->error_indicator) {
26404
0
            p->level--;
26405
0
            return NULL;
26406
0
        }
26407
7.64k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
26408
7.64k
        Token * _literal;
26409
7.64k
        expr_ty annotated_rhs_var;
26410
7.64k
        if (
26411
7.64k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26412
7.64k
            &&
26413
7.64k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26414
7.64k
            &&
26415
7.64k
            _PyPegen_lookahead(0, _tmp_148_rule, p)
26416
7.64k
        )
26417
29
        {
26418
29
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
26419
29
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting '=', or '!', or ':', or '}'" );
26420
29
            if (_res == NULL && PyErr_Occurred()) {
26421
29
                p->error_indicator = 1;
26422
29
                p->level--;
26423
29
                return NULL;
26424
29
            }
26425
0
            goto done;
26426
29
        }
26427
7.61k
        p->mark = _mark;
26428
7.61k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26429
7.61k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
26430
7.61k
    }
26431
0
    { // '{' annotated_rhs '=' !('!' | ':' | '}')
26432
7.61k
        if (p->error_indicator) {
26433
0
            p->level--;
26434
0
            return NULL;
26435
0
        }
26436
7.61k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
26437
7.61k
        Token * _literal;
26438
7.61k
        Token * _literal_1;
26439
7.61k
        expr_ty annotated_rhs_var;
26440
7.61k
        if (
26441
7.61k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26442
7.61k
            &&
26443
7.61k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26444
7.61k
            &&
26445
7.61k
            (_literal_1 = _PyPegen_expect_token(p, 22))  // token='='
26446
7.61k
            &&
26447
7.61k
            _PyPegen_lookahead(0, _tmp_149_rule, p)
26448
7.61k
        )
26449
4
        {
26450
4
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
26451
4
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting '!', or ':', or '}'" );
26452
4
            if (_res == NULL && PyErr_Occurred()) {
26453
4
                p->error_indicator = 1;
26454
4
                p->level--;
26455
4
                return NULL;
26456
4
            }
26457
0
            goto done;
26458
4
        }
26459
7.60k
        p->mark = _mark;
26460
7.60k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26461
7.60k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
26462
7.60k
    }
26463
0
    { // '{' annotated_rhs '='? invalid_fstring_conversion_character
26464
7.60k
        if (p->error_indicator) {
26465
0
            p->level--;
26466
0
            return NULL;
26467
0
        }
26468
7.60k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? invalid_fstring_conversion_character"));
26469
7.60k
        Token * _literal;
26470
7.60k
        void *_opt_var;
26471
7.60k
        UNUSED(_opt_var); // Silence compiler warnings
26472
7.60k
        expr_ty annotated_rhs_var;
26473
7.60k
        void *invalid_fstring_conversion_character_var;
26474
7.60k
        if (
26475
7.60k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26476
7.60k
            &&
26477
7.60k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26478
7.60k
            &&
26479
7.60k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26480
7.60k
            &&
26481
7.60k
            (invalid_fstring_conversion_character_var = invalid_fstring_conversion_character_rule(p))  // invalid_fstring_conversion_character
26482
7.60k
        )
26483
0
        {
26484
0
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? invalid_fstring_conversion_character"));
26485
0
            _res = _PyPegen_dummy_name(p, _literal, annotated_rhs_var, _opt_var, invalid_fstring_conversion_character_var);
26486
0
            goto done;
26487
0
        }
26488
7.60k
        p->mark = _mark;
26489
7.60k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26490
7.60k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? invalid_fstring_conversion_character"));
26491
7.60k
    }
26492
0
    { // '{' annotated_rhs '='? ['!' NAME] !(':' | '}')
26493
7.60k
        if (p->error_indicator) {
26494
16
            p->level--;
26495
16
            return NULL;
26496
16
        }
26497
7.59k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
26498
7.59k
        Token * _literal;
26499
7.59k
        void *_opt_var;
26500
7.59k
        UNUSED(_opt_var); // Silence compiler warnings
26501
7.59k
        void *_opt_var_1;
26502
7.59k
        UNUSED(_opt_var_1); // Silence compiler warnings
26503
7.59k
        expr_ty annotated_rhs_var;
26504
7.59k
        if (
26505
7.59k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26506
7.59k
            &&
26507
7.59k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26508
7.59k
            &&
26509
7.59k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26510
7.59k
            &&
26511
7.59k
            (_opt_var_1 = _tmp_150_rule(p), !p->error_indicator)  // ['!' NAME]
26512
7.59k
            &&
26513
7.59k
            _PyPegen_lookahead(0, _tmp_151_rule, p)
26514
7.59k
        )
26515
7
        {
26516
7
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
26517
7
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting ':' or '}'" );
26518
7
            if (_res == NULL && PyErr_Occurred()) {
26519
7
                p->error_indicator = 1;
26520
7
                p->level--;
26521
7
                return NULL;
26522
7
            }
26523
0
            goto done;
26524
7
        }
26525
7.58k
        p->mark = _mark;
26526
7.58k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26527
7.58k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
26528
7.58k
    }
26529
0
    { // '{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'
26530
7.58k
        if (p->error_indicator) {
26531
0
            p->level--;
26532
0
            return NULL;
26533
0
        }
26534
7.58k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'"));
26535
7.58k
        Token * _literal;
26536
7.58k
        Token * _literal_1;
26537
7.58k
        asdl_seq * _loop0_76_var;
26538
7.58k
        void *_opt_var;
26539
7.58k
        UNUSED(_opt_var); // Silence compiler warnings
26540
7.58k
        void *_opt_var_1;
26541
7.58k
        UNUSED(_opt_var_1); // Silence compiler warnings
26542
7.58k
        expr_ty annotated_rhs_var;
26543
7.58k
        if (
26544
7.58k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26545
7.58k
            &&
26546
7.58k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26547
7.58k
            &&
26548
7.58k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26549
7.58k
            &&
26550
7.58k
            (_opt_var_1 = _tmp_150_rule(p), !p->error_indicator)  // ['!' NAME]
26551
7.58k
            &&
26552
7.58k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
26553
7.58k
            &&
26554
7.58k
            (_loop0_76_var = _loop0_76_rule(p))  // fstring_format_spec*
26555
7.58k
            &&
26556
7.58k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 26)  // token='}'
26557
7.58k
        )
26558
187
        {
26559
187
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'"));
26560
187
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting '}', or format specs" );
26561
187
            if (_res == NULL && PyErr_Occurred()) {
26562
187
                p->error_indicator = 1;
26563
187
                p->level--;
26564
187
                return NULL;
26565
187
            }
26566
0
            goto done;
26567
187
        }
26568
7.39k
        p->mark = _mark;
26569
7.39k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26570
7.39k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'"));
26571
7.39k
    }
26572
0
    { // '{' annotated_rhs '='? ['!' NAME] !'}'
26573
7.39k
        if (p->error_indicator) {
26574
0
            p->level--;
26575
0
            return NULL;
26576
0
        }
26577
7.39k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
26578
7.39k
        Token * _literal;
26579
7.39k
        void *_opt_var;
26580
7.39k
        UNUSED(_opt_var); // Silence compiler warnings
26581
7.39k
        void *_opt_var_1;
26582
7.39k
        UNUSED(_opt_var_1); // Silence compiler warnings
26583
7.39k
        expr_ty annotated_rhs_var;
26584
7.39k
        if (
26585
7.39k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26586
7.39k
            &&
26587
7.39k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26588
7.39k
            &&
26589
7.39k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26590
7.39k
            &&
26591
7.39k
            (_opt_var_1 = _tmp_150_rule(p), !p->error_indicator)  // ['!' NAME]
26592
7.39k
            &&
26593
7.39k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 26)  // token='}'
26594
7.39k
        )
26595
0
        {
26596
0
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
26597
0
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting '}'" );
26598
0
            if (_res == NULL && PyErr_Occurred()) {
26599
0
                p->error_indicator = 1;
26600
0
                p->level--;
26601
0
                return NULL;
26602
0
            }
26603
0
            goto done;
26604
0
        }
26605
7.39k
        p->mark = _mark;
26606
7.39k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26607
7.39k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
26608
7.39k
    }
26609
0
    _res = NULL;
26610
7.39k
  done:
26611
7.39k
    p->level--;
26612
7.39k
    return _res;
26613
7.39k
}
26614
26615
// invalid_fstring_conversion_character: '!' &(':' | '}') | '!' !NAME
26616
static void *
26617
invalid_fstring_conversion_character_rule(Parser *p)
26618
210
{
26619
210
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26620
0
        _Pypegen_stack_overflow(p);
26621
0
    }
26622
210
    if (p->error_indicator) {
26623
0
        p->level--;
26624
0
        return NULL;
26625
0
    }
26626
210
    void * _res = NULL;
26627
210
    int _mark = p->mark;
26628
210
    { // '!' &(':' | '}')
26629
210
        if (p->error_indicator) {
26630
0
            p->level--;
26631
0
            return NULL;
26632
0
        }
26633
210
        D(fprintf(stderr, "%*c> invalid_fstring_conversion_character[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' &(':' | '}')"));
26634
210
        Token * _literal;
26635
210
        if (
26636
210
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
26637
210
            &&
26638
210
            _PyPegen_lookahead(1, _tmp_151_rule, p)
26639
210
        )
26640
6
        {
26641
6
            D(fprintf(stderr, "%*c+ invalid_fstring_conversion_character[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!' &(':' | '}')"));
26642
6
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: missing conversion character" );
26643
6
            if (_res == NULL && PyErr_Occurred()) {
26644
6
                p->error_indicator = 1;
26645
6
                p->level--;
26646
6
                return NULL;
26647
6
            }
26648
0
            goto done;
26649
6
        }
26650
204
        p->mark = _mark;
26651
204
        D(fprintf(stderr, "%*c%s invalid_fstring_conversion_character[%d-%d]: %s failed!\n", p->level, ' ',
26652
204
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' &(':' | '}')"));
26653
204
    }
26654
0
    { // '!' !NAME
26655
204
        if (p->error_indicator) {
26656
0
            p->level--;
26657
0
            return NULL;
26658
0
        }
26659
204
        D(fprintf(stderr, "%*c> invalid_fstring_conversion_character[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' !NAME"));
26660
204
        Token * _literal;
26661
204
        if (
26662
204
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
26663
204
            &&
26664
204
            _PyPegen_lookahead_for_expr(0, _PyPegen_name_token, p)
26665
204
        )
26666
10
        {
26667
10
            D(fprintf(stderr, "%*c+ invalid_fstring_conversion_character[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!' !NAME"));
26668
10
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: invalid conversion character" );
26669
10
            if (_res == NULL && PyErr_Occurred()) {
26670
10
                p->error_indicator = 1;
26671
10
                p->level--;
26672
10
                return NULL;
26673
10
            }
26674
0
            goto done;
26675
10
        }
26676
194
        p->mark = _mark;
26677
194
        D(fprintf(stderr, "%*c%s invalid_fstring_conversion_character[%d-%d]: %s failed!\n", p->level, ' ',
26678
194
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' !NAME"));
26679
194
    }
26680
0
    _res = NULL;
26681
194
  done:
26682
194
    p->level--;
26683
194
    return _res;
26684
194
}
26685
26686
// invalid_tstring_replacement_field:
26687
//     | '{' '='
26688
//     | '{' '!'
26689
//     | '{' ':'
26690
//     | '{' '}'
26691
//     | '{' !annotated_rhs
26692
//     | '{' annotated_rhs !('=' | '!' | ':' | '}')
26693
//     | '{' annotated_rhs '=' !('!' | ':' | '}')
26694
//     | '{' annotated_rhs '='? invalid_tstring_conversion_character
26695
//     | '{' annotated_rhs '='? ['!' NAME] !(':' | '}')
26696
//     | '{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'
26697
//     | '{' annotated_rhs '='? ['!' NAME] !'}'
26698
static void *
26699
invalid_tstring_replacement_field_rule(Parser *p)
26700
4.96k
{
26701
4.96k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26702
1
        _Pypegen_stack_overflow(p);
26703
1
    }
26704
4.96k
    if (p->error_indicator) {
26705
1
        p->level--;
26706
1
        return NULL;
26707
1
    }
26708
4.96k
    void * _res = NULL;
26709
4.96k
    int _mark = p->mark;
26710
4.96k
    { // '{' '='
26711
4.96k
        if (p->error_indicator) {
26712
0
            p->level--;
26713
0
            return NULL;
26714
0
        }
26715
4.96k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '='"));
26716
4.96k
        Token * _literal;
26717
4.96k
        Token * a;
26718
4.96k
        if (
26719
4.96k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26720
4.96k
            &&
26721
4.96k
            (a = _PyPegen_expect_token(p, 22))  // token='='
26722
4.96k
        )
26723
5
        {
26724
5
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '='"));
26725
5
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "t-string: valid expression required before '='" );
26726
5
            if (_res == NULL && PyErr_Occurred()) {
26727
5
                p->error_indicator = 1;
26728
5
                p->level--;
26729
5
                return NULL;
26730
5
            }
26731
0
            goto done;
26732
5
        }
26733
4.95k
        p->mark = _mark;
26734
4.95k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26735
4.95k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '='"));
26736
4.95k
    }
26737
0
    { // '{' '!'
26738
4.95k
        if (p->error_indicator) {
26739
0
            p->level--;
26740
0
            return NULL;
26741
0
        }
26742
4.95k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '!'"));
26743
4.95k
        Token * _literal;
26744
4.95k
        Token * a;
26745
4.95k
        if (
26746
4.95k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26747
4.95k
            &&
26748
4.95k
            (a = _PyPegen_expect_token(p, 54))  // token='!'
26749
4.95k
        )
26750
9
        {
26751
9
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '!'"));
26752
9
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "t-string: valid expression required before '!'" );
26753
9
            if (_res == NULL && PyErr_Occurred()) {
26754
9
                p->error_indicator = 1;
26755
9
                p->level--;
26756
9
                return NULL;
26757
9
            }
26758
0
            goto done;
26759
9
        }
26760
4.94k
        p->mark = _mark;
26761
4.94k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26762
4.94k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '!'"));
26763
4.94k
    }
26764
0
    { // '{' ':'
26765
4.94k
        if (p->error_indicator) {
26766
0
            p->level--;
26767
0
            return NULL;
26768
0
        }
26769
4.94k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' ':'"));
26770
4.94k
        Token * _literal;
26771
4.94k
        Token * a;
26772
4.94k
        if (
26773
4.94k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26774
4.94k
            &&
26775
4.94k
            (a = _PyPegen_expect_token(p, 11))  // token=':'
26776
4.94k
        )
26777
16
        {
26778
16
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' ':'"));
26779
16
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "t-string: valid expression required before ':'" );
26780
16
            if (_res == NULL && PyErr_Occurred()) {
26781
16
                p->error_indicator = 1;
26782
16
                p->level--;
26783
16
                return NULL;
26784
16
            }
26785
0
            goto done;
26786
16
        }
26787
4.93k
        p->mark = _mark;
26788
4.93k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26789
4.93k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' ':'"));
26790
4.93k
    }
26791
0
    { // '{' '}'
26792
4.93k
        if (p->error_indicator) {
26793
0
            p->level--;
26794
0
            return NULL;
26795
0
        }
26796
4.93k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
26797
4.93k
        Token * _literal;
26798
4.93k
        Token * a;
26799
4.93k
        if (
26800
4.93k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26801
4.93k
            &&
26802
4.93k
            (a = _PyPegen_expect_token(p, 26))  // token='}'
26803
4.93k
        )
26804
12
        {
26805
12
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
26806
12
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "t-string: valid expression required before '}'" );
26807
12
            if (_res == NULL && PyErr_Occurred()) {
26808
12
                p->error_indicator = 1;
26809
12
                p->level--;
26810
12
                return NULL;
26811
12
            }
26812
0
            goto done;
26813
12
        }
26814
4.91k
        p->mark = _mark;
26815
4.91k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26816
4.91k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '}'"));
26817
4.91k
    }
26818
0
    { // '{' !annotated_rhs
26819
4.91k
        if (p->error_indicator) {
26820
0
            p->level--;
26821
0
            return NULL;
26822
0
        }
26823
4.91k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' !annotated_rhs"));
26824
4.91k
        Token * _literal;
26825
4.91k
        if (
26826
4.91k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26827
4.91k
            &&
26828
4.91k
            _PyPegen_lookahead_for_expr(0, annotated_rhs_rule, p)
26829
4.91k
        )
26830
42
        {
26831
42
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' !annotated_rhs"));
26832
42
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting a valid expression after '{'" );
26833
42
            if (_res == NULL && PyErr_Occurred()) {
26834
42
                p->error_indicator = 1;
26835
42
                p->level--;
26836
42
                return NULL;
26837
42
            }
26838
0
            goto done;
26839
42
        }
26840
4.87k
        p->mark = _mark;
26841
4.87k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26842
4.87k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' !annotated_rhs"));
26843
4.87k
    }
26844
0
    { // '{' annotated_rhs !('=' | '!' | ':' | '}')
26845
4.87k
        if (p->error_indicator) {
26846
0
            p->level--;
26847
0
            return NULL;
26848
0
        }
26849
4.87k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
26850
4.87k
        Token * _literal;
26851
4.87k
        expr_ty annotated_rhs_var;
26852
4.87k
        if (
26853
4.87k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26854
4.87k
            &&
26855
4.87k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26856
4.87k
            &&
26857
4.87k
            _PyPegen_lookahead(0, _tmp_148_rule, p)
26858
4.87k
        )
26859
20
        {
26860
20
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
26861
20
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting '=', or '!', or ':', or '}'" );
26862
20
            if (_res == NULL && PyErr_Occurred()) {
26863
20
                p->error_indicator = 1;
26864
20
                p->level--;
26865
20
                return NULL;
26866
20
            }
26867
0
            goto done;
26868
20
        }
26869
4.85k
        p->mark = _mark;
26870
4.85k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26871
4.85k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
26872
4.85k
    }
26873
0
    { // '{' annotated_rhs '=' !('!' | ':' | '}')
26874
4.85k
        if (p->error_indicator) {
26875
0
            p->level--;
26876
0
            return NULL;
26877
0
        }
26878
4.85k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
26879
4.85k
        Token * _literal;
26880
4.85k
        Token * _literal_1;
26881
4.85k
        expr_ty annotated_rhs_var;
26882
4.85k
        if (
26883
4.85k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26884
4.85k
            &&
26885
4.85k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26886
4.85k
            &&
26887
4.85k
            (_literal_1 = _PyPegen_expect_token(p, 22))  // token='='
26888
4.85k
            &&
26889
4.85k
            _PyPegen_lookahead(0, _tmp_149_rule, p)
26890
4.85k
        )
26891
4
        {
26892
4
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
26893
4
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting '!', or ':', or '}'" );
26894
4
            if (_res == NULL && PyErr_Occurred()) {
26895
4
                p->error_indicator = 1;
26896
4
                p->level--;
26897
4
                return NULL;
26898
4
            }
26899
0
            goto done;
26900
4
        }
26901
4.85k
        p->mark = _mark;
26902
4.85k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26903
4.85k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
26904
4.85k
    }
26905
0
    { // '{' annotated_rhs '='? invalid_tstring_conversion_character
26906
4.85k
        if (p->error_indicator) {
26907
0
            p->level--;
26908
0
            return NULL;
26909
0
        }
26910
4.85k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? invalid_tstring_conversion_character"));
26911
4.85k
        Token * _literal;
26912
4.85k
        void *_opt_var;
26913
4.85k
        UNUSED(_opt_var); // Silence compiler warnings
26914
4.85k
        expr_ty annotated_rhs_var;
26915
4.85k
        void *invalid_tstring_conversion_character_var;
26916
4.85k
        if (
26917
4.85k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26918
4.85k
            &&
26919
4.85k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26920
4.85k
            &&
26921
4.85k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26922
4.85k
            &&
26923
4.85k
            (invalid_tstring_conversion_character_var = invalid_tstring_conversion_character_rule(p))  // invalid_tstring_conversion_character
26924
4.85k
        )
26925
0
        {
26926
0
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? invalid_tstring_conversion_character"));
26927
0
            _res = _PyPegen_dummy_name(p, _literal, annotated_rhs_var, _opt_var, invalid_tstring_conversion_character_var);
26928
0
            goto done;
26929
0
        }
26930
4.85k
        p->mark = _mark;
26931
4.85k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26932
4.85k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? invalid_tstring_conversion_character"));
26933
4.85k
    }
26934
0
    { // '{' annotated_rhs '='? ['!' NAME] !(':' | '}')
26935
4.85k
        if (p->error_indicator) {
26936
2
            p->level--;
26937
2
            return NULL;
26938
2
        }
26939
4.85k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
26940
4.85k
        Token * _literal;
26941
4.85k
        void *_opt_var;
26942
4.85k
        UNUSED(_opt_var); // Silence compiler warnings
26943
4.85k
        void *_opt_var_1;
26944
4.85k
        UNUSED(_opt_var_1); // Silence compiler warnings
26945
4.85k
        expr_ty annotated_rhs_var;
26946
4.85k
        if (
26947
4.85k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26948
4.85k
            &&
26949
4.85k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26950
4.85k
            &&
26951
4.85k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26952
4.85k
            &&
26953
4.85k
            (_opt_var_1 = _tmp_150_rule(p), !p->error_indicator)  // ['!' NAME]
26954
4.85k
            &&
26955
4.85k
            _PyPegen_lookahead(0, _tmp_151_rule, p)
26956
4.85k
        )
26957
3
        {
26958
3
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
26959
3
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting ':' or '}'" );
26960
3
            if (_res == NULL && PyErr_Occurred()) {
26961
3
                p->error_indicator = 1;
26962
3
                p->level--;
26963
3
                return NULL;
26964
3
            }
26965
0
            goto done;
26966
3
        }
26967
4.84k
        p->mark = _mark;
26968
4.84k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26969
4.84k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
26970
4.84k
    }
26971
0
    { // '{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'
26972
4.84k
        if (p->error_indicator) {
26973
0
            p->level--;
26974
0
            return NULL;
26975
0
        }
26976
4.84k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'"));
26977
4.84k
        Token * _literal;
26978
4.84k
        Token * _literal_1;
26979
4.84k
        asdl_seq * _loop0_76_var;
26980
4.84k
        void *_opt_var;
26981
4.84k
        UNUSED(_opt_var); // Silence compiler warnings
26982
4.84k
        void *_opt_var_1;
26983
4.84k
        UNUSED(_opt_var_1); // Silence compiler warnings
26984
4.84k
        expr_ty annotated_rhs_var;
26985
4.84k
        if (
26986
4.84k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26987
4.84k
            &&
26988
4.84k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26989
4.84k
            &&
26990
4.84k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26991
4.84k
            &&
26992
4.84k
            (_opt_var_1 = _tmp_150_rule(p), !p->error_indicator)  // ['!' NAME]
26993
4.84k
            &&
26994
4.84k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
26995
4.84k
            &&
26996
4.84k
            (_loop0_76_var = _loop0_76_rule(p))  // fstring_format_spec*
26997
4.84k
            &&
26998
4.84k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 26)  // token='}'
26999
4.84k
        )
27000
19
        {
27001
19
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'"));
27002
19
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting '}', or format specs" );
27003
19
            if (_res == NULL && PyErr_Occurred()) {
27004
19
                p->error_indicator = 1;
27005
19
                p->level--;
27006
19
                return NULL;
27007
19
            }
27008
0
            goto done;
27009
19
        }
27010
4.82k
        p->mark = _mark;
27011
4.82k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
27012
4.82k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'"));
27013
4.82k
    }
27014
0
    { // '{' annotated_rhs '='? ['!' NAME] !'}'
27015
4.82k
        if (p->error_indicator) {
27016
0
            p->level--;
27017
0
            return NULL;
27018
0
        }
27019
4.82k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
27020
4.82k
        Token * _literal;
27021
4.82k
        void *_opt_var;
27022
4.82k
        UNUSED(_opt_var); // Silence compiler warnings
27023
4.82k
        void *_opt_var_1;
27024
4.82k
        UNUSED(_opt_var_1); // Silence compiler warnings
27025
4.82k
        expr_ty annotated_rhs_var;
27026
4.82k
        if (
27027
4.82k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
27028
4.82k
            &&
27029
4.82k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
27030
4.82k
            &&
27031
4.82k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
27032
4.82k
            &&
27033
4.82k
            (_opt_var_1 = _tmp_150_rule(p), !p->error_indicator)  // ['!' NAME]
27034
4.82k
            &&
27035
4.82k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 26)  // token='}'
27036
4.82k
        )
27037
0
        {
27038
0
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
27039
0
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting '}'" );
27040
0
            if (_res == NULL && PyErr_Occurred()) {
27041
0
                p->error_indicator = 1;
27042
0
                p->level--;
27043
0
                return NULL;
27044
0
            }
27045
0
            goto done;
27046
0
        }
27047
4.82k
        p->mark = _mark;
27048
4.82k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
27049
4.82k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
27050
4.82k
    }
27051
0
    _res = NULL;
27052
4.82k
  done:
27053
4.82k
    p->level--;
27054
4.82k
    return _res;
27055
4.82k
}
27056
27057
// invalid_tstring_conversion_character: '!' &(':' | '}') | '!' !NAME
27058
static void *
27059
invalid_tstring_conversion_character_rule(Parser *p)
27060
24
{
27061
24
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27062
0
        _Pypegen_stack_overflow(p);
27063
0
    }
27064
24
    if (p->error_indicator) {
27065
0
        p->level--;
27066
0
        return NULL;
27067
0
    }
27068
24
    void * _res = NULL;
27069
24
    int _mark = p->mark;
27070
24
    { // '!' &(':' | '}')
27071
24
        if (p->error_indicator) {
27072
0
            p->level--;
27073
0
            return NULL;
27074
0
        }
27075
24
        D(fprintf(stderr, "%*c> invalid_tstring_conversion_character[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' &(':' | '}')"));
27076
24
        Token * _literal;
27077
24
        if (
27078
24
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
27079
24
            &&
27080
24
            _PyPegen_lookahead(1, _tmp_151_rule, p)
27081
24
        )
27082
1
        {
27083
1
            D(fprintf(stderr, "%*c+ invalid_tstring_conversion_character[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!' &(':' | '}')"));
27084
1
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: missing conversion character" );
27085
1
            if (_res == NULL && PyErr_Occurred()) {
27086
1
                p->error_indicator = 1;
27087
1
                p->level--;
27088
1
                return NULL;
27089
1
            }
27090
0
            goto done;
27091
1
        }
27092
23
        p->mark = _mark;
27093
23
        D(fprintf(stderr, "%*c%s invalid_tstring_conversion_character[%d-%d]: %s failed!\n", p->level, ' ',
27094
23
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' &(':' | '}')"));
27095
23
    }
27096
0
    { // '!' !NAME
27097
23
        if (p->error_indicator) {
27098
0
            p->level--;
27099
0
            return NULL;
27100
0
        }
27101
23
        D(fprintf(stderr, "%*c> invalid_tstring_conversion_character[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' !NAME"));
27102
23
        Token * _literal;
27103
23
        if (
27104
23
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
27105
23
            &&
27106
23
            _PyPegen_lookahead_for_expr(0, _PyPegen_name_token, p)
27107
23
        )
27108
1
        {
27109
1
            D(fprintf(stderr, "%*c+ invalid_tstring_conversion_character[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!' !NAME"));
27110
1
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: invalid conversion character" );
27111
1
            if (_res == NULL && PyErr_Occurred()) {
27112
1
                p->error_indicator = 1;
27113
1
                p->level--;
27114
1
                return NULL;
27115
1
            }
27116
0
            goto done;
27117
1
        }
27118
22
        p->mark = _mark;
27119
22
        D(fprintf(stderr, "%*c%s invalid_tstring_conversion_character[%d-%d]: %s failed!\n", p->level, ' ',
27120
22
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' !NAME"));
27121
22
    }
27122
0
    _res = NULL;
27123
22
  done:
27124
22
    p->level--;
27125
22
    return _res;
27126
22
}
27127
27128
// invalid_arithmetic: sum ('+' | '-' | '*' | '/' | '%' | '//' | '@') 'not' inversion
27129
static void *
27130
invalid_arithmetic_rule(Parser *p)
27131
306k
{
27132
306k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27133
0
        _Pypegen_stack_overflow(p);
27134
0
    }
27135
306k
    if (p->error_indicator) {
27136
0
        p->level--;
27137
0
        return NULL;
27138
0
    }
27139
306k
    void * _res = NULL;
27140
306k
    int _mark = p->mark;
27141
306k
    { // sum ('+' | '-' | '*' | '/' | '%' | '//' | '@') 'not' inversion
27142
306k
        if (p->error_indicator) {
27143
0
            p->level--;
27144
0
            return NULL;
27145
0
        }
27146
306k
        D(fprintf(stderr, "%*c> invalid_arithmetic[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum ('+' | '-' | '*' | '/' | '%' | '//' | '@') 'not' inversion"));
27147
306k
        void *_tmp_152_var;
27148
306k
        Token * a;
27149
306k
        expr_ty b;
27150
306k
        expr_ty sum_var;
27151
306k
        if (
27152
306k
            (sum_var = sum_rule(p))  // sum
27153
306k
            &&
27154
306k
            (_tmp_152_var = _tmp_152_rule(p))  // '+' | '-' | '*' | '/' | '%' | '//' | '@'
27155
306k
            &&
27156
306k
            (a = _PyPegen_expect_token(p, 708))  // token='not'
27157
306k
            &&
27158
306k
            (b = inversion_rule(p))  // inversion
27159
306k
        )
27160
9
        {
27161
9
            D(fprintf(stderr, "%*c+ invalid_arithmetic[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum ('+' | '-' | '*' | '/' | '%' | '//' | '@') 'not' inversion"));
27162
9
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "'not' after an operator must be parenthesized" );
27163
9
            if (_res == NULL && PyErr_Occurred()) {
27164
9
                p->error_indicator = 1;
27165
9
                p->level--;
27166
9
                return NULL;
27167
9
            }
27168
0
            goto done;
27169
9
        }
27170
306k
        p->mark = _mark;
27171
306k
        D(fprintf(stderr, "%*c%s invalid_arithmetic[%d-%d]: %s failed!\n", p->level, ' ',
27172
306k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum ('+' | '-' | '*' | '/' | '%' | '//' | '@') 'not' inversion"));
27173
306k
    }
27174
0
    _res = NULL;
27175
306k
  done:
27176
306k
    p->level--;
27177
306k
    return _res;
27178
306k
}
27179
27180
// invalid_factor: ('+' | '-' | '~') 'not' factor
27181
static void *
27182
invalid_factor_rule(Parser *p)
27183
317k
{
27184
317k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27185
0
        _Pypegen_stack_overflow(p);
27186
0
    }
27187
317k
    if (p->error_indicator) {
27188
0
        p->level--;
27189
0
        return NULL;
27190
0
    }
27191
317k
    void * _res = NULL;
27192
317k
    int _mark = p->mark;
27193
317k
    { // ('+' | '-' | '~') 'not' factor
27194
317k
        if (p->error_indicator) {
27195
0
            p->level--;
27196
0
            return NULL;
27197
0
        }
27198
317k
        D(fprintf(stderr, "%*c> invalid_factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('+' | '-' | '~') 'not' factor"));
27199
317k
        void *_tmp_153_var;
27200
317k
        Token * a;
27201
317k
        expr_ty b;
27202
317k
        if (
27203
317k
            (_tmp_153_var = _tmp_153_rule(p))  // '+' | '-' | '~'
27204
317k
            &&
27205
317k
            (a = _PyPegen_expect_token(p, 708))  // token='not'
27206
317k
            &&
27207
317k
            (b = factor_rule(p))  // factor
27208
317k
        )
27209
1
        {
27210
1
            D(fprintf(stderr, "%*c+ invalid_factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('+' | '-' | '~') 'not' factor"));
27211
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "'not' after an operator must be parenthesized" );
27212
1
            if (_res == NULL && PyErr_Occurred()) {
27213
1
                p->error_indicator = 1;
27214
1
                p->level--;
27215
1
                return NULL;
27216
1
            }
27217
0
            goto done;
27218
1
        }
27219
317k
        p->mark = _mark;
27220
317k
        D(fprintf(stderr, "%*c%s invalid_factor[%d-%d]: %s failed!\n", p->level, ' ',
27221
317k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('+' | '-' | '~') 'not' factor"));
27222
317k
    }
27223
0
    _res = NULL;
27224
317k
  done:
27225
317k
    p->level--;
27226
317k
    return _res;
27227
317k
}
27228
27229
// invalid_type_params: '[' ']'
27230
static void *
27231
invalid_type_params_rule(Parser *p)
27232
8.19k
{
27233
8.19k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27234
0
        _Pypegen_stack_overflow(p);
27235
0
    }
27236
8.19k
    if (p->error_indicator) {
27237
0
        p->level--;
27238
0
        return NULL;
27239
0
    }
27240
8.19k
    void * _res = NULL;
27241
8.19k
    int _mark = p->mark;
27242
8.19k
    { // '[' ']'
27243
8.19k
        if (p->error_indicator) {
27244
0
            p->level--;
27245
0
            return NULL;
27246
0
        }
27247
8.19k
        D(fprintf(stderr, "%*c> invalid_type_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' ']'"));
27248
8.19k
        Token * _literal;
27249
8.19k
        Token * token;
27250
8.19k
        if (
27251
8.19k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
27252
8.19k
            &&
27253
8.19k
            (token = _PyPegen_expect_token(p, 10))  // token=']'
27254
8.19k
        )
27255
3
        {
27256
3
            D(fprintf(stderr, "%*c+ invalid_type_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' ']'"));
27257
3
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( token , "Type parameter list cannot be empty" );
27258
3
            if (_res == NULL && PyErr_Occurred()) {
27259
3
                p->error_indicator = 1;
27260
3
                p->level--;
27261
3
                return NULL;
27262
3
            }
27263
0
            goto done;
27264
3
        }
27265
8.18k
        p->mark = _mark;
27266
8.18k
        D(fprintf(stderr, "%*c%s invalid_type_params[%d-%d]: %s failed!\n", p->level, ' ',
27267
8.18k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' ']'"));
27268
8.18k
    }
27269
0
    _res = NULL;
27270
8.18k
  done:
27271
8.18k
    p->level--;
27272
8.18k
    return _res;
27273
8.18k
}
27274
27275
// _loop0_1: NEWLINE
27276
static asdl_seq *
27277
_loop0_1_rule(Parser *p)
27278
43
{
27279
43
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27280
0
        _Pypegen_stack_overflow(p);
27281
0
    }
27282
43
    if (p->error_indicator) {
27283
0
        p->level--;
27284
0
        return NULL;
27285
0
    }
27286
43
    void *_res = NULL;
27287
43
    int _mark = p->mark;
27288
43
    void **_children = PyMem_Malloc(sizeof(void *));
27289
43
    if (!_children) {
27290
0
        p->error_indicator = 1;
27291
0
        PyErr_NoMemory();
27292
0
        p->level--;
27293
0
        return NULL;
27294
0
    }
27295
43
    Py_ssize_t _children_capacity = 1;
27296
43
    Py_ssize_t _n = 0;
27297
43
    { // NEWLINE
27298
43
        if (p->error_indicator) {
27299
0
            p->level--;
27300
0
            return NULL;
27301
0
        }
27302
43
        D(fprintf(stderr, "%*c> _loop0_1[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
27303
43
        Token * newline_var;
27304
43
        while (
27305
43
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
27306
43
        )
27307
0
        {
27308
0
            _res = newline_var;
27309
0
            if (_n == _children_capacity) {
27310
0
                _children_capacity *= 2;
27311
0
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27312
0
                if (!_new_children) {
27313
0
                    PyMem_Free(_children);
27314
0
                    p->error_indicator = 1;
27315
0
                    PyErr_NoMemory();
27316
0
                    p->level--;
27317
0
                    return NULL;
27318
0
                }
27319
0
                _children = _new_children;
27320
0
            }
27321
0
            _children[_n++] = _res;
27322
0
            _mark = p->mark;
27323
0
        }
27324
43
        p->mark = _mark;
27325
43
        D(fprintf(stderr, "%*c%s _loop0_1[%d-%d]: %s failed!\n", p->level, ' ',
27326
43
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
27327
43
    }
27328
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27329
43
    if (!_seq) {
27330
0
        PyMem_Free(_children);
27331
0
        p->error_indicator = 1;
27332
0
        PyErr_NoMemory();
27333
0
        p->level--;
27334
0
        return NULL;
27335
0
    }
27336
43
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27337
43
    PyMem_Free(_children);
27338
43
    p->level--;
27339
43
    return _seq;
27340
43
}
27341
27342
// _loop1_2: statement
27343
static asdl_seq *
27344
_loop1_2_rule(Parser *p)
27345
50.2k
{
27346
50.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27347
0
        _Pypegen_stack_overflow(p);
27348
0
    }
27349
50.2k
    if (p->error_indicator) {
27350
0
        p->level--;
27351
0
        return NULL;
27352
0
    }
27353
50.2k
    void *_res = NULL;
27354
50.2k
    int _mark = p->mark;
27355
50.2k
    void **_children = PyMem_Malloc(sizeof(void *));
27356
50.2k
    if (!_children) {
27357
0
        p->error_indicator = 1;
27358
0
        PyErr_NoMemory();
27359
0
        p->level--;
27360
0
        return NULL;
27361
0
    }
27362
50.2k
    Py_ssize_t _children_capacity = 1;
27363
50.2k
    Py_ssize_t _n = 0;
27364
50.2k
    { // statement
27365
50.2k
        if (p->error_indicator) {
27366
0
            p->level--;
27367
0
            return NULL;
27368
0
        }
27369
50.2k
        D(fprintf(stderr, "%*c> _loop1_2[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement"));
27370
50.2k
        asdl_stmt_seq* statement_var;
27371
50.2k
        while (
27372
168k
            (statement_var = statement_rule(p))  // statement
27373
50.2k
        )
27374
118k
        {
27375
118k
            _res = statement_var;
27376
118k
            if (_n == _children_capacity) {
27377
22.7k
                _children_capacity *= 2;
27378
22.7k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27379
22.7k
                if (!_new_children) {
27380
0
                    PyMem_Free(_children);
27381
0
                    p->error_indicator = 1;
27382
0
                    PyErr_NoMemory();
27383
0
                    p->level--;
27384
0
                    return NULL;
27385
0
                }
27386
22.7k
                _children = _new_children;
27387
22.7k
            }
27388
118k
            _children[_n++] = _res;
27389
118k
            _mark = p->mark;
27390
118k
        }
27391
50.2k
        p->mark = _mark;
27392
50.2k
        D(fprintf(stderr, "%*c%s _loop1_2[%d-%d]: %s failed!\n", p->level, ' ',
27393
50.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement"));
27394
50.2k
    }
27395
50.2k
    if (_n == 0 || p->error_indicator) {
27396
22.8k
        PyMem_Free(_children);
27397
22.8k
        p->level--;
27398
22.8k
        return NULL;
27399
22.8k
    }
27400
27.3k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27401
27.3k
    if (!_seq) {
27402
0
        PyMem_Free(_children);
27403
0
        p->error_indicator = 1;
27404
0
        PyErr_NoMemory();
27405
0
        p->level--;
27406
0
        return NULL;
27407
0
    }
27408
142k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27409
27.3k
    PyMem_Free(_children);
27410
27.3k
    p->level--;
27411
27.3k
    return _seq;
27412
27.3k
}
27413
27414
// _loop0_3: ';' simple_stmt
27415
static asdl_seq *
27416
_loop0_3_rule(Parser *p)
27417
13.0k
{
27418
13.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27419
0
        _Pypegen_stack_overflow(p);
27420
0
    }
27421
13.0k
    if (p->error_indicator) {
27422
0
        p->level--;
27423
0
        return NULL;
27424
0
    }
27425
13.0k
    void *_res = NULL;
27426
13.0k
    int _mark = p->mark;
27427
13.0k
    void **_children = PyMem_Malloc(sizeof(void *));
27428
13.0k
    if (!_children) {
27429
0
        p->error_indicator = 1;
27430
0
        PyErr_NoMemory();
27431
0
        p->level--;
27432
0
        return NULL;
27433
0
    }
27434
13.0k
    Py_ssize_t _children_capacity = 1;
27435
13.0k
    Py_ssize_t _n = 0;
27436
13.0k
    { // ';' simple_stmt
27437
13.0k
        if (p->error_indicator) {
27438
0
            p->level--;
27439
0
            return NULL;
27440
0
        }
27441
13.0k
        D(fprintf(stderr, "%*c> _loop0_3[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';' simple_stmt"));
27442
13.0k
        Token * _literal;
27443
13.0k
        stmt_ty elem;
27444
13.0k
        while (
27445
31.4k
            (_literal = _PyPegen_expect_token(p, 13))  // token=';'
27446
31.4k
            &&
27447
31.4k
            (elem = simple_stmt_rule(p))  // simple_stmt
27448
13.0k
        )
27449
18.3k
        {
27450
18.3k
            _res = elem;
27451
18.3k
            if (_res == NULL && PyErr_Occurred()) {
27452
0
                p->error_indicator = 1;
27453
0
                PyMem_Free(_children);
27454
0
                p->level--;
27455
0
                return NULL;
27456
0
            }
27457
18.3k
            if (_n == _children_capacity) {
27458
3.19k
                _children_capacity *= 2;
27459
3.19k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27460
3.19k
                if (!_new_children) {
27461
0
                    PyMem_Free(_children);
27462
0
                    p->error_indicator = 1;
27463
0
                    PyErr_NoMemory();
27464
0
                    p->level--;
27465
0
                    return NULL;
27466
0
                }
27467
3.19k
                _children = _new_children;
27468
3.19k
            }
27469
18.3k
            _children[_n++] = _res;
27470
18.3k
            _mark = p->mark;
27471
18.3k
        }
27472
13.0k
        p->mark = _mark;
27473
13.0k
        D(fprintf(stderr, "%*c%s _loop0_3[%d-%d]: %s failed!\n", p->level, ' ',
27474
13.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';' simple_stmt"));
27475
13.0k
    }
27476
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27477
13.0k
    if (!_seq) {
27478
0
        PyMem_Free(_children);
27479
0
        p->error_indicator = 1;
27480
0
        PyErr_NoMemory();
27481
0
        p->level--;
27482
0
        return NULL;
27483
0
    }
27484
31.4k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27485
13.0k
    PyMem_Free(_children);
27486
13.0k
    p->level--;
27487
13.0k
    return _seq;
27488
13.0k
}
27489
27490
// _gather_4: simple_stmt _loop0_3
27491
static asdl_seq *
27492
_gather_4_rule(Parser *p)
27493
48.8k
{
27494
48.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27495
0
        _Pypegen_stack_overflow(p);
27496
0
    }
27497
48.8k
    if (p->error_indicator) {
27498
0
        p->level--;
27499
0
        return NULL;
27500
0
    }
27501
48.8k
    asdl_seq * _res = NULL;
27502
48.8k
    int _mark = p->mark;
27503
48.8k
    { // simple_stmt _loop0_3
27504
48.8k
        if (p->error_indicator) {
27505
0
            p->level--;
27506
0
            return NULL;
27507
0
        }
27508
48.8k
        D(fprintf(stderr, "%*c> _gather_4[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt _loop0_3"));
27509
48.8k
        stmt_ty elem;
27510
48.8k
        asdl_seq * seq;
27511
48.8k
        if (
27512
48.8k
            (elem = simple_stmt_rule(p))  // simple_stmt
27513
48.8k
            &&
27514
48.8k
            (seq = _loop0_3_rule(p))  // _loop0_3
27515
48.8k
        )
27516
13.0k
        {
27517
13.0k
            D(fprintf(stderr, "%*c+ _gather_4[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt _loop0_3"));
27518
13.0k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
27519
13.0k
            goto done;
27520
13.0k
        }
27521
35.7k
        p->mark = _mark;
27522
35.7k
        D(fprintf(stderr, "%*c%s _gather_4[%d-%d]: %s failed!\n", p->level, ' ',
27523
35.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt _loop0_3"));
27524
35.7k
    }
27525
0
    _res = NULL;
27526
48.8k
  done:
27527
48.8k
    p->level--;
27528
48.8k
    return _res;
27529
35.7k
}
27530
27531
// _tmp_5: 'import' | 'from'
27532
static void *
27533
_tmp_5_rule(Parser *p)
27534
54.7k
{
27535
54.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27536
0
        _Pypegen_stack_overflow(p);
27537
0
    }
27538
54.7k
    if (p->error_indicator) {
27539
0
        p->level--;
27540
0
        return NULL;
27541
0
    }
27542
54.7k
    void * _res = NULL;
27543
54.7k
    int _mark = p->mark;
27544
54.7k
    { // 'import'
27545
54.7k
        if (p->error_indicator) {
27546
0
            p->level--;
27547
0
            return NULL;
27548
0
        }
27549
54.7k
        D(fprintf(stderr, "%*c> _tmp_5[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import'"));
27550
54.7k
        Token * _keyword;
27551
54.7k
        if (
27552
54.7k
            (_keyword = _PyPegen_expect_token(p, 639))  // token='import'
27553
54.7k
        )
27554
2.61k
        {
27555
2.61k
            D(fprintf(stderr, "%*c+ _tmp_5[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import'"));
27556
2.61k
            _res = _keyword;
27557
2.61k
            goto done;
27558
2.61k
        }
27559
52.0k
        p->mark = _mark;
27560
52.0k
        D(fprintf(stderr, "%*c%s _tmp_5[%d-%d]: %s failed!\n", p->level, ' ',
27561
52.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import'"));
27562
52.0k
    }
27563
0
    { // 'from'
27564
52.0k
        if (p->error_indicator) {
27565
0
            p->level--;
27566
0
            return NULL;
27567
0
        }
27568
52.0k
        D(fprintf(stderr, "%*c> _tmp_5[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from'"));
27569
52.0k
        Token * _keyword;
27570
52.0k
        if (
27571
52.0k
            (_keyword = _PyPegen_expect_token(p, 638))  // token='from'
27572
52.0k
        )
27573
3.06k
        {
27574
3.06k
            D(fprintf(stderr, "%*c+ _tmp_5[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from'"));
27575
3.06k
            _res = _keyword;
27576
3.06k
            goto done;
27577
3.06k
        }
27578
49.0k
        p->mark = _mark;
27579
49.0k
        D(fprintf(stderr, "%*c%s _tmp_5[%d-%d]: %s failed!\n", p->level, ' ',
27580
49.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from'"));
27581
49.0k
    }
27582
0
    _res = NULL;
27583
54.7k
  done:
27584
54.7k
    p->level--;
27585
54.7k
    return _res;
27586
49.0k
}
27587
27588
// _tmp_6: 'def' | '@' | 'async'
27589
static void *
27590
_tmp_6_rule(Parser *p)
27591
168k
{
27592
168k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27593
0
        _Pypegen_stack_overflow(p);
27594
0
    }
27595
168k
    if (p->error_indicator) {
27596
0
        p->level--;
27597
0
        return NULL;
27598
0
    }
27599
168k
    void * _res = NULL;
27600
168k
    int _mark = p->mark;
27601
168k
    { // 'def'
27602
168k
        if (p->error_indicator) {
27603
0
            p->level--;
27604
0
            return NULL;
27605
0
        }
27606
168k
        D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'def'"));
27607
168k
        Token * _keyword;
27608
168k
        if (
27609
168k
            (_keyword = _PyPegen_expect_token(p, 704))  // token='def'
27610
168k
        )
27611
10.0k
        {
27612
10.0k
            D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'def'"));
27613
10.0k
            _res = _keyword;
27614
10.0k
            goto done;
27615
10.0k
        }
27616
158k
        p->mark = _mark;
27617
158k
        D(fprintf(stderr, "%*c%s _tmp_6[%d-%d]: %s failed!\n", p->level, ' ',
27618
158k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'def'"));
27619
158k
    }
27620
0
    { // '@'
27621
158k
        if (p->error_indicator) {
27622
1.25k
            p->level--;
27623
1.25k
            return NULL;
27624
1.25k
        }
27625
157k
        D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
27626
157k
        Token * _literal;
27627
157k
        if (
27628
157k
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
27629
157k
        )
27630
1.82k
        {
27631
1.82k
            D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
27632
1.82k
            _res = _literal;
27633
1.82k
            goto done;
27634
1.82k
        }
27635
155k
        p->mark = _mark;
27636
155k
        D(fprintf(stderr, "%*c%s _tmp_6[%d-%d]: %s failed!\n", p->level, ' ',
27637
155k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
27638
155k
    }
27639
0
    { // 'async'
27640
155k
        if (p->error_indicator) {
27641
0
            p->level--;
27642
0
            return NULL;
27643
0
        }
27644
155k
        D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'"));
27645
155k
        Token * _keyword;
27646
155k
        if (
27647
155k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
27648
155k
        )
27649
2.47k
        {
27650
2.47k
            D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'"));
27651
2.47k
            _res = _keyword;
27652
2.47k
            goto done;
27653
2.47k
        }
27654
153k
        p->mark = _mark;
27655
153k
        D(fprintf(stderr, "%*c%s _tmp_6[%d-%d]: %s failed!\n", p->level, ' ',
27656
153k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'"));
27657
153k
    }
27658
0
    _res = NULL;
27659
167k
  done:
27660
167k
    p->level--;
27661
167k
    return _res;
27662
153k
}
27663
27664
// _tmp_7: 'class' | '@'
27665
static void *
27666
_tmp_7_rule(Parser *p)
27667
149k
{
27668
149k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27669
0
        _Pypegen_stack_overflow(p);
27670
0
    }
27671
149k
    if (p->error_indicator) {
27672
0
        p->level--;
27673
0
        return NULL;
27674
0
    }
27675
149k
    void * _res = NULL;
27676
149k
    int _mark = p->mark;
27677
149k
    { // 'class'
27678
149k
        if (p->error_indicator) {
27679
0
            p->level--;
27680
0
            return NULL;
27681
0
        }
27682
149k
        D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class'"));
27683
149k
        Token * _keyword;
27684
149k
        if (
27685
149k
            (_keyword = _PyPegen_expect_token(p, 706))  // token='class'
27686
149k
        )
27687
3.52k
        {
27688
3.52k
            D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class'"));
27689
3.52k
            _res = _keyword;
27690
3.52k
            goto done;
27691
3.52k
        }
27692
145k
        p->mark = _mark;
27693
145k
        D(fprintf(stderr, "%*c%s _tmp_7[%d-%d]: %s failed!\n", p->level, ' ',
27694
145k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class'"));
27695
145k
    }
27696
0
    { // '@'
27697
145k
        if (p->error_indicator) {
27698
0
            p->level--;
27699
0
            return NULL;
27700
0
        }
27701
145k
        D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
27702
145k
        Token * _literal;
27703
145k
        if (
27704
145k
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
27705
145k
        )
27706
803
        {
27707
803
            D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
27708
803
            _res = _literal;
27709
803
            goto done;
27710
803
        }
27711
145k
        p->mark = _mark;
27712
145k
        D(fprintf(stderr, "%*c%s _tmp_7[%d-%d]: %s failed!\n", p->level, ' ',
27713
145k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
27714
145k
    }
27715
0
    _res = NULL;
27716
149k
  done:
27717
149k
    p->level--;
27718
149k
    return _res;
27719
145k
}
27720
27721
// _tmp_8: 'with' | 'async'
27722
static void *
27723
_tmp_8_rule(Parser *p)
27724
145k
{
27725
145k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27726
0
        _Pypegen_stack_overflow(p);
27727
0
    }
27728
145k
    if (p->error_indicator) {
27729
0
        p->level--;
27730
0
        return NULL;
27731
0
    }
27732
145k
    void * _res = NULL;
27733
145k
    int _mark = p->mark;
27734
145k
    { // 'with'
27735
145k
        if (p->error_indicator) {
27736
0
            p->level--;
27737
0
            return NULL;
27738
0
        }
27739
145k
        D(fprintf(stderr, "%*c> _tmp_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with'"));
27740
145k
        Token * _keyword;
27741
145k
        if (
27742
145k
            (_keyword = _PyPegen_expect_token(p, 652))  // token='with'
27743
145k
        )
27744
3.88k
        {
27745
3.88k
            D(fprintf(stderr, "%*c+ _tmp_8[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with'"));
27746
3.88k
            _res = _keyword;
27747
3.88k
            goto done;
27748
3.88k
        }
27749
141k
        p->mark = _mark;
27750
141k
        D(fprintf(stderr, "%*c%s _tmp_8[%d-%d]: %s failed!\n", p->level, ' ',
27751
141k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with'"));
27752
141k
    }
27753
0
    { // 'async'
27754
141k
        if (p->error_indicator) {
27755
0
            p->level--;
27756
0
            return NULL;
27757
0
        }
27758
141k
        D(fprintf(stderr, "%*c> _tmp_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'"));
27759
141k
        Token * _keyword;
27760
141k
        if (
27761
141k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
27762
141k
        )
27763
2.17k
        {
27764
2.17k
            D(fprintf(stderr, "%*c+ _tmp_8[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'"));
27765
2.17k
            _res = _keyword;
27766
2.17k
            goto done;
27767
2.17k
        }
27768
139k
        p->mark = _mark;
27769
139k
        D(fprintf(stderr, "%*c%s _tmp_8[%d-%d]: %s failed!\n", p->level, ' ',
27770
139k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'"));
27771
139k
    }
27772
0
    _res = NULL;
27773
145k
  done:
27774
145k
    p->level--;
27775
145k
    return _res;
27776
139k
}
27777
27778
// _tmp_9: 'for' | 'async'
27779
static void *
27780
_tmp_9_rule(Parser *p)
27781
140k
{
27782
140k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27783
0
        _Pypegen_stack_overflow(p);
27784
0
    }
27785
140k
    if (p->error_indicator) {
27786
0
        p->level--;
27787
0
        return NULL;
27788
0
    }
27789
140k
    void * _res = NULL;
27790
140k
    int _mark = p->mark;
27791
140k
    { // 'for'
27792
140k
        if (p->error_indicator) {
27793
0
            p->level--;
27794
0
            return NULL;
27795
0
        }
27796
140k
        D(fprintf(stderr, "%*c> _tmp_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for'"));
27797
140k
        Token * _keyword;
27798
140k
        if (
27799
140k
            (_keyword = _PyPegen_expect_token(p, 699))  // token='for'
27800
140k
        )
27801
1.75k
        {
27802
1.75k
            D(fprintf(stderr, "%*c+ _tmp_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for'"));
27803
1.75k
            _res = _keyword;
27804
1.75k
            goto done;
27805
1.75k
        }
27806
138k
        p->mark = _mark;
27807
138k
        D(fprintf(stderr, "%*c%s _tmp_9[%d-%d]: %s failed!\n", p->level, ' ',
27808
138k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for'"));
27809
138k
    }
27810
0
    { // 'async'
27811
138k
        if (p->error_indicator) {
27812
0
            p->level--;
27813
0
            return NULL;
27814
0
        }
27815
138k
        D(fprintf(stderr, "%*c> _tmp_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'"));
27816
138k
        Token * _keyword;
27817
138k
        if (
27818
138k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
27819
138k
        )
27820
865
        {
27821
865
            D(fprintf(stderr, "%*c+ _tmp_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'"));
27822
865
            _res = _keyword;
27823
865
            goto done;
27824
865
        }
27825
138k
        p->mark = _mark;
27826
138k
        D(fprintf(stderr, "%*c%s _tmp_9[%d-%d]: %s failed!\n", p->level, ' ',
27827
138k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'"));
27828
138k
    }
27829
0
    _res = NULL;
27830
140k
  done:
27831
140k
    p->level--;
27832
140k
    return _res;
27833
138k
}
27834
27835
// _tmp_10: '=' annotated_rhs
27836
static void *
27837
_tmp_10_rule(Parser *p)
27838
3.25k
{
27839
3.25k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27840
0
        _Pypegen_stack_overflow(p);
27841
0
    }
27842
3.25k
    if (p->error_indicator) {
27843
0
        p->level--;
27844
0
        return NULL;
27845
0
    }
27846
3.25k
    void * _res = NULL;
27847
3.25k
    int _mark = p->mark;
27848
3.25k
    { // '=' annotated_rhs
27849
3.25k
        if (p->error_indicator) {
27850
0
            p->level--;
27851
0
            return NULL;
27852
0
        }
27853
3.25k
        D(fprintf(stderr, "%*c> _tmp_10[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
27854
3.25k
        Token * _literal;
27855
3.25k
        expr_ty d;
27856
3.25k
        if (
27857
3.25k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
27858
3.25k
            &&
27859
3.25k
            (d = annotated_rhs_rule(p))  // annotated_rhs
27860
3.25k
        )
27861
504
        {
27862
504
            D(fprintf(stderr, "%*c+ _tmp_10[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
27863
504
            _res = d;
27864
504
            if (_res == NULL && PyErr_Occurred()) {
27865
0
                p->error_indicator = 1;
27866
0
                p->level--;
27867
0
                return NULL;
27868
0
            }
27869
504
            goto done;
27870
504
        }
27871
2.74k
        p->mark = _mark;
27872
2.74k
        D(fprintf(stderr, "%*c%s _tmp_10[%d-%d]: %s failed!\n", p->level, ' ',
27873
2.74k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' annotated_rhs"));
27874
2.74k
    }
27875
0
    _res = NULL;
27876
3.25k
  done:
27877
3.25k
    p->level--;
27878
3.25k
    return _res;
27879
2.74k
}
27880
27881
// _tmp_11: '(' single_target ')' | single_subscript_attribute_target
27882
static void *
27883
_tmp_11_rule(Parser *p)
27884
186k
{
27885
186k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27886
0
        _Pypegen_stack_overflow(p);
27887
0
    }
27888
186k
    if (p->error_indicator) {
27889
0
        p->level--;
27890
0
        return NULL;
27891
0
    }
27892
186k
    void * _res = NULL;
27893
186k
    int _mark = p->mark;
27894
186k
    { // '(' single_target ')'
27895
186k
        if (p->error_indicator) {
27896
0
            p->level--;
27897
0
            return NULL;
27898
0
        }
27899
186k
        D(fprintf(stderr, "%*c> _tmp_11[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
27900
186k
        Token * _literal;
27901
186k
        Token * _literal_1;
27902
186k
        expr_ty b;
27903
186k
        if (
27904
186k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
27905
186k
            &&
27906
186k
            (b = single_target_rule(p))  // single_target
27907
186k
            &&
27908
186k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
27909
186k
        )
27910
671
        {
27911
671
            D(fprintf(stderr, "%*c+ _tmp_11[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
27912
671
            _res = b;
27913
671
            if (_res == NULL && PyErr_Occurred()) {
27914
0
                p->error_indicator = 1;
27915
0
                p->level--;
27916
0
                return NULL;
27917
0
            }
27918
671
            goto done;
27919
671
        }
27920
185k
        p->mark = _mark;
27921
185k
        D(fprintf(stderr, "%*c%s _tmp_11[%d-%d]: %s failed!\n", p->level, ' ',
27922
185k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' single_target ')'"));
27923
185k
    }
27924
0
    { // single_subscript_attribute_target
27925
185k
        if (p->error_indicator) {
27926
152
            p->level--;
27927
152
            return NULL;
27928
152
        }
27929
185k
        D(fprintf(stderr, "%*c> _tmp_11[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
27930
185k
        expr_ty single_subscript_attribute_target_var;
27931
185k
        if (
27932
185k
            (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p))  // single_subscript_attribute_target
27933
185k
        )
27934
4.52k
        {
27935
4.52k
            D(fprintf(stderr, "%*c+ _tmp_11[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
27936
4.52k
            _res = single_subscript_attribute_target_var;
27937
4.52k
            goto done;
27938
4.52k
        }
27939
181k
        p->mark = _mark;
27940
181k
        D(fprintf(stderr, "%*c%s _tmp_11[%d-%d]: %s failed!\n", p->level, ' ',
27941
181k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_subscript_attribute_target"));
27942
181k
    }
27943
0
    _res = NULL;
27944
186k
  done:
27945
186k
    p->level--;
27946
186k
    return _res;
27947
181k
}
27948
27949
// _loop1_12: (star_targets '=')
27950
static asdl_seq *
27951
_loop1_12_rule(Parser *p)
27952
182k
{
27953
182k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27954
0
        _Pypegen_stack_overflow(p);
27955
0
    }
27956
182k
    if (p->error_indicator) {
27957
0
        p->level--;
27958
0
        return NULL;
27959
0
    }
27960
182k
    void *_res = NULL;
27961
182k
    int _mark = p->mark;
27962
182k
    void **_children = PyMem_Malloc(sizeof(void *));
27963
182k
    if (!_children) {
27964
0
        p->error_indicator = 1;
27965
0
        PyErr_NoMemory();
27966
0
        p->level--;
27967
0
        return NULL;
27968
0
    }
27969
182k
    Py_ssize_t _children_capacity = 1;
27970
182k
    Py_ssize_t _n = 0;
27971
182k
    { // (star_targets '=')
27972
182k
        if (p->error_indicator) {
27973
0
            p->level--;
27974
0
            return NULL;
27975
0
        }
27976
182k
        D(fprintf(stderr, "%*c> _loop1_12[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
27977
182k
        void *_tmp_154_var;
27978
182k
        while (
27979
197k
            (_tmp_154_var = _tmp_154_rule(p))  // star_targets '='
27980
182k
        )
27981
15.1k
        {
27982
15.1k
            _res = _tmp_154_var;
27983
15.1k
            if (_n == _children_capacity) {
27984
524
                _children_capacity *= 2;
27985
524
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27986
524
                if (!_new_children) {
27987
0
                    PyMem_Free(_children);
27988
0
                    p->error_indicator = 1;
27989
0
                    PyErr_NoMemory();
27990
0
                    p->level--;
27991
0
                    return NULL;
27992
0
                }
27993
524
                _children = _new_children;
27994
524
            }
27995
15.1k
            _children[_n++] = _res;
27996
15.1k
            _mark = p->mark;
27997
15.1k
        }
27998
182k
        p->mark = _mark;
27999
182k
        D(fprintf(stderr, "%*c%s _loop1_12[%d-%d]: %s failed!\n", p->level, ' ',
28000
182k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
28001
182k
    }
28002
182k
    if (_n == 0 || p->error_indicator) {
28003
169k
        PyMem_Free(_children);
28004
169k
        p->level--;
28005
169k
        return NULL;
28006
169k
    }
28007
13.2k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28008
13.2k
    if (!_seq) {
28009
0
        PyMem_Free(_children);
28010
0
        p->error_indicator = 1;
28011
0
        PyErr_NoMemory();
28012
0
        p->level--;
28013
0
        return NULL;
28014
0
    }
28015
28.2k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28016
13.2k
    PyMem_Free(_children);
28017
13.2k
    p->level--;
28018
13.2k
    return _seq;
28019
13.2k
}
28020
28021
// _loop0_13: ',' NAME
28022
static asdl_seq *
28023
_loop0_13_rule(Parser *p)
28024
1.70k
{
28025
1.70k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28026
0
        _Pypegen_stack_overflow(p);
28027
0
    }
28028
1.70k
    if (p->error_indicator) {
28029
0
        p->level--;
28030
0
        return NULL;
28031
0
    }
28032
1.70k
    void *_res = NULL;
28033
1.70k
    int _mark = p->mark;
28034
1.70k
    void **_children = PyMem_Malloc(sizeof(void *));
28035
1.70k
    if (!_children) {
28036
0
        p->error_indicator = 1;
28037
0
        PyErr_NoMemory();
28038
0
        p->level--;
28039
0
        return NULL;
28040
0
    }
28041
1.70k
    Py_ssize_t _children_capacity = 1;
28042
1.70k
    Py_ssize_t _n = 0;
28043
1.70k
    { // ',' NAME
28044
1.70k
        if (p->error_indicator) {
28045
0
            p->level--;
28046
0
            return NULL;
28047
0
        }
28048
1.70k
        D(fprintf(stderr, "%*c> _loop0_13[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' NAME"));
28049
1.70k
        Token * _literal;
28050
1.70k
        expr_ty elem;
28051
1.70k
        while (
28052
4.91k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
28053
4.91k
            &&
28054
4.91k
            (elem = _PyPegen_name_token(p))  // NAME
28055
1.70k
        )
28056
3.21k
        {
28057
3.21k
            _res = elem;
28058
3.21k
            if (_res == NULL && PyErr_Occurred()) {
28059
0
                p->error_indicator = 1;
28060
0
                PyMem_Free(_children);
28061
0
                p->level--;
28062
0
                return NULL;
28063
0
            }
28064
3.21k
            if (_n == _children_capacity) {
28065
1.09k
                _children_capacity *= 2;
28066
1.09k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28067
1.09k
                if (!_new_children) {
28068
0
                    PyMem_Free(_children);
28069
0
                    p->error_indicator = 1;
28070
0
                    PyErr_NoMemory();
28071
0
                    p->level--;
28072
0
                    return NULL;
28073
0
                }
28074
1.09k
                _children = _new_children;
28075
1.09k
            }
28076
3.21k
            _children[_n++] = _res;
28077
3.21k
            _mark = p->mark;
28078
3.21k
        }
28079
1.70k
        p->mark = _mark;
28080
1.70k
        D(fprintf(stderr, "%*c%s _loop0_13[%d-%d]: %s failed!\n", p->level, ' ',
28081
1.70k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' NAME"));
28082
1.70k
    }
28083
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28084
1.70k
    if (!_seq) {
28085
0
        PyMem_Free(_children);
28086
0
        p->error_indicator = 1;
28087
0
        PyErr_NoMemory();
28088
0
        p->level--;
28089
0
        return NULL;
28090
0
    }
28091
4.91k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28092
1.70k
    PyMem_Free(_children);
28093
1.70k
    p->level--;
28094
1.70k
    return _seq;
28095
1.70k
}
28096
28097
// _gather_14: NAME _loop0_13
28098
static asdl_seq *
28099
_gather_14_rule(Parser *p)
28100
1.70k
{
28101
1.70k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28102
0
        _Pypegen_stack_overflow(p);
28103
0
    }
28104
1.70k
    if (p->error_indicator) {
28105
0
        p->level--;
28106
0
        return NULL;
28107
0
    }
28108
1.70k
    asdl_seq * _res = NULL;
28109
1.70k
    int _mark = p->mark;
28110
1.70k
    { // NAME _loop0_13
28111
1.70k
        if (p->error_indicator) {
28112
0
            p->level--;
28113
0
            return NULL;
28114
0
        }
28115
1.70k
        D(fprintf(stderr, "%*c> _gather_14[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME _loop0_13"));
28116
1.70k
        expr_ty elem;
28117
1.70k
        asdl_seq * seq;
28118
1.70k
        if (
28119
1.70k
            (elem = _PyPegen_name_token(p))  // NAME
28120
1.70k
            &&
28121
1.70k
            (seq = _loop0_13_rule(p))  // _loop0_13
28122
1.70k
        )
28123
1.70k
        {
28124
1.70k
            D(fprintf(stderr, "%*c+ _gather_14[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME _loop0_13"));
28125
1.70k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28126
1.70k
            goto done;
28127
1.70k
        }
28128
8
        p->mark = _mark;
28129
8
        D(fprintf(stderr, "%*c%s _gather_14[%d-%d]: %s failed!\n", p->level, ' ',
28130
8
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME _loop0_13"));
28131
8
    }
28132
0
    _res = NULL;
28133
1.70k
  done:
28134
1.70k
    p->level--;
28135
1.70k
    return _res;
28136
8
}
28137
28138
// _tmp_15: ';' | NEWLINE
28139
static void *
28140
_tmp_15_rule(Parser *p)
28141
1.21k
{
28142
1.21k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28143
0
        _Pypegen_stack_overflow(p);
28144
0
    }
28145
1.21k
    if (p->error_indicator) {
28146
0
        p->level--;
28147
0
        return NULL;
28148
0
    }
28149
1.21k
    void * _res = NULL;
28150
1.21k
    int _mark = p->mark;
28151
1.21k
    { // ';'
28152
1.21k
        if (p->error_indicator) {
28153
0
            p->level--;
28154
0
            return NULL;
28155
0
        }
28156
1.21k
        D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';'"));
28157
1.21k
        Token * _literal;
28158
1.21k
        if (
28159
1.21k
            (_literal = _PyPegen_expect_token(p, 13))  // token=';'
28160
1.21k
        )
28161
453
        {
28162
453
            D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "';'"));
28163
453
            _res = _literal;
28164
453
            goto done;
28165
453
        }
28166
758
        p->mark = _mark;
28167
758
        D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
28168
758
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';'"));
28169
758
    }
28170
0
    { // NEWLINE
28171
758
        if (p->error_indicator) {
28172
0
            p->level--;
28173
0
            return NULL;
28174
0
        }
28175
758
        D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
28176
758
        Token * newline_var;
28177
758
        if (
28178
758
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
28179
758
        )
28180
448
        {
28181
448
            D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
28182
448
            _res = newline_var;
28183
448
            goto done;
28184
448
        }
28185
310
        p->mark = _mark;
28186
310
        D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
28187
310
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
28188
310
    }
28189
0
    _res = NULL;
28190
1.21k
  done:
28191
1.21k
    p->level--;
28192
1.21k
    return _res;
28193
310
}
28194
28195
// _tmp_16: ',' expression
28196
static void *
28197
_tmp_16_rule(Parser *p)
28198
7.31k
{
28199
7.31k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28200
0
        _Pypegen_stack_overflow(p);
28201
0
    }
28202
7.31k
    if (p->error_indicator) {
28203
0
        p->level--;
28204
0
        return NULL;
28205
0
    }
28206
7.31k
    void * _res = NULL;
28207
7.31k
    int _mark = p->mark;
28208
7.31k
    { // ',' expression
28209
7.31k
        if (p->error_indicator) {
28210
0
            p->level--;
28211
0
            return NULL;
28212
0
        }
28213
7.31k
        D(fprintf(stderr, "%*c> _tmp_16[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
28214
7.31k
        Token * _literal;
28215
7.31k
        expr_ty z;
28216
7.31k
        if (
28217
7.31k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
28218
7.31k
            &&
28219
7.31k
            (z = expression_rule(p))  // expression
28220
7.31k
        )
28221
2.91k
        {
28222
2.91k
            D(fprintf(stderr, "%*c+ _tmp_16[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression"));
28223
2.91k
            _res = z;
28224
2.91k
            if (_res == NULL && PyErr_Occurred()) {
28225
0
                p->error_indicator = 1;
28226
0
                p->level--;
28227
0
                return NULL;
28228
0
            }
28229
2.91k
            goto done;
28230
2.91k
        }
28231
4.40k
        p->mark = _mark;
28232
4.40k
        D(fprintf(stderr, "%*c%s _tmp_16[%d-%d]: %s failed!\n", p->level, ' ',
28233
4.40k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
28234
4.40k
    }
28235
0
    _res = NULL;
28236
7.31k
  done:
28237
7.31k
    p->level--;
28238
7.31k
    return _res;
28239
4.40k
}
28240
28241
// _loop0_17: ('.' | '...')
28242
static asdl_seq *
28243
_loop0_17_rule(Parser *p)
28244
3.06k
{
28245
3.06k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28246
0
        _Pypegen_stack_overflow(p);
28247
0
    }
28248
3.06k
    if (p->error_indicator) {
28249
0
        p->level--;
28250
0
        return NULL;
28251
0
    }
28252
3.06k
    void *_res = NULL;
28253
3.06k
    int _mark = p->mark;
28254
3.06k
    void **_children = PyMem_Malloc(sizeof(void *));
28255
3.06k
    if (!_children) {
28256
0
        p->error_indicator = 1;
28257
0
        PyErr_NoMemory();
28258
0
        p->level--;
28259
0
        return NULL;
28260
0
    }
28261
3.06k
    Py_ssize_t _children_capacity = 1;
28262
3.06k
    Py_ssize_t _n = 0;
28263
3.06k
    { // ('.' | '...')
28264
3.06k
        if (p->error_indicator) {
28265
0
            p->level--;
28266
0
            return NULL;
28267
0
        }
28268
3.06k
        D(fprintf(stderr, "%*c> _loop0_17[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')"));
28269
3.06k
        void *_tmp_155_var;
28270
3.06k
        while (
28271
7.59k
            (_tmp_155_var = _tmp_155_rule(p))  // '.' | '...'
28272
3.06k
        )
28273
4.52k
        {
28274
4.52k
            _res = _tmp_155_var;
28275
4.52k
            if (_n == _children_capacity) {
28276
797
                _children_capacity *= 2;
28277
797
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28278
797
                if (!_new_children) {
28279
0
                    PyMem_Free(_children);
28280
0
                    p->error_indicator = 1;
28281
0
                    PyErr_NoMemory();
28282
0
                    p->level--;
28283
0
                    return NULL;
28284
0
                }
28285
797
                _children = _new_children;
28286
797
            }
28287
4.52k
            _children[_n++] = _res;
28288
4.52k
            _mark = p->mark;
28289
4.52k
        }
28290
3.06k
        p->mark = _mark;
28291
3.06k
        D(fprintf(stderr, "%*c%s _loop0_17[%d-%d]: %s failed!\n", p->level, ' ',
28292
3.06k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('.' | '...')"));
28293
3.06k
    }
28294
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28295
3.06k
    if (!_seq) {
28296
0
        PyMem_Free(_children);
28297
0
        p->error_indicator = 1;
28298
0
        PyErr_NoMemory();
28299
0
        p->level--;
28300
0
        return NULL;
28301
0
    }
28302
7.59k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28303
3.06k
    PyMem_Free(_children);
28304
3.06k
    p->level--;
28305
3.06k
    return _seq;
28306
3.06k
}
28307
28308
// _loop1_18: ('.' | '...')
28309
static asdl_seq *
28310
_loop1_18_rule(Parser *p)
28311
1.20k
{
28312
1.20k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28313
0
        _Pypegen_stack_overflow(p);
28314
0
    }
28315
1.20k
    if (p->error_indicator) {
28316
0
        p->level--;
28317
0
        return NULL;
28318
0
    }
28319
1.20k
    void *_res = NULL;
28320
1.20k
    int _mark = p->mark;
28321
1.20k
    void **_children = PyMem_Malloc(sizeof(void *));
28322
1.20k
    if (!_children) {
28323
0
        p->error_indicator = 1;
28324
0
        PyErr_NoMemory();
28325
0
        p->level--;
28326
0
        return NULL;
28327
0
    }
28328
1.20k
    Py_ssize_t _children_capacity = 1;
28329
1.20k
    Py_ssize_t _n = 0;
28330
1.20k
    { // ('.' | '...')
28331
1.20k
        if (p->error_indicator) {
28332
0
            p->level--;
28333
0
            return NULL;
28334
0
        }
28335
1.20k
        D(fprintf(stderr, "%*c> _loop1_18[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')"));
28336
1.20k
        void *_tmp_155_var;
28337
1.20k
        while (
28338
5.29k
            (_tmp_155_var = _tmp_155_rule(p))  // '.' | '...'
28339
1.20k
        )
28340
4.08k
        {
28341
4.08k
            _res = _tmp_155_var;
28342
4.08k
            if (_n == _children_capacity) {
28343
780
                _children_capacity *= 2;
28344
780
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28345
780
                if (!_new_children) {
28346
0
                    PyMem_Free(_children);
28347
0
                    p->error_indicator = 1;
28348
0
                    PyErr_NoMemory();
28349
0
                    p->level--;
28350
0
                    return NULL;
28351
0
                }
28352
780
                _children = _new_children;
28353
780
            }
28354
4.08k
            _children[_n++] = _res;
28355
4.08k
            _mark = p->mark;
28356
4.08k
        }
28357
1.20k
        p->mark = _mark;
28358
1.20k
        D(fprintf(stderr, "%*c%s _loop1_18[%d-%d]: %s failed!\n", p->level, ' ',
28359
1.20k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('.' | '...')"));
28360
1.20k
    }
28361
1.20k
    if (_n == 0 || p->error_indicator) {
28362
64
        PyMem_Free(_children);
28363
64
        p->level--;
28364
64
        return NULL;
28365
64
    }
28366
1.14k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28367
1.14k
    if (!_seq) {
28368
0
        PyMem_Free(_children);
28369
0
        p->error_indicator = 1;
28370
0
        PyErr_NoMemory();
28371
0
        p->level--;
28372
0
        return NULL;
28373
0
    }
28374
5.22k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28375
1.14k
    PyMem_Free(_children);
28376
1.14k
    p->level--;
28377
1.14k
    return _seq;
28378
1.14k
}
28379
28380
// _loop0_19: ',' import_from_as_name
28381
static asdl_seq *
28382
_loop0_19_rule(Parser *p)
28383
2.30k
{
28384
2.30k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28385
0
        _Pypegen_stack_overflow(p);
28386
0
    }
28387
2.30k
    if (p->error_indicator) {
28388
0
        p->level--;
28389
0
        return NULL;
28390
0
    }
28391
2.30k
    void *_res = NULL;
28392
2.30k
    int _mark = p->mark;
28393
2.30k
    void **_children = PyMem_Malloc(sizeof(void *));
28394
2.30k
    if (!_children) {
28395
0
        p->error_indicator = 1;
28396
0
        PyErr_NoMemory();
28397
0
        p->level--;
28398
0
        return NULL;
28399
0
    }
28400
2.30k
    Py_ssize_t _children_capacity = 1;
28401
2.30k
    Py_ssize_t _n = 0;
28402
2.30k
    { // ',' import_from_as_name
28403
2.30k
        if (p->error_indicator) {
28404
0
            p->level--;
28405
0
            return NULL;
28406
0
        }
28407
2.30k
        D(fprintf(stderr, "%*c> _loop0_19[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' import_from_as_name"));
28408
2.30k
        Token * _literal;
28409
2.30k
        alias_ty elem;
28410
2.30k
        while (
28411
5.84k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
28412
5.84k
            &&
28413
5.84k
            (elem = import_from_as_name_rule(p))  // import_from_as_name
28414
2.30k
        )
28415
3.54k
        {
28416
3.54k
            _res = elem;
28417
3.54k
            if (_res == NULL && PyErr_Occurred()) {
28418
0
                p->error_indicator = 1;
28419
0
                PyMem_Free(_children);
28420
0
                p->level--;
28421
0
                return NULL;
28422
0
            }
28423
3.54k
            if (_n == _children_capacity) {
28424
549
                _children_capacity *= 2;
28425
549
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28426
549
                if (!_new_children) {
28427
0
                    PyMem_Free(_children);
28428
0
                    p->error_indicator = 1;
28429
0
                    PyErr_NoMemory();
28430
0
                    p->level--;
28431
0
                    return NULL;
28432
0
                }
28433
549
                _children = _new_children;
28434
549
            }
28435
3.54k
            _children[_n++] = _res;
28436
3.54k
            _mark = p->mark;
28437
3.54k
        }
28438
2.30k
        p->mark = _mark;
28439
2.30k
        D(fprintf(stderr, "%*c%s _loop0_19[%d-%d]: %s failed!\n", p->level, ' ',
28440
2.30k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' import_from_as_name"));
28441
2.30k
    }
28442
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28443
2.30k
    if (!_seq) {
28444
0
        PyMem_Free(_children);
28445
0
        p->error_indicator = 1;
28446
0
        PyErr_NoMemory();
28447
0
        p->level--;
28448
0
        return NULL;
28449
0
    }
28450
5.84k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28451
2.30k
    PyMem_Free(_children);
28452
2.30k
    p->level--;
28453
2.30k
    return _seq;
28454
2.30k
}
28455
28456
// _gather_20: import_from_as_name _loop0_19
28457
static asdl_seq *
28458
_gather_20_rule(Parser *p)
28459
2.98k
{
28460
2.98k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28461
0
        _Pypegen_stack_overflow(p);
28462
0
    }
28463
2.98k
    if (p->error_indicator) {
28464
0
        p->level--;
28465
0
        return NULL;
28466
0
    }
28467
2.98k
    asdl_seq * _res = NULL;
28468
2.98k
    int _mark = p->mark;
28469
2.98k
    { // import_from_as_name _loop0_19
28470
2.98k
        if (p->error_indicator) {
28471
0
            p->level--;
28472
0
            return NULL;
28473
0
        }
28474
2.98k
        D(fprintf(stderr, "%*c> _gather_20[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_name _loop0_19"));
28475
2.98k
        alias_ty elem;
28476
2.98k
        asdl_seq * seq;
28477
2.98k
        if (
28478
2.98k
            (elem = import_from_as_name_rule(p))  // import_from_as_name
28479
2.98k
            &&
28480
2.98k
            (seq = _loop0_19_rule(p))  // _loop0_19
28481
2.98k
        )
28482
2.30k
        {
28483
2.30k
            D(fprintf(stderr, "%*c+ _gather_20[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_name _loop0_19"));
28484
2.30k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28485
2.30k
            goto done;
28486
2.30k
        }
28487
677
        p->mark = _mark;
28488
677
        D(fprintf(stderr, "%*c%s _gather_20[%d-%d]: %s failed!\n", p->level, ' ',
28489
677
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_name _loop0_19"));
28490
677
    }
28491
0
    _res = NULL;
28492
2.98k
  done:
28493
2.98k
    p->level--;
28494
2.98k
    return _res;
28495
677
}
28496
28497
// _tmp_21: 'as' NAME
28498
static void *
28499
_tmp_21_rule(Parser *p)
28500
16.4k
{
28501
16.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28502
0
        _Pypegen_stack_overflow(p);
28503
0
    }
28504
16.4k
    if (p->error_indicator) {
28505
0
        p->level--;
28506
0
        return NULL;
28507
0
    }
28508
16.4k
    void * _res = NULL;
28509
16.4k
    int _mark = p->mark;
28510
16.4k
    { // 'as' NAME
28511
16.4k
        if (p->error_indicator) {
28512
0
            p->level--;
28513
0
            return NULL;
28514
0
        }
28515
16.4k
        D(fprintf(stderr, "%*c> _tmp_21[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
28516
16.4k
        Token * _keyword;
28517
16.4k
        expr_ty z;
28518
16.4k
        if (
28519
16.4k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
28520
16.4k
            &&
28521
16.4k
            (z = _PyPegen_name_token(p))  // NAME
28522
16.4k
        )
28523
1.58k
        {
28524
1.58k
            D(fprintf(stderr, "%*c+ _tmp_21[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
28525
1.58k
            _res = z;
28526
1.58k
            if (_res == NULL && PyErr_Occurred()) {
28527
0
                p->error_indicator = 1;
28528
0
                p->level--;
28529
0
                return NULL;
28530
0
            }
28531
1.58k
            goto done;
28532
1.58k
        }
28533
14.8k
        p->mark = _mark;
28534
14.8k
        D(fprintf(stderr, "%*c%s _tmp_21[%d-%d]: %s failed!\n", p->level, ' ',
28535
14.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
28536
14.8k
    }
28537
0
    _res = NULL;
28538
16.4k
  done:
28539
16.4k
    p->level--;
28540
16.4k
    return _res;
28541
14.8k
}
28542
28543
// _loop0_22: ',' dotted_as_name
28544
static asdl_seq *
28545
_loop0_22_rule(Parser *p)
28546
2.56k
{
28547
2.56k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28548
0
        _Pypegen_stack_overflow(p);
28549
0
    }
28550
2.56k
    if (p->error_indicator) {
28551
0
        p->level--;
28552
0
        return NULL;
28553
0
    }
28554
2.56k
    void *_res = NULL;
28555
2.56k
    int _mark = p->mark;
28556
2.56k
    void **_children = PyMem_Malloc(sizeof(void *));
28557
2.56k
    if (!_children) {
28558
0
        p->error_indicator = 1;
28559
0
        PyErr_NoMemory();
28560
0
        p->level--;
28561
0
        return NULL;
28562
0
    }
28563
2.56k
    Py_ssize_t _children_capacity = 1;
28564
2.56k
    Py_ssize_t _n = 0;
28565
2.56k
    { // ',' dotted_as_name
28566
2.56k
        if (p->error_indicator) {
28567
0
            p->level--;
28568
0
            return NULL;
28569
0
        }
28570
2.56k
        D(fprintf(stderr, "%*c> _loop0_22[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' dotted_as_name"));
28571
2.56k
        Token * _literal;
28572
2.56k
        alias_ty elem;
28573
2.56k
        while (
28574
6.94k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
28575
6.94k
            &&
28576
6.94k
            (elem = dotted_as_name_rule(p))  // dotted_as_name
28577
2.56k
        )
28578
4.37k
        {
28579
4.37k
            _res = elem;
28580
4.37k
            if (_res == NULL && PyErr_Occurred()) {
28581
0
                p->error_indicator = 1;
28582
0
                PyMem_Free(_children);
28583
0
                p->level--;
28584
0
                return NULL;
28585
0
            }
28586
4.37k
            if (_n == _children_capacity) {
28587
1.20k
                _children_capacity *= 2;
28588
1.20k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28589
1.20k
                if (!_new_children) {
28590
0
                    PyMem_Free(_children);
28591
0
                    p->error_indicator = 1;
28592
0
                    PyErr_NoMemory();
28593
0
                    p->level--;
28594
0
                    return NULL;
28595
0
                }
28596
1.20k
                _children = _new_children;
28597
1.20k
            }
28598
4.37k
            _children[_n++] = _res;
28599
4.37k
            _mark = p->mark;
28600
4.37k
        }
28601
2.56k
        p->mark = _mark;
28602
2.56k
        D(fprintf(stderr, "%*c%s _loop0_22[%d-%d]: %s failed!\n", p->level, ' ',
28603
2.56k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' dotted_as_name"));
28604
2.56k
    }
28605
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28606
2.56k
    if (!_seq) {
28607
0
        PyMem_Free(_children);
28608
0
        p->error_indicator = 1;
28609
0
        PyErr_NoMemory();
28610
0
        p->level--;
28611
0
        return NULL;
28612
0
    }
28613
6.94k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28614
2.56k
    PyMem_Free(_children);
28615
2.56k
    p->level--;
28616
2.56k
    return _seq;
28617
2.56k
}
28618
28619
// _gather_23: dotted_as_name _loop0_22
28620
static asdl_seq *
28621
_gather_23_rule(Parser *p)
28622
2.60k
{
28623
2.60k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28624
0
        _Pypegen_stack_overflow(p);
28625
0
    }
28626
2.60k
    if (p->error_indicator) {
28627
0
        p->level--;
28628
0
        return NULL;
28629
0
    }
28630
2.60k
    asdl_seq * _res = NULL;
28631
2.60k
    int _mark = p->mark;
28632
2.60k
    { // dotted_as_name _loop0_22
28633
2.60k
        if (p->error_indicator) {
28634
0
            p->level--;
28635
0
            return NULL;
28636
0
        }
28637
2.60k
        D(fprintf(stderr, "%*c> _gather_23[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_as_name _loop0_22"));
28638
2.60k
        alias_ty elem;
28639
2.60k
        asdl_seq * seq;
28640
2.60k
        if (
28641
2.60k
            (elem = dotted_as_name_rule(p))  // dotted_as_name
28642
2.60k
            &&
28643
2.60k
            (seq = _loop0_22_rule(p))  // _loop0_22
28644
2.60k
        )
28645
2.56k
        {
28646
2.56k
            D(fprintf(stderr, "%*c+ _gather_23[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_as_name _loop0_22"));
28647
2.56k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28648
2.56k
            goto done;
28649
2.56k
        }
28650
41
        p->mark = _mark;
28651
41
        D(fprintf(stderr, "%*c%s _gather_23[%d-%d]: %s failed!\n", p->level, ' ',
28652
41
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_as_name _loop0_22"));
28653
41
    }
28654
0
    _res = NULL;
28655
2.60k
  done:
28656
2.60k
    p->level--;
28657
2.60k
    return _res;
28658
41
}
28659
28660
// _loop1_24: ('@' named_expression NEWLINE)
28661
static asdl_seq *
28662
_loop1_24_rule(Parser *p)
28663
18.7k
{
28664
18.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28665
0
        _Pypegen_stack_overflow(p);
28666
0
    }
28667
18.7k
    if (p->error_indicator) {
28668
0
        p->level--;
28669
0
        return NULL;
28670
0
    }
28671
18.7k
    void *_res = NULL;
28672
18.7k
    int _mark = p->mark;
28673
18.7k
    void **_children = PyMem_Malloc(sizeof(void *));
28674
18.7k
    if (!_children) {
28675
0
        p->error_indicator = 1;
28676
0
        PyErr_NoMemory();
28677
0
        p->level--;
28678
0
        return NULL;
28679
0
    }
28680
18.7k
    Py_ssize_t _children_capacity = 1;
28681
18.7k
    Py_ssize_t _n = 0;
28682
18.7k
    { // ('@' named_expression NEWLINE)
28683
18.7k
        if (p->error_indicator) {
28684
0
            p->level--;
28685
0
            return NULL;
28686
0
        }
28687
18.7k
        D(fprintf(stderr, "%*c> _loop1_24[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('@' named_expression NEWLINE)"));
28688
18.7k
        void *_tmp_156_var;
28689
18.7k
        while (
28690
23.4k
            (_tmp_156_var = _tmp_156_rule(p))  // '@' named_expression NEWLINE
28691
18.7k
        )
28692
4.74k
        {
28693
4.74k
            _res = _tmp_156_var;
28694
4.74k
            if (_n == _children_capacity) {
28695
971
                _children_capacity *= 2;
28696
971
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28697
971
                if (!_new_children) {
28698
0
                    PyMem_Free(_children);
28699
0
                    p->error_indicator = 1;
28700
0
                    PyErr_NoMemory();
28701
0
                    p->level--;
28702
0
                    return NULL;
28703
0
                }
28704
971
                _children = _new_children;
28705
971
            }
28706
4.74k
            _children[_n++] = _res;
28707
4.74k
            _mark = p->mark;
28708
4.74k
        }
28709
18.7k
        p->mark = _mark;
28710
18.7k
        D(fprintf(stderr, "%*c%s _loop1_24[%d-%d]: %s failed!\n", p->level, ' ',
28711
18.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('@' named_expression NEWLINE)"));
28712
18.7k
    }
28713
18.7k
    if (_n == 0 || p->error_indicator) {
28714
16.2k
        PyMem_Free(_children);
28715
16.2k
        p->level--;
28716
16.2k
        return NULL;
28717
16.2k
    }
28718
2.42k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28719
2.42k
    if (!_seq) {
28720
0
        PyMem_Free(_children);
28721
0
        p->error_indicator = 1;
28722
0
        PyErr_NoMemory();
28723
0
        p->level--;
28724
0
        return NULL;
28725
0
    }
28726
7.16k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28727
2.42k
    PyMem_Free(_children);
28728
2.42k
    p->level--;
28729
2.42k
    return _seq;
28730
2.42k
}
28731
28732
// _tmp_25: '(' arguments? ')'
28733
static void *
28734
_tmp_25_rule(Parser *p)
28735
6.05k
{
28736
6.05k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28737
0
        _Pypegen_stack_overflow(p);
28738
0
    }
28739
6.05k
    if (p->error_indicator) {
28740
0
        p->level--;
28741
0
        return NULL;
28742
0
    }
28743
6.05k
    void * _res = NULL;
28744
6.05k
    int _mark = p->mark;
28745
6.05k
    { // '(' arguments? ')'
28746
6.05k
        if (p->error_indicator) {
28747
0
            p->level--;
28748
0
            return NULL;
28749
0
        }
28750
6.05k
        D(fprintf(stderr, "%*c> _tmp_25[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
28751
6.05k
        Token * _literal;
28752
6.05k
        Token * _literal_1;
28753
6.05k
        void *z;
28754
6.05k
        if (
28755
6.05k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
28756
6.05k
            &&
28757
6.05k
            (z = arguments_rule(p), !p->error_indicator)  // arguments?
28758
6.05k
            &&
28759
6.05k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
28760
6.05k
        )
28761
2.27k
        {
28762
2.27k
            D(fprintf(stderr, "%*c+ _tmp_25[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
28763
2.27k
            _res = z;
28764
2.27k
            if (_res == NULL && PyErr_Occurred()) {
28765
0
                p->error_indicator = 1;
28766
0
                p->level--;
28767
0
                return NULL;
28768
0
            }
28769
2.27k
            goto done;
28770
2.27k
        }
28771
3.78k
        p->mark = _mark;
28772
3.78k
        D(fprintf(stderr, "%*c%s _tmp_25[%d-%d]: %s failed!\n", p->level, ' ',
28773
3.78k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'"));
28774
3.78k
    }
28775
0
    _res = NULL;
28776
6.05k
  done:
28777
6.05k
    p->level--;
28778
6.05k
    return _res;
28779
3.78k
}
28780
28781
// _tmp_26: '->' expression
28782
static void *
28783
_tmp_26_rule(Parser *p)
28784
13.0k
{
28785
13.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28786
0
        _Pypegen_stack_overflow(p);
28787
0
    }
28788
13.0k
    if (p->error_indicator) {
28789
0
        p->level--;
28790
0
        return NULL;
28791
0
    }
28792
13.0k
    void * _res = NULL;
28793
13.0k
    int _mark = p->mark;
28794
13.0k
    { // '->' expression
28795
13.0k
        if (p->error_indicator) {
28796
0
            p->level--;
28797
0
            return NULL;
28798
0
        }
28799
13.0k
        D(fprintf(stderr, "%*c> _tmp_26[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression"));
28800
13.0k
        Token * _literal;
28801
13.0k
        expr_ty z;
28802
13.0k
        if (
28803
13.0k
            (_literal = _PyPegen_expect_token(p, 51))  // token='->'
28804
13.0k
            &&
28805
13.0k
            (z = expression_rule(p))  // expression
28806
13.0k
        )
28807
511
        {
28808
511
            D(fprintf(stderr, "%*c+ _tmp_26[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression"));
28809
511
            _res = z;
28810
511
            if (_res == NULL && PyErr_Occurred()) {
28811
0
                p->error_indicator = 1;
28812
0
                p->level--;
28813
0
                return NULL;
28814
0
            }
28815
511
            goto done;
28816
511
        }
28817
12.4k
        p->mark = _mark;
28818
12.4k
        D(fprintf(stderr, "%*c%s _tmp_26[%d-%d]: %s failed!\n", p->level, ' ',
28819
12.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression"));
28820
12.4k
    }
28821
0
    _res = NULL;
28822
13.0k
  done:
28823
13.0k
    p->level--;
28824
13.0k
    return _res;
28825
12.4k
}
28826
28827
// _loop0_27: param_no_default
28828
static asdl_seq *
28829
_loop0_27_rule(Parser *p)
28830
62.8k
{
28831
62.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28832
0
        _Pypegen_stack_overflow(p);
28833
0
    }
28834
62.8k
    if (p->error_indicator) {
28835
0
        p->level--;
28836
0
        return NULL;
28837
0
    }
28838
62.8k
    void *_res = NULL;
28839
62.8k
    int _mark = p->mark;
28840
62.8k
    void **_children = PyMem_Malloc(sizeof(void *));
28841
62.8k
    if (!_children) {
28842
0
        p->error_indicator = 1;
28843
0
        PyErr_NoMemory();
28844
0
        p->level--;
28845
0
        return NULL;
28846
0
    }
28847
62.8k
    Py_ssize_t _children_capacity = 1;
28848
62.8k
    Py_ssize_t _n = 0;
28849
62.8k
    { // param_no_default
28850
62.8k
        if (p->error_indicator) {
28851
0
            p->level--;
28852
0
            return NULL;
28853
0
        }
28854
62.8k
        D(fprintf(stderr, "%*c> _loop0_27[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
28855
62.8k
        arg_ty param_no_default_var;
28856
62.8k
        while (
28857
89.1k
            (param_no_default_var = param_no_default_rule(p))  // param_no_default
28858
62.8k
        )
28859
26.3k
        {
28860
26.3k
            _res = param_no_default_var;
28861
26.3k
            if (_n == _children_capacity) {
28862
7.00k
                _children_capacity *= 2;
28863
7.00k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28864
7.00k
                if (!_new_children) {
28865
0
                    PyMem_Free(_children);
28866
0
                    p->error_indicator = 1;
28867
0
                    PyErr_NoMemory();
28868
0
                    p->level--;
28869
0
                    return NULL;
28870
0
                }
28871
7.00k
                _children = _new_children;
28872
7.00k
            }
28873
26.3k
            _children[_n++] = _res;
28874
26.3k
            _mark = p->mark;
28875
26.3k
        }
28876
62.8k
        p->mark = _mark;
28877
62.8k
        D(fprintf(stderr, "%*c%s _loop0_27[%d-%d]: %s failed!\n", p->level, ' ',
28878
62.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
28879
62.8k
    }
28880
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28881
62.8k
    if (!_seq) {
28882
0
        PyMem_Free(_children);
28883
0
        p->error_indicator = 1;
28884
0
        PyErr_NoMemory();
28885
0
        p->level--;
28886
0
        return NULL;
28887
0
    }
28888
89.1k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28889
62.8k
    PyMem_Free(_children);
28890
62.8k
    p->level--;
28891
62.8k
    return _seq;
28892
62.8k
}
28893
28894
// _loop0_28: param_with_default
28895
static asdl_seq *
28896
_loop0_28_rule(Parser *p)
28897
7.52k
{
28898
7.52k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28899
0
        _Pypegen_stack_overflow(p);
28900
0
    }
28901
7.52k
    if (p->error_indicator) {
28902
2
        p->level--;
28903
2
        return NULL;
28904
2
    }
28905
7.52k
    void *_res = NULL;
28906
7.52k
    int _mark = p->mark;
28907
7.52k
    void **_children = PyMem_Malloc(sizeof(void *));
28908
7.52k
    if (!_children) {
28909
0
        p->error_indicator = 1;
28910
0
        PyErr_NoMemory();
28911
0
        p->level--;
28912
0
        return NULL;
28913
0
    }
28914
7.52k
    Py_ssize_t _children_capacity = 1;
28915
7.52k
    Py_ssize_t _n = 0;
28916
7.52k
    { // param_with_default
28917
7.52k
        if (p->error_indicator) {
28918
0
            p->level--;
28919
0
            return NULL;
28920
0
        }
28921
7.52k
        D(fprintf(stderr, "%*c> _loop0_28[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
28922
7.52k
        NameDefaultPair* param_with_default_var;
28923
7.52k
        while (
28924
9.96k
            (param_with_default_var = param_with_default_rule(p))  // param_with_default
28925
7.52k
        )
28926
2.43k
        {
28927
2.43k
            _res = param_with_default_var;
28928
2.43k
            if (_n == _children_capacity) {
28929
474
                _children_capacity *= 2;
28930
474
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28931
474
                if (!_new_children) {
28932
0
                    PyMem_Free(_children);
28933
0
                    p->error_indicator = 1;
28934
0
                    PyErr_NoMemory();
28935
0
                    p->level--;
28936
0
                    return NULL;
28937
0
                }
28938
474
                _children = _new_children;
28939
474
            }
28940
2.43k
            _children[_n++] = _res;
28941
2.43k
            _mark = p->mark;
28942
2.43k
        }
28943
7.52k
        p->mark = _mark;
28944
7.52k
        D(fprintf(stderr, "%*c%s _loop0_28[%d-%d]: %s failed!\n", p->level, ' ',
28945
7.52k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
28946
7.52k
    }
28947
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28948
7.52k
    if (!_seq) {
28949
0
        PyMem_Free(_children);
28950
0
        p->error_indicator = 1;
28951
0
        PyErr_NoMemory();
28952
0
        p->level--;
28953
0
        return NULL;
28954
0
    }
28955
9.96k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28956
7.52k
    PyMem_Free(_children);
28957
7.52k
    p->level--;
28958
7.52k
    return _seq;
28959
7.52k
}
28960
28961
// _loop1_29: param_no_default
28962
static asdl_seq *
28963
_loop1_29_rule(Parser *p)
28964
67.6k
{
28965
67.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28966
0
        _Pypegen_stack_overflow(p);
28967
0
    }
28968
67.6k
    if (p->error_indicator) {
28969
0
        p->level--;
28970
0
        return NULL;
28971
0
    }
28972
67.6k
    void *_res = NULL;
28973
67.6k
    int _mark = p->mark;
28974
67.6k
    void **_children = PyMem_Malloc(sizeof(void *));
28975
67.6k
    if (!_children) {
28976
0
        p->error_indicator = 1;
28977
0
        PyErr_NoMemory();
28978
0
        p->level--;
28979
0
        return NULL;
28980
0
    }
28981
67.6k
    Py_ssize_t _children_capacity = 1;
28982
67.6k
    Py_ssize_t _n = 0;
28983
67.6k
    { // param_no_default
28984
67.6k
        if (p->error_indicator) {
28985
0
            p->level--;
28986
0
            return NULL;
28987
0
        }
28988
67.6k
        D(fprintf(stderr, "%*c> _loop1_29[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
28989
67.6k
        arg_ty param_no_default_var;
28990
67.6k
        while (
28991
107k
            (param_no_default_var = param_no_default_rule(p))  // param_no_default
28992
67.6k
        )
28993
39.6k
        {
28994
39.6k
            _res = param_no_default_var;
28995
39.6k
            if (_n == _children_capacity) {
28996
9.91k
                _children_capacity *= 2;
28997
9.91k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28998
9.91k
                if (!_new_children) {
28999
0
                    PyMem_Free(_children);
29000
0
                    p->error_indicator = 1;
29001
0
                    PyErr_NoMemory();
29002
0
                    p->level--;
29003
0
                    return NULL;
29004
0
                }
29005
9.91k
                _children = _new_children;
29006
9.91k
            }
29007
39.6k
            _children[_n++] = _res;
29008
39.6k
            _mark = p->mark;
29009
39.6k
        }
29010
67.6k
        p->mark = _mark;
29011
67.6k
        D(fprintf(stderr, "%*c%s _loop1_29[%d-%d]: %s failed!\n", p->level, ' ',
29012
67.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
29013
67.6k
    }
29014
67.6k
    if (_n == 0 || p->error_indicator) {
29015
41.7k
        PyMem_Free(_children);
29016
41.7k
        p->level--;
29017
41.7k
        return NULL;
29018
41.7k
    }
29019
25.8k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29020
25.8k
    if (!_seq) {
29021
0
        PyMem_Free(_children);
29022
0
        p->error_indicator = 1;
29023
0
        PyErr_NoMemory();
29024
0
        p->level--;
29025
0
        return NULL;
29026
0
    }
29027
65.4k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29028
25.8k
    PyMem_Free(_children);
29029
25.8k
    p->level--;
29030
25.8k
    return _seq;
29031
25.8k
}
29032
29033
// _loop1_30: param_with_default
29034
static asdl_seq *
29035
_loop1_30_rule(Parser *p)
29036
62.7k
{
29037
62.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29038
0
        _Pypegen_stack_overflow(p);
29039
0
    }
29040
62.7k
    if (p->error_indicator) {
29041
0
        p->level--;
29042
0
        return NULL;
29043
0
    }
29044
62.7k
    void *_res = NULL;
29045
62.7k
    int _mark = p->mark;
29046
62.7k
    void **_children = PyMem_Malloc(sizeof(void *));
29047
62.7k
    if (!_children) {
29048
0
        p->error_indicator = 1;
29049
0
        PyErr_NoMemory();
29050
0
        p->level--;
29051
0
        return NULL;
29052
0
    }
29053
62.7k
    Py_ssize_t _children_capacity = 1;
29054
62.7k
    Py_ssize_t _n = 0;
29055
62.7k
    { // param_with_default
29056
62.7k
        if (p->error_indicator) {
29057
0
            p->level--;
29058
0
            return NULL;
29059
0
        }
29060
62.7k
        D(fprintf(stderr, "%*c> _loop1_30[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
29061
62.7k
        NameDefaultPair* param_with_default_var;
29062
62.7k
        while (
29063
84.8k
            (param_with_default_var = param_with_default_rule(p))  // param_with_default
29064
62.7k
        )
29065
22.0k
        {
29066
22.0k
            _res = param_with_default_var;
29067
22.0k
            if (_n == _children_capacity) {
29068
2.23k
                _children_capacity *= 2;
29069
2.23k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29070
2.23k
                if (!_new_children) {
29071
0
                    PyMem_Free(_children);
29072
0
                    p->error_indicator = 1;
29073
0
                    PyErr_NoMemory();
29074
0
                    p->level--;
29075
0
                    return NULL;
29076
0
                }
29077
2.23k
                _children = _new_children;
29078
2.23k
            }
29079
22.0k
            _children[_n++] = _res;
29080
22.0k
            _mark = p->mark;
29081
22.0k
        }
29082
62.7k
        p->mark = _mark;
29083
62.7k
        D(fprintf(stderr, "%*c%s _loop1_30[%d-%d]: %s failed!\n", p->level, ' ',
29084
62.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
29085
62.7k
    }
29086
62.7k
    if (_n == 0 || p->error_indicator) {
29087
49.1k
        PyMem_Free(_children);
29088
49.1k
        p->level--;
29089
49.1k
        return NULL;
29090
49.1k
    }
29091
13.5k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29092
13.5k
    if (!_seq) {
29093
0
        PyMem_Free(_children);
29094
0
        p->error_indicator = 1;
29095
0
        PyErr_NoMemory();
29096
0
        p->level--;
29097
0
        return NULL;
29098
0
    }
29099
35.6k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29100
13.5k
    PyMem_Free(_children);
29101
13.5k
    p->level--;
29102
13.5k
    return _seq;
29103
13.5k
}
29104
29105
// _loop0_31: param_maybe_default
29106
static asdl_seq *
29107
_loop0_31_rule(Parser *p)
29108
9.58k
{
29109
9.58k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29110
0
        _Pypegen_stack_overflow(p);
29111
0
    }
29112
9.58k
    if (p->error_indicator) {
29113
0
        p->level--;
29114
0
        return NULL;
29115
0
    }
29116
9.58k
    void *_res = NULL;
29117
9.58k
    int _mark = p->mark;
29118
9.58k
    void **_children = PyMem_Malloc(sizeof(void *));
29119
9.58k
    if (!_children) {
29120
0
        p->error_indicator = 1;
29121
0
        PyErr_NoMemory();
29122
0
        p->level--;
29123
0
        return NULL;
29124
0
    }
29125
9.58k
    Py_ssize_t _children_capacity = 1;
29126
9.58k
    Py_ssize_t _n = 0;
29127
9.58k
    { // param_maybe_default
29128
9.58k
        if (p->error_indicator) {
29129
0
            p->level--;
29130
0
            return NULL;
29131
0
        }
29132
9.58k
        D(fprintf(stderr, "%*c> _loop0_31[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
29133
9.58k
        NameDefaultPair* param_maybe_default_var;
29134
9.58k
        while (
29135
15.5k
            (param_maybe_default_var = param_maybe_default_rule(p))  // param_maybe_default
29136
9.58k
        )
29137
5.97k
        {
29138
5.97k
            _res = param_maybe_default_var;
29139
5.97k
            if (_n == _children_capacity) {
29140
1.65k
                _children_capacity *= 2;
29141
1.65k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29142
1.65k
                if (!_new_children) {
29143
0
                    PyMem_Free(_children);
29144
0
                    p->error_indicator = 1;
29145
0
                    PyErr_NoMemory();
29146
0
                    p->level--;
29147
0
                    return NULL;
29148
0
                }
29149
1.65k
                _children = _new_children;
29150
1.65k
            }
29151
5.97k
            _children[_n++] = _res;
29152
5.97k
            _mark = p->mark;
29153
5.97k
        }
29154
9.58k
        p->mark = _mark;
29155
9.58k
        D(fprintf(stderr, "%*c%s _loop0_31[%d-%d]: %s failed!\n", p->level, ' ',
29156
9.58k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
29157
9.58k
    }
29158
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29159
9.58k
    if (!_seq) {
29160
0
        PyMem_Free(_children);
29161
0
        p->error_indicator = 1;
29162
0
        PyErr_NoMemory();
29163
0
        p->level--;
29164
0
        return NULL;
29165
0
    }
29166
15.5k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29167
9.58k
    PyMem_Free(_children);
29168
9.58k
    p->level--;
29169
9.58k
    return _seq;
29170
9.58k
}
29171
29172
// _loop1_32: param_maybe_default
29173
static asdl_seq *
29174
_loop1_32_rule(Parser *p)
29175
5.80k
{
29176
5.80k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29177
0
        _Pypegen_stack_overflow(p);
29178
0
    }
29179
5.80k
    if (p->error_indicator) {
29180
0
        p->level--;
29181
0
        return NULL;
29182
0
    }
29183
5.80k
    void *_res = NULL;
29184
5.80k
    int _mark = p->mark;
29185
5.80k
    void **_children = PyMem_Malloc(sizeof(void *));
29186
5.80k
    if (!_children) {
29187
0
        p->error_indicator = 1;
29188
0
        PyErr_NoMemory();
29189
0
        p->level--;
29190
0
        return NULL;
29191
0
    }
29192
5.80k
    Py_ssize_t _children_capacity = 1;
29193
5.80k
    Py_ssize_t _n = 0;
29194
5.80k
    { // param_maybe_default
29195
5.80k
        if (p->error_indicator) {
29196
0
            p->level--;
29197
0
            return NULL;
29198
0
        }
29199
5.80k
        D(fprintf(stderr, "%*c> _loop1_32[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
29200
5.80k
        NameDefaultPair* param_maybe_default_var;
29201
5.80k
        while (
29202
10.6k
            (param_maybe_default_var = param_maybe_default_rule(p))  // param_maybe_default
29203
5.80k
        )
29204
4.82k
        {
29205
4.82k
            _res = param_maybe_default_var;
29206
4.82k
            if (_n == _children_capacity) {
29207
712
                _children_capacity *= 2;
29208
712
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29209
712
                if (!_new_children) {
29210
0
                    PyMem_Free(_children);
29211
0
                    p->error_indicator = 1;
29212
0
                    PyErr_NoMemory();
29213
0
                    p->level--;
29214
0
                    return NULL;
29215
0
                }
29216
712
                _children = _new_children;
29217
712
            }
29218
4.82k
            _children[_n++] = _res;
29219
4.82k
            _mark = p->mark;
29220
4.82k
        }
29221
5.80k
        p->mark = _mark;
29222
5.80k
        D(fprintf(stderr, "%*c%s _loop1_32[%d-%d]: %s failed!\n", p->level, ' ',
29223
5.80k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
29224
5.80k
    }
29225
5.80k
    if (_n == 0 || p->error_indicator) {
29226
2.84k
        PyMem_Free(_children);
29227
2.84k
        p->level--;
29228
2.84k
        return NULL;
29229
2.84k
    }
29230
2.95k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29231
2.95k
    if (!_seq) {
29232
0
        PyMem_Free(_children);
29233
0
        p->error_indicator = 1;
29234
0
        PyErr_NoMemory();
29235
0
        p->level--;
29236
0
        return NULL;
29237
0
    }
29238
7.78k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29239
2.95k
    PyMem_Free(_children);
29240
2.95k
    p->level--;
29241
2.95k
    return _seq;
29242
2.95k
}
29243
29244
// _loop0_33: ',' with_item
29245
static asdl_seq *
29246
_loop0_33_rule(Parser *p)
29247
6.10k
{
29248
6.10k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29249
0
        _Pypegen_stack_overflow(p);
29250
0
    }
29251
6.10k
    if (p->error_indicator) {
29252
0
        p->level--;
29253
0
        return NULL;
29254
0
    }
29255
6.10k
    void *_res = NULL;
29256
6.10k
    int _mark = p->mark;
29257
6.10k
    void **_children = PyMem_Malloc(sizeof(void *));
29258
6.10k
    if (!_children) {
29259
0
        p->error_indicator = 1;
29260
0
        PyErr_NoMemory();
29261
0
        p->level--;
29262
0
        return NULL;
29263
0
    }
29264
6.10k
    Py_ssize_t _children_capacity = 1;
29265
6.10k
    Py_ssize_t _n = 0;
29266
6.10k
    { // ',' with_item
29267
6.10k
        if (p->error_indicator) {
29268
0
            p->level--;
29269
0
            return NULL;
29270
0
        }
29271
6.10k
        D(fprintf(stderr, "%*c> _loop0_33[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
29272
6.10k
        Token * _literal;
29273
6.10k
        withitem_ty elem;
29274
6.10k
        while (
29275
13.5k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
29276
13.5k
            &&
29277
13.5k
            (elem = with_item_rule(p))  // with_item
29278
6.10k
        )
29279
7.41k
        {
29280
7.41k
            _res = elem;
29281
7.41k
            if (_res == NULL && PyErr_Occurred()) {
29282
0
                p->error_indicator = 1;
29283
0
                PyMem_Free(_children);
29284
0
                p->level--;
29285
0
                return NULL;
29286
0
            }
29287
7.41k
            if (_n == _children_capacity) {
29288
2.79k
                _children_capacity *= 2;
29289
2.79k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29290
2.79k
                if (!_new_children) {
29291
0
                    PyMem_Free(_children);
29292
0
                    p->error_indicator = 1;
29293
0
                    PyErr_NoMemory();
29294
0
                    p->level--;
29295
0
                    return NULL;
29296
0
                }
29297
2.79k
                _children = _new_children;
29298
2.79k
            }
29299
7.41k
            _children[_n++] = _res;
29300
7.41k
            _mark = p->mark;
29301
7.41k
        }
29302
6.10k
        p->mark = _mark;
29303
6.10k
        D(fprintf(stderr, "%*c%s _loop0_33[%d-%d]: %s failed!\n", p->level, ' ',
29304
6.10k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
29305
6.10k
    }
29306
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29307
6.10k
    if (!_seq) {
29308
0
        PyMem_Free(_children);
29309
0
        p->error_indicator = 1;
29310
0
        PyErr_NoMemory();
29311
0
        p->level--;
29312
0
        return NULL;
29313
0
    }
29314
13.5k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29315
6.10k
    PyMem_Free(_children);
29316
6.10k
    p->level--;
29317
6.10k
    return _seq;
29318
6.10k
}
29319
29320
// _gather_34: with_item _loop0_33
29321
static asdl_seq *
29322
_gather_34_rule(Parser *p)
29323
7.56k
{
29324
7.56k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29325
0
        _Pypegen_stack_overflow(p);
29326
0
    }
29327
7.56k
    if (p->error_indicator) {
29328
0
        p->level--;
29329
0
        return NULL;
29330
0
    }
29331
7.56k
    asdl_seq * _res = NULL;
29332
7.56k
    int _mark = p->mark;
29333
7.56k
    { // with_item _loop0_33
29334
7.56k
        if (p->error_indicator) {
29335
0
            p->level--;
29336
0
            return NULL;
29337
0
        }
29338
7.56k
        D(fprintf(stderr, "%*c> _gather_34[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_33"));
29339
7.56k
        withitem_ty elem;
29340
7.56k
        asdl_seq * seq;
29341
7.56k
        if (
29342
7.56k
            (elem = with_item_rule(p))  // with_item
29343
7.56k
            &&
29344
7.56k
            (seq = _loop0_33_rule(p))  // _loop0_33
29345
7.56k
        )
29346
6.10k
        {
29347
6.10k
            D(fprintf(stderr, "%*c+ _gather_34[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_33"));
29348
6.10k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
29349
6.10k
            goto done;
29350
6.10k
        }
29351
1.45k
        p->mark = _mark;
29352
1.45k
        D(fprintf(stderr, "%*c%s _gather_34[%d-%d]: %s failed!\n", p->level, ' ',
29353
1.45k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_33"));
29354
1.45k
    }
29355
0
    _res = NULL;
29356
7.56k
  done:
29357
7.56k
    p->level--;
29358
7.56k
    return _res;
29359
1.45k
}
29360
29361
// _tmp_35: ',' | ')' | ':'
29362
static void *
29363
_tmp_35_rule(Parser *p)
29364
1.95k
{
29365
1.95k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29366
0
        _Pypegen_stack_overflow(p);
29367
0
    }
29368
1.95k
    if (p->error_indicator) {
29369
0
        p->level--;
29370
0
        return NULL;
29371
0
    }
29372
1.95k
    void * _res = NULL;
29373
1.95k
    int _mark = p->mark;
29374
1.95k
    { // ','
29375
1.95k
        if (p->error_indicator) {
29376
0
            p->level--;
29377
0
            return NULL;
29378
0
        }
29379
1.95k
        D(fprintf(stderr, "%*c> _tmp_35[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
29380
1.95k
        Token * _literal;
29381
1.95k
        if (
29382
1.95k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
29383
1.95k
        )
29384
1.04k
        {
29385
1.04k
            D(fprintf(stderr, "%*c+ _tmp_35[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
29386
1.04k
            _res = _literal;
29387
1.04k
            goto done;
29388
1.04k
        }
29389
913
        p->mark = _mark;
29390
913
        D(fprintf(stderr, "%*c%s _tmp_35[%d-%d]: %s failed!\n", p->level, ' ',
29391
913
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
29392
913
    }
29393
0
    { // ')'
29394
913
        if (p->error_indicator) {
29395
0
            p->level--;
29396
0
            return NULL;
29397
0
        }
29398
913
        D(fprintf(stderr, "%*c> _tmp_35[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
29399
913
        Token * _literal;
29400
913
        if (
29401
913
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
29402
913
        )
29403
465
        {
29404
465
            D(fprintf(stderr, "%*c+ _tmp_35[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
29405
465
            _res = _literal;
29406
465
            goto done;
29407
465
        }
29408
448
        p->mark = _mark;
29409
448
        D(fprintf(stderr, "%*c%s _tmp_35[%d-%d]: %s failed!\n", p->level, ' ',
29410
448
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
29411
448
    }
29412
0
    { // ':'
29413
448
        if (p->error_indicator) {
29414
0
            p->level--;
29415
0
            return NULL;
29416
0
        }
29417
448
        D(fprintf(stderr, "%*c> _tmp_35[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
29418
448
        Token * _literal;
29419
448
        if (
29420
448
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
29421
448
        )
29422
433
        {
29423
433
            D(fprintf(stderr, "%*c+ _tmp_35[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
29424
433
            _res = _literal;
29425
433
            goto done;
29426
433
        }
29427
15
        p->mark = _mark;
29428
15
        D(fprintf(stderr, "%*c%s _tmp_35[%d-%d]: %s failed!\n", p->level, ' ',
29429
15
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
29430
15
    }
29431
0
    _res = NULL;
29432
1.95k
  done:
29433
1.95k
    p->level--;
29434
1.95k
    return _res;
29435
15
}
29436
29437
// _loop1_36: except_block
29438
static asdl_seq *
29439
_loop1_36_rule(Parser *p)
29440
6.69k
{
29441
6.69k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29442
0
        _Pypegen_stack_overflow(p);
29443
0
    }
29444
6.69k
    if (p->error_indicator) {
29445
0
        p->level--;
29446
0
        return NULL;
29447
0
    }
29448
6.69k
    void *_res = NULL;
29449
6.69k
    int _mark = p->mark;
29450
6.69k
    void **_children = PyMem_Malloc(sizeof(void *));
29451
6.69k
    if (!_children) {
29452
0
        p->error_indicator = 1;
29453
0
        PyErr_NoMemory();
29454
0
        p->level--;
29455
0
        return NULL;
29456
0
    }
29457
6.69k
    Py_ssize_t _children_capacity = 1;
29458
6.69k
    Py_ssize_t _n = 0;
29459
6.69k
    { // except_block
29460
6.69k
        if (p->error_indicator) {
29461
0
            p->level--;
29462
0
            return NULL;
29463
0
        }
29464
6.69k
        D(fprintf(stderr, "%*c> _loop1_36[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_block"));
29465
6.69k
        excepthandler_ty except_block_var;
29466
6.69k
        while (
29467
13.3k
            (except_block_var = except_block_rule(p))  // except_block
29468
6.69k
        )
29469
6.68k
        {
29470
6.68k
            _res = except_block_var;
29471
6.68k
            if (_n == _children_capacity) {
29472
1.15k
                _children_capacity *= 2;
29473
1.15k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29474
1.15k
                if (!_new_children) {
29475
0
                    PyMem_Free(_children);
29476
0
                    p->error_indicator = 1;
29477
0
                    PyErr_NoMemory();
29478
0
                    p->level--;
29479
0
                    return NULL;
29480
0
                }
29481
1.15k
                _children = _new_children;
29482
1.15k
            }
29483
6.68k
            _children[_n++] = _res;
29484
6.68k
            _mark = p->mark;
29485
6.68k
        }
29486
6.69k
        p->mark = _mark;
29487
6.69k
        D(fprintf(stderr, "%*c%s _loop1_36[%d-%d]: %s failed!\n", p->level, ' ',
29488
6.69k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_block"));
29489
6.69k
    }
29490
6.69k
    if (_n == 0 || p->error_indicator) {
29491
3.17k
        PyMem_Free(_children);
29492
3.17k
        p->level--;
29493
3.17k
        return NULL;
29494
3.17k
    }
29495
3.51k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29496
3.51k
    if (!_seq) {
29497
0
        PyMem_Free(_children);
29498
0
        p->error_indicator = 1;
29499
0
        PyErr_NoMemory();
29500
0
        p->level--;
29501
0
        return NULL;
29502
0
    }
29503
10.1k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29504
3.51k
    PyMem_Free(_children);
29505
3.51k
    p->level--;
29506
3.51k
    return _seq;
29507
3.51k
}
29508
29509
// _loop1_37: except_star_block
29510
static asdl_seq *
29511
_loop1_37_rule(Parser *p)
29512
3.88k
{
29513
3.88k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29514
0
        _Pypegen_stack_overflow(p);
29515
0
    }
29516
3.88k
    if (p->error_indicator) {
29517
0
        p->level--;
29518
0
        return NULL;
29519
0
    }
29520
3.88k
    void *_res = NULL;
29521
3.88k
    int _mark = p->mark;
29522
3.88k
    void **_children = PyMem_Malloc(sizeof(void *));
29523
3.88k
    if (!_children) {
29524
0
        p->error_indicator = 1;
29525
0
        PyErr_NoMemory();
29526
0
        p->level--;
29527
0
        return NULL;
29528
0
    }
29529
3.88k
    Py_ssize_t _children_capacity = 1;
29530
3.88k
    Py_ssize_t _n = 0;
29531
3.88k
    { // except_star_block
29532
3.88k
        if (p->error_indicator) {
29533
0
            p->level--;
29534
0
            return NULL;
29535
0
        }
29536
3.88k
        D(fprintf(stderr, "%*c> _loop1_37[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_star_block"));
29537
3.88k
        excepthandler_ty except_star_block_var;
29538
3.88k
        while (
29539
8.27k
            (except_star_block_var = except_star_block_rule(p))  // except_star_block
29540
3.88k
        )
29541
4.38k
        {
29542
4.38k
            _res = except_star_block_var;
29543
4.38k
            if (_n == _children_capacity) {
29544
466
                _children_capacity *= 2;
29545
466
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29546
466
                if (!_new_children) {
29547
0
                    PyMem_Free(_children);
29548
0
                    p->error_indicator = 1;
29549
0
                    PyErr_NoMemory();
29550
0
                    p->level--;
29551
0
                    return NULL;
29552
0
                }
29553
466
                _children = _new_children;
29554
466
            }
29555
4.38k
            _children[_n++] = _res;
29556
4.38k
            _mark = p->mark;
29557
4.38k
        }
29558
3.88k
        p->mark = _mark;
29559
3.88k
        D(fprintf(stderr, "%*c%s _loop1_37[%d-%d]: %s failed!\n", p->level, ' ',
29560
3.88k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_star_block"));
29561
3.88k
    }
29562
3.88k
    if (_n == 0 || p->error_indicator) {
29563
1.34k
        PyMem_Free(_children);
29564
1.34k
        p->level--;
29565
1.34k
        return NULL;
29566
1.34k
    }
29567
2.54k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29568
2.54k
    if (!_seq) {
29569
0
        PyMem_Free(_children);
29570
0
        p->error_indicator = 1;
29571
0
        PyErr_NoMemory();
29572
0
        p->level--;
29573
0
        return NULL;
29574
0
    }
29575
6.93k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29576
2.54k
    PyMem_Free(_children);
29577
2.54k
    p->level--;
29578
2.54k
    return _seq;
29579
2.54k
}
29580
29581
// _loop1_38: case_block
29582
static asdl_seq *
29583
_loop1_38_rule(Parser *p)
29584
1.98k
{
29585
1.98k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29586
0
        _Pypegen_stack_overflow(p);
29587
0
    }
29588
1.98k
    if (p->error_indicator) {
29589
0
        p->level--;
29590
0
        return NULL;
29591
0
    }
29592
1.98k
    void *_res = NULL;
29593
1.98k
    int _mark = p->mark;
29594
1.98k
    void **_children = PyMem_Malloc(sizeof(void *));
29595
1.98k
    if (!_children) {
29596
0
        p->error_indicator = 1;
29597
0
        PyErr_NoMemory();
29598
0
        p->level--;
29599
0
        return NULL;
29600
0
    }
29601
1.98k
    Py_ssize_t _children_capacity = 1;
29602
1.98k
    Py_ssize_t _n = 0;
29603
1.98k
    { // case_block
29604
1.98k
        if (p->error_indicator) {
29605
0
            p->level--;
29606
0
            return NULL;
29607
0
        }
29608
1.98k
        D(fprintf(stderr, "%*c> _loop1_38[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "case_block"));
29609
1.98k
        match_case_ty case_block_var;
29610
1.98k
        while (
29611
6.98k
            (case_block_var = case_block_rule(p))  // case_block
29612
1.98k
        )
29613
4.99k
        {
29614
4.99k
            _res = case_block_var;
29615
4.99k
            if (_n == _children_capacity) {
29616
821
                _children_capacity *= 2;
29617
821
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29618
821
                if (!_new_children) {
29619
0
                    PyMem_Free(_children);
29620
0
                    p->error_indicator = 1;
29621
0
                    PyErr_NoMemory();
29622
0
                    p->level--;
29623
0
                    return NULL;
29624
0
                }
29625
821
                _children = _new_children;
29626
821
            }
29627
4.99k
            _children[_n++] = _res;
29628
4.99k
            _mark = p->mark;
29629
4.99k
        }
29630
1.98k
        p->mark = _mark;
29631
1.98k
        D(fprintf(stderr, "%*c%s _loop1_38[%d-%d]: %s failed!\n", p->level, ' ',
29632
1.98k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "case_block"));
29633
1.98k
    }
29634
1.98k
    if (_n == 0 || p->error_indicator) {
29635
1.22k
        PyMem_Free(_children);
29636
1.22k
        p->level--;
29637
1.22k
        return NULL;
29638
1.22k
    }
29639
767
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29640
767
    if (!_seq) {
29641
0
        PyMem_Free(_children);
29642
0
        p->error_indicator = 1;
29643
0
        PyErr_NoMemory();
29644
0
        p->level--;
29645
0
        return NULL;
29646
0
    }
29647
5.71k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29648
767
    PyMem_Free(_children);
29649
767
    p->level--;
29650
767
    return _seq;
29651
767
}
29652
29653
// _loop0_39: '|' closed_pattern
29654
static asdl_seq *
29655
_loop0_39_rule(Parser *p)
29656
168k
{
29657
168k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29658
0
        _Pypegen_stack_overflow(p);
29659
0
    }
29660
168k
    if (p->error_indicator) {
29661
24
        p->level--;
29662
24
        return NULL;
29663
24
    }
29664
168k
    void *_res = NULL;
29665
168k
    int _mark = p->mark;
29666
168k
    void **_children = PyMem_Malloc(sizeof(void *));
29667
168k
    if (!_children) {
29668
0
        p->error_indicator = 1;
29669
0
        PyErr_NoMemory();
29670
0
        p->level--;
29671
0
        return NULL;
29672
0
    }
29673
168k
    Py_ssize_t _children_capacity = 1;
29674
168k
    Py_ssize_t _n = 0;
29675
168k
    { // '|' closed_pattern
29676
168k
        if (p->error_indicator) {
29677
0
            p->level--;
29678
0
            return NULL;
29679
0
        }
29680
168k
        D(fprintf(stderr, "%*c> _loop0_39[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|' closed_pattern"));
29681
168k
        Token * _literal;
29682
168k
        pattern_ty elem;
29683
168k
        while (
29684
178k
            (_literal = _PyPegen_expect_token(p, 18))  // token='|'
29685
178k
            &&
29686
178k
            (elem = closed_pattern_rule(p))  // closed_pattern
29687
168k
        )
29688
9.73k
        {
29689
9.73k
            _res = elem;
29690
9.73k
            if (_res == NULL && PyErr_Occurred()) {
29691
0
                p->error_indicator = 1;
29692
0
                PyMem_Free(_children);
29693
0
                p->level--;
29694
0
                return NULL;
29695
0
            }
29696
9.73k
            if (_n == _children_capacity) {
29697
1.55k
                _children_capacity *= 2;
29698
1.55k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29699
1.55k
                if (!_new_children) {
29700
0
                    PyMem_Free(_children);
29701
0
                    p->error_indicator = 1;
29702
0
                    PyErr_NoMemory();
29703
0
                    p->level--;
29704
0
                    return NULL;
29705
0
                }
29706
1.55k
                _children = _new_children;
29707
1.55k
            }
29708
9.73k
            _children[_n++] = _res;
29709
9.73k
            _mark = p->mark;
29710
9.73k
        }
29711
168k
        p->mark = _mark;
29712
168k
        D(fprintf(stderr, "%*c%s _loop0_39[%d-%d]: %s failed!\n", p->level, ' ',
29713
168k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|' closed_pattern"));
29714
168k
    }
29715
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29716
168k
    if (!_seq) {
29717
0
        PyMem_Free(_children);
29718
0
        p->error_indicator = 1;
29719
0
        PyErr_NoMemory();
29720
0
        p->level--;
29721
0
        return NULL;
29722
0
    }
29723
178k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29724
168k
    PyMem_Free(_children);
29725
168k
    p->level--;
29726
168k
    return _seq;
29727
168k
}
29728
29729
// _gather_40: closed_pattern _loop0_39
29730
static asdl_seq *
29731
_gather_40_rule(Parser *p)
29732
268k
{
29733
268k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29734
0
        _Pypegen_stack_overflow(p);
29735
0
    }
29736
268k
    if (p->error_indicator) {
29737
0
        p->level--;
29738
0
        return NULL;
29739
0
    }
29740
268k
    asdl_seq * _res = NULL;
29741
268k
    int _mark = p->mark;
29742
268k
    { // closed_pattern _loop0_39
29743
268k
        if (p->error_indicator) {
29744
0
            p->level--;
29745
0
            return NULL;
29746
0
        }
29747
268k
        D(fprintf(stderr, "%*c> _gather_40[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "closed_pattern _loop0_39"));
29748
268k
        pattern_ty elem;
29749
268k
        asdl_seq * seq;
29750
268k
        if (
29751
268k
            (elem = closed_pattern_rule(p))  // closed_pattern
29752
268k
            &&
29753
268k
            (seq = _loop0_39_rule(p))  // _loop0_39
29754
268k
        )
29755
168k
        {
29756
168k
            D(fprintf(stderr, "%*c+ _gather_40[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "closed_pattern _loop0_39"));
29757
168k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
29758
168k
            goto done;
29759
168k
        }
29760
99.7k
        p->mark = _mark;
29761
99.7k
        D(fprintf(stderr, "%*c%s _gather_40[%d-%d]: %s failed!\n", p->level, ' ',
29762
99.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "closed_pattern _loop0_39"));
29763
99.7k
    }
29764
0
    _res = NULL;
29765
268k
  done:
29766
268k
    p->level--;
29767
268k
    return _res;
29768
99.7k
}
29769
29770
// _tmp_41: '+' | '-'
29771
static void *
29772
_tmp_41_rule(Parser *p)
29773
11.0k
{
29774
11.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29775
0
        _Pypegen_stack_overflow(p);
29776
0
    }
29777
11.0k
    if (p->error_indicator) {
29778
0
        p->level--;
29779
0
        return NULL;
29780
0
    }
29781
11.0k
    void * _res = NULL;
29782
11.0k
    int _mark = p->mark;
29783
11.0k
    { // '+'
29784
11.0k
        if (p->error_indicator) {
29785
0
            p->level--;
29786
0
            return NULL;
29787
0
        }
29788
11.0k
        D(fprintf(stderr, "%*c> _tmp_41[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+'"));
29789
11.0k
        Token * _literal;
29790
11.0k
        if (
29791
11.0k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
29792
11.0k
        )
29793
445
        {
29794
445
            D(fprintf(stderr, "%*c+ _tmp_41[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+'"));
29795
445
            _res = _literal;
29796
445
            goto done;
29797
445
        }
29798
10.5k
        p->mark = _mark;
29799
10.5k
        D(fprintf(stderr, "%*c%s _tmp_41[%d-%d]: %s failed!\n", p->level, ' ',
29800
10.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+'"));
29801
10.5k
    }
29802
0
    { // '-'
29803
10.5k
        if (p->error_indicator) {
29804
15
            p->level--;
29805
15
            return NULL;
29806
15
        }
29807
10.5k
        D(fprintf(stderr, "%*c> _tmp_41[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-'"));
29808
10.5k
        Token * _literal;
29809
10.5k
        if (
29810
10.5k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
29811
10.5k
        )
29812
749
        {
29813
749
            D(fprintf(stderr, "%*c+ _tmp_41[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-'"));
29814
749
            _res = _literal;
29815
749
            goto done;
29816
749
        }
29817
9.82k
        p->mark = _mark;
29818
9.82k
        D(fprintf(stderr, "%*c%s _tmp_41[%d-%d]: %s failed!\n", p->level, ' ',
29819
9.82k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-'"));
29820
9.82k
    }
29821
0
    _res = NULL;
29822
11.0k
  done:
29823
11.0k
    p->level--;
29824
11.0k
    return _res;
29825
9.82k
}
29826
29827
// _tmp_42: STRING | FSTRING_START | TSTRING_START
29828
static void *
29829
_tmp_42_rule(Parser *p)
29830
842k
{
29831
842k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29832
1
        _Pypegen_stack_overflow(p);
29833
1
    }
29834
842k
    if (p->error_indicator) {
29835
1
        p->level--;
29836
1
        return NULL;
29837
1
    }
29838
842k
    void * _res = NULL;
29839
842k
    int _mark = p->mark;
29840
842k
    { // STRING
29841
842k
        if (p->error_indicator) {
29842
0
            p->level--;
29843
0
            return NULL;
29844
0
        }
29845
842k
        D(fprintf(stderr, "%*c> _tmp_42[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING"));
29846
842k
        expr_ty string_var;
29847
842k
        if (
29848
842k
            (string_var = _PyPegen_string_token(p))  // STRING
29849
842k
        )
29850
82.0k
        {
29851
82.0k
            D(fprintf(stderr, "%*c+ _tmp_42[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING"));
29852
82.0k
            _res = string_var;
29853
82.0k
            goto done;
29854
82.0k
        }
29855
760k
        p->mark = _mark;
29856
760k
        D(fprintf(stderr, "%*c%s _tmp_42[%d-%d]: %s failed!\n", p->level, ' ',
29857
760k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING"));
29858
760k
    }
29859
0
    { // FSTRING_START
29860
760k
        if (p->error_indicator) {
29861
0
            p->level--;
29862
0
            return NULL;
29863
0
        }
29864
760k
        D(fprintf(stderr, "%*c> _tmp_42[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_START"));
29865
760k
        Token * fstring_start_var;
29866
760k
        if (
29867
760k
            (fstring_start_var = _PyPegen_expect_token(p, FSTRING_START))  // token='FSTRING_START'
29868
760k
        )
29869
22.3k
        {
29870
22.3k
            D(fprintf(stderr, "%*c+ _tmp_42[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_START"));
29871
22.3k
            _res = fstring_start_var;
29872
22.3k
            goto done;
29873
22.3k
        }
29874
738k
        p->mark = _mark;
29875
738k
        D(fprintf(stderr, "%*c%s _tmp_42[%d-%d]: %s failed!\n", p->level, ' ',
29876
738k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_START"));
29877
738k
    }
29878
0
    { // TSTRING_START
29879
738k
        if (p->error_indicator) {
29880
0
            p->level--;
29881
0
            return NULL;
29882
0
        }
29883
738k
        D(fprintf(stderr, "%*c> _tmp_42[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TSTRING_START"));
29884
738k
        Token * tstring_start_var;
29885
738k
        if (
29886
738k
            (tstring_start_var = _PyPegen_expect_token(p, TSTRING_START))  // token='TSTRING_START'
29887
738k
        )
29888
5.45k
        {
29889
5.45k
            D(fprintf(stderr, "%*c+ _tmp_42[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TSTRING_START"));
29890
5.45k
            _res = tstring_start_var;
29891
5.45k
            goto done;
29892
5.45k
        }
29893
732k
        p->mark = _mark;
29894
732k
        D(fprintf(stderr, "%*c%s _tmp_42[%d-%d]: %s failed!\n", p->level, ' ',
29895
732k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TSTRING_START"));
29896
732k
    }
29897
0
    _res = NULL;
29898
842k
  done:
29899
842k
    p->level--;
29900
842k
    return _res;
29901
732k
}
29902
29903
// _tmp_43: '.' | '(' | '='
29904
static void *
29905
_tmp_43_rule(Parser *p)
29906
32.5k
{
29907
32.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29908
0
        _Pypegen_stack_overflow(p);
29909
0
    }
29910
32.5k
    if (p->error_indicator) {
29911
0
        p->level--;
29912
0
        return NULL;
29913
0
    }
29914
32.5k
    void * _res = NULL;
29915
32.5k
    int _mark = p->mark;
29916
32.5k
    { // '.'
29917
32.5k
        if (p->error_indicator) {
29918
0
            p->level--;
29919
0
            return NULL;
29920
0
        }
29921
32.5k
        D(fprintf(stderr, "%*c> _tmp_43[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
29922
32.5k
        Token * _literal;
29923
32.5k
        if (
29924
32.5k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
29925
32.5k
        )
29926
693
        {
29927
693
            D(fprintf(stderr, "%*c+ _tmp_43[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
29928
693
            _res = _literal;
29929
693
            goto done;
29930
693
        }
29931
31.8k
        p->mark = _mark;
29932
31.8k
        D(fprintf(stderr, "%*c%s _tmp_43[%d-%d]: %s failed!\n", p->level, ' ',
29933
31.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
29934
31.8k
    }
29935
0
    { // '('
29936
31.8k
        if (p->error_indicator) {
29937
29
            p->level--;
29938
29
            return NULL;
29939
29
        }
29940
31.8k
        D(fprintf(stderr, "%*c> _tmp_43[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
29941
31.8k
        Token * _literal;
29942
31.8k
        if (
29943
31.8k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
29944
31.8k
        )
29945
9.50k
        {
29946
9.50k
            D(fprintf(stderr, "%*c+ _tmp_43[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
29947
9.50k
            _res = _literal;
29948
9.50k
            goto done;
29949
9.50k
        }
29950
22.3k
        p->mark = _mark;
29951
22.3k
        D(fprintf(stderr, "%*c%s _tmp_43[%d-%d]: %s failed!\n", p->level, ' ',
29952
22.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
29953
22.3k
    }
29954
0
    { // '='
29955
22.3k
        if (p->error_indicator) {
29956
0
            p->level--;
29957
0
            return NULL;
29958
0
        }
29959
22.3k
        D(fprintf(stderr, "%*c> _tmp_43[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
29960
22.3k
        Token * _literal;
29961
22.3k
        if (
29962
22.3k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
29963
22.3k
        )
29964
3.15k
        {
29965
3.15k
            D(fprintf(stderr, "%*c+ _tmp_43[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
29966
3.15k
            _res = _literal;
29967
3.15k
            goto done;
29968
3.15k
        }
29969
19.2k
        p->mark = _mark;
29970
19.2k
        D(fprintf(stderr, "%*c%s _tmp_43[%d-%d]: %s failed!\n", p->level, ' ',
29971
19.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
29972
19.2k
    }
29973
0
    _res = NULL;
29974
32.5k
  done:
29975
32.5k
    p->level--;
29976
32.5k
    return _res;
29977
19.2k
}
29978
29979
// _loop0_44: ',' maybe_star_pattern
29980
static asdl_seq *
29981
_loop0_44_rule(Parser *p)
29982
3.20k
{
29983
3.20k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29984
0
        _Pypegen_stack_overflow(p);
29985
0
    }
29986
3.20k
    if (p->error_indicator) {
29987
2
        p->level--;
29988
2
        return NULL;
29989
2
    }
29990
3.20k
    void *_res = NULL;
29991
3.20k
    int _mark = p->mark;
29992
3.20k
    void **_children = PyMem_Malloc(sizeof(void *));
29993
3.20k
    if (!_children) {
29994
0
        p->error_indicator = 1;
29995
0
        PyErr_NoMemory();
29996
0
        p->level--;
29997
0
        return NULL;
29998
0
    }
29999
3.20k
    Py_ssize_t _children_capacity = 1;
30000
3.20k
    Py_ssize_t _n = 0;
30001
3.20k
    { // ',' maybe_star_pattern
30002
3.20k
        if (p->error_indicator) {
30003
0
            p->level--;
30004
0
            return NULL;
30005
0
        }
30006
3.20k
        D(fprintf(stderr, "%*c> _loop0_44[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' maybe_star_pattern"));
30007
3.20k
        Token * _literal;
30008
3.20k
        pattern_ty elem;
30009
3.20k
        while (
30010
13.7k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30011
13.7k
            &&
30012
13.7k
            (elem = maybe_star_pattern_rule(p))  // maybe_star_pattern
30013
3.20k
        )
30014
10.5k
        {
30015
10.5k
            _res = elem;
30016
10.5k
            if (_res == NULL && PyErr_Occurred()) {
30017
0
                p->error_indicator = 1;
30018
0
                PyMem_Free(_children);
30019
0
                p->level--;
30020
0
                return NULL;
30021
0
            }
30022
10.5k
            if (_n == _children_capacity) {
30023
2.28k
                _children_capacity *= 2;
30024
2.28k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30025
2.28k
                if (!_new_children) {
30026
0
                    PyMem_Free(_children);
30027
0
                    p->error_indicator = 1;
30028
0
                    PyErr_NoMemory();
30029
0
                    p->level--;
30030
0
                    return NULL;
30031
0
                }
30032
2.28k
                _children = _new_children;
30033
2.28k
            }
30034
10.5k
            _children[_n++] = _res;
30035
10.5k
            _mark = p->mark;
30036
10.5k
        }
30037
3.20k
        p->mark = _mark;
30038
3.20k
        D(fprintf(stderr, "%*c%s _loop0_44[%d-%d]: %s failed!\n", p->level, ' ',
30039
3.20k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' maybe_star_pattern"));
30040
3.20k
    }
30041
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30042
3.20k
    if (!_seq) {
30043
0
        PyMem_Free(_children);
30044
0
        p->error_indicator = 1;
30045
0
        PyErr_NoMemory();
30046
0
        p->level--;
30047
0
        return NULL;
30048
0
    }
30049
13.7k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30050
3.20k
    PyMem_Free(_children);
30051
3.20k
    p->level--;
30052
3.20k
    return _seq;
30053
3.20k
}
30054
30055
// _gather_45: maybe_star_pattern _loop0_44
30056
static asdl_seq *
30057
_gather_45_rule(Parser *p)
30058
6.23k
{
30059
6.23k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30060
0
        _Pypegen_stack_overflow(p);
30061
0
    }
30062
6.23k
    if (p->error_indicator) {
30063
0
        p->level--;
30064
0
        return NULL;
30065
0
    }
30066
6.23k
    asdl_seq * _res = NULL;
30067
6.23k
    int _mark = p->mark;
30068
6.23k
    { // maybe_star_pattern _loop0_44
30069
6.23k
        if (p->error_indicator) {
30070
0
            p->level--;
30071
0
            return NULL;
30072
0
        }
30073
6.23k
        D(fprintf(stderr, "%*c> _gather_45[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern _loop0_44"));
30074
6.23k
        pattern_ty elem;
30075
6.23k
        asdl_seq * seq;
30076
6.23k
        if (
30077
6.23k
            (elem = maybe_star_pattern_rule(p))  // maybe_star_pattern
30078
6.23k
            &&
30079
6.23k
            (seq = _loop0_44_rule(p))  // _loop0_44
30080
6.23k
        )
30081
3.20k
        {
30082
3.20k
            D(fprintf(stderr, "%*c+ _gather_45[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern _loop0_44"));
30083
3.20k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30084
3.20k
            goto done;
30085
3.20k
        }
30086
3.02k
        p->mark = _mark;
30087
3.02k
        D(fprintf(stderr, "%*c%s _gather_45[%d-%d]: %s failed!\n", p->level, ' ',
30088
3.02k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "maybe_star_pattern _loop0_44"));
30089
3.02k
    }
30090
0
    _res = NULL;
30091
6.23k
  done:
30092
6.23k
    p->level--;
30093
6.23k
    return _res;
30094
3.02k
}
30095
30096
// _loop0_46: ',' key_value_pattern
30097
static asdl_seq *
30098
_loop0_46_rule(Parser *p)
30099
2.86k
{
30100
2.86k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30101
0
        _Pypegen_stack_overflow(p);
30102
0
    }
30103
2.86k
    if (p->error_indicator) {
30104
1
        p->level--;
30105
1
        return NULL;
30106
1
    }
30107
2.86k
    void *_res = NULL;
30108
2.86k
    int _mark = p->mark;
30109
2.86k
    void **_children = PyMem_Malloc(sizeof(void *));
30110
2.86k
    if (!_children) {
30111
0
        p->error_indicator = 1;
30112
0
        PyErr_NoMemory();
30113
0
        p->level--;
30114
0
        return NULL;
30115
0
    }
30116
2.86k
    Py_ssize_t _children_capacity = 1;
30117
2.86k
    Py_ssize_t _n = 0;
30118
2.86k
    { // ',' key_value_pattern
30119
2.86k
        if (p->error_indicator) {
30120
0
            p->level--;
30121
0
            return NULL;
30122
0
        }
30123
2.86k
        D(fprintf(stderr, "%*c> _loop0_46[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' key_value_pattern"));
30124
2.86k
        Token * _literal;
30125
2.86k
        KeyPatternPair* elem;
30126
2.86k
        while (
30127
5.43k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30128
5.43k
            &&
30129
5.43k
            (elem = key_value_pattern_rule(p))  // key_value_pattern
30130
2.86k
        )
30131
2.57k
        {
30132
2.57k
            _res = elem;
30133
2.57k
            if (_res == NULL && PyErr_Occurred()) {
30134
0
                p->error_indicator = 1;
30135
0
                PyMem_Free(_children);
30136
0
                p->level--;
30137
0
                return NULL;
30138
0
            }
30139
2.57k
            if (_n == _children_capacity) {
30140
427
                _children_capacity *= 2;
30141
427
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30142
427
                if (!_new_children) {
30143
0
                    PyMem_Free(_children);
30144
0
                    p->error_indicator = 1;
30145
0
                    PyErr_NoMemory();
30146
0
                    p->level--;
30147
0
                    return NULL;
30148
0
                }
30149
427
                _children = _new_children;
30150
427
            }
30151
2.57k
            _children[_n++] = _res;
30152
2.57k
            _mark = p->mark;
30153
2.57k
        }
30154
2.86k
        p->mark = _mark;
30155
2.86k
        D(fprintf(stderr, "%*c%s _loop0_46[%d-%d]: %s failed!\n", p->level, ' ',
30156
2.86k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' key_value_pattern"));
30157
2.86k
    }
30158
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30159
2.86k
    if (!_seq) {
30160
0
        PyMem_Free(_children);
30161
0
        p->error_indicator = 1;
30162
0
        PyErr_NoMemory();
30163
0
        p->level--;
30164
0
        return NULL;
30165
0
    }
30166
5.43k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30167
2.86k
    PyMem_Free(_children);
30168
2.86k
    p->level--;
30169
2.86k
    return _seq;
30170
2.86k
}
30171
30172
// _gather_47: key_value_pattern _loop0_46
30173
static asdl_seq *
30174
_gather_47_rule(Parser *p)
30175
4.35k
{
30176
4.35k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30177
0
        _Pypegen_stack_overflow(p);
30178
0
    }
30179
4.35k
    if (p->error_indicator) {
30180
0
        p->level--;
30181
0
        return NULL;
30182
0
    }
30183
4.35k
    asdl_seq * _res = NULL;
30184
4.35k
    int _mark = p->mark;
30185
4.35k
    { // key_value_pattern _loop0_46
30186
4.35k
        if (p->error_indicator) {
30187
0
            p->level--;
30188
0
            return NULL;
30189
0
        }
30190
4.35k
        D(fprintf(stderr, "%*c> _gather_47[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "key_value_pattern _loop0_46"));
30191
4.35k
        KeyPatternPair* elem;
30192
4.35k
        asdl_seq * seq;
30193
4.35k
        if (
30194
4.35k
            (elem = key_value_pattern_rule(p))  // key_value_pattern
30195
4.35k
            &&
30196
4.35k
            (seq = _loop0_46_rule(p))  // _loop0_46
30197
4.35k
        )
30198
2.86k
        {
30199
2.86k
            D(fprintf(stderr, "%*c+ _gather_47[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "key_value_pattern _loop0_46"));
30200
2.86k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30201
2.86k
            goto done;
30202
2.86k
        }
30203
1.49k
        p->mark = _mark;
30204
1.49k
        D(fprintf(stderr, "%*c%s _gather_47[%d-%d]: %s failed!\n", p->level, ' ',
30205
1.49k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "key_value_pattern _loop0_46"));
30206
1.49k
    }
30207
0
    _res = NULL;
30208
4.35k
  done:
30209
4.35k
    p->level--;
30210
4.35k
    return _res;
30211
1.49k
}
30212
30213
// _tmp_48: literal_expr | attr
30214
static void *
30215
_tmp_48_rule(Parser *p)
30216
8.39k
{
30217
8.39k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30218
0
        _Pypegen_stack_overflow(p);
30219
0
    }
30220
8.39k
    if (p->error_indicator) {
30221
0
        p->level--;
30222
0
        return NULL;
30223
0
    }
30224
8.39k
    void * _res = NULL;
30225
8.39k
    int _mark = p->mark;
30226
8.39k
    { // literal_expr
30227
8.39k
        if (p->error_indicator) {
30228
0
            p->level--;
30229
0
            return NULL;
30230
0
        }
30231
8.39k
        D(fprintf(stderr, "%*c> _tmp_48[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "literal_expr"));
30232
8.39k
        expr_ty literal_expr_var;
30233
8.39k
        if (
30234
8.39k
            (literal_expr_var = literal_expr_rule(p))  // literal_expr
30235
8.39k
        )
30236
7.59k
        {
30237
7.59k
            D(fprintf(stderr, "%*c+ _tmp_48[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "literal_expr"));
30238
7.59k
            _res = literal_expr_var;
30239
7.59k
            goto done;
30240
7.59k
        }
30241
798
        p->mark = _mark;
30242
798
        D(fprintf(stderr, "%*c%s _tmp_48[%d-%d]: %s failed!\n", p->level, ' ',
30243
798
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "literal_expr"));
30244
798
    }
30245
0
    { // attr
30246
798
        if (p->error_indicator) {
30247
16
            p->level--;
30248
16
            return NULL;
30249
16
        }
30250
782
        D(fprintf(stderr, "%*c> _tmp_48[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr"));
30251
782
        expr_ty attr_var;
30252
782
        if (
30253
782
            (attr_var = attr_rule(p))  // attr
30254
782
        )
30255
22
        {
30256
22
            D(fprintf(stderr, "%*c+ _tmp_48[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr"));
30257
22
            _res = attr_var;
30258
22
            goto done;
30259
22
        }
30260
760
        p->mark = _mark;
30261
760
        D(fprintf(stderr, "%*c%s _tmp_48[%d-%d]: %s failed!\n", p->level, ' ',
30262
760
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr"));
30263
760
    }
30264
0
    _res = NULL;
30265
8.37k
  done:
30266
8.37k
    p->level--;
30267
8.37k
    return _res;
30268
760
}
30269
30270
// _loop0_49: ',' pattern
30271
static asdl_seq *
30272
_loop0_49_rule(Parser *p)
30273
11.2k
{
30274
11.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30275
0
        _Pypegen_stack_overflow(p);
30276
0
    }
30277
11.2k
    if (p->error_indicator) {
30278
1
        p->level--;
30279
1
        return NULL;
30280
1
    }
30281
11.1k
    void *_res = NULL;
30282
11.1k
    int _mark = p->mark;
30283
11.1k
    void **_children = PyMem_Malloc(sizeof(void *));
30284
11.1k
    if (!_children) {
30285
0
        p->error_indicator = 1;
30286
0
        PyErr_NoMemory();
30287
0
        p->level--;
30288
0
        return NULL;
30289
0
    }
30290
11.1k
    Py_ssize_t _children_capacity = 1;
30291
11.1k
    Py_ssize_t _n = 0;
30292
11.1k
    { // ',' pattern
30293
11.1k
        if (p->error_indicator) {
30294
0
            p->level--;
30295
0
            return NULL;
30296
0
        }
30297
11.1k
        D(fprintf(stderr, "%*c> _loop0_49[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' pattern"));
30298
11.1k
        Token * _literal;
30299
11.1k
        pattern_ty elem;
30300
11.1k
        while (
30301
15.5k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30302
15.5k
            &&
30303
15.5k
            (elem = pattern_rule(p))  // pattern
30304
11.1k
        )
30305
4.35k
        {
30306
4.35k
            _res = elem;
30307
4.35k
            if (_res == NULL && PyErr_Occurred()) {
30308
0
                p->error_indicator = 1;
30309
0
                PyMem_Free(_children);
30310
0
                p->level--;
30311
0
                return NULL;
30312
0
            }
30313
4.35k
            if (_n == _children_capacity) {
30314
841
                _children_capacity *= 2;
30315
841
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30316
841
                if (!_new_children) {
30317
0
                    PyMem_Free(_children);
30318
0
                    p->error_indicator = 1;
30319
0
                    PyErr_NoMemory();
30320
0
                    p->level--;
30321
0
                    return NULL;
30322
0
                }
30323
841
                _children = _new_children;
30324
841
            }
30325
4.35k
            _children[_n++] = _res;
30326
4.35k
            _mark = p->mark;
30327
4.35k
        }
30328
11.1k
        p->mark = _mark;
30329
11.1k
        D(fprintf(stderr, "%*c%s _loop0_49[%d-%d]: %s failed!\n", p->level, ' ',
30330
11.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' pattern"));
30331
11.1k
    }
30332
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30333
11.1k
    if (!_seq) {
30334
0
        PyMem_Free(_children);
30335
0
        p->error_indicator = 1;
30336
0
        PyErr_NoMemory();
30337
0
        p->level--;
30338
0
        return NULL;
30339
0
    }
30340
15.5k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30341
11.1k
    PyMem_Free(_children);
30342
11.1k
    p->level--;
30343
11.1k
    return _seq;
30344
11.1k
}
30345
30346
// _gather_50: pattern _loop0_49
30347
static asdl_seq *
30348
_gather_50_rule(Parser *p)
30349
19.7k
{
30350
19.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30351
0
        _Pypegen_stack_overflow(p);
30352
0
    }
30353
19.7k
    if (p->error_indicator) {
30354
0
        p->level--;
30355
0
        return NULL;
30356
0
    }
30357
19.7k
    asdl_seq * _res = NULL;
30358
19.7k
    int _mark = p->mark;
30359
19.7k
    { // pattern _loop0_49
30360
19.7k
        if (p->error_indicator) {
30361
0
            p->level--;
30362
0
            return NULL;
30363
0
        }
30364
19.7k
        D(fprintf(stderr, "%*c> _gather_50[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern _loop0_49"));
30365
19.7k
        pattern_ty elem;
30366
19.7k
        asdl_seq * seq;
30367
19.7k
        if (
30368
19.7k
            (elem = pattern_rule(p))  // pattern
30369
19.7k
            &&
30370
19.7k
            (seq = _loop0_49_rule(p))  // _loop0_49
30371
19.7k
        )
30372
11.1k
        {
30373
11.1k
            D(fprintf(stderr, "%*c+ _gather_50[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern _loop0_49"));
30374
11.1k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30375
11.1k
            goto done;
30376
11.1k
        }
30377
8.55k
        p->mark = _mark;
30378
8.55k
        D(fprintf(stderr, "%*c%s _gather_50[%d-%d]: %s failed!\n", p->level, ' ',
30379
8.55k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern _loop0_49"));
30380
8.55k
    }
30381
0
    _res = NULL;
30382
19.7k
  done:
30383
19.7k
    p->level--;
30384
19.7k
    return _res;
30385
8.55k
}
30386
30387
// _loop0_51: ',' keyword_pattern
30388
static asdl_seq *
30389
_loop0_51_rule(Parser *p)
30390
4.46k
{
30391
4.46k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30392
0
        _Pypegen_stack_overflow(p);
30393
0
    }
30394
4.46k
    if (p->error_indicator) {
30395
1
        p->level--;
30396
1
        return NULL;
30397
1
    }
30398
4.45k
    void *_res = NULL;
30399
4.45k
    int _mark = p->mark;
30400
4.45k
    void **_children = PyMem_Malloc(sizeof(void *));
30401
4.45k
    if (!_children) {
30402
0
        p->error_indicator = 1;
30403
0
        PyErr_NoMemory();
30404
0
        p->level--;
30405
0
        return NULL;
30406
0
    }
30407
4.45k
    Py_ssize_t _children_capacity = 1;
30408
4.45k
    Py_ssize_t _n = 0;
30409
4.45k
    { // ',' keyword_pattern
30410
4.45k
        if (p->error_indicator) {
30411
0
            p->level--;
30412
0
            return NULL;
30413
0
        }
30414
4.45k
        D(fprintf(stderr, "%*c> _loop0_51[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' keyword_pattern"));
30415
4.45k
        Token * _literal;
30416
4.45k
        KeyPatternPair* elem;
30417
4.45k
        while (
30418
6.15k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30419
6.15k
            &&
30420
6.15k
            (elem = keyword_pattern_rule(p))  // keyword_pattern
30421
4.45k
        )
30422
1.69k
        {
30423
1.69k
            _res = elem;
30424
1.69k
            if (_res == NULL && PyErr_Occurred()) {
30425
0
                p->error_indicator = 1;
30426
0
                PyMem_Free(_children);
30427
0
                p->level--;
30428
0
                return NULL;
30429
0
            }
30430
1.69k
            if (_n == _children_capacity) {
30431
677
                _children_capacity *= 2;
30432
677
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30433
677
                if (!_new_children) {
30434
0
                    PyMem_Free(_children);
30435
0
                    p->error_indicator = 1;
30436
0
                    PyErr_NoMemory();
30437
0
                    p->level--;
30438
0
                    return NULL;
30439
0
                }
30440
677
                _children = _new_children;
30441
677
            }
30442
1.69k
            _children[_n++] = _res;
30443
1.69k
            _mark = p->mark;
30444
1.69k
        }
30445
4.45k
        p->mark = _mark;
30446
4.45k
        D(fprintf(stderr, "%*c%s _loop0_51[%d-%d]: %s failed!\n", p->level, ' ',
30447
4.45k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' keyword_pattern"));
30448
4.45k
    }
30449
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30450
4.45k
    if (!_seq) {
30451
0
        PyMem_Free(_children);
30452
0
        p->error_indicator = 1;
30453
0
        PyErr_NoMemory();
30454
0
        p->level--;
30455
0
        return NULL;
30456
0
    }
30457
6.15k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30458
4.45k
    PyMem_Free(_children);
30459
4.45k
    p->level--;
30460
4.45k
    return _seq;
30461
4.45k
}
30462
30463
// _gather_52: keyword_pattern _loop0_51
30464
static asdl_seq *
30465
_gather_52_rule(Parser *p)
30466
12.8k
{
30467
12.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30468
0
        _Pypegen_stack_overflow(p);
30469
0
    }
30470
12.8k
    if (p->error_indicator) {
30471
0
        p->level--;
30472
0
        return NULL;
30473
0
    }
30474
12.8k
    asdl_seq * _res = NULL;
30475
12.8k
    int _mark = p->mark;
30476
12.8k
    { // keyword_pattern _loop0_51
30477
12.8k
        if (p->error_indicator) {
30478
0
            p->level--;
30479
0
            return NULL;
30480
0
        }
30481
12.8k
        D(fprintf(stderr, "%*c> _gather_52[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "keyword_pattern _loop0_51"));
30482
12.8k
        KeyPatternPair* elem;
30483
12.8k
        asdl_seq * seq;
30484
12.8k
        if (
30485
12.8k
            (elem = keyword_pattern_rule(p))  // keyword_pattern
30486
12.8k
            &&
30487
12.8k
            (seq = _loop0_51_rule(p))  // _loop0_51
30488
12.8k
        )
30489
4.45k
        {
30490
4.45k
            D(fprintf(stderr, "%*c+ _gather_52[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "keyword_pattern _loop0_51"));
30491
4.45k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30492
4.45k
            goto done;
30493
4.45k
        }
30494
8.43k
        p->mark = _mark;
30495
8.43k
        D(fprintf(stderr, "%*c%s _gather_52[%d-%d]: %s failed!\n", p->level, ' ',
30496
8.43k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "keyword_pattern _loop0_51"));
30497
8.43k
    }
30498
0
    _res = NULL;
30499
12.8k
  done:
30500
12.8k
    p->level--;
30501
12.8k
    return _res;
30502
8.43k
}
30503
30504
// _loop0_53: ',' type_param
30505
static asdl_seq *
30506
_loop0_53_rule(Parser *p)
30507
1.76k
{
30508
1.76k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30509
0
        _Pypegen_stack_overflow(p);
30510
0
    }
30511
1.76k
    if (p->error_indicator) {
30512
0
        p->level--;
30513
0
        return NULL;
30514
0
    }
30515
1.76k
    void *_res = NULL;
30516
1.76k
    int _mark = p->mark;
30517
1.76k
    void **_children = PyMem_Malloc(sizeof(void *));
30518
1.76k
    if (!_children) {
30519
0
        p->error_indicator = 1;
30520
0
        PyErr_NoMemory();
30521
0
        p->level--;
30522
0
        return NULL;
30523
0
    }
30524
1.76k
    Py_ssize_t _children_capacity = 1;
30525
1.76k
    Py_ssize_t _n = 0;
30526
1.76k
    { // ',' type_param
30527
1.76k
        if (p->error_indicator) {
30528
0
            p->level--;
30529
0
            return NULL;
30530
0
        }
30531
1.76k
        D(fprintf(stderr, "%*c> _loop0_53[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' type_param"));
30532
1.76k
        Token * _literal;
30533
1.76k
        type_param_ty elem;
30534
1.76k
        while (
30535
10.8k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30536
10.8k
            &&
30537
10.8k
            (elem = type_param_rule(p))  // type_param
30538
1.76k
        )
30539
9.08k
        {
30540
9.08k
            _res = elem;
30541
9.08k
            if (_res == NULL && PyErr_Occurred()) {
30542
0
                p->error_indicator = 1;
30543
0
                PyMem_Free(_children);
30544
0
                p->level--;
30545
0
                return NULL;
30546
0
            }
30547
9.08k
            if (_n == _children_capacity) {
30548
938
                _children_capacity *= 2;
30549
938
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30550
938
                if (!_new_children) {
30551
0
                    PyMem_Free(_children);
30552
0
                    p->error_indicator = 1;
30553
0
                    PyErr_NoMemory();
30554
0
                    p->level--;
30555
0
                    return NULL;
30556
0
                }
30557
938
                _children = _new_children;
30558
938
            }
30559
9.08k
            _children[_n++] = _res;
30560
9.08k
            _mark = p->mark;
30561
9.08k
        }
30562
1.76k
        p->mark = _mark;
30563
1.76k
        D(fprintf(stderr, "%*c%s _loop0_53[%d-%d]: %s failed!\n", p->level, ' ',
30564
1.76k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' type_param"));
30565
1.76k
    }
30566
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30567
1.76k
    if (!_seq) {
30568
0
        PyMem_Free(_children);
30569
0
        p->error_indicator = 1;
30570
0
        PyErr_NoMemory();
30571
0
        p->level--;
30572
0
        return NULL;
30573
0
    }
30574
10.8k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30575
1.76k
    PyMem_Free(_children);
30576
1.76k
    p->level--;
30577
1.76k
    return _seq;
30578
1.76k
}
30579
30580
// _gather_54: type_param _loop0_53
30581
static asdl_seq *
30582
_gather_54_rule(Parser *p)
30583
1.81k
{
30584
1.81k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30585
0
        _Pypegen_stack_overflow(p);
30586
0
    }
30587
1.81k
    if (p->error_indicator) {
30588
0
        p->level--;
30589
0
        return NULL;
30590
0
    }
30591
1.81k
    asdl_seq * _res = NULL;
30592
1.81k
    int _mark = p->mark;
30593
1.81k
    { // type_param _loop0_53
30594
1.81k
        if (p->error_indicator) {
30595
0
            p->level--;
30596
0
            return NULL;
30597
0
        }
30598
1.81k
        D(fprintf(stderr, "%*c> _gather_54[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "type_param _loop0_53"));
30599
1.81k
        type_param_ty elem;
30600
1.81k
        asdl_seq * seq;
30601
1.81k
        if (
30602
1.81k
            (elem = type_param_rule(p))  // type_param
30603
1.81k
            &&
30604
1.81k
            (seq = _loop0_53_rule(p))  // _loop0_53
30605
1.81k
        )
30606
1.76k
        {
30607
1.76k
            D(fprintf(stderr, "%*c+ _gather_54[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "type_param _loop0_53"));
30608
1.76k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30609
1.76k
            goto done;
30610
1.76k
        }
30611
41
        p->mark = _mark;
30612
41
        D(fprintf(stderr, "%*c%s _gather_54[%d-%d]: %s failed!\n", p->level, ' ',
30613
41
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "type_param _loop0_53"));
30614
41
    }
30615
0
    _res = NULL;
30616
1.81k
  done:
30617
1.81k
    p->level--;
30618
1.81k
    return _res;
30619
41
}
30620
30621
// _loop1_55: (',' expression)
30622
static asdl_seq *
30623
_loop1_55_rule(Parser *p)
30624
3.90k
{
30625
3.90k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30626
0
        _Pypegen_stack_overflow(p);
30627
0
    }
30628
3.90k
    if (p->error_indicator) {
30629
0
        p->level--;
30630
0
        return NULL;
30631
0
    }
30632
3.90k
    void *_res = NULL;
30633
3.90k
    int _mark = p->mark;
30634
3.90k
    void **_children = PyMem_Malloc(sizeof(void *));
30635
3.90k
    if (!_children) {
30636
0
        p->error_indicator = 1;
30637
0
        PyErr_NoMemory();
30638
0
        p->level--;
30639
0
        return NULL;
30640
0
    }
30641
3.90k
    Py_ssize_t _children_capacity = 1;
30642
3.90k
    Py_ssize_t _n = 0;
30643
3.90k
    { // (',' expression)
30644
3.90k
        if (p->error_indicator) {
30645
0
            p->level--;
30646
0
            return NULL;
30647
0
        }
30648
3.90k
        D(fprintf(stderr, "%*c> _loop1_55[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' expression)"));
30649
3.90k
        void *_tmp_16_var;
30650
3.90k
        while (
30651
6.60k
            (_tmp_16_var = _tmp_16_rule(p))  // ',' expression
30652
3.90k
        )
30653
2.69k
        {
30654
2.69k
            _res = _tmp_16_var;
30655
2.69k
            if (_n == _children_capacity) {
30656
803
                _children_capacity *= 2;
30657
803
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30658
803
                if (!_new_children) {
30659
0
                    PyMem_Free(_children);
30660
0
                    p->error_indicator = 1;
30661
0
                    PyErr_NoMemory();
30662
0
                    p->level--;
30663
0
                    return NULL;
30664
0
                }
30665
803
                _children = _new_children;
30666
803
            }
30667
2.69k
            _children[_n++] = _res;
30668
2.69k
            _mark = p->mark;
30669
2.69k
        }
30670
3.90k
        p->mark = _mark;
30671
3.90k
        D(fprintf(stderr, "%*c%s _loop1_55[%d-%d]: %s failed!\n", p->level, ' ',
30672
3.90k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' expression)"));
30673
3.90k
    }
30674
3.90k
    if (_n == 0 || p->error_indicator) {
30675
2.60k
        PyMem_Free(_children);
30676
2.60k
        p->level--;
30677
2.60k
        return NULL;
30678
2.60k
    }
30679
1.30k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30680
1.30k
    if (!_seq) {
30681
0
        PyMem_Free(_children);
30682
0
        p->error_indicator = 1;
30683
0
        PyErr_NoMemory();
30684
0
        p->level--;
30685
0
        return NULL;
30686
0
    }
30687
3.99k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30688
1.30k
    PyMem_Free(_children);
30689
1.30k
    p->level--;
30690
1.30k
    return _seq;
30691
1.30k
}
30692
30693
// _loop1_56: (',' star_expression)
30694
static asdl_seq *
30695
_loop1_56_rule(Parser *p)
30696
219k
{
30697
219k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30698
0
        _Pypegen_stack_overflow(p);
30699
0
    }
30700
219k
    if (p->error_indicator) {
30701
0
        p->level--;
30702
0
        return NULL;
30703
0
    }
30704
219k
    void *_res = NULL;
30705
219k
    int _mark = p->mark;
30706
219k
    void **_children = PyMem_Malloc(sizeof(void *));
30707
219k
    if (!_children) {
30708
0
        p->error_indicator = 1;
30709
0
        PyErr_NoMemory();
30710
0
        p->level--;
30711
0
        return NULL;
30712
0
    }
30713
219k
    Py_ssize_t _children_capacity = 1;
30714
219k
    Py_ssize_t _n = 0;
30715
219k
    { // (',' star_expression)
30716
219k
        if (p->error_indicator) {
30717
0
            p->level--;
30718
0
            return NULL;
30719
0
        }
30720
219k
        D(fprintf(stderr, "%*c> _loop1_56[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_expression)"));
30721
219k
        void *_tmp_157_var;
30722
219k
        while (
30723
237k
            (_tmp_157_var = _tmp_157_rule(p))  // ',' star_expression
30724
219k
        )
30725
18.1k
        {
30726
18.1k
            _res = _tmp_157_var;
30727
18.1k
            if (_n == _children_capacity) {
30728
3.47k
                _children_capacity *= 2;
30729
3.47k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30730
3.47k
                if (!_new_children) {
30731
0
                    PyMem_Free(_children);
30732
0
                    p->error_indicator = 1;
30733
0
                    PyErr_NoMemory();
30734
0
                    p->level--;
30735
0
                    return NULL;
30736
0
                }
30737
3.47k
                _children = _new_children;
30738
3.47k
            }
30739
18.1k
            _children[_n++] = _res;
30740
18.1k
            _mark = p->mark;
30741
18.1k
        }
30742
219k
        p->mark = _mark;
30743
219k
        D(fprintf(stderr, "%*c%s _loop1_56[%d-%d]: %s failed!\n", p->level, ' ',
30744
219k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_expression)"));
30745
219k
    }
30746
219k
    if (_n == 0 || p->error_indicator) {
30747
213k
        PyMem_Free(_children);
30748
213k
        p->level--;
30749
213k
        return NULL;
30750
213k
    }
30751
6.06k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30752
6.06k
    if (!_seq) {
30753
0
        PyMem_Free(_children);
30754
0
        p->error_indicator = 1;
30755
0
        PyErr_NoMemory();
30756
0
        p->level--;
30757
0
        return NULL;
30758
0
    }
30759
23.8k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30760
6.06k
    PyMem_Free(_children);
30761
6.06k
    p->level--;
30762
6.06k
    return _seq;
30763
6.06k
}
30764
30765
// _loop0_57: ',' star_named_expression
30766
static asdl_seq *
30767
_loop0_57_rule(Parser *p)
30768
44.2k
{
30769
44.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30770
0
        _Pypegen_stack_overflow(p);
30771
0
    }
30772
44.2k
    if (p->error_indicator) {
30773
0
        p->level--;
30774
0
        return NULL;
30775
0
    }
30776
44.2k
    void *_res = NULL;
30777
44.2k
    int _mark = p->mark;
30778
44.2k
    void **_children = PyMem_Malloc(sizeof(void *));
30779
44.2k
    if (!_children) {
30780
0
        p->error_indicator = 1;
30781
0
        PyErr_NoMemory();
30782
0
        p->level--;
30783
0
        return NULL;
30784
0
    }
30785
44.2k
    Py_ssize_t _children_capacity = 1;
30786
44.2k
    Py_ssize_t _n = 0;
30787
44.2k
    { // ',' star_named_expression
30788
44.2k
        if (p->error_indicator) {
30789
0
            p->level--;
30790
0
            return NULL;
30791
0
        }
30792
44.2k
        D(fprintf(stderr, "%*c> _loop0_57[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_named_expression"));
30793
44.2k
        Token * _literal;
30794
44.2k
        expr_ty elem;
30795
44.2k
        while (
30796
108k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30797
108k
            &&
30798
108k
            (elem = star_named_expression_rule(p))  // star_named_expression
30799
44.2k
        )
30800
64.6k
        {
30801
64.6k
            _res = elem;
30802
64.6k
            if (_res == NULL && PyErr_Occurred()) {
30803
0
                p->error_indicator = 1;
30804
0
                PyMem_Free(_children);
30805
0
                p->level--;
30806
0
                return NULL;
30807
0
            }
30808
64.6k
            if (_n == _children_capacity) {
30809
12.1k
                _children_capacity *= 2;
30810
12.1k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30811
12.1k
                if (!_new_children) {
30812
0
                    PyMem_Free(_children);
30813
0
                    p->error_indicator = 1;
30814
0
                    PyErr_NoMemory();
30815
0
                    p->level--;
30816
0
                    return NULL;
30817
0
                }
30818
12.1k
                _children = _new_children;
30819
12.1k
            }
30820
64.6k
            _children[_n++] = _res;
30821
64.6k
            _mark = p->mark;
30822
64.6k
        }
30823
44.2k
        p->mark = _mark;
30824
44.2k
        D(fprintf(stderr, "%*c%s _loop0_57[%d-%d]: %s failed!\n", p->level, ' ',
30825
44.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_named_expression"));
30826
44.2k
    }
30827
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30828
44.2k
    if (!_seq) {
30829
0
        PyMem_Free(_children);
30830
0
        p->error_indicator = 1;
30831
0
        PyErr_NoMemory();
30832
0
        p->level--;
30833
0
        return NULL;
30834
0
    }
30835
108k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30836
44.2k
    PyMem_Free(_children);
30837
44.2k
    p->level--;
30838
44.2k
    return _seq;
30839
44.2k
}
30840
30841
// _gather_58: star_named_expression _loop0_57
30842
static asdl_seq *
30843
_gather_58_rule(Parser *p)
30844
107k
{
30845
107k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30846
1
        _Pypegen_stack_overflow(p);
30847
1
    }
30848
107k
    if (p->error_indicator) {
30849
1
        p->level--;
30850
1
        return NULL;
30851
1
    }
30852
107k
    asdl_seq * _res = NULL;
30853
107k
    int _mark = p->mark;
30854
107k
    { // star_named_expression _loop0_57
30855
107k
        if (p->error_indicator) {
30856
0
            p->level--;
30857
0
            return NULL;
30858
0
        }
30859
107k
        D(fprintf(stderr, "%*c> _gather_58[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_57"));
30860
107k
        expr_ty elem;
30861
107k
        asdl_seq * seq;
30862
107k
        if (
30863
107k
            (elem = star_named_expression_rule(p))  // star_named_expression
30864
107k
            &&
30865
107k
            (seq = _loop0_57_rule(p))  // _loop0_57
30866
107k
        )
30867
44.2k
        {
30868
44.2k
            D(fprintf(stderr, "%*c+ _gather_58[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_57"));
30869
44.2k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30870
44.2k
            goto done;
30871
44.2k
        }
30872
62.9k
        p->mark = _mark;
30873
62.9k
        D(fprintf(stderr, "%*c%s _gather_58[%d-%d]: %s failed!\n", p->level, ' ',
30874
62.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression _loop0_57"));
30875
62.9k
    }
30876
0
    _res = NULL;
30877
107k
  done:
30878
107k
    p->level--;
30879
107k
    return _res;
30880
62.9k
}
30881
30882
// _loop1_59: ('or' conjunction)
30883
static asdl_seq *
30884
_loop1_59_rule(Parser *p)
30885
391k
{
30886
391k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30887
0
        _Pypegen_stack_overflow(p);
30888
0
    }
30889
391k
    if (p->error_indicator) {
30890
0
        p->level--;
30891
0
        return NULL;
30892
0
    }
30893
391k
    void *_res = NULL;
30894
391k
    int _mark = p->mark;
30895
391k
    void **_children = PyMem_Malloc(sizeof(void *));
30896
391k
    if (!_children) {
30897
0
        p->error_indicator = 1;
30898
0
        PyErr_NoMemory();
30899
0
        p->level--;
30900
0
        return NULL;
30901
0
    }
30902
391k
    Py_ssize_t _children_capacity = 1;
30903
391k
    Py_ssize_t _n = 0;
30904
391k
    { // ('or' conjunction)
30905
391k
        if (p->error_indicator) {
30906
0
            p->level--;
30907
0
            return NULL;
30908
0
        }
30909
391k
        D(fprintf(stderr, "%*c> _loop1_59[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('or' conjunction)"));
30910
391k
        void *_tmp_158_var;
30911
391k
        while (
30912
395k
            (_tmp_158_var = _tmp_158_rule(p))  // 'or' conjunction
30913
391k
        )
30914
4.65k
        {
30915
4.65k
            _res = _tmp_158_var;
30916
4.65k
            if (_n == _children_capacity) {
30917
839
                _children_capacity *= 2;
30918
839
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30919
839
                if (!_new_children) {
30920
0
                    PyMem_Free(_children);
30921
0
                    p->error_indicator = 1;
30922
0
                    PyErr_NoMemory();
30923
0
                    p->level--;
30924
0
                    return NULL;
30925
0
                }
30926
839
                _children = _new_children;
30927
839
            }
30928
4.65k
            _children[_n++] = _res;
30929
4.65k
            _mark = p->mark;
30930
4.65k
        }
30931
391k
        p->mark = _mark;
30932
391k
        D(fprintf(stderr, "%*c%s _loop1_59[%d-%d]: %s failed!\n", p->level, ' ',
30933
391k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('or' conjunction)"));
30934
391k
    }
30935
391k
    if (_n == 0 || p->error_indicator) {
30936
389k
        PyMem_Free(_children);
30937
389k
        p->level--;
30938
389k
        return NULL;
30939
389k
    }
30940
1.42k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30941
1.42k
    if (!_seq) {
30942
0
        PyMem_Free(_children);
30943
0
        p->error_indicator = 1;
30944
0
        PyErr_NoMemory();
30945
0
        p->level--;
30946
0
        return NULL;
30947
0
    }
30948
5.94k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30949
1.42k
    PyMem_Free(_children);
30950
1.42k
    p->level--;
30951
1.42k
    return _seq;
30952
1.42k
}
30953
30954
// _loop1_60: ('and' inversion)
30955
static asdl_seq *
30956
_loop1_60_rule(Parser *p)
30957
395k
{
30958
395k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30959
0
        _Pypegen_stack_overflow(p);
30960
0
    }
30961
395k
    if (p->error_indicator) {
30962
0
        p->level--;
30963
0
        return NULL;
30964
0
    }
30965
395k
    void *_res = NULL;
30966
395k
    int _mark = p->mark;
30967
395k
    void **_children = PyMem_Malloc(sizeof(void *));
30968
395k
    if (!_children) {
30969
0
        p->error_indicator = 1;
30970
0
        PyErr_NoMemory();
30971
0
        p->level--;
30972
0
        return NULL;
30973
0
    }
30974
395k
    Py_ssize_t _children_capacity = 1;
30975
395k
    Py_ssize_t _n = 0;
30976
395k
    { // ('and' inversion)
30977
395k
        if (p->error_indicator) {
30978
0
            p->level--;
30979
0
            return NULL;
30980
0
        }
30981
395k
        D(fprintf(stderr, "%*c> _loop1_60[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('and' inversion)"));
30982
395k
        void *_tmp_159_var;
30983
395k
        while (
30984
398k
            (_tmp_159_var = _tmp_159_rule(p))  // 'and' inversion
30985
395k
        )
30986
2.81k
        {
30987
2.81k
            _res = _tmp_159_var;
30988
2.81k
            if (_n == _children_capacity) {
30989
856
                _children_capacity *= 2;
30990
856
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30991
856
                if (!_new_children) {
30992
0
                    PyMem_Free(_children);
30993
0
                    p->error_indicator = 1;
30994
0
                    PyErr_NoMemory();
30995
0
                    p->level--;
30996
0
                    return NULL;
30997
0
                }
30998
856
                _children = _new_children;
30999
856
            }
31000
2.81k
            _children[_n++] = _res;
31001
2.81k
            _mark = p->mark;
31002
2.81k
        }
31003
395k
        p->mark = _mark;
31004
395k
        D(fprintf(stderr, "%*c%s _loop1_60[%d-%d]: %s failed!\n", p->level, ' ',
31005
395k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('and' inversion)"));
31006
395k
    }
31007
395k
    if (_n == 0 || p->error_indicator) {
31008
394k
        PyMem_Free(_children);
31009
394k
        p->level--;
31010
394k
        return NULL;
31011
394k
    }
31012
1.52k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31013
1.52k
    if (!_seq) {
31014
0
        PyMem_Free(_children);
31015
0
        p->error_indicator = 1;
31016
0
        PyErr_NoMemory();
31017
0
        p->level--;
31018
0
        return NULL;
31019
0
    }
31020
4.14k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31021
1.52k
    PyMem_Free(_children);
31022
1.52k
    p->level--;
31023
1.52k
    return _seq;
31024
1.52k
}
31025
31026
// _loop1_61: compare_op_bitwise_or_pair
31027
static asdl_seq *
31028
_loop1_61_rule(Parser *p)
31029
400k
{
31030
400k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31031
0
        _Pypegen_stack_overflow(p);
31032
0
    }
31033
400k
    if (p->error_indicator) {
31034
0
        p->level--;
31035
0
        return NULL;
31036
0
    }
31037
400k
    void *_res = NULL;
31038
400k
    int _mark = p->mark;
31039
400k
    void **_children = PyMem_Malloc(sizeof(void *));
31040
400k
    if (!_children) {
31041
0
        p->error_indicator = 1;
31042
0
        PyErr_NoMemory();
31043
0
        p->level--;
31044
0
        return NULL;
31045
0
    }
31046
400k
    Py_ssize_t _children_capacity = 1;
31047
400k
    Py_ssize_t _n = 0;
31048
400k
    { // compare_op_bitwise_or_pair
31049
400k
        if (p->error_indicator) {
31050
0
            p->level--;
31051
0
            return NULL;
31052
0
        }
31053
400k
        D(fprintf(stderr, "%*c> _loop1_61[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compare_op_bitwise_or_pair"));
31054
400k
        CmpopExprPair* compare_op_bitwise_or_pair_var;
31055
400k
        while (
31056
424k
            (compare_op_bitwise_or_pair_var = compare_op_bitwise_or_pair_rule(p))  // compare_op_bitwise_or_pair
31057
400k
        )
31058
23.5k
        {
31059
23.5k
            _res = compare_op_bitwise_or_pair_var;
31060
23.5k
            if (_n == _children_capacity) {
31061
5.00k
                _children_capacity *= 2;
31062
5.00k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31063
5.00k
                if (!_new_children) {
31064
0
                    PyMem_Free(_children);
31065
0
                    p->error_indicator = 1;
31066
0
                    PyErr_NoMemory();
31067
0
                    p->level--;
31068
0
                    return NULL;
31069
0
                }
31070
5.00k
                _children = _new_children;
31071
5.00k
            }
31072
23.5k
            _children[_n++] = _res;
31073
23.5k
            _mark = p->mark;
31074
23.5k
        }
31075
400k
        p->mark = _mark;
31076
400k
        D(fprintf(stderr, "%*c%s _loop1_61[%d-%d]: %s failed!\n", p->level, ' ',
31077
400k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compare_op_bitwise_or_pair"));
31078
400k
    }
31079
400k
    if (_n == 0 || p->error_indicator) {
31080
391k
        PyMem_Free(_children);
31081
391k
        p->level--;
31082
391k
        return NULL;
31083
391k
    }
31084
9.67k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31085
9.67k
    if (!_seq) {
31086
0
        PyMem_Free(_children);
31087
0
        p->error_indicator = 1;
31088
0
        PyErr_NoMemory();
31089
0
        p->level--;
31090
0
        return NULL;
31091
0
    }
31092
32.5k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31093
9.67k
    PyMem_Free(_children);
31094
9.67k
    p->level--;
31095
9.67k
    return _seq;
31096
9.67k
}
31097
31098
// _tmp_62: '!='
31099
static void *
31100
_tmp_62_rule(Parser *p)
31101
422k
{
31102
422k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31103
0
        _Pypegen_stack_overflow(p);
31104
0
    }
31105
422k
    if (p->error_indicator) {
31106
0
        p->level--;
31107
0
        return NULL;
31108
0
    }
31109
422k
    void * _res = NULL;
31110
422k
    int _mark = p->mark;
31111
422k
    { // '!='
31112
422k
        if (p->error_indicator) {
31113
0
            p->level--;
31114
0
            return NULL;
31115
0
        }
31116
422k
        D(fprintf(stderr, "%*c> _tmp_62[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!='"));
31117
422k
        Token * tok;
31118
422k
        if (
31119
422k
            (tok = _PyPegen_expect_token(p, 28))  // token='!='
31120
422k
        )
31121
1.39k
        {
31122
1.39k
            D(fprintf(stderr, "%*c+ _tmp_62[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!='"));
31123
1.39k
            _res = _PyPegen_check_barry_as_flufl ( p , tok ) ? NULL : tok;
31124
1.39k
            if (_res == NULL && PyErr_Occurred()) {
31125
1
                p->error_indicator = 1;
31126
1
                p->level--;
31127
1
                return NULL;
31128
1
            }
31129
1.39k
            goto done;
31130
1.39k
        }
31131
421k
        p->mark = _mark;
31132
421k
        D(fprintf(stderr, "%*c%s _tmp_62[%d-%d]: %s failed!\n", p->level, ' ',
31133
421k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!='"));
31134
421k
    }
31135
0
    _res = NULL;
31136
422k
  done:
31137
422k
    p->level--;
31138
422k
    return _res;
31139
421k
}
31140
31141
// _loop0_63: ',' (slice | starred_expression)
31142
static asdl_seq *
31143
_loop0_63_rule(Parser *p)
31144
3.30k
{
31145
3.30k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31146
0
        _Pypegen_stack_overflow(p);
31147
0
    }
31148
3.30k
    if (p->error_indicator) {
31149
0
        p->level--;
31150
0
        return NULL;
31151
0
    }
31152
3.30k
    void *_res = NULL;
31153
3.30k
    int _mark = p->mark;
31154
3.30k
    void **_children = PyMem_Malloc(sizeof(void *));
31155
3.30k
    if (!_children) {
31156
0
        p->error_indicator = 1;
31157
0
        PyErr_NoMemory();
31158
0
        p->level--;
31159
0
        return NULL;
31160
0
    }
31161
3.30k
    Py_ssize_t _children_capacity = 1;
31162
3.30k
    Py_ssize_t _n = 0;
31163
3.30k
    { // ',' (slice | starred_expression)
31164
3.30k
        if (p->error_indicator) {
31165
0
            p->level--;
31166
0
            return NULL;
31167
0
        }
31168
3.30k
        D(fprintf(stderr, "%*c> _loop0_63[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (slice | starred_expression)"));
31169
3.30k
        Token * _literal;
31170
3.30k
        void *elem;
31171
3.30k
        while (
31172
26.5k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
31173
26.5k
            &&
31174
26.5k
            (elem = _tmp_160_rule(p))  // slice | starred_expression
31175
3.30k
        )
31176
23.2k
        {
31177
23.2k
            _res = elem;
31178
23.2k
            if (_res == NULL && PyErr_Occurred()) {
31179
0
                p->error_indicator = 1;
31180
0
                PyMem_Free(_children);
31181
0
                p->level--;
31182
0
                return NULL;
31183
0
            }
31184
23.2k
            if (_n == _children_capacity) {
31185
2.66k
                _children_capacity *= 2;
31186
2.66k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31187
2.66k
                if (!_new_children) {
31188
0
                    PyMem_Free(_children);
31189
0
                    p->error_indicator = 1;
31190
0
                    PyErr_NoMemory();
31191
0
                    p->level--;
31192
0
                    return NULL;
31193
0
                }
31194
2.66k
                _children = _new_children;
31195
2.66k
            }
31196
23.2k
            _children[_n++] = _res;
31197
23.2k
            _mark = p->mark;
31198
23.2k
        }
31199
3.30k
        p->mark = _mark;
31200
3.30k
        D(fprintf(stderr, "%*c%s _loop0_63[%d-%d]: %s failed!\n", p->level, ' ',
31201
3.30k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (slice | starred_expression)"));
31202
3.30k
    }
31203
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31204
3.30k
    if (!_seq) {
31205
0
        PyMem_Free(_children);
31206
0
        p->error_indicator = 1;
31207
0
        PyErr_NoMemory();
31208
0
        p->level--;
31209
0
        return NULL;
31210
0
    }
31211
26.5k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31212
3.30k
    PyMem_Free(_children);
31213
3.30k
    p->level--;
31214
3.30k
    return _seq;
31215
3.30k
}
31216
31217
// _gather_64: (slice | starred_expression) _loop0_63
31218
static asdl_seq *
31219
_gather_64_rule(Parser *p)
31220
5.56k
{
31221
5.56k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31222
0
        _Pypegen_stack_overflow(p);
31223
0
    }
31224
5.56k
    if (p->error_indicator) {
31225
0
        p->level--;
31226
0
        return NULL;
31227
0
    }
31228
5.56k
    asdl_seq * _res = NULL;
31229
5.56k
    int _mark = p->mark;
31230
5.56k
    { // (slice | starred_expression) _loop0_63
31231
5.56k
        if (p->error_indicator) {
31232
0
            p->level--;
31233
0
            return NULL;
31234
0
        }
31235
5.56k
        D(fprintf(stderr, "%*c> _gather_64[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(slice | starred_expression) _loop0_63"));
31236
5.56k
        void *elem;
31237
5.56k
        asdl_seq * seq;
31238
5.56k
        if (
31239
5.56k
            (elem = _tmp_160_rule(p))  // slice | starred_expression
31240
5.56k
            &&
31241
5.56k
            (seq = _loop0_63_rule(p))  // _loop0_63
31242
5.56k
        )
31243
3.30k
        {
31244
3.30k
            D(fprintf(stderr, "%*c+ _gather_64[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(slice | starred_expression) _loop0_63"));
31245
3.30k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
31246
3.30k
            goto done;
31247
3.30k
        }
31248
2.26k
        p->mark = _mark;
31249
2.26k
        D(fprintf(stderr, "%*c%s _gather_64[%d-%d]: %s failed!\n", p->level, ' ',
31250
2.26k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(slice | starred_expression) _loop0_63"));
31251
2.26k
    }
31252
0
    _res = NULL;
31253
5.56k
  done:
31254
5.56k
    p->level--;
31255
5.56k
    return _res;
31256
2.26k
}
31257
31258
// _tmp_65: ':' expression?
31259
static void *
31260
_tmp_65_rule(Parser *p)
31261
19.7k
{
31262
19.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31263
0
        _Pypegen_stack_overflow(p);
31264
0
    }
31265
19.7k
    if (p->error_indicator) {
31266
0
        p->level--;
31267
0
        return NULL;
31268
0
    }
31269
19.7k
    void * _res = NULL;
31270
19.7k
    int _mark = p->mark;
31271
19.7k
    { // ':' expression?
31272
19.7k
        if (p->error_indicator) {
31273
0
            p->level--;
31274
0
            return NULL;
31275
0
        }
31276
19.7k
        D(fprintf(stderr, "%*c> _tmp_65[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression?"));
31277
19.7k
        Token * _literal;
31278
19.7k
        void *d;
31279
19.7k
        if (
31280
19.7k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
31281
19.7k
            &&
31282
19.7k
            (d = expression_rule(p), !p->error_indicator)  // expression?
31283
19.7k
        )
31284
4.39k
        {
31285
4.39k
            D(fprintf(stderr, "%*c+ _tmp_65[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression?"));
31286
4.39k
            _res = d;
31287
4.39k
            if (_res == NULL && PyErr_Occurred()) {
31288
0
                p->error_indicator = 1;
31289
0
                p->level--;
31290
0
                return NULL;
31291
0
            }
31292
4.39k
            goto done;
31293
4.39k
        }
31294
15.3k
        p->mark = _mark;
31295
15.3k
        D(fprintf(stderr, "%*c%s _tmp_65[%d-%d]: %s failed!\n", p->level, ' ',
31296
15.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression?"));
31297
15.3k
    }
31298
0
    _res = NULL;
31299
19.7k
  done:
31300
19.7k
    p->level--;
31301
19.7k
    return _res;
31302
15.3k
}
31303
31304
// _tmp_66: tuple | group | genexp
31305
static void *
31306
_tmp_66_rule(Parser *p)
31307
87.3k
{
31308
87.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31309
0
        _Pypegen_stack_overflow(p);
31310
0
    }
31311
87.3k
    if (p->error_indicator) {
31312
0
        p->level--;
31313
0
        return NULL;
31314
0
    }
31315
87.3k
    void * _res = NULL;
31316
87.3k
    int _mark = p->mark;
31317
87.3k
    { // tuple
31318
87.3k
        if (p->error_indicator) {
31319
0
            p->level--;
31320
0
            return NULL;
31321
0
        }
31322
87.3k
        D(fprintf(stderr, "%*c> _tmp_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
31323
87.3k
        expr_ty tuple_var;
31324
87.3k
        if (
31325
87.3k
            (tuple_var = tuple_rule(p))  // tuple
31326
87.3k
        )
31327
41.9k
        {
31328
41.9k
            D(fprintf(stderr, "%*c+ _tmp_66[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
31329
41.9k
            _res = tuple_var;
31330
41.9k
            goto done;
31331
41.9k
        }
31332
45.3k
        p->mark = _mark;
31333
45.3k
        D(fprintf(stderr, "%*c%s _tmp_66[%d-%d]: %s failed!\n", p->level, ' ',
31334
45.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
31335
45.3k
    }
31336
0
    { // group
31337
45.3k
        if (p->error_indicator) {
31338
7.85k
            p->level--;
31339
7.85k
            return NULL;
31340
7.85k
        }
31341
37.4k
        D(fprintf(stderr, "%*c> _tmp_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "group"));
31342
37.4k
        expr_ty group_var;
31343
37.4k
        if (
31344
37.4k
            (group_var = group_rule(p))  // group
31345
37.4k
        )
31346
11.8k
        {
31347
11.8k
            D(fprintf(stderr, "%*c+ _tmp_66[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "group"));
31348
11.8k
            _res = group_var;
31349
11.8k
            goto done;
31350
11.8k
        }
31351
25.6k
        p->mark = _mark;
31352
25.6k
        D(fprintf(stderr, "%*c%s _tmp_66[%d-%d]: %s failed!\n", p->level, ' ',
31353
25.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "group"));
31354
25.6k
    }
31355
0
    { // genexp
31356
25.6k
        if (p->error_indicator) {
31357
1.16k
            p->level--;
31358
1.16k
            return NULL;
31359
1.16k
        }
31360
24.4k
        D(fprintf(stderr, "%*c> _tmp_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp"));
31361
24.4k
        expr_ty genexp_var;
31362
24.4k
        if (
31363
24.4k
            (genexp_var = genexp_rule(p))  // genexp
31364
24.4k
        )
31365
2.96k
        {
31366
2.96k
            D(fprintf(stderr, "%*c+ _tmp_66[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp"));
31367
2.96k
            _res = genexp_var;
31368
2.96k
            goto done;
31369
2.96k
        }
31370
21.4k
        p->mark = _mark;
31371
21.4k
        D(fprintf(stderr, "%*c%s _tmp_66[%d-%d]: %s failed!\n", p->level, ' ',
31372
21.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "genexp"));
31373
21.4k
    }
31374
0
    _res = NULL;
31375
78.3k
  done:
31376
78.3k
    p->level--;
31377
78.3k
    return _res;
31378
21.4k
}
31379
31380
// _tmp_67: list | listcomp
31381
static void *
31382
_tmp_67_rule(Parser *p)
31383
61.1k
{
31384
61.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31385
0
        _Pypegen_stack_overflow(p);
31386
0
    }
31387
61.1k
    if (p->error_indicator) {
31388
0
        p->level--;
31389
0
        return NULL;
31390
0
    }
31391
61.1k
    void * _res = NULL;
31392
61.1k
    int _mark = p->mark;
31393
61.1k
    { // list
31394
61.1k
        if (p->error_indicator) {
31395
0
            p->level--;
31396
0
            return NULL;
31397
0
        }
31398
61.1k
        D(fprintf(stderr, "%*c> _tmp_67[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
31399
61.1k
        expr_ty list_var;
31400
61.1k
        if (
31401
61.1k
            (list_var = list_rule(p))  // list
31402
61.1k
        )
31403
16.7k
        {
31404
16.7k
            D(fprintf(stderr, "%*c+ _tmp_67[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
31405
16.7k
            _res = list_var;
31406
16.7k
            goto done;
31407
16.7k
        }
31408
44.3k
        p->mark = _mark;
31409
44.3k
        D(fprintf(stderr, "%*c%s _tmp_67[%d-%d]: %s failed!\n", p->level, ' ',
31410
44.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
31411
44.3k
    }
31412
0
    { // listcomp
31413
44.3k
        if (p->error_indicator) {
31414
11.6k
            p->level--;
31415
11.6k
            return NULL;
31416
11.6k
        }
31417
32.7k
        D(fprintf(stderr, "%*c> _tmp_67[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "listcomp"));
31418
32.7k
        expr_ty listcomp_var;
31419
32.7k
        if (
31420
32.7k
            (listcomp_var = listcomp_rule(p))  // listcomp
31421
32.7k
        )
31422
1.25k
        {
31423
1.25k
            D(fprintf(stderr, "%*c+ _tmp_67[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "listcomp"));
31424
1.25k
            _res = listcomp_var;
31425
1.25k
            goto done;
31426
1.25k
        }
31427
31.4k
        p->mark = _mark;
31428
31.4k
        D(fprintf(stderr, "%*c%s _tmp_67[%d-%d]: %s failed!\n", p->level, ' ',
31429
31.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "listcomp"));
31430
31.4k
    }
31431
0
    _res = NULL;
31432
49.4k
  done:
31433
49.4k
    p->level--;
31434
49.4k
    return _res;
31435
31.4k
}
31436
31437
// _tmp_68: dict | set | dictcomp | setcomp
31438
static void *
31439
_tmp_68_rule(Parser *p)
31440
24.3k
{
31441
24.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31442
0
        _Pypegen_stack_overflow(p);
31443
0
    }
31444
24.3k
    if (p->error_indicator) {
31445
0
        p->level--;
31446
0
        return NULL;
31447
0
    }
31448
24.3k
    void * _res = NULL;
31449
24.3k
    int _mark = p->mark;
31450
24.3k
    { // dict
31451
24.3k
        if (p->error_indicator) {
31452
0
            p->level--;
31453
0
            return NULL;
31454
0
        }
31455
24.3k
        D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dict"));
31456
24.3k
        expr_ty dict_var;
31457
24.3k
        if (
31458
24.3k
            (dict_var = dict_rule(p))  // dict
31459
24.3k
        )
31460
4.97k
        {
31461
4.97k
            D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dict"));
31462
4.97k
            _res = dict_var;
31463
4.97k
            goto done;
31464
4.97k
        }
31465
19.3k
        p->mark = _mark;
31466
19.3k
        D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
31467
19.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dict"));
31468
19.3k
    }
31469
0
    { // set
31470
19.3k
        if (p->error_indicator) {
31471
7.74k
            p->level--;
31472
7.74k
            return NULL;
31473
7.74k
        }
31474
11.6k
        D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "set"));
31475
11.6k
        expr_ty set_var;
31476
11.6k
        if (
31477
11.6k
            (set_var = set_rule(p))  // set
31478
11.6k
        )
31479
1.52k
        {
31480
1.52k
            D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "set"));
31481
1.52k
            _res = set_var;
31482
1.52k
            goto done;
31483
1.52k
        }
31484
10.1k
        p->mark = _mark;
31485
10.1k
        D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
31486
10.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "set"));
31487
10.1k
    }
31488
0
    { // dictcomp
31489
10.1k
        if (p->error_indicator) {
31490
313
            p->level--;
31491
313
            return NULL;
31492
313
        }
31493
9.79k
        D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dictcomp"));
31494
9.79k
        expr_ty dictcomp_var;
31495
9.79k
        if (
31496
9.79k
            (dictcomp_var = dictcomp_rule(p))  // dictcomp
31497
9.79k
        )
31498
1.39k
        {
31499
1.39k
            D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dictcomp"));
31500
1.39k
            _res = dictcomp_var;
31501
1.39k
            goto done;
31502
1.39k
        }
31503
8.39k
        p->mark = _mark;
31504
8.39k
        D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
31505
8.39k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dictcomp"));
31506
8.39k
    }
31507
0
    { // setcomp
31508
8.39k
        if (p->error_indicator) {
31509
199
            p->level--;
31510
199
            return NULL;
31511
199
        }
31512
8.19k
        D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "setcomp"));
31513
8.19k
        expr_ty setcomp_var;
31514
8.19k
        if (
31515
8.19k
            (setcomp_var = setcomp_rule(p))  // setcomp
31516
8.19k
        )
31517
525
        {
31518
525
            D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "setcomp"));
31519
525
            _res = setcomp_var;
31520
525
            goto done;
31521
525
        }
31522
7.67k
        p->mark = _mark;
31523
7.67k
        D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
31524
7.67k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "setcomp"));
31525
7.67k
    }
31526
0
    _res = NULL;
31527
16.0k
  done:
31528
16.0k
    p->level--;
31529
16.0k
    return _res;
31530
7.67k
}
31531
31532
// _tmp_69: yield_expr | named_expression
31533
static void *
31534
_tmp_69_rule(Parser *p)
31535
37.4k
{
31536
37.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31537
0
        _Pypegen_stack_overflow(p);
31538
0
    }
31539
37.4k
    if (p->error_indicator) {
31540
0
        p->level--;
31541
0
        return NULL;
31542
0
    }
31543
37.4k
    void * _res = NULL;
31544
37.4k
    int _mark = p->mark;
31545
37.4k
    { // yield_expr
31546
37.4k
        if (p->error_indicator) {
31547
0
            p->level--;
31548
0
            return NULL;
31549
0
        }
31550
37.4k
        D(fprintf(stderr, "%*c> _tmp_69[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
31551
37.4k
        expr_ty yield_expr_var;
31552
37.4k
        if (
31553
37.4k
            (yield_expr_var = yield_expr_rule(p))  // yield_expr
31554
37.4k
        )
31555
658
        {
31556
658
            D(fprintf(stderr, "%*c+ _tmp_69[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
31557
658
            _res = yield_expr_var;
31558
658
            goto done;
31559
658
        }
31560
36.8k
        p->mark = _mark;
31561
36.8k
        D(fprintf(stderr, "%*c%s _tmp_69[%d-%d]: %s failed!\n", p->level, ' ',
31562
36.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
31563
36.8k
    }
31564
0
    { // named_expression
31565
36.8k
        if (p->error_indicator) {
31566
662
            p->level--;
31567
662
            return NULL;
31568
662
        }
31569
36.1k
        D(fprintf(stderr, "%*c> _tmp_69[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
31570
36.1k
        expr_ty named_expression_var;
31571
36.1k
        if (
31572
36.1k
            (named_expression_var = named_expression_rule(p))  // named_expression
31573
36.1k
        )
31574
25.4k
        {
31575
25.4k
            D(fprintf(stderr, "%*c+ _tmp_69[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
31576
25.4k
            _res = named_expression_var;
31577
25.4k
            goto done;
31578
25.4k
        }
31579
10.7k
        p->mark = _mark;
31580
10.7k
        D(fprintf(stderr, "%*c%s _tmp_69[%d-%d]: %s failed!\n", p->level, ' ',
31581
10.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
31582
10.7k
    }
31583
0
    _res = NULL;
31584
36.8k
  done:
31585
36.8k
    p->level--;
31586
36.8k
    return _res;
31587
10.7k
}
31588
31589
// _loop0_70: lambda_param_no_default
31590
static asdl_seq *
31591
_loop0_70_rule(Parser *p)
31592
95.6k
{
31593
95.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31594
0
        _Pypegen_stack_overflow(p);
31595
0
    }
31596
95.6k
    if (p->error_indicator) {
31597
0
        p->level--;
31598
0
        return NULL;
31599
0
    }
31600
95.6k
    void *_res = NULL;
31601
95.6k
    int _mark = p->mark;
31602
95.6k
    void **_children = PyMem_Malloc(sizeof(void *));
31603
95.6k
    if (!_children) {
31604
0
        p->error_indicator = 1;
31605
0
        PyErr_NoMemory();
31606
0
        p->level--;
31607
0
        return NULL;
31608
0
    }
31609
95.6k
    Py_ssize_t _children_capacity = 1;
31610
95.6k
    Py_ssize_t _n = 0;
31611
95.6k
    { // lambda_param_no_default
31612
95.6k
        if (p->error_indicator) {
31613
0
            p->level--;
31614
0
            return NULL;
31615
0
        }
31616
95.6k
        D(fprintf(stderr, "%*c> _loop0_70[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
31617
95.6k
        arg_ty lambda_param_no_default_var;
31618
95.6k
        while (
31619
148k
            (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
31620
95.6k
        )
31621
53.1k
        {
31622
53.1k
            _res = lambda_param_no_default_var;
31623
53.1k
            if (_n == _children_capacity) {
31624
3.39k
                _children_capacity *= 2;
31625
3.39k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31626
3.39k
                if (!_new_children) {
31627
0
                    PyMem_Free(_children);
31628
0
                    p->error_indicator = 1;
31629
0
                    PyErr_NoMemory();
31630
0
                    p->level--;
31631
0
                    return NULL;
31632
0
                }
31633
3.39k
                _children = _new_children;
31634
3.39k
            }
31635
53.1k
            _children[_n++] = _res;
31636
53.1k
            _mark = p->mark;
31637
53.1k
        }
31638
95.6k
        p->mark = _mark;
31639
95.6k
        D(fprintf(stderr, "%*c%s _loop0_70[%d-%d]: %s failed!\n", p->level, ' ',
31640
95.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
31641
95.6k
    }
31642
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31643
95.6k
    if (!_seq) {
31644
0
        PyMem_Free(_children);
31645
0
        p->error_indicator = 1;
31646
0
        PyErr_NoMemory();
31647
0
        p->level--;
31648
0
        return NULL;
31649
0
    }
31650
148k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31651
95.6k
    PyMem_Free(_children);
31652
95.6k
    p->level--;
31653
95.6k
    return _seq;
31654
95.6k
}
31655
31656
// _loop0_71: lambda_param_with_default
31657
static asdl_seq *
31658
_loop0_71_rule(Parser *p)
31659
4.29k
{
31660
4.29k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31661
0
        _Pypegen_stack_overflow(p);
31662
0
    }
31663
4.29k
    if (p->error_indicator) {
31664
1
        p->level--;
31665
1
        return NULL;
31666
1
    }
31667
4.29k
    void *_res = NULL;
31668
4.29k
    int _mark = p->mark;
31669
4.29k
    void **_children = PyMem_Malloc(sizeof(void *));
31670
4.29k
    if (!_children) {
31671
0
        p->error_indicator = 1;
31672
0
        PyErr_NoMemory();
31673
0
        p->level--;
31674
0
        return NULL;
31675
0
    }
31676
4.29k
    Py_ssize_t _children_capacity = 1;
31677
4.29k
    Py_ssize_t _n = 0;
31678
4.29k
    { // lambda_param_with_default
31679
4.29k
        if (p->error_indicator) {
31680
0
            p->level--;
31681
0
            return NULL;
31682
0
        }
31683
4.29k
        D(fprintf(stderr, "%*c> _loop0_71[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
31684
4.29k
        NameDefaultPair* lambda_param_with_default_var;
31685
4.29k
        while (
31686
5.91k
            (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
31687
4.29k
        )
31688
1.62k
        {
31689
1.62k
            _res = lambda_param_with_default_var;
31690
1.62k
            if (_n == _children_capacity) {
31691
482
                _children_capacity *= 2;
31692
482
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31693
482
                if (!_new_children) {
31694
0
                    PyMem_Free(_children);
31695
0
                    p->error_indicator = 1;
31696
0
                    PyErr_NoMemory();
31697
0
                    p->level--;
31698
0
                    return NULL;
31699
0
                }
31700
482
                _children = _new_children;
31701
482
            }
31702
1.62k
            _children[_n++] = _res;
31703
1.62k
            _mark = p->mark;
31704
1.62k
        }
31705
4.29k
        p->mark = _mark;
31706
4.29k
        D(fprintf(stderr, "%*c%s _loop0_71[%d-%d]: %s failed!\n", p->level, ' ',
31707
4.29k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
31708
4.29k
    }
31709
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31710
4.29k
    if (!_seq) {
31711
0
        PyMem_Free(_children);
31712
0
        p->error_indicator = 1;
31713
0
        PyErr_NoMemory();
31714
0
        p->level--;
31715
0
        return NULL;
31716
0
    }
31717
5.91k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31718
4.29k
    PyMem_Free(_children);
31719
4.29k
    p->level--;
31720
4.29k
    return _seq;
31721
4.29k
}
31722
31723
// _loop1_72: lambda_param_no_default
31724
static asdl_seq *
31725
_loop1_72_rule(Parser *p)
31726
95.5k
{
31727
95.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31728
0
        _Pypegen_stack_overflow(p);
31729
0
    }
31730
95.5k
    if (p->error_indicator) {
31731
0
        p->level--;
31732
0
        return NULL;
31733
0
    }
31734
95.5k
    void *_res = NULL;
31735
95.5k
    int _mark = p->mark;
31736
95.5k
    void **_children = PyMem_Malloc(sizeof(void *));
31737
95.5k
    if (!_children) {
31738
0
        p->error_indicator = 1;
31739
0
        PyErr_NoMemory();
31740
0
        p->level--;
31741
0
        return NULL;
31742
0
    }
31743
95.5k
    Py_ssize_t _children_capacity = 1;
31744
95.5k
    Py_ssize_t _n = 0;
31745
95.5k
    { // lambda_param_no_default
31746
95.5k
        if (p->error_indicator) {
31747
0
            p->level--;
31748
0
            return NULL;
31749
0
        }
31750
95.5k
        D(fprintf(stderr, "%*c> _loop1_72[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
31751
95.5k
        arg_ty lambda_param_no_default_var;
31752
95.5k
        while (
31753
165k
            (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
31754
95.5k
        )
31755
70.0k
        {
31756
70.0k
            _res = lambda_param_no_default_var;
31757
70.0k
            if (_n == _children_capacity) {
31758
5.81k
                _children_capacity *= 2;
31759
5.81k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31760
5.81k
                if (!_new_children) {
31761
0
                    PyMem_Free(_children);
31762
0
                    p->error_indicator = 1;
31763
0
                    PyErr_NoMemory();
31764
0
                    p->level--;
31765
0
                    return NULL;
31766
0
                }
31767
5.81k
                _children = _new_children;
31768
5.81k
            }
31769
70.0k
            _children[_n++] = _res;
31770
70.0k
            _mark = p->mark;
31771
70.0k
        }
31772
95.5k
        p->mark = _mark;
31773
95.5k
        D(fprintf(stderr, "%*c%s _loop1_72[%d-%d]: %s failed!\n", p->level, ' ',
31774
95.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
31775
95.5k
    }
31776
95.5k
    if (_n == 0 || p->error_indicator) {
31777
80.7k
        PyMem_Free(_children);
31778
80.7k
        p->level--;
31779
80.7k
        return NULL;
31780
80.7k
    }
31781
14.7k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31782
14.7k
    if (!_seq) {
31783
0
        PyMem_Free(_children);
31784
0
        p->error_indicator = 1;
31785
0
        PyErr_NoMemory();
31786
0
        p->level--;
31787
0
        return NULL;
31788
0
    }
31789
84.8k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31790
14.7k
    PyMem_Free(_children);
31791
14.7k
    p->level--;
31792
14.7k
    return _seq;
31793
14.7k
}
31794
31795
// _loop1_73: lambda_param_with_default
31796
static asdl_seq *
31797
_loop1_73_rule(Parser *p)
31798
95.0k
{
31799
95.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31800
0
        _Pypegen_stack_overflow(p);
31801
0
    }
31802
95.0k
    if (p->error_indicator) {
31803
0
        p->level--;
31804
0
        return NULL;
31805
0
    }
31806
95.0k
    void *_res = NULL;
31807
95.0k
    int _mark = p->mark;
31808
95.0k
    void **_children = PyMem_Malloc(sizeof(void *));
31809
95.0k
    if (!_children) {
31810
0
        p->error_indicator = 1;
31811
0
        PyErr_NoMemory();
31812
0
        p->level--;
31813
0
        return NULL;
31814
0
    }
31815
95.0k
    Py_ssize_t _children_capacity = 1;
31816
95.0k
    Py_ssize_t _n = 0;
31817
95.0k
    { // lambda_param_with_default
31818
95.0k
        if (p->error_indicator) {
31819
0
            p->level--;
31820
0
            return NULL;
31821
0
        }
31822
95.0k
        D(fprintf(stderr, "%*c> _loop1_73[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
31823
95.0k
        NameDefaultPair* lambda_param_with_default_var;
31824
95.0k
        while (
31825
127k
            (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
31826
95.0k
        )
31827
32.7k
        {
31828
32.7k
            _res = lambda_param_with_default_var;
31829
32.7k
            if (_n == _children_capacity) {
31830
3.71k
                _children_capacity *= 2;
31831
3.71k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31832
3.71k
                if (!_new_children) {
31833
0
                    PyMem_Free(_children);
31834
0
                    p->error_indicator = 1;
31835
0
                    PyErr_NoMemory();
31836
0
                    p->level--;
31837
0
                    return NULL;
31838
0
                }
31839
3.71k
                _children = _new_children;
31840
3.71k
            }
31841
32.7k
            _children[_n++] = _res;
31842
32.7k
            _mark = p->mark;
31843
32.7k
        }
31844
95.0k
        p->mark = _mark;
31845
95.0k
        D(fprintf(stderr, "%*c%s _loop1_73[%d-%d]: %s failed!\n", p->level, ' ',
31846
95.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
31847
95.0k
    }
31848
95.0k
    if (_n == 0 || p->error_indicator) {
31849
68.3k
        PyMem_Free(_children);
31850
68.3k
        p->level--;
31851
68.3k
        return NULL;
31852
68.3k
    }
31853
26.7k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31854
26.7k
    if (!_seq) {
31855
0
        PyMem_Free(_children);
31856
0
        p->error_indicator = 1;
31857
0
        PyErr_NoMemory();
31858
0
        p->level--;
31859
0
        return NULL;
31860
0
    }
31861
59.2k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31862
26.7k
    PyMem_Free(_children);
31863
26.7k
    p->level--;
31864
26.7k
    return _seq;
31865
26.7k
}
31866
31867
// _loop0_74: lambda_param_maybe_default
31868
static asdl_seq *
31869
_loop0_74_rule(Parser *p)
31870
16.3k
{
31871
16.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31872
0
        _Pypegen_stack_overflow(p);
31873
0
    }
31874
16.3k
    if (p->error_indicator) {
31875
0
        p->level--;
31876
0
        return NULL;
31877
0
    }
31878
16.3k
    void *_res = NULL;
31879
16.3k
    int _mark = p->mark;
31880
16.3k
    void **_children = PyMem_Malloc(sizeof(void *));
31881
16.3k
    if (!_children) {
31882
0
        p->error_indicator = 1;
31883
0
        PyErr_NoMemory();
31884
0
        p->level--;
31885
0
        return NULL;
31886
0
    }
31887
16.3k
    Py_ssize_t _children_capacity = 1;
31888
16.3k
    Py_ssize_t _n = 0;
31889
16.3k
    { // lambda_param_maybe_default
31890
16.3k
        if (p->error_indicator) {
31891
0
            p->level--;
31892
0
            return NULL;
31893
0
        }
31894
16.3k
        D(fprintf(stderr, "%*c> _loop0_74[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
31895
16.3k
        NameDefaultPair* lambda_param_maybe_default_var;
31896
16.3k
        while (
31897
27.6k
            (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p))  // lambda_param_maybe_default
31898
16.3k
        )
31899
11.3k
        {
31900
11.3k
            _res = lambda_param_maybe_default_var;
31901
11.3k
            if (_n == _children_capacity) {
31902
1.58k
                _children_capacity *= 2;
31903
1.58k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31904
1.58k
                if (!_new_children) {
31905
0
                    PyMem_Free(_children);
31906
0
                    p->error_indicator = 1;
31907
0
                    PyErr_NoMemory();
31908
0
                    p->level--;
31909
0
                    return NULL;
31910
0
                }
31911
1.58k
                _children = _new_children;
31912
1.58k
            }
31913
11.3k
            _children[_n++] = _res;
31914
11.3k
            _mark = p->mark;
31915
11.3k
        }
31916
16.3k
        p->mark = _mark;
31917
16.3k
        D(fprintf(stderr, "%*c%s _loop0_74[%d-%d]: %s failed!\n", p->level, ' ',
31918
16.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
31919
16.3k
    }
31920
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31921
16.3k
    if (!_seq) {
31922
0
        PyMem_Free(_children);
31923
0
        p->error_indicator = 1;
31924
0
        PyErr_NoMemory();
31925
0
        p->level--;
31926
0
        return NULL;
31927
0
    }
31928
27.6k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31929
16.3k
    PyMem_Free(_children);
31930
16.3k
    p->level--;
31931
16.3k
    return _seq;
31932
16.3k
}
31933
31934
// _loop1_75: lambda_param_maybe_default
31935
static asdl_seq *
31936
_loop1_75_rule(Parser *p)
31937
10.9k
{
31938
10.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31939
0
        _Pypegen_stack_overflow(p);
31940
0
    }
31941
10.9k
    if (p->error_indicator) {
31942
0
        p->level--;
31943
0
        return NULL;
31944
0
    }
31945
10.9k
    void *_res = NULL;
31946
10.9k
    int _mark = p->mark;
31947
10.9k
    void **_children = PyMem_Malloc(sizeof(void *));
31948
10.9k
    if (!_children) {
31949
0
        p->error_indicator = 1;
31950
0
        PyErr_NoMemory();
31951
0
        p->level--;
31952
0
        return NULL;
31953
0
    }
31954
10.9k
    Py_ssize_t _children_capacity = 1;
31955
10.9k
    Py_ssize_t _n = 0;
31956
10.9k
    { // lambda_param_maybe_default
31957
10.9k
        if (p->error_indicator) {
31958
0
            p->level--;
31959
0
            return NULL;
31960
0
        }
31961
10.9k
        D(fprintf(stderr, "%*c> _loop1_75[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
31962
10.9k
        NameDefaultPair* lambda_param_maybe_default_var;
31963
10.9k
        while (
31964
21.8k
            (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p))  // lambda_param_maybe_default
31965
10.9k
        )
31966
10.9k
        {
31967
10.9k
            _res = lambda_param_maybe_default_var;
31968
10.9k
            if (_n == _children_capacity) {
31969
1.52k
                _children_capacity *= 2;
31970
1.52k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31971
1.52k
                if (!_new_children) {
31972
0
                    PyMem_Free(_children);
31973
0
                    p->error_indicator = 1;
31974
0
                    PyErr_NoMemory();
31975
0
                    p->level--;
31976
0
                    return NULL;
31977
0
                }
31978
1.52k
                _children = _new_children;
31979
1.52k
            }
31980
10.9k
            _children[_n++] = _res;
31981
10.9k
            _mark = p->mark;
31982
10.9k
        }
31983
10.9k
        p->mark = _mark;
31984
10.9k
        D(fprintf(stderr, "%*c%s _loop1_75[%d-%d]: %s failed!\n", p->level, ' ',
31985
10.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
31986
10.9k
    }
31987
10.9k
    if (_n == 0 || p->error_indicator) {
31988
6.42k
        PyMem_Free(_children);
31989
6.42k
        p->level--;
31990
6.42k
        return NULL;
31991
6.42k
    }
31992
4.52k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31993
4.52k
    if (!_seq) {
31994
0
        PyMem_Free(_children);
31995
0
        p->error_indicator = 1;
31996
0
        PyErr_NoMemory();
31997
0
        p->level--;
31998
0
        return NULL;
31999
0
    }
32000
14.8k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32001
4.52k
    PyMem_Free(_children);
32002
4.52k
    p->level--;
32003
4.52k
    return _seq;
32004
4.52k
}
32005
32006
// _loop0_76: fstring_format_spec
32007
static asdl_seq *
32008
_loop0_76_rule(Parser *p)
32009
3.58k
{
32010
3.58k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32011
0
        _Pypegen_stack_overflow(p);
32012
0
    }
32013
3.58k
    if (p->error_indicator) {
32014
0
        p->level--;
32015
0
        return NULL;
32016
0
    }
32017
3.58k
    void *_res = NULL;
32018
3.58k
    int _mark = p->mark;
32019
3.58k
    void **_children = PyMem_Malloc(sizeof(void *));
32020
3.58k
    if (!_children) {
32021
0
        p->error_indicator = 1;
32022
0
        PyErr_NoMemory();
32023
0
        p->level--;
32024
0
        return NULL;
32025
0
    }
32026
3.58k
    Py_ssize_t _children_capacity = 1;
32027
3.58k
    Py_ssize_t _n = 0;
32028
3.58k
    { // fstring_format_spec
32029
3.58k
        if (p->error_indicator) {
32030
0
            p->level--;
32031
0
            return NULL;
32032
0
        }
32033
3.58k
        D(fprintf(stderr, "%*c> _loop0_76[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_format_spec"));
32034
3.58k
        expr_ty fstring_format_spec_var;
32035
3.58k
        while (
32036
14.1k
            (fstring_format_spec_var = fstring_format_spec_rule(p))  // fstring_format_spec
32037
3.58k
        )
32038
10.5k
        {
32039
10.5k
            _res = fstring_format_spec_var;
32040
10.5k
            if (_n == _children_capacity) {
32041
2.14k
                _children_capacity *= 2;
32042
2.14k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32043
2.14k
                if (!_new_children) {
32044
0
                    PyMem_Free(_children);
32045
0
                    p->error_indicator = 1;
32046
0
                    PyErr_NoMemory();
32047
0
                    p->level--;
32048
0
                    return NULL;
32049
0
                }
32050
2.14k
                _children = _new_children;
32051
2.14k
            }
32052
10.5k
            _children[_n++] = _res;
32053
10.5k
            _mark = p->mark;
32054
10.5k
        }
32055
3.58k
        p->mark = _mark;
32056
3.58k
        D(fprintf(stderr, "%*c%s _loop0_76[%d-%d]: %s failed!\n", p->level, ' ',
32057
3.58k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_format_spec"));
32058
3.58k
    }
32059
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32060
3.58k
    if (!_seq) {
32061
0
        PyMem_Free(_children);
32062
0
        p->error_indicator = 1;
32063
0
        PyErr_NoMemory();
32064
0
        p->level--;
32065
0
        return NULL;
32066
0
    }
32067
14.1k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32068
3.58k
    PyMem_Free(_children);
32069
3.58k
    p->level--;
32070
3.58k
    return _seq;
32071
3.58k
}
32072
32073
// _loop0_77: fstring_middle
32074
static asdl_seq *
32075
_loop0_77_rule(Parser *p)
32076
16.8k
{
32077
16.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32078
1
        _Pypegen_stack_overflow(p);
32079
1
    }
32080
16.8k
    if (p->error_indicator) {
32081
1
        p->level--;
32082
1
        return NULL;
32083
1
    }
32084
16.8k
    void *_res = NULL;
32085
16.8k
    int _mark = p->mark;
32086
16.8k
    void **_children = PyMem_Malloc(sizeof(void *));
32087
16.8k
    if (!_children) {
32088
0
        p->error_indicator = 1;
32089
0
        PyErr_NoMemory();
32090
0
        p->level--;
32091
0
        return NULL;
32092
0
    }
32093
16.8k
    Py_ssize_t _children_capacity = 1;
32094
16.8k
    Py_ssize_t _n = 0;
32095
16.8k
    { // fstring_middle
32096
16.8k
        if (p->error_indicator) {
32097
0
            p->level--;
32098
0
            return NULL;
32099
0
        }
32100
16.8k
        D(fprintf(stderr, "%*c> _loop0_77[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_middle"));
32101
16.8k
        expr_ty fstring_middle_var;
32102
16.8k
        while (
32103
58.8k
            (fstring_middle_var = fstring_middle_rule(p))  // fstring_middle
32104
16.8k
        )
32105
42.0k
        {
32106
42.0k
            _res = fstring_middle_var;
32107
42.0k
            if (_n == _children_capacity) {
32108
6.38k
                _children_capacity *= 2;
32109
6.38k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32110
6.38k
                if (!_new_children) {
32111
0
                    PyMem_Free(_children);
32112
0
                    p->error_indicator = 1;
32113
0
                    PyErr_NoMemory();
32114
0
                    p->level--;
32115
0
                    return NULL;
32116
0
                }
32117
6.38k
                _children = _new_children;
32118
6.38k
            }
32119
42.0k
            _children[_n++] = _res;
32120
42.0k
            _mark = p->mark;
32121
42.0k
        }
32122
16.8k
        p->mark = _mark;
32123
16.8k
        D(fprintf(stderr, "%*c%s _loop0_77[%d-%d]: %s failed!\n", p->level, ' ',
32124
16.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_middle"));
32125
16.8k
    }
32126
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32127
16.8k
    if (!_seq) {
32128
0
        PyMem_Free(_children);
32129
0
        p->error_indicator = 1;
32130
0
        PyErr_NoMemory();
32131
0
        p->level--;
32132
0
        return NULL;
32133
0
    }
32134
58.8k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32135
16.8k
    PyMem_Free(_children);
32136
16.8k
    p->level--;
32137
16.8k
    return _seq;
32138
16.8k
}
32139
32140
// _loop0_78: tstring_format_spec
32141
static asdl_seq *
32142
_loop0_78_rule(Parser *p)
32143
2.66k
{
32144
2.66k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32145
0
        _Pypegen_stack_overflow(p);
32146
0
    }
32147
2.66k
    if (p->error_indicator) {
32148
0
        p->level--;
32149
0
        return NULL;
32150
0
    }
32151
2.66k
    void *_res = NULL;
32152
2.66k
    int _mark = p->mark;
32153
2.66k
    void **_children = PyMem_Malloc(sizeof(void *));
32154
2.66k
    if (!_children) {
32155
0
        p->error_indicator = 1;
32156
0
        PyErr_NoMemory();
32157
0
        p->level--;
32158
0
        return NULL;
32159
0
    }
32160
2.66k
    Py_ssize_t _children_capacity = 1;
32161
2.66k
    Py_ssize_t _n = 0;
32162
2.66k
    { // tstring_format_spec
32163
2.66k
        if (p->error_indicator) {
32164
0
            p->level--;
32165
0
            return NULL;
32166
0
        }
32167
2.66k
        D(fprintf(stderr, "%*c> _loop0_78[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring_format_spec"));
32168
2.66k
        expr_ty tstring_format_spec_var;
32169
2.66k
        while (
32170
6.80k
            (tstring_format_spec_var = tstring_format_spec_rule(p))  // tstring_format_spec
32171
2.66k
        )
32172
4.13k
        {
32173
4.13k
            _res = tstring_format_spec_var;
32174
4.13k
            if (_n == _children_capacity) {
32175
812
                _children_capacity *= 2;
32176
812
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32177
812
                if (!_new_children) {
32178
0
                    PyMem_Free(_children);
32179
0
                    p->error_indicator = 1;
32180
0
                    PyErr_NoMemory();
32181
0
                    p->level--;
32182
0
                    return NULL;
32183
0
                }
32184
812
                _children = _new_children;
32185
812
            }
32186
4.13k
            _children[_n++] = _res;
32187
4.13k
            _mark = p->mark;
32188
4.13k
        }
32189
2.66k
        p->mark = _mark;
32190
2.66k
        D(fprintf(stderr, "%*c%s _loop0_78[%d-%d]: %s failed!\n", p->level, ' ',
32191
2.66k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring_format_spec"));
32192
2.66k
    }
32193
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32194
2.66k
    if (!_seq) {
32195
0
        PyMem_Free(_children);
32196
0
        p->error_indicator = 1;
32197
0
        PyErr_NoMemory();
32198
0
        p->level--;
32199
0
        return NULL;
32200
0
    }
32201
6.80k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32202
2.66k
    PyMem_Free(_children);
32203
2.66k
    p->level--;
32204
2.66k
    return _seq;
32205
2.66k
}
32206
32207
// _loop0_79: tstring_middle
32208
static asdl_seq *
32209
_loop0_79_rule(Parser *p)
32210
5.42k
{
32211
5.42k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32212
1
        _Pypegen_stack_overflow(p);
32213
1
    }
32214
5.42k
    if (p->error_indicator) {
32215
1
        p->level--;
32216
1
        return NULL;
32217
1
    }
32218
5.42k
    void *_res = NULL;
32219
5.42k
    int _mark = p->mark;
32220
5.42k
    void **_children = PyMem_Malloc(sizeof(void *));
32221
5.42k
    if (!_children) {
32222
0
        p->error_indicator = 1;
32223
0
        PyErr_NoMemory();
32224
0
        p->level--;
32225
0
        return NULL;
32226
0
    }
32227
5.42k
    Py_ssize_t _children_capacity = 1;
32228
5.42k
    Py_ssize_t _n = 0;
32229
5.42k
    { // tstring_middle
32230
5.42k
        if (p->error_indicator) {
32231
0
            p->level--;
32232
0
            return NULL;
32233
0
        }
32234
5.42k
        D(fprintf(stderr, "%*c> _loop0_79[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring_middle"));
32235
5.42k
        expr_ty tstring_middle_var;
32236
5.42k
        while (
32237
17.2k
            (tstring_middle_var = tstring_middle_rule(p))  // tstring_middle
32238
5.42k
        )
32239
11.7k
        {
32240
11.7k
            _res = tstring_middle_var;
32241
11.7k
            if (_n == _children_capacity) {
32242
1.72k
                _children_capacity *= 2;
32243
1.72k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32244
1.72k
                if (!_new_children) {
32245
0
                    PyMem_Free(_children);
32246
0
                    p->error_indicator = 1;
32247
0
                    PyErr_NoMemory();
32248
0
                    p->level--;
32249
0
                    return NULL;
32250
0
                }
32251
1.72k
                _children = _new_children;
32252
1.72k
            }
32253
11.7k
            _children[_n++] = _res;
32254
11.7k
            _mark = p->mark;
32255
11.7k
        }
32256
5.42k
        p->mark = _mark;
32257
5.42k
        D(fprintf(stderr, "%*c%s _loop0_79[%d-%d]: %s failed!\n", p->level, ' ',
32258
5.42k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring_middle"));
32259
5.42k
    }
32260
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32261
5.42k
    if (!_seq) {
32262
0
        PyMem_Free(_children);
32263
0
        p->error_indicator = 1;
32264
0
        PyErr_NoMemory();
32265
0
        p->level--;
32266
0
        return NULL;
32267
0
    }
32268
17.2k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32269
5.42k
    PyMem_Free(_children);
32270
5.42k
    p->level--;
32271
5.42k
    return _seq;
32272
5.42k
}
32273
32274
// _loop1_80: (fstring | string | tstring)
32275
static asdl_seq *
32276
_loop1_80_rule(Parser *p)
32277
101k
{
32278
101k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32279
1
        _Pypegen_stack_overflow(p);
32280
1
    }
32281
101k
    if (p->error_indicator) {
32282
1
        p->level--;
32283
1
        return NULL;
32284
1
    }
32285
101k
    void *_res = NULL;
32286
101k
    int _mark = p->mark;
32287
101k
    void **_children = PyMem_Malloc(sizeof(void *));
32288
101k
    if (!_children) {
32289
0
        p->error_indicator = 1;
32290
0
        PyErr_NoMemory();
32291
0
        p->level--;
32292
0
        return NULL;
32293
0
    }
32294
101k
    Py_ssize_t _children_capacity = 1;
32295
101k
    Py_ssize_t _n = 0;
32296
101k
    { // (fstring | string | tstring)
32297
101k
        if (p->error_indicator) {
32298
0
            p->level--;
32299
0
            return NULL;
32300
0
        }
32301
101k
        D(fprintf(stderr, "%*c> _loop1_80[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(fstring | string | tstring)"));
32302
101k
        void *_tmp_161_var;
32303
101k
        while (
32304
180k
            (_tmp_161_var = _tmp_161_rule(p))  // fstring | string | tstring
32305
101k
        )
32306
79.4k
        {
32307
79.4k
            _res = _tmp_161_var;
32308
79.4k
            if (_n == _children_capacity) {
32309
8.09k
                _children_capacity *= 2;
32310
8.09k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32311
8.09k
                if (!_new_children) {
32312
0
                    PyMem_Free(_children);
32313
0
                    p->error_indicator = 1;
32314
0
                    PyErr_NoMemory();
32315
0
                    p->level--;
32316
0
                    return NULL;
32317
0
                }
32318
8.09k
                _children = _new_children;
32319
8.09k
            }
32320
79.4k
            _children[_n++] = _res;
32321
79.4k
            _mark = p->mark;
32322
79.4k
        }
32323
101k
        p->mark = _mark;
32324
101k
        D(fprintf(stderr, "%*c%s _loop1_80[%d-%d]: %s failed!\n", p->level, ' ',
32325
101k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(fstring | string | tstring)"));
32326
101k
    }
32327
101k
    if (_n == 0 || p->error_indicator) {
32328
54.9k
        PyMem_Free(_children);
32329
54.9k
        p->level--;
32330
54.9k
        return NULL;
32331
54.9k
    }
32332
46.4k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32333
46.4k
    if (!_seq) {
32334
0
        PyMem_Free(_children);
32335
0
        p->error_indicator = 1;
32336
0
        PyErr_NoMemory();
32337
0
        p->level--;
32338
0
        return NULL;
32339
0
    }
32340
125k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32341
46.4k
    PyMem_Free(_children);
32342
46.4k
    p->level--;
32343
46.4k
    return _seq;
32344
46.4k
}
32345
32346
// _tmp_81: star_named_expression ',' star_named_expressions?
32347
static void *
32348
_tmp_81_rule(Parser *p)
32349
98.3k
{
32350
98.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32351
1
        _Pypegen_stack_overflow(p);
32352
1
    }
32353
98.3k
    if (p->error_indicator) {
32354
1
        p->level--;
32355
1
        return NULL;
32356
1
    }
32357
98.3k
    void * _res = NULL;
32358
98.3k
    int _mark = p->mark;
32359
98.3k
    { // star_named_expression ',' star_named_expressions?
32360
98.3k
        if (p->error_indicator) {
32361
0
            p->level--;
32362
0
            return NULL;
32363
0
        }
32364
98.3k
        D(fprintf(stderr, "%*c> _tmp_81[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
32365
98.3k
        Token * _literal;
32366
98.3k
        expr_ty y;
32367
98.3k
        void *z;
32368
98.3k
        if (
32369
98.3k
            (y = star_named_expression_rule(p))  // star_named_expression
32370
98.3k
            &&
32371
98.3k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
32372
98.3k
            &&
32373
98.3k
            (z = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
32374
98.3k
        )
32375
19.1k
        {
32376
19.1k
            D(fprintf(stderr, "%*c+ _tmp_81[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
32377
19.1k
            _res = _PyPegen_seq_insert_in_front ( p , y , z );
32378
19.1k
            if (_res == NULL && PyErr_Occurred()) {
32379
0
                p->error_indicator = 1;
32380
0
                p->level--;
32381
0
                return NULL;
32382
0
            }
32383
19.1k
            goto done;
32384
19.1k
        }
32385
79.1k
        p->mark = _mark;
32386
79.1k
        D(fprintf(stderr, "%*c%s _tmp_81[%d-%d]: %s failed!\n", p->level, ' ',
32387
79.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
32388
79.1k
    }
32389
0
    _res = NULL;
32390
98.3k
  done:
32391
98.3k
    p->level--;
32392
98.3k
    return _res;
32393
79.1k
}
32394
32395
// _loop0_82: ',' double_starred_kvpair
32396
static asdl_seq *
32397
_loop0_82_rule(Parser *p)
32398
9.45k
{
32399
9.45k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32400
0
        _Pypegen_stack_overflow(p);
32401
0
    }
32402
9.45k
    if (p->error_indicator) {
32403
0
        p->level--;
32404
0
        return NULL;
32405
0
    }
32406
9.45k
    void *_res = NULL;
32407
9.45k
    int _mark = p->mark;
32408
9.45k
    void **_children = PyMem_Malloc(sizeof(void *));
32409
9.45k
    if (!_children) {
32410
0
        p->error_indicator = 1;
32411
0
        PyErr_NoMemory();
32412
0
        p->level--;
32413
0
        return NULL;
32414
0
    }
32415
9.45k
    Py_ssize_t _children_capacity = 1;
32416
9.45k
    Py_ssize_t _n = 0;
32417
9.45k
    { // ',' double_starred_kvpair
32418
9.45k
        if (p->error_indicator) {
32419
0
            p->level--;
32420
0
            return NULL;
32421
0
        }
32422
9.45k
        D(fprintf(stderr, "%*c> _loop0_82[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair"));
32423
9.45k
        Token * _literal;
32424
9.45k
        KeyValuePair* elem;
32425
9.45k
        while (
32426
41.7k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
32427
41.7k
            &&
32428
41.7k
            (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
32429
9.45k
        )
32430
32.2k
        {
32431
32.2k
            _res = elem;
32432
32.2k
            if (_res == NULL && PyErr_Occurred()) {
32433
0
                p->error_indicator = 1;
32434
0
                PyMem_Free(_children);
32435
0
                p->level--;
32436
0
                return NULL;
32437
0
            }
32438
32.2k
            if (_n == _children_capacity) {
32439
1.78k
                _children_capacity *= 2;
32440
1.78k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32441
1.78k
                if (!_new_children) {
32442
0
                    PyMem_Free(_children);
32443
0
                    p->error_indicator = 1;
32444
0
                    PyErr_NoMemory();
32445
0
                    p->level--;
32446
0
                    return NULL;
32447
0
                }
32448
1.78k
                _children = _new_children;
32449
1.78k
            }
32450
32.2k
            _children[_n++] = _res;
32451
32.2k
            _mark = p->mark;
32452
32.2k
        }
32453
9.45k
        p->mark = _mark;
32454
9.45k
        D(fprintf(stderr, "%*c%s _loop0_82[%d-%d]: %s failed!\n", p->level, ' ',
32455
9.45k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair"));
32456
9.45k
    }
32457
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32458
9.45k
    if (!_seq) {
32459
0
        PyMem_Free(_children);
32460
0
        p->error_indicator = 1;
32461
0
        PyErr_NoMemory();
32462
0
        p->level--;
32463
0
        return NULL;
32464
0
    }
32465
41.7k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32466
9.45k
    PyMem_Free(_children);
32467
9.45k
    p->level--;
32468
9.45k
    return _seq;
32469
9.45k
}
32470
32471
// _gather_83: double_starred_kvpair _loop0_82
32472
static asdl_seq *
32473
_gather_83_rule(Parser *p)
32474
36.3k
{
32475
36.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32476
1
        _Pypegen_stack_overflow(p);
32477
1
    }
32478
36.3k
    if (p->error_indicator) {
32479
1
        p->level--;
32480
1
        return NULL;
32481
1
    }
32482
36.3k
    asdl_seq * _res = NULL;
32483
36.3k
    int _mark = p->mark;
32484
36.3k
    { // double_starred_kvpair _loop0_82
32485
36.3k
        if (p->error_indicator) {
32486
0
            p->level--;
32487
0
            return NULL;
32488
0
        }
32489
36.3k
        D(fprintf(stderr, "%*c> _gather_83[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_82"));
32490
36.3k
        KeyValuePair* elem;
32491
36.3k
        asdl_seq * seq;
32492
36.3k
        if (
32493
36.3k
            (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
32494
36.3k
            &&
32495
36.3k
            (seq = _loop0_82_rule(p))  // _loop0_82
32496
36.3k
        )
32497
9.45k
        {
32498
9.45k
            D(fprintf(stderr, "%*c+ _gather_83[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_82"));
32499
9.45k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
32500
9.45k
            goto done;
32501
9.45k
        }
32502
26.8k
        p->mark = _mark;
32503
26.8k
        D(fprintf(stderr, "%*c%s _gather_83[%d-%d]: %s failed!\n", p->level, ' ',
32504
26.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_82"));
32505
26.8k
    }
32506
0
    _res = NULL;
32507
36.3k
  done:
32508
36.3k
    p->level--;
32509
36.3k
    return _res;
32510
26.8k
}
32511
32512
// _loop1_84: for_if_clause
32513
static asdl_seq *
32514
_loop1_84_rule(Parser *p)
32515
95.9k
{
32516
95.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32517
0
        _Pypegen_stack_overflow(p);
32518
0
    }
32519
95.9k
    if (p->error_indicator) {
32520
0
        p->level--;
32521
0
        return NULL;
32522
0
    }
32523
95.9k
    void *_res = NULL;
32524
95.9k
    int _mark = p->mark;
32525
95.9k
    void **_children = PyMem_Malloc(sizeof(void *));
32526
95.9k
    if (!_children) {
32527
0
        p->error_indicator = 1;
32528
0
        PyErr_NoMemory();
32529
0
        p->level--;
32530
0
        return NULL;
32531
0
    }
32532
95.9k
    Py_ssize_t _children_capacity = 1;
32533
95.9k
    Py_ssize_t _n = 0;
32534
95.9k
    { // for_if_clause
32535
95.9k
        if (p->error_indicator) {
32536
0
            p->level--;
32537
0
            return NULL;
32538
0
        }
32539
95.9k
        D(fprintf(stderr, "%*c> _loop1_84[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause"));
32540
95.9k
        comprehension_ty for_if_clause_var;
32541
95.9k
        while (
32542
106k
            (for_if_clause_var = for_if_clause_rule(p))  // for_if_clause
32543
95.9k
        )
32544
10.9k
        {
32545
10.9k
            _res = for_if_clause_var;
32546
10.9k
            if (_n == _children_capacity) {
32547
762
                _children_capacity *= 2;
32548
762
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32549
762
                if (!_new_children) {
32550
0
                    PyMem_Free(_children);
32551
0
                    p->error_indicator = 1;
32552
0
                    PyErr_NoMemory();
32553
0
                    p->level--;
32554
0
                    return NULL;
32555
0
                }
32556
762
                _children = _new_children;
32557
762
            }
32558
10.9k
            _children[_n++] = _res;
32559
10.9k
            _mark = p->mark;
32560
10.9k
        }
32561
95.9k
        p->mark = _mark;
32562
95.9k
        D(fprintf(stderr, "%*c%s _loop1_84[%d-%d]: %s failed!\n", p->level, ' ',
32563
95.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause"));
32564
95.9k
    }
32565
95.9k
    if (_n == 0 || p->error_indicator) {
32566
86.0k
        PyMem_Free(_children);
32567
86.0k
        p->level--;
32568
86.0k
        return NULL;
32569
86.0k
    }
32570
9.94k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32571
9.94k
    if (!_seq) {
32572
0
        PyMem_Free(_children);
32573
0
        p->error_indicator = 1;
32574
0
        PyErr_NoMemory();
32575
0
        p->level--;
32576
0
        return NULL;
32577
0
    }
32578
20.7k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32579
9.94k
    PyMem_Free(_children);
32580
9.94k
    p->level--;
32581
9.94k
    return _seq;
32582
9.94k
}
32583
32584
// _loop0_85: ('if' disjunction)
32585
static asdl_seq *
32586
_loop0_85_rule(Parser *p)
32587
10.9k
{
32588
10.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32589
0
        _Pypegen_stack_overflow(p);
32590
0
    }
32591
10.9k
    if (p->error_indicator) {
32592
0
        p->level--;
32593
0
        return NULL;
32594
0
    }
32595
10.9k
    void *_res = NULL;
32596
10.9k
    int _mark = p->mark;
32597
10.9k
    void **_children = PyMem_Malloc(sizeof(void *));
32598
10.9k
    if (!_children) {
32599
0
        p->error_indicator = 1;
32600
0
        PyErr_NoMemory();
32601
0
        p->level--;
32602
0
        return NULL;
32603
0
    }
32604
10.9k
    Py_ssize_t _children_capacity = 1;
32605
10.9k
    Py_ssize_t _n = 0;
32606
10.9k
    { // ('if' disjunction)
32607
10.9k
        if (p->error_indicator) {
32608
0
            p->level--;
32609
0
            return NULL;
32610
0
        }
32611
10.9k
        D(fprintf(stderr, "%*c> _loop0_85[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)"));
32612
10.9k
        void *_tmp_162_var;
32613
10.9k
        while (
32614
16.2k
            (_tmp_162_var = _tmp_162_rule(p))  // 'if' disjunction
32615
10.9k
        )
32616
5.29k
        {
32617
5.29k
            _res = _tmp_162_var;
32618
5.29k
            if (_n == _children_capacity) {
32619
2.12k
                _children_capacity *= 2;
32620
2.12k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32621
2.12k
                if (!_new_children) {
32622
0
                    PyMem_Free(_children);
32623
0
                    p->error_indicator = 1;
32624
0
                    PyErr_NoMemory();
32625
0
                    p->level--;
32626
0
                    return NULL;
32627
0
                }
32628
2.12k
                _children = _new_children;
32629
2.12k
            }
32630
5.29k
            _children[_n++] = _res;
32631
5.29k
            _mark = p->mark;
32632
5.29k
        }
32633
10.9k
        p->mark = _mark;
32634
10.9k
        D(fprintf(stderr, "%*c%s _loop0_85[%d-%d]: %s failed!\n", p->level, ' ',
32635
10.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('if' disjunction)"));
32636
10.9k
    }
32637
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32638
10.9k
    if (!_seq) {
32639
0
        PyMem_Free(_children);
32640
0
        p->error_indicator = 1;
32641
0
        PyErr_NoMemory();
32642
0
        p->level--;
32643
0
        return NULL;
32644
0
    }
32645
16.2k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32646
10.9k
    PyMem_Free(_children);
32647
10.9k
    p->level--;
32648
10.9k
    return _seq;
32649
10.9k
}
32650
32651
// _tmp_86: assignment_expression | expression !':='
32652
static void *
32653
_tmp_86_rule(Parser *p)
32654
185k
{
32655
185k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32656
1
        _Pypegen_stack_overflow(p);
32657
1
    }
32658
185k
    if (p->error_indicator) {
32659
1
        p->level--;
32660
1
        return NULL;
32661
1
    }
32662
185k
    void * _res = NULL;
32663
185k
    int _mark = p->mark;
32664
185k
    { // assignment_expression
32665
185k
        if (p->error_indicator) {
32666
0
            p->level--;
32667
0
            return NULL;
32668
0
        }
32669
185k
        D(fprintf(stderr, "%*c> _tmp_86[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
32670
185k
        expr_ty assignment_expression_var;
32671
185k
        if (
32672
185k
            (assignment_expression_var = assignment_expression_rule(p))  // assignment_expression
32673
185k
        )
32674
452
        {
32675
452
            D(fprintf(stderr, "%*c+ _tmp_86[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
32676
452
            _res = assignment_expression_var;
32677
452
            goto done;
32678
452
        }
32679
184k
        p->mark = _mark;
32680
184k
        D(fprintf(stderr, "%*c%s _tmp_86[%d-%d]: %s failed!\n", p->level, ' ',
32681
184k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression"));
32682
184k
    }
32683
0
    { // expression !':='
32684
184k
        if (p->error_indicator) {
32685
144
            p->level--;
32686
144
            return NULL;
32687
144
        }
32688
184k
        D(fprintf(stderr, "%*c> _tmp_86[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
32689
184k
        expr_ty expression_var;
32690
184k
        if (
32691
184k
            (expression_var = expression_rule(p))  // expression
32692
184k
            &&
32693
184k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53)  // token=':='
32694
184k
        )
32695
102k
        {
32696
102k
            D(fprintf(stderr, "%*c+ _tmp_86[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='"));
32697
102k
            _res = expression_var;
32698
102k
            goto done;
32699
102k
        }
32700
81.7k
        p->mark = _mark;
32701
81.7k
        D(fprintf(stderr, "%*c%s _tmp_86[%d-%d]: %s failed!\n", p->level, ' ',
32702
81.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
32703
81.7k
    }
32704
0
    _res = NULL;
32705
185k
  done:
32706
185k
    p->level--;
32707
185k
    return _res;
32708
81.7k
}
32709
32710
// _loop0_87: ',' (starred_expression | (assignment_expression | expression !':=') !'=')
32711
static asdl_seq *
32712
_loop0_87_rule(Parser *p)
32713
38.1k
{
32714
38.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32715
0
        _Pypegen_stack_overflow(p);
32716
0
    }
32717
38.1k
    if (p->error_indicator) {
32718
0
        p->level--;
32719
0
        return NULL;
32720
0
    }
32721
38.1k
    void *_res = NULL;
32722
38.1k
    int _mark = p->mark;
32723
38.1k
    void **_children = PyMem_Malloc(sizeof(void *));
32724
38.1k
    if (!_children) {
32725
0
        p->error_indicator = 1;
32726
0
        PyErr_NoMemory();
32727
0
        p->level--;
32728
0
        return NULL;
32729
0
    }
32730
38.1k
    Py_ssize_t _children_capacity = 1;
32731
38.1k
    Py_ssize_t _n = 0;
32732
38.1k
    { // ',' (starred_expression | (assignment_expression | expression !':=') !'=')
32733
38.1k
        if (p->error_indicator) {
32734
0
            p->level--;
32735
0
            return NULL;
32736
0
        }
32737
38.1k
        D(fprintf(stderr, "%*c> _loop0_87[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (starred_expression | (assignment_expression | expression !':=') !'=')"));
32738
38.1k
        Token * _literal;
32739
38.1k
        void *elem;
32740
38.1k
        while (
32741
50.3k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
32742
50.3k
            &&
32743
50.3k
            (elem = _tmp_163_rule(p))  // starred_expression | (assignment_expression | expression !':=') !'='
32744
38.1k
        )
32745
12.1k
        {
32746
12.1k
            _res = elem;
32747
12.1k
            if (_res == NULL && PyErr_Occurred()) {
32748
0
                p->error_indicator = 1;
32749
0
                PyMem_Free(_children);
32750
0
                p->level--;
32751
0
                return NULL;
32752
0
            }
32753
12.1k
            if (_n == _children_capacity) {
32754
3.03k
                _children_capacity *= 2;
32755
3.03k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32756
3.03k
                if (!_new_children) {
32757
0
                    PyMem_Free(_children);
32758
0
                    p->error_indicator = 1;
32759
0
                    PyErr_NoMemory();
32760
0
                    p->level--;
32761
0
                    return NULL;
32762
0
                }
32763
3.03k
                _children = _new_children;
32764
3.03k
            }
32765
12.1k
            _children[_n++] = _res;
32766
12.1k
            _mark = p->mark;
32767
12.1k
        }
32768
38.1k
        p->mark = _mark;
32769
38.1k
        D(fprintf(stderr, "%*c%s _loop0_87[%d-%d]: %s failed!\n", p->level, ' ',
32770
38.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (starred_expression | (assignment_expression | expression !':=') !'=')"));
32771
38.1k
    }
32772
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32773
38.1k
    if (!_seq) {
32774
0
        PyMem_Free(_children);
32775
0
        p->error_indicator = 1;
32776
0
        PyErr_NoMemory();
32777
0
        p->level--;
32778
0
        return NULL;
32779
0
    }
32780
50.3k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32781
38.1k
    PyMem_Free(_children);
32782
38.1k
    p->level--;
32783
38.1k
    return _seq;
32784
38.1k
}
32785
32786
// _gather_88:
32787
//     | (starred_expression | (assignment_expression | expression !':=') !'=') _loop0_87
32788
static asdl_seq *
32789
_gather_88_rule(Parser *p)
32790
82.7k
{
32791
82.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32792
0
        _Pypegen_stack_overflow(p);
32793
0
    }
32794
82.7k
    if (p->error_indicator) {
32795
0
        p->level--;
32796
0
        return NULL;
32797
0
    }
32798
82.7k
    asdl_seq * _res = NULL;
32799
82.7k
    int _mark = p->mark;
32800
82.7k
    { // (starred_expression | (assignment_expression | expression !':=') !'=') _loop0_87
32801
82.7k
        if (p->error_indicator) {
32802
0
            p->level--;
32803
0
            return NULL;
32804
0
        }
32805
82.7k
        D(fprintf(stderr, "%*c> _gather_88[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_87"));
32806
82.7k
        void *elem;
32807
82.7k
        asdl_seq * seq;
32808
82.7k
        if (
32809
82.7k
            (elem = _tmp_163_rule(p))  // starred_expression | (assignment_expression | expression !':=') !'='
32810
82.7k
            &&
32811
82.7k
            (seq = _loop0_87_rule(p))  // _loop0_87
32812
82.7k
        )
32813
38.1k
        {
32814
38.1k
            D(fprintf(stderr, "%*c+ _gather_88[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_87"));
32815
38.1k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
32816
38.1k
            goto done;
32817
38.1k
        }
32818
44.6k
        p->mark = _mark;
32819
44.6k
        D(fprintf(stderr, "%*c%s _gather_88[%d-%d]: %s failed!\n", p->level, ' ',
32820
44.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_87"));
32821
44.6k
    }
32822
0
    _res = NULL;
32823
82.7k
  done:
32824
82.7k
    p->level--;
32825
82.7k
    return _res;
32826
44.6k
}
32827
32828
// _tmp_89: ',' kwargs
32829
static void *
32830
_tmp_89_rule(Parser *p)
32831
35.2k
{
32832
35.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32833
0
        _Pypegen_stack_overflow(p);
32834
0
    }
32835
35.2k
    if (p->error_indicator) {
32836
600
        p->level--;
32837
600
        return NULL;
32838
600
    }
32839
34.6k
    void * _res = NULL;
32840
34.6k
    int _mark = p->mark;
32841
34.6k
    { // ',' kwargs
32842
34.6k
        if (p->error_indicator) {
32843
0
            p->level--;
32844
0
            return NULL;
32845
0
        }
32846
34.6k
        D(fprintf(stderr, "%*c> _tmp_89[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwargs"));
32847
34.6k
        Token * _literal;
32848
34.6k
        asdl_seq* k;
32849
34.6k
        if (
32850
34.6k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
32851
34.6k
            &&
32852
34.6k
            (k = kwargs_rule(p))  // kwargs
32853
34.6k
        )
32854
2.44k
        {
32855
2.44k
            D(fprintf(stderr, "%*c+ _tmp_89[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' kwargs"));
32856
2.44k
            _res = k;
32857
2.44k
            if (_res == NULL && PyErr_Occurred()) {
32858
0
                p->error_indicator = 1;
32859
0
                p->level--;
32860
0
                return NULL;
32861
0
            }
32862
2.44k
            goto done;
32863
2.44k
        }
32864
32.1k
        p->mark = _mark;
32865
32.1k
        D(fprintf(stderr, "%*c%s _tmp_89[%d-%d]: %s failed!\n", p->level, ' ',
32866
32.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwargs"));
32867
32.1k
    }
32868
0
    _res = NULL;
32869
34.6k
  done:
32870
34.6k
    p->level--;
32871
34.6k
    return _res;
32872
32.1k
}
32873
32874
// _loop0_90: ',' kwarg_or_starred
32875
static asdl_seq *
32876
_loop0_90_rule(Parser *p)
32877
16.0k
{
32878
16.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32879
0
        _Pypegen_stack_overflow(p);
32880
0
    }
32881
16.0k
    if (p->error_indicator) {
32882
0
        p->level--;
32883
0
        return NULL;
32884
0
    }
32885
16.0k
    void *_res = NULL;
32886
16.0k
    int _mark = p->mark;
32887
16.0k
    void **_children = PyMem_Malloc(sizeof(void *));
32888
16.0k
    if (!_children) {
32889
0
        p->error_indicator = 1;
32890
0
        PyErr_NoMemory();
32891
0
        p->level--;
32892
0
        return NULL;
32893
0
    }
32894
16.0k
    Py_ssize_t _children_capacity = 1;
32895
16.0k
    Py_ssize_t _n = 0;
32896
16.0k
    { // ',' kwarg_or_starred
32897
16.0k
        if (p->error_indicator) {
32898
0
            p->level--;
32899
0
            return NULL;
32900
0
        }
32901
16.0k
        D(fprintf(stderr, "%*c> _loop0_90[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_starred"));
32902
16.0k
        Token * _literal;
32903
16.0k
        KeywordOrStarred* elem;
32904
16.0k
        while (
32905
27.1k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
32906
27.1k
            &&
32907
27.1k
            (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
32908
16.0k
        )
32909
11.0k
        {
32910
11.0k
            _res = elem;
32911
11.0k
            if (_res == NULL && PyErr_Occurred()) {
32912
0
                p->error_indicator = 1;
32913
0
                PyMem_Free(_children);
32914
0
                p->level--;
32915
0
                return NULL;
32916
0
            }
32917
11.0k
            if (_n == _children_capacity) {
32918
2.75k
                _children_capacity *= 2;
32919
2.75k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32920
2.75k
                if (!_new_children) {
32921
0
                    PyMem_Free(_children);
32922
0
                    p->error_indicator = 1;
32923
0
                    PyErr_NoMemory();
32924
0
                    p->level--;
32925
0
                    return NULL;
32926
0
                }
32927
2.75k
                _children = _new_children;
32928
2.75k
            }
32929
11.0k
            _children[_n++] = _res;
32930
11.0k
            _mark = p->mark;
32931
11.0k
        }
32932
16.0k
        p->mark = _mark;
32933
16.0k
        D(fprintf(stderr, "%*c%s _loop0_90[%d-%d]: %s failed!\n", p->level, ' ',
32934
16.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_starred"));
32935
16.0k
    }
32936
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32937
16.0k
    if (!_seq) {
32938
0
        PyMem_Free(_children);
32939
0
        p->error_indicator = 1;
32940
0
        PyErr_NoMemory();
32941
0
        p->level--;
32942
0
        return NULL;
32943
0
    }
32944
27.1k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32945
16.0k
    PyMem_Free(_children);
32946
16.0k
    p->level--;
32947
16.0k
    return _seq;
32948
16.0k
}
32949
32950
// _gather_91: kwarg_or_starred _loop0_90
32951
static asdl_seq *
32952
_gather_91_rule(Parser *p)
32953
102k
{
32954
102k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32955
0
        _Pypegen_stack_overflow(p);
32956
0
    }
32957
102k
    if (p->error_indicator) {
32958
0
        p->level--;
32959
0
        return NULL;
32960
0
    }
32961
102k
    asdl_seq * _res = NULL;
32962
102k
    int _mark = p->mark;
32963
102k
    { // kwarg_or_starred _loop0_90
32964
102k
        if (p->error_indicator) {
32965
0
            p->level--;
32966
0
            return NULL;
32967
0
        }
32968
102k
        D(fprintf(stderr, "%*c> _gather_91[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_90"));
32969
102k
        KeywordOrStarred* elem;
32970
102k
        asdl_seq * seq;
32971
102k
        if (
32972
102k
            (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
32973
102k
            &&
32974
102k
            (seq = _loop0_90_rule(p))  // _loop0_90
32975
102k
        )
32976
16.0k
        {
32977
16.0k
            D(fprintf(stderr, "%*c+ _gather_91[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_90"));
32978
16.0k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
32979
16.0k
            goto done;
32980
16.0k
        }
32981
86.2k
        p->mark = _mark;
32982
86.2k
        D(fprintf(stderr, "%*c%s _gather_91[%d-%d]: %s failed!\n", p->level, ' ',
32983
86.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_starred _loop0_90"));
32984
86.2k
    }
32985
0
    _res = NULL;
32986
102k
  done:
32987
102k
    p->level--;
32988
102k
    return _res;
32989
86.2k
}
32990
32991
// _loop0_92: ',' kwarg_or_double_starred
32992
static asdl_seq *
32993
_loop0_92_rule(Parser *p)
32994
4.51k
{
32995
4.51k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32996
0
        _Pypegen_stack_overflow(p);
32997
0
    }
32998
4.51k
    if (p->error_indicator) {
32999
0
        p->level--;
33000
0
        return NULL;
33001
0
    }
33002
4.51k
    void *_res = NULL;
33003
4.51k
    int _mark = p->mark;
33004
4.51k
    void **_children = PyMem_Malloc(sizeof(void *));
33005
4.51k
    if (!_children) {
33006
0
        p->error_indicator = 1;
33007
0
        PyErr_NoMemory();
33008
0
        p->level--;
33009
0
        return NULL;
33010
0
    }
33011
4.51k
    Py_ssize_t _children_capacity = 1;
33012
4.51k
    Py_ssize_t _n = 0;
33013
4.51k
    { // ',' kwarg_or_double_starred
33014
4.51k
        if (p->error_indicator) {
33015
0
            p->level--;
33016
0
            return NULL;
33017
0
        }
33018
4.51k
        D(fprintf(stderr, "%*c> _loop0_92[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_double_starred"));
33019
4.51k
        Token * _literal;
33020
4.51k
        KeywordOrStarred* elem;
33021
4.51k
        while (
33022
10.1k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33023
10.1k
            &&
33024
10.1k
            (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
33025
4.51k
        )
33026
5.60k
        {
33027
5.60k
            _res = elem;
33028
5.60k
            if (_res == NULL && PyErr_Occurred()) {
33029
0
                p->error_indicator = 1;
33030
0
                PyMem_Free(_children);
33031
0
                p->level--;
33032
0
                return NULL;
33033
0
            }
33034
5.60k
            if (_n == _children_capacity) {
33035
891
                _children_capacity *= 2;
33036
891
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33037
891
                if (!_new_children) {
33038
0
                    PyMem_Free(_children);
33039
0
                    p->error_indicator = 1;
33040
0
                    PyErr_NoMemory();
33041
0
                    p->level--;
33042
0
                    return NULL;
33043
0
                }
33044
891
                _children = _new_children;
33045
891
            }
33046
5.60k
            _children[_n++] = _res;
33047
5.60k
            _mark = p->mark;
33048
5.60k
        }
33049
4.51k
        p->mark = _mark;
33050
4.51k
        D(fprintf(stderr, "%*c%s _loop0_92[%d-%d]: %s failed!\n", p->level, ' ',
33051
4.51k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_double_starred"));
33052
4.51k
    }
33053
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33054
4.51k
    if (!_seq) {
33055
0
        PyMem_Free(_children);
33056
0
        p->error_indicator = 1;
33057
0
        PyErr_NoMemory();
33058
0
        p->level--;
33059
0
        return NULL;
33060
0
    }
33061
10.1k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33062
4.51k
    PyMem_Free(_children);
33063
4.51k
    p->level--;
33064
4.51k
    return _seq;
33065
4.51k
}
33066
33067
// _gather_93: kwarg_or_double_starred _loop0_92
33068
static asdl_seq *
33069
_gather_93_rule(Parser *p)
33070
45.9k
{
33071
45.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33072
0
        _Pypegen_stack_overflow(p);
33073
0
    }
33074
45.9k
    if (p->error_indicator) {
33075
238
        p->level--;
33076
238
        return NULL;
33077
238
    }
33078
45.7k
    asdl_seq * _res = NULL;
33079
45.7k
    int _mark = p->mark;
33080
45.7k
    { // kwarg_or_double_starred _loop0_92
33081
45.7k
        if (p->error_indicator) {
33082
0
            p->level--;
33083
0
            return NULL;
33084
0
        }
33085
45.7k
        D(fprintf(stderr, "%*c> _gather_93[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_92"));
33086
45.7k
        KeywordOrStarred* elem;
33087
45.7k
        asdl_seq * seq;
33088
45.7k
        if (
33089
45.7k
            (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
33090
45.7k
            &&
33091
45.7k
            (seq = _loop0_92_rule(p))  // _loop0_92
33092
45.7k
        )
33093
4.51k
        {
33094
4.51k
            D(fprintf(stderr, "%*c+ _gather_93[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_92"));
33095
4.51k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
33096
4.51k
            goto done;
33097
4.51k
        }
33098
41.2k
        p->mark = _mark;
33099
41.2k
        D(fprintf(stderr, "%*c%s _gather_93[%d-%d]: %s failed!\n", p->level, ' ',
33100
41.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_double_starred _loop0_92"));
33101
41.2k
    }
33102
0
    _res = NULL;
33103
45.7k
  done:
33104
45.7k
    p->level--;
33105
45.7k
    return _res;
33106
41.2k
}
33107
33108
// _loop0_94: (',' star_target)
33109
static asdl_seq *
33110
_loop0_94_rule(Parser *p)
33111
17.3k
{
33112
17.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33113
0
        _Pypegen_stack_overflow(p);
33114
0
    }
33115
17.3k
    if (p->error_indicator) {
33116
0
        p->level--;
33117
0
        return NULL;
33118
0
    }
33119
17.3k
    void *_res = NULL;
33120
17.3k
    int _mark = p->mark;
33121
17.3k
    void **_children = PyMem_Malloc(sizeof(void *));
33122
17.3k
    if (!_children) {
33123
0
        p->error_indicator = 1;
33124
0
        PyErr_NoMemory();
33125
0
        p->level--;
33126
0
        return NULL;
33127
0
    }
33128
17.3k
    Py_ssize_t _children_capacity = 1;
33129
17.3k
    Py_ssize_t _n = 0;
33130
17.3k
    { // (',' star_target)
33131
17.3k
        if (p->error_indicator) {
33132
0
            p->level--;
33133
0
            return NULL;
33134
0
        }
33135
17.3k
        D(fprintf(stderr, "%*c> _loop0_94[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)"));
33136
17.3k
        void *_tmp_164_var;
33137
17.3k
        while (
33138
26.4k
            (_tmp_164_var = _tmp_164_rule(p))  // ',' star_target
33139
17.3k
        )
33140
9.09k
        {
33141
9.09k
            _res = _tmp_164_var;
33142
9.09k
            if (_n == _children_capacity) {
33143
1.65k
                _children_capacity *= 2;
33144
1.65k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33145
1.65k
                if (!_new_children) {
33146
0
                    PyMem_Free(_children);
33147
0
                    p->error_indicator = 1;
33148
0
                    PyErr_NoMemory();
33149
0
                    p->level--;
33150
0
                    return NULL;
33151
0
                }
33152
1.65k
                _children = _new_children;
33153
1.65k
            }
33154
9.09k
            _children[_n++] = _res;
33155
9.09k
            _mark = p->mark;
33156
9.09k
        }
33157
17.3k
        p->mark = _mark;
33158
17.3k
        D(fprintf(stderr, "%*c%s _loop0_94[%d-%d]: %s failed!\n", p->level, ' ',
33159
17.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_target)"));
33160
17.3k
    }
33161
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33162
17.3k
    if (!_seq) {
33163
0
        PyMem_Free(_children);
33164
0
        p->error_indicator = 1;
33165
0
        PyErr_NoMemory();
33166
0
        p->level--;
33167
0
        return NULL;
33168
0
    }
33169
26.4k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33170
17.3k
    PyMem_Free(_children);
33171
17.3k
    p->level--;
33172
17.3k
    return _seq;
33173
17.3k
}
33174
33175
// _loop0_95: ',' star_target
33176
static asdl_seq *
33177
_loop0_95_rule(Parser *p)
33178
2.77k
{
33179
2.77k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33180
0
        _Pypegen_stack_overflow(p);
33181
0
    }
33182
2.77k
    if (p->error_indicator) {
33183
0
        p->level--;
33184
0
        return NULL;
33185
0
    }
33186
2.77k
    void *_res = NULL;
33187
2.77k
    int _mark = p->mark;
33188
2.77k
    void **_children = PyMem_Malloc(sizeof(void *));
33189
2.77k
    if (!_children) {
33190
0
        p->error_indicator = 1;
33191
0
        PyErr_NoMemory();
33192
0
        p->level--;
33193
0
        return NULL;
33194
0
    }
33195
2.77k
    Py_ssize_t _children_capacity = 1;
33196
2.77k
    Py_ssize_t _n = 0;
33197
2.77k
    { // ',' star_target
33198
2.77k
        if (p->error_indicator) {
33199
0
            p->level--;
33200
0
            return NULL;
33201
0
        }
33202
2.77k
        D(fprintf(stderr, "%*c> _loop0_95[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
33203
2.77k
        Token * _literal;
33204
2.77k
        expr_ty elem;
33205
2.77k
        while (
33206
6.33k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33207
6.33k
            &&
33208
6.33k
            (elem = star_target_rule(p))  // star_target
33209
2.77k
        )
33210
3.55k
        {
33211
3.55k
            _res = elem;
33212
3.55k
            if (_res == NULL && PyErr_Occurred()) {
33213
0
                p->error_indicator = 1;
33214
0
                PyMem_Free(_children);
33215
0
                p->level--;
33216
0
                return NULL;
33217
0
            }
33218
3.55k
            if (_n == _children_capacity) {
33219
1.02k
                _children_capacity *= 2;
33220
1.02k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33221
1.02k
                if (!_new_children) {
33222
0
                    PyMem_Free(_children);
33223
0
                    p->error_indicator = 1;
33224
0
                    PyErr_NoMemory();
33225
0
                    p->level--;
33226
0
                    return NULL;
33227
0
                }
33228
1.02k
                _children = _new_children;
33229
1.02k
            }
33230
3.55k
            _children[_n++] = _res;
33231
3.55k
            _mark = p->mark;
33232
3.55k
        }
33233
2.77k
        p->mark = _mark;
33234
2.77k
        D(fprintf(stderr, "%*c%s _loop0_95[%d-%d]: %s failed!\n", p->level, ' ',
33235
2.77k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
33236
2.77k
    }
33237
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33238
2.77k
    if (!_seq) {
33239
0
        PyMem_Free(_children);
33240
0
        p->error_indicator = 1;
33241
0
        PyErr_NoMemory();
33242
0
        p->level--;
33243
0
        return NULL;
33244
0
    }
33245
6.33k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33246
2.77k
    PyMem_Free(_children);
33247
2.77k
    p->level--;
33248
2.77k
    return _seq;
33249
2.77k
}
33250
33251
// _gather_96: star_target _loop0_95
33252
static asdl_seq *
33253
_gather_96_rule(Parser *p)
33254
10.0k
{
33255
10.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33256
0
        _Pypegen_stack_overflow(p);
33257
0
    }
33258
10.0k
    if (p->error_indicator) {
33259
0
        p->level--;
33260
0
        return NULL;
33261
0
    }
33262
10.0k
    asdl_seq * _res = NULL;
33263
10.0k
    int _mark = p->mark;
33264
10.0k
    { // star_target _loop0_95
33265
10.0k
        if (p->error_indicator) {
33266
0
            p->level--;
33267
0
            return NULL;
33268
0
        }
33269
10.0k
        D(fprintf(stderr, "%*c> _gather_96[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target _loop0_95"));
33270
10.0k
        expr_ty elem;
33271
10.0k
        asdl_seq * seq;
33272
10.0k
        if (
33273
10.0k
            (elem = star_target_rule(p))  // star_target
33274
10.0k
            &&
33275
10.0k
            (seq = _loop0_95_rule(p))  // _loop0_95
33276
10.0k
        )
33277
2.77k
        {
33278
2.77k
            D(fprintf(stderr, "%*c+ _gather_96[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target _loop0_95"));
33279
2.77k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
33280
2.77k
            goto done;
33281
2.77k
        }
33282
7.31k
        p->mark = _mark;
33283
7.31k
        D(fprintf(stderr, "%*c%s _gather_96[%d-%d]: %s failed!\n", p->level, ' ',
33284
7.31k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target _loop0_95"));
33285
7.31k
    }
33286
0
    _res = NULL;
33287
10.0k
  done:
33288
10.0k
    p->level--;
33289
10.0k
    return _res;
33290
7.31k
}
33291
33292
// _loop1_97: (',' star_target)
33293
static asdl_seq *
33294
_loop1_97_rule(Parser *p)
33295
4.43k
{
33296
4.43k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33297
0
        _Pypegen_stack_overflow(p);
33298
0
    }
33299
4.43k
    if (p->error_indicator) {
33300
0
        p->level--;
33301
0
        return NULL;
33302
0
    }
33303
4.43k
    void *_res = NULL;
33304
4.43k
    int _mark = p->mark;
33305
4.43k
    void **_children = PyMem_Malloc(sizeof(void *));
33306
4.43k
    if (!_children) {
33307
0
        p->error_indicator = 1;
33308
0
        PyErr_NoMemory();
33309
0
        p->level--;
33310
0
        return NULL;
33311
0
    }
33312
4.43k
    Py_ssize_t _children_capacity = 1;
33313
4.43k
    Py_ssize_t _n = 0;
33314
4.43k
    { // (',' star_target)
33315
4.43k
        if (p->error_indicator) {
33316
0
            p->level--;
33317
0
            return NULL;
33318
0
        }
33319
4.43k
        D(fprintf(stderr, "%*c> _loop1_97[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)"));
33320
4.43k
        void *_tmp_164_var;
33321
4.43k
        while (
33322
6.27k
            (_tmp_164_var = _tmp_164_rule(p))  // ',' star_target
33323
4.43k
        )
33324
1.83k
        {
33325
1.83k
            _res = _tmp_164_var;
33326
1.83k
            if (_n == _children_capacity) {
33327
650
                _children_capacity *= 2;
33328
650
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33329
650
                if (!_new_children) {
33330
0
                    PyMem_Free(_children);
33331
0
                    p->error_indicator = 1;
33332
0
                    PyErr_NoMemory();
33333
0
                    p->level--;
33334
0
                    return NULL;
33335
0
                }
33336
650
                _children = _new_children;
33337
650
            }
33338
1.83k
            _children[_n++] = _res;
33339
1.83k
            _mark = p->mark;
33340
1.83k
        }
33341
4.43k
        p->mark = _mark;
33342
4.43k
        D(fprintf(stderr, "%*c%s _loop1_97[%d-%d]: %s failed!\n", p->level, ' ',
33343
4.43k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_target)"));
33344
4.43k
    }
33345
4.43k
    if (_n == 0 || p->error_indicator) {
33346
3.75k
        PyMem_Free(_children);
33347
3.75k
        p->level--;
33348
3.75k
        return NULL;
33349
3.75k
    }
33350
680
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33351
680
    if (!_seq) {
33352
0
        PyMem_Free(_children);
33353
0
        p->error_indicator = 1;
33354
0
        PyErr_NoMemory();
33355
0
        p->level--;
33356
0
        return NULL;
33357
0
    }
33358
2.51k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33359
680
    PyMem_Free(_children);
33360
680
    p->level--;
33361
680
    return _seq;
33362
680
}
33363
33364
// _tmp_98: !'*' star_target
33365
static void *
33366
_tmp_98_rule(Parser *p)
33367
3.28k
{
33368
3.28k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33369
0
        _Pypegen_stack_overflow(p);
33370
0
    }
33371
3.28k
    if (p->error_indicator) {
33372
0
        p->level--;
33373
0
        return NULL;
33374
0
    }
33375
3.28k
    void * _res = NULL;
33376
3.28k
    int _mark = p->mark;
33377
3.28k
    { // !'*' star_target
33378
3.28k
        if (p->error_indicator) {
33379
0
            p->level--;
33380
0
            return NULL;
33381
0
        }
33382
3.28k
        D(fprintf(stderr, "%*c> _tmp_98[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!'*' star_target"));
33383
3.28k
        expr_ty star_target_var;
33384
3.28k
        if (
33385
3.28k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 16)  // token='*'
33386
3.28k
            &&
33387
3.28k
            (star_target_var = star_target_rule(p))  // star_target
33388
3.28k
        )
33389
2.04k
        {
33390
2.04k
            D(fprintf(stderr, "%*c+ _tmp_98[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!'*' star_target"));
33391
2.04k
            _res = star_target_var;
33392
2.04k
            goto done;
33393
2.04k
        }
33394
1.23k
        p->mark = _mark;
33395
1.23k
        D(fprintf(stderr, "%*c%s _tmp_98[%d-%d]: %s failed!\n", p->level, ' ',
33396
1.23k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!'*' star_target"));
33397
1.23k
    }
33398
0
    _res = NULL;
33399
3.28k
  done:
33400
3.28k
    p->level--;
33401
3.28k
    return _res;
33402
1.23k
}
33403
33404
// _loop0_99: ',' del_target
33405
static asdl_seq *
33406
_loop0_99_rule(Parser *p)
33407
2.96k
{
33408
2.96k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33409
0
        _Pypegen_stack_overflow(p);
33410
0
    }
33411
2.96k
    if (p->error_indicator) {
33412
0
        p->level--;
33413
0
        return NULL;
33414
0
    }
33415
2.96k
    void *_res = NULL;
33416
2.96k
    int _mark = p->mark;
33417
2.96k
    void **_children = PyMem_Malloc(sizeof(void *));
33418
2.96k
    if (!_children) {
33419
0
        p->error_indicator = 1;
33420
0
        PyErr_NoMemory();
33421
0
        p->level--;
33422
0
        return NULL;
33423
0
    }
33424
2.96k
    Py_ssize_t _children_capacity = 1;
33425
2.96k
    Py_ssize_t _n = 0;
33426
2.96k
    { // ',' del_target
33427
2.96k
        if (p->error_indicator) {
33428
0
            p->level--;
33429
0
            return NULL;
33430
0
        }
33431
2.96k
        D(fprintf(stderr, "%*c> _loop0_99[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' del_target"));
33432
2.96k
        Token * _literal;
33433
2.96k
        expr_ty elem;
33434
2.96k
        while (
33435
8.10k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33436
8.10k
            &&
33437
8.10k
            (elem = del_target_rule(p))  // del_target
33438
2.96k
        )
33439
5.14k
        {
33440
5.14k
            _res = elem;
33441
5.14k
            if (_res == NULL && PyErr_Occurred()) {
33442
0
                p->error_indicator = 1;
33443
0
                PyMem_Free(_children);
33444
0
                p->level--;
33445
0
                return NULL;
33446
0
            }
33447
5.14k
            if (_n == _children_capacity) {
33448
1.36k
                _children_capacity *= 2;
33449
1.36k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33450
1.36k
                if (!_new_children) {
33451
0
                    PyMem_Free(_children);
33452
0
                    p->error_indicator = 1;
33453
0
                    PyErr_NoMemory();
33454
0
                    p->level--;
33455
0
                    return NULL;
33456
0
                }
33457
1.36k
                _children = _new_children;
33458
1.36k
            }
33459
5.14k
            _children[_n++] = _res;
33460
5.14k
            _mark = p->mark;
33461
5.14k
        }
33462
2.96k
        p->mark = _mark;
33463
2.96k
        D(fprintf(stderr, "%*c%s _loop0_99[%d-%d]: %s failed!\n", p->level, ' ',
33464
2.96k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' del_target"));
33465
2.96k
    }
33466
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33467
2.96k
    if (!_seq) {
33468
0
        PyMem_Free(_children);
33469
0
        p->error_indicator = 1;
33470
0
        PyErr_NoMemory();
33471
0
        p->level--;
33472
0
        return NULL;
33473
0
    }
33474
8.10k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33475
2.96k
    PyMem_Free(_children);
33476
2.96k
    p->level--;
33477
2.96k
    return _seq;
33478
2.96k
}
33479
33480
// _gather_100: del_target _loop0_99
33481
static asdl_seq *
33482
_gather_100_rule(Parser *p)
33483
5.84k
{
33484
5.84k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33485
0
        _Pypegen_stack_overflow(p);
33486
0
    }
33487
5.84k
    if (p->error_indicator) {
33488
0
        p->level--;
33489
0
        return NULL;
33490
0
    }
33491
5.84k
    asdl_seq * _res = NULL;
33492
5.84k
    int _mark = p->mark;
33493
5.84k
    { // del_target _loop0_99
33494
5.84k
        if (p->error_indicator) {
33495
0
            p->level--;
33496
0
            return NULL;
33497
0
        }
33498
5.84k
        D(fprintf(stderr, "%*c> _gather_100[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "del_target _loop0_99"));
33499
5.84k
        expr_ty elem;
33500
5.84k
        asdl_seq * seq;
33501
5.84k
        if (
33502
5.84k
            (elem = del_target_rule(p))  // del_target
33503
5.84k
            &&
33504
5.84k
            (seq = _loop0_99_rule(p))  // _loop0_99
33505
5.84k
        )
33506
2.96k
        {
33507
2.96k
            D(fprintf(stderr, "%*c+ _gather_100[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "del_target _loop0_99"));
33508
2.96k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
33509
2.96k
            goto done;
33510
2.96k
        }
33511
2.88k
        p->mark = _mark;
33512
2.88k
        D(fprintf(stderr, "%*c%s _gather_100[%d-%d]: %s failed!\n", p->level, ' ',
33513
2.88k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_target _loop0_99"));
33514
2.88k
    }
33515
0
    _res = NULL;
33516
5.84k
  done:
33517
5.84k
    p->level--;
33518
5.84k
    return _res;
33519
2.88k
}
33520
33521
// _loop0_101: ',' expression
33522
static asdl_seq *
33523
_loop0_101_rule(Parser *p)
33524
0
{
33525
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33526
0
        _Pypegen_stack_overflow(p);
33527
0
    }
33528
0
    if (p->error_indicator) {
33529
0
        p->level--;
33530
0
        return NULL;
33531
0
    }
33532
0
    void *_res = NULL;
33533
0
    int _mark = p->mark;
33534
0
    void **_children = PyMem_Malloc(sizeof(void *));
33535
0
    if (!_children) {
33536
0
        p->error_indicator = 1;
33537
0
        PyErr_NoMemory();
33538
0
        p->level--;
33539
0
        return NULL;
33540
0
    }
33541
0
    Py_ssize_t _children_capacity = 1;
33542
0
    Py_ssize_t _n = 0;
33543
0
    { // ',' expression
33544
0
        if (p->error_indicator) {
33545
0
            p->level--;
33546
0
            return NULL;
33547
0
        }
33548
0
        D(fprintf(stderr, "%*c> _loop0_101[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
33549
0
        Token * _literal;
33550
0
        expr_ty elem;
33551
0
        while (
33552
0
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33553
0
            &&
33554
0
            (elem = expression_rule(p))  // expression
33555
0
        )
33556
0
        {
33557
0
            _res = elem;
33558
0
            if (_res == NULL && PyErr_Occurred()) {
33559
0
                p->error_indicator = 1;
33560
0
                PyMem_Free(_children);
33561
0
                p->level--;
33562
0
                return NULL;
33563
0
            }
33564
0
            if (_n == _children_capacity) {
33565
0
                _children_capacity *= 2;
33566
0
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33567
0
                if (!_new_children) {
33568
0
                    PyMem_Free(_children);
33569
0
                    p->error_indicator = 1;
33570
0
                    PyErr_NoMemory();
33571
0
                    p->level--;
33572
0
                    return NULL;
33573
0
                }
33574
0
                _children = _new_children;
33575
0
            }
33576
0
            _children[_n++] = _res;
33577
0
            _mark = p->mark;
33578
0
        }
33579
0
        p->mark = _mark;
33580
0
        D(fprintf(stderr, "%*c%s _loop0_101[%d-%d]: %s failed!\n", p->level, ' ',
33581
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
33582
0
    }
33583
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33584
0
    if (!_seq) {
33585
0
        PyMem_Free(_children);
33586
0
        p->error_indicator = 1;
33587
0
        PyErr_NoMemory();
33588
0
        p->level--;
33589
0
        return NULL;
33590
0
    }
33591
0
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33592
0
    PyMem_Free(_children);
33593
0
    p->level--;
33594
0
    return _seq;
33595
0
}
33596
33597
// _gather_102: expression _loop0_101
33598
static asdl_seq *
33599
_gather_102_rule(Parser *p)
33600
0
{
33601
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33602
0
        _Pypegen_stack_overflow(p);
33603
0
    }
33604
0
    if (p->error_indicator) {
33605
0
        p->level--;
33606
0
        return NULL;
33607
0
    }
33608
0
    asdl_seq * _res = NULL;
33609
0
    int _mark = p->mark;
33610
0
    { // expression _loop0_101
33611
0
        if (p->error_indicator) {
33612
0
            p->level--;
33613
0
            return NULL;
33614
0
        }
33615
0
        D(fprintf(stderr, "%*c> _gather_102[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_101"));
33616
0
        expr_ty elem;
33617
0
        asdl_seq * seq;
33618
0
        if (
33619
0
            (elem = expression_rule(p))  // expression
33620
0
            &&
33621
0
            (seq = _loop0_101_rule(p))  // _loop0_101
33622
0
        )
33623
0
        {
33624
0
            D(fprintf(stderr, "%*c+ _gather_102[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_101"));
33625
0
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
33626
0
            goto done;
33627
0
        }
33628
0
        p->mark = _mark;
33629
0
        D(fprintf(stderr, "%*c%s _gather_102[%d-%d]: %s failed!\n", p->level, ' ',
33630
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_101"));
33631
0
    }
33632
0
    _res = NULL;
33633
0
  done:
33634
0
    p->level--;
33635
0
    return _res;
33636
0
}
33637
33638
// _tmp_103: NEWLINE INDENT
33639
static void *
33640
_tmp_103_rule(Parser *p)
33641
0
{
33642
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33643
0
        _Pypegen_stack_overflow(p);
33644
0
    }
33645
0
    if (p->error_indicator) {
33646
0
        p->level--;
33647
0
        return NULL;
33648
0
    }
33649
0
    void * _res = NULL;
33650
0
    int _mark = p->mark;
33651
0
    { // NEWLINE INDENT
33652
0
        if (p->error_indicator) {
33653
0
            p->level--;
33654
0
            return NULL;
33655
0
        }
33656
0
        D(fprintf(stderr, "%*c> _tmp_103[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT"));
33657
0
        Token * indent_var;
33658
0
        Token * newline_var;
33659
0
        if (
33660
0
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
33661
0
            &&
33662
0
            (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
33663
0
        )
33664
0
        {
33665
0
            D(fprintf(stderr, "%*c+ _tmp_103[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT"));
33666
0
            _res = _PyPegen_dummy_name(p, newline_var, indent_var);
33667
0
            goto done;
33668
0
        }
33669
0
        p->mark = _mark;
33670
0
        D(fprintf(stderr, "%*c%s _tmp_103[%d-%d]: %s failed!\n", p->level, ' ',
33671
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE INDENT"));
33672
0
    }
33673
0
    _res = NULL;
33674
0
  done:
33675
0
    p->level--;
33676
0
    return _res;
33677
0
}
33678
33679
// _tmp_104:
33680
//     | (','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs)
33681
//     | kwargs
33682
static void *
33683
_tmp_104_rule(Parser *p)
33684
8.13k
{
33685
8.13k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33686
0
        _Pypegen_stack_overflow(p);
33687
0
    }
33688
8.13k
    if (p->error_indicator) {
33689
0
        p->level--;
33690
0
        return NULL;
33691
0
    }
33692
8.13k
    void * _res = NULL;
33693
8.13k
    int _mark = p->mark;
33694
8.13k
    { // (','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs)
33695
8.13k
        if (p->error_indicator) {
33696
0
            p->level--;
33697
0
            return NULL;
33698
0
        }
33699
8.13k
        D(fprintf(stderr, "%*c> _tmp_104[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs)"));
33700
8.13k
        void *_tmp_165_var;
33701
8.13k
        if (
33702
8.13k
            (_tmp_165_var = _tmp_165_rule(p))  // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs
33703
8.13k
        )
33704
334
        {
33705
334
            D(fprintf(stderr, "%*c+ _tmp_104[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs)"));
33706
334
            _res = _tmp_165_var;
33707
334
            goto done;
33708
334
        }
33709
7.80k
        p->mark = _mark;
33710
7.80k
        D(fprintf(stderr, "%*c%s _tmp_104[%d-%d]: %s failed!\n", p->level, ' ',
33711
7.80k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs)"));
33712
7.80k
    }
33713
0
    { // kwargs
33714
7.80k
        if (p->error_indicator) {
33715
0
            p->level--;
33716
0
            return NULL;
33717
0
        }
33718
7.80k
        D(fprintf(stderr, "%*c> _tmp_104[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwargs"));
33719
7.80k
        asdl_seq* kwargs_var;
33720
7.80k
        if (
33721
7.80k
            (kwargs_var = kwargs_rule(p))  // kwargs
33722
7.80k
        )
33723
2.45k
        {
33724
2.45k
            D(fprintf(stderr, "%*c+ _tmp_104[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwargs"));
33725
2.45k
            _res = kwargs_var;
33726
2.45k
            goto done;
33727
2.45k
        }
33728
5.34k
        p->mark = _mark;
33729
5.34k
        D(fprintf(stderr, "%*c%s _tmp_104[%d-%d]: %s failed!\n", p->level, ' ',
33730
5.34k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwargs"));
33731
5.34k
    }
33732
0
    _res = NULL;
33733
8.13k
  done:
33734
8.13k
    p->level--;
33735
8.13k
    return _res;
33736
5.34k
}
33737
33738
// _loop0_105: ',' (starred_expression !'=')
33739
static asdl_seq *
33740
_loop0_105_rule(Parser *p)
33741
594
{
33742
594
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33743
0
        _Pypegen_stack_overflow(p);
33744
0
    }
33745
594
    if (p->error_indicator) {
33746
0
        p->level--;
33747
0
        return NULL;
33748
0
    }
33749
594
    void *_res = NULL;
33750
594
    int _mark = p->mark;
33751
594
    void **_children = PyMem_Malloc(sizeof(void *));
33752
594
    if (!_children) {
33753
0
        p->error_indicator = 1;
33754
0
        PyErr_NoMemory();
33755
0
        p->level--;
33756
0
        return NULL;
33757
0
    }
33758
594
    Py_ssize_t _children_capacity = 1;
33759
594
    Py_ssize_t _n = 0;
33760
594
    { // ',' (starred_expression !'=')
33761
594
        if (p->error_indicator) {
33762
0
            p->level--;
33763
0
            return NULL;
33764
0
        }
33765
594
        D(fprintf(stderr, "%*c> _loop0_105[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (starred_expression !'=')"));
33766
594
        Token * _literal;
33767
594
        void *elem;
33768
594
        while (
33769
1.58k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33770
1.58k
            &&
33771
1.58k
            (elem = _tmp_166_rule(p))  // starred_expression !'='
33772
594
        )
33773
989
        {
33774
989
            _res = elem;
33775
989
            if (_res == NULL && PyErr_Occurred()) {
33776
0
                p->error_indicator = 1;
33777
0
                PyMem_Free(_children);
33778
0
                p->level--;
33779
0
                return NULL;
33780
0
            }
33781
989
            if (_n == _children_capacity) {
33782
265
                _children_capacity *= 2;
33783
265
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33784
265
                if (!_new_children) {
33785
0
                    PyMem_Free(_children);
33786
0
                    p->error_indicator = 1;
33787
0
                    PyErr_NoMemory();
33788
0
                    p->level--;
33789
0
                    return NULL;
33790
0
                }
33791
265
                _children = _new_children;
33792
265
            }
33793
989
            _children[_n++] = _res;
33794
989
            _mark = p->mark;
33795
989
        }
33796
594
        p->mark = _mark;
33797
594
        D(fprintf(stderr, "%*c%s _loop0_105[%d-%d]: %s failed!\n", p->level, ' ',
33798
594
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (starred_expression !'=')"));
33799
594
    }
33800
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33801
594
    if (!_seq) {
33802
0
        PyMem_Free(_children);
33803
0
        p->error_indicator = 1;
33804
0
        PyErr_NoMemory();
33805
0
        p->level--;
33806
0
        return NULL;
33807
0
    }
33808
1.58k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33809
594
    PyMem_Free(_children);
33810
594
    p->level--;
33811
594
    return _seq;
33812
594
}
33813
33814
// _gather_106: (starred_expression !'=') _loop0_105
33815
static asdl_seq *
33816
_gather_106_rule(Parser *p)
33817
1.47k
{
33818
1.47k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33819
0
        _Pypegen_stack_overflow(p);
33820
0
    }
33821
1.47k
    if (p->error_indicator) {
33822
0
        p->level--;
33823
0
        return NULL;
33824
0
    }
33825
1.47k
    asdl_seq * _res = NULL;
33826
1.47k
    int _mark = p->mark;
33827
1.47k
    { // (starred_expression !'=') _loop0_105
33828
1.47k
        if (p->error_indicator) {
33829
0
            p->level--;
33830
0
            return NULL;
33831
0
        }
33832
1.47k
        D(fprintf(stderr, "%*c> _gather_106[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(starred_expression !'=') _loop0_105"));
33833
1.47k
        void *elem;
33834
1.47k
        asdl_seq * seq;
33835
1.47k
        if (
33836
1.47k
            (elem = _tmp_166_rule(p))  // starred_expression !'='
33837
1.47k
            &&
33838
1.47k
            (seq = _loop0_105_rule(p))  // _loop0_105
33839
1.47k
        )
33840
594
        {
33841
594
            D(fprintf(stderr, "%*c+ _gather_106[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(starred_expression !'=') _loop0_105"));
33842
594
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
33843
594
            goto done;
33844
594
        }
33845
881
        p->mark = _mark;
33846
881
        D(fprintf(stderr, "%*c%s _gather_106[%d-%d]: %s failed!\n", p->level, ' ',
33847
881
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(starred_expression !'=') _loop0_105"));
33848
881
    }
33849
0
    _res = NULL;
33850
1.47k
  done:
33851
1.47k
    p->level--;
33852
1.47k
    return _res;
33853
881
}
33854
33855
// _tmp_107: args | expression for_if_clauses
33856
static void *
33857
_tmp_107_rule(Parser *p)
33858
51
{
33859
51
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33860
0
        _Pypegen_stack_overflow(p);
33861
0
    }
33862
51
    if (p->error_indicator) {
33863
0
        p->level--;
33864
0
        return NULL;
33865
0
    }
33866
51
    void * _res = NULL;
33867
51
    int _mark = p->mark;
33868
51
    { // args
33869
51
        if (p->error_indicator) {
33870
0
            p->level--;
33871
0
            return NULL;
33872
0
        }
33873
51
        D(fprintf(stderr, "%*c> _tmp_107[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args"));
33874
51
        expr_ty args_var;
33875
51
        if (
33876
51
            (args_var = args_rule(p))  // args
33877
51
        )
33878
1
        {
33879
1
            D(fprintf(stderr, "%*c+ _tmp_107[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args"));
33880
1
            _res = args_var;
33881
1
            goto done;
33882
1
        }
33883
50
        p->mark = _mark;
33884
50
        D(fprintf(stderr, "%*c%s _tmp_107[%d-%d]: %s failed!\n", p->level, ' ',
33885
50
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args"));
33886
50
    }
33887
0
    { // expression for_if_clauses
33888
50
        if (p->error_indicator) {
33889
47
            p->level--;
33890
47
            return NULL;
33891
47
        }
33892
3
        D(fprintf(stderr, "%*c> _tmp_107[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses"));
33893
3
        expr_ty expression_var;
33894
3
        asdl_comprehension_seq* for_if_clauses_var;
33895
3
        if (
33896
3
            (expression_var = expression_rule(p))  // expression
33897
3
            &&
33898
3
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
33899
3
        )
33900
0
        {
33901
0
            D(fprintf(stderr, "%*c+ _tmp_107[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses"));
33902
0
            _res = _PyPegen_dummy_name(p, expression_var, for_if_clauses_var);
33903
0
            goto done;
33904
0
        }
33905
3
        p->mark = _mark;
33906
3
        D(fprintf(stderr, "%*c%s _tmp_107[%d-%d]: %s failed!\n", p->level, ' ',
33907
3
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression for_if_clauses"));
33908
3
    }
33909
0
    _res = NULL;
33910
4
  done:
33911
4
    p->level--;
33912
4
    return _res;
33913
3
}
33914
33915
// _tmp_108: args ','
33916
static void *
33917
_tmp_108_rule(Parser *p)
33918
7.41k
{
33919
7.41k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33920
0
        _Pypegen_stack_overflow(p);
33921
0
    }
33922
7.41k
    if (p->error_indicator) {
33923
0
        p->level--;
33924
0
        return NULL;
33925
0
    }
33926
7.41k
    void * _res = NULL;
33927
7.41k
    int _mark = p->mark;
33928
7.41k
    { // args ','
33929
7.41k
        if (p->error_indicator) {
33930
0
            p->level--;
33931
0
            return NULL;
33932
0
        }
33933
7.41k
        D(fprintf(stderr, "%*c> _tmp_108[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ','"));
33934
7.41k
        Token * _literal;
33935
7.41k
        expr_ty args_var;
33936
7.41k
        if (
33937
7.41k
            (args_var = args_rule(p))  // args
33938
7.41k
            &&
33939
7.41k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33940
7.41k
        )
33941
692
        {
33942
692
            D(fprintf(stderr, "%*c+ _tmp_108[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ','"));
33943
692
            _res = _PyPegen_dummy_name(p, args_var, _literal);
33944
692
            goto done;
33945
692
        }
33946
6.72k
        p->mark = _mark;
33947
6.72k
        D(fprintf(stderr, "%*c%s _tmp_108[%d-%d]: %s failed!\n", p->level, ' ',
33948
6.72k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ','"));
33949
6.72k
    }
33950
0
    _res = NULL;
33951
7.41k
  done:
33952
7.41k
    p->level--;
33953
7.41k
    return _res;
33954
6.72k
}
33955
33956
// _tmp_109: ',' | ')'
33957
static void *
33958
_tmp_109_rule(Parser *p)
33959
504
{
33960
504
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33961
0
        _Pypegen_stack_overflow(p);
33962
0
    }
33963
504
    if (p->error_indicator) {
33964
0
        p->level--;
33965
0
        return NULL;
33966
0
    }
33967
504
    void * _res = NULL;
33968
504
    int _mark = p->mark;
33969
504
    { // ','
33970
504
        if (p->error_indicator) {
33971
0
            p->level--;
33972
0
            return NULL;
33973
0
        }
33974
504
        D(fprintf(stderr, "%*c> _tmp_109[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
33975
504
        Token * _literal;
33976
504
        if (
33977
504
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33978
504
        )
33979
12
        {
33980
12
            D(fprintf(stderr, "%*c+ _tmp_109[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
33981
12
            _res = _literal;
33982
12
            goto done;
33983
12
        }
33984
492
        p->mark = _mark;
33985
492
        D(fprintf(stderr, "%*c%s _tmp_109[%d-%d]: %s failed!\n", p->level, ' ',
33986
492
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
33987
492
    }
33988
0
    { // ')'
33989
492
        if (p->error_indicator) {
33990
0
            p->level--;
33991
0
            return NULL;
33992
0
        }
33993
492
        D(fprintf(stderr, "%*c> _tmp_109[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
33994
492
        Token * _literal;
33995
492
        if (
33996
492
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
33997
492
        )
33998
3
        {
33999
3
            D(fprintf(stderr, "%*c+ _tmp_109[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
34000
3
            _res = _literal;
34001
3
            goto done;
34002
3
        }
34003
489
        p->mark = _mark;
34004
489
        D(fprintf(stderr, "%*c%s _tmp_109[%d-%d]: %s failed!\n", p->level, ' ',
34005
489
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
34006
489
    }
34007
0
    _res = NULL;
34008
504
  done:
34009
504
    p->level--;
34010
504
    return _res;
34011
489
}
34012
34013
// _tmp_110: 'True' | 'False' | 'None'
34014
static void *
34015
_tmp_110_rule(Parser *p)
34016
120k
{
34017
120k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34018
0
        _Pypegen_stack_overflow(p);
34019
0
    }
34020
120k
    if (p->error_indicator) {
34021
0
        p->level--;
34022
0
        return NULL;
34023
0
    }
34024
120k
    void * _res = NULL;
34025
120k
    int _mark = p->mark;
34026
120k
    { // 'True'
34027
120k
        if (p->error_indicator) {
34028
0
            p->level--;
34029
0
            return NULL;
34030
0
        }
34031
120k
        D(fprintf(stderr, "%*c> _tmp_110[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
34032
120k
        Token * _keyword;
34033
120k
        if (
34034
120k
            (_keyword = _PyPegen_expect_token(p, 623))  // token='True'
34035
120k
        )
34036
219
        {
34037
219
            D(fprintf(stderr, "%*c+ _tmp_110[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
34038
219
            _res = _keyword;
34039
219
            goto done;
34040
219
        }
34041
120k
        p->mark = _mark;
34042
120k
        D(fprintf(stderr, "%*c%s _tmp_110[%d-%d]: %s failed!\n", p->level, ' ',
34043
120k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
34044
120k
    }
34045
0
    { // 'False'
34046
120k
        if (p->error_indicator) {
34047
0
            p->level--;
34048
0
            return NULL;
34049
0
        }
34050
120k
        D(fprintf(stderr, "%*c> _tmp_110[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
34051
120k
        Token * _keyword;
34052
120k
        if (
34053
120k
            (_keyword = _PyPegen_expect_token(p, 625))  // token='False'
34054
120k
        )
34055
210
        {
34056
210
            D(fprintf(stderr, "%*c+ _tmp_110[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
34057
210
            _res = _keyword;
34058
210
            goto done;
34059
210
        }
34060
119k
        p->mark = _mark;
34061
119k
        D(fprintf(stderr, "%*c%s _tmp_110[%d-%d]: %s failed!\n", p->level, ' ',
34062
119k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
34063
119k
    }
34064
0
    { // 'None'
34065
119k
        if (p->error_indicator) {
34066
0
            p->level--;
34067
0
            return NULL;
34068
0
        }
34069
119k
        D(fprintf(stderr, "%*c> _tmp_110[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
34070
119k
        Token * _keyword;
34071
119k
        if (
34072
119k
            (_keyword = _PyPegen_expect_token(p, 624))  // token='None'
34073
119k
        )
34074
221
        {
34075
221
            D(fprintf(stderr, "%*c+ _tmp_110[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
34076
221
            _res = _keyword;
34077
221
            goto done;
34078
221
        }
34079
119k
        p->mark = _mark;
34080
119k
        D(fprintf(stderr, "%*c%s _tmp_110[%d-%d]: %s failed!\n", p->level, ' ',
34081
119k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
34082
119k
    }
34083
0
    _res = NULL;
34084
120k
  done:
34085
120k
    p->level--;
34086
120k
    return _res;
34087
119k
}
34088
34089
// _tmp_111: NAME '='
34090
static void *
34091
_tmp_111_rule(Parser *p)
34092
120k
{
34093
120k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34094
0
        _Pypegen_stack_overflow(p);
34095
0
    }
34096
120k
    if (p->error_indicator) {
34097
0
        p->level--;
34098
0
        return NULL;
34099
0
    }
34100
120k
    void * _res = NULL;
34101
120k
    int _mark = p->mark;
34102
120k
    { // NAME '='
34103
120k
        if (p->error_indicator) {
34104
0
            p->level--;
34105
0
            return NULL;
34106
0
        }
34107
120k
        D(fprintf(stderr, "%*c> _tmp_111[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '='"));
34108
120k
        Token * _literal;
34109
120k
        expr_ty name_var;
34110
120k
        if (
34111
120k
            (name_var = _PyPegen_name_token(p))  // NAME
34112
120k
            &&
34113
120k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
34114
120k
        )
34115
20.4k
        {
34116
20.4k
            D(fprintf(stderr, "%*c+ _tmp_111[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '='"));
34117
20.4k
            _res = _PyPegen_dummy_name(p, name_var, _literal);
34118
20.4k
            goto done;
34119
20.4k
        }
34120
99.6k
        p->mark = _mark;
34121
99.6k
        D(fprintf(stderr, "%*c%s _tmp_111[%d-%d]: %s failed!\n", p->level, ' ',
34122
99.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '='"));
34123
99.6k
    }
34124
0
    _res = NULL;
34125
120k
  done:
34126
120k
    p->level--;
34127
120k
    return _res;
34128
99.6k
}
34129
34130
// _loop1_112: (!STRING expression_without_invalid)
34131
static asdl_seq *
34132
_loop1_112_rule(Parser *p)
34133
3.44k
{
34134
3.44k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34135
1
        _Pypegen_stack_overflow(p);
34136
1
    }
34137
3.44k
    if (p->error_indicator) {
34138
1
        p->level--;
34139
1
        return NULL;
34140
1
    }
34141
3.44k
    void *_res = NULL;
34142
3.44k
    int _mark = p->mark;
34143
3.44k
    void **_children = PyMem_Malloc(sizeof(void *));
34144
3.44k
    if (!_children) {
34145
0
        p->error_indicator = 1;
34146
0
        PyErr_NoMemory();
34147
0
        p->level--;
34148
0
        return NULL;
34149
0
    }
34150
3.44k
    Py_ssize_t _children_capacity = 1;
34151
3.44k
    Py_ssize_t _n = 0;
34152
3.44k
    { // (!STRING expression_without_invalid)
34153
3.44k
        if (p->error_indicator) {
34154
0
            p->level--;
34155
0
            return NULL;
34156
0
        }
34157
3.44k
        D(fprintf(stderr, "%*c> _loop1_112[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(!STRING expression_without_invalid)"));
34158
3.44k
        void *_tmp_167_var;
34159
3.44k
        while (
34160
5.42k
            (_tmp_167_var = _tmp_167_rule(p))  // !STRING expression_without_invalid
34161
3.44k
        )
34162
1.98k
        {
34163
1.98k
            _res = _tmp_167_var;
34164
1.98k
            if (_n == _children_capacity) {
34165
376
                _children_capacity *= 2;
34166
376
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
34167
376
                if (!_new_children) {
34168
0
                    PyMem_Free(_children);
34169
0
                    p->error_indicator = 1;
34170
0
                    PyErr_NoMemory();
34171
0
                    p->level--;
34172
0
                    return NULL;
34173
0
                }
34174
376
                _children = _new_children;
34175
376
            }
34176
1.98k
            _children[_n++] = _res;
34177
1.98k
            _mark = p->mark;
34178
1.98k
        }
34179
3.44k
        p->mark = _mark;
34180
3.44k
        D(fprintf(stderr, "%*c%s _loop1_112[%d-%d]: %s failed!\n", p->level, ' ',
34181
3.44k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(!STRING expression_without_invalid)"));
34182
3.44k
    }
34183
3.44k
    if (_n == 0 || p->error_indicator) {
34184
2.37k
        PyMem_Free(_children);
34185
2.37k
        p->level--;
34186
2.37k
        return NULL;
34187
2.37k
    }
34188
1.06k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
34189
1.06k
    if (!_seq) {
34190
0
        PyMem_Free(_children);
34191
0
        p->error_indicator = 1;
34192
0
        PyErr_NoMemory();
34193
0
        p->level--;
34194
0
        return NULL;
34195
0
    }
34196
3.02k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
34197
1.06k
    PyMem_Free(_children);
34198
1.06k
    p->level--;
34199
1.06k
    return _seq;
34200
1.06k
}
34201
34202
// _tmp_113: NAME STRING | SOFT_KEYWORD
34203
static void *
34204
_tmp_113_rule(Parser *p)
34205
238k
{
34206
238k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34207
1
        _Pypegen_stack_overflow(p);
34208
1
    }
34209
238k
    if (p->error_indicator) {
34210
1
        p->level--;
34211
1
        return NULL;
34212
1
    }
34213
238k
    void * _res = NULL;
34214
238k
    int _mark = p->mark;
34215
238k
    { // NAME STRING
34216
238k
        if (p->error_indicator) {
34217
0
            p->level--;
34218
0
            return NULL;
34219
0
        }
34220
238k
        D(fprintf(stderr, "%*c> _tmp_113[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME STRING"));
34221
238k
        expr_ty name_var;
34222
238k
        expr_ty string_var;
34223
238k
        if (
34224
238k
            (name_var = _PyPegen_name_token(p))  // NAME
34225
238k
            &&
34226
238k
            (string_var = _PyPegen_string_token(p))  // STRING
34227
238k
        )
34228
352
        {
34229
352
            D(fprintf(stderr, "%*c+ _tmp_113[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME STRING"));
34230
352
            _res = _PyPegen_dummy_name(p, name_var, string_var);
34231
352
            goto done;
34232
352
        }
34233
237k
        p->mark = _mark;
34234
237k
        D(fprintf(stderr, "%*c%s _tmp_113[%d-%d]: %s failed!\n", p->level, ' ',
34235
237k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME STRING"));
34236
237k
    }
34237
0
    { // SOFT_KEYWORD
34238
237k
        if (p->error_indicator) {
34239
21
            p->level--;
34240
21
            return NULL;
34241
21
        }
34242
237k
        D(fprintf(stderr, "%*c> _tmp_113[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD"));
34243
237k
        expr_ty soft_keyword_var;
34244
237k
        if (
34245
237k
            (soft_keyword_var = _PyPegen_soft_keyword_token(p))  // SOFT_KEYWORD
34246
237k
        )
34247
4.48k
        {
34248
4.48k
            D(fprintf(stderr, "%*c+ _tmp_113[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD"));
34249
4.48k
            _res = soft_keyword_var;
34250
4.48k
            goto done;
34251
4.48k
        }
34252
233k
        p->mark = _mark;
34253
233k
        D(fprintf(stderr, "%*c%s _tmp_113[%d-%d]: %s failed!\n", p->level, ' ',
34254
233k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "SOFT_KEYWORD"));
34255
233k
    }
34256
0
    _res = NULL;
34257
238k
  done:
34258
238k
    p->level--;
34259
238k
    return _res;
34260
233k
}
34261
34262
// _tmp_114: 'else' | ':'
34263
static void *
34264
_tmp_114_rule(Parser *p)
34265
640
{
34266
640
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34267
0
        _Pypegen_stack_overflow(p);
34268
0
    }
34269
640
    if (p->error_indicator) {
34270
0
        p->level--;
34271
0
        return NULL;
34272
0
    }
34273
640
    void * _res = NULL;
34274
640
    int _mark = p->mark;
34275
640
    { // 'else'
34276
640
        if (p->error_indicator) {
34277
0
            p->level--;
34278
0
            return NULL;
34279
0
        }
34280
640
        D(fprintf(stderr, "%*c> _tmp_114[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else'"));
34281
640
        Token * _keyword;
34282
640
        if (
34283
640
            (_keyword = _PyPegen_expect_token(p, 691))  // token='else'
34284
640
        )
34285
614
        {
34286
614
            D(fprintf(stderr, "%*c+ _tmp_114[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else'"));
34287
614
            _res = _keyword;
34288
614
            goto done;
34289
614
        }
34290
26
        p->mark = _mark;
34291
26
        D(fprintf(stderr, "%*c%s _tmp_114[%d-%d]: %s failed!\n", p->level, ' ',
34292
26
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else'"));
34293
26
    }
34294
0
    { // ':'
34295
26
        if (p->error_indicator) {
34296
0
            p->level--;
34297
0
            return NULL;
34298
0
        }
34299
26
        D(fprintf(stderr, "%*c> _tmp_114[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
34300
26
        Token * _literal;
34301
26
        if (
34302
26
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
34303
26
        )
34304
8
        {
34305
8
            D(fprintf(stderr, "%*c+ _tmp_114[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
34306
8
            _res = _literal;
34307
8
            goto done;
34308
8
        }
34309
18
        p->mark = _mark;
34310
18
        D(fprintf(stderr, "%*c%s _tmp_114[%d-%d]: %s failed!\n", p->level, ' ',
34311
18
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
34312
18
    }
34313
0
    _res = NULL;
34314
640
  done:
34315
640
    p->level--;
34316
640
    return _res;
34317
18
}
34318
34319
// _tmp_115: pass_stmt | break_stmt | continue_stmt
34320
static void *
34321
_tmp_115_rule(Parser *p)
34322
204k
{
34323
204k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34324
0
        _Pypegen_stack_overflow(p);
34325
0
    }
34326
204k
    if (p->error_indicator) {
34327
0
        p->level--;
34328
0
        return NULL;
34329
0
    }
34330
204k
    void * _res = NULL;
34331
204k
    int _mark = p->mark;
34332
204k
    { // pass_stmt
34333
204k
        if (p->error_indicator) {
34334
0
            p->level--;
34335
0
            return NULL;
34336
0
        }
34337
204k
        D(fprintf(stderr, "%*c> _tmp_115[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pass_stmt"));
34338
204k
        stmt_ty pass_stmt_var;
34339
204k
        if (
34340
204k
            (pass_stmt_var = pass_stmt_rule(p))  // pass_stmt
34341
204k
        )
34342
491
        {
34343
491
            D(fprintf(stderr, "%*c+ _tmp_115[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pass_stmt"));
34344
491
            _res = pass_stmt_var;
34345
491
            goto done;
34346
491
        }
34347
203k
        p->mark = _mark;
34348
203k
        D(fprintf(stderr, "%*c%s _tmp_115[%d-%d]: %s failed!\n", p->level, ' ',
34349
203k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pass_stmt"));
34350
203k
    }
34351
0
    { // break_stmt
34352
203k
        if (p->error_indicator) {
34353
0
            p->level--;
34354
0
            return NULL;
34355
0
        }
34356
203k
        D(fprintf(stderr, "%*c> _tmp_115[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "break_stmt"));
34357
203k
        stmt_ty break_stmt_var;
34358
203k
        if (
34359
203k
            (break_stmt_var = break_stmt_rule(p))  // break_stmt
34360
203k
        )
34361
317
        {
34362
317
            D(fprintf(stderr, "%*c+ _tmp_115[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "break_stmt"));
34363
317
            _res = break_stmt_var;
34364
317
            goto done;
34365
317
        }
34366
203k
        p->mark = _mark;
34367
203k
        D(fprintf(stderr, "%*c%s _tmp_115[%d-%d]: %s failed!\n", p->level, ' ',
34368
203k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "break_stmt"));
34369
203k
    }
34370
0
    { // continue_stmt
34371
203k
        if (p->error_indicator) {
34372
0
            p->level--;
34373
0
            return NULL;
34374
0
        }
34375
203k
        D(fprintf(stderr, "%*c> _tmp_115[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "continue_stmt"));
34376
203k
        stmt_ty continue_stmt_var;
34377
203k
        if (
34378
203k
            (continue_stmt_var = continue_stmt_rule(p))  // continue_stmt
34379
203k
        )
34380
1.53k
        {
34381
1.53k
            D(fprintf(stderr, "%*c+ _tmp_115[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "continue_stmt"));
34382
1.53k
            _res = continue_stmt_var;
34383
1.53k
            goto done;
34384
1.53k
        }
34385
201k
        p->mark = _mark;
34386
201k
        D(fprintf(stderr, "%*c%s _tmp_115[%d-%d]: %s failed!\n", p->level, ' ',
34387
201k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "continue_stmt"));
34388
201k
    }
34389
0
    _res = NULL;
34390
204k
  done:
34391
204k
    p->level--;
34392
204k
    return _res;
34393
201k
}
34394
34395
// _tmp_116: '=' | ':='
34396
static void *
34397
_tmp_116_rule(Parser *p)
34398
92
{
34399
92
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34400
0
        _Pypegen_stack_overflow(p);
34401
0
    }
34402
92
    if (p->error_indicator) {
34403
0
        p->level--;
34404
0
        return NULL;
34405
0
    }
34406
92
    void * _res = NULL;
34407
92
    int _mark = p->mark;
34408
92
    { // '='
34409
92
        if (p->error_indicator) {
34410
0
            p->level--;
34411
0
            return NULL;
34412
0
        }
34413
92
        D(fprintf(stderr, "%*c> _tmp_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
34414
92
        Token * _literal;
34415
92
        if (
34416
92
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
34417
92
        )
34418
59
        {
34419
59
            D(fprintf(stderr, "%*c+ _tmp_116[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
34420
59
            _res = _literal;
34421
59
            goto done;
34422
59
        }
34423
33
        p->mark = _mark;
34424
33
        D(fprintf(stderr, "%*c%s _tmp_116[%d-%d]: %s failed!\n", p->level, ' ',
34425
33
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
34426
33
    }
34427
0
    { // ':='
34428
33
        if (p->error_indicator) {
34429
0
            p->level--;
34430
0
            return NULL;
34431
0
        }
34432
33
        D(fprintf(stderr, "%*c> _tmp_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':='"));
34433
33
        Token * _literal;
34434
33
        if (
34435
33
            (_literal = _PyPegen_expect_token(p, 53))  // token=':='
34436
33
        )
34437
5
        {
34438
5
            D(fprintf(stderr, "%*c+ _tmp_116[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':='"));
34439
5
            _res = _literal;
34440
5
            goto done;
34441
5
        }
34442
28
        p->mark = _mark;
34443
28
        D(fprintf(stderr, "%*c%s _tmp_116[%d-%d]: %s failed!\n", p->level, ' ',
34444
28
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':='"));
34445
28
    }
34446
0
    _res = NULL;
34447
92
  done:
34448
92
    p->level--;
34449
92
    return _res;
34450
28
}
34451
34452
// _tmp_117: list | tuple | genexp | 'True' | 'None' | 'False'
34453
static void *
34454
_tmp_117_rule(Parser *p)
34455
90.7k
{
34456
90.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34457
0
        _Pypegen_stack_overflow(p);
34458
0
    }
34459
90.7k
    if (p->error_indicator) {
34460
0
        p->level--;
34461
0
        return NULL;
34462
0
    }
34463
90.7k
    void * _res = NULL;
34464
90.7k
    int _mark = p->mark;
34465
90.7k
    { // list
34466
90.7k
        if (p->error_indicator) {
34467
0
            p->level--;
34468
0
            return NULL;
34469
0
        }
34470
90.7k
        D(fprintf(stderr, "%*c> _tmp_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
34471
90.7k
        expr_ty list_var;
34472
90.7k
        if (
34473
90.7k
            (list_var = list_rule(p))  // list
34474
90.7k
        )
34475
910
        {
34476
910
            D(fprintf(stderr, "%*c+ _tmp_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
34477
910
            _res = list_var;
34478
910
            goto done;
34479
910
        }
34480
89.8k
        p->mark = _mark;
34481
89.8k
        D(fprintf(stderr, "%*c%s _tmp_117[%d-%d]: %s failed!\n", p->level, ' ',
34482
89.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
34483
89.8k
    }
34484
0
    { // tuple
34485
89.8k
        if (p->error_indicator) {
34486
196
            p->level--;
34487
196
            return NULL;
34488
196
        }
34489
89.6k
        D(fprintf(stderr, "%*c> _tmp_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
34490
89.6k
        expr_ty tuple_var;
34491
89.6k
        if (
34492
89.6k
            (tuple_var = tuple_rule(p))  // tuple
34493
89.6k
        )
34494
4.10k
        {
34495
4.10k
            D(fprintf(stderr, "%*c+ _tmp_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
34496
4.10k
            _res = tuple_var;
34497
4.10k
            goto done;
34498
4.10k
        }
34499
85.5k
        p->mark = _mark;
34500
85.5k
        D(fprintf(stderr, "%*c%s _tmp_117[%d-%d]: %s failed!\n", p->level, ' ',
34501
85.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
34502
85.5k
    }
34503
0
    { // genexp
34504
85.5k
        if (p->error_indicator) {
34505
195
            p->level--;
34506
195
            return NULL;
34507
195
        }
34508
85.3k
        D(fprintf(stderr, "%*c> _tmp_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp"));
34509
85.3k
        expr_ty genexp_var;
34510
85.3k
        if (
34511
85.3k
            (genexp_var = genexp_rule(p))  // genexp
34512
85.3k
        )
34513
341
        {
34514
341
            D(fprintf(stderr, "%*c+ _tmp_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp"));
34515
341
            _res = genexp_var;
34516
341
            goto done;
34517
341
        }
34518
84.9k
        p->mark = _mark;
34519
84.9k
        D(fprintf(stderr, "%*c%s _tmp_117[%d-%d]: %s failed!\n", p->level, ' ',
34520
84.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "genexp"));
34521
84.9k
    }
34522
0
    { // 'True'
34523
84.9k
        if (p->error_indicator) {
34524
92
            p->level--;
34525
92
            return NULL;
34526
92
        }
34527
84.8k
        D(fprintf(stderr, "%*c> _tmp_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
34528
84.8k
        Token * _keyword;
34529
84.8k
        if (
34530
84.8k
            (_keyword = _PyPegen_expect_token(p, 623))  // token='True'
34531
84.8k
        )
34532
237
        {
34533
237
            D(fprintf(stderr, "%*c+ _tmp_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
34534
237
            _res = _keyword;
34535
237
            goto done;
34536
237
        }
34537
84.6k
        p->mark = _mark;
34538
84.6k
        D(fprintf(stderr, "%*c%s _tmp_117[%d-%d]: %s failed!\n", p->level, ' ',
34539
84.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
34540
84.6k
    }
34541
0
    { // 'None'
34542
84.6k
        if (p->error_indicator) {
34543
0
            p->level--;
34544
0
            return NULL;
34545
0
        }
34546
84.6k
        D(fprintf(stderr, "%*c> _tmp_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
34547
84.6k
        Token * _keyword;
34548
84.6k
        if (
34549
84.6k
            (_keyword = _PyPegen_expect_token(p, 624))  // token='None'
34550
84.6k
        )
34551
209
        {
34552
209
            D(fprintf(stderr, "%*c+ _tmp_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
34553
209
            _res = _keyword;
34554
209
            goto done;
34555
209
        }
34556
84.4k
        p->mark = _mark;
34557
84.4k
        D(fprintf(stderr, "%*c%s _tmp_117[%d-%d]: %s failed!\n", p->level, ' ',
34558
84.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
34559
84.4k
    }
34560
0
    { // 'False'
34561
84.4k
        if (p->error_indicator) {
34562
0
            p->level--;
34563
0
            return NULL;
34564
0
        }
34565
84.4k
        D(fprintf(stderr, "%*c> _tmp_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
34566
84.4k
        Token * _keyword;
34567
84.4k
        if (
34568
84.4k
            (_keyword = _PyPegen_expect_token(p, 625))  // token='False'
34569
84.4k
        )
34570
197
        {
34571
197
            D(fprintf(stderr, "%*c+ _tmp_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
34572
197
            _res = _keyword;
34573
197
            goto done;
34574
197
        }
34575
84.2k
        p->mark = _mark;
34576
84.2k
        D(fprintf(stderr, "%*c%s _tmp_117[%d-%d]: %s failed!\n", p->level, ' ',
34577
84.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
34578
84.2k
    }
34579
0
    _res = NULL;
34580
90.2k
  done:
34581
90.2k
    p->level--;
34582
90.2k
    return _res;
34583
84.2k
}
34584
34585
// _loop0_118: star_named_expressions
34586
static asdl_seq *
34587
_loop0_118_rule(Parser *p)
34588
1.81k
{
34589
1.81k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34590
0
        _Pypegen_stack_overflow(p);
34591
0
    }
34592
1.81k
    if (p->error_indicator) {
34593
0
        p->level--;
34594
0
        return NULL;
34595
0
    }
34596
1.81k
    void *_res = NULL;
34597
1.81k
    int _mark = p->mark;
34598
1.81k
    void **_children = PyMem_Malloc(sizeof(void *));
34599
1.81k
    if (!_children) {
34600
0
        p->error_indicator = 1;
34601
0
        PyErr_NoMemory();
34602
0
        p->level--;
34603
0
        return NULL;
34604
0
    }
34605
1.81k
    Py_ssize_t _children_capacity = 1;
34606
1.81k
    Py_ssize_t _n = 0;
34607
1.81k
    { // star_named_expressions
34608
1.81k
        if (p->error_indicator) {
34609
0
            p->level--;
34610
0
            return NULL;
34611
0
        }
34612
1.81k
        D(fprintf(stderr, "%*c> _loop0_118[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expressions"));
34613
1.81k
        asdl_expr_seq* star_named_expressions_var;
34614
1.81k
        while (
34615
4.59k
            (star_named_expressions_var = star_named_expressions_rule(p))  // star_named_expressions
34616
1.81k
        )
34617
2.77k
        {
34618
2.77k
            _res = star_named_expressions_var;
34619
2.77k
            if (_n == _children_capacity) {
34620
292
                _children_capacity *= 2;
34621
292
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
34622
292
                if (!_new_children) {
34623
0
                    PyMem_Free(_children);
34624
0
                    p->error_indicator = 1;
34625
0
                    PyErr_NoMemory();
34626
0
                    p->level--;
34627
0
                    return NULL;
34628
0
                }
34629
292
                _children = _new_children;
34630
292
            }
34631
2.77k
            _children[_n++] = _res;
34632
2.77k
            _mark = p->mark;
34633
2.77k
        }
34634
1.81k
        p->mark = _mark;
34635
1.81k
        D(fprintf(stderr, "%*c%s _loop0_118[%d-%d]: %s failed!\n", p->level, ' ',
34636
1.81k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expressions"));
34637
1.81k
    }
34638
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
34639
1.81k
    if (!_seq) {
34640
0
        PyMem_Free(_children);
34641
0
        p->error_indicator = 1;
34642
0
        PyErr_NoMemory();
34643
0
        p->level--;
34644
0
        return NULL;
34645
0
    }
34646
4.59k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
34647
1.81k
    PyMem_Free(_children);
34648
1.81k
    p->level--;
34649
1.81k
    return _seq;
34650
1.81k
}
34651
34652
// _loop0_119: (star_targets '=')
34653
static asdl_seq *
34654
_loop0_119_rule(Parser *p)
34655
78.8k
{
34656
78.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34657
0
        _Pypegen_stack_overflow(p);
34658
0
    }
34659
78.8k
    if (p->error_indicator) {
34660
0
        p->level--;
34661
0
        return NULL;
34662
0
    }
34663
78.8k
    void *_res = NULL;
34664
78.8k
    int _mark = p->mark;
34665
78.8k
    void **_children = PyMem_Malloc(sizeof(void *));
34666
78.8k
    if (!_children) {
34667
0
        p->error_indicator = 1;
34668
0
        PyErr_NoMemory();
34669
0
        p->level--;
34670
0
        return NULL;
34671
0
    }
34672
78.8k
    Py_ssize_t _children_capacity = 1;
34673
78.8k
    Py_ssize_t _n = 0;
34674
78.8k
    { // (star_targets '=')
34675
78.8k
        if (p->error_indicator) {
34676
0
            p->level--;
34677
0
            return NULL;
34678
0
        }
34679
78.8k
        D(fprintf(stderr, "%*c> _loop0_119[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
34680
78.8k
        void *_tmp_154_var;
34681
78.8k
        while (
34682
79.9k
            (_tmp_154_var = _tmp_154_rule(p))  // star_targets '='
34683
78.8k
        )
34684
1.05k
        {
34685
1.05k
            _res = _tmp_154_var;
34686
1.05k
            if (_n == _children_capacity) {
34687
143
                _children_capacity *= 2;
34688
143
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
34689
143
                if (!_new_children) {
34690
0
                    PyMem_Free(_children);
34691
0
                    p->error_indicator = 1;
34692
0
                    PyErr_NoMemory();
34693
0
                    p->level--;
34694
0
                    return NULL;
34695
0
                }
34696
143
                _children = _new_children;
34697
143
            }
34698
1.05k
            _children[_n++] = _res;
34699
1.05k
            _mark = p->mark;
34700
1.05k
        }
34701
78.8k
        p->mark = _mark;
34702
78.8k
        D(fprintf(stderr, "%*c%s _loop0_119[%d-%d]: %s failed!\n", p->level, ' ',
34703
78.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
34704
78.8k
    }
34705
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
34706
78.8k
    if (!_seq) {
34707
0
        PyMem_Free(_children);
34708
0
        p->error_indicator = 1;
34709
0
        PyErr_NoMemory();
34710
0
        p->level--;
34711
0
        return NULL;
34712
0
    }
34713
79.9k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
34714
78.8k
    PyMem_Free(_children);
34715
78.8k
    p->level--;
34716
78.8k
    return _seq;
34717
78.8k
}
34718
34719
// _tmp_120: '[' | '(' | '{'
34720
static void *
34721
_tmp_120_rule(Parser *p)
34722
235k
{
34723
235k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34724
1
        _Pypegen_stack_overflow(p);
34725
1
    }
34726
235k
    if (p->error_indicator) {
34727
1
        p->level--;
34728
1
        return NULL;
34729
1
    }
34730
235k
    void * _res = NULL;
34731
235k
    int _mark = p->mark;
34732
235k
    { // '['
34733
235k
        if (p->error_indicator) {
34734
0
            p->level--;
34735
0
            return NULL;
34736
0
        }
34737
235k
        D(fprintf(stderr, "%*c> _tmp_120[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
34738
235k
        Token * _literal;
34739
235k
        if (
34740
235k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
34741
235k
        )
34742
20.1k
        {
34743
20.1k
            D(fprintf(stderr, "%*c+ _tmp_120[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
34744
20.1k
            _res = _literal;
34745
20.1k
            goto done;
34746
20.1k
        }
34747
215k
        p->mark = _mark;
34748
215k
        D(fprintf(stderr, "%*c%s _tmp_120[%d-%d]: %s failed!\n", p->level, ' ',
34749
215k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
34750
215k
    }
34751
0
    { // '('
34752
215k
        if (p->error_indicator) {
34753
0
            p->level--;
34754
0
            return NULL;
34755
0
        }
34756
215k
        D(fprintf(stderr, "%*c> _tmp_120[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
34757
215k
        Token * _literal;
34758
215k
        if (
34759
215k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
34760
215k
        )
34761
22.4k
        {
34762
22.4k
            D(fprintf(stderr, "%*c+ _tmp_120[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
34763
22.4k
            _res = _literal;
34764
22.4k
            goto done;
34765
22.4k
        }
34766
192k
        p->mark = _mark;
34767
192k
        D(fprintf(stderr, "%*c%s _tmp_120[%d-%d]: %s failed!\n", p->level, ' ',
34768
192k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
34769
192k
    }
34770
0
    { // '{'
34771
192k
        if (p->error_indicator) {
34772
0
            p->level--;
34773
0
            return NULL;
34774
0
        }
34775
192k
        D(fprintf(stderr, "%*c> _tmp_120[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'"));
34776
192k
        Token * _literal;
34777
192k
        if (
34778
192k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
34779
192k
        )
34780
5.41k
        {
34781
5.41k
            D(fprintf(stderr, "%*c+ _tmp_120[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'"));
34782
5.41k
            _res = _literal;
34783
5.41k
            goto done;
34784
5.41k
        }
34785
187k
        p->mark = _mark;
34786
187k
        D(fprintf(stderr, "%*c%s _tmp_120[%d-%d]: %s failed!\n", p->level, ' ',
34787
187k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'"));
34788
187k
    }
34789
0
    _res = NULL;
34790
235k
  done:
34791
235k
    p->level--;
34792
235k
    return _res;
34793
187k
}
34794
34795
// _tmp_121: '[' | '{'
34796
static void *
34797
_tmp_121_rule(Parser *p)
34798
467k
{
34799
467k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34800
0
        _Pypegen_stack_overflow(p);
34801
0
    }
34802
467k
    if (p->error_indicator) {
34803
0
        p->level--;
34804
0
        return NULL;
34805
0
    }
34806
467k
    void * _res = NULL;
34807
467k
    int _mark = p->mark;
34808
467k
    { // '['
34809
467k
        if (p->error_indicator) {
34810
0
            p->level--;
34811
0
            return NULL;
34812
0
        }
34813
467k
        D(fprintf(stderr, "%*c> _tmp_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
34814
467k
        Token * _literal;
34815
467k
        if (
34816
467k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
34817
467k
        )
34818
39.3k
        {
34819
39.3k
            D(fprintf(stderr, "%*c+ _tmp_121[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
34820
39.3k
            _res = _literal;
34821
39.3k
            goto done;
34822
39.3k
        }
34823
428k
        p->mark = _mark;
34824
428k
        D(fprintf(stderr, "%*c%s _tmp_121[%d-%d]: %s failed!\n", p->level, ' ',
34825
428k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
34826
428k
    }
34827
0
    { // '{'
34828
428k
        if (p->error_indicator) {
34829
0
            p->level--;
34830
0
            return NULL;
34831
0
        }
34832
428k
        D(fprintf(stderr, "%*c> _tmp_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'"));
34833
428k
        Token * _literal;
34834
428k
        if (
34835
428k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
34836
428k
        )
34837
9.58k
        {
34838
9.58k
            D(fprintf(stderr, "%*c+ _tmp_121[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'"));
34839
9.58k
            _res = _literal;
34840
9.58k
            goto done;
34841
9.58k
        }
34842
418k
        p->mark = _mark;
34843
418k
        D(fprintf(stderr, "%*c%s _tmp_121[%d-%d]: %s failed!\n", p->level, ' ',
34844
418k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'"));
34845
418k
    }
34846
0
    _res = NULL;
34847
467k
  done:
34848
467k
    p->level--;
34849
467k
    return _res;
34850
418k
}
34851
34852
// _tmp_122: slash_no_default | slash_with_default
34853
static void *
34854
_tmp_122_rule(Parser *p)
34855
9.71k
{
34856
9.71k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34857
0
        _Pypegen_stack_overflow(p);
34858
0
    }
34859
9.71k
    if (p->error_indicator) {
34860
0
        p->level--;
34861
0
        return NULL;
34862
0
    }
34863
9.71k
    void * _res = NULL;
34864
9.71k
    int _mark = p->mark;
34865
9.71k
    { // slash_no_default
34866
9.71k
        if (p->error_indicator) {
34867
0
            p->level--;
34868
0
            return NULL;
34869
0
        }
34870
9.71k
        D(fprintf(stderr, "%*c> _tmp_122[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_no_default"));
34871
9.71k
        asdl_arg_seq* slash_no_default_var;
34872
9.71k
        if (
34873
9.71k
            (slash_no_default_var = slash_no_default_rule(p))  // slash_no_default
34874
9.71k
        )
34875
1.07k
        {
34876
1.07k
            D(fprintf(stderr, "%*c+ _tmp_122[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_no_default"));
34877
1.07k
            _res = slash_no_default_var;
34878
1.07k
            goto done;
34879
1.07k
        }
34880
8.64k
        p->mark = _mark;
34881
8.64k
        D(fprintf(stderr, "%*c%s _tmp_122[%d-%d]: %s failed!\n", p->level, ' ',
34882
8.64k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_no_default"));
34883
8.64k
    }
34884
0
    { // slash_with_default
34885
8.64k
        if (p->error_indicator) {
34886
2
            p->level--;
34887
2
            return NULL;
34888
2
        }
34889
8.64k
        D(fprintf(stderr, "%*c> _tmp_122[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
34890
8.64k
        SlashWithDefault* slash_with_default_var;
34891
8.64k
        if (
34892
8.64k
            (slash_with_default_var = slash_with_default_rule(p))  // slash_with_default
34893
8.64k
        )
34894
875
        {
34895
875
            D(fprintf(stderr, "%*c+ _tmp_122[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
34896
875
            _res = slash_with_default_var;
34897
875
            goto done;
34898
875
        }
34899
7.76k
        p->mark = _mark;
34900
7.76k
        D(fprintf(stderr, "%*c%s _tmp_122[%d-%d]: %s failed!\n", p->level, ' ',
34901
7.76k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default"));
34902
7.76k
    }
34903
0
    _res = NULL;
34904
9.71k
  done:
34905
9.71k
    p->level--;
34906
9.71k
    return _res;
34907
7.76k
}
34908
34909
// _tmp_123: ',' | param_no_default
34910
static void *
34911
_tmp_123_rule(Parser *p)
34912
1.46k
{
34913
1.46k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34914
0
        _Pypegen_stack_overflow(p);
34915
0
    }
34916
1.46k
    if (p->error_indicator) {
34917
0
        p->level--;
34918
0
        return NULL;
34919
0
    }
34920
1.46k
    void * _res = NULL;
34921
1.46k
    int _mark = p->mark;
34922
1.46k
    { // ','
34923
1.46k
        if (p->error_indicator) {
34924
0
            p->level--;
34925
0
            return NULL;
34926
0
        }
34927
1.46k
        D(fprintf(stderr, "%*c> _tmp_123[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
34928
1.46k
        Token * _literal;
34929
1.46k
        if (
34930
1.46k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
34931
1.46k
        )
34932
567
        {
34933
567
            D(fprintf(stderr, "%*c+ _tmp_123[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
34934
567
            _res = _literal;
34935
567
            goto done;
34936
567
        }
34937
900
        p->mark = _mark;
34938
900
        D(fprintf(stderr, "%*c%s _tmp_123[%d-%d]: %s failed!\n", p->level, ' ',
34939
900
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
34940
900
    }
34941
0
    { // param_no_default
34942
900
        if (p->error_indicator) {
34943
0
            p->level--;
34944
0
            return NULL;
34945
0
        }
34946
900
        D(fprintf(stderr, "%*c> _tmp_123[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
34947
900
        arg_ty param_no_default_var;
34948
900
        if (
34949
900
            (param_no_default_var = param_no_default_rule(p))  // param_no_default
34950
900
        )
34951
439
        {
34952
439
            D(fprintf(stderr, "%*c+ _tmp_123[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default"));
34953
439
            _res = param_no_default_var;
34954
439
            goto done;
34955
439
        }
34956
461
        p->mark = _mark;
34957
461
        D(fprintf(stderr, "%*c%s _tmp_123[%d-%d]: %s failed!\n", p->level, ' ',
34958
461
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
34959
461
    }
34960
0
    _res = NULL;
34961
1.46k
  done:
34962
1.46k
    p->level--;
34963
1.46k
    return _res;
34964
461
}
34965
34966
// _tmp_124: ')' | ','
34967
static void *
34968
_tmp_124_rule(Parser *p)
34969
39.9k
{
34970
39.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34971
0
        _Pypegen_stack_overflow(p);
34972
0
    }
34973
39.9k
    if (p->error_indicator) {
34974
0
        p->level--;
34975
0
        return NULL;
34976
0
    }
34977
39.9k
    void * _res = NULL;
34978
39.9k
    int _mark = p->mark;
34979
39.9k
    { // ')'
34980
39.9k
        if (p->error_indicator) {
34981
0
            p->level--;
34982
0
            return NULL;
34983
0
        }
34984
39.9k
        D(fprintf(stderr, "%*c> _tmp_124[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
34985
39.9k
        Token * _literal;
34986
39.9k
        if (
34987
39.9k
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
34988
39.9k
        )
34989
2
        {
34990
2
            D(fprintf(stderr, "%*c+ _tmp_124[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
34991
2
            _res = _literal;
34992
2
            goto done;
34993
2
        }
34994
39.9k
        p->mark = _mark;
34995
39.9k
        D(fprintf(stderr, "%*c%s _tmp_124[%d-%d]: %s failed!\n", p->level, ' ',
34996
39.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
34997
39.9k
    }
34998
0
    { // ','
34999
39.9k
        if (p->error_indicator) {
35000
0
            p->level--;
35001
0
            return NULL;
35002
0
        }
35003
39.9k
        D(fprintf(stderr, "%*c> _tmp_124[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
35004
39.9k
        Token * _literal;
35005
39.9k
        if (
35006
39.9k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35007
39.9k
        )
35008
13
        {
35009
13
            D(fprintf(stderr, "%*c+ _tmp_124[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
35010
13
            _res = _literal;
35011
13
            goto done;
35012
13
        }
35013
39.9k
        p->mark = _mark;
35014
39.9k
        D(fprintf(stderr, "%*c%s _tmp_124[%d-%d]: %s failed!\n", p->level, ' ',
35015
39.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
35016
39.9k
    }
35017
0
    _res = NULL;
35018
39.9k
  done:
35019
39.9k
    p->level--;
35020
39.9k
    return _res;
35021
39.9k
}
35022
35023
// _tmp_125: ')' | ',' (')' | '**')
35024
static void *
35025
_tmp_125_rule(Parser *p)
35026
1.46k
{
35027
1.46k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35028
0
        _Pypegen_stack_overflow(p);
35029
0
    }
35030
1.46k
    if (p->error_indicator) {
35031
0
        p->level--;
35032
0
        return NULL;
35033
0
    }
35034
1.46k
    void * _res = NULL;
35035
1.46k
    int _mark = p->mark;
35036
1.46k
    { // ')'
35037
1.46k
        if (p->error_indicator) {
35038
0
            p->level--;
35039
0
            return NULL;
35040
0
        }
35041
1.46k
        D(fprintf(stderr, "%*c> _tmp_125[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
35042
1.46k
        Token * _literal;
35043
1.46k
        if (
35044
1.46k
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
35045
1.46k
        )
35046
1
        {
35047
1
            D(fprintf(stderr, "%*c+ _tmp_125[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
35048
1
            _res = _literal;
35049
1
            goto done;
35050
1
        }
35051
1.46k
        p->mark = _mark;
35052
1.46k
        D(fprintf(stderr, "%*c%s _tmp_125[%d-%d]: %s failed!\n", p->level, ' ',
35053
1.46k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
35054
1.46k
    }
35055
0
    { // ',' (')' | '**')
35056
1.46k
        if (p->error_indicator) {
35057
0
            p->level--;
35058
0
            return NULL;
35059
0
        }
35060
1.46k
        D(fprintf(stderr, "%*c> _tmp_125[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')"));
35061
1.46k
        Token * _literal;
35062
1.46k
        void *_tmp_168_var;
35063
1.46k
        if (
35064
1.46k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35065
1.46k
            &&
35066
1.46k
            (_tmp_168_var = _tmp_168_rule(p))  // ')' | '**'
35067
1.46k
        )
35068
2
        {
35069
2
            D(fprintf(stderr, "%*c+ _tmp_125[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')"));
35070
2
            _res = _PyPegen_dummy_name(p, _literal, _tmp_168_var);
35071
2
            goto done;
35072
2
        }
35073
1.45k
        p->mark = _mark;
35074
1.45k
        D(fprintf(stderr, "%*c%s _tmp_125[%d-%d]: %s failed!\n", p->level, ' ',
35075
1.45k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (')' | '**')"));
35076
1.45k
    }
35077
0
    _res = NULL;
35078
1.46k
  done:
35079
1.46k
    p->level--;
35080
1.46k
    return _res;
35081
1.45k
}
35082
35083
// _tmp_126: param_no_default | ','
35084
static void *
35085
_tmp_126_rule(Parser *p)
35086
1.46k
{
35087
1.46k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35088
0
        _Pypegen_stack_overflow(p);
35089
0
    }
35090
1.46k
    if (p->error_indicator) {
35091
0
        p->level--;
35092
0
        return NULL;
35093
0
    }
35094
1.46k
    void * _res = NULL;
35095
1.46k
    int _mark = p->mark;
35096
1.46k
    { // param_no_default
35097
1.46k
        if (p->error_indicator) {
35098
0
            p->level--;
35099
0
            return NULL;
35100
0
        }
35101
1.46k
        D(fprintf(stderr, "%*c> _tmp_126[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
35102
1.46k
        arg_ty param_no_default_var;
35103
1.46k
        if (
35104
1.46k
            (param_no_default_var = param_no_default_rule(p))  // param_no_default
35105
1.46k
        )
35106
438
        {
35107
438
            D(fprintf(stderr, "%*c+ _tmp_126[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default"));
35108
438
            _res = param_no_default_var;
35109
438
            goto done;
35110
438
        }
35111
1.03k
        p->mark = _mark;
35112
1.03k
        D(fprintf(stderr, "%*c%s _tmp_126[%d-%d]: %s failed!\n", p->level, ' ',
35113
1.03k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
35114
1.03k
    }
35115
0
    { // ','
35116
1.03k
        if (p->error_indicator) {
35117
2
            p->level--;
35118
2
            return NULL;
35119
2
        }
35120
1.02k
        D(fprintf(stderr, "%*c> _tmp_126[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
35121
1.02k
        Token * _literal;
35122
1.02k
        if (
35123
1.02k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35124
1.02k
        )
35125
565
        {
35126
565
            D(fprintf(stderr, "%*c+ _tmp_126[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
35127
565
            _res = _literal;
35128
565
            goto done;
35129
565
        }
35130
463
        p->mark = _mark;
35131
463
        D(fprintf(stderr, "%*c%s _tmp_126[%d-%d]: %s failed!\n", p->level, ' ',
35132
463
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
35133
463
    }
35134
0
    _res = NULL;
35135
1.46k
  done:
35136
1.46k
    p->level--;
35137
1.46k
    return _res;
35138
463
}
35139
35140
// _tmp_127: '*' | '**' | '/'
35141
static void *
35142
_tmp_127_rule(Parser *p)
35143
45
{
35144
45
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35145
0
        _Pypegen_stack_overflow(p);
35146
0
    }
35147
45
    if (p->error_indicator) {
35148
0
        p->level--;
35149
0
        return NULL;
35150
0
    }
35151
45
    void * _res = NULL;
35152
45
    int _mark = p->mark;
35153
45
    { // '*'
35154
45
        if (p->error_indicator) {
35155
0
            p->level--;
35156
0
            return NULL;
35157
0
        }
35158
45
        D(fprintf(stderr, "%*c> _tmp_127[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
35159
45
        Token * _literal;
35160
45
        if (
35161
45
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
35162
45
        )
35163
1
        {
35164
1
            D(fprintf(stderr, "%*c+ _tmp_127[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
35165
1
            _res = _literal;
35166
1
            goto done;
35167
1
        }
35168
44
        p->mark = _mark;
35169
44
        D(fprintf(stderr, "%*c%s _tmp_127[%d-%d]: %s failed!\n", p->level, ' ',
35170
44
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
35171
44
    }
35172
0
    { // '**'
35173
44
        if (p->error_indicator) {
35174
0
            p->level--;
35175
0
            return NULL;
35176
0
        }
35177
44
        D(fprintf(stderr, "%*c> _tmp_127[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
35178
44
        Token * _literal;
35179
44
        if (
35180
44
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
35181
44
        )
35182
1
        {
35183
1
            D(fprintf(stderr, "%*c+ _tmp_127[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'"));
35184
1
            _res = _literal;
35185
1
            goto done;
35186
1
        }
35187
43
        p->mark = _mark;
35188
43
        D(fprintf(stderr, "%*c%s _tmp_127[%d-%d]: %s failed!\n", p->level, ' ',
35189
43
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
35190
43
    }
35191
0
    { // '/'
35192
43
        if (p->error_indicator) {
35193
0
            p->level--;
35194
0
            return NULL;
35195
0
        }
35196
43
        D(fprintf(stderr, "%*c> _tmp_127[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/'"));
35197
43
        Token * _literal;
35198
43
        if (
35199
43
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
35200
43
        )
35201
1
        {
35202
1
            D(fprintf(stderr, "%*c+ _tmp_127[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'/'"));
35203
1
            _res = _literal;
35204
1
            goto done;
35205
1
        }
35206
42
        p->mark = _mark;
35207
42
        D(fprintf(stderr, "%*c%s _tmp_127[%d-%d]: %s failed!\n", p->level, ' ',
35208
42
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'/'"));
35209
42
    }
35210
0
    _res = NULL;
35211
45
  done:
35212
45
    p->level--;
35213
45
    return _res;
35214
42
}
35215
35216
// _tmp_128: lambda_slash_no_default | lambda_slash_with_default
35217
static void *
35218
_tmp_128_rule(Parser *p)
35219
18.3k
{
35220
18.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35221
0
        _Pypegen_stack_overflow(p);
35222
0
    }
35223
18.3k
    if (p->error_indicator) {
35224
0
        p->level--;
35225
0
        return NULL;
35226
0
    }
35227
18.3k
    void * _res = NULL;
35228
18.3k
    int _mark = p->mark;
35229
18.3k
    { // lambda_slash_no_default
35230
18.3k
        if (p->error_indicator) {
35231
0
            p->level--;
35232
0
            return NULL;
35233
0
        }
35234
18.3k
        D(fprintf(stderr, "%*c> _tmp_128[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default"));
35235
18.3k
        asdl_arg_seq* lambda_slash_no_default_var;
35236
18.3k
        if (
35237
18.3k
            (lambda_slash_no_default_var = lambda_slash_no_default_rule(p))  // lambda_slash_no_default
35238
18.3k
        )
35239
782
        {
35240
782
            D(fprintf(stderr, "%*c+ _tmp_128[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default"));
35241
782
            _res = lambda_slash_no_default_var;
35242
782
            goto done;
35243
782
        }
35244
17.5k
        p->mark = _mark;
35245
17.5k
        D(fprintf(stderr, "%*c%s _tmp_128[%d-%d]: %s failed!\n", p->level, ' ',
35246
17.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_no_default"));
35247
17.5k
    }
35248
0
    { // lambda_slash_with_default
35249
17.5k
        if (p->error_indicator) {
35250
2
            p->level--;
35251
2
            return NULL;
35252
2
        }
35253
17.5k
        D(fprintf(stderr, "%*c> _tmp_128[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
35254
17.5k
        SlashWithDefault* lambda_slash_with_default_var;
35255
17.5k
        if (
35256
17.5k
            (lambda_slash_with_default_var = lambda_slash_with_default_rule(p))  // lambda_slash_with_default
35257
17.5k
        )
35258
2.25k
        {
35259
2.25k
            D(fprintf(stderr, "%*c+ _tmp_128[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
35260
2.25k
            _res = lambda_slash_with_default_var;
35261
2.25k
            goto done;
35262
2.25k
        }
35263
15.3k
        p->mark = _mark;
35264
15.3k
        D(fprintf(stderr, "%*c%s _tmp_128[%d-%d]: %s failed!\n", p->level, ' ',
35265
15.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default"));
35266
15.3k
    }
35267
0
    _res = NULL;
35268
18.3k
  done:
35269
18.3k
    p->level--;
35270
18.3k
    return _res;
35271
15.3k
}
35272
35273
// _loop0_129: ',' lambda_param
35274
static asdl_seq *
35275
_loop0_129_rule(Parser *p)
35276
58
{
35277
58
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35278
0
        _Pypegen_stack_overflow(p);
35279
0
    }
35280
58
    if (p->error_indicator) {
35281
0
        p->level--;
35282
0
        return NULL;
35283
0
    }
35284
58
    void *_res = NULL;
35285
58
    int _mark = p->mark;
35286
58
    void **_children = PyMem_Malloc(sizeof(void *));
35287
58
    if (!_children) {
35288
0
        p->error_indicator = 1;
35289
0
        PyErr_NoMemory();
35290
0
        p->level--;
35291
0
        return NULL;
35292
0
    }
35293
58
    Py_ssize_t _children_capacity = 1;
35294
58
    Py_ssize_t _n = 0;
35295
58
    { // ',' lambda_param
35296
58
        if (p->error_indicator) {
35297
0
            p->level--;
35298
0
            return NULL;
35299
0
        }
35300
58
        D(fprintf(stderr, "%*c> _loop0_129[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' lambda_param"));
35301
58
        Token * _literal;
35302
58
        arg_ty elem;
35303
58
        while (
35304
3.59k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35305
3.59k
            &&
35306
3.59k
            (elem = lambda_param_rule(p))  // lambda_param
35307
58
        )
35308
3.53k
        {
35309
3.53k
            _res = elem;
35310
3.53k
            if (_res == NULL && PyErr_Occurred()) {
35311
0
                p->error_indicator = 1;
35312
0
                PyMem_Free(_children);
35313
0
                p->level--;
35314
0
                return NULL;
35315
0
            }
35316
3.53k
            if (_n == _children_capacity) {
35317
152
                _children_capacity *= 2;
35318
152
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
35319
152
                if (!_new_children) {
35320
0
                    PyMem_Free(_children);
35321
0
                    p->error_indicator = 1;
35322
0
                    PyErr_NoMemory();
35323
0
                    p->level--;
35324
0
                    return NULL;
35325
0
                }
35326
152
                _children = _new_children;
35327
152
            }
35328
3.53k
            _children[_n++] = _res;
35329
3.53k
            _mark = p->mark;
35330
3.53k
        }
35331
58
        p->mark = _mark;
35332
58
        D(fprintf(stderr, "%*c%s _loop0_129[%d-%d]: %s failed!\n", p->level, ' ',
35333
58
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' lambda_param"));
35334
58
    }
35335
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
35336
58
    if (!_seq) {
35337
0
        PyMem_Free(_children);
35338
0
        p->error_indicator = 1;
35339
0
        PyErr_NoMemory();
35340
0
        p->level--;
35341
0
        return NULL;
35342
0
    }
35343
3.59k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
35344
58
    PyMem_Free(_children);
35345
58
    p->level--;
35346
58
    return _seq;
35347
58
}
35348
35349
// _gather_130: lambda_param _loop0_129
35350
static asdl_seq *
35351
_gather_130_rule(Parser *p)
35352
65
{
35353
65
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35354
0
        _Pypegen_stack_overflow(p);
35355
0
    }
35356
65
    if (p->error_indicator) {
35357
0
        p->level--;
35358
0
        return NULL;
35359
0
    }
35360
65
    asdl_seq * _res = NULL;
35361
65
    int _mark = p->mark;
35362
65
    { // lambda_param _loop0_129
35363
65
        if (p->error_indicator) {
35364
0
            p->level--;
35365
0
            return NULL;
35366
0
        }
35367
65
        D(fprintf(stderr, "%*c> _gather_130[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param _loop0_129"));
35368
65
        arg_ty elem;
35369
65
        asdl_seq * seq;
35370
65
        if (
35371
65
            (elem = lambda_param_rule(p))  // lambda_param
35372
65
            &&
35373
65
            (seq = _loop0_129_rule(p))  // _loop0_129
35374
65
        )
35375
58
        {
35376
58
            D(fprintf(stderr, "%*c+ _gather_130[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param _loop0_129"));
35377
58
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
35378
58
            goto done;
35379
58
        }
35380
7
        p->mark = _mark;
35381
7
        D(fprintf(stderr, "%*c%s _gather_130[%d-%d]: %s failed!\n", p->level, ' ',
35382
7
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param _loop0_129"));
35383
7
    }
35384
0
    _res = NULL;
35385
65
  done:
35386
65
    p->level--;
35387
65
    return _res;
35388
7
}
35389
35390
// _tmp_131: ',' | lambda_param_no_default
35391
static void *
35392
_tmp_131_rule(Parser *p)
35393
2.52k
{
35394
2.52k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35395
0
        _Pypegen_stack_overflow(p);
35396
0
    }
35397
2.52k
    if (p->error_indicator) {
35398
0
        p->level--;
35399
0
        return NULL;
35400
0
    }
35401
2.52k
    void * _res = NULL;
35402
2.52k
    int _mark = p->mark;
35403
2.52k
    { // ','
35404
2.52k
        if (p->error_indicator) {
35405
0
            p->level--;
35406
0
            return NULL;
35407
0
        }
35408
2.52k
        D(fprintf(stderr, "%*c> _tmp_131[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
35409
2.52k
        Token * _literal;
35410
2.52k
        if (
35411
2.52k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35412
2.52k
        )
35413
1.13k
        {
35414
1.13k
            D(fprintf(stderr, "%*c+ _tmp_131[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
35415
1.13k
            _res = _literal;
35416
1.13k
            goto done;
35417
1.13k
        }
35418
1.38k
        p->mark = _mark;
35419
1.38k
        D(fprintf(stderr, "%*c%s _tmp_131[%d-%d]: %s failed!\n", p->level, ' ',
35420
1.38k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
35421
1.38k
    }
35422
0
    { // lambda_param_no_default
35423
1.38k
        if (p->error_indicator) {
35424
2
            p->level--;
35425
2
            return NULL;
35426
2
        }
35427
1.38k
        D(fprintf(stderr, "%*c> _tmp_131[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
35428
1.38k
        arg_ty lambda_param_no_default_var;
35429
1.38k
        if (
35430
1.38k
            (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
35431
1.38k
        )
35432
989
        {
35433
989
            D(fprintf(stderr, "%*c+ _tmp_131[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
35434
989
            _res = lambda_param_no_default_var;
35435
989
            goto done;
35436
989
        }
35437
398
        p->mark = _mark;
35438
398
        D(fprintf(stderr, "%*c%s _tmp_131[%d-%d]: %s failed!\n", p->level, ' ',
35439
398
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
35440
398
    }
35441
0
    _res = NULL;
35442
2.52k
  done:
35443
2.52k
    p->level--;
35444
2.52k
    return _res;
35445
398
}
35446
35447
// _tmp_132: ':' | ',' (':' | '**')
35448
static void *
35449
_tmp_132_rule(Parser *p)
35450
2.29k
{
35451
2.29k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35452
0
        _Pypegen_stack_overflow(p);
35453
0
    }
35454
2.29k
    if (p->error_indicator) {
35455
0
        p->level--;
35456
0
        return NULL;
35457
0
    }
35458
2.29k
    void * _res = NULL;
35459
2.29k
    int _mark = p->mark;
35460
2.29k
    { // ':'
35461
2.29k
        if (p->error_indicator) {
35462
0
            p->level--;
35463
0
            return NULL;
35464
0
        }
35465
2.29k
        D(fprintf(stderr, "%*c> _tmp_132[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
35466
2.29k
        Token * _literal;
35467
2.29k
        if (
35468
2.29k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
35469
2.29k
        )
35470
5
        {
35471
5
            D(fprintf(stderr, "%*c+ _tmp_132[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
35472
5
            _res = _literal;
35473
5
            goto done;
35474
5
        }
35475
2.28k
        p->mark = _mark;
35476
2.28k
        D(fprintf(stderr, "%*c%s _tmp_132[%d-%d]: %s failed!\n", p->level, ' ',
35477
2.28k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
35478
2.28k
    }
35479
0
    { // ',' (':' | '**')
35480
2.28k
        if (p->error_indicator) {
35481
0
            p->level--;
35482
0
            return NULL;
35483
0
        }
35484
2.28k
        D(fprintf(stderr, "%*c> _tmp_132[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')"));
35485
2.28k
        Token * _literal;
35486
2.28k
        void *_tmp_169_var;
35487
2.28k
        if (
35488
2.28k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35489
2.28k
            &&
35490
2.28k
            (_tmp_169_var = _tmp_169_rule(p))  // ':' | '**'
35491
2.28k
        )
35492
2
        {
35493
2
            D(fprintf(stderr, "%*c+ _tmp_132[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')"));
35494
2
            _res = _PyPegen_dummy_name(p, _literal, _tmp_169_var);
35495
2
            goto done;
35496
2
        }
35497
2.28k
        p->mark = _mark;
35498
2.28k
        D(fprintf(stderr, "%*c%s _tmp_132[%d-%d]: %s failed!\n", p->level, ' ',
35499
2.28k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (':' | '**')"));
35500
2.28k
    }
35501
0
    _res = NULL;
35502
2.29k
  done:
35503
2.29k
    p->level--;
35504
2.29k
    return _res;
35505
2.28k
}
35506
35507
// _tmp_133: lambda_param_no_default | ','
35508
static void *
35509
_tmp_133_rule(Parser *p)
35510
2.46k
{
35511
2.46k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35512
0
        _Pypegen_stack_overflow(p);
35513
0
    }
35514
2.46k
    if (p->error_indicator) {
35515
0
        p->level--;
35516
0
        return NULL;
35517
0
    }
35518
2.46k
    void * _res = NULL;
35519
2.46k
    int _mark = p->mark;
35520
2.46k
    { // lambda_param_no_default
35521
2.46k
        if (p->error_indicator) {
35522
0
            p->level--;
35523
0
            return NULL;
35524
0
        }
35525
2.46k
        D(fprintf(stderr, "%*c> _tmp_133[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
35526
2.46k
        arg_ty lambda_param_no_default_var;
35527
2.46k
        if (
35528
2.46k
            (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
35529
2.46k
        )
35530
960
        {
35531
960
            D(fprintf(stderr, "%*c+ _tmp_133[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
35532
960
            _res = lambda_param_no_default_var;
35533
960
            goto done;
35534
960
        }
35535
1.50k
        p->mark = _mark;
35536
1.50k
        D(fprintf(stderr, "%*c%s _tmp_133[%d-%d]: %s failed!\n", p->level, ' ',
35537
1.50k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
35538
1.50k
    }
35539
0
    { // ','
35540
1.50k
        if (p->error_indicator) {
35541
2
            p->level--;
35542
2
            return NULL;
35543
2
        }
35544
1.49k
        D(fprintf(stderr, "%*c> _tmp_133[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
35545
1.49k
        Token * _literal;
35546
1.49k
        if (
35547
1.49k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35548
1.49k
        )
35549
935
        {
35550
935
            D(fprintf(stderr, "%*c+ _tmp_133[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
35551
935
            _res = _literal;
35552
935
            goto done;
35553
935
        }
35554
564
        p->mark = _mark;
35555
564
        D(fprintf(stderr, "%*c%s _tmp_133[%d-%d]: %s failed!\n", p->level, ' ',
35556
564
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
35557
564
    }
35558
0
    _res = NULL;
35559
2.45k
  done:
35560
2.45k
    p->level--;
35561
2.45k
    return _res;
35562
564
}
35563
35564
// _tmp_134: bitwise_or ((',' bitwise_or))* ','?
35565
static void *
35566
_tmp_134_rule(Parser *p)
35567
2.85k
{
35568
2.85k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35569
0
        _Pypegen_stack_overflow(p);
35570
0
    }
35571
2.85k
    if (p->error_indicator) {
35572
0
        p->level--;
35573
0
        return NULL;
35574
0
    }
35575
2.85k
    void * _res = NULL;
35576
2.85k
    int _mark = p->mark;
35577
2.85k
    { // bitwise_or ((',' bitwise_or))* ','?
35578
2.85k
        if (p->error_indicator) {
35579
0
            p->level--;
35580
0
            return NULL;
35581
0
        }
35582
2.85k
        D(fprintf(stderr, "%*c> _tmp_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or ((',' bitwise_or))* ','?"));
35583
2.85k
        asdl_seq * _loop0_170_var;
35584
2.85k
        void *_opt_var;
35585
2.85k
        UNUSED(_opt_var); // Silence compiler warnings
35586
2.85k
        expr_ty bitwise_or_var;
35587
2.85k
        if (
35588
2.85k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
35589
2.85k
            &&
35590
2.85k
            (_loop0_170_var = _loop0_170_rule(p))  // ((',' bitwise_or))*
35591
2.85k
            &&
35592
2.85k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
35593
2.85k
        )
35594
124
        {
35595
124
            D(fprintf(stderr, "%*c+ _tmp_134[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or ((',' bitwise_or))* ','?"));
35596
124
            _res = _PyPegen_dummy_name(p, bitwise_or_var, _loop0_170_var, _opt_var);
35597
124
            goto done;
35598
124
        }
35599
2.72k
        p->mark = _mark;
35600
2.72k
        D(fprintf(stderr, "%*c%s _tmp_134[%d-%d]: %s failed!\n", p->level, ' ',
35601
2.72k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or ((',' bitwise_or))* ','?"));
35602
2.72k
    }
35603
0
    _res = NULL;
35604
2.85k
  done:
35605
2.85k
    p->level--;
35606
2.85k
    return _res;
35607
2.72k
}
35608
35609
// _loop0_135: ',' dotted_name
35610
static asdl_seq *
35611
_loop0_135_rule(Parser *p)
35612
842
{
35613
842
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35614
0
        _Pypegen_stack_overflow(p);
35615
0
    }
35616
842
    if (p->error_indicator) {
35617
0
        p->level--;
35618
0
        return NULL;
35619
0
    }
35620
842
    void *_res = NULL;
35621
842
    int _mark = p->mark;
35622
842
    void **_children = PyMem_Malloc(sizeof(void *));
35623
842
    if (!_children) {
35624
0
        p->error_indicator = 1;
35625
0
        PyErr_NoMemory();
35626
0
        p->level--;
35627
0
        return NULL;
35628
0
    }
35629
842
    Py_ssize_t _children_capacity = 1;
35630
842
    Py_ssize_t _n = 0;
35631
842
    { // ',' dotted_name
35632
842
        if (p->error_indicator) {
35633
0
            p->level--;
35634
0
            return NULL;
35635
0
        }
35636
842
        D(fprintf(stderr, "%*c> _loop0_135[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' dotted_name"));
35637
842
        Token * _literal;
35638
842
        expr_ty elem;
35639
842
        while (
35640
2.67k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35641
2.67k
            &&
35642
2.67k
            (elem = dotted_name_rule(p))  // dotted_name
35643
842
        )
35644
1.83k
        {
35645
1.83k
            _res = elem;
35646
1.83k
            if (_res == NULL && PyErr_Occurred()) {
35647
0
                p->error_indicator = 1;
35648
0
                PyMem_Free(_children);
35649
0
                p->level--;
35650
0
                return NULL;
35651
0
            }
35652
1.83k
            if (_n == _children_capacity) {
35653
541
                _children_capacity *= 2;
35654
541
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
35655
541
                if (!_new_children) {
35656
0
                    PyMem_Free(_children);
35657
0
                    p->error_indicator = 1;
35658
0
                    PyErr_NoMemory();
35659
0
                    p->level--;
35660
0
                    return NULL;
35661
0
                }
35662
541
                _children = _new_children;
35663
541
            }
35664
1.83k
            _children[_n++] = _res;
35665
1.83k
            _mark = p->mark;
35666
1.83k
        }
35667
842
        p->mark = _mark;
35668
842
        D(fprintf(stderr, "%*c%s _loop0_135[%d-%d]: %s failed!\n", p->level, ' ',
35669
842
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' dotted_name"));
35670
842
    }
35671
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
35672
842
    if (!_seq) {
35673
0
        PyMem_Free(_children);
35674
0
        p->error_indicator = 1;
35675
0
        PyErr_NoMemory();
35676
0
        p->level--;
35677
0
        return NULL;
35678
0
    }
35679
2.67k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
35680
842
    PyMem_Free(_children);
35681
842
    p->level--;
35682
842
    return _seq;
35683
842
}
35684
35685
// _gather_136: dotted_name _loop0_135
35686
static asdl_seq *
35687
_gather_136_rule(Parser *p)
35688
852
{
35689
852
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35690
0
        _Pypegen_stack_overflow(p);
35691
0
    }
35692
852
    if (p->error_indicator) {
35693
0
        p->level--;
35694
0
        return NULL;
35695
0
    }
35696
852
    asdl_seq * _res = NULL;
35697
852
    int _mark = p->mark;
35698
852
    { // dotted_name _loop0_135
35699
852
        if (p->error_indicator) {
35700
0
            p->level--;
35701
0
            return NULL;
35702
0
        }
35703
852
        D(fprintf(stderr, "%*c> _gather_136[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name _loop0_135"));
35704
852
        expr_ty elem;
35705
852
        asdl_seq * seq;
35706
852
        if (
35707
852
            (elem = dotted_name_rule(p))  // dotted_name
35708
852
            &&
35709
852
            (seq = _loop0_135_rule(p))  // _loop0_135
35710
852
        )
35711
842
        {
35712
842
            D(fprintf(stderr, "%*c+ _gather_136[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name _loop0_135"));
35713
842
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
35714
842
            goto done;
35715
842
        }
35716
10
        p->mark = _mark;
35717
10
        D(fprintf(stderr, "%*c%s _gather_136[%d-%d]: %s failed!\n", p->level, ' ',
35718
10
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name _loop0_135"));
35719
10
    }
35720
0
    _res = NULL;
35721
852
  done:
35722
852
    p->level--;
35723
852
    return _res;
35724
10
}
35725
35726
// _tmp_137: NAME (',' | ')' | NEWLINE)
35727
static void *
35728
_tmp_137_rule(Parser *p)
35729
458
{
35730
458
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35731
0
        _Pypegen_stack_overflow(p);
35732
0
    }
35733
458
    if (p->error_indicator) {
35734
0
        p->level--;
35735
0
        return NULL;
35736
0
    }
35737
458
    void * _res = NULL;
35738
458
    int _mark = p->mark;
35739
458
    { // NAME (',' | ')' | NEWLINE)
35740
458
        if (p->error_indicator) {
35741
0
            p->level--;
35742
0
            return NULL;
35743
0
        }
35744
458
        D(fprintf(stderr, "%*c> _tmp_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME (',' | ')' | NEWLINE)"));
35745
458
        void *_tmp_171_var;
35746
458
        expr_ty name_var;
35747
458
        if (
35748
458
            (name_var = _PyPegen_name_token(p))  // NAME
35749
458
            &&
35750
458
            (_tmp_171_var = _tmp_171_rule(p))  // ',' | ')' | NEWLINE
35751
458
        )
35752
422
        {
35753
422
            D(fprintf(stderr, "%*c+ _tmp_137[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME (',' | ')' | NEWLINE)"));
35754
422
            _res = _PyPegen_dummy_name(p, name_var, _tmp_171_var);
35755
422
            goto done;
35756
422
        }
35757
36
        p->mark = _mark;
35758
36
        D(fprintf(stderr, "%*c%s _tmp_137[%d-%d]: %s failed!\n", p->level, ' ',
35759
36
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME (',' | ')' | NEWLINE)"));
35760
36
    }
35761
0
    _res = NULL;
35762
458
  done:
35763
458
    p->level--;
35764
458
    return _res;
35765
36
}
35766
35767
// _loop0_138: ',' (expression ['as' star_target])
35768
static asdl_seq *
35769
_loop0_138_rule(Parser *p)
35770
2.11k
{
35771
2.11k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35772
0
        _Pypegen_stack_overflow(p);
35773
0
    }
35774
2.11k
    if (p->error_indicator) {
35775
0
        p->level--;
35776
0
        return NULL;
35777
0
    }
35778
2.11k
    void *_res = NULL;
35779
2.11k
    int _mark = p->mark;
35780
2.11k
    void **_children = PyMem_Malloc(sizeof(void *));
35781
2.11k
    if (!_children) {
35782
0
        p->error_indicator = 1;
35783
0
        PyErr_NoMemory();
35784
0
        p->level--;
35785
0
        return NULL;
35786
0
    }
35787
2.11k
    Py_ssize_t _children_capacity = 1;
35788
2.11k
    Py_ssize_t _n = 0;
35789
2.11k
    { // ',' (expression ['as' star_target])
35790
2.11k
        if (p->error_indicator) {
35791
0
            p->level--;
35792
0
            return NULL;
35793
0
        }
35794
2.11k
        D(fprintf(stderr, "%*c> _loop0_138[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expression ['as' star_target])"));
35795
2.11k
        Token * _literal;
35796
2.11k
        void *elem;
35797
2.11k
        while (
35798
4.65k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35799
4.65k
            &&
35800
4.65k
            (elem = _tmp_172_rule(p))  // expression ['as' star_target]
35801
2.11k
        )
35802
2.54k
        {
35803
2.54k
            _res = elem;
35804
2.54k
            if (_res == NULL && PyErr_Occurred()) {
35805
0
                p->error_indicator = 1;
35806
0
                PyMem_Free(_children);
35807
0
                p->level--;
35808
0
                return NULL;
35809
0
            }
35810
2.54k
            if (_n == _children_capacity) {
35811
958
                _children_capacity *= 2;
35812
958
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
35813
958
                if (!_new_children) {
35814
0
                    PyMem_Free(_children);
35815
0
                    p->error_indicator = 1;
35816
0
                    PyErr_NoMemory();
35817
0
                    p->level--;
35818
0
                    return NULL;
35819
0
                }
35820
958
                _children = _new_children;
35821
958
            }
35822
2.54k
            _children[_n++] = _res;
35823
2.54k
            _mark = p->mark;
35824
2.54k
        }
35825
2.11k
        p->mark = _mark;
35826
2.11k
        D(fprintf(stderr, "%*c%s _loop0_138[%d-%d]: %s failed!\n", p->level, ' ',
35827
2.11k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expression ['as' star_target])"));
35828
2.11k
    }
35829
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
35830
2.11k
    if (!_seq) {
35831
0
        PyMem_Free(_children);
35832
0
        p->error_indicator = 1;
35833
0
        PyErr_NoMemory();
35834
0
        p->level--;
35835
0
        return NULL;
35836
0
    }
35837
4.65k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
35838
2.11k
    PyMem_Free(_children);
35839
2.11k
    p->level--;
35840
2.11k
    return _seq;
35841
2.11k
}
35842
35843
// _gather_139: (expression ['as' star_target]) _loop0_138
35844
static asdl_seq *
35845
_gather_139_rule(Parser *p)
35846
2.52k
{
35847
2.52k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35848
0
        _Pypegen_stack_overflow(p);
35849
0
    }
35850
2.52k
    if (p->error_indicator) {
35851
0
        p->level--;
35852
0
        return NULL;
35853
0
    }
35854
2.52k
    asdl_seq * _res = NULL;
35855
2.52k
    int _mark = p->mark;
35856
2.52k
    { // (expression ['as' star_target]) _loop0_138
35857
2.52k
        if (p->error_indicator) {
35858
0
            p->level--;
35859
0
            return NULL;
35860
0
        }
35861
2.52k
        D(fprintf(stderr, "%*c> _gather_139[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_138"));
35862
2.52k
        void *elem;
35863
2.52k
        asdl_seq * seq;
35864
2.52k
        if (
35865
2.52k
            (elem = _tmp_172_rule(p))  // expression ['as' star_target]
35866
2.52k
            &&
35867
2.52k
            (seq = _loop0_138_rule(p))  // _loop0_138
35868
2.52k
        )
35869
2.11k
        {
35870
2.11k
            D(fprintf(stderr, "%*c+ _gather_139[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_138"));
35871
2.11k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
35872
2.11k
            goto done;
35873
2.11k
        }
35874
413
        p->mark = _mark;
35875
413
        D(fprintf(stderr, "%*c%s _gather_139[%d-%d]: %s failed!\n", p->level, ' ',
35876
413
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expression ['as' star_target]) _loop0_138"));
35877
413
    }
35878
0
    _res = NULL;
35879
2.52k
  done:
35880
2.52k
    p->level--;
35881
2.52k
    return _res;
35882
413
}
35883
35884
// _loop0_140: ',' (expressions ['as' star_target])
35885
static asdl_seq *
35886
_loop0_140_rule(Parser *p)
35887
1.27k
{
35888
1.27k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35889
0
        _Pypegen_stack_overflow(p);
35890
0
    }
35891
1.27k
    if (p->error_indicator) {
35892
0
        p->level--;
35893
0
        return NULL;
35894
0
    }
35895
1.27k
    void *_res = NULL;
35896
1.27k
    int _mark = p->mark;
35897
1.27k
    void **_children = PyMem_Malloc(sizeof(void *));
35898
1.27k
    if (!_children) {
35899
0
        p->error_indicator = 1;
35900
0
        PyErr_NoMemory();
35901
0
        p->level--;
35902
0
        return NULL;
35903
0
    }
35904
1.27k
    Py_ssize_t _children_capacity = 1;
35905
1.27k
    Py_ssize_t _n = 0;
35906
1.27k
    { // ',' (expressions ['as' star_target])
35907
1.27k
        if (p->error_indicator) {
35908
0
            p->level--;
35909
0
            return NULL;
35910
0
        }
35911
1.27k
        D(fprintf(stderr, "%*c> _loop0_140[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expressions ['as' star_target])"));
35912
1.27k
        Token * _literal;
35913
1.27k
        void *elem;
35914
1.27k
        while (
35915
2.73k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35916
2.73k
            &&
35917
2.73k
            (elem = _tmp_173_rule(p))  // expressions ['as' star_target]
35918
1.27k
        )
35919
1.45k
        {
35920
1.45k
            _res = elem;
35921
1.45k
            if (_res == NULL && PyErr_Occurred()) {
35922
0
                p->error_indicator = 1;
35923
0
                PyMem_Free(_children);
35924
0
                p->level--;
35925
0
                return NULL;
35926
0
            }
35927
1.45k
            if (_n == _children_capacity) {
35928
296
                _children_capacity *= 2;
35929
296
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
35930
296
                if (!_new_children) {
35931
0
                    PyMem_Free(_children);
35932
0
                    p->error_indicator = 1;
35933
0
                    PyErr_NoMemory();
35934
0
                    p->level--;
35935
0
                    return NULL;
35936
0
                }
35937
296
                _children = _new_children;
35938
296
            }
35939
1.45k
            _children[_n++] = _res;
35940
1.45k
            _mark = p->mark;
35941
1.45k
        }
35942
1.27k
        p->mark = _mark;
35943
1.27k
        D(fprintf(stderr, "%*c%s _loop0_140[%d-%d]: %s failed!\n", p->level, ' ',
35944
1.27k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expressions ['as' star_target])"));
35945
1.27k
    }
35946
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
35947
1.27k
    if (!_seq) {
35948
0
        PyMem_Free(_children);
35949
0
        p->error_indicator = 1;
35950
0
        PyErr_NoMemory();
35951
0
        p->level--;
35952
0
        return NULL;
35953
0
    }
35954
2.73k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
35955
1.27k
    PyMem_Free(_children);
35956
1.27k
    p->level--;
35957
1.27k
    return _seq;
35958
1.27k
}
35959
35960
// _gather_141: (expressions ['as' star_target]) _loop0_140
35961
static asdl_seq *
35962
_gather_141_rule(Parser *p)
35963
1.81k
{
35964
1.81k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35965
0
        _Pypegen_stack_overflow(p);
35966
0
    }
35967
1.81k
    if (p->error_indicator) {
35968
0
        p->level--;
35969
0
        return NULL;
35970
0
    }
35971
1.81k
    asdl_seq * _res = NULL;
35972
1.81k
    int _mark = p->mark;
35973
1.81k
    { // (expressions ['as' star_target]) _loop0_140
35974
1.81k
        if (p->error_indicator) {
35975
0
            p->level--;
35976
0
            return NULL;
35977
0
        }
35978
1.81k
        D(fprintf(stderr, "%*c> _gather_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_140"));
35979
1.81k
        void *elem;
35980
1.81k
        asdl_seq * seq;
35981
1.81k
        if (
35982
1.81k
            (elem = _tmp_173_rule(p))  // expressions ['as' star_target]
35983
1.81k
            &&
35984
1.81k
            (seq = _loop0_140_rule(p))  // _loop0_140
35985
1.81k
        )
35986
1.27k
        {
35987
1.27k
            D(fprintf(stderr, "%*c+ _gather_141[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_140"));
35988
1.27k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
35989
1.27k
            goto done;
35990
1.27k
        }
35991
540
        p->mark = _mark;
35992
540
        D(fprintf(stderr, "%*c%s _gather_141[%d-%d]: %s failed!\n", p->level, ' ',
35993
540
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expressions ['as' star_target]) _loop0_140"));
35994
540
    }
35995
0
    _res = NULL;
35996
1.81k
  done:
35997
1.81k
    p->level--;
35998
1.81k
    return _res;
35999
540
}
36000
36001
// _tmp_142: 'except' | 'finally'
36002
static void *
36003
_tmp_142_rule(Parser *p)
36004
1.81k
{
36005
1.81k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36006
0
        _Pypegen_stack_overflow(p);
36007
0
    }
36008
1.81k
    if (p->error_indicator) {
36009
0
        p->level--;
36010
0
        return NULL;
36011
0
    }
36012
1.81k
    void * _res = NULL;
36013
1.81k
    int _mark = p->mark;
36014
1.81k
    { // 'except'
36015
1.81k
        if (p->error_indicator) {
36016
0
            p->level--;
36017
0
            return NULL;
36018
0
        }
36019
1.81k
        D(fprintf(stderr, "%*c> _tmp_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except'"));
36020
1.81k
        Token * _keyword;
36021
1.81k
        if (
36022
1.81k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
36023
1.81k
        )
36024
1.55k
        {
36025
1.55k
            D(fprintf(stderr, "%*c+ _tmp_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except'"));
36026
1.55k
            _res = _keyword;
36027
1.55k
            goto done;
36028
1.55k
        }
36029
266
        p->mark = _mark;
36030
266
        D(fprintf(stderr, "%*c%s _tmp_142[%d-%d]: %s failed!\n", p->level, ' ',
36031
266
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except'"));
36032
266
    }
36033
0
    { // 'finally'
36034
266
        if (p->error_indicator) {
36035
1
            p->level--;
36036
1
            return NULL;
36037
1
        }
36038
265
        D(fprintf(stderr, "%*c> _tmp_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally'"));
36039
265
        Token * _keyword;
36040
265
        if (
36041
265
            (_keyword = _PyPegen_expect_token(p, 678))  // token='finally'
36042
265
        )
36043
228
        {
36044
228
            D(fprintf(stderr, "%*c+ _tmp_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally'"));
36045
228
            _res = _keyword;
36046
228
            goto done;
36047
228
        }
36048
37
        p->mark = _mark;
36049
37
        D(fprintf(stderr, "%*c%s _tmp_142[%d-%d]: %s failed!\n", p->level, ' ',
36050
37
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally'"));
36051
37
    }
36052
0
    _res = NULL;
36053
1.81k
  done:
36054
1.81k
    p->level--;
36055
1.81k
    return _res;
36056
37
}
36057
36058
// _loop0_143: block
36059
static asdl_seq *
36060
_loop0_143_rule(Parser *p)
36061
3.72k
{
36062
3.72k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36063
0
        _Pypegen_stack_overflow(p);
36064
0
    }
36065
3.72k
    if (p->error_indicator) {
36066
0
        p->level--;
36067
0
        return NULL;
36068
0
    }
36069
3.72k
    void *_res = NULL;
36070
3.72k
    int _mark = p->mark;
36071
3.72k
    void **_children = PyMem_Malloc(sizeof(void *));
36072
3.72k
    if (!_children) {
36073
0
        p->error_indicator = 1;
36074
0
        PyErr_NoMemory();
36075
0
        p->level--;
36076
0
        return NULL;
36077
0
    }
36078
3.72k
    Py_ssize_t _children_capacity = 1;
36079
3.72k
    Py_ssize_t _n = 0;
36080
3.72k
    { // block
36081
3.72k
        if (p->error_indicator) {
36082
0
            p->level--;
36083
0
            return NULL;
36084
0
        }
36085
3.72k
        D(fprintf(stderr, "%*c> _loop0_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "block"));
36086
3.72k
        asdl_stmt_seq* block_var;
36087
3.72k
        while (
36088
7.25k
            (block_var = block_rule(p))  // block
36089
3.72k
        )
36090
3.53k
        {
36091
3.53k
            _res = block_var;
36092
3.53k
            if (_n == _children_capacity) {
36093
0
                _children_capacity *= 2;
36094
0
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
36095
0
                if (!_new_children) {
36096
0
                    PyMem_Free(_children);
36097
0
                    p->error_indicator = 1;
36098
0
                    PyErr_NoMemory();
36099
0
                    p->level--;
36100
0
                    return NULL;
36101
0
                }
36102
0
                _children = _new_children;
36103
0
            }
36104
3.53k
            _children[_n++] = _res;
36105
3.53k
            _mark = p->mark;
36106
3.53k
        }
36107
3.72k
        p->mark = _mark;
36108
3.72k
        D(fprintf(stderr, "%*c%s _loop0_143[%d-%d]: %s failed!\n", p->level, ' ',
36109
3.72k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "block"));
36110
3.72k
    }
36111
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
36112
3.72k
    if (!_seq) {
36113
0
        PyMem_Free(_children);
36114
0
        p->error_indicator = 1;
36115
0
        PyErr_NoMemory();
36116
0
        p->level--;
36117
0
        return NULL;
36118
0
    }
36119
7.25k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
36120
3.72k
    PyMem_Free(_children);
36121
3.72k
    p->level--;
36122
3.72k
    return _seq;
36123
3.72k
}
36124
36125
// _tmp_144: expression ['as' NAME]
36126
static void *
36127
_tmp_144_rule(Parser *p)
36128
16
{
36129
16
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36130
0
        _Pypegen_stack_overflow(p);
36131
0
    }
36132
16
    if (p->error_indicator) {
36133
0
        p->level--;
36134
0
        return NULL;
36135
0
    }
36136
16
    void * _res = NULL;
36137
16
    int _mark = p->mark;
36138
16
    { // expression ['as' NAME]
36139
16
        if (p->error_indicator) {
36140
0
            p->level--;
36141
0
            return NULL;
36142
0
        }
36143
16
        D(fprintf(stderr, "%*c> _tmp_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' NAME]"));
36144
16
        void *_opt_var;
36145
16
        UNUSED(_opt_var); // Silence compiler warnings
36146
16
        expr_ty expression_var;
36147
16
        if (
36148
16
            (expression_var = expression_rule(p))  // expression
36149
16
            &&
36150
16
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
36151
16
        )
36152
1
        {
36153
1
            D(fprintf(stderr, "%*c+ _tmp_144[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' NAME]"));
36154
1
            _res = _PyPegen_dummy_name(p, expression_var, _opt_var);
36155
1
            goto done;
36156
1
        }
36157
15
        p->mark = _mark;
36158
15
        D(fprintf(stderr, "%*c%s _tmp_144[%d-%d]: %s failed!\n", p->level, ' ',
36159
15
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' NAME]"));
36160
15
    }
36161
0
    _res = NULL;
36162
16
  done:
36163
16
    p->level--;
36164
16
    return _res;
36165
15
}
36166
36167
// _tmp_145: NEWLINE | ':'
36168
static void *
36169
_tmp_145_rule(Parser *p)
36170
90
{
36171
90
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36172
0
        _Pypegen_stack_overflow(p);
36173
0
    }
36174
90
    if (p->error_indicator) {
36175
0
        p->level--;
36176
0
        return NULL;
36177
0
    }
36178
90
    void * _res = NULL;
36179
90
    int _mark = p->mark;
36180
90
    { // NEWLINE
36181
90
        if (p->error_indicator) {
36182
0
            p->level--;
36183
0
            return NULL;
36184
0
        }
36185
90
        D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
36186
90
        Token * newline_var;
36187
90
        if (
36188
90
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
36189
90
        )
36190
7
        {
36191
7
            D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
36192
7
            _res = newline_var;
36193
7
            goto done;
36194
7
        }
36195
83
        p->mark = _mark;
36196
83
        D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ',
36197
83
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
36198
83
    }
36199
0
    { // ':'
36200
83
        if (p->error_indicator) {
36201
0
            p->level--;
36202
0
            return NULL;
36203
0
        }
36204
83
        D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
36205
83
        Token * _literal;
36206
83
        if (
36207
83
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
36208
83
        )
36209
1
        {
36210
1
            D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
36211
1
            _res = _literal;
36212
1
            goto done;
36213
1
        }
36214
82
        p->mark = _mark;
36215
82
        D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ',
36216
82
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
36217
82
    }
36218
0
    _res = NULL;
36219
90
  done:
36220
90
    p->level--;
36221
90
    return _res;
36222
82
}
36223
36224
// _tmp_146: positional_patterns ','
36225
static void *
36226
_tmp_146_rule(Parser *p)
36227
3.38k
{
36228
3.38k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36229
0
        _Pypegen_stack_overflow(p);
36230
0
    }
36231
3.38k
    if (p->error_indicator) {
36232
0
        p->level--;
36233
0
        return NULL;
36234
0
    }
36235
3.38k
    void * _res = NULL;
36236
3.38k
    int _mark = p->mark;
36237
3.38k
    { // positional_patterns ','
36238
3.38k
        if (p->error_indicator) {
36239
0
            p->level--;
36240
0
            return NULL;
36241
0
        }
36242
3.38k
        D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "positional_patterns ','"));
36243
3.38k
        Token * _literal;
36244
3.38k
        asdl_pattern_seq* positional_patterns_var;
36245
3.38k
        if (
36246
3.38k
            (positional_patterns_var = positional_patterns_rule(p))  // positional_patterns
36247
3.38k
            &&
36248
3.38k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
36249
3.38k
        )
36250
798
        {
36251
798
            D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "positional_patterns ','"));
36252
798
            _res = _PyPegen_dummy_name(p, positional_patterns_var, _literal);
36253
798
            goto done;
36254
798
        }
36255
2.59k
        p->mark = _mark;
36256
2.59k
        D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ',
36257
2.59k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "positional_patterns ','"));
36258
2.59k
    }
36259
0
    _res = NULL;
36260
3.38k
  done:
36261
3.38k
    p->level--;
36262
3.38k
    return _res;
36263
2.59k
}
36264
36265
// _tmp_147: '}' | ','
36266
static void *
36267
_tmp_147_rule(Parser *p)
36268
3.66k
{
36269
3.66k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36270
0
        _Pypegen_stack_overflow(p);
36271
0
    }
36272
3.66k
    if (p->error_indicator) {
36273
0
        p->level--;
36274
0
        return NULL;
36275
0
    }
36276
3.66k
    void * _res = NULL;
36277
3.66k
    int _mark = p->mark;
36278
3.66k
    { // '}'
36279
3.66k
        if (p->error_indicator) {
36280
0
            p->level--;
36281
0
            return NULL;
36282
0
        }
36283
3.66k
        D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'"));
36284
3.66k
        Token * _literal;
36285
3.66k
        if (
36286
3.66k
            (_literal = _PyPegen_expect_token(p, 26))  // token='}'
36287
3.66k
        )
36288
3
        {
36289
3
            D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'"));
36290
3
            _res = _literal;
36291
3
            goto done;
36292
3
        }
36293
3.66k
        p->mark = _mark;
36294
3.66k
        D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
36295
3.66k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'"));
36296
3.66k
    }
36297
0
    { // ','
36298
3.66k
        if (p->error_indicator) {
36299
0
            p->level--;
36300
0
            return NULL;
36301
0
        }
36302
3.66k
        D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
36303
3.66k
        Token * _literal;
36304
3.66k
        if (
36305
3.66k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
36306
3.66k
        )
36307
2
        {
36308
2
            D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
36309
2
            _res = _literal;
36310
2
            goto done;
36311
2
        }
36312
3.66k
        p->mark = _mark;
36313
3.66k
        D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
36314
3.66k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
36315
3.66k
    }
36316
0
    _res = NULL;
36317
3.66k
  done:
36318
3.66k
    p->level--;
36319
3.66k
    return _res;
36320
3.66k
}
36321
36322
// _tmp_148: '=' | '!' | ':' | '}'
36323
static void *
36324
_tmp_148_rule(Parser *p)
36325
291
{
36326
291
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36327
0
        _Pypegen_stack_overflow(p);
36328
0
    }
36329
291
    if (p->error_indicator) {
36330
0
        p->level--;
36331
0
        return NULL;
36332
0
    }
36333
291
    void * _res = NULL;
36334
291
    int _mark = p->mark;
36335
291
    { // '='
36336
291
        if (p->error_indicator) {
36337
0
            p->level--;
36338
0
            return NULL;
36339
0
        }
36340
291
        D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
36341
291
        Token * _literal;
36342
291
        if (
36343
291
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
36344
291
        )
36345
22
        {
36346
22
            D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
36347
22
            _res = _literal;
36348
22
            goto done;
36349
22
        }
36350
269
        p->mark = _mark;
36351
269
        D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ',
36352
269
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
36353
269
    }
36354
0
    { // '!'
36355
269
        if (p->error_indicator) {
36356
0
            p->level--;
36357
0
            return NULL;
36358
0
        }
36359
269
        D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!'"));
36360
269
        Token * _literal;
36361
269
        if (
36362
269
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
36363
269
        )
36364
19
        {
36365
19
            D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!'"));
36366
19
            _res = _literal;
36367
19
            goto done;
36368
19
        }
36369
250
        p->mark = _mark;
36370
250
        D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ',
36371
250
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!'"));
36372
250
    }
36373
0
    { // ':'
36374
250
        if (p->error_indicator) {
36375
0
            p->level--;
36376
0
            return NULL;
36377
0
        }
36378
250
        D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
36379
250
        Token * _literal;
36380
250
        if (
36381
250
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
36382
250
        )
36383
201
        {
36384
201
            D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
36385
201
            _res = _literal;
36386
201
            goto done;
36387
201
        }
36388
49
        p->mark = _mark;
36389
49
        D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ',
36390
49
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
36391
49
    }
36392
0
    { // '}'
36393
49
        if (p->error_indicator) {
36394
0
            p->level--;
36395
0
            return NULL;
36396
0
        }
36397
49
        D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'"));
36398
49
        Token * _literal;
36399
49
        if (
36400
49
            (_literal = _PyPegen_expect_token(p, 26))  // token='}'
36401
49
        )
36402
0
        {
36403
0
            D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'"));
36404
0
            _res = _literal;
36405
0
            goto done;
36406
0
        }
36407
49
        p->mark = _mark;
36408
49
        D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ',
36409
49
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'"));
36410
49
    }
36411
0
    _res = NULL;
36412
291
  done:
36413
291
    p->level--;
36414
291
    return _res;
36415
49
}
36416
36417
// _tmp_149: '!' | ':' | '}'
36418
static void *
36419
_tmp_149_rule(Parser *p)
36420
22
{
36421
22
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36422
0
        _Pypegen_stack_overflow(p);
36423
0
    }
36424
22
    if (p->error_indicator) {
36425
0
        p->level--;
36426
0
        return NULL;
36427
0
    }
36428
22
    void * _res = NULL;
36429
22
    int _mark = p->mark;
36430
22
    { // '!'
36431
22
        if (p->error_indicator) {
36432
0
            p->level--;
36433
0
            return NULL;
36434
0
        }
36435
22
        D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!'"));
36436
22
        Token * _literal;
36437
22
        if (
36438
22
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
36439
22
        )
36440
10
        {
36441
10
            D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!'"));
36442
10
            _res = _literal;
36443
10
            goto done;
36444
10
        }
36445
12
        p->mark = _mark;
36446
12
        D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ',
36447
12
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!'"));
36448
12
    }
36449
0
    { // ':'
36450
12
        if (p->error_indicator) {
36451
0
            p->level--;
36452
0
            return NULL;
36453
0
        }
36454
12
        D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
36455
12
        Token * _literal;
36456
12
        if (
36457
12
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
36458
12
        )
36459
4
        {
36460
4
            D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
36461
4
            _res = _literal;
36462
4
            goto done;
36463
4
        }
36464
8
        p->mark = _mark;
36465
8
        D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ',
36466
8
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
36467
8
    }
36468
0
    { // '}'
36469
8
        if (p->error_indicator) {
36470
0
            p->level--;
36471
0
            return NULL;
36472
0
        }
36473
8
        D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'"));
36474
8
        Token * _literal;
36475
8
        if (
36476
8
            (_literal = _PyPegen_expect_token(p, 26))  // token='}'
36477
8
        )
36478
0
        {
36479
0
            D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'"));
36480
0
            _res = _literal;
36481
0
            goto done;
36482
0
        }
36483
8
        p->mark = _mark;
36484
8
        D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ',
36485
8
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'"));
36486
8
    }
36487
0
    _res = NULL;
36488
22
  done:
36489
22
    p->level--;
36490
22
    return _res;
36491
8
}
36492
36493
// _tmp_150: '!' NAME
36494
static void *
36495
_tmp_150_rule(Parser *p)
36496
422
{
36497
422
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36498
0
        _Pypegen_stack_overflow(p);
36499
0
    }
36500
422
    if (p->error_indicator) {
36501
0
        p->level--;
36502
0
        return NULL;
36503
0
    }
36504
422
    void * _res = NULL;
36505
422
    int _mark = p->mark;
36506
422
    { // '!' NAME
36507
422
        if (p->error_indicator) {
36508
0
            p->level--;
36509
0
            return NULL;
36510
0
        }
36511
422
        D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' NAME"));
36512
422
        Token * _literal;
36513
422
        expr_ty name_var;
36514
422
        if (
36515
422
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
36516
422
            &&
36517
422
            (name_var = _PyPegen_name_token(p))  // NAME
36518
422
        )
36519
12
        {
36520
12
            D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!' NAME"));
36521
12
            _res = _PyPegen_dummy_name(p, _literal, name_var);
36522
12
            goto done;
36523
12
        }
36524
410
        p->mark = _mark;
36525
410
        D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ',
36526
410
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' NAME"));
36527
410
    }
36528
0
    _res = NULL;
36529
422
  done:
36530
422
    p->level--;
36531
422
    return _res;
36532
410
}
36533
36534
// _tmp_151: ':' | '}'
36535
static void *
36536
_tmp_151_rule(Parser *p)
36537
245
{
36538
245
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36539
0
        _Pypegen_stack_overflow(p);
36540
0
    }
36541
245
    if (p->error_indicator) {
36542
0
        p->level--;
36543
0
        return NULL;
36544
0
    }
36545
245
    void * _res = NULL;
36546
245
    int _mark = p->mark;
36547
245
    { // ':'
36548
245
        if (p->error_indicator) {
36549
0
            p->level--;
36550
0
            return NULL;
36551
0
        }
36552
245
        D(fprintf(stderr, "%*c> _tmp_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
36553
245
        Token * _literal;
36554
245
        if (
36555
245
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
36556
245
        )
36557
210
        {
36558
210
            D(fprintf(stderr, "%*c+ _tmp_151[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
36559
210
            _res = _literal;
36560
210
            goto done;
36561
210
        }
36562
35
        p->mark = _mark;
36563
35
        D(fprintf(stderr, "%*c%s _tmp_151[%d-%d]: %s failed!\n", p->level, ' ',
36564
35
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
36565
35
    }
36566
0
    { // '}'
36567
35
        if (p->error_indicator) {
36568
0
            p->level--;
36569
0
            return NULL;
36570
0
        }
36571
35
        D(fprintf(stderr, "%*c> _tmp_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'"));
36572
35
        Token * _literal;
36573
35
        if (
36574
35
            (_literal = _PyPegen_expect_token(p, 26))  // token='}'
36575
35
        )
36576
3
        {
36577
3
            D(fprintf(stderr, "%*c+ _tmp_151[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'"));
36578
3
            _res = _literal;
36579
3
            goto done;
36580
3
        }
36581
32
        p->mark = _mark;
36582
32
        D(fprintf(stderr, "%*c%s _tmp_151[%d-%d]: %s failed!\n", p->level, ' ',
36583
32
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'"));
36584
32
    }
36585
0
    _res = NULL;
36586
245
  done:
36587
245
    p->level--;
36588
245
    return _res;
36589
32
}
36590
36591
// _tmp_152: '+' | '-' | '*' | '/' | '%' | '//' | '@'
36592
static void *
36593
_tmp_152_rule(Parser *p)
36594
220k
{
36595
220k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36596
0
        _Pypegen_stack_overflow(p);
36597
0
    }
36598
220k
    if (p->error_indicator) {
36599
0
        p->level--;
36600
0
        return NULL;
36601
0
    }
36602
220k
    void * _res = NULL;
36603
220k
    int _mark = p->mark;
36604
220k
    { // '+'
36605
220k
        if (p->error_indicator) {
36606
0
            p->level--;
36607
0
            return NULL;
36608
0
        }
36609
220k
        D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+'"));
36610
220k
        Token * _literal;
36611
220k
        if (
36612
220k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
36613
220k
        )
36614
967
        {
36615
967
            D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+'"));
36616
967
            _res = _literal;
36617
967
            goto done;
36618
967
        }
36619
219k
        p->mark = _mark;
36620
219k
        D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
36621
219k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+'"));
36622
219k
    }
36623
0
    { // '-'
36624
219k
        if (p->error_indicator) {
36625
0
            p->level--;
36626
0
            return NULL;
36627
0
        }
36628
219k
        D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-'"));
36629
219k
        Token * _literal;
36630
219k
        if (
36631
219k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
36632
219k
        )
36633
713
        {
36634
713
            D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-'"));
36635
713
            _res = _literal;
36636
713
            goto done;
36637
713
        }
36638
218k
        p->mark = _mark;
36639
218k
        D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
36640
218k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-'"));
36641
218k
    }
36642
0
    { // '*'
36643
218k
        if (p->error_indicator) {
36644
0
            p->level--;
36645
0
            return NULL;
36646
0
        }
36647
218k
        D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
36648
218k
        Token * _literal;
36649
218k
        if (
36650
218k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
36651
218k
        )
36652
624
        {
36653
624
            D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
36654
624
            _res = _literal;
36655
624
            goto done;
36656
624
        }
36657
217k
        p->mark = _mark;
36658
217k
        D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
36659
217k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
36660
217k
    }
36661
0
    { // '/'
36662
217k
        if (p->error_indicator) {
36663
0
            p->level--;
36664
0
            return NULL;
36665
0
        }
36666
217k
        D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/'"));
36667
217k
        Token * _literal;
36668
217k
        if (
36669
217k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
36670
217k
        )
36671
336
        {
36672
336
            D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'/'"));
36673
336
            _res = _literal;
36674
336
            goto done;
36675
336
        }
36676
217k
        p->mark = _mark;
36677
217k
        D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
36678
217k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'/'"));
36679
217k
    }
36680
0
    { // '%'
36681
217k
        if (p->error_indicator) {
36682
0
            p->level--;
36683
0
            return NULL;
36684
0
        }
36685
217k
        D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'%'"));
36686
217k
        Token * _literal;
36687
217k
        if (
36688
217k
            (_literal = _PyPegen_expect_token(p, 24))  // token='%'
36689
217k
        )
36690
347
        {
36691
347
            D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'%'"));
36692
347
            _res = _literal;
36693
347
            goto done;
36694
347
        }
36695
217k
        p->mark = _mark;
36696
217k
        D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
36697
217k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'%'"));
36698
217k
    }
36699
0
    { // '//'
36700
217k
        if (p->error_indicator) {
36701
0
            p->level--;
36702
0
            return NULL;
36703
0
        }
36704
217k
        D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'//'"));
36705
217k
        Token * _literal;
36706
217k
        if (
36707
217k
            (_literal = _PyPegen_expect_token(p, 47))  // token='//'
36708
217k
        )
36709
202
        {
36710
202
            D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'//'"));
36711
202
            _res = _literal;
36712
202
            goto done;
36713
202
        }
36714
216k
        p->mark = _mark;
36715
216k
        D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
36716
216k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'//'"));
36717
216k
    }
36718
0
    { // '@'
36719
216k
        if (p->error_indicator) {
36720
0
            p->level--;
36721
0
            return NULL;
36722
0
        }
36723
216k
        D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
36724
216k
        Token * _literal;
36725
216k
        if (
36726
216k
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
36727
216k
        )
36728
308
        {
36729
308
            D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
36730
308
            _res = _literal;
36731
308
            goto done;
36732
308
        }
36733
216k
        p->mark = _mark;
36734
216k
        D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
36735
216k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
36736
216k
    }
36737
0
    _res = NULL;
36738
220k
  done:
36739
220k
    p->level--;
36740
220k
    return _res;
36741
216k
}
36742
36743
// _tmp_153: '+' | '-' | '~'
36744
static void *
36745
_tmp_153_rule(Parser *p)
36746
317k
{
36747
317k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36748
2
        _Pypegen_stack_overflow(p);
36749
2
    }
36750
317k
    if (p->error_indicator) {
36751
2
        p->level--;
36752
2
        return NULL;
36753
2
    }
36754
317k
    void * _res = NULL;
36755
317k
    int _mark = p->mark;
36756
317k
    { // '+'
36757
317k
        if (p->error_indicator) {
36758
0
            p->level--;
36759
0
            return NULL;
36760
0
        }
36761
317k
        D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+'"));
36762
317k
        Token * _literal;
36763
317k
        if (
36764
317k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
36765
317k
        )
36766
3.78k
        {
36767
3.78k
            D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+'"));
36768
3.78k
            _res = _literal;
36769
3.78k
            goto done;
36770
3.78k
        }
36771
313k
        p->mark = _mark;
36772
313k
        D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ',
36773
313k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+'"));
36774
313k
    }
36775
0
    { // '-'
36776
313k
        if (p->error_indicator) {
36777
0
            p->level--;
36778
0
            return NULL;
36779
0
        }
36780
313k
        D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-'"));
36781
313k
        Token * _literal;
36782
313k
        if (
36783
313k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
36784
313k
        )
36785
4.64k
        {
36786
4.64k
            D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-'"));
36787
4.64k
            _res = _literal;
36788
4.64k
            goto done;
36789
4.64k
        }
36790
309k
        p->mark = _mark;
36791
309k
        D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ',
36792
309k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-'"));
36793
309k
    }
36794
0
    { // '~'
36795
309k
        if (p->error_indicator) {
36796
0
            p->level--;
36797
0
            return NULL;
36798
0
        }
36799
309k
        D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'~'"));
36800
309k
        Token * _literal;
36801
309k
        if (
36802
309k
            (_literal = _PyPegen_expect_token(p, 31))  // token='~'
36803
309k
        )
36804
958
        {
36805
958
            D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'~'"));
36806
958
            _res = _literal;
36807
958
            goto done;
36808
958
        }
36809
308k
        p->mark = _mark;
36810
308k
        D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ',
36811
308k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'~'"));
36812
308k
    }
36813
0
    _res = NULL;
36814
317k
  done:
36815
317k
    p->level--;
36816
317k
    return _res;
36817
308k
}
36818
36819
// _tmp_154: star_targets '='
36820
static void *
36821
_tmp_154_rule(Parser *p)
36822
277k
{
36823
277k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36824
0
        _Pypegen_stack_overflow(p);
36825
0
    }
36826
277k
    if (p->error_indicator) {
36827
0
        p->level--;
36828
0
        return NULL;
36829
0
    }
36830
277k
    void * _res = NULL;
36831
277k
    int _mark = p->mark;
36832
277k
    { // star_targets '='
36833
277k
        if (p->error_indicator) {
36834
0
            p->level--;
36835
0
            return NULL;
36836
0
        }
36837
277k
        D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
36838
277k
        Token * _literal;
36839
277k
        expr_ty z;
36840
277k
        if (
36841
277k
            (z = star_targets_rule(p))  // star_targets
36842
277k
            &&
36843
277k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
36844
277k
        )
36845
16.1k
        {
36846
16.1k
            D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
36847
16.1k
            _res = z;
36848
16.1k
            if (_res == NULL && PyErr_Occurred()) {
36849
0
                p->error_indicator = 1;
36850
0
                p->level--;
36851
0
                return NULL;
36852
0
            }
36853
16.1k
            goto done;
36854
16.1k
        }
36855
261k
        p->mark = _mark;
36856
261k
        D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
36857
261k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='"));
36858
261k
    }
36859
0
    _res = NULL;
36860
277k
  done:
36861
277k
    p->level--;
36862
277k
    return _res;
36863
261k
}
36864
36865
// _tmp_155: '.' | '...'
36866
static void *
36867
_tmp_155_rule(Parser *p)
36868
12.8k
{
36869
12.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36870
0
        _Pypegen_stack_overflow(p);
36871
0
    }
36872
12.8k
    if (p->error_indicator) {
36873
0
        p->level--;
36874
0
        return NULL;
36875
0
    }
36876
12.8k
    void * _res = NULL;
36877
12.8k
    int _mark = p->mark;
36878
12.8k
    { // '.'
36879
12.8k
        if (p->error_indicator) {
36880
0
            p->level--;
36881
0
            return NULL;
36882
0
        }
36883
12.8k
        D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
36884
12.8k
        Token * _literal;
36885
12.8k
        if (
36886
12.8k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
36887
12.8k
        )
36888
3.97k
        {
36889
3.97k
            D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
36890
3.97k
            _res = _literal;
36891
3.97k
            goto done;
36892
3.97k
        }
36893
8.91k
        p->mark = _mark;
36894
8.91k
        D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ',
36895
8.91k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
36896
8.91k
    }
36897
0
    { // '...'
36898
8.91k
        if (p->error_indicator) {
36899
11
            p->level--;
36900
11
            return NULL;
36901
11
        }
36902
8.90k
        D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
36903
8.90k
        Token * _literal;
36904
8.90k
        if (
36905
8.90k
            (_literal = _PyPegen_expect_token(p, 52))  // token='...'
36906
8.90k
        )
36907
4.64k
        {
36908
4.64k
            D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
36909
4.64k
            _res = _literal;
36910
4.64k
            goto done;
36911
4.64k
        }
36912
4.26k
        p->mark = _mark;
36913
4.26k
        D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ',
36914
4.26k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
36915
4.26k
    }
36916
0
    _res = NULL;
36917
12.8k
  done:
36918
12.8k
    p->level--;
36919
12.8k
    return _res;
36920
4.26k
}
36921
36922
// _tmp_156: '@' named_expression NEWLINE
36923
static void *
36924
_tmp_156_rule(Parser *p)
36925
23.4k
{
36926
23.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36927
0
        _Pypegen_stack_overflow(p);
36928
0
    }
36929
23.4k
    if (p->error_indicator) {
36930
0
        p->level--;
36931
0
        return NULL;
36932
0
    }
36933
23.4k
    void * _res = NULL;
36934
23.4k
    int _mark = p->mark;
36935
23.4k
    { // '@' named_expression NEWLINE
36936
23.4k
        if (p->error_indicator) {
36937
0
            p->level--;
36938
0
            return NULL;
36939
0
        }
36940
23.4k
        D(fprintf(stderr, "%*c> _tmp_156[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE"));
36941
23.4k
        Token * _literal;
36942
23.4k
        expr_ty f;
36943
23.4k
        Token * newline_var;
36944
23.4k
        if (
36945
23.4k
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
36946
23.4k
            &&
36947
23.4k
            (f = named_expression_rule(p))  // named_expression
36948
23.4k
            &&
36949
23.4k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
36950
23.4k
        )
36951
4.74k
        {
36952
4.74k
            D(fprintf(stderr, "%*c+ _tmp_156[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE"));
36953
4.74k
            _res = f;
36954
4.74k
            if (_res == NULL && PyErr_Occurred()) {
36955
0
                p->error_indicator = 1;
36956
0
                p->level--;
36957
0
                return NULL;
36958
0
            }
36959
4.74k
            goto done;
36960
4.74k
        }
36961
18.7k
        p->mark = _mark;
36962
18.7k
        D(fprintf(stderr, "%*c%s _tmp_156[%d-%d]: %s failed!\n", p->level, ' ',
36963
18.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@' named_expression NEWLINE"));
36964
18.7k
    }
36965
0
    _res = NULL;
36966
23.4k
  done:
36967
23.4k
    p->level--;
36968
23.4k
    return _res;
36969
18.7k
}
36970
36971
// _tmp_157: ',' star_expression
36972
static void *
36973
_tmp_157_rule(Parser *p)
36974
237k
{
36975
237k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36976
0
        _Pypegen_stack_overflow(p);
36977
0
    }
36978
237k
    if (p->error_indicator) {
36979
0
        p->level--;
36980
0
        return NULL;
36981
0
    }
36982
237k
    void * _res = NULL;
36983
237k
    int _mark = p->mark;
36984
237k
    { // ',' star_expression
36985
237k
        if (p->error_indicator) {
36986
0
            p->level--;
36987
0
            return NULL;
36988
0
        }
36989
237k
        D(fprintf(stderr, "%*c> _tmp_157[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression"));
36990
237k
        Token * _literal;
36991
237k
        expr_ty c;
36992
237k
        if (
36993
237k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
36994
237k
            &&
36995
237k
            (c = star_expression_rule(p))  // star_expression
36996
237k
        )
36997
18.1k
        {
36998
18.1k
            D(fprintf(stderr, "%*c+ _tmp_157[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression"));
36999
18.1k
            _res = c;
37000
18.1k
            if (_res == NULL && PyErr_Occurred()) {
37001
0
                p->error_indicator = 1;
37002
0
                p->level--;
37003
0
                return NULL;
37004
0
            }
37005
18.1k
            goto done;
37006
18.1k
        }
37007
219k
        p->mark = _mark;
37008
219k
        D(fprintf(stderr, "%*c%s _tmp_157[%d-%d]: %s failed!\n", p->level, ' ',
37009
219k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_expression"));
37010
219k
    }
37011
0
    _res = NULL;
37012
237k
  done:
37013
237k
    p->level--;
37014
237k
    return _res;
37015
219k
}
37016
37017
// _tmp_158: 'or' conjunction
37018
static void *
37019
_tmp_158_rule(Parser *p)
37020
395k
{
37021
395k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37022
0
        _Pypegen_stack_overflow(p);
37023
0
    }
37024
395k
    if (p->error_indicator) {
37025
0
        p->level--;
37026
0
        return NULL;
37027
0
    }
37028
395k
    void * _res = NULL;
37029
395k
    int _mark = p->mark;
37030
395k
    { // 'or' conjunction
37031
395k
        if (p->error_indicator) {
37032
0
            p->level--;
37033
0
            return NULL;
37034
0
        }
37035
395k
        D(fprintf(stderr, "%*c> _tmp_158[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction"));
37036
395k
        Token * _keyword;
37037
395k
        expr_ty c;
37038
395k
        if (
37039
395k
            (_keyword = _PyPegen_expect_token(p, 589))  // token='or'
37040
395k
            &&
37041
395k
            (c = conjunction_rule(p))  // conjunction
37042
395k
        )
37043
4.65k
        {
37044
4.65k
            D(fprintf(stderr, "%*c+ _tmp_158[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction"));
37045
4.65k
            _res = c;
37046
4.65k
            if (_res == NULL && PyErr_Occurred()) {
37047
0
                p->error_indicator = 1;
37048
0
                p->level--;
37049
0
                return NULL;
37050
0
            }
37051
4.65k
            goto done;
37052
4.65k
        }
37053
391k
        p->mark = _mark;
37054
391k
        D(fprintf(stderr, "%*c%s _tmp_158[%d-%d]: %s failed!\n", p->level, ' ',
37055
391k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'or' conjunction"));
37056
391k
    }
37057
0
    _res = NULL;
37058
395k
  done:
37059
395k
    p->level--;
37060
395k
    return _res;
37061
391k
}
37062
37063
// _tmp_159: 'and' inversion
37064
static void *
37065
_tmp_159_rule(Parser *p)
37066
398k
{
37067
398k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37068
0
        _Pypegen_stack_overflow(p);
37069
0
    }
37070
398k
    if (p->error_indicator) {
37071
0
        p->level--;
37072
0
        return NULL;
37073
0
    }
37074
398k
    void * _res = NULL;
37075
398k
    int _mark = p->mark;
37076
398k
    { // 'and' inversion
37077
398k
        if (p->error_indicator) {
37078
0
            p->level--;
37079
0
            return NULL;
37080
0
        }
37081
398k
        D(fprintf(stderr, "%*c> _tmp_159[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion"));
37082
398k
        Token * _keyword;
37083
398k
        expr_ty c;
37084
398k
        if (
37085
398k
            (_keyword = _PyPegen_expect_token(p, 590))  // token='and'
37086
398k
            &&
37087
398k
            (c = inversion_rule(p))  // inversion
37088
398k
        )
37089
2.81k
        {
37090
2.81k
            D(fprintf(stderr, "%*c+ _tmp_159[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion"));
37091
2.81k
            _res = c;
37092
2.81k
            if (_res == NULL && PyErr_Occurred()) {
37093
0
                p->error_indicator = 1;
37094
0
                p->level--;
37095
0
                return NULL;
37096
0
            }
37097
2.81k
            goto done;
37098
2.81k
        }
37099
395k
        p->mark = _mark;
37100
395k
        D(fprintf(stderr, "%*c%s _tmp_159[%d-%d]: %s failed!\n", p->level, ' ',
37101
395k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'and' inversion"));
37102
395k
    }
37103
0
    _res = NULL;
37104
398k
  done:
37105
398k
    p->level--;
37106
398k
    return _res;
37107
395k
}
37108
37109
// _tmp_160: slice | starred_expression
37110
static void *
37111
_tmp_160_rule(Parser *p)
37112
30.1k
{
37113
30.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37114
0
        _Pypegen_stack_overflow(p);
37115
0
    }
37116
30.1k
    if (p->error_indicator) {
37117
0
        p->level--;
37118
0
        return NULL;
37119
0
    }
37120
30.1k
    void * _res = NULL;
37121
30.1k
    int _mark = p->mark;
37122
30.1k
    { // slice
37123
30.1k
        if (p->error_indicator) {
37124
0
            p->level--;
37125
0
            return NULL;
37126
0
        }
37127
30.1k
        D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice"));
37128
30.1k
        expr_ty slice_var;
37129
30.1k
        if (
37130
30.1k
            (slice_var = slice_rule(p))  // slice
37131
30.1k
        )
37132
25.9k
        {
37133
25.9k
            D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice"));
37134
25.9k
            _res = slice_var;
37135
25.9k
            goto done;
37136
25.9k
        }
37137
4.15k
        p->mark = _mark;
37138
4.15k
        D(fprintf(stderr, "%*c%s _tmp_160[%d-%d]: %s failed!\n", p->level, ' ',
37139
4.15k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice"));
37140
4.15k
    }
37141
0
    { // starred_expression
37142
4.15k
        if (p->error_indicator) {
37143
212
            p->level--;
37144
212
            return NULL;
37145
212
        }
37146
3.94k
        D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
37147
3.94k
        expr_ty starred_expression_var;
37148
3.94k
        if (
37149
3.94k
            (starred_expression_var = starred_expression_rule(p))  // starred_expression
37150
3.94k
        )
37151
584
        {
37152
584
            D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
37153
584
            _res = starred_expression_var;
37154
584
            goto done;
37155
584
        }
37156
3.36k
        p->mark = _mark;
37157
3.36k
        D(fprintf(stderr, "%*c%s _tmp_160[%d-%d]: %s failed!\n", p->level, ' ',
37158
3.36k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
37159
3.36k
    }
37160
0
    _res = NULL;
37161
29.8k
  done:
37162
29.8k
    p->level--;
37163
29.8k
    return _res;
37164
3.36k
}
37165
37166
// _tmp_161: fstring | string | tstring
37167
static void *
37168
_tmp_161_rule(Parser *p)
37169
180k
{
37170
180k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37171
1
        _Pypegen_stack_overflow(p);
37172
1
    }
37173
180k
    if (p->error_indicator) {
37174
7
        p->level--;
37175
7
        return NULL;
37176
7
    }
37177
180k
    void * _res = NULL;
37178
180k
    int _mark = p->mark;
37179
180k
    { // fstring
37180
180k
        if (p->error_indicator) {
37181
0
            p->level--;
37182
0
            return NULL;
37183
0
        }
37184
180k
        D(fprintf(stderr, "%*c> _tmp_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring"));
37185
180k
        expr_ty fstring_var;
37186
180k
        if (
37187
180k
            (fstring_var = fstring_rule(p))  // fstring
37188
180k
        )
37189
13.0k
        {
37190
13.0k
            D(fprintf(stderr, "%*c+ _tmp_161[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "fstring"));
37191
13.0k
            _res = fstring_var;
37192
13.0k
            goto done;
37193
13.0k
        }
37194
167k
        p->mark = _mark;
37195
167k
        D(fprintf(stderr, "%*c%s _tmp_161[%d-%d]: %s failed!\n", p->level, ' ',
37196
167k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring"));
37197
167k
    }
37198
0
    { // string
37199
167k
        if (p->error_indicator) {
37200
2.35k
            p->level--;
37201
2.35k
            return NULL;
37202
2.35k
        }
37203
165k
        D(fprintf(stderr, "%*c> _tmp_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "string"));
37204
165k
        expr_ty string_var;
37205
165k
        if (
37206
165k
            (string_var = string_rule(p))  // string
37207
165k
        )
37208
62.9k
        {
37209
62.9k
            D(fprintf(stderr, "%*c+ _tmp_161[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "string"));
37210
62.9k
            _res = string_var;
37211
62.9k
            goto done;
37212
62.9k
        }
37213
102k
        p->mark = _mark;
37214
102k
        D(fprintf(stderr, "%*c%s _tmp_161[%d-%d]: %s failed!\n", p->level, ' ',
37215
102k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "string"));
37216
102k
    }
37217
0
    { // tstring
37218
102k
        if (p->error_indicator) {
37219
383
            p->level--;
37220
383
            return NULL;
37221
383
        }
37222
102k
        D(fprintf(stderr, "%*c> _tmp_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring"));
37223
102k
        expr_ty tstring_var;
37224
102k
        if (
37225
102k
            (tstring_var = tstring_rule(p))  // tstring
37226
102k
        )
37227
3.49k
        {
37228
3.49k
            D(fprintf(stderr, "%*c+ _tmp_161[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tstring"));
37229
3.49k
            _res = tstring_var;
37230
3.49k
            goto done;
37231
3.49k
        }
37232
98.7k
        p->mark = _mark;
37233
98.7k
        D(fprintf(stderr, "%*c%s _tmp_161[%d-%d]: %s failed!\n", p->level, ' ',
37234
98.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring"));
37235
98.7k
    }
37236
0
    _res = NULL;
37237
178k
  done:
37238
178k
    p->level--;
37239
178k
    return _res;
37240
98.7k
}
37241
37242
// _tmp_162: 'if' disjunction
37243
static void *
37244
_tmp_162_rule(Parser *p)
37245
16.2k
{
37246
16.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37247
0
        _Pypegen_stack_overflow(p);
37248
0
    }
37249
16.2k
    if (p->error_indicator) {
37250
0
        p->level--;
37251
0
        return NULL;
37252
0
    }
37253
16.2k
    void * _res = NULL;
37254
16.2k
    int _mark = p->mark;
37255
16.2k
    { // 'if' disjunction
37256
16.2k
        if (p->error_indicator) {
37257
0
            p->level--;
37258
0
            return NULL;
37259
0
        }
37260
16.2k
        D(fprintf(stderr, "%*c> _tmp_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
37261
16.2k
        Token * _keyword;
37262
16.2k
        expr_ty z;
37263
16.2k
        if (
37264
16.2k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
37265
16.2k
            &&
37266
16.2k
            (z = disjunction_rule(p))  // disjunction
37267
16.2k
        )
37268
5.29k
        {
37269
5.29k
            D(fprintf(stderr, "%*c+ _tmp_162[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
37270
5.29k
            _res = z;
37271
5.29k
            if (_res == NULL && PyErr_Occurred()) {
37272
0
                p->error_indicator = 1;
37273
0
                p->level--;
37274
0
                return NULL;
37275
0
            }
37276
5.29k
            goto done;
37277
5.29k
        }
37278
10.9k
        p->mark = _mark;
37279
10.9k
        D(fprintf(stderr, "%*c%s _tmp_162[%d-%d]: %s failed!\n", p->level, ' ',
37280
10.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction"));
37281
10.9k
    }
37282
0
    _res = NULL;
37283
16.2k
  done:
37284
16.2k
    p->level--;
37285
16.2k
    return _res;
37286
10.9k
}
37287
37288
// _tmp_163: starred_expression | (assignment_expression | expression !':=') !'='
37289
static void *
37290
_tmp_163_rule(Parser *p)
37291
100k
{
37292
100k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37293
0
        _Pypegen_stack_overflow(p);
37294
0
    }
37295
100k
    if (p->error_indicator) {
37296
0
        p->level--;
37297
0
        return NULL;
37298
0
    }
37299
100k
    void * _res = NULL;
37300
100k
    int _mark = p->mark;
37301
100k
    { // starred_expression
37302
100k
        if (p->error_indicator) {
37303
0
            p->level--;
37304
0
            return NULL;
37305
0
        }
37306
100k
        D(fprintf(stderr, "%*c> _tmp_163[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
37307
100k
        expr_ty starred_expression_var;
37308
100k
        if (
37309
100k
            (starred_expression_var = starred_expression_rule(p))  // starred_expression
37310
100k
        )
37311
6.07k
        {
37312
6.07k
            D(fprintf(stderr, "%*c+ _tmp_163[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
37313
6.07k
            _res = starred_expression_var;
37314
6.07k
            goto done;
37315
6.07k
        }
37316
94.3k
        p->mark = _mark;
37317
94.3k
        D(fprintf(stderr, "%*c%s _tmp_163[%d-%d]: %s failed!\n", p->level, ' ',
37318
94.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
37319
94.3k
    }
37320
0
    { // (assignment_expression | expression !':=') !'='
37321
94.3k
        if (p->error_indicator) {
37322
302
            p->level--;
37323
302
            return NULL;
37324
302
        }
37325
94.0k
        D(fprintf(stderr, "%*c> _tmp_163[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
37326
94.0k
        void *_tmp_86_var;
37327
94.0k
        if (
37328
94.0k
            (_tmp_86_var = _tmp_86_rule(p))  // assignment_expression | expression !':='
37329
94.0k
            &&
37330
94.0k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22)  // token='='
37331
94.0k
        )
37332
44.2k
        {
37333
44.2k
            D(fprintf(stderr, "%*c+ _tmp_163[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
37334
44.2k
            _res = _tmp_86_var;
37335
44.2k
            goto done;
37336
44.2k
        }
37337
49.7k
        p->mark = _mark;
37338
49.7k
        D(fprintf(stderr, "%*c%s _tmp_163[%d-%d]: %s failed!\n", p->level, ' ',
37339
49.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
37340
49.7k
    }
37341
0
    _res = NULL;
37342
100k
  done:
37343
100k
    p->level--;
37344
100k
    return _res;
37345
49.7k
}
37346
37347
// _tmp_164: ',' star_target
37348
static void *
37349
_tmp_164_rule(Parser *p)
37350
32.7k
{
37351
32.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37352
0
        _Pypegen_stack_overflow(p);
37353
0
    }
37354
32.7k
    if (p->error_indicator) {
37355
0
        p->level--;
37356
0
        return NULL;
37357
0
    }
37358
32.7k
    void * _res = NULL;
37359
32.7k
    int _mark = p->mark;
37360
32.7k
    { // ',' star_target
37361
32.7k
        if (p->error_indicator) {
37362
0
            p->level--;
37363
0
            return NULL;
37364
0
        }
37365
32.7k
        D(fprintf(stderr, "%*c> _tmp_164[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
37366
32.7k
        Token * _literal;
37367
32.7k
        expr_ty c;
37368
32.7k
        if (
37369
32.7k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
37370
32.7k
            &&
37371
32.7k
            (c = star_target_rule(p))  // star_target
37372
32.7k
        )
37373
10.9k
        {
37374
10.9k
            D(fprintf(stderr, "%*c+ _tmp_164[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target"));
37375
10.9k
            _res = c;
37376
10.9k
            if (_res == NULL && PyErr_Occurred()) {
37377
0
                p->error_indicator = 1;
37378
0
                p->level--;
37379
0
                return NULL;
37380
0
            }
37381
10.9k
            goto done;
37382
10.9k
        }
37383
21.7k
        p->mark = _mark;
37384
21.7k
        D(fprintf(stderr, "%*c%s _tmp_164[%d-%d]: %s failed!\n", p->level, ' ',
37385
21.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
37386
21.7k
    }
37387
0
    _res = NULL;
37388
32.7k
  done:
37389
32.7k
    p->level--;
37390
32.7k
    return _res;
37391
21.7k
}
37392
37393
// _tmp_165:
37394
//     | ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs
37395
static void *
37396
_tmp_165_rule(Parser *p)
37397
8.13k
{
37398
8.13k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37399
0
        _Pypegen_stack_overflow(p);
37400
0
    }
37401
8.13k
    if (p->error_indicator) {
37402
0
        p->level--;
37403
0
        return NULL;
37404
0
    }
37405
8.13k
    void * _res = NULL;
37406
8.13k
    int _mark = p->mark;
37407
8.13k
    { // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs
37408
8.13k
        if (p->error_indicator) {
37409
0
            p->level--;
37410
0
            return NULL;
37411
0
        }
37412
8.13k
        D(fprintf(stderr, "%*c> _tmp_165[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs"));
37413
8.13k
        asdl_seq * _gather_88_var;
37414
8.13k
        Token * _literal;
37415
8.13k
        asdl_seq* kwargs_var;
37416
8.13k
        if (
37417
8.13k
            (_gather_88_var = _gather_88_rule(p))  // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+
37418
8.13k
            &&
37419
8.13k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
37420
8.13k
            &&
37421
8.13k
            (kwargs_var = kwargs_rule(p))  // kwargs
37422
8.13k
        )
37423
334
        {
37424
334
            D(fprintf(stderr, "%*c+ _tmp_165[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs"));
37425
334
            _res = _PyPegen_dummy_name(p, _gather_88_var, _literal, kwargs_var);
37426
334
            goto done;
37427
334
        }
37428
7.80k
        p->mark = _mark;
37429
7.80k
        D(fprintf(stderr, "%*c%s _tmp_165[%d-%d]: %s failed!\n", p->level, ' ',
37430
7.80k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs"));
37431
7.80k
    }
37432
0
    _res = NULL;
37433
8.13k
  done:
37434
8.13k
    p->level--;
37435
8.13k
    return _res;
37436
7.80k
}
37437
37438
// _tmp_166: starred_expression !'='
37439
static void *
37440
_tmp_166_rule(Parser *p)
37441
3.05k
{
37442
3.05k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37443
0
        _Pypegen_stack_overflow(p);
37444
0
    }
37445
3.05k
    if (p->error_indicator) {
37446
0
        p->level--;
37447
0
        return NULL;
37448
0
    }
37449
3.05k
    void * _res = NULL;
37450
3.05k
    int _mark = p->mark;
37451
3.05k
    { // starred_expression !'='
37452
3.05k
        if (p->error_indicator) {
37453
0
            p->level--;
37454
0
            return NULL;
37455
0
        }
37456
3.05k
        D(fprintf(stderr, "%*c> _tmp_166[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression !'='"));
37457
3.05k
        expr_ty starred_expression_var;
37458
3.05k
        if (
37459
3.05k
            (starred_expression_var = starred_expression_rule(p))  // starred_expression
37460
3.05k
            &&
37461
3.05k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22)  // token='='
37462
3.05k
        )
37463
1.58k
        {
37464
1.58k
            D(fprintf(stderr, "%*c+ _tmp_166[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression !'='"));
37465
1.58k
            _res = starred_expression_var;
37466
1.58k
            goto done;
37467
1.58k
        }
37468
1.47k
        p->mark = _mark;
37469
1.47k
        D(fprintf(stderr, "%*c%s _tmp_166[%d-%d]: %s failed!\n", p->level, ' ',
37470
1.47k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression !'='"));
37471
1.47k
    }
37472
0
    _res = NULL;
37473
3.05k
  done:
37474
3.05k
    p->level--;
37475
3.05k
    return _res;
37476
1.47k
}
37477
37478
// _tmp_167: !STRING expression_without_invalid
37479
static void *
37480
_tmp_167_rule(Parser *p)
37481
5.42k
{
37482
5.42k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37483
1
        _Pypegen_stack_overflow(p);
37484
1
    }
37485
5.42k
    if (p->error_indicator) {
37486
1
        p->level--;
37487
1
        return NULL;
37488
1
    }
37489
5.42k
    void * _res = NULL;
37490
5.42k
    int _mark = p->mark;
37491
5.42k
    { // !STRING expression_without_invalid
37492
5.42k
        if (p->error_indicator) {
37493
0
            p->level--;
37494
0
            return NULL;
37495
0
        }
37496
5.42k
        D(fprintf(stderr, "%*c> _tmp_167[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!STRING expression_without_invalid"));
37497
5.42k
        expr_ty expression_without_invalid_var;
37498
5.42k
        if (
37499
5.42k
            _PyPegen_lookahead(0, _PyPegen_string_token, p)
37500
5.42k
            &&
37501
5.42k
            (expression_without_invalid_var = expression_without_invalid_rule(p))  // expression_without_invalid
37502
5.42k
        )
37503
1.98k
        {
37504
1.98k
            D(fprintf(stderr, "%*c+ _tmp_167[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!STRING expression_without_invalid"));
37505
1.98k
            _res = expression_without_invalid_var;
37506
1.98k
            goto done;
37507
1.98k
        }
37508
3.44k
        p->mark = _mark;
37509
3.44k
        D(fprintf(stderr, "%*c%s _tmp_167[%d-%d]: %s failed!\n", p->level, ' ',
37510
3.44k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!STRING expression_without_invalid"));
37511
3.44k
    }
37512
0
    _res = NULL;
37513
5.42k
  done:
37514
5.42k
    p->level--;
37515
5.42k
    return _res;
37516
3.44k
}
37517
37518
// _tmp_168: ')' | '**'
37519
static void *
37520
_tmp_168_rule(Parser *p)
37521
565
{
37522
565
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37523
0
        _Pypegen_stack_overflow(p);
37524
0
    }
37525
565
    if (p->error_indicator) {
37526
0
        p->level--;
37527
0
        return NULL;
37528
0
    }
37529
565
    void * _res = NULL;
37530
565
    int _mark = p->mark;
37531
565
    { // ')'
37532
565
        if (p->error_indicator) {
37533
0
            p->level--;
37534
0
            return NULL;
37535
0
        }
37536
565
        D(fprintf(stderr, "%*c> _tmp_168[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
37537
565
        Token * _literal;
37538
565
        if (
37539
565
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
37540
565
        )
37541
1
        {
37542
1
            D(fprintf(stderr, "%*c+ _tmp_168[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
37543
1
            _res = _literal;
37544
1
            goto done;
37545
1
        }
37546
564
        p->mark = _mark;
37547
564
        D(fprintf(stderr, "%*c%s _tmp_168[%d-%d]: %s failed!\n", p->level, ' ',
37548
564
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
37549
564
    }
37550
0
    { // '**'
37551
564
        if (p->error_indicator) {
37552
0
            p->level--;
37553
0
            return NULL;
37554
0
        }
37555
564
        D(fprintf(stderr, "%*c> _tmp_168[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
37556
564
        Token * _literal;
37557
564
        if (
37558
564
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
37559
564
        )
37560
1
        {
37561
1
            D(fprintf(stderr, "%*c+ _tmp_168[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'"));
37562
1
            _res = _literal;
37563
1
            goto done;
37564
1
        }
37565
563
        p->mark = _mark;
37566
563
        D(fprintf(stderr, "%*c%s _tmp_168[%d-%d]: %s failed!\n", p->level, ' ',
37567
563
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
37568
563
    }
37569
0
    _res = NULL;
37570
565
  done:
37571
565
    p->level--;
37572
565
    return _res;
37573
563
}
37574
37575
// _tmp_169: ':' | '**'
37576
static void *
37577
_tmp_169_rule(Parser *p)
37578
935
{
37579
935
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37580
0
        _Pypegen_stack_overflow(p);
37581
0
    }
37582
935
    if (p->error_indicator) {
37583
0
        p->level--;
37584
0
        return NULL;
37585
0
    }
37586
935
    void * _res = NULL;
37587
935
    int _mark = p->mark;
37588
935
    { // ':'
37589
935
        if (p->error_indicator) {
37590
0
            p->level--;
37591
0
            return NULL;
37592
0
        }
37593
935
        D(fprintf(stderr, "%*c> _tmp_169[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
37594
935
        Token * _literal;
37595
935
        if (
37596
935
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
37597
935
        )
37598
1
        {
37599
1
            D(fprintf(stderr, "%*c+ _tmp_169[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
37600
1
            _res = _literal;
37601
1
            goto done;
37602
1
        }
37603
934
        p->mark = _mark;
37604
934
        D(fprintf(stderr, "%*c%s _tmp_169[%d-%d]: %s failed!\n", p->level, ' ',
37605
934
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
37606
934
    }
37607
0
    { // '**'
37608
934
        if (p->error_indicator) {
37609
0
            p->level--;
37610
0
            return NULL;
37611
0
        }
37612
934
        D(fprintf(stderr, "%*c> _tmp_169[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
37613
934
        Token * _literal;
37614
934
        if (
37615
934
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
37616
934
        )
37617
1
        {
37618
1
            D(fprintf(stderr, "%*c+ _tmp_169[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'"));
37619
1
            _res = _literal;
37620
1
            goto done;
37621
1
        }
37622
933
        p->mark = _mark;
37623
933
        D(fprintf(stderr, "%*c%s _tmp_169[%d-%d]: %s failed!\n", p->level, ' ',
37624
933
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
37625
933
    }
37626
0
    _res = NULL;
37627
935
  done:
37628
935
    p->level--;
37629
935
    return _res;
37630
933
}
37631
37632
// _loop0_170: (',' bitwise_or)
37633
static asdl_seq *
37634
_loop0_170_rule(Parser *p)
37635
556
{
37636
556
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37637
0
        _Pypegen_stack_overflow(p);
37638
0
    }
37639
556
    if (p->error_indicator) {
37640
0
        p->level--;
37641
0
        return NULL;
37642
0
    }
37643
556
    void *_res = NULL;
37644
556
    int _mark = p->mark;
37645
556
    void **_children = PyMem_Malloc(sizeof(void *));
37646
556
    if (!_children) {
37647
0
        p->error_indicator = 1;
37648
0
        PyErr_NoMemory();
37649
0
        p->level--;
37650
0
        return NULL;
37651
0
    }
37652
556
    Py_ssize_t _children_capacity = 1;
37653
556
    Py_ssize_t _n = 0;
37654
556
    { // (',' bitwise_or)
37655
556
        if (p->error_indicator) {
37656
0
            p->level--;
37657
0
            return NULL;
37658
0
        }
37659
556
        D(fprintf(stderr, "%*c> _loop0_170[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' bitwise_or)"));
37660
556
        void *_tmp_174_var;
37661
556
        while (
37662
1.69k
            (_tmp_174_var = _tmp_174_rule(p))  // ',' bitwise_or
37663
556
        )
37664
1.13k
        {
37665
1.13k
            _res = _tmp_174_var;
37666
1.13k
            if (_n == _children_capacity) {
37667
427
                _children_capacity *= 2;
37668
427
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
37669
427
                if (!_new_children) {
37670
0
                    PyMem_Free(_children);
37671
0
                    p->error_indicator = 1;
37672
0
                    PyErr_NoMemory();
37673
0
                    p->level--;
37674
0
                    return NULL;
37675
0
                }
37676
427
                _children = _new_children;
37677
427
            }
37678
1.13k
            _children[_n++] = _res;
37679
1.13k
            _mark = p->mark;
37680
1.13k
        }
37681
556
        p->mark = _mark;
37682
556
        D(fprintf(stderr, "%*c%s _loop0_170[%d-%d]: %s failed!\n", p->level, ' ',
37683
556
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' bitwise_or)"));
37684
556
    }
37685
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
37686
556
    if (!_seq) {
37687
0
        PyMem_Free(_children);
37688
0
        p->error_indicator = 1;
37689
0
        PyErr_NoMemory();
37690
0
        p->level--;
37691
0
        return NULL;
37692
0
    }
37693
1.69k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
37694
556
    PyMem_Free(_children);
37695
556
    p->level--;
37696
556
    return _seq;
37697
556
}
37698
37699
// _tmp_171: ',' | ')' | NEWLINE
37700
static void *
37701
_tmp_171_rule(Parser *p)
37702
436
{
37703
436
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37704
0
        _Pypegen_stack_overflow(p);
37705
0
    }
37706
436
    if (p->error_indicator) {
37707
0
        p->level--;
37708
0
        return NULL;
37709
0
    }
37710
436
    void * _res = NULL;
37711
436
    int _mark = p->mark;
37712
436
    { // ','
37713
436
        if (p->error_indicator) {
37714
0
            p->level--;
37715
0
            return NULL;
37716
0
        }
37717
436
        D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
37718
436
        Token * _literal;
37719
436
        if (
37720
436
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
37721
436
        )
37722
98
        {
37723
98
            D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
37724
98
            _res = _literal;
37725
98
            goto done;
37726
98
        }
37727
338
        p->mark = _mark;
37728
338
        D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ',
37729
338
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
37730
338
    }
37731
0
    { // ')'
37732
338
        if (p->error_indicator) {
37733
1
            p->level--;
37734
1
            return NULL;
37735
1
        }
37736
337
        D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
37737
337
        Token * _literal;
37738
337
        if (
37739
337
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
37740
337
        )
37741
10
        {
37742
10
            D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
37743
10
            _res = _literal;
37744
10
            goto done;
37745
10
        }
37746
327
        p->mark = _mark;
37747
327
        D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ',
37748
327
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
37749
327
    }
37750
0
    { // NEWLINE
37751
327
        if (p->error_indicator) {
37752
0
            p->level--;
37753
0
            return NULL;
37754
0
        }
37755
327
        D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
37756
327
        Token * newline_var;
37757
327
        if (
37758
327
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
37759
327
        )
37760
314
        {
37761
314
            D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
37762
314
            _res = newline_var;
37763
314
            goto done;
37764
314
        }
37765
13
        p->mark = _mark;
37766
13
        D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ',
37767
13
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
37768
13
    }
37769
0
    _res = NULL;
37770
435
  done:
37771
435
    p->level--;
37772
435
    return _res;
37773
13
}
37774
37775
// _tmp_172: expression ['as' star_target]
37776
static void *
37777
_tmp_172_rule(Parser *p)
37778
5.08k
{
37779
5.08k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37780
0
        _Pypegen_stack_overflow(p);
37781
0
    }
37782
5.08k
    if (p->error_indicator) {
37783
0
        p->level--;
37784
0
        return NULL;
37785
0
    }
37786
5.08k
    void * _res = NULL;
37787
5.08k
    int _mark = p->mark;
37788
5.08k
    { // expression ['as' star_target]
37789
5.08k
        if (p->error_indicator) {
37790
0
            p->level--;
37791
0
            return NULL;
37792
0
        }
37793
5.08k
        D(fprintf(stderr, "%*c> _tmp_172[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
37794
5.08k
        void *_opt_var;
37795
5.08k
        UNUSED(_opt_var); // Silence compiler warnings
37796
5.08k
        expr_ty expression_var;
37797
5.08k
        if (
37798
5.08k
            (expression_var = expression_rule(p))  // expression
37799
5.08k
            &&
37800
5.08k
            (_opt_var = _tmp_175_rule(p), !p->error_indicator)  // ['as' star_target]
37801
5.08k
        )
37802
4.65k
        {
37803
4.65k
            D(fprintf(stderr, "%*c+ _tmp_172[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
37804
4.65k
            _res = _PyPegen_dummy_name(p, expression_var, _opt_var);
37805
4.65k
            goto done;
37806
4.65k
        }
37807
430
        p->mark = _mark;
37808
430
        D(fprintf(stderr, "%*c%s _tmp_172[%d-%d]: %s failed!\n", p->level, ' ',
37809
430
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]"));
37810
430
    }
37811
0
    _res = NULL;
37812
5.08k
  done:
37813
5.08k
    p->level--;
37814
5.08k
    return _res;
37815
430
}
37816
37817
// _tmp_173: expressions ['as' star_target]
37818
static void *
37819
_tmp_173_rule(Parser *p)
37820
3.31k
{
37821
3.31k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37822
0
        _Pypegen_stack_overflow(p);
37823
0
    }
37824
3.31k
    if (p->error_indicator) {
37825
0
        p->level--;
37826
0
        return NULL;
37827
0
    }
37828
3.31k
    void * _res = NULL;
37829
3.31k
    int _mark = p->mark;
37830
3.31k
    { // expressions ['as' star_target]
37831
3.31k
        if (p->error_indicator) {
37832
0
            p->level--;
37833
0
            return NULL;
37834
0
        }
37835
3.31k
        D(fprintf(stderr, "%*c> _tmp_173[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
37836
3.31k
        void *_opt_var;
37837
3.31k
        UNUSED(_opt_var); // Silence compiler warnings
37838
3.31k
        expr_ty expressions_var;
37839
3.31k
        if (
37840
3.31k
            (expressions_var = expressions_rule(p))  // expressions
37841
3.31k
            &&
37842
3.31k
            (_opt_var = _tmp_175_rule(p), !p->error_indicator)  // ['as' star_target]
37843
3.31k
        )
37844
2.73k
        {
37845
2.73k
            D(fprintf(stderr, "%*c+ _tmp_173[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
37846
2.73k
            _res = _PyPegen_dummy_name(p, expressions_var, _opt_var);
37847
2.73k
            goto done;
37848
2.73k
        }
37849
581
        p->mark = _mark;
37850
581
        D(fprintf(stderr, "%*c%s _tmp_173[%d-%d]: %s failed!\n", p->level, ' ',
37851
581
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]"));
37852
581
    }
37853
0
    _res = NULL;
37854
3.31k
  done:
37855
3.31k
    p->level--;
37856
3.31k
    return _res;
37857
581
}
37858
37859
// _tmp_174: ',' bitwise_or
37860
static void *
37861
_tmp_174_rule(Parser *p)
37862
1.69k
{
37863
1.69k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37864
0
        _Pypegen_stack_overflow(p);
37865
0
    }
37866
1.69k
    if (p->error_indicator) {
37867
0
        p->level--;
37868
0
        return NULL;
37869
0
    }
37870
1.69k
    void * _res = NULL;
37871
1.69k
    int _mark = p->mark;
37872
1.69k
    { // ',' bitwise_or
37873
1.69k
        if (p->error_indicator) {
37874
0
            p->level--;
37875
0
            return NULL;
37876
0
        }
37877
1.69k
        D(fprintf(stderr, "%*c> _tmp_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' bitwise_or"));
37878
1.69k
        Token * _literal;
37879
1.69k
        expr_ty bitwise_or_var;
37880
1.69k
        if (
37881
1.69k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
37882
1.69k
            &&
37883
1.69k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
37884
1.69k
        )
37885
1.13k
        {
37886
1.13k
            D(fprintf(stderr, "%*c+ _tmp_174[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' bitwise_or"));
37887
1.13k
            _res = _PyPegen_dummy_name(p, _literal, bitwise_or_var);
37888
1.13k
            goto done;
37889
1.13k
        }
37890
556
        p->mark = _mark;
37891
556
        D(fprintf(stderr, "%*c%s _tmp_174[%d-%d]: %s failed!\n", p->level, ' ',
37892
556
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' bitwise_or"));
37893
556
    }
37894
0
    _res = NULL;
37895
1.69k
  done:
37896
1.69k
    p->level--;
37897
1.69k
    return _res;
37898
556
}
37899
37900
// _tmp_175: 'as' star_target
37901
static void *
37902
_tmp_175_rule(Parser *p)
37903
7.38k
{
37904
7.38k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37905
0
        _Pypegen_stack_overflow(p);
37906
0
    }
37907
7.38k
    if (p->error_indicator) {
37908
0
        p->level--;
37909
0
        return NULL;
37910
0
    }
37911
7.38k
    void * _res = NULL;
37912
7.38k
    int _mark = p->mark;
37913
7.38k
    { // 'as' star_target
37914
7.38k
        if (p->error_indicator) {
37915
0
            p->level--;
37916
0
            return NULL;
37917
0
        }
37918
7.38k
        D(fprintf(stderr, "%*c> _tmp_175[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
37919
7.38k
        Token * _keyword;
37920
7.38k
        expr_ty star_target_var;
37921
7.38k
        if (
37922
7.38k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
37923
7.38k
            &&
37924
7.38k
            (star_target_var = star_target_rule(p))  // star_target
37925
7.38k
        )
37926
816
        {
37927
816
            D(fprintf(stderr, "%*c+ _tmp_175[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
37928
816
            _res = _PyPegen_dummy_name(p, _keyword, star_target_var);
37929
816
            goto done;
37930
816
        }
37931
6.57k
        p->mark = _mark;
37932
6.57k
        D(fprintf(stderr, "%*c%s _tmp_175[%d-%d]: %s failed!\n", p->level, ' ',
37933
6.57k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target"));
37934
6.57k
    }
37935
0
    _res = NULL;
37936
7.38k
  done:
37937
7.38k
    p->level--;
37938
7.38k
    return _res;
37939
6.57k
}
37940
37941
void *
37942
_PyPegen_parse(Parser *p)
37943
35.2k
{
37944
    // Initialize keywords
37945
35.2k
    p->keywords = reserved_keywords;
37946
35.2k
    p->n_keyword_lists = n_keyword_lists;
37947
35.2k
    p->soft_keywords = soft_keywords;
37948
37949
    // Run parser
37950
35.2k
    void *result = NULL;
37951
35.2k
    if (p->start_rule == Py_file_input) {
37952
35.1k
        result = file_rule(p);
37953
35.1k
    } else if (p->start_rule == Py_single_input) {
37954
0
        result = interactive_rule(p);
37955
43
    } else if (p->start_rule == Py_eval_input) {
37956
43
        result = eval_rule(p);
37957
43
    } else if (p->start_rule == Py_func_type_input) {
37958
0
        result = func_type_rule(p);
37959
0
    }
37960
37961
35.2k
    return result;
37962
35.2k
}