Coverage Report

Created: 2025-07-11 06:24

/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
169M
#  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
410k
#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
58.6k
#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
340k
#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
179k
#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
20.2k
#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.39M
#define expression_type 1109
197
#define yield_expr_type 1110
198
#define star_expressions_type 1111
199
1.41M
#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.71M
#define disjunction_type 1117
205
2.00M
#define conjunction_type 1118
206
2.05M
#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.79M
#define bitwise_or_type 1132  // Left-recursive
220
3.48M
#define bitwise_xor_type 1133  // Left-recursive
221
3.49M
#define bitwise_and_type 1134  // Left-recursive
222
4.68M
#define shift_expr_type 1135  // Left-recursive
223
5.03M
#define sum_type 1136  // Left-recursive
224
8.60M
#define term_type 1137  // Left-recursive
225
2.40M
#define factor_type 1138
226
#define power_type 1139
227
2.33M
#define await_primary_type 1140
228
7.32M
#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
208k
#define tstring_type 1168
256
#define string_type 1169
257
268k
#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
104k
#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
756k
#define star_target_type 1193
281
512k
#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.71M
#define t_primary_type 1198  // Left-recursive
286
#define t_lookahead_type 1199
287
#define del_targets_type 1200
288
26.2k
#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
351k
#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
34.5k
{
980
34.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
981
0
        _Pypegen_stack_overflow(p);
982
0
    }
983
34.5k
    if (p->error_indicator) {
984
3.66k
        p->level--;
985
3.66k
        return NULL;
986
3.66k
    }
987
30.8k
    mod_ty _res = NULL;
988
30.8k
    int _mark = p->mark;
989
30.8k
    { // statements? $
990
30.8k
        if (p->error_indicator) {
991
0
            p->level--;
992
0
            return NULL;
993
0
        }
994
30.8k
        D(fprintf(stderr, "%*c> file[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statements? $"));
995
30.8k
        void *a;
996
30.8k
        Token * endmarker_var;
997
30.8k
        if (
998
30.8k
            (a = statements_rule(p), !p->error_indicator)  // statements?
999
30.8k
            &&
1000
30.8k
            (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1001
30.8k
        )
1002
7.65k
        {
1003
7.65k
            D(fprintf(stderr, "%*c+ file[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statements? $"));
1004
7.65k
            _res = _PyPegen_make_module ( p , a );
1005
7.65k
            if (_res == NULL && PyErr_Occurred()) {
1006
0
                p->error_indicator = 1;
1007
0
                p->level--;
1008
0
                return NULL;
1009
0
            }
1010
7.65k
            goto done;
1011
7.65k
        }
1012
23.2k
        p->mark = _mark;
1013
23.2k
        D(fprintf(stderr, "%*c%s file[%d-%d]: %s failed!\n", p->level, ' ',
1014
23.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statements? $"));
1015
23.2k
    }
1016
0
    _res = NULL;
1017
30.8k
  done:
1018
30.8k
    p->level--;
1019
30.8k
    return _res;
1020
23.2k
}
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
49.6k
{
1179
49.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1180
0
        _Pypegen_stack_overflow(p);
1181
0
    }
1182
49.6k
    if (p->error_indicator) {
1183
0
        p->level--;
1184
0
        return NULL;
1185
0
    }
1186
49.6k
    asdl_stmt_seq* _res = NULL;
1187
49.6k
    int _mark = p->mark;
1188
49.6k
    { // statement+
1189
49.6k
        if (p->error_indicator) {
1190
0
            p->level--;
1191
0
            return NULL;
1192
0
        }
1193
49.6k
        D(fprintf(stderr, "%*c> statements[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement+"));
1194
49.6k
        asdl_seq * a;
1195
49.6k
        if (
1196
49.6k
            (a = _loop1_2_rule(p))  // statement+
1197
49.6k
        )
1198
27.0k
        {
1199
27.0k
            D(fprintf(stderr, "%*c+ statements[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statement+"));
1200
27.0k
            _res = _PyPegen_register_stmts ( p , ( asdl_stmt_seq* ) _PyPegen_seq_flatten ( p , a ) );
1201
27.0k
            if (_res == NULL && PyErr_Occurred()) {
1202
0
                p->error_indicator = 1;
1203
0
                p->level--;
1204
0
                return NULL;
1205
0
            }
1206
27.0k
            goto done;
1207
27.0k
        }
1208
22.5k
        p->mark = _mark;
1209
22.5k
        D(fprintf(stderr, "%*c%s statements[%d-%d]: %s failed!\n", p->level, ' ',
1210
22.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement+"));
1211
22.5k
    }
1212
0
    _res = NULL;
1213
49.6k
  done:
1214
49.6k
    p->level--;
1215
49.6k
    return _res;
1216
22.5k
}
1217
1218
// statement: compound_stmt | simple_stmts
1219
static asdl_stmt_seq*
1220
statement_rule(Parser *p)
1221
163k
{
1222
163k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1223
0
        _Pypegen_stack_overflow(p);
1224
0
    }
1225
163k
    if (p->error_indicator) {
1226
0
        p->level--;
1227
0
        return NULL;
1228
0
    }
1229
163k
    asdl_stmt_seq* _res = NULL;
1230
163k
    int _mark = p->mark;
1231
163k
    { // compound_stmt
1232
163k
        if (p->error_indicator) {
1233
0
            p->level--;
1234
0
            return NULL;
1235
0
        }
1236
163k
        D(fprintf(stderr, "%*c> statement[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1237
163k
        stmt_ty a;
1238
163k
        if (
1239
163k
            (a = compound_stmt_rule(p))  // compound_stmt
1240
163k
        )
1241
35.7k
        {
1242
35.7k
            D(fprintf(stderr, "%*c+ statement[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1243
35.7k
            _res = ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , a );
1244
35.7k
            if (_res == NULL && PyErr_Occurred()) {
1245
0
                p->error_indicator = 1;
1246
0
                p->level--;
1247
0
                return NULL;
1248
0
            }
1249
35.7k
            goto done;
1250
35.7k
        }
1251
127k
        p->mark = _mark;
1252
127k
        D(fprintf(stderr, "%*c%s statement[%d-%d]: %s failed!\n", p->level, ' ',
1253
127k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compound_stmt"));
1254
127k
    }
1255
0
    { // simple_stmts
1256
127k
        if (p->error_indicator) {
1257
2.43k
            p->level--;
1258
2.43k
            return NULL;
1259
2.43k
        }
1260
124k
        D(fprintf(stderr, "%*c> statement[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1261
124k
        asdl_stmt_seq* a;
1262
124k
        if (
1263
124k
            (a = (asdl_stmt_seq*)simple_stmts_rule(p))  // simple_stmts
1264
124k
        )
1265
77.7k
        {
1266
77.7k
            D(fprintf(stderr, "%*c+ statement[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1267
77.7k
            _res = a;
1268
77.7k
            if (_res == NULL && PyErr_Occurred()) {
1269
0
                p->error_indicator = 1;
1270
0
                p->level--;
1271
0
                return NULL;
1272
0
            }
1273
77.7k
            goto done;
1274
77.7k
        }
1275
47.1k
        p->mark = _mark;
1276
47.1k
        D(fprintf(stderr, "%*c%s statement[%d-%d]: %s failed!\n", p->level, ' ',
1277
47.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
1278
47.1k
    }
1279
0
    _res = NULL;
1280
160k
  done:
1281
160k
    p->level--;
1282
160k
    return _res;
1283
47.1k
}
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
162k
{
1463
162k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1464
0
        _Pypegen_stack_overflow(p);
1465
0
    }
1466
162k
    if (p->error_indicator) {
1467
0
        p->level--;
1468
0
        return NULL;
1469
0
    }
1470
162k
    asdl_stmt_seq* _res = NULL;
1471
162k
    int _mark = p->mark;
1472
162k
    { // simple_stmt !';' NEWLINE
1473
162k
        if (p->error_indicator) {
1474
0
            p->level--;
1475
0
            return NULL;
1476
0
        }
1477
162k
        D(fprintf(stderr, "%*c> simple_stmts[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt !';' NEWLINE"));
1478
162k
        stmt_ty a;
1479
162k
        Token * newline_var;
1480
162k
        if (
1481
162k
            (a = simple_stmt_rule(p))  // simple_stmt
1482
162k
            &&
1483
162k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 13)  // token=';'
1484
162k
            &&
1485
162k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1486
162k
        )
1487
109k
        {
1488
109k
            D(fprintf(stderr, "%*c+ simple_stmts[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt !';' NEWLINE"));
1489
109k
            _res = ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , a );
1490
109k
            if (_res == NULL && PyErr_Occurred()) {
1491
0
                p->error_indicator = 1;
1492
0
                p->level--;
1493
0
                return NULL;
1494
0
            }
1495
109k
            goto done;
1496
109k
        }
1497
52.7k
        p->mark = _mark;
1498
52.7k
        D(fprintf(stderr, "%*c%s simple_stmts[%d-%d]: %s failed!\n", p->level, ' ',
1499
52.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt !';' NEWLINE"));
1500
52.7k
    }
1501
0
    { // ';'.simple_stmt+ ';'? NEWLINE
1502
52.7k
        if (p->error_indicator) {
1503
4.38k
            p->level--;
1504
4.38k
            return NULL;
1505
4.38k
        }
1506
48.3k
        D(fprintf(stderr, "%*c> simple_stmts[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1507
48.3k
        void *_opt_var;
1508
48.3k
        UNUSED(_opt_var); // Silence compiler warnings
1509
48.3k
        asdl_stmt_seq* a;
1510
48.3k
        Token * newline_var;
1511
48.3k
        if (
1512
48.3k
            (a = (asdl_stmt_seq*)_gather_4_rule(p))  // ';'.simple_stmt+
1513
48.3k
            &&
1514
48.3k
            (_opt_var = _PyPegen_expect_token(p, 13), !p->error_indicator)  // ';'?
1515
48.3k
            &&
1516
48.3k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1517
48.3k
        )
1518
2.70k
        {
1519
2.70k
            D(fprintf(stderr, "%*c+ simple_stmts[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1520
2.70k
            _res = a;
1521
2.70k
            if (_res == NULL && PyErr_Occurred()) {
1522
0
                p->error_indicator = 1;
1523
0
                p->level--;
1524
0
                return NULL;
1525
0
            }
1526
2.70k
            goto done;
1527
2.70k
        }
1528
45.6k
        p->mark = _mark;
1529
45.6k
        D(fprintf(stderr, "%*c%s simple_stmts[%d-%d]: %s failed!\n", p->level, ' ',
1530
45.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1531
45.6k
    }
1532
0
    _res = NULL;
1533
157k
  done:
1534
157k
    p->level--;
1535
157k
    return _res;
1536
45.6k
}
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
232k
{
1556
232k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1557
0
        _Pypegen_stack_overflow(p);
1558
0
    }
1559
232k
    if (p->error_indicator) {
1560
0
        p->level--;
1561
0
        return NULL;
1562
0
    }
1563
232k
    stmt_ty _res = NULL;
1564
232k
    if (_PyPegen_is_memoized(p, simple_stmt_type, &_res)) {
1565
48.3k
        p->level--;
1566
48.3k
        return _res;
1567
48.3k
    }
1568
183k
    int _mark = p->mark;
1569
183k
    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
183k
    int _start_lineno = p->tokens[_mark]->lineno;
1575
183k
    UNUSED(_start_lineno); // Only used by EXTRA macro
1576
183k
    int _start_col_offset = p->tokens[_mark]->col_offset;
1577
183k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
1578
183k
    { // assignment
1579
183k
        if (p->error_indicator) {
1580
0
            p->level--;
1581
0
            return NULL;
1582
0
        }
1583
183k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment"));
1584
183k
        stmt_ty assignment_var;
1585
183k
        if (
1586
183k
            (assignment_var = assignment_rule(p))  // assignment
1587
183k
        )
1588
18.8k
        {
1589
18.8k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment"));
1590
18.8k
            _res = assignment_var;
1591
18.8k
            goto done;
1592
18.8k
        }
1593
164k
        p->mark = _mark;
1594
164k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1595
164k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment"));
1596
164k
    }
1597
0
    { // &"type" type_alias
1598
164k
        if (p->error_indicator) {
1599
4.81k
            p->level--;
1600
4.81k
            return NULL;
1601
4.81k
        }
1602
159k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&\"type\" type_alias"));
1603
159k
        stmt_ty type_alias_var;
1604
159k
        if (
1605
159k
            _PyPegen_lookahead_with_string(1, _PyPegen_expect_soft_keyword, p, "type")
1606
159k
            &&
1607
159k
            (type_alias_var = type_alias_rule(p))  // type_alias
1608
159k
        )
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
159k
        p->mark = _mark;
1615
159k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1616
159k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&\"type\" type_alias"));
1617
159k
    }
1618
0
    { // star_expressions
1619
159k
        if (p->error_indicator) {
1620
4
            p->level--;
1621
4
            return NULL;
1622
4
        }
1623
159k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1624
159k
        expr_ty e;
1625
159k
        if (
1626
159k
            (e = star_expressions_rule(p))  // star_expressions
1627
159k
        )
1628
97.6k
        {
1629
97.6k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1630
97.6k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1631
97.6k
            if (_token == NULL) {
1632
0
                p->level--;
1633
0
                return NULL;
1634
0
            }
1635
97.6k
            int _end_lineno = _token->end_lineno;
1636
97.6k
            UNUSED(_end_lineno); // Only used by EXTRA macro
1637
97.6k
            int _end_col_offset = _token->end_col_offset;
1638
97.6k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
1639
97.6k
            _res = _PyAST_Expr ( e , EXTRA );
1640
97.6k
            if (_res == NULL && PyErr_Occurred()) {
1641
0
                p->error_indicator = 1;
1642
0
                p->level--;
1643
0
                return NULL;
1644
0
            }
1645
97.6k
            goto done;
1646
97.6k
        }
1647
61.9k
        p->mark = _mark;
1648
61.9k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1649
61.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
1650
61.9k
    }
1651
0
    { // &'return' return_stmt
1652
61.9k
        if (p->error_indicator) {
1653
386
            p->level--;
1654
386
            return NULL;
1655
386
        }
1656
61.5k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'return' return_stmt"));
1657
61.5k
        stmt_ty return_stmt_var;
1658
61.5k
        if (
1659
61.5k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 522)  // token='return'
1660
61.5k
            &&
1661
61.5k
            (return_stmt_var = return_stmt_rule(p))  // return_stmt
1662
61.5k
        )
1663
7.37k
        {
1664
7.37k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'return' return_stmt"));
1665
7.37k
            _res = return_stmt_var;
1666
7.37k
            goto done;
1667
7.37k
        }
1668
54.1k
        p->mark = _mark;
1669
54.1k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1670
54.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'return' return_stmt"));
1671
54.1k
    }
1672
0
    { // &('import' | 'from') import_stmt
1673
54.1k
        if (p->error_indicator) {
1674
10
            p->level--;
1675
10
            return NULL;
1676
10
        }
1677
54.1k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('import' | 'from') import_stmt"));
1678
54.1k
        stmt_ty import_stmt_var;
1679
54.1k
        if (
1680
54.1k
            _PyPegen_lookahead(1, _tmp_5_rule, p)
1681
54.1k
            &&
1682
54.1k
            (import_stmt_var = import_stmt_rule(p))  // import_stmt
1683
54.1k
        )
1684
5.38k
        {
1685
5.38k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('import' | 'from') import_stmt"));
1686
5.38k
            _res = import_stmt_var;
1687
5.38k
            goto done;
1688
5.38k
        }
1689
48.7k
        p->mark = _mark;
1690
48.7k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1691
48.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('import' | 'from') import_stmt"));
1692
48.7k
    }
1693
0
    { // &'raise' raise_stmt
1694
48.7k
        if (p->error_indicator) {
1695
78
            p->level--;
1696
78
            return NULL;
1697
78
        }
1698
48.6k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'raise' raise_stmt"));
1699
48.6k
        stmt_ty raise_stmt_var;
1700
48.6k
        if (
1701
48.6k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 628)  // token='raise'
1702
48.6k
            &&
1703
48.6k
            (raise_stmt_var = raise_stmt_rule(p))  // raise_stmt
1704
48.6k
        )
1705
3.41k
        {
1706
3.41k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'raise' raise_stmt"));
1707
3.41k
            _res = raise_stmt_var;
1708
3.41k
            goto done;
1709
3.41k
        }
1710
45.2k
        p->mark = _mark;
1711
45.2k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1712
45.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'raise' raise_stmt"));
1713
45.2k
    }
1714
0
    { // &'pass' pass_stmt
1715
45.2k
        if (p->error_indicator) {
1716
24
            p->level--;
1717
24
            return NULL;
1718
24
        }
1719
45.2k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'pass' pass_stmt"));
1720
45.2k
        stmt_ty pass_stmt_var;
1721
45.2k
        if (
1722
45.2k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 527)  // token='pass'
1723
45.2k
            &&
1724
45.2k
            (pass_stmt_var = pass_stmt_rule(p))  // pass_stmt
1725
45.2k
        )
1726
1.32k
        {
1727
1.32k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'pass' pass_stmt"));
1728
1.32k
            _res = pass_stmt_var;
1729
1.32k
            goto done;
1730
1.32k
        }
1731
43.9k
        p->mark = _mark;
1732
43.9k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1733
43.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'pass' pass_stmt"));
1734
43.9k
    }
1735
0
    { // &'del' del_stmt
1736
43.9k
        if (p->error_indicator) {
1737
0
            p->level--;
1738
0
            return NULL;
1739
0
        }
1740
43.9k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'del' del_stmt"));
1741
43.9k
        stmt_ty del_stmt_var;
1742
43.9k
        if (
1743
43.9k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 630)  // token='del'
1744
43.9k
            &&
1745
43.9k
            (del_stmt_var = del_stmt_rule(p))  // del_stmt
1746
43.9k
        )
1747
902
        {
1748
902
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'del' del_stmt"));
1749
902
            _res = del_stmt_var;
1750
902
            goto done;
1751
902
        }
1752
43.0k
        p->mark = _mark;
1753
43.0k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1754
43.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'del' del_stmt"));
1755
43.0k
    }
1756
0
    { // &'yield' yield_stmt
1757
43.0k
        if (p->error_indicator) {
1758
251
            p->level--;
1759
251
            return NULL;
1760
251
        }
1761
42.7k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'yield' yield_stmt"));
1762
42.7k
        stmt_ty yield_stmt_var;
1763
42.7k
        if (
1764
42.7k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 588)  // token='yield'
1765
42.7k
            &&
1766
42.7k
            (yield_stmt_var = yield_stmt_rule(p))  // yield_stmt
1767
42.7k
        )
1768
1.61k
        {
1769
1.61k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'yield' yield_stmt"));
1770
1.61k
            _res = yield_stmt_var;
1771
1.61k
            goto done;
1772
1.61k
        }
1773
41.1k
        p->mark = _mark;
1774
41.1k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1775
41.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'yield' yield_stmt"));
1776
41.1k
    }
1777
0
    { // &'assert' assert_stmt
1778
41.1k
        if (p->error_indicator) {
1779
5
            p->level--;
1780
5
            return NULL;
1781
5
        }
1782
41.1k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'assert' assert_stmt"));
1783
41.1k
        stmt_ty assert_stmt_var;
1784
41.1k
        if (
1785
41.1k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 533)  // token='assert'
1786
41.1k
            &&
1787
41.1k
            (assert_stmt_var = assert_stmt_rule(p))  // assert_stmt
1788
41.1k
        )
1789
715
        {
1790
715
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'assert' assert_stmt"));
1791
715
            _res = assert_stmt_var;
1792
715
            goto done;
1793
715
        }
1794
40.4k
        p->mark = _mark;
1795
40.4k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1796
40.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'assert' assert_stmt"));
1797
40.4k
    }
1798
0
    { // &'break' break_stmt
1799
40.4k
        if (p->error_indicator) {
1800
35
            p->level--;
1801
35
            return NULL;
1802
35
        }
1803
40.4k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'break' break_stmt"));
1804
40.4k
        stmt_ty break_stmt_var;
1805
40.4k
        if (
1806
40.4k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 528)  // token='break'
1807
40.4k
            &&
1808
40.4k
            (break_stmt_var = break_stmt_rule(p))  // break_stmt
1809
40.4k
        )
1810
1.16k
        {
1811
1.16k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'break' break_stmt"));
1812
1.16k
            _res = break_stmt_var;
1813
1.16k
            goto done;
1814
1.16k
        }
1815
39.2k
        p->mark = _mark;
1816
39.2k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1817
39.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'break' break_stmt"));
1818
39.2k
    }
1819
0
    { // &'continue' continue_stmt
1820
39.2k
        if (p->error_indicator) {
1821
0
            p->level--;
1822
0
            return NULL;
1823
0
        }
1824
39.2k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'continue' continue_stmt"));
1825
39.2k
        stmt_ty continue_stmt_var;
1826
39.2k
        if (
1827
39.2k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 529)  // token='continue'
1828
39.2k
            &&
1829
39.2k
            (continue_stmt_var = continue_stmt_rule(p))  // continue_stmt
1830
39.2k
        )
1831
1.04k
        {
1832
1.04k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'continue' continue_stmt"));
1833
1.04k
            _res = continue_stmt_var;
1834
1.04k
            goto done;
1835
1.04k
        }
1836
38.1k
        p->mark = _mark;
1837
38.1k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1838
38.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'continue' continue_stmt"));
1839
38.1k
    }
1840
0
    { // &'global' global_stmt
1841
38.1k
        if (p->error_indicator) {
1842
0
            p->level--;
1843
0
            return NULL;
1844
0
        }
1845
38.1k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'global' global_stmt"));
1846
38.1k
        stmt_ty global_stmt_var;
1847
38.1k
        if (
1848
38.1k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 530)  // token='global'
1849
38.1k
            &&
1850
38.1k
            (global_stmt_var = global_stmt_rule(p))  // global_stmt
1851
38.1k
        )
1852
683
        {
1853
683
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'global' global_stmt"));
1854
683
            _res = global_stmt_var;
1855
683
            goto done;
1856
683
        }
1857
37.5k
        p->mark = _mark;
1858
37.5k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1859
37.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'global' global_stmt"));
1860
37.5k
    }
1861
0
    { // &'nonlocal' nonlocal_stmt
1862
37.5k
        if (p->error_indicator) {
1863
1
            p->level--;
1864
1
            return NULL;
1865
1
        }
1866
37.5k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
1867
37.5k
        stmt_ty nonlocal_stmt_var;
1868
37.5k
        if (
1869
37.5k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 531)  // token='nonlocal'
1870
37.5k
            &&
1871
37.5k
            (nonlocal_stmt_var = nonlocal_stmt_rule(p))  // nonlocal_stmt
1872
37.5k
        )
1873
633
        {
1874
633
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
1875
633
            _res = nonlocal_stmt_var;
1876
633
            goto done;
1877
633
        }
1878
36.8k
        p->mark = _mark;
1879
36.8k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1880
36.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
1881
36.8k
    }
1882
0
    _res = NULL;
1883
178k
  done:
1884
178k
    _PyPegen_insert_memo(p, _mark, simple_stmt_type, _res);
1885
178k
    p->level--;
1886
178k
    return _res;
1887
36.8k
}
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
163k
{
1901
163k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1902
0
        _Pypegen_stack_overflow(p);
1903
0
    }
1904
163k
    if (p->error_indicator) {
1905
0
        p->level--;
1906
0
        return NULL;
1907
0
    }
1908
163k
    stmt_ty _res = NULL;
1909
163k
    int _mark = p->mark;
1910
163k
    { // &('def' | '@' | 'async') function_def
1911
163k
        if (p->error_indicator) {
1912
0
            p->level--;
1913
0
            return NULL;
1914
0
        }
1915
163k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('def' | '@' | 'async') function_def"));
1916
163k
        stmt_ty function_def_var;
1917
163k
        if (
1918
163k
            _PyPegen_lookahead(1, _tmp_6_rule, p)
1919
163k
            &&
1920
163k
            (function_def_var = function_def_rule(p))  // function_def
1921
163k
        )
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
152k
        p->mark = _mark;
1928
152k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1929
152k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('def' | '@' | 'async') function_def"));
1930
152k
    }
1931
0
    { // &'if' if_stmt
1932
152k
        if (p->error_indicator) {
1933
1.56k
            p->level--;
1934
1.56k
            return NULL;
1935
1.56k
        }
1936
151k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'if' if_stmt"));
1937
151k
        stmt_ty if_stmt_var;
1938
151k
        if (
1939
151k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 687)  // token='if'
1940
151k
            &&
1941
151k
            (if_stmt_var = if_stmt_rule(p))  // if_stmt
1942
151k
        )
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
143k
        p->mark = _mark;
1949
143k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1950
143k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'if' if_stmt"));
1951
143k
    }
1952
0
    { // &('class' | '@') class_def
1953
143k
        if (p->error_indicator) {
1954
62
            p->level--;
1955
62
            return NULL;
1956
62
        }
1957
143k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('class' | '@') class_def"));
1958
143k
        stmt_ty class_def_var;
1959
143k
        if (
1960
143k
            _PyPegen_lookahead(1, _tmp_7_rule, p)
1961
143k
            &&
1962
143k
            (class_def_var = class_def_rule(p))  // class_def
1963
143k
        )
1964
3.87k
        {
1965
3.87k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('class' | '@') class_def"));
1966
3.87k
            _res = class_def_var;
1967
3.87k
            goto done;
1968
3.87k
        }
1969
139k
        p->mark = _mark;
1970
139k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1971
139k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('class' | '@') class_def"));
1972
139k
    }
1973
0
    { // &('with' | 'async') with_stmt
1974
139k
        if (p->error_indicator) {
1975
42
            p->level--;
1976
42
            return NULL;
1977
42
        }
1978
139k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('with' | 'async') with_stmt"));
1979
139k
        stmt_ty with_stmt_var;
1980
139k
        if (
1981
139k
            _PyPegen_lookahead(1, _tmp_8_rule, p)
1982
139k
            &&
1983
139k
            (with_stmt_var = with_stmt_rule(p))  // with_stmt
1984
139k
        )
1985
4.44k
        {
1986
4.44k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('with' | 'async') with_stmt"));
1987
4.44k
            _res = with_stmt_var;
1988
4.44k
            goto done;
1989
4.44k
        }
1990
135k
        p->mark = _mark;
1991
135k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1992
135k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('with' | 'async') with_stmt"));
1993
135k
    }
1994
0
    { // &('for' | 'async') for_stmt
1995
135k
        if (p->error_indicator) {
1996
140
            p->level--;
1997
140
            return NULL;
1998
140
        }
1999
135k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('for' | 'async') for_stmt"));
2000
135k
        stmt_ty for_stmt_var;
2001
135k
        if (
2002
135k
            _PyPegen_lookahead(1, _tmp_9_rule, p)
2003
135k
            &&
2004
135k
            (for_stmt_var = for_stmt_rule(p))  // for_stmt
2005
135k
        )
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
132k
        p->mark = _mark;
2012
132k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2013
132k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('for' | 'async') for_stmt"));
2014
132k
    }
2015
0
    { // &'try' try_stmt
2016
132k
        if (p->error_indicator) {
2017
36
            p->level--;
2018
36
            return NULL;
2019
36
        }
2020
132k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'try' try_stmt"));
2021
132k
        stmt_ty try_stmt_var;
2022
132k
        if (
2023
132k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 661)  // token='try'
2024
132k
            &&
2025
132k
            (try_stmt_var = try_stmt_rule(p))  // try_stmt
2026
132k
        )
2027
5.35k
        {
2028
5.35k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'try' try_stmt"));
2029
5.35k
            _res = try_stmt_var;
2030
5.35k
            goto done;
2031
5.35k
        }
2032
127k
        p->mark = _mark;
2033
127k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2034
127k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'try' try_stmt"));
2035
127k
    }
2036
0
    { // &'while' while_stmt
2037
127k
        if (p->error_indicator) {
2038
193
            p->level--;
2039
193
            return NULL;
2040
193
        }
2041
127k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'while' while_stmt"));
2042
127k
        stmt_ty while_stmt_var;
2043
127k
        if (
2044
127k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 694)  // token='while'
2045
127k
            &&
2046
127k
            (while_stmt_var = while_stmt_rule(p))  // while_stmt
2047
127k
        )
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
125k
        p->mark = _mark;
2054
125k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2055
125k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'while' while_stmt"));
2056
125k
    }
2057
0
    { // match_stmt
2058
125k
        if (p->error_indicator) {
2059
19
            p->level--;
2060
19
            return NULL;
2061
19
        }
2062
125k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "match_stmt"));
2063
125k
        stmt_ty match_stmt_var;
2064
125k
        if (
2065
125k
            (match_stmt_var = match_stmt_rule(p))  // match_stmt
2066
125k
        )
2067
627
        {
2068
627
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "match_stmt"));
2069
627
            _res = match_stmt_var;
2070
627
            goto done;
2071
627
        }
2072
125k
        p->mark = _mark;
2073
125k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2074
125k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "match_stmt"));
2075
125k
    }
2076
0
    _res = NULL;
2077
161k
  done:
2078
161k
    p->level--;
2079
161k
    return _res;
2080
125k
}
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
183k
{
2091
183k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2092
0
        _Pypegen_stack_overflow(p);
2093
0
    }
2094
183k
    if (p->error_indicator) {
2095
0
        p->level--;
2096
0
        return NULL;
2097
0
    }
2098
183k
    stmt_ty _res = NULL;
2099
183k
    int _mark = p->mark;
2100
183k
    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
183k
    int _start_lineno = p->tokens[_mark]->lineno;
2106
183k
    UNUSED(_start_lineno); // Only used by EXTRA macro
2107
183k
    int _start_col_offset = p->tokens[_mark]->col_offset;
2108
183k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
2109
183k
    { // NAME ':' expression ['=' annotated_rhs]
2110
183k
        if (p->error_indicator) {
2111
0
            p->level--;
2112
0
            return NULL;
2113
0
        }
2114
183k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2115
183k
        Token * _literal;
2116
183k
        expr_ty a;
2117
183k
        expr_ty b;
2118
183k
        void *c;
2119
183k
        if (
2120
183k
            (a = _PyPegen_name_token(p))  // NAME
2121
183k
            &&
2122
183k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
2123
183k
            &&
2124
183k
            (b = expression_rule(p))  // expression
2125
183k
            &&
2126
183k
            (c = _tmp_10_rule(p), !p->error_indicator)  // ['=' annotated_rhs]
2127
183k
        )
2128
2.31k
        {
2129
2.31k
            D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2130
2.31k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2131
2.31k
            if (_token == NULL) {
2132
0
                p->level--;
2133
0
                return NULL;
2134
0
            }
2135
2.31k
            int _end_lineno = _token->end_lineno;
2136
2.31k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2137
2.31k
            int _end_col_offset = _token->end_col_offset;
2138
2.31k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2139
2.31k
            _res = CHECK_VERSION ( stmt_ty , 6 , "Variable annotation syntax is" , _PyAST_AnnAssign ( CHECK ( expr_ty , _PyPegen_set_expr_context ( p , a , Store ) ) , b , c , 1 , EXTRA ) );
2140
2.31k
            if (_res == NULL && PyErr_Occurred()) {
2141
0
                p->error_indicator = 1;
2142
0
                p->level--;
2143
0
                return NULL;
2144
0
            }
2145
2.31k
            goto done;
2146
2.31k
        }
2147
181k
        p->mark = _mark;
2148
181k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2149
181k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2150
181k
    }
2151
0
    { // ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
2152
181k
        if (p->error_indicator) {
2153
148
            p->level--;
2154
148
            return NULL;
2155
148
        }
2156
181k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
2157
181k
        Token * _literal;
2158
181k
        void *a;
2159
181k
        expr_ty b;
2160
181k
        void *c;
2161
181k
        if (
2162
181k
            (a = _tmp_11_rule(p))  // '(' single_target ')' | single_subscript_attribute_target
2163
181k
            &&
2164
181k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
2165
181k
            &&
2166
181k
            (b = expression_rule(p))  // expression
2167
181k
            &&
2168
181k
            (c = _tmp_10_rule(p), !p->error_indicator)  // ['=' annotated_rhs]
2169
181k
        )
2170
944
        {
2171
944
            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
944
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2173
944
            if (_token == NULL) {
2174
0
                p->level--;
2175
0
                return NULL;
2176
0
            }
2177
944
            int _end_lineno = _token->end_lineno;
2178
944
            UNUSED(_end_lineno); // Only used by EXTRA macro
2179
944
            int _end_col_offset = _token->end_col_offset;
2180
944
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2181
944
            _res = CHECK_VERSION ( stmt_ty , 6 , "Variable annotations syntax is" , _PyAST_AnnAssign ( a , b , c , 0 , EXTRA ) );
2182
944
            if (_res == NULL && PyErr_Occurred()) {
2183
0
                p->error_indicator = 1;
2184
0
                p->level--;
2185
0
                return NULL;
2186
0
            }
2187
944
            goto done;
2188
944
        }
2189
180k
        p->mark = _mark;
2190
180k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2191
180k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
2192
180k
    }
2193
0
    { // ((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?
2194
180k
        if (p->error_indicator) {
2195
2.82k
            p->level--;
2196
2.82k
            return NULL;
2197
2.82k
        }
2198
177k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?"));
2199
177k
        asdl_expr_seq* a;
2200
177k
        expr_ty b;
2201
177k
        void *tc;
2202
177k
        if (
2203
177k
            (a = (asdl_expr_seq*)_loop1_12_rule(p))  // ((star_targets '='))+
2204
177k
            &&
2205
177k
            (b = annotated_rhs_rule(p))  // annotated_rhs
2206
177k
            &&
2207
177k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22)  // token='='
2208
177k
            &&
2209
177k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
2210
177k
        )
2211
12.8k
        {
2212
12.8k
            D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?"));
2213
12.8k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2214
12.8k
            if (_token == NULL) {
2215
0
                p->level--;
2216
0
                return NULL;
2217
0
            }
2218
12.8k
            int _end_lineno = _token->end_lineno;
2219
12.8k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2220
12.8k
            int _end_col_offset = _token->end_col_offset;
2221
12.8k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2222
12.8k
            _res = _PyAST_Assign ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
2223
12.8k
            if (_res == NULL && PyErr_Occurred()) {
2224
0
                p->error_indicator = 1;
2225
0
                p->level--;
2226
0
                return NULL;
2227
0
            }
2228
12.8k
            goto done;
2229
12.8k
        }
2230
164k
        p->mark = _mark;
2231
164k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2232
164k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?"));
2233
164k
    }
2234
0
    { // single_target augassign ~ annotated_rhs
2235
164k
        if (p->error_indicator) {
2236
319
            p->level--;
2237
319
            return NULL;
2238
319
        }
2239
164k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_target augassign ~ annotated_rhs"));
2240
164k
        int _cut_var = 0;
2241
164k
        expr_ty a;
2242
164k
        AugOperator* b;
2243
164k
        expr_ty c;
2244
164k
        if (
2245
164k
            (a = single_target_rule(p))  // single_target
2246
164k
            &&
2247
164k
            (b = augassign_rule(p))  // augassign
2248
164k
            &&
2249
164k
            (_cut_var = 1)
2250
164k
            &&
2251
164k
            (c = annotated_rhs_rule(p))  // annotated_rhs
2252
164k
        )
2253
2.75k
        {
2254
2.75k
            D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_target augassign ~ annotated_rhs"));
2255
2.75k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2256
2.75k
            if (_token == NULL) {
2257
0
                p->level--;
2258
0
                return NULL;
2259
0
            }
2260
2.75k
            int _end_lineno = _token->end_lineno;
2261
2.75k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2262
2.75k
            int _end_col_offset = _token->end_col_offset;
2263
2.75k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2264
2.75k
            _res = _PyAST_AugAssign ( a , b -> kind , c , EXTRA );
2265
2.75k
            if (_res == NULL && PyErr_Occurred()) {
2266
0
                p->error_indicator = 1;
2267
0
                p->level--;
2268
0
                return NULL;
2269
0
            }
2270
2.75k
            goto done;
2271
2.75k
        }
2272
161k
        p->mark = _mark;
2273
161k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2274
161k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_target augassign ~ annotated_rhs"));
2275
161k
        if (_cut_var) {
2276
145
            p->level--;
2277
145
            return NULL;
2278
145
        }
2279
161k
    }
2280
161k
    if (p->call_invalid_rules) { // invalid_assignment
2281
40.6k
        if (p->error_indicator) {
2282
0
            p->level--;
2283
0
            return NULL;
2284
0
        }
2285
40.6k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_assignment"));
2286
40.6k
        void *invalid_assignment_var;
2287
40.6k
        if (
2288
40.6k
            (invalid_assignment_var = invalid_assignment_rule(p))  // invalid_assignment
2289
40.6k
        )
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.6k
        p->mark = _mark;
2296
40.6k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2297
40.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_assignment"));
2298
40.6k
    }
2299
161k
    _res = NULL;
2300
180k
  done:
2301
180k
    p->level--;
2302
180k
    return _res;
2303
161k
}
2304
2305
// annotated_rhs: yield_expr | star_expressions
2306
static expr_ty
2307
annotated_rhs_rule(Parser *p)
2308
50.2k
{
2309
50.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2310
1
        _Pypegen_stack_overflow(p);
2311
1
    }
2312
50.2k
    if (p->error_indicator) {
2313
1
        p->level--;
2314
1
        return NULL;
2315
1
    }
2316
50.2k
    expr_ty _res = NULL;
2317
50.2k
    int _mark = p->mark;
2318
50.2k
    { // yield_expr
2319
50.2k
        if (p->error_indicator) {
2320
0
            p->level--;
2321
0
            return NULL;
2322
0
        }
2323
50.2k
        D(fprintf(stderr, "%*c> annotated_rhs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
2324
50.2k
        expr_ty yield_expr_var;
2325
50.2k
        if (
2326
50.2k
            (yield_expr_var = yield_expr_rule(p))  // yield_expr
2327
50.2k
        )
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
49.9k
        p->mark = _mark;
2334
49.9k
        D(fprintf(stderr, "%*c%s annotated_rhs[%d-%d]: %s failed!\n", p->level, ' ',
2335
49.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
2336
49.9k
    }
2337
0
    { // star_expressions
2338
49.9k
        if (p->error_indicator) {
2339
115
            p->level--;
2340
115
            return NULL;
2341
115
        }
2342
49.8k
        D(fprintf(stderr, "%*c> annotated_rhs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
2343
49.8k
        expr_ty star_expressions_var;
2344
49.8k
        if (
2345
49.8k
            (star_expressions_var = star_expressions_rule(p))  // star_expressions
2346
49.8k
        )
2347
44.6k
        {
2348
44.6k
            D(fprintf(stderr, "%*c+ annotated_rhs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
2349
44.6k
            _res = star_expressions_var;
2350
44.6k
            goto done;
2351
44.6k
        }
2352
5.19k
        p->mark = _mark;
2353
5.19k
        D(fprintf(stderr, "%*c%s annotated_rhs[%d-%d]: %s failed!\n", p->level, ' ',
2354
5.19k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
2355
5.19k
    }
2356
0
    _res = NULL;
2357
50.1k
  done:
2358
50.1k
    p->level--;
2359
50.1k
    return _res;
2360
5.19k
}
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
99.3k
{
2379
99.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2380
0
        _Pypegen_stack_overflow(p);
2381
0
    }
2382
99.3k
    if (p->error_indicator) {
2383
0
        p->level--;
2384
0
        return NULL;
2385
0
    }
2386
99.3k
    AugOperator* _res = NULL;
2387
99.3k
    int _mark = p->mark;
2388
99.3k
    { // '+='
2389
99.3k
        if (p->error_indicator) {
2390
0
            p->level--;
2391
0
            return NULL;
2392
0
        }
2393
99.3k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+='"));
2394
99.3k
        Token * _literal;
2395
99.3k
        if (
2396
99.3k
            (_literal = _PyPegen_expect_token(p, 36))  // token='+='
2397
99.3k
        )
2398
459
        {
2399
459
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+='"));
2400
459
            _res = _PyPegen_augoperator ( p , Add );
2401
459
            if (_res == NULL && PyErr_Occurred()) {
2402
0
                p->error_indicator = 1;
2403
0
                p->level--;
2404
0
                return NULL;
2405
0
            }
2406
459
            goto done;
2407
459
        }
2408
98.9k
        p->mark = _mark;
2409
98.9k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2410
98.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+='"));
2411
98.9k
    }
2412
0
    { // '-='
2413
98.9k
        if (p->error_indicator) {
2414
0
            p->level--;
2415
0
            return NULL;
2416
0
        }
2417
98.9k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-='"));
2418
98.9k
        Token * _literal;
2419
98.9k
        if (
2420
98.9k
            (_literal = _PyPegen_expect_token(p, 37))  // token='-='
2421
98.9k
        )
2422
130
        {
2423
130
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-='"));
2424
130
            _res = _PyPegen_augoperator ( p , Sub );
2425
130
            if (_res == NULL && PyErr_Occurred()) {
2426
0
                p->error_indicator = 1;
2427
0
                p->level--;
2428
0
                return NULL;
2429
0
            }
2430
130
            goto done;
2431
130
        }
2432
98.7k
        p->mark = _mark;
2433
98.7k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2434
98.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-='"));
2435
98.7k
    }
2436
0
    { // '*='
2437
98.7k
        if (p->error_indicator) {
2438
0
            p->level--;
2439
0
            return NULL;
2440
0
        }
2441
98.7k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*='"));
2442
98.7k
        Token * _literal;
2443
98.7k
        if (
2444
98.7k
            (_literal = _PyPegen_expect_token(p, 38))  // token='*='
2445
98.7k
        )
2446
227
        {
2447
227
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*='"));
2448
227
            _res = _PyPegen_augoperator ( p , Mult );
2449
227
            if (_res == NULL && PyErr_Occurred()) {
2450
0
                p->error_indicator = 1;
2451
0
                p->level--;
2452
0
                return NULL;
2453
0
            }
2454
227
            goto done;
2455
227
        }
2456
98.5k
        p->mark = _mark;
2457
98.5k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2458
98.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*='"));
2459
98.5k
    }
2460
0
    { // '@='
2461
98.5k
        if (p->error_indicator) {
2462
0
            p->level--;
2463
0
            return NULL;
2464
0
        }
2465
98.5k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@='"));
2466
98.5k
        Token * _literal;
2467
98.5k
        if (
2468
98.5k
            (_literal = _PyPegen_expect_token(p, 50))  // token='@='
2469
98.5k
        )
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
98.4k
        p->mark = _mark;
2481
98.4k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2482
98.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@='"));
2483
98.4k
    }
2484
0
    { // '/='
2485
98.4k
        if (p->error_indicator) {
2486
0
            p->level--;
2487
0
            return NULL;
2488
0
        }
2489
98.4k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/='"));
2490
98.4k
        Token * _literal;
2491
98.4k
        if (
2492
98.4k
            (_literal = _PyPegen_expect_token(p, 39))  // token='/='
2493
98.4k
        )
2494
380
        {
2495
380
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'/='"));
2496
380
            _res = _PyPegen_augoperator ( p , Div );
2497
380
            if (_res == NULL && PyErr_Occurred()) {
2498
0
                p->error_indicator = 1;
2499
0
                p->level--;
2500
0
                return NULL;
2501
0
            }
2502
380
            goto done;
2503
380
        }
2504
98.1k
        p->mark = _mark;
2505
98.1k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2506
98.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'/='"));
2507
98.1k
    }
2508
0
    { // '%='
2509
98.1k
        if (p->error_indicator) {
2510
0
            p->level--;
2511
0
            return NULL;
2512
0
        }
2513
98.1k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'%='"));
2514
98.1k
        Token * _literal;
2515
98.1k
        if (
2516
98.1k
            (_literal = _PyPegen_expect_token(p, 40))  // token='%='
2517
98.1k
        )
2518
359
        {
2519
359
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'%='"));
2520
359
            _res = _PyPegen_augoperator ( p , Mod );
2521
359
            if (_res == NULL && PyErr_Occurred()) {
2522
0
                p->error_indicator = 1;
2523
0
                p->level--;
2524
0
                return NULL;
2525
0
            }
2526
359
            goto done;
2527
359
        }
2528
97.7k
        p->mark = _mark;
2529
97.7k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2530
97.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'%='"));
2531
97.7k
    }
2532
0
    { // '&='
2533
97.7k
        if (p->error_indicator) {
2534
0
            p->level--;
2535
0
            return NULL;
2536
0
        }
2537
97.7k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'&='"));
2538
97.7k
        Token * _literal;
2539
97.7k
        if (
2540
97.7k
            (_literal = _PyPegen_expect_token(p, 41))  // token='&='
2541
97.7k
        )
2542
227
        {
2543
227
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'&='"));
2544
227
            _res = _PyPegen_augoperator ( p , BitAnd );
2545
227
            if (_res == NULL && PyErr_Occurred()) {
2546
0
                p->error_indicator = 1;
2547
0
                p->level--;
2548
0
                return NULL;
2549
0
            }
2550
227
            goto done;
2551
227
        }
2552
97.5k
        p->mark = _mark;
2553
97.5k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2554
97.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'&='"));
2555
97.5k
    }
2556
0
    { // '|='
2557
97.5k
        if (p->error_indicator) {
2558
0
            p->level--;
2559
0
            return NULL;
2560
0
        }
2561
97.5k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|='"));
2562
97.5k
        Token * _literal;
2563
97.5k
        if (
2564
97.5k
            (_literal = _PyPegen_expect_token(p, 42))  // token='|='
2565
97.5k
        )
2566
266
        {
2567
266
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'|='"));
2568
266
            _res = _PyPegen_augoperator ( p , BitOr );
2569
266
            if (_res == NULL && PyErr_Occurred()) {
2570
0
                p->error_indicator = 1;
2571
0
                p->level--;
2572
0
                return NULL;
2573
0
            }
2574
266
            goto done;
2575
266
        }
2576
97.2k
        p->mark = _mark;
2577
97.2k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2578
97.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|='"));
2579
97.2k
    }
2580
0
    { // '^='
2581
97.2k
        if (p->error_indicator) {
2582
0
            p->level--;
2583
0
            return NULL;
2584
0
        }
2585
97.2k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'^='"));
2586
97.2k
        Token * _literal;
2587
97.2k
        if (
2588
97.2k
            (_literal = _PyPegen_expect_token(p, 43))  // token='^='
2589
97.2k
        )
2590
215
        {
2591
215
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'^='"));
2592
215
            _res = _PyPegen_augoperator ( p , BitXor );
2593
215
            if (_res == NULL && PyErr_Occurred()) {
2594
0
                p->error_indicator = 1;
2595
0
                p->level--;
2596
0
                return NULL;
2597
0
            }
2598
215
            goto done;
2599
215
        }
2600
97.0k
        p->mark = _mark;
2601
97.0k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2602
97.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'^='"));
2603
97.0k
    }
2604
0
    { // '<<='
2605
97.0k
        if (p->error_indicator) {
2606
0
            p->level--;
2607
0
            return NULL;
2608
0
        }
2609
97.0k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<<='"));
2610
97.0k
        Token * _literal;
2611
97.0k
        if (
2612
97.0k
            (_literal = _PyPegen_expect_token(p, 44))  // token='<<='
2613
97.0k
        )
2614
215
        {
2615
215
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<<='"));
2616
215
            _res = _PyPegen_augoperator ( p , LShift );
2617
215
            if (_res == NULL && PyErr_Occurred()) {
2618
0
                p->error_indicator = 1;
2619
0
                p->level--;
2620
0
                return NULL;
2621
0
            }
2622
215
            goto done;
2623
215
        }
2624
96.8k
        p->mark = _mark;
2625
96.8k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2626
96.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<<='"));
2627
96.8k
    }
2628
0
    { // '>>='
2629
96.8k
        if (p->error_indicator) {
2630
0
            p->level--;
2631
0
            return NULL;
2632
0
        }
2633
96.8k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>>='"));
2634
96.8k
        Token * _literal;
2635
96.8k
        if (
2636
96.8k
            (_literal = _PyPegen_expect_token(p, 45))  // token='>>='
2637
96.8k
        )
2638
198
        {
2639
198
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>>='"));
2640
198
            _res = _PyPegen_augoperator ( p , RShift );
2641
198
            if (_res == NULL && PyErr_Occurred()) {
2642
0
                p->error_indicator = 1;
2643
0
                p->level--;
2644
0
                return NULL;
2645
0
            }
2646
198
            goto done;
2647
198
        }
2648
96.6k
        p->mark = _mark;
2649
96.6k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2650
96.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>>='"));
2651
96.6k
    }
2652
0
    { // '**='
2653
96.6k
        if (p->error_indicator) {
2654
0
            p->level--;
2655
0
            return NULL;
2656
0
        }
2657
96.6k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**='"));
2658
96.6k
        Token * _literal;
2659
96.6k
        if (
2660
96.6k
            (_literal = _PyPegen_expect_token(p, 46))  // token='**='
2661
96.6k
        )
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
96.4k
        p->mark = _mark;
2673
96.4k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2674
96.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**='"));
2675
96.4k
    }
2676
0
    { // '//='
2677
96.4k
        if (p->error_indicator) {
2678
0
            p->level--;
2679
0
            return NULL;
2680
0
        }
2681
96.4k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'//='"));
2682
96.4k
        Token * _literal;
2683
96.4k
        if (
2684
96.4k
            (_literal = _PyPegen_expect_token(p, 48))  // token='//='
2685
96.4k
        )
2686
199
        {
2687
199
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'//='"));
2688
199
            _res = _PyPegen_augoperator ( p , FloorDiv );
2689
199
            if (_res == NULL && PyErr_Occurred()) {
2690
0
                p->error_indicator = 1;
2691
0
                p->level--;
2692
0
                return NULL;
2693
0
            }
2694
199
            goto done;
2695
199
        }
2696
96.2k
        p->mark = _mark;
2697
96.2k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2698
96.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'//='"));
2699
96.2k
    }
2700
0
    _res = NULL;
2701
99.3k
  done:
2702
99.3k
    p->level--;
2703
99.3k
    return _res;
2704
96.2k
}
2705
2706
// return_stmt: 'return' star_expressions?
2707
static stmt_ty
2708
return_stmt_rule(Parser *p)
2709
7.38k
{
2710
7.38k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2711
0
        _Pypegen_stack_overflow(p);
2712
0
    }
2713
7.38k
    if (p->error_indicator) {
2714
0
        p->level--;
2715
0
        return NULL;
2716
0
    }
2717
7.38k
    stmt_ty _res = NULL;
2718
7.38k
    int _mark = p->mark;
2719
7.38k
    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.38k
    int _start_lineno = p->tokens[_mark]->lineno;
2725
7.38k
    UNUSED(_start_lineno); // Only used by EXTRA macro
2726
7.38k
    int _start_col_offset = p->tokens[_mark]->col_offset;
2727
7.38k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
2728
7.38k
    { // 'return' star_expressions?
2729
7.38k
        if (p->error_indicator) {
2730
0
            p->level--;
2731
0
            return NULL;
2732
0
        }
2733
7.38k
        D(fprintf(stderr, "%*c> return_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'return' star_expressions?"));
2734
7.38k
        Token * _keyword;
2735
7.38k
        void *a;
2736
7.38k
        if (
2737
7.38k
            (_keyword = _PyPegen_expect_token(p, 522))  // token='return'
2738
7.38k
            &&
2739
7.38k
            (a = star_expressions_rule(p), !p->error_indicator)  // star_expressions?
2740
7.38k
        )
2741
7.37k
        {
2742
7.37k
            D(fprintf(stderr, "%*c+ return_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'return' star_expressions?"));
2743
7.37k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2744
7.37k
            if (_token == NULL) {
2745
0
                p->level--;
2746
0
                return NULL;
2747
0
            }
2748
7.37k
            int _end_lineno = _token->end_lineno;
2749
7.37k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2750
7.37k
            int _end_col_offset = _token->end_col_offset;
2751
7.37k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2752
7.37k
            _res = _PyAST_Return ( a , EXTRA );
2753
7.37k
            if (_res == NULL && PyErr_Occurred()) {
2754
0
                p->error_indicator = 1;
2755
0
                p->level--;
2756
0
                return NULL;
2757
0
            }
2758
7.37k
            goto done;
2759
7.37k
        }
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.38k
  done:
2766
7.38k
    p->level--;
2767
7.38k
    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.43k
{
2778
3.43k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2779
0
        _Pypegen_stack_overflow(p);
2780
0
    }
2781
3.43k
    if (p->error_indicator) {
2782
0
        p->level--;
2783
0
        return NULL;
2784
0
    }
2785
3.43k
    stmt_ty _res = NULL;
2786
3.43k
    int _mark = p->mark;
2787
3.43k
    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.43k
    int _start_lineno = p->tokens[_mark]->lineno;
2793
3.43k
    UNUSED(_start_lineno); // Only used by EXTRA macro
2794
3.43k
    int _start_col_offset = p->tokens[_mark]->col_offset;
2795
3.43k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
2796
3.43k
    { // 'raise' expression 'from' expression
2797
3.43k
        if (p->error_indicator) {
2798
0
            p->level--;
2799
0
            return NULL;
2800
0
        }
2801
3.43k
        D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' expression 'from' expression"));
2802
3.43k
        Token * _keyword;
2803
3.43k
        Token * _keyword_1;
2804
3.43k
        expr_ty a;
2805
3.43k
        expr_ty b;
2806
3.43k
        if (
2807
3.43k
            (_keyword = _PyPegen_expect_token(p, 628))  // token='raise'
2808
3.43k
            &&
2809
3.43k
            (a = expression_rule(p))  // expression
2810
3.43k
            &&
2811
3.43k
            (_keyword_1 = _PyPegen_expect_token(p, 638))  // token='from'
2812
3.43k
            &&
2813
3.43k
            (b = expression_rule(p))  // expression
2814
3.43k
        )
2815
590
        {
2816
590
            D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' expression 'from' expression"));
2817
590
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2818
590
            if (_token == NULL) {
2819
0
                p->level--;
2820
0
                return NULL;
2821
0
            }
2822
590
            int _end_lineno = _token->end_lineno;
2823
590
            UNUSED(_end_lineno); // Only used by EXTRA macro
2824
590
            int _end_col_offset = _token->end_col_offset;
2825
590
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2826
590
            _res = _PyAST_Raise ( a , b , EXTRA );
2827
590
            if (_res == NULL && PyErr_Occurred()) {
2828
0
                p->error_indicator = 1;
2829
0
                p->level--;
2830
0
                return NULL;
2831
0
            }
2832
590
            goto done;
2833
590
        }
2834
2.84k
        p->mark = _mark;
2835
2.84k
        D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2836
2.84k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' expression 'from' expression"));
2837
2.84k
    }
2838
2.84k
    if (p->call_invalid_rules) { // invalid_raise_stmt
2839
597
        if (p->error_indicator) {
2840
18
            p->level--;
2841
18
            return NULL;
2842
18
        }
2843
579
        D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_raise_stmt"));
2844
579
        void *invalid_raise_stmt_var;
2845
579
        if (
2846
579
            (invalid_raise_stmt_var = invalid_raise_stmt_rule(p))  // invalid_raise_stmt
2847
579
        )
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
579
        p->mark = _mark;
2854
579
        D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2855
579
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_raise_stmt"));
2856
579
    }
2857
2.82k
    { // 'raise' expression
2858
2.82k
        if (p->error_indicator) {
2859
6
            p->level--;
2860
6
            return NULL;
2861
6
        }
2862
2.82k
        D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' expression"));
2863
2.82k
        Token * _keyword;
2864
2.82k
        expr_ty a;
2865
2.82k
        if (
2866
2.82k
            (_keyword = _PyPegen_expect_token(p, 628))  // token='raise'
2867
2.82k
            &&
2868
2.82k
            (a = expression_rule(p))  // expression
2869
2.82k
        )
2870
2.03k
        {
2871
2.03k
            D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' expression"));
2872
2.03k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2873
2.03k
            if (_token == NULL) {
2874
0
                p->level--;
2875
0
                return NULL;
2876
0
            }
2877
2.03k
            int _end_lineno = _token->end_lineno;
2878
2.03k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2879
2.03k
            int _end_col_offset = _token->end_col_offset;
2880
2.03k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2881
2.03k
            _res = _PyAST_Raise ( a , NULL , EXTRA );
2882
2.03k
            if (_res == NULL && PyErr_Occurred()) {
2883
0
                p->error_indicator = 1;
2884
0
                p->level--;
2885
0
                return NULL;
2886
0
            }
2887
2.03k
            goto done;
2888
2.03k
        }
2889
784
        p->mark = _mark;
2890
784
        D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2891
784
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' expression"));
2892
784
    }
2893
0
    { // 'raise'
2894
784
        if (p->error_indicator) {
2895
0
            p->level--;
2896
0
            return NULL;
2897
0
        }
2898
784
        D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise'"));
2899
784
        Token * _keyword;
2900
784
        if (
2901
784
            (_keyword = _PyPegen_expect_token(p, 628))  // token='raise'
2902
784
        )
2903
784
        {
2904
784
            D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise'"));
2905
784
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2906
784
            if (_token == NULL) {
2907
0
                p->level--;
2908
0
                return NULL;
2909
0
            }
2910
784
            int _end_lineno = _token->end_lineno;
2911
784
            UNUSED(_end_lineno); // Only used by EXTRA macro
2912
784
            int _end_col_offset = _token->end_col_offset;
2913
784
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2914
784
            _res = _PyAST_Raise ( NULL , NULL , EXTRA );
2915
784
            if (_res == NULL && PyErr_Occurred()) {
2916
0
                p->error_indicator = 1;
2917
0
                p->level--;
2918
0
                return NULL;
2919
0
            }
2920
784
            goto done;
2921
784
        }
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.41k
  done:
2928
3.41k
    p->level--;
2929
3.41k
    return _res;
2930
0
}
2931
2932
// pass_stmt: 'pass'
2933
static stmt_ty
2934
pass_stmt_rule(Parser *p)
2935
203k
{
2936
203k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2937
0
        _Pypegen_stack_overflow(p);
2938
0
    }
2939
203k
    if (p->error_indicator) {
2940
0
        p->level--;
2941
0
        return NULL;
2942
0
    }
2943
203k
    stmt_ty _res = NULL;
2944
203k
    int _mark = p->mark;
2945
203k
    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
203k
    int _start_lineno = p->tokens[_mark]->lineno;
2951
203k
    UNUSED(_start_lineno); // Only used by EXTRA macro
2952
203k
    int _start_col_offset = p->tokens[_mark]->col_offset;
2953
203k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
2954
203k
    { // 'pass'
2955
203k
        if (p->error_indicator) {
2956
0
            p->level--;
2957
0
            return NULL;
2958
0
        }
2959
203k
        D(fprintf(stderr, "%*c> pass_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'pass'"));
2960
203k
        Token * _keyword;
2961
203k
        if (
2962
203k
            (_keyword = _PyPegen_expect_token(p, 527))  // token='pass'
2963
203k
        )
2964
1.94k
        {
2965
1.94k
            D(fprintf(stderr, "%*c+ pass_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'pass'"));
2966
1.94k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2967
1.94k
            if (_token == NULL) {
2968
0
                p->level--;
2969
0
                return NULL;
2970
0
            }
2971
1.94k
            int _end_lineno = _token->end_lineno;
2972
1.94k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2973
1.94k
            int _end_col_offset = _token->end_col_offset;
2974
1.94k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2975
1.94k
            _res = _PyAST_Pass ( EXTRA );
2976
1.94k
            if (_res == NULL && PyErr_Occurred()) {
2977
0
                p->error_indicator = 1;
2978
0
                p->level--;
2979
0
                return NULL;
2980
0
            }
2981
1.94k
            goto done;
2982
1.94k
        }
2983
201k
        p->mark = _mark;
2984
201k
        D(fprintf(stderr, "%*c%s pass_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2985
201k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'pass'"));
2986
201k
    }
2987
0
    _res = NULL;
2988
203k
  done:
2989
203k
    p->level--;
2990
203k
    return _res;
2991
201k
}
2992
2993
// break_stmt: 'break'
2994
static stmt_ty
2995
break_stmt_rule(Parser *p)
2996
202k
{
2997
202k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2998
0
        _Pypegen_stack_overflow(p);
2999
0
    }
3000
202k
    if (p->error_indicator) {
3001
0
        p->level--;
3002
0
        return NULL;
3003
0
    }
3004
202k
    stmt_ty _res = NULL;
3005
202k
    int _mark = p->mark;
3006
202k
    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
202k
    int _start_lineno = p->tokens[_mark]->lineno;
3012
202k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3013
202k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3014
202k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3015
202k
    { // 'break'
3016
202k
        if (p->error_indicator) {
3017
0
            p->level--;
3018
0
            return NULL;
3019
0
        }
3020
202k
        D(fprintf(stderr, "%*c> break_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'break'"));
3021
202k
        Token * _keyword;
3022
202k
        if (
3023
202k
            (_keyword = _PyPegen_expect_token(p, 528))  // token='break'
3024
202k
        )
3025
1.48k
        {
3026
1.48k
            D(fprintf(stderr, "%*c+ break_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'break'"));
3027
1.48k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3028
1.48k
            if (_token == NULL) {
3029
0
                p->level--;
3030
0
                return NULL;
3031
0
            }
3032
1.48k
            int _end_lineno = _token->end_lineno;
3033
1.48k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3034
1.48k
            int _end_col_offset = _token->end_col_offset;
3035
1.48k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3036
1.48k
            _res = _PyAST_Break ( EXTRA );
3037
1.48k
            if (_res == NULL && PyErr_Occurred()) {
3038
0
                p->error_indicator = 1;
3039
0
                p->level--;
3040
0
                return NULL;
3041
0
            }
3042
1.48k
            goto done;
3043
1.48k
        }
3044
201k
        p->mark = _mark;
3045
201k
        D(fprintf(stderr, "%*c%s break_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3046
201k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'break'"));
3047
201k
    }
3048
0
    _res = NULL;
3049
202k
  done:
3050
202k
    p->level--;
3051
202k
    return _res;
3052
201k
}
3053
3054
// continue_stmt: 'continue'
3055
static stmt_ty
3056
continue_stmt_rule(Parser *p)
3057
202k
{
3058
202k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3059
0
        _Pypegen_stack_overflow(p);
3060
0
    }
3061
202k
    if (p->error_indicator) {
3062
0
        p->level--;
3063
0
        return NULL;
3064
0
    }
3065
202k
    stmt_ty _res = NULL;
3066
202k
    int _mark = p->mark;
3067
202k
    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
202k
    int _start_lineno = p->tokens[_mark]->lineno;
3073
202k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3074
202k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3075
202k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3076
202k
    { // 'continue'
3077
202k
        if (p->error_indicator) {
3078
0
            p->level--;
3079
0
            return NULL;
3080
0
        }
3081
202k
        D(fprintf(stderr, "%*c> continue_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'continue'"));
3082
202k
        Token * _keyword;
3083
202k
        if (
3084
202k
            (_keyword = _PyPegen_expect_token(p, 529))  // token='continue'
3085
202k
        )
3086
2.69k
        {
3087
2.69k
            D(fprintf(stderr, "%*c+ continue_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'continue'"));
3088
2.69k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3089
2.69k
            if (_token == NULL) {
3090
0
                p->level--;
3091
0
                return NULL;
3092
0
            }
3093
2.69k
            int _end_lineno = _token->end_lineno;
3094
2.69k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3095
2.69k
            int _end_col_offset = _token->end_col_offset;
3096
2.69k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3097
2.69k
            _res = _PyAST_Continue ( EXTRA );
3098
2.69k
            if (_res == NULL && PyErr_Occurred()) {
3099
0
                p->error_indicator = 1;
3100
0
                p->level--;
3101
0
                return NULL;
3102
0
            }
3103
2.69k
            goto done;
3104
2.69k
        }
3105
199k
        p->mark = _mark;
3106
199k
        D(fprintf(stderr, "%*c%s continue_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3107
199k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'continue'"));
3108
199k
    }
3109
0
    _res = NULL;
3110
202k
  done:
3111
202k
    p->level--;
3112
202k
    return _res;
3113
199k
}
3114
3115
// global_stmt: 'global' ','.NAME+
3116
static stmt_ty
3117
global_stmt_rule(Parser *p)
3118
688
{
3119
688
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3120
0
        _Pypegen_stack_overflow(p);
3121
0
    }
3122
688
    if (p->error_indicator) {
3123
0
        p->level--;
3124
0
        return NULL;
3125
0
    }
3126
688
    stmt_ty _res = NULL;
3127
688
    int _mark = p->mark;
3128
688
    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
688
    int _start_lineno = p->tokens[_mark]->lineno;
3134
688
    UNUSED(_start_lineno); // Only used by EXTRA macro
3135
688
    int _start_col_offset = p->tokens[_mark]->col_offset;
3136
688
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3137
688
    { // 'global' ','.NAME+
3138
688
        if (p->error_indicator) {
3139
0
            p->level--;
3140
0
            return NULL;
3141
0
        }
3142
688
        D(fprintf(stderr, "%*c> global_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'global' ','.NAME+"));
3143
688
        Token * _keyword;
3144
688
        asdl_expr_seq* a;
3145
688
        if (
3146
688
            (_keyword = _PyPegen_expect_token(p, 530))  // token='global'
3147
688
            &&
3148
688
            (a = (asdl_expr_seq*)_gather_14_rule(p))  // ','.NAME+
3149
688
        )
3150
683
        {
3151
683
            D(fprintf(stderr, "%*c+ global_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'global' ','.NAME+"));
3152
683
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3153
683
            if (_token == NULL) {
3154
0
                p->level--;
3155
0
                return NULL;
3156
0
            }
3157
683
            int _end_lineno = _token->end_lineno;
3158
683
            UNUSED(_end_lineno); // Only used by EXTRA macro
3159
683
            int _end_col_offset = _token->end_col_offset;
3160
683
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3161
683
            _res = _PyAST_Global ( CHECK ( asdl_identifier_seq* , _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
3162
683
            if (_res == NULL && PyErr_Occurred()) {
3163
0
                p->error_indicator = 1;
3164
0
                p->level--;
3165
0
                return NULL;
3166
0
            }
3167
683
            goto done;
3168
683
        }
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
688
  done:
3175
688
    p->level--;
3176
688
    return _res;
3177
5
}
3178
3179
// nonlocal_stmt: 'nonlocal' ','.NAME+
3180
static stmt_ty
3181
nonlocal_stmt_rule(Parser *p)
3182
636
{
3183
636
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3184
0
        _Pypegen_stack_overflow(p);
3185
0
    }
3186
636
    if (p->error_indicator) {
3187
0
        p->level--;
3188
0
        return NULL;
3189
0
    }
3190
636
    stmt_ty _res = NULL;
3191
636
    int _mark = p->mark;
3192
636
    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
636
    int _start_lineno = p->tokens[_mark]->lineno;
3198
636
    UNUSED(_start_lineno); // Only used by EXTRA macro
3199
636
    int _start_col_offset = p->tokens[_mark]->col_offset;
3200
636
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3201
636
    { // 'nonlocal' ','.NAME+
3202
636
        if (p->error_indicator) {
3203
0
            p->level--;
3204
0
            return NULL;
3205
0
        }
3206
636
        D(fprintf(stderr, "%*c> nonlocal_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'nonlocal' ','.NAME+"));
3207
636
        Token * _keyword;
3208
636
        asdl_expr_seq* a;
3209
636
        if (
3210
636
            (_keyword = _PyPegen_expect_token(p, 531))  // token='nonlocal'
3211
636
            &&
3212
636
            (a = (asdl_expr_seq*)_gather_14_rule(p))  // ','.NAME+
3213
636
        )
3214
633
        {
3215
633
            D(fprintf(stderr, "%*c+ nonlocal_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'nonlocal' ','.NAME+"));
3216
633
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3217
633
            if (_token == NULL) {
3218
0
                p->level--;
3219
0
                return NULL;
3220
0
            }
3221
633
            int _end_lineno = _token->end_lineno;
3222
633
            UNUSED(_end_lineno); // Only used by EXTRA macro
3223
633
            int _end_col_offset = _token->end_col_offset;
3224
633
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3225
633
            _res = _PyAST_Nonlocal ( CHECK ( asdl_identifier_seq* , _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
3226
633
            if (_res == NULL && PyErr_Occurred()) {
3227
0
                p->error_indicator = 1;
3228
0
                p->level--;
3229
0
                return NULL;
3230
0
            }
3231
633
            goto done;
3232
633
        }
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
636
  done:
3239
636
    p->level--;
3240
636
    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.46k
{
3247
1.46k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3248
0
        _Pypegen_stack_overflow(p);
3249
0
    }
3250
1.46k
    if (p->error_indicator) {
3251
0
        p->level--;
3252
0
        return NULL;
3253
0
    }
3254
1.46k
    stmt_ty _res = NULL;
3255
1.46k
    int _mark = p->mark;
3256
1.46k
    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.46k
    int _start_lineno = p->tokens[_mark]->lineno;
3262
1.46k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3263
1.46k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3264
1.46k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3265
1.46k
    { // 'del' del_targets &(';' | NEWLINE)
3266
1.46k
        if (p->error_indicator) {
3267
0
            p->level--;
3268
0
            return NULL;
3269
0
        }
3270
1.46k
        D(fprintf(stderr, "%*c> del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3271
1.46k
        Token * _keyword;
3272
1.46k
        asdl_expr_seq* a;
3273
1.46k
        if (
3274
1.46k
            (_keyword = _PyPegen_expect_token(p, 630))  // token='del'
3275
1.46k
            &&
3276
1.46k
            (a = del_targets_rule(p))  // del_targets
3277
1.46k
            &&
3278
1.46k
            _PyPegen_lookahead(1, _tmp_15_rule, p)
3279
1.46k
        )
3280
902
        {
3281
902
            D(fprintf(stderr, "%*c+ del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3282
902
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3283
902
            if (_token == NULL) {
3284
0
                p->level--;
3285
0
                return NULL;
3286
0
            }
3287
902
            int _end_lineno = _token->end_lineno;
3288
902
            UNUSED(_end_lineno); // Only used by EXTRA macro
3289
902
            int _end_col_offset = _token->end_col_offset;
3290
902
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3291
902
            _res = _PyAST_Delete ( a , EXTRA );
3292
902
            if (_res == NULL && PyErr_Occurred()) {
3293
0
                p->error_indicator = 1;
3294
0
                p->level--;
3295
0
                return NULL;
3296
0
            }
3297
902
            goto done;
3298
902
        }
3299
567
        p->mark = _mark;
3300
567
        D(fprintf(stderr, "%*c%s del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3301
567
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3302
567
    }
3303
567
    if (p->call_invalid_rules) { // invalid_del_stmt
3304
426
        if (p->error_indicator) {
3305
125
            p->level--;
3306
125
            return NULL;
3307
125
        }
3308
301
        D(fprintf(stderr, "%*c> del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_del_stmt"));
3309
301
        void *invalid_del_stmt_var;
3310
301
        if (
3311
301
            (invalid_del_stmt_var = invalid_del_stmt_rule(p))  // invalid_del_stmt
3312
301
        )
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
301
        p->mark = _mark;
3319
301
        D(fprintf(stderr, "%*c%s del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3320
301
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_del_stmt"));
3321
301
    }
3322
442
    _res = NULL;
3323
1.34k
  done:
3324
1.34k
    p->level--;
3325
1.34k
    return _res;
3326
442
}
3327
3328
// yield_stmt: yield_expr
3329
static stmt_ty
3330
yield_stmt_rule(Parser *p)
3331
1.61k
{
3332
1.61k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3333
0
        _Pypegen_stack_overflow(p);
3334
0
    }
3335
1.61k
    if (p->error_indicator) {
3336
0
        p->level--;
3337
0
        return NULL;
3338
0
    }
3339
1.61k
    stmt_ty _res = NULL;
3340
1.61k
    int _mark = p->mark;
3341
1.61k
    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.61k
    int _start_lineno = p->tokens[_mark]->lineno;
3347
1.61k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3348
1.61k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3349
1.61k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3350
1.61k
    { // yield_expr
3351
1.61k
        if (p->error_indicator) {
3352
0
            p->level--;
3353
0
            return NULL;
3354
0
        }
3355
1.61k
        D(fprintf(stderr, "%*c> yield_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
3356
1.61k
        expr_ty y;
3357
1.61k
        if (
3358
1.61k
            (y = yield_expr_rule(p))  // yield_expr
3359
1.61k
        )
3360
1.61k
        {
3361
1.61k
            D(fprintf(stderr, "%*c+ yield_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
3362
1.61k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3363
1.61k
            if (_token == NULL) {
3364
0
                p->level--;
3365
0
                return NULL;
3366
0
            }
3367
1.61k
            int _end_lineno = _token->end_lineno;
3368
1.61k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3369
1.61k
            int _end_col_offset = _token->end_col_offset;
3370
1.61k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3371
1.61k
            _res = _PyAST_Expr ( y , EXTRA );
3372
1.61k
            if (_res == NULL && PyErr_Occurred()) {
3373
0
                p->error_indicator = 1;
3374
0
                p->level--;
3375
0
                return NULL;
3376
0
            }
3377
1.61k
            goto done;
3378
1.61k
        }
3379
5
        p->mark = _mark;
3380
5
        D(fprintf(stderr, "%*c%s yield_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3381
5
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
3382
5
    }
3383
0
    _res = NULL;
3384
1.61k
  done:
3385
1.61k
    p->level--;
3386
1.61k
    return _res;
3387
5
}
3388
3389
// assert_stmt: 'assert' expression [',' expression]
3390
static stmt_ty
3391
assert_stmt_rule(Parser *p)
3392
753
{
3393
753
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3394
0
        _Pypegen_stack_overflow(p);
3395
0
    }
3396
753
    if (p->error_indicator) {
3397
0
        p->level--;
3398
0
        return NULL;
3399
0
    }
3400
753
    stmt_ty _res = NULL;
3401
753
    int _mark = p->mark;
3402
753
    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
753
    int _start_lineno = p->tokens[_mark]->lineno;
3408
753
    UNUSED(_start_lineno); // Only used by EXTRA macro
3409
753
    int _start_col_offset = p->tokens[_mark]->col_offset;
3410
753
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3411
753
    { // 'assert' expression [',' expression]
3412
753
        if (p->error_indicator) {
3413
0
            p->level--;
3414
0
            return NULL;
3415
0
        }
3416
753
        D(fprintf(stderr, "%*c> assert_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'assert' expression [',' expression]"));
3417
753
        Token * _keyword;
3418
753
        expr_ty a;
3419
753
        void *b;
3420
753
        if (
3421
753
            (_keyword = _PyPegen_expect_token(p, 533))  // token='assert'
3422
753
            &&
3423
753
            (a = expression_rule(p))  // expression
3424
753
            &&
3425
753
            (b = _tmp_16_rule(p), !p->error_indicator)  // [',' expression]
3426
753
        )
3427
715
        {
3428
715
            D(fprintf(stderr, "%*c+ assert_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'assert' expression [',' expression]"));
3429
715
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3430
715
            if (_token == NULL) {
3431
0
                p->level--;
3432
0
                return NULL;
3433
0
            }
3434
715
            int _end_lineno = _token->end_lineno;
3435
715
            UNUSED(_end_lineno); // Only used by EXTRA macro
3436
715
            int _end_col_offset = _token->end_col_offset;
3437
715
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3438
715
            _res = _PyAST_Assert ( a , b , EXTRA );
3439
715
            if (_res == NULL && PyErr_Occurred()) {
3440
0
                p->error_indicator = 1;
3441
0
                p->level--;
3442
0
                return NULL;
3443
0
            }
3444
715
            goto done;
3445
715
        }
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
753
  done:
3452
753
    p->level--;
3453
753
    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.63k
{
3460
5.63k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3461
0
        _Pypegen_stack_overflow(p);
3462
0
    }
3463
5.63k
    if (p->error_indicator) {
3464
0
        p->level--;
3465
0
        return NULL;
3466
0
    }
3467
5.63k
    stmt_ty _res = NULL;
3468
5.63k
    int _mark = p->mark;
3469
5.63k
    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.63k
    { // import_name
3489
5.63k
        if (p->error_indicator) {
3490
7
            p->level--;
3491
7
            return NULL;
3492
7
        }
3493
5.63k
        D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_name"));
3494
5.63k
        stmt_ty import_name_var;
3495
5.63k
        if (
3496
5.63k
            (import_name_var = import_name_rule(p))  // import_name
3497
5.63k
        )
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.07k
        p->mark = _mark;
3504
3.07k
        D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3505
3.07k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_name"));
3506
3.07k
    }
3507
0
    { // import_from
3508
3.07k
        if (p->error_indicator) {
3509
29
            p->level--;
3510
29
            return NULL;
3511
29
        }
3512
3.04k
        D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from"));
3513
3.04k
        stmt_ty import_from_var;
3514
3.04k
        if (
3515
3.04k
            (import_from_var = import_from_rule(p))  // import_from
3516
3.04k
        )
3517
2.82k
        {
3518
2.82k
            D(fprintf(stderr, "%*c+ import_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from"));
3519
2.82k
            _res = import_from_var;
3520
2.82k
            goto done;
3521
2.82k
        }
3522
216
        p->mark = _mark;
3523
216
        D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3524
216
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from"));
3525
216
    }
3526
0
    _res = NULL;
3527
5.60k
  done:
3528
5.60k
    p->level--;
3529
5.60k
    return _res;
3530
216
}
3531
3532
// import_name: 'import' dotted_as_names
3533
static stmt_ty
3534
import_name_rule(Parser *p)
3535
5.63k
{
3536
5.63k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3537
0
        _Pypegen_stack_overflow(p);
3538
0
    }
3539
5.63k
    if (p->error_indicator) {
3540
0
        p->level--;
3541
0
        return NULL;
3542
0
    }
3543
5.63k
    stmt_ty _res = NULL;
3544
5.63k
    int _mark = p->mark;
3545
5.63k
    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.63k
    int _start_lineno = p->tokens[_mark]->lineno;
3551
5.63k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3552
5.63k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3553
5.63k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3554
5.63k
    { // 'import' dotted_as_names
3555
5.63k
        if (p->error_indicator) {
3556
0
            p->level--;
3557
0
            return NULL;
3558
0
        }
3559
5.63k
        D(fprintf(stderr, "%*c> import_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import' dotted_as_names"));
3560
5.63k
        Token * _keyword;
3561
5.63k
        asdl_alias_seq* a;
3562
5.63k
        if (
3563
5.63k
            (_keyword = _PyPegen_expect_token(p, 639))  // token='import'
3564
5.63k
            &&
3565
5.63k
            (a = dotted_as_names_rule(p))  // dotted_as_names
3566
5.63k
        )
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.07k
        p->mark = _mark;
3587
3.07k
        D(fprintf(stderr, "%*c%s import_name[%d-%d]: %s failed!\n", p->level, ' ',
3588
3.07k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import' dotted_as_names"));
3589
3.07k
    }
3590
0
    _res = NULL;
3591
5.63k
  done:
3592
5.63k
    p->level--;
3593
5.63k
    return _res;
3594
3.07k
}
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.04k
{
3602
3.04k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3603
0
        _Pypegen_stack_overflow(p);
3604
0
    }
3605
3.04k
    if (p->error_indicator) {
3606
0
        p->level--;
3607
0
        return NULL;
3608
0
    }
3609
3.04k
    stmt_ty _res = NULL;
3610
3.04k
    int _mark = p->mark;
3611
3.04k
    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.04k
    int _start_lineno = p->tokens[_mark]->lineno;
3617
3.04k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3618
3.04k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3619
3.04k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3620
3.04k
    { // 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
3621
3.04k
        if (p->error_indicator) {
3622
0
            p->level--;
3623
0
            return NULL;
3624
0
        }
3625
3.04k
        D(fprintf(stderr, "%*c> import_from[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3626
3.04k
        Token * _keyword;
3627
3.04k
        Token * _keyword_1;
3628
3.04k
        asdl_seq * a;
3629
3.04k
        expr_ty b;
3630
3.04k
        asdl_alias_seq* c;
3631
3.04k
        if (
3632
3.04k
            (_keyword = _PyPegen_expect_token(p, 638))  // token='from'
3633
3.04k
            &&
3634
3.04k
            (a = _loop0_17_rule(p))  // (('.' | '...'))*
3635
3.04k
            &&
3636
3.04k
            (b = dotted_name_rule(p))  // dotted_name
3637
3.04k
            &&
3638
3.04k
            (_keyword_1 = _PyPegen_expect_token(p, 639))  // token='import'
3639
3.04k
            &&
3640
3.04k
            (c = import_from_targets_rule(p))  // import_from_targets
3641
3.04k
        )
3642
1.78k
        {
3643
1.78k
            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.78k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3645
1.78k
            if (_token == NULL) {
3646
0
                p->level--;
3647
0
                return NULL;
3648
0
            }
3649
1.78k
            int _end_lineno = _token->end_lineno;
3650
1.78k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3651
1.78k
            int _end_col_offset = _token->end_col_offset;
3652
1.78k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3653
1.78k
            _res = _PyPegen_checked_future_import ( p , b -> v . Name . id , c , _PyPegen_seq_count_dots ( a ) , EXTRA );
3654
1.78k
            if (_res == NULL && PyErr_Occurred()) {
3655
0
                p->error_indicator = 1;
3656
0
                p->level--;
3657
0
                return NULL;
3658
0
            }
3659
1.78k
            goto done;
3660
1.78k
        }
3661
1.25k
        p->mark = _mark;
3662
1.25k
        D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3663
1.25k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3664
1.25k
    }
3665
0
    { // 'from' (('.' | '...'))+ 'import' import_from_targets
3666
1.25k
        if (p->error_indicator) {
3667
25
            p->level--;
3668
25
            return NULL;
3669
25
        }
3670
1.23k
        D(fprintf(stderr, "%*c> import_from[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3671
1.23k
        Token * _keyword;
3672
1.23k
        Token * _keyword_1;
3673
1.23k
        asdl_seq * a;
3674
1.23k
        asdl_alias_seq* b;
3675
1.23k
        if (
3676
1.23k
            (_keyword = _PyPegen_expect_token(p, 638))  // token='from'
3677
1.23k
            &&
3678
1.23k
            (a = _loop1_18_rule(p))  // (('.' | '...'))+
3679
1.23k
            &&
3680
1.23k
            (_keyword_1 = _PyPegen_expect_token(p, 639))  // token='import'
3681
1.23k
            &&
3682
1.23k
            (b = import_from_targets_rule(p))  // import_from_targets
3683
1.23k
        )
3684
1.04k
        {
3685
1.04k
            D(fprintf(stderr, "%*c+ import_from[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3686
1.04k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3687
1.04k
            if (_token == NULL) {
3688
0
                p->level--;
3689
0
                return NULL;
3690
0
            }
3691
1.04k
            int _end_lineno = _token->end_lineno;
3692
1.04k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3693
1.04k
            int _end_col_offset = _token->end_col_offset;
3694
1.04k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3695
1.04k
            _res = _PyAST_ImportFrom ( NULL , b , _PyPegen_seq_count_dots ( a ) , EXTRA );
3696
1.04k
            if (_res == NULL && PyErr_Occurred()) {
3697
0
                p->error_indicator = 1;
3698
0
                p->level--;
3699
0
                return NULL;
3700
0
            }
3701
1.04k
            goto done;
3702
1.04k
        }
3703
191
        p->mark = _mark;
3704
191
        D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3705
191
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3706
191
    }
3707
0
    _res = NULL;
3708
3.01k
  done:
3709
3.01k
    p->level--;
3710
3.01k
    return _res;
3711
191
}
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.90k
{
3721
2.90k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3722
0
        _Pypegen_stack_overflow(p);
3723
0
    }
3724
2.90k
    if (p->error_indicator) {
3725
0
        p->level--;
3726
0
        return NULL;
3727
0
    }
3728
2.90k
    asdl_alias_seq* _res = NULL;
3729
2.90k
    int _mark = p->mark;
3730
2.90k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3731
3
        p->error_indicator = 1;
3732
3
        p->level--;
3733
3
        return NULL;
3734
3
    }
3735
2.90k
    int _start_lineno = p->tokens[_mark]->lineno;
3736
2.90k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3737
2.90k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3738
2.90k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3739
2.90k
    { // '(' import_from_as_names ','? ')'
3740
2.90k
        if (p->error_indicator) {
3741
0
            p->level--;
3742
0
            return NULL;
3743
0
        }
3744
2.90k
        D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3745
2.90k
        Token * _literal;
3746
2.90k
        Token * _literal_1;
3747
2.90k
        void *_opt_var;
3748
2.90k
        UNUSED(_opt_var); // Silence compiler warnings
3749
2.90k
        asdl_alias_seq* a;
3750
2.90k
        if (
3751
2.90k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
3752
2.90k
            &&
3753
2.90k
            (a = import_from_as_names_rule(p))  // import_from_as_names
3754
2.90k
            &&
3755
2.90k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
3756
2.90k
            &&
3757
2.90k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
3758
2.90k
        )
3759
51
        {
3760
51
            D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3761
51
            _res = a;
3762
51
            if (_res == NULL && PyErr_Occurred()) {
3763
0
                p->error_indicator = 1;
3764
0
                p->level--;
3765
0
                return NULL;
3766
0
            }
3767
51
            goto done;
3768
51
        }
3769
2.84k
        p->mark = _mark;
3770
2.84k
        D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3771
2.84k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3772
2.84k
    }
3773
0
    { // import_from_as_names !','
3774
2.84k
        if (p->error_indicator) {
3775
2
            p->level--;
3776
2
            return NULL;
3777
2
        }
3778
2.84k
        D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_names !','"));
3779
2.84k
        asdl_alias_seq* import_from_as_names_var;
3780
2.84k
        if (
3781
2.84k
            (import_from_as_names_var = import_from_as_names_rule(p))  // import_from_as_names
3782
2.84k
            &&
3783
2.84k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
3784
2.84k
        )
3785
2.13k
        {
3786
2.13k
            D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_names !','"));
3787
2.13k
            _res = import_from_as_names_var;
3788
2.13k
            goto done;
3789
2.13k
        }
3790
716
        p->mark = _mark;
3791
716
        D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3792
716
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_names !','"));
3793
716
    }
3794
0
    { // '*'
3795
716
        if (p->error_indicator) {
3796
3
            p->level--;
3797
3
            return NULL;
3798
3
        }
3799
713
        D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
3800
713
        Token * _literal;
3801
713
        if (
3802
713
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
3803
713
        )
3804
645
        {
3805
645
            D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
3806
645
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3807
645
            if (_token == NULL) {
3808
0
                p->level--;
3809
0
                return NULL;
3810
0
            }
3811
645
            int _end_lineno = _token->end_lineno;
3812
645
            UNUSED(_end_lineno); // Only used by EXTRA macro
3813
645
            int _end_col_offset = _token->end_col_offset;
3814
645
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3815
645
            _res = ( asdl_alias_seq* ) _PyPegen_singleton_seq ( p , CHECK ( alias_ty , _PyPegen_alias_for_star ( p , EXTRA ) ) );
3816
645
            if (_res == NULL && PyErr_Occurred()) {
3817
0
                p->error_indicator = 1;
3818
0
                p->level--;
3819
0
                return NULL;
3820
0
            }
3821
645
            goto done;
3822
645
        }
3823
68
        p->mark = _mark;
3824
68
        D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3825
68
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
3826
68
    }
3827
68
    if (p->call_invalid_rules) { // invalid_import_from_targets
3828
33
        if (p->error_indicator) {
3829
0
            p->level--;
3830
0
            return NULL;
3831
0
        }
3832
33
        D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_import_from_targets"));
3833
33
        void *invalid_import_from_targets_var;
3834
33
        if (
3835
33
            (invalid_import_from_targets_var = invalid_import_from_targets_rule(p))  // invalid_import_from_targets
3836
33
        )
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
33
        p->mark = _mark;
3843
33
        D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3844
33
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_import_from_targets"));
3845
33
    }
3846
68
    _res = NULL;
3847
2.89k
  done:
3848
2.89k
    p->level--;
3849
2.89k
    return _res;
3850
68
}
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.94k
{
3856
2.94k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3857
0
        _Pypegen_stack_overflow(p);
3858
0
    }
3859
2.94k
    if (p->error_indicator) {
3860
0
        p->level--;
3861
0
        return NULL;
3862
0
    }
3863
2.94k
    asdl_alias_seq* _res = NULL;
3864
2.94k
    int _mark = p->mark;
3865
2.94k
    { // ','.import_from_as_name+
3866
2.94k
        if (p->error_indicator) {
3867
0
            p->level--;
3868
0
            return NULL;
3869
0
        }
3870
2.94k
        D(fprintf(stderr, "%*c> import_from_as_names[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.import_from_as_name+"));
3871
2.94k
        asdl_alias_seq* a;
3872
2.94k
        if (
3873
2.94k
            (a = (asdl_alias_seq*)_gather_20_rule(p))  // ','.import_from_as_name+
3874
2.94k
        )
3875
2.25k
        {
3876
2.25k
            D(fprintf(stderr, "%*c+ import_from_as_names[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.import_from_as_name+"));
3877
2.25k
            _res = a;
3878
2.25k
            if (_res == NULL && PyErr_Occurred()) {
3879
0
                p->error_indicator = 1;
3880
0
                p->level--;
3881
0
                return NULL;
3882
0
            }
3883
2.25k
            goto done;
3884
2.25k
        }
3885
689
        p->mark = _mark;
3886
689
        D(fprintf(stderr, "%*c%s import_from_as_names[%d-%d]: %s failed!\n", p->level, ' ',
3887
689
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.import_from_as_name+"));
3888
689
    }
3889
0
    _res = NULL;
3890
2.94k
  done:
3891
2.94k
    p->level--;
3892
2.94k
    return _res;
3893
689
}
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.64k
{
3899
6.64k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3900
0
        _Pypegen_stack_overflow(p);
3901
0
    }
3902
6.64k
    if (p->error_indicator) {
3903
0
        p->level--;
3904
0
        return NULL;
3905
0
    }
3906
6.64k
    alias_ty _res = NULL;
3907
6.64k
    int _mark = p->mark;
3908
6.64k
    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.63k
    int _start_lineno = p->tokens[_mark]->lineno;
3914
6.63k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3915
6.63k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3916
6.63k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3917
6.63k
    if (p->call_invalid_rules) { // invalid_import_from_as_name
3918
2.47k
        if (p->error_indicator) {
3919
0
            p->level--;
3920
0
            return NULL;
3921
0
        }
3922
2.47k
        D(fprintf(stderr, "%*c> import_from_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_import_from_as_name"));
3923
2.47k
        void *invalid_import_from_as_name_var;
3924
2.47k
        if (
3925
2.47k
            (invalid_import_from_as_name_var = invalid_import_from_as_name_rule(p))  // invalid_import_from_as_name
3926
2.47k
        )
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.47k
        p->mark = _mark;
3933
2.47k
        D(fprintf(stderr, "%*c%s import_from_as_name[%d-%d]: %s failed!\n", p->level, ' ',
3934
2.47k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_import_from_as_name"));
3935
2.47k
    }
3936
6.63k
    { // NAME ['as' NAME]
3937
6.63k
        if (p->error_indicator) {
3938
1
            p->level--;
3939
1
            return NULL;
3940
1
        }
3941
6.63k
        D(fprintf(stderr, "%*c> import_from_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ['as' NAME]"));
3942
6.63k
        expr_ty a;
3943
6.63k
        void *b;
3944
6.63k
        if (
3945
6.63k
            (a = _PyPegen_name_token(p))  // NAME
3946
6.63k
            &&
3947
6.63k
            (b = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
3948
6.63k
        )
3949
5.87k
        {
3950
5.87k
            D(fprintf(stderr, "%*c+ import_from_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ['as' NAME]"));
3951
5.87k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3952
5.87k
            if (_token == NULL) {
3953
0
                p->level--;
3954
0
                return NULL;
3955
0
            }
3956
5.87k
            int _end_lineno = _token->end_lineno;
3957
5.87k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3958
5.87k
            int _end_col_offset = _token->end_col_offset;
3959
5.87k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3960
5.87k
            _res = _PyAST_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , EXTRA );
3961
5.87k
            if (_res == NULL && PyErr_Occurred()) {
3962
0
                p->error_indicator = 1;
3963
0
                p->level--;
3964
0
                return NULL;
3965
0
            }
3966
5.87k
            goto done;
3967
5.87k
        }
3968
761
        p->mark = _mark;
3969
761
        D(fprintf(stderr, "%*c%s import_from_as_name[%d-%d]: %s failed!\n", p->level, ' ',
3970
761
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ['as' NAME]"));
3971
761
    }
3972
0
    _res = NULL;
3973
6.63k
  done:
3974
6.63k
    p->level--;
3975
6.63k
    return _res;
3976
761
}
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
43
        p->mark = _mark;
4012
43
        D(fprintf(stderr, "%*c%s dotted_as_names[%d-%d]: %s failed!\n", p->level, ' ',
4013
43
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.dotted_as_name+"));
4014
43
    }
4015
0
    _res = NULL;
4016
2.60k
  done:
4017
2.60k
    p->level--;
4018
2.60k
    return _res;
4019
43
}
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
6.90k
{
4025
6.90k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4026
0
        _Pypegen_stack_overflow(p);
4027
0
    }
4028
6.90k
    if (p->error_indicator) {
4029
0
        p->level--;
4030
0
        return NULL;
4031
0
    }
4032
6.90k
    alias_ty _res = NULL;
4033
6.90k
    int _mark = p->mark;
4034
6.90k
    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
6.89k
    int _start_lineno = p->tokens[_mark]->lineno;
4040
6.89k
    UNUSED(_start_lineno); // Only used by EXTRA macro
4041
6.89k
    int _start_col_offset = p->tokens[_mark]->col_offset;
4042
6.89k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
4043
6.89k
    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
6.89k
    { // dotted_name ['as' NAME]
4063
6.89k
        if (p->error_indicator) {
4064
31
            p->level--;
4065
31
            return NULL;
4066
31
        }
4067
6.86k
        D(fprintf(stderr, "%*c> dotted_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name ['as' NAME]"));
4068
6.86k
        expr_ty a;
4069
6.86k
        void *b;
4070
6.86k
        if (
4071
6.86k
            (a = dotted_name_rule(p))  // dotted_name
4072
6.86k
            &&
4073
6.86k
            (b = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
4074
6.86k
        )
4075
6.81k
        {
4076
6.81k
            D(fprintf(stderr, "%*c+ dotted_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name ['as' NAME]"));
4077
6.81k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4078
6.81k
            if (_token == NULL) {
4079
0
                p->level--;
4080
0
                return NULL;
4081
0
            }
4082
6.81k
            int _end_lineno = _token->end_lineno;
4083
6.81k
            UNUSED(_end_lineno); // Only used by EXTRA macro
4084
6.81k
            int _end_col_offset = _token->end_col_offset;
4085
6.81k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
4086
6.81k
            _res = _PyAST_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , EXTRA );
4087
6.81k
            if (_res == NULL && PyErr_Occurred()) {
4088
0
                p->error_indicator = 1;
4089
0
                p->level--;
4090
0
                return NULL;
4091
0
            }
4092
6.81k
            goto done;
4093
6.81k
        }
4094
52
        p->mark = _mark;
4095
52
        D(fprintf(stderr, "%*c%s dotted_as_name[%d-%d]: %s failed!\n", p->level, ' ',
4096
52
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name ['as' NAME]"));
4097
52
    }
4098
0
    _res = NULL;
4099
6.86k
  done:
4100
6.86k
    p->level--;
4101
6.86k
    return _res;
4102
52
}
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
37.0k
{
4110
37.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4111
0
        _Pypegen_stack_overflow(p);
4112
0
    }
4113
37.0k
    expr_ty _res = NULL;
4114
37.0k
    if (_PyPegen_is_memoized(p, dotted_name_type, &_res)) {
4115
27.0k
        p->level--;
4116
27.0k
        return _res;
4117
27.0k
    }
4118
9.93k
    int _mark = p->mark;
4119
9.93k
    int _resmark = p->mark;
4120
21.6k
    while (1) {
4121
21.6k
        int tmpvar_0 = _PyPegen_update_memo(p, _mark, dotted_name_type, _res);
4122
21.6k
        if (tmpvar_0) {
4123
0
            p->level--;
4124
0
            return _res;
4125
0
        }
4126
21.6k
        p->mark = _mark;
4127
21.6k
        void *_raw = dotted_name_raw(p);
4128
21.6k
        if (p->error_indicator) {
4129
14
            p->level--;
4130
14
            return NULL;
4131
14
        }
4132
21.6k
        if (_raw == NULL || p->mark <= _resmark)
4133
9.92k
            break;
4134
11.7k
        _resmark = p->mark;
4135
11.7k
        _res = _raw;
4136
11.7k
    }
4137
9.92k
    p->mark = _resmark;
4138
9.92k
    p->level--;
4139
9.92k
    return _res;
4140
9.93k
}
4141
static expr_ty
4142
dotted_name_raw(Parser *p)
4143
21.6k
{
4144
21.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4145
0
        _Pypegen_stack_overflow(p);
4146
0
    }
4147
21.6k
    if (p->error_indicator) {
4148
11
        p->level--;
4149
11
        return NULL;
4150
11
    }
4151
21.6k
    expr_ty _res = NULL;
4152
21.6k
    int _mark = p->mark;
4153
21.6k
    { // dotted_name '.' NAME
4154
21.6k
        if (p->error_indicator) {
4155
0
            p->level--;
4156
0
            return NULL;
4157
0
        }
4158
21.6k
        D(fprintf(stderr, "%*c> dotted_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name '.' NAME"));
4159
21.6k
        Token * _literal;
4160
21.6k
        expr_ty a;
4161
21.6k
        expr_ty b;
4162
21.6k
        if (
4163
21.6k
            (a = dotted_name_rule(p))  // dotted_name
4164
21.6k
            &&
4165
21.6k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
4166
21.6k
            &&
4167
21.6k
            (b = _PyPegen_name_token(p))  // NAME
4168
21.6k
        )
4169
3.00k
        {
4170
3.00k
            D(fprintf(stderr, "%*c+ dotted_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name '.' NAME"));
4171
3.00k
            _res = _PyPegen_join_names_with_dot ( p , a , b );
4172
3.00k
            if (_res == NULL && PyErr_Occurred()) {
4173
0
                p->error_indicator = 1;
4174
0
                p->level--;
4175
0
                return NULL;
4176
0
            }
4177
3.00k
            goto done;
4178
3.00k
        }
4179
18.6k
        p->mark = _mark;
4180
18.6k
        D(fprintf(stderr, "%*c%s dotted_name[%d-%d]: %s failed!\n", p->level, ' ',
4181
18.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name '.' NAME"));
4182
18.6k
    }
4183
0
    { // NAME
4184
18.6k
        if (p->error_indicator) {
4185
3
            p->level--;
4186
3
            return NULL;
4187
3
        }
4188
18.6k
        D(fprintf(stderr, "%*c> dotted_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
4189
18.6k
        expr_ty name_var;
4190
18.6k
        if (
4191
18.6k
            (name_var = _PyPegen_name_token(p))  // NAME
4192
18.6k
        )
4193
17.4k
        {
4194
17.4k
            D(fprintf(stderr, "%*c+ dotted_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
4195
17.4k
            _res = name_var;
4196
17.4k
            goto done;
4197
17.4k
        }
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
21.6k
  done:
4204
21.6k
    p->level--;
4205
21.6k
    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.3k
{
4212
81.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4213
0
        _Pypegen_stack_overflow(p);
4214
0
    }
4215
81.3k
    if (p->error_indicator) {
4216
0
        p->level--;
4217
0
        return NULL;
4218
0
    }
4219
81.3k
    asdl_stmt_seq* _res = NULL;
4220
81.3k
    if (_PyPegen_is_memoized(p, block_type, &_res)) {
4221
25.6k
        p->level--;
4222
25.6k
        return _res;
4223
25.6k
    }
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.6k
        p->mark = _mark;
4255
37.6k
        D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
4256
37.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
4257
37.6k
    }
4258
0
    { // simple_stmts
4259
37.6k
        if (p->error_indicator) {
4260
161
            p->level--;
4261
161
            return NULL;
4262
161
        }
4263
37.4k
        D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
4264
37.4k
        asdl_stmt_seq* simple_stmts_var;
4265
37.4k
        if (
4266
37.4k
            (simple_stmts_var = simple_stmts_rule(p))  // simple_stmts
4267
37.4k
        )
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.24k
        if (p->error_indicator) {
4279
23
            p->level--;
4280
23
            return NULL;
4281
23
        }
4282
2.22k
        D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_block"));
4283
2.22k
        void *invalid_block_var;
4284
2.22k
        if (
4285
2.22k
            (invalid_block_var = invalid_block_rule(p))  // invalid_block
4286
2.22k
        )
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.22k
        p->mark = _mark;
4293
2.22k
        D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
4294
2.22k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_block"));
4295
2.22k
    }
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.4k
{
4307
18.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4308
0
        _Pypegen_stack_overflow(p);
4309
0
    }
4310
18.4k
    if (p->error_indicator) {
4311
0
        p->level--;
4312
0
        return NULL;
4313
0
    }
4314
18.4k
    asdl_expr_seq* _res = NULL;
4315
18.4k
    int _mark = p->mark;
4316
18.4k
    { // (('@' named_expression NEWLINE))+
4317
18.4k
        if (p->error_indicator) {
4318
0
            p->level--;
4319
0
            return NULL;
4320
0
        }
4321
18.4k
        D(fprintf(stderr, "%*c> decorators[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(('@' named_expression NEWLINE))+"));
4322
18.4k
        asdl_expr_seq* a;
4323
18.4k
        if (
4324
18.4k
            (a = (asdl_expr_seq*)_loop1_24_rule(p))  // (('@' named_expression NEWLINE))+
4325
18.4k
        )
4326
2.34k
        {
4327
2.34k
            D(fprintf(stderr, "%*c+ decorators[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(('@' named_expression NEWLINE))+"));
4328
2.34k
            _res = a;
4329
2.34k
            if (_res == NULL && PyErr_Occurred()) {
4330
0
                p->error_indicator = 1;
4331
0
                p->level--;
4332
0
                return NULL;
4333
0
            }
4334
2.34k
            goto done;
4335
2.34k
        }
4336
16.0k
        p->mark = _mark;
4337
16.0k
        D(fprintf(stderr, "%*c%s decorators[%d-%d]: %s failed!\n", p->level, ' ',
4338
16.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(('@' named_expression NEWLINE))+"));
4339
16.0k
    }
4340
0
    _res = NULL;
4341
18.4k
  done:
4342
18.4k
    p->level--;
4343
18.4k
    return _res;
4344
16.0k
}
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
489
        {
4373
489
            D(fprintf(stderr, "%*c+ class_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "decorators class_def_raw"));
4374
489
            _res = _PyPegen_class_def_decorators ( p , a , b );
4375
489
            if (_res == NULL && PyErr_Occurred()) {
4376
0
                p->error_indicator = 1;
4377
0
                p->level--;
4378
0
                return NULL;
4379
0
            }
4380
489
            goto done;
4381
489
        }
4382
3.84k
        p->mark = _mark;
4383
3.84k
        D(fprintf(stderr, "%*c%s class_def[%d-%d]: %s failed!\n", p->level, ' ',
4384
3.84k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "decorators class_def_raw"));
4385
3.84k
    }
4386
0
    { // class_def_raw
4387
3.84k
        if (p->error_indicator) {
4388
3
            p->level--;
4389
3
            return NULL;
4390
3
        }
4391
3.83k
        D(fprintf(stderr, "%*c> class_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "class_def_raw"));
4392
3.83k
        stmt_ty class_def_raw_var;
4393
3.83k
        if (
4394
3.83k
            (class_def_raw_var = class_def_raw_rule(p))  // class_def_raw
4395
3.83k
        )
4396
3.38k
        {
4397
3.38k
            D(fprintf(stderr, "%*c+ class_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "class_def_raw"));
4398
3.38k
            _res = class_def_raw_var;
4399
3.38k
            goto done;
4400
3.38k
        }
4401
456
        p->mark = _mark;
4402
456
        D(fprintf(stderr, "%*c%s class_def[%d-%d]: %s failed!\n", p->level, ' ',
4403
456
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "class_def_raw"));
4404
456
    }
4405
0
    _res = NULL;
4406
4.32k
  done:
4407
4.32k
    p->level--;
4408
4.32k
    return _res;
4409
456
}
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.25k
        if (p->error_indicator) {
4437
0
            p->level--;
4438
0
            return NULL;
4439
0
        }
4440
1.25k
        D(fprintf(stderr, "%*c> class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_class_def_raw"));
4441
1.25k
        void *invalid_class_def_raw_var;
4442
1.25k
        if (
4443
1.25k
            (invalid_class_def_raw_var = invalid_class_def_raw_rule(p))  // invalid_class_def_raw
4444
1.25k
        )
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.25k
        p->mark = _mark;
4451
1.25k
        D(fprintf(stderr, "%*c%s class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4452
1.25k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_class_def_raw"));
4453
1.25k
    }
4454
4.52k
    { // 'class' NAME type_params? ['(' arguments? ')'] ':' block
4455
4.52k
        if (p->error_indicator) {
4456
19
            p->level--;
4457
19
            return NULL;
4458
19
        }
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.87k
        {
4480
3.87k
            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.87k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4482
3.87k
            if (_token == NULL) {
4483
0
                p->level--;
4484
0
                return NULL;
4485
0
            }
4486
3.87k
            int _end_lineno = _token->end_lineno;
4487
3.87k
            UNUSED(_end_lineno); // Only used by EXTRA macro
4488
3.87k
            int _end_col_offset = _token->end_col_offset;
4489
3.87k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
4490
3.87k
            _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.87k
            if (_res == NULL && PyErr_Occurred()) {
4492
0
                p->error_indicator = 1;
4493
0
                p->level--;
4494
0
                return NULL;
4495
0
            }
4496
3.87k
            goto done;
4497
3.87k
        }
4498
638
        p->mark = _mark;
4499
638
        D(fprintf(stderr, "%*c%s class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4500
638
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] ':' block"));
4501
638
    }
4502
0
    _res = NULL;
4503
4.50k
  done:
4504
4.50k
    p->level--;
4505
4.50k
    return _res;
4506
638
}
4507
4508
// function_def: decorators function_def_raw | function_def_raw
4509
static stmt_ty
4510
function_def_rule(Parser *p)
4511
14.0k
{
4512
14.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4513
0
        _Pypegen_stack_overflow(p);
4514
0
    }
4515
14.0k
    if (p->error_indicator) {
4516
0
        p->level--;
4517
0
        return NULL;
4518
0
    }
4519
14.0k
    stmt_ty _res = NULL;
4520
14.0k
    int _mark = p->mark;
4521
14.0k
    { // decorators function_def_raw
4522
14.0k
        if (p->error_indicator) {
4523
0
            p->level--;
4524
0
            return NULL;
4525
0
        }
4526
14.0k
        D(fprintf(stderr, "%*c> function_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "decorators function_def_raw"));
4527
14.0k
        asdl_expr_seq* d;
4528
14.0k
        stmt_ty f;
4529
14.0k
        if (
4530
14.0k
            (d = decorators_rule(p))  // decorators
4531
14.0k
            &&
4532
14.0k
            (f = function_def_raw_rule(p))  // function_def_raw
4533
14.0k
        )
4534
951
        {
4535
951
            D(fprintf(stderr, "%*c+ function_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "decorators function_def_raw"));
4536
951
            _res = _PyPegen_function_def_decorators ( p , d , f );
4537
951
            if (_res == NULL && PyErr_Occurred()) {
4538
0
                p->error_indicator = 1;
4539
0
                p->level--;
4540
0
                return NULL;
4541
0
            }
4542
951
            goto done;
4543
951
        }
4544
13.1k
        p->mark = _mark;
4545
13.1k
        D(fprintf(stderr, "%*c%s function_def[%d-%d]: %s failed!\n", p->level, ' ',
4546
13.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "decorators function_def_raw"));
4547
13.1k
    }
4548
0
    { // function_def_raw
4549
13.1k
        if (p->error_indicator) {
4550
41
            p->level--;
4551
41
            return NULL;
4552
41
        }
4553
13.1k
        D(fprintf(stderr, "%*c> function_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "function_def_raw"));
4554
13.1k
        stmt_ty function_def_raw_var;
4555
13.1k
        if (
4556
13.1k
            (function_def_raw_var = function_def_raw_rule(p))  // function_def_raw
4557
13.1k
        )
4558
9.43k
        {
4559
9.43k
            D(fprintf(stderr, "%*c+ function_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "function_def_raw"));
4560
9.43k
            _res = function_def_raw_var;
4561
9.43k
            goto done;
4562
9.43k
        }
4563
3.66k
        p->mark = _mark;
4564
3.66k
        D(fprintf(stderr, "%*c%s function_def[%d-%d]: %s failed!\n", p->level, ' ',
4565
3.66k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "function_def_raw"));
4566
3.66k
    }
4567
0
    _res = NULL;
4568
14.0k
  done:
4569
14.0k
    p->level--;
4570
14.0k
    return _res;
4571
3.66k
}
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
14.7k
{
4580
14.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4581
0
        _Pypegen_stack_overflow(p);
4582
0
    }
4583
14.7k
    if (p->error_indicator) {
4584
0
        p->level--;
4585
0
        return NULL;
4586
0
    }
4587
14.7k
    stmt_ty _res = NULL;
4588
14.7k
    int _mark = p->mark;
4589
14.7k
    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
14.7k
    int _start_lineno = p->tokens[_mark]->lineno;
4595
14.7k
    UNUSED(_start_lineno); // Only used by EXTRA macro
4596
14.7k
    int _start_col_offset = p->tokens[_mark]->col_offset;
4597
14.7k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
4598
14.7k
    if (p->call_invalid_rules) { // invalid_def_raw
4599
3.86k
        if (p->error_indicator) {
4600
0
            p->level--;
4601
0
            return NULL;
4602
0
        }
4603
3.86k
        D(fprintf(stderr, "%*c> function_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_def_raw"));
4604
3.86k
        void *invalid_def_raw_var;
4605
3.86k
        if (
4606
3.86k
            (invalid_def_raw_var = invalid_def_raw_rule(p))  // invalid_def_raw
4607
3.86k
        )
4608
2.01k
        {
4609
2.01k
            D(fprintf(stderr, "%*c+ function_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_def_raw"));
4610
2.01k
            _res = invalid_def_raw_var;
4611
2.01k
            goto done;
4612
2.01k
        }
4613
1.85k
        p->mark = _mark;
4614
1.85k
        D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4615
1.85k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_def_raw"));
4616
1.85k
    }
4617
12.7k
    { // 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block
4618
12.7k
        if (p->error_indicator) {
4619
238
            p->level--;
4620
238
            return NULL;
4621
238
        }
4622
12.5k
        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.5k
        Token * _keyword;
4624
12.5k
        Token * _literal;
4625
12.5k
        Token * _literal_1;
4626
12.5k
        Token * _literal_2;
4627
12.5k
        void *a;
4628
12.5k
        asdl_stmt_seq* b;
4629
12.5k
        expr_ty n;
4630
12.5k
        void *params;
4631
12.5k
        void *t;
4632
12.5k
        void *tc;
4633
12.5k
        if (
4634
12.5k
            (_keyword = _PyPegen_expect_token(p, 704))  // token='def'
4635
12.5k
            &&
4636
12.5k
            (n = _PyPegen_name_token(p))  // NAME
4637
12.5k
            &&
4638
12.5k
            (t = type_params_rule(p), !p->error_indicator)  // type_params?
4639
12.5k
            &&
4640
12.5k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
4641
12.5k
            &&
4642
12.5k
            (params = params_rule(p), !p->error_indicator)  // params?
4643
12.5k
            &&
4644
12.5k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
4645
12.5k
            &&
4646
12.5k
            (a = _tmp_26_rule(p), !p->error_indicator)  // ['->' expression]
4647
12.5k
            &&
4648
12.5k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
4649
12.5k
            &&
4650
12.5k
            (tc = func_type_comment_rule(p), !p->error_indicator)  // func_type_comment?
4651
12.5k
            &&
4652
12.5k
            (b = block_rule(p))  // block
4653
12.5k
        )
4654
7.79k
        {
4655
7.79k
            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.79k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4657
7.79k
            if (_token == NULL) {
4658
0
                p->level--;
4659
0
                return NULL;
4660
0
            }
4661
7.79k
            int _end_lineno = _token->end_lineno;
4662
7.79k
            UNUSED(_end_lineno); // Only used by EXTRA macro
4663
7.79k
            int _end_col_offset = _token->end_col_offset;
4664
7.79k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
4665
7.79k
            _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.79k
            if (_res == NULL && PyErr_Occurred()) {
4667
0
                p->error_indicator = 1;
4668
0
                p->level--;
4669
0
                return NULL;
4670
0
            }
4671
7.79k
            goto done;
4672
7.79k
        }
4673
4.71k
        p->mark = _mark;
4674
4.71k
        D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4675
4.71k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block"));
4676
4.71k
    }
4677
0
    { // 'async' 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block
4678
4.71k
        if (p->error_indicator) {
4679
83
            p->level--;
4680
83
            return NULL;
4681
83
        }
4682
4.62k
        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.62k
        Token * _keyword;
4684
4.62k
        Token * _keyword_1;
4685
4.62k
        Token * _literal;
4686
4.62k
        Token * _literal_1;
4687
4.62k
        Token * _literal_2;
4688
4.62k
        void *a;
4689
4.62k
        asdl_stmt_seq* b;
4690
4.62k
        expr_ty n;
4691
4.62k
        void *params;
4692
4.62k
        void *t;
4693
4.62k
        void *tc;
4694
4.62k
        if (
4695
4.62k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
4696
4.62k
            &&
4697
4.62k
            (_keyword_1 = _PyPegen_expect_token(p, 704))  // token='def'
4698
4.62k
            &&
4699
4.62k
            (n = _PyPegen_name_token(p))  // NAME
4700
4.62k
            &&
4701
4.62k
            (t = type_params_rule(p), !p->error_indicator)  // type_params?
4702
4.62k
            &&
4703
4.62k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
4704
4.62k
            &&
4705
4.62k
            (params = params_rule(p), !p->error_indicator)  // params?
4706
4.62k
            &&
4707
4.62k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
4708
4.62k
            &&
4709
4.62k
            (a = _tmp_26_rule(p), !p->error_indicator)  // ['->' expression]
4710
4.62k
            &&
4711
4.62k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
4712
4.62k
            &&
4713
4.62k
            (tc = func_type_comment_rule(p), !p->error_indicator)  // func_type_comment?
4714
4.62k
            &&
4715
4.62k
            (b = block_rule(p))  // block
4716
4.62k
        )
4717
580
        {
4718
580
            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
580
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4720
580
            if (_token == NULL) {
4721
0
                p->level--;
4722
0
                return NULL;
4723
0
            }
4724
580
            int _end_lineno = _token->end_lineno;
4725
580
            UNUSED(_end_lineno); // Only used by EXTRA macro
4726
580
            int _end_col_offset = _token->end_col_offset;
4727
580
            UNUSED(_end_col_offset); // Only used by EXTRA macro
4728
580
            _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
580
            if (_res == NULL && PyErr_Occurred()) {
4730
0
                p->error_indicator = 1;
4731
0
                p->level--;
4732
0
                return NULL;
4733
0
            }
4734
580
            goto done;
4735
580
        }
4736
4.04k
        p->mark = _mark;
4737
4.04k
        D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4738
4.04k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block"));
4739
4.04k
    }
4740
0
    _res = NULL;
4741
14.4k
  done:
4742
14.4k
    p->level--;
4743
14.4k
    return _res;
4744
4.04k
}
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.94k
        if (p->error_indicator) {
4761
0
            p->level--;
4762
0
            return NULL;
4763
0
        }
4764
4.94k
        D(fprintf(stderr, "%*c> params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_parameters"));
4765
4.94k
        void *invalid_parameters_var;
4766
4.94k
        if (
4767
4.94k
            (invalid_parameters_var = invalid_parameters_rule(p))  // invalid_parameters
4768
4.94k
        )
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.94k
        p->mark = _mark;
4775
4.94k
        D(fprintf(stderr, "%*c%s params[%d-%d]: %s failed!\n", p->level, ' ',
4776
4.94k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_parameters"));
4777
4.94k
    }
4778
13.7k
    { // parameters
4779
13.7k
        if (p->error_indicator) {
4780
28
            p->level--;
4781
28
            return NULL;
4782
28
        }
4783
13.7k
        D(fprintf(stderr, "%*c> params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "parameters"));
4784
13.7k
        arguments_ty parameters_var;
4785
13.7k
        if (
4786
13.7k
            (parameters_var = parameters_rule(p))  // parameters
4787
13.7k
        )
4788
11.3k
        {
4789
11.3k
            D(fprintf(stderr, "%*c+ params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "parameters"));
4790
11.3k
            _res = parameters_var;
4791
11.3k
            goto done;
4792
11.3k
        }
4793
2.40k
        p->mark = _mark;
4794
2.40k
        D(fprintf(stderr, "%*c%s params[%d-%d]: %s failed!\n", p->level, ' ',
4795
2.40k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "parameters"));
4796
2.40k
    }
4797
0
    _res = NULL;
4798
13.7k
  done:
4799
13.7k
    p->level--;
4800
13.7k
    return _res;
4801
2.40k
}
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.7k
{
4812
13.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4813
0
        _Pypegen_stack_overflow(p);
4814
0
    }
4815
13.7k
    if (p->error_indicator) {
4816
0
        p->level--;
4817
0
        return NULL;
4818
0
    }
4819
13.7k
    arguments_ty _res = NULL;
4820
13.7k
    int _mark = p->mark;
4821
13.7k
    { // slash_no_default param_no_default* param_with_default* star_etc?
4822
13.7k
        if (p->error_indicator) {
4823
0
            p->level--;
4824
0
            return NULL;
4825
0
        }
4826
13.7k
        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.7k
        asdl_arg_seq* a;
4828
13.7k
        asdl_arg_seq* b;
4829
13.7k
        asdl_seq * c;
4830
13.7k
        void *d;
4831
13.7k
        if (
4832
13.7k
            (a = slash_no_default_rule(p))  // slash_no_default
4833
13.7k
            &&
4834
13.7k
            (b = (asdl_arg_seq*)_loop0_27_rule(p))  // param_no_default*
4835
13.7k
            &&
4836
13.7k
            (c = _loop0_28_rule(p))  // param_with_default*
4837
13.7k
            &&
4838
13.7k
            (d = star_etc_rule(p), !p->error_indicator)  // star_etc?
4839
13.7k
        )
4840
998
        {
4841
998
            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
998
            _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , a , NULL , b , c , d ) );
4843
998
            if (_res == NULL && PyErr_Occurred()) {
4844
0
                p->error_indicator = 1;
4845
0
                p->level--;
4846
0
                return NULL;
4847
0
            }
4848
998
            goto done;
4849
998
        }
4850
12.7k
        p->mark = _mark;
4851
12.7k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4852
12.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_no_default param_no_default* param_with_default* star_etc?"));
4853
12.7k
    }
4854
0
    { // slash_with_default param_with_default* star_etc?
4855
12.7k
        if (p->error_indicator) {
4856
15
            p->level--;
4857
15
            return NULL;
4858
15
        }
4859
12.7k
        D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
4860
12.7k
        SlashWithDefault* a;
4861
12.7k
        asdl_seq * b;
4862
12.7k
        void *c;
4863
12.7k
        if (
4864
12.7k
            (a = slash_with_default_rule(p))  // slash_with_default
4865
12.7k
            &&
4866
12.7k
            (b = _loop0_28_rule(p))  // param_with_default*
4867
12.7k
            &&
4868
12.7k
            (c = star_etc_rule(p), !p->error_indicator)  // star_etc?
4869
12.7k
        )
4870
945
        {
4871
945
            D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
4872
945
            _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , NULL , a , NULL , b , c ) );
4873
945
            if (_res == NULL && PyErr_Occurred()) {
4874
0
                p->error_indicator = 1;
4875
0
                p->level--;
4876
0
                return NULL;
4877
0
            }
4878
945
            goto done;
4879
945
        }
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.60k
        {
4901
5.60k
            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.60k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
4903
5.60k
            if (_res == NULL && PyErr_Occurred()) {
4904
0
                p->error_indicator = 1;
4905
0
                p->level--;
4906
0
                return NULL;
4907
0
            }
4908
5.60k
            goto done;
4909
5.60k
        }
4910
6.17k
        p->mark = _mark;
4911
6.17k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4912
6.17k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
4913
6.17k
    }
4914
0
    { // param_with_default+ star_etc?
4915
6.17k
        if (p->error_indicator) {
4916
1
            p->level--;
4917
1
            return NULL;
4918
1
        }
4919
6.17k
        D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+ star_etc?"));
4920
6.17k
        asdl_seq * a;
4921
6.17k
        void *b;
4922
6.17k
        if (
4923
6.17k
            (a = _loop1_30_rule(p))  // param_with_default+
4924
6.17k
            &&
4925
6.17k
            (b = star_etc_rule(p), !p->error_indicator)  // star_etc?
4926
6.17k
        )
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.11k
        p->mark = _mark;
4938
5.11k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4939
5.11k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default+ star_etc?"));
4940
5.11k
    }
4941
0
    { // star_etc
4942
5.11k
        if (p->error_indicator) {
4943
1
            p->level--;
4944
1
            return NULL;
4945
1
        }
4946
5.11k
        D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_etc"));
4947
5.11k
        StarEtc* a;
4948
5.11k
        if (
4949
5.11k
            (a = star_etc_rule(p))  // star_etc
4950
5.11k
        )
4951
2.73k
        {
4952
2.73k
            D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_etc"));
4953
2.73k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
4954
2.73k
            if (_res == NULL && PyErr_Occurred()) {
4955
0
                p->error_indicator = 1;
4956
0
                p->level--;
4957
0
                return NULL;
4958
0
            }
4959
2.73k
            goto done;
4960
2.73k
        }
4961
2.37k
        p->mark = _mark;
4962
2.37k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4963
2.37k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_etc"));
4964
2.37k
    }
4965
0
    _res = NULL;
4966
13.7k
  done:
4967
13.7k
    p->level--;
4968
13.7k
    return _res;
4969
2.37k
}
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.5k
{
4975
28.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4976
0
        _Pypegen_stack_overflow(p);
4977
0
    }
4978
28.5k
    if (p->error_indicator) {
4979
0
        p->level--;
4980
0
        return NULL;
4981
0
    }
4982
28.5k
    asdl_arg_seq* _res = NULL;
4983
28.5k
    int _mark = p->mark;
4984
28.5k
    { // param_no_default+ '/' ','
4985
28.5k
        if (p->error_indicator) {
4986
0
            p->level--;
4987
0
            return NULL;
4988
0
        }
4989
28.5k
        D(fprintf(stderr, "%*c> slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' ','"));
4990
28.5k
        Token * _literal;
4991
28.5k
        Token * _literal_1;
4992
28.5k
        asdl_arg_seq* a;
4993
28.5k
        if (
4994
28.5k
            (a = (asdl_arg_seq*)_loop1_29_rule(p))  // param_no_default+
4995
28.5k
            &&
4996
28.5k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
4997
28.5k
            &&
4998
28.5k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
4999
28.5k
        )
5000
639
        {
5001
639
            D(fprintf(stderr, "%*c+ slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' ','"));
5002
639
            _res = a;
5003
639
            if (_res == NULL && PyErr_Occurred()) {
5004
0
                p->error_indicator = 1;
5005
0
                p->level--;
5006
0
                return NULL;
5007
0
            }
5008
639
            goto done;
5009
639
        }
5010
27.8k
        p->mark = _mark;
5011
27.8k
        D(fprintf(stderr, "%*c%s slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5012
27.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ '/' ','"));
5013
27.8k
    }
5014
0
    { // param_no_default+ '/' &')'
5015
27.8k
        if (p->error_indicator) {
5016
13
            p->level--;
5017
13
            return NULL;
5018
13
        }
5019
27.8k
        D(fprintf(stderr, "%*c> slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' &')'"));
5020
27.8k
        Token * _literal;
5021
27.8k
        asdl_arg_seq* a;
5022
27.8k
        if (
5023
27.8k
            (a = (asdl_arg_seq*)_loop1_29_rule(p))  // param_no_default+
5024
27.8k
            &&
5025
27.8k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
5026
27.8k
            &&
5027
27.8k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5028
27.8k
        )
5029
1.95k
        {
5030
1.95k
            D(fprintf(stderr, "%*c+ slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' &')'"));
5031
1.95k
            _res = a;
5032
1.95k
            if (_res == NULL && PyErr_Occurred()) {
5033
0
                p->error_indicator = 1;
5034
0
                p->level--;
5035
0
                return NULL;
5036
0
            }
5037
1.95k
            goto done;
5038
1.95k
        }
5039
25.9k
        p->mark = _mark;
5040
25.9k
        D(fprintf(stderr, "%*c%s slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5041
25.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ '/' &')'"));
5042
25.9k
    }
5043
0
    _res = NULL;
5044
28.5k
  done:
5045
28.5k
    p->level--;
5046
28.5k
    return _res;
5047
25.9k
}
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.4k
{
5055
26.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5056
0
        _Pypegen_stack_overflow(p);
5057
0
    }
5058
26.4k
    if (p->error_indicator) {
5059
0
        p->level--;
5060
0
        return NULL;
5061
0
    }
5062
26.4k
    SlashWithDefault* _res = NULL;
5063
26.4k
    int _mark = p->mark;
5064
26.4k
    { // param_no_default* param_with_default+ '/' ','
5065
26.4k
        if (p->error_indicator) {
5066
0
            p->level--;
5067
0
            return NULL;
5068
0
        }
5069
26.4k
        D(fprintf(stderr, "%*c> slash_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
5070
26.4k
        Token * _literal;
5071
26.4k
        Token * _literal_1;
5072
26.4k
        asdl_seq * a;
5073
26.4k
        asdl_seq * b;
5074
26.4k
        if (
5075
26.4k
            (a = _loop0_27_rule(p))  // param_no_default*
5076
26.4k
            &&
5077
26.4k
            (b = _loop1_30_rule(p))  // param_with_default+
5078
26.4k
            &&
5079
26.4k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
5080
26.4k
            &&
5081
26.4k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
5082
26.4k
        )
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
26.2k
        p->mark = _mark;
5094
26.2k
        D(fprintf(stderr, "%*c%s slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5095
26.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
5096
26.2k
    }
5097
0
    { // param_no_default* param_with_default+ '/' &')'
5098
26.2k
        if (p->error_indicator) {
5099
12
            p->level--;
5100
12
            return NULL;
5101
12
        }
5102
26.2k
        D(fprintf(stderr, "%*c> slash_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
5103
26.2k
        Token * _literal;
5104
26.2k
        asdl_seq * a;
5105
26.2k
        asdl_seq * b;
5106
26.2k
        if (
5107
26.2k
            (a = _loop0_27_rule(p))  // param_no_default*
5108
26.2k
            &&
5109
26.2k
            (b = _loop1_30_rule(p))  // param_with_default+
5110
26.2k
            &&
5111
26.2k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
5112
26.2k
            &&
5113
26.2k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5114
26.2k
        )
5115
2.06k
        {
5116
2.06k
            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.06k
            _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
5118
2.06k
            if (_res == NULL && PyErr_Occurred()) {
5119
0
                p->error_indicator = 1;
5120
0
                p->level--;
5121
0
                return NULL;
5122
0
            }
5123
2.06k
            goto done;
5124
2.06k
        }
5125
24.1k
        p->mark = _mark;
5126
24.1k
        D(fprintf(stderr, "%*c%s slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5127
24.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
5128
24.1k
    }
5129
0
    _res = NULL;
5130
26.4k
  done:
5131
26.4k
    p->level--;
5132
26.4k
    return _res;
5133
24.1k
}
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.7k
{
5144
13.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5145
0
        _Pypegen_stack_overflow(p);
5146
0
    }
5147
13.7k
    if (p->error_indicator) {
5148
1
        p->level--;
5149
1
        return NULL;
5150
1
    }
5151
13.7k
    StarEtc* _res = NULL;
5152
13.7k
    int _mark = p->mark;
5153
13.7k
    if (p->call_invalid_rules) { // invalid_star_etc
5154
4.91k
        if (p->error_indicator) {
5155
0
            p->level--;
5156
0
            return NULL;
5157
0
        }
5158
4.91k
        D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_star_etc"));
5159
4.91k
        void *invalid_star_etc_var;
5160
4.91k
        if (
5161
4.91k
            (invalid_star_etc_var = invalid_star_etc_rule(p))  // invalid_star_etc
5162
4.91k
        )
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.91k
        p->mark = _mark;
5169
4.91k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5170
4.91k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_star_etc"));
5171
4.91k
    }
5172
13.7k
    { // '*' param_no_default param_maybe_default* kwds?
5173
13.7k
        if (p->error_indicator) {
5174
8
            p->level--;
5175
8
            return NULL;
5176
8
        }
5177
13.7k
        D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
5178
13.7k
        Token * _literal;
5179
13.7k
        arg_ty a;
5180
13.7k
        asdl_seq * b;
5181
13.7k
        void *c;
5182
13.7k
        if (
5183
13.7k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
5184
13.7k
            &&
5185
13.7k
            (a = param_no_default_rule(p))  // param_no_default
5186
13.7k
            &&
5187
13.7k
            (b = _loop0_31_rule(p))  // param_maybe_default*
5188
13.7k
            &&
5189
13.7k
            (c = kwds_rule(p), !p->error_indicator)  // kwds?
5190
13.7k
        )
5191
889
        {
5192
889
            D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
5193
889
            _res = _PyPegen_star_etc ( p , a , b , c );
5194
889
            if (_res == NULL && PyErr_Occurred()) {
5195
0
                p->error_indicator = 1;
5196
0
                p->level--;
5197
0
                return NULL;
5198
0
            }
5199
889
            goto done;
5200
889
        }
5201
12.8k
        p->mark = _mark;
5202
12.8k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5203
12.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
5204
12.8k
    }
5205
0
    { // '*' param_no_default_star_annotation param_maybe_default* kwds?
5206
12.8k
        if (p->error_indicator) {
5207
6
            p->level--;
5208
6
            return NULL;
5209
6
        }
5210
12.8k
        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.8k
        Token * _literal;
5212
12.8k
        arg_ty a;
5213
12.8k
        asdl_seq * b;
5214
12.8k
        void *c;
5215
12.8k
        if (
5216
12.8k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
5217
12.8k
            &&
5218
12.8k
            (a = param_no_default_star_annotation_rule(p))  // param_no_default_star_annotation
5219
12.8k
            &&
5220
12.8k
            (b = _loop0_31_rule(p))  // param_maybe_default*
5221
12.8k
            &&
5222
12.8k
            (c = kwds_rule(p), !p->error_indicator)  // kwds?
5223
12.8k
        )
5224
847
        {
5225
847
            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
847
            _res = _PyPegen_star_etc ( p , a , b , c );
5227
847
            if (_res == NULL && PyErr_Occurred()) {
5228
0
                p->error_indicator = 1;
5229
0
                p->level--;
5230
0
                return NULL;
5231
0
            }
5232
847
            goto done;
5233
847
        }
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
902
        {
5258
902
            D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
5259
902
            _res = _PyPegen_star_etc ( p , NULL , b , c );
5260
902
            if (_res == NULL && PyErr_Occurred()) {
5261
0
                p->error_indicator = 1;
5262
0
                p->level--;
5263
0
                return NULL;
5264
0
            }
5265
902
            goto done;
5266
902
        }
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
622
        {
5282
622
            D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwds"));
5283
622
            _res = _PyPegen_star_etc ( p , NULL , NULL , a );
5284
622
            if (_res == NULL && PyErr_Occurred()) {
5285
0
                p->error_indicator = 1;
5286
0
                p->level--;
5287
0
                return NULL;
5288
0
            }
5289
622
            goto done;
5290
622
        }
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.90k
        if (p->error_indicator) {
5316
0
            p->level--;
5317
0
            return NULL;
5318
0
        }
5319
4.90k
        D(fprintf(stderr, "%*c> kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwds"));
5320
4.90k
        void *invalid_kwds_var;
5321
4.90k
        if (
5322
4.90k
            (invalid_kwds_var = invalid_kwds_rule(p))  // invalid_kwds
5323
4.90k
        )
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.90k
        p->mark = _mark;
5330
4.90k
        D(fprintf(stderr, "%*c%s kwds[%d-%d]: %s failed!\n", p->level, ' ',
5331
4.90k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwds"));
5332
4.90k
    }
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
703
        {
5347
703
            D(fprintf(stderr, "%*c+ kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' param_no_default"));
5348
703
            _res = a;
5349
703
            if (_res == NULL && PyErr_Occurred()) {
5350
0
                p->error_indicator = 1;
5351
0
                p->level--;
5352
0
                return NULL;
5353
0
            }
5354
703
            goto done;
5355
703
        }
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
205k
{
5370
205k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5371
0
        _Pypegen_stack_overflow(p);
5372
0
    }
5373
205k
    if (p->error_indicator) {
5374
0
        p->level--;
5375
0
        return NULL;
5376
0
    }
5377
205k
    arg_ty _res = NULL;
5378
205k
    int _mark = p->mark;
5379
205k
    { // param ',' TYPE_COMMENT?
5380
205k
        if (p->error_indicator) {
5381
0
            p->level--;
5382
0
            return NULL;
5383
0
        }
5384
205k
        D(fprintf(stderr, "%*c> param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param ',' TYPE_COMMENT?"));
5385
205k
        Token * _literal;
5386
205k
        arg_ty a;
5387
205k
        void *tc;
5388
205k
        if (
5389
205k
            (a = param_rule(p))  // param
5390
205k
            &&
5391
205k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
5392
205k
            &&
5393
205k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5394
205k
        )
5395
41.3k
        {
5396
41.3k
            D(fprintf(stderr, "%*c+ param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param ',' TYPE_COMMENT?"));
5397
41.3k
            _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5398
41.3k
            if (_res == NULL && PyErr_Occurred()) {
5399
0
                p->error_indicator = 1;
5400
0
                p->level--;
5401
0
                return NULL;
5402
0
            }
5403
41.3k
            goto done;
5404
41.3k
        }
5405
164k
        p->mark = _mark;
5406
164k
        D(fprintf(stderr, "%*c%s param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5407
164k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param ',' TYPE_COMMENT?"));
5408
164k
    }
5409
0
    { // param TYPE_COMMENT? &')'
5410
164k
        if (p->error_indicator) {
5411
27
            p->level--;
5412
27
            return NULL;
5413
27
        }
5414
164k
        D(fprintf(stderr, "%*c> param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param TYPE_COMMENT? &')'"));
5415
164k
        arg_ty a;
5416
164k
        void *tc;
5417
164k
        if (
5418
164k
            (a = param_rule(p))  // param
5419
164k
            &&
5420
164k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5421
164k
            &&
5422
164k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5423
164k
        )
5424
28.2k
        {
5425
28.2k
            D(fprintf(stderr, "%*c+ param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param TYPE_COMMENT? &')'"));
5426
28.2k
            _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5427
28.2k
            if (_res == NULL && PyErr_Occurred()) {
5428
0
                p->error_indicator = 1;
5429
0
                p->level--;
5430
0
                return NULL;
5431
0
            }
5432
28.2k
            goto done;
5433
28.2k
        }
5434
136k
        p->mark = _mark;
5435
136k
        D(fprintf(stderr, "%*c%s param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5436
136k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param TYPE_COMMENT? &')'"));
5437
136k
    }
5438
0
    _res = NULL;
5439
205k
  done:
5440
205k
    p->level--;
5441
205k
    return _res;
5442
136k
}
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.74k
        p->mark = _mark;
5486
1.74k
        D(fprintf(stderr, "%*c%s param_no_default_star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
5487
1.74k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_star_annotation ',' TYPE_COMMENT?"));
5488
1.74k
    }
5489
0
    { // param_star_annotation TYPE_COMMENT? &')'
5490
1.74k
        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
719
        {
5505
719
            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
719
            _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5507
719
            if (_res == NULL && PyErr_Occurred()) {
5508
0
                p->error_indicator = 1;
5509
0
                p->level--;
5510
0
                return NULL;
5511
0
            }
5512
719
            goto done;
5513
719
        }
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
95.3k
{
5528
95.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5529
0
        _Pypegen_stack_overflow(p);
5530
0
    }
5531
95.3k
    if (p->error_indicator) {
5532
0
        p->level--;
5533
0
        return NULL;
5534
0
    }
5535
95.3k
    NameDefaultPair* _res = NULL;
5536
95.3k
    int _mark = p->mark;
5537
95.3k
    { // param default ',' TYPE_COMMENT?
5538
95.3k
        if (p->error_indicator) {
5539
0
            p->level--;
5540
0
            return NULL;
5541
0
        }
5542
95.3k
        D(fprintf(stderr, "%*c> param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default ',' TYPE_COMMENT?"));
5543
95.3k
        Token * _literal;
5544
95.3k
        arg_ty a;
5545
95.3k
        expr_ty c;
5546
95.3k
        void *tc;
5547
95.3k
        if (
5548
95.3k
            (a = param_rule(p))  // param
5549
95.3k
            &&
5550
95.3k
            (c = default_rule(p))  // default
5551
95.3k
            &&
5552
95.3k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
5553
95.3k
            &&
5554
95.3k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5555
95.3k
        )
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
79.0k
        p->mark = _mark;
5567
79.0k
        D(fprintf(stderr, "%*c%s param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5568
79.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default ',' TYPE_COMMENT?"));
5569
79.0k
    }
5570
0
    { // param default TYPE_COMMENT? &')'
5571
79.0k
        if (p->error_indicator) {
5572
11
            p->level--;
5573
11
            return NULL;
5574
11
        }
5575
79.0k
        D(fprintf(stderr, "%*c> param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default TYPE_COMMENT? &')'"));
5576
79.0k
        arg_ty a;
5577
79.0k
        expr_ty c;
5578
79.0k
        void *tc;
5579
79.0k
        if (
5580
79.0k
            (a = param_rule(p))  // param
5581
79.0k
            &&
5582
79.0k
            (c = default_rule(p))  // default
5583
79.0k
            &&
5584
79.0k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5585
79.0k
            &&
5586
79.0k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5587
79.0k
        )
5588
8.12k
        {
5589
8.12k
            D(fprintf(stderr, "%*c+ param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default TYPE_COMMENT? &')'"));
5590
8.12k
            _res = _PyPegen_name_default_pair ( p , a , c , tc );
5591
8.12k
            if (_res == NULL && PyErr_Occurred()) {
5592
0
                p->error_indicator = 1;
5593
0
                p->level--;
5594
0
                return NULL;
5595
0
            }
5596
8.12k
            goto done;
5597
8.12k
        }
5598
70.9k
        p->mark = _mark;
5599
70.9k
        D(fprintf(stderr, "%*c%s param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5600
70.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default TYPE_COMMENT? &')'"));
5601
70.9k
    }
5602
0
    _res = NULL;
5603
95.3k
  done:
5604
95.3k
    p->level--;
5605
95.3k
    return _res;
5606
70.9k
}
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.7k
{
5614
26.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5615
0
        _Pypegen_stack_overflow(p);
5616
0
    }
5617
26.7k
    if (p->error_indicator) {
5618
0
        p->level--;
5619
0
        return NULL;
5620
0
    }
5621
26.7k
    NameDefaultPair* _res = NULL;
5622
26.7k
    int _mark = p->mark;
5623
26.7k
    { // param default? ',' TYPE_COMMENT?
5624
26.7k
        if (p->error_indicator) {
5625
0
            p->level--;
5626
0
            return NULL;
5627
0
        }
5628
26.7k
        D(fprintf(stderr, "%*c> param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
5629
26.7k
        Token * _literal;
5630
26.7k
        arg_ty a;
5631
26.7k
        void *c;
5632
26.7k
        void *tc;
5633
26.7k
        if (
5634
26.7k
            (a = param_rule(p))  // param
5635
26.7k
            &&
5636
26.7k
            (c = default_rule(p), !p->error_indicator)  // default?
5637
26.7k
            &&
5638
26.7k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
5639
26.7k
            &&
5640
26.7k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5641
26.7k
        )
5642
7.20k
        {
5643
7.20k
            D(fprintf(stderr, "%*c+ param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
5644
7.20k
            _res = _PyPegen_name_default_pair ( p , a , c , tc );
5645
7.20k
            if (_res == NULL && PyErr_Occurred()) {
5646
0
                p->error_indicator = 1;
5647
0
                p->level--;
5648
0
                return NULL;
5649
0
            }
5650
7.20k
            goto done;
5651
7.20k
        }
5652
19.5k
        p->mark = _mark;
5653
19.5k
        D(fprintf(stderr, "%*c%s param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
5654
19.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
5655
19.5k
    }
5656
0
    { // param default? TYPE_COMMENT? &')'
5657
19.5k
        if (p->error_indicator) {
5658
9
            p->level--;
5659
9
            return NULL;
5660
9
        }
5661
19.5k
        D(fprintf(stderr, "%*c> param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
5662
19.5k
        arg_ty a;
5663
19.5k
        void *c;
5664
19.5k
        void *tc;
5665
19.5k
        if (
5666
19.5k
            (a = param_rule(p))  // param
5667
19.5k
            &&
5668
19.5k
            (c = default_rule(p), !p->error_indicator)  // default?
5669
19.5k
            &&
5670
19.5k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5671
19.5k
            &&
5672
19.5k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5673
19.5k
        )
5674
4.05k
        {
5675
4.05k
            D(fprintf(stderr, "%*c+ param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
5676
4.05k
            _res = _PyPegen_name_default_pair ( p , a , c , tc );
5677
4.05k
            if (_res == NULL && PyErr_Occurred()) {
5678
0
                p->error_indicator = 1;
5679
0
                p->level--;
5680
0
                return NULL;
5681
0
            }
5682
4.05k
            goto done;
5683
4.05k
        }
5684
15.5k
        p->mark = _mark;
5685
15.5k
        D(fprintf(stderr, "%*c%s param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
5686
15.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
5687
15.5k
    }
5688
0
    _res = NULL;
5689
26.7k
  done:
5690
26.7k
    p->level--;
5691
26.7k
    return _res;
5692
15.5k
}
5693
5694
// param: NAME annotation?
5695
static arg_ty
5696
param_rule(Parser *p)
5697
593k
{
5698
593k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5699
0
        _Pypegen_stack_overflow(p);
5700
0
    }
5701
593k
    if (p->error_indicator) {
5702
0
        p->level--;
5703
0
        return NULL;
5704
0
    }
5705
593k
    arg_ty _res = NULL;
5706
593k
    int _mark = p->mark;
5707
593k
    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
593k
    int _start_lineno = p->tokens[_mark]->lineno;
5713
593k
    UNUSED(_start_lineno); // Only used by EXTRA macro
5714
593k
    int _start_col_offset = p->tokens[_mark]->col_offset;
5715
593k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
5716
593k
    { // NAME annotation?
5717
593k
        if (p->error_indicator) {
5718
0
            p->level--;
5719
0
            return NULL;
5720
0
        }
5721
593k
        D(fprintf(stderr, "%*c> param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME annotation?"));
5722
593k
        expr_ty a;
5723
593k
        void *b;
5724
593k
        if (
5725
593k
            (a = _PyPegen_name_token(p))  // NAME
5726
593k
            &&
5727
593k
            (b = annotation_rule(p), !p->error_indicator)  // annotation?
5728
593k
        )
5729
216k
        {
5730
216k
            D(fprintf(stderr, "%*c+ param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME annotation?"));
5731
216k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5732
216k
            if (_token == NULL) {
5733
0
                p->level--;
5734
0
                return NULL;
5735
0
            }
5736
216k
            int _end_lineno = _token->end_lineno;
5737
216k
            UNUSED(_end_lineno); // Only used by EXTRA macro
5738
216k
            int _end_col_offset = _token->end_col_offset;
5739
216k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
5740
216k
            _res = _PyAST_arg ( a -> v . Name . id , b , NULL , EXTRA );
5741
216k
            if (_res == NULL && PyErr_Occurred()) {
5742
0
                p->error_indicator = 1;
5743
0
                p->level--;
5744
0
                return NULL;
5745
0
            }
5746
216k
            goto done;
5747
216k
        }
5748
376k
        p->mark = _mark;
5749
376k
        D(fprintf(stderr, "%*c%s param[%d-%d]: %s failed!\n", p->level, ' ',
5750
376k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME annotation?"));
5751
376k
    }
5752
0
    _res = NULL;
5753
593k
  done:
5754
593k
    p->level--;
5755
593k
    return _res;
5756
376k
}
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
2.00k
        p->mark = _mark;
5813
2.00k
        D(fprintf(stderr, "%*c%s param_star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
5814
2.00k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME star_annotation"));
5815
2.00k
    }
5816
0
    _res = NULL;
5817
3.60k
  done:
5818
3.60k
    p->level--;
5819
3.60k
    return _res;
5820
2.00k
}
5821
5822
// annotation: ':' expression
5823
static expr_ty
5824
annotation_rule(Parser *p)
5825
216k
{
5826
216k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5827
0
        _Pypegen_stack_overflow(p);
5828
0
    }
5829
216k
    if (p->error_indicator) {
5830
0
        p->level--;
5831
0
        return NULL;
5832
0
    }
5833
216k
    expr_ty _res = NULL;
5834
216k
    int _mark = p->mark;
5835
216k
    { // ':' expression
5836
216k
        if (p->error_indicator) {
5837
0
            p->level--;
5838
0
            return NULL;
5839
0
        }
5840
216k
        D(fprintf(stderr, "%*c> annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression"));
5841
216k
        Token * _literal;
5842
216k
        expr_ty a;
5843
216k
        if (
5844
216k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5845
216k
            &&
5846
216k
            (a = expression_rule(p))  // expression
5847
216k
        )
5848
3.25k
        {
5849
3.25k
            D(fprintf(stderr, "%*c+ annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression"));
5850
3.25k
            _res = a;
5851
3.25k
            if (_res == NULL && PyErr_Occurred()) {
5852
0
                p->error_indicator = 1;
5853
0
                p->level--;
5854
0
                return NULL;
5855
0
            }
5856
3.25k
            goto done;
5857
3.25k
        }
5858
213k
        p->mark = _mark;
5859
213k
        D(fprintf(stderr, "%*c%s annotation[%d-%d]: %s failed!\n", p->level, ' ',
5860
213k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression"));
5861
213k
    }
5862
0
    _res = NULL;
5863
216k
  done:
5864
216k
    p->level--;
5865
216k
    return _res;
5866
213k
}
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
64
        p->mark = _mark;
5905
64
        D(fprintf(stderr, "%*c%s star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
5906
64
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' star_expression"));
5907
64
    }
5908
0
    _res = NULL;
5909
1.66k
  done:
5910
1.66k
    p->level--;
5911
1.66k
    return _res;
5912
64
}
5913
5914
// default: '=' expression | invalid_default
5915
static expr_ty
5916
default_rule(Parser *p)
5917
162k
{
5918
162k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5919
0
        _Pypegen_stack_overflow(p);
5920
0
    }
5921
162k
    if (p->error_indicator) {
5922
0
        p->level--;
5923
0
        return NULL;
5924
0
    }
5925
162k
    expr_ty _res = NULL;
5926
162k
    int _mark = p->mark;
5927
162k
    { // '=' expression
5928
162k
        if (p->error_indicator) {
5929
0
            p->level--;
5930
0
            return NULL;
5931
0
        }
5932
162k
        D(fprintf(stderr, "%*c> default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' expression"));
5933
162k
        Token * _literal;
5934
162k
        expr_ty a;
5935
162k
        if (
5936
162k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
5937
162k
            &&
5938
162k
            (a = expression_rule(p))  // expression
5939
162k
        )
5940
91.2k
        {
5941
91.2k
            D(fprintf(stderr, "%*c+ default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' expression"));
5942
91.2k
            _res = a;
5943
91.2k
            if (_res == NULL && PyErr_Occurred()) {
5944
0
                p->error_indicator = 1;
5945
0
                p->level--;
5946
0
                return NULL;
5947
0
            }
5948
91.2k
            goto done;
5949
91.2k
        }
5950
71.5k
        p->mark = _mark;
5951
71.5k
        D(fprintf(stderr, "%*c%s default[%d-%d]: %s failed!\n", p->level, ' ',
5952
71.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' expression"));
5953
71.5k
    }
5954
71.5k
    if (p->call_invalid_rules) { // invalid_default
5955
61.2k
        if (p->error_indicator) {
5956
666
            p->level--;
5957
666
            return NULL;
5958
666
        }
5959
60.5k
        D(fprintf(stderr, "%*c> default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_default"));
5960
60.5k
        void *invalid_default_var;
5961
60.5k
        if (
5962
60.5k
            (invalid_default_var = invalid_default_rule(p))  // invalid_default
5963
60.5k
        )
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
60.5k
        p->mark = _mark;
5970
60.5k
        D(fprintf(stderr, "%*c%s default[%d-%d]: %s failed!\n", p->level, ' ',
5971
60.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_default"));
5972
60.5k
    }
5973
70.8k
    _res = NULL;
5974
162k
  done:
5975
162k
    p->level--;
5976
162k
    return _res;
5977
70.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.66k
        D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
6029
7.66k
        Token * _keyword;
6030
7.66k
        Token * _literal;
6031
7.66k
        expr_ty a;
6032
7.66k
        asdl_stmt_seq* b;
6033
7.66k
        stmt_ty c;
6034
7.66k
        if (
6035
7.66k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
6036
7.66k
            &&
6037
7.66k
            (a = named_expression_rule(p))  // named_expression
6038
7.66k
            &&
6039
7.66k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6040
7.66k
            &&
6041
7.66k
            (b = block_rule(p))  // block
6042
7.66k
            &&
6043
7.66k
            (c = elif_stmt_rule(p))  // elif_stmt
6044
7.66k
        )
6045
541
        {
6046
541
            D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
6047
541
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6048
541
            if (_token == NULL) {
6049
0
                p->level--;
6050
0
                return NULL;
6051
0
            }
6052
541
            int _end_lineno = _token->end_lineno;
6053
541
            UNUSED(_end_lineno); // Only used by EXTRA macro
6054
541
            int _end_col_offset = _token->end_col_offset;
6055
541
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6056
541
            _res = _PyAST_If ( a , b , CHECK ( asdl_stmt_seq* , _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
6057
541
            if (_res == NULL && PyErr_Occurred()) {
6058
0
                p->error_indicator = 1;
6059
0
                p->level--;
6060
0
                return NULL;
6061
0
            }
6062
541
            goto done;
6063
541
        }
6064
7.12k
        p->mark = _mark;
6065
7.12k
        D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6066
7.12k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
6067
7.12k
    }
6068
0
    { // 'if' named_expression ':' block else_block?
6069
7.12k
        if (p->error_indicator) {
6070
39
            p->level--;
6071
39
            return NULL;
6072
39
        }
6073
7.08k
        D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block else_block?"));
6074
7.08k
        Token * _keyword;
6075
7.08k
        Token * _literal;
6076
7.08k
        expr_ty a;
6077
7.08k
        asdl_stmt_seq* b;
6078
7.08k
        void *c;
6079
7.08k
        if (
6080
7.08k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
6081
7.08k
            &&
6082
7.08k
            (a = named_expression_rule(p))  // named_expression
6083
7.08k
            &&
6084
7.08k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6085
7.08k
            &&
6086
7.08k
            (b = block_rule(p))  // block
6087
7.08k
            &&
6088
7.08k
            (c = else_block_rule(p), !p->error_indicator)  // else_block?
6089
7.08k
        )
6090
6.95k
        {
6091
6.95k
            D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block else_block?"));
6092
6.95k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6093
6.95k
            if (_token == NULL) {
6094
0
                p->level--;
6095
0
                return NULL;
6096
0
            }
6097
6.95k
            int _end_lineno = _token->end_lineno;
6098
6.95k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6099
6.95k
            int _end_col_offset = _token->end_col_offset;
6100
6.95k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6101
6.95k
            _res = _PyAST_If ( a , b , c , EXTRA );
6102
6.95k
            if (_res == NULL && PyErr_Occurred()) {
6103
0
                p->error_indicator = 1;
6104
0
                p->level--;
6105
0
                return NULL;
6106
0
            }
6107
6.95k
            goto done;
6108
6.95k
        }
6109
131
        p->mark = _mark;
6110
131
        D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6111
131
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' block else_block?"));
6112
131
    }
6113
0
    _res = NULL;
6114
7.62k
  done:
6115
7.62k
    p->level--;
6116
7.62k
    return _res;
6117
131
}
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.18k
        D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
6169
9.18k
        Token * _keyword;
6170
9.18k
        Token * _literal;
6171
9.18k
        expr_ty a;
6172
9.18k
        asdl_stmt_seq* b;
6173
9.18k
        stmt_ty c;
6174
9.18k
        if (
6175
9.18k
            (_keyword = _PyPegen_expect_token(p, 692))  // token='elif'
6176
9.18k
            &&
6177
9.18k
            (a = named_expression_rule(p))  // named_expression
6178
9.18k
            &&
6179
9.18k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6180
9.18k
            &&
6181
9.18k
            (b = block_rule(p))  // block
6182
9.18k
            &&
6183
9.18k
            (c = elif_stmt_rule(p))  // elif_stmt
6184
9.18k
        )
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.24k
        p->mark = _mark;
6205
8.24k
        D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6206
8.24k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
6207
8.24k
    }
6208
0
    { // 'elif' named_expression ':' block else_block?
6209
8.24k
        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
541
        {
6231
541
            D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block else_block?"));
6232
541
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6233
541
            if (_token == NULL) {
6234
0
                p->level--;
6235
0
                return NULL;
6236
0
            }
6237
541
            int _end_lineno = _token->end_lineno;
6238
541
            UNUSED(_end_lineno); // Only used by EXTRA macro
6239
541
            int _end_col_offset = _token->end_col_offset;
6240
541
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6241
541
            _res = _PyAST_If ( a , b , c , EXTRA );
6242
541
            if (_res == NULL && PyErr_Occurred()) {
6243
0
                p->error_indicator = 1;
6244
0
                p->level--;
6245
0
                return NULL;
6246
0
            }
6247
541
            goto done;
6248
541
        }
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.7k
{
6263
15.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6264
0
        _Pypegen_stack_overflow(p);
6265
0
    }
6266
15.7k
    if (p->error_indicator) {
6267
0
        p->level--;
6268
0
        return NULL;
6269
0
    }
6270
15.7k
    asdl_stmt_seq* _res = NULL;
6271
15.7k
    int _mark = p->mark;
6272
15.7k
    if (p->call_invalid_rules) { // invalid_else_stmt
6273
3.02k
        if (p->error_indicator) {
6274
0
            p->level--;
6275
0
            return NULL;
6276
0
        }
6277
3.02k
        D(fprintf(stderr, "%*c> else_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_else_stmt"));
6278
3.02k
        void *invalid_else_stmt_var;
6279
3.02k
        if (
6280
3.02k
            (invalid_else_stmt_var = invalid_else_stmt_rule(p))  // invalid_else_stmt
6281
3.02k
        )
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.02k
        p->mark = _mark;
6288
3.02k
        D(fprintf(stderr, "%*c%s else_block[%d-%d]: %s failed!\n", p->level, ' ',
6289
3.02k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_else_stmt"));
6290
3.02k
    }
6291
15.7k
    { // 'else' &&':' block
6292
15.7k
        if (p->error_indicator) {
6293
9
            p->level--;
6294
9
            return NULL;
6295
9
        }
6296
15.7k
        D(fprintf(stderr, "%*c> else_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else' &&':' block"));
6297
15.7k
        Token * _keyword;
6298
15.7k
        Token * _literal;
6299
15.7k
        asdl_stmt_seq* b;
6300
15.7k
        if (
6301
15.7k
            (_keyword = _PyPegen_expect_token(p, 691))  // token='else'
6302
15.7k
            &&
6303
15.7k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
6304
15.7k
            &&
6305
15.7k
            (b = block_rule(p))  // block
6306
15.7k
        )
6307
1.49k
        {
6308
1.49k
            D(fprintf(stderr, "%*c+ else_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else' &&':' block"));
6309
1.49k
            _res = b;
6310
1.49k
            if (_res == NULL && PyErr_Occurred()) {
6311
0
                p->error_indicator = 1;
6312
0
                p->level--;
6313
0
                return NULL;
6314
0
            }
6315
1.49k
            goto done;
6316
1.49k
        }
6317
14.2k
        p->mark = _mark;
6318
14.2k
        D(fprintf(stderr, "%*c%s else_block[%d-%d]: %s failed!\n", p->level, ' ',
6319
14.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else' &&':' block"));
6320
14.2k
    }
6321
0
    _res = NULL;
6322
15.7k
  done:
6323
15.7k
    p->level--;
6324
15.7k
    return _res;
6325
14.2k
}
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.30k
        D(fprintf(stderr, "%*c> while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' block else_block?"));
6374
1.30k
        Token * _keyword;
6375
1.30k
        Token * _literal;
6376
1.30k
        expr_ty a;
6377
1.30k
        asdl_stmt_seq* b;
6378
1.30k
        void *c;
6379
1.30k
        if (
6380
1.30k
            (_keyword = _PyPegen_expect_token(p, 694))  // token='while'
6381
1.30k
            &&
6382
1.30k
            (a = named_expression_rule(p))  // named_expression
6383
1.30k
            &&
6384
1.30k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6385
1.30k
            &&
6386
1.30k
            (b = block_rule(p))  // block
6387
1.30k
            &&
6388
1.30k
            (c = else_block_rule(p), !p->error_indicator)  // else_block?
6389
1.30k
        )
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
72
        p->mark = _mark;
6410
72
        D(fprintf(stderr, "%*c%s while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6411
72
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression ':' block else_block?"));
6412
72
    }
6413
0
    _res = NULL;
6414
1.30k
  done:
6415
1.30k
    p->level--;
6416
1.30k
    return _res;
6417
72
}
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
648
        if (p->error_indicator) {
6447
0
            p->level--;
6448
0
            return NULL;
6449
0
        }
6450
648
        D(fprintf(stderr, "%*c> for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_stmt"));
6451
648
        void *invalid_for_stmt_var;
6452
648
        if (
6453
648
            (invalid_for_stmt_var = invalid_for_stmt_rule(p))  // invalid_for_stmt
6454
648
        )
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
648
        p->mark = _mark;
6461
648
        D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6462
648
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_stmt"));
6463
648
    }
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.62k
        {
6499
1.62k
            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.62k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6501
1.62k
            if (_token == NULL) {
6502
0
                p->level--;
6503
0
                return NULL;
6504
0
            }
6505
1.62k
            int _end_lineno = _token->end_lineno;
6506
1.62k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6507
1.62k
            int _end_col_offset = _token->end_col_offset;
6508
1.62k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6509
1.62k
            _res = _PyAST_For ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
6510
1.62k
            if (_res == NULL && PyErr_Occurred()) {
6511
0
                p->error_indicator = 1;
6512
0
                p->level--;
6513
0
                return NULL;
6514
0
            }
6515
1.62k
            goto done;
6516
1.62k
        }
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
7
            p->level--;
6528
7
            return NULL;
6529
7
        }
6530
908
        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
908
        int _cut_var = 0;
6532
908
        Token * _keyword;
6533
908
        Token * _keyword_1;
6534
908
        Token * _keyword_2;
6535
908
        Token * _literal;
6536
908
        asdl_stmt_seq* b;
6537
908
        void *el;
6538
908
        expr_ty ex;
6539
908
        expr_ty t;
6540
908
        void *tc;
6541
908
        if (
6542
908
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
6543
908
            &&
6544
908
            (_keyword_1 = _PyPegen_expect_token(p, 699))  // token='for'
6545
908
            &&
6546
908
            (t = star_targets_rule(p))  // star_targets
6547
908
            &&
6548
908
            (_keyword_2 = _PyPegen_expect_token(p, 700))  // token='in'
6549
908
            &&
6550
908
            (_cut_var = 1)
6551
908
            &&
6552
908
            (ex = star_expressions_rule(p))  // star_expressions
6553
908
            &&
6554
908
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6555
908
            &&
6556
908
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6557
908
            &&
6558
908
            (b = block_rule(p))  // block
6559
908
            &&
6560
908
            (el = else_block_rule(p), !p->error_indicator)  // else_block?
6561
908
        )
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
210
        p->mark = _mark;
6582
210
        D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6583
210
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?"));
6584
210
        if (_cut_var) {
6585
26
            p->level--;
6586
26
            return NULL;
6587
26
        }
6588
210
    }
6589
184
    if (p->call_invalid_rules) { // invalid_for_target
6590
77
        if (p->error_indicator) {
6591
0
            p->level--;
6592
0
            return NULL;
6593
0
        }
6594
77
        D(fprintf(stderr, "%*c> for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
6595
77
        void *invalid_for_target_var;
6596
77
        if (
6597
77
            (invalid_for_target_var = invalid_for_target_rule(p))  // invalid_for_target
6598
77
        )
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
77
        p->mark = _mark;
6605
77
        D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6606
77
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_target"));
6607
77
    }
6608
184
    _res = NULL;
6609
2.50k
  done:
6610
2.50k
    p->level--;
6611
2.50k
    return _res;
6612
184
}
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
5.78k
{
6624
5.78k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6625
0
        _Pypegen_stack_overflow(p);
6626
0
    }
6627
5.78k
    if (p->error_indicator) {
6628
0
        p->level--;
6629
0
        return NULL;
6630
0
    }
6631
5.78k
    stmt_ty _res = NULL;
6632
5.78k
    int _mark = p->mark;
6633
5.78k
    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
5.78k
    int _start_lineno = p->tokens[_mark]->lineno;
6639
5.78k
    UNUSED(_start_lineno); // Only used by EXTRA macro
6640
5.78k
    int _start_col_offset = p->tokens[_mark]->col_offset;
6641
5.78k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
6642
5.78k
    if (p->call_invalid_rules) { // invalid_with_stmt_indent
6643
2.51k
        if (p->error_indicator) {
6644
0
            p->level--;
6645
0
            return NULL;
6646
0
        }
6647
2.51k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt_indent"));
6648
2.51k
        void *invalid_with_stmt_indent_var;
6649
2.51k
        if (
6650
2.51k
            (invalid_with_stmt_indent_var = invalid_with_stmt_indent_rule(p))  // invalid_with_stmt_indent
6651
2.51k
        )
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.51k
        p->mark = _mark;
6658
2.51k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6659
2.51k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_stmt_indent"));
6660
2.51k
    }
6661
5.78k
    { // 'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block
6662
5.78k
        if (p->error_indicator) {
6663
46
            p->level--;
6664
46
            return NULL;
6665
46
        }
6666
5.73k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block"));
6667
5.73k
        Token * _keyword;
6668
5.73k
        Token * _literal;
6669
5.73k
        Token * _literal_1;
6670
5.73k
        Token * _literal_2;
6671
5.73k
        void *_opt_var;
6672
5.73k
        UNUSED(_opt_var); // Silence compiler warnings
6673
5.73k
        asdl_withitem_seq* a;
6674
5.73k
        asdl_stmt_seq* b;
6675
5.73k
        void *tc;
6676
5.73k
        if (
6677
5.73k
            (_keyword = _PyPegen_expect_token(p, 652))  // token='with'
6678
5.73k
            &&
6679
5.73k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
6680
5.73k
            &&
6681
5.73k
            (a = (asdl_withitem_seq*)_gather_34_rule(p))  // ','.with_item+
6682
5.73k
            &&
6683
5.73k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
6684
5.73k
            &&
6685
5.73k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
6686
5.73k
            &&
6687
5.73k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
6688
5.73k
            &&
6689
5.73k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6690
5.73k
            &&
6691
5.73k
            (b = block_rule(p))  // block
6692
5.73k
        )
6693
1.05k
        {
6694
1.05k
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block"));
6695
1.05k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6696
1.05k
            if (_token == NULL) {
6697
0
                p->level--;
6698
0
                return NULL;
6699
0
            }
6700
1.05k
            int _end_lineno = _token->end_lineno;
6701
1.05k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6702
1.05k
            int _end_col_offset = _token->end_col_offset;
6703
1.05k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6704
1.05k
            _res = _PyAST_With ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
6705
1.05k
            if (_res == NULL && PyErr_Occurred()) {
6706
0
                p->error_indicator = 1;
6707
0
                p->level--;
6708
0
                return NULL;
6709
0
            }
6710
1.05k
            goto done;
6711
1.05k
        }
6712
4.67k
        p->mark = _mark;
6713
4.67k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6714
4.67k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block"));
6715
4.67k
    }
6716
0
    { // 'with' ','.with_item+ ':' TYPE_COMMENT? block
6717
4.67k
        if (p->error_indicator) {
6718
17
            p->level--;
6719
17
            return NULL;
6720
17
        }
6721
4.65k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6722
4.65k
        Token * _keyword;
6723
4.65k
        Token * _literal;
6724
4.65k
        asdl_withitem_seq* a;
6725
4.65k
        asdl_stmt_seq* b;
6726
4.65k
        void *tc;
6727
4.65k
        if (
6728
4.65k
            (_keyword = _PyPegen_expect_token(p, 652))  // token='with'
6729
4.65k
            &&
6730
4.65k
            (a = (asdl_withitem_seq*)_gather_34_rule(p))  // ','.with_item+
6731
4.65k
            &&
6732
4.65k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6733
4.65k
            &&
6734
4.65k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6735
4.65k
            &&
6736
4.65k
            (b = block_rule(p))  // block
6737
4.65k
        )
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.29k
        p->mark = _mark;
6758
2.29k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6759
2.29k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6760
2.29k
    }
6761
0
    { // 'async' 'with' '(' ','.with_item+ ','? ')' ':' block
6762
2.29k
        if (p->error_indicator) {
6763
16
            p->level--;
6764
16
            return NULL;
6765
16
        }
6766
2.28k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async' 'with' '(' ','.with_item+ ','? ')' ':' block"));
6767
2.28k
        Token * _keyword;
6768
2.28k
        Token * _keyword_1;
6769
2.28k
        Token * _literal;
6770
2.28k
        Token * _literal_1;
6771
2.28k
        Token * _literal_2;
6772
2.28k
        void *_opt_var;
6773
2.28k
        UNUSED(_opt_var); // Silence compiler warnings
6774
2.28k
        asdl_withitem_seq* a;
6775
2.28k
        asdl_stmt_seq* b;
6776
2.28k
        if (
6777
2.28k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
6778
2.28k
            &&
6779
2.28k
            (_keyword_1 = _PyPegen_expect_token(p, 652))  // token='with'
6780
2.28k
            &&
6781
2.28k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
6782
2.28k
            &&
6783
2.28k
            (a = (asdl_withitem_seq*)_gather_34_rule(p))  // ','.with_item+
6784
2.28k
            &&
6785
2.28k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
6786
2.28k
            &&
6787
2.28k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
6788
2.28k
            &&
6789
2.28k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
6790
2.28k
            &&
6791
2.28k
            (b = block_rule(p))  // block
6792
2.28k
        )
6793
290
        {
6794
290
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async' 'with' '(' ','.with_item+ ','? ')' ':' block"));
6795
290
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6796
290
            if (_token == NULL) {
6797
0
                p->level--;
6798
0
                return NULL;
6799
0
            }
6800
290
            int _end_lineno = _token->end_lineno;
6801
290
            UNUSED(_end_lineno); // Only used by EXTRA macro
6802
290
            int _end_col_offset = _token->end_col_offset;
6803
290
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6804
290
            _res = CHECK_VERSION ( stmt_ty , 5 , "Async with statements are" , _PyAST_AsyncWith ( a , b , NULL , EXTRA ) );
6805
290
            if (_res == NULL && PyErr_Occurred()) {
6806
0
                p->error_indicator = 1;
6807
0
                p->level--;
6808
0
                return NULL;
6809
0
            }
6810
290
            goto done;
6811
290
        }
6812
1.99k
        p->mark = _mark;
6813
1.99k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6814
1.99k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'with' '(' ','.with_item+ ','? ')' ':' block"));
6815
1.99k
    }
6816
0
    { // 'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block
6817
1.99k
        if (p->error_indicator) {
6818
6
            p->level--;
6819
6
            return NULL;
6820
6
        }
6821
1.98k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6822
1.98k
        Token * _keyword;
6823
1.98k
        Token * _keyword_1;
6824
1.98k
        Token * _literal;
6825
1.98k
        asdl_withitem_seq* a;
6826
1.98k
        asdl_stmt_seq* b;
6827
1.98k
        void *tc;
6828
1.98k
        if (
6829
1.98k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
6830
1.98k
            &&
6831
1.98k
            (_keyword_1 = _PyPegen_expect_token(p, 652))  // token='with'
6832
1.98k
            &&
6833
1.98k
            (a = (asdl_withitem_seq*)_gather_34_rule(p))  // ','.with_item+
6834
1.98k
            &&
6835
1.98k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6836
1.98k
            &&
6837
1.98k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6838
1.98k
            &&
6839
1.98k
            (b = block_rule(p))  // block
6840
1.98k
        )
6841
731
        {
6842
731
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6843
731
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6844
731
            if (_token == NULL) {
6845
0
                p->level--;
6846
0
                return NULL;
6847
0
            }
6848
731
            int _end_lineno = _token->end_lineno;
6849
731
            UNUSED(_end_lineno); // Only used by EXTRA macro
6850
731
            int _end_col_offset = _token->end_col_offset;
6851
731
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6852
731
            _res = CHECK_VERSION ( stmt_ty , 5 , "Async with statements are" , _PyAST_AsyncWith ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
6853
731
            if (_res == NULL && PyErr_Occurred()) {
6854
0
                p->error_indicator = 1;
6855
0
                p->level--;
6856
0
                return NULL;
6857
0
            }
6858
731
            goto done;
6859
731
        }
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.69k
  done:
6885
5.69k
    p->level--;
6886
5.69k
    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.3k
{
6896
15.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6897
0
        _Pypegen_stack_overflow(p);
6898
0
    }
6899
15.3k
    if (p->error_indicator) {
6900
0
        p->level--;
6901
0
        return NULL;
6902
0
    }
6903
15.3k
    withitem_ty _res = NULL;
6904
15.3k
    int _mark = p->mark;
6905
15.3k
    { // expression 'as' star_target &(',' | ')' | ':')
6906
15.3k
        if (p->error_indicator) {
6907
0
            p->level--;
6908
0
            return NULL;
6909
0
        }
6910
15.3k
        D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
6911
15.3k
        Token * _keyword;
6912
15.3k
        expr_ty e;
6913
15.3k
        expr_ty t;
6914
15.3k
        if (
6915
15.3k
            (e = expression_rule(p))  // expression
6916
15.3k
            &&
6917
15.3k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
6918
15.3k
            &&
6919
15.3k
            (t = star_target_rule(p))  // star_target
6920
15.3k
            &&
6921
15.3k
            _PyPegen_lookahead(1, _tmp_35_rule, p)
6922
15.3k
        )
6923
1.92k
        {
6924
1.92k
            D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
6925
1.92k
            _res = _PyAST_withitem ( e , t , p -> arena );
6926
1.92k
            if (_res == NULL && PyErr_Occurred()) {
6927
0
                p->error_indicator = 1;
6928
0
                p->level--;
6929
0
                return NULL;
6930
0
            }
6931
1.92k
            goto done;
6932
1.92k
        }
6933
13.4k
        p->mark = _mark;
6934
13.4k
        D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
6935
13.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
6936
13.4k
    }
6937
13.4k
    if (p->call_invalid_rules) { // invalid_with_item
6938
5.62k
        if (p->error_indicator) {
6939
0
            p->level--;
6940
0
            return NULL;
6941
0
        }
6942
5.62k
        D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_item"));
6943
5.62k
        void *invalid_with_item_var;
6944
5.62k
        if (
6945
5.62k
            (invalid_with_item_var = invalid_with_item_rule(p))  // invalid_with_item
6946
5.62k
        )
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.62k
        p->mark = _mark;
6953
5.62k
        D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
6954
5.62k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_item"));
6955
5.62k
    }
6956
13.4k
    { // expression
6957
13.4k
        if (p->error_indicator) {
6958
21
            p->level--;
6959
21
            return NULL;
6960
21
        }
6961
13.4k
        D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
6962
13.4k
        expr_ty e;
6963
13.4k
        if (
6964
13.4k
            (e = expression_rule(p))  // expression
6965
13.4k
        )
6966
11.2k
        {
6967
11.2k
            D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
6968
11.2k
            _res = _PyAST_withitem ( e , NULL , p -> arena );
6969
11.2k
            if (_res == NULL && PyErr_Occurred()) {
6970
0
                p->error_indicator = 1;
6971
0
                p->level--;
6972
0
                return NULL;
6973
0
            }
6974
11.2k
            goto done;
6975
11.2k
        }
6976
2.16k
        p->mark = _mark;
6977
2.16k
        D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
6978
2.16k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
6979
2.16k
    }
6980
0
    _res = NULL;
6981
15.3k
  done:
6982
15.3k
    p->level--;
6983
15.3k
    return _res;
6984
2.16k
}
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.95k
{
6994
5.95k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6995
0
        _Pypegen_stack_overflow(p);
6996
0
    }
6997
5.95k
    if (p->error_indicator) {
6998
0
        p->level--;
6999
0
        return NULL;
7000
0
    }
7001
5.95k
    stmt_ty _res = NULL;
7002
5.95k
    int _mark = p->mark;
7003
5.95k
    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.95k
    int _start_lineno = p->tokens[_mark]->lineno;
7009
5.95k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7010
5.95k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7011
5.95k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7012
5.95k
    if (p->call_invalid_rules) { // invalid_try_stmt
7013
1.95k
        if (p->error_indicator) {
7014
0
            p->level--;
7015
0
            return NULL;
7016
0
        }
7017
1.95k
        D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_try_stmt"));
7018
1.95k
        void *invalid_try_stmt_var;
7019
1.95k
        if (
7020
1.95k
            (invalid_try_stmt_var = invalid_try_stmt_rule(p))  // invalid_try_stmt
7021
1.95k
        )
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.95k
        p->mark = _mark;
7028
1.95k
        D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7029
1.95k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_try_stmt"));
7030
1.95k
    }
7031
5.95k
    { // 'try' &&':' block finally_block
7032
5.95k
        if (p->error_indicator) {
7033
144
            p->level--;
7034
144
            return NULL;
7035
144
        }
7036
5.81k
        D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block finally_block"));
7037
5.81k
        Token * _keyword;
7038
5.81k
        Token * _literal;
7039
5.81k
        asdl_stmt_seq* b;
7040
5.81k
        asdl_stmt_seq* f;
7041
5.81k
        if (
7042
5.81k
            (_keyword = _PyPegen_expect_token(p, 661))  // token='try'
7043
5.81k
            &&
7044
5.81k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
7045
5.81k
            &&
7046
5.81k
            (b = block_rule(p))  // block
7047
5.81k
            &&
7048
5.81k
            (f = finally_block_rule(p))  // finally_block
7049
5.81k
        )
7050
654
        {
7051
654
            D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' &&':' block finally_block"));
7052
654
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7053
654
            if (_token == NULL) {
7054
0
                p->level--;
7055
0
                return NULL;
7056
0
            }
7057
654
            int _end_lineno = _token->end_lineno;
7058
654
            UNUSED(_end_lineno); // Only used by EXTRA macro
7059
654
            int _end_col_offset = _token->end_col_offset;
7060
654
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7061
654
            _res = _PyAST_Try ( b , NULL , NULL , f , EXTRA );
7062
654
            if (_res == NULL && PyErr_Occurred()) {
7063
0
                p->error_indicator = 1;
7064
0
                p->level--;
7065
0
                return NULL;
7066
0
            }
7067
654
            goto done;
7068
654
        }
7069
5.15k
        p->mark = _mark;
7070
5.15k
        D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7071
5.15k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block finally_block"));
7072
5.15k
    }
7073
0
    { // 'try' &&':' block except_block+ else_block? finally_block?
7074
5.15k
        if (p->error_indicator) {
7075
33
            p->level--;
7076
33
            return NULL;
7077
33
        }
7078
5.12k
        D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
7079
5.12k
        Token * _keyword;
7080
5.12k
        Token * _literal;
7081
5.12k
        asdl_stmt_seq* b;
7082
5.12k
        void *el;
7083
5.12k
        asdl_excepthandler_seq* ex;
7084
5.12k
        void *f;
7085
5.12k
        if (
7086
5.12k
            (_keyword = _PyPegen_expect_token(p, 661))  // token='try'
7087
5.12k
            &&
7088
5.12k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
7089
5.12k
            &&
7090
5.12k
            (b = block_rule(p))  // block
7091
5.12k
            &&
7092
5.12k
            (ex = (asdl_excepthandler_seq*)_loop1_36_rule(p))  // except_block+
7093
5.12k
            &&
7094
5.12k
            (el = else_block_rule(p), !p->error_indicator)  // else_block?
7095
5.12k
            &&
7096
5.12k
            (f = finally_block_rule(p), !p->error_indicator)  // finally_block?
7097
5.12k
        )
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.38k
        p->mark = _mark;
7118
2.38k
        D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7119
2.38k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
7120
2.38k
    }
7121
0
    { // 'try' &&':' block except_star_block+ else_block? finally_block?
7122
2.38k
        if (p->error_indicator) {
7123
11
            p->level--;
7124
11
            return NULL;
7125
11
        }
7126
2.37k
        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.37k
        Token * _keyword;
7128
2.37k
        Token * _literal;
7129
2.37k
        asdl_stmt_seq* b;
7130
2.37k
        void *el;
7131
2.37k
        asdl_excepthandler_seq* ex;
7132
2.37k
        void *f;
7133
2.37k
        if (
7134
2.37k
            (_keyword = _PyPegen_expect_token(p, 661))  // token='try'
7135
2.37k
            &&
7136
2.37k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
7137
2.37k
            &&
7138
2.37k
            (b = block_rule(p))  // block
7139
2.37k
            &&
7140
2.37k
            (ex = (asdl_excepthandler_seq*)_loop1_37_rule(p))  // except_star_block+
7141
2.37k
            &&
7142
2.37k
            (el = else_block_rule(p), !p->error_indicator)  // else_block?
7143
2.37k
            &&
7144
2.37k
            (f = finally_block_rule(p), !p->error_indicator)  // finally_block?
7145
2.37k
        )
7146
1.96k
        {
7147
1.96k
            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.96k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7149
1.96k
            if (_token == NULL) {
7150
0
                p->level--;
7151
0
                return NULL;
7152
0
            }
7153
1.96k
            int _end_lineno = _token->end_lineno;
7154
1.96k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7155
1.96k
            int _end_col_offset = _token->end_col_offset;
7156
1.96k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7157
1.96k
            _res = CHECK_VERSION ( stmt_ty , 11 , "Exception groups are" , _PyAST_TryStar ( b , ex , el , f , EXTRA ) );
7158
1.96k
            if (_res == NULL && PyErr_Occurred()) {
7159
0
                p->error_indicator = 1;
7160
0
                p->level--;
7161
0
                return NULL;
7162
0
            }
7163
1.96k
            goto done;
7164
1.96k
        }
7165
410
        p->mark = _mark;
7166
410
        D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7167
410
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block except_star_block+ else_block? finally_block?"));
7168
410
    }
7169
0
    _res = NULL;
7170
5.76k
  done:
7171
5.76k
    p->level--;
7172
5.76k
    return _res;
7173
410
}
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.5k
{
7185
13.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7186
0
        _Pypegen_stack_overflow(p);
7187
0
    }
7188
13.5k
    if (p->error_indicator) {
7189
0
        p->level--;
7190
0
        return NULL;
7191
0
    }
7192
13.5k
    excepthandler_ty _res = NULL;
7193
13.5k
    int _mark = p->mark;
7194
13.5k
    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.5k
    int _start_lineno = p->tokens[_mark]->lineno;
7200
13.5k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7201
13.5k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7202
13.5k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7203
13.5k
    if (p->call_invalid_rules) { // invalid_except_stmt_indent
7204
6.77k
        if (p->error_indicator) {
7205
0
            p->level--;
7206
0
            return NULL;
7207
0
        }
7208
6.77k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt_indent"));
7209
6.77k
        void *invalid_except_stmt_indent_var;
7210
6.77k
        if (
7211
6.77k
            (invalid_except_stmt_indent_var = invalid_except_stmt_indent_rule(p))  // invalid_except_stmt_indent
7212
6.77k
        )
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.77k
        p->mark = _mark;
7219
6.77k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7220
6.77k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_stmt_indent"));
7221
6.77k
    }
7222
13.5k
    { // 'except' expression ':' block
7223
13.5k
        if (p->error_indicator) {
7224
4
            p->level--;
7225
4
            return NULL;
7226
4
        }
7227
13.5k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ':' block"));
7228
13.5k
        Token * _keyword;
7229
13.5k
        Token * _literal;
7230
13.5k
        asdl_stmt_seq* b;
7231
13.5k
        expr_ty e;
7232
13.5k
        if (
7233
13.5k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7234
13.5k
            &&
7235
13.5k
            (e = expression_rule(p))  // expression
7236
13.5k
            &&
7237
13.5k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7238
13.5k
            &&
7239
13.5k
            (b = block_rule(p))  // block
7240
13.5k
        )
7241
1.04k
        {
7242
1.04k
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ':' block"));
7243
1.04k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7244
1.04k
            if (_token == NULL) {
7245
0
                p->level--;
7246
0
                return NULL;
7247
0
            }
7248
1.04k
            int _end_lineno = _token->end_lineno;
7249
1.04k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7250
1.04k
            int _end_col_offset = _token->end_col_offset;
7251
1.04k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7252
1.04k
            _res = _PyAST_ExceptHandler ( e , NULL , b , EXTRA );
7253
1.04k
            if (_res == NULL && PyErr_Occurred()) {
7254
0
                p->error_indicator = 1;
7255
0
                p->level--;
7256
0
                return NULL;
7257
0
            }
7258
1.04k
            goto done;
7259
1.04k
        }
7260
12.4k
        p->mark = _mark;
7261
12.4k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7262
12.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ':' block"));
7263
12.4k
    }
7264
0
    { // 'except' expression 'as' NAME ':' block
7265
12.4k
        if (p->error_indicator) {
7266
10
            p->level--;
7267
10
            return NULL;
7268
10
        }
7269
12.4k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression 'as' NAME ':' block"));
7270
12.4k
        Token * _keyword;
7271
12.4k
        Token * _keyword_1;
7272
12.4k
        Token * _literal;
7273
12.4k
        asdl_stmt_seq* b;
7274
12.4k
        expr_ty e;
7275
12.4k
        expr_ty t;
7276
12.4k
        if (
7277
12.4k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7278
12.4k
            &&
7279
12.4k
            (e = expression_rule(p))  // expression
7280
12.4k
            &&
7281
12.4k
            (_keyword_1 = _PyPegen_expect_token(p, 685))  // token='as'
7282
12.4k
            &&
7283
12.4k
            (t = _PyPegen_name_token(p))  // NAME
7284
12.4k
            &&
7285
12.4k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7286
12.4k
            &&
7287
12.4k
            (b = block_rule(p))  // block
7288
12.4k
        )
7289
869
        {
7290
869
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression 'as' NAME ':' block"));
7291
869
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7292
869
            if (_token == NULL) {
7293
0
                p->level--;
7294
0
                return NULL;
7295
0
            }
7296
869
            int _end_lineno = _token->end_lineno;
7297
869
            UNUSED(_end_lineno); // Only used by EXTRA macro
7298
869
            int _end_col_offset = _token->end_col_offset;
7299
869
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7300
869
            _res = _PyAST_ExceptHandler ( e , ( ( expr_ty ) t ) -> v . Name . id , b , EXTRA );
7301
869
            if (_res == NULL && PyErr_Occurred()) {
7302
0
                p->error_indicator = 1;
7303
0
                p->level--;
7304
0
                return NULL;
7305
0
            }
7306
869
            goto done;
7307
869
        }
7308
11.5k
        p->mark = _mark;
7309
11.5k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7310
11.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression 'as' NAME ':' block"));
7311
11.5k
    }
7312
0
    { // 'except' expressions ':' block
7313
11.5k
        if (p->error_indicator) {
7314
4
            p->level--;
7315
4
            return NULL;
7316
4
        }
7317
11.5k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expressions ':' block"));
7318
11.5k
        Token * _keyword;
7319
11.5k
        Token * _literal;
7320
11.5k
        asdl_stmt_seq* b;
7321
11.5k
        expr_ty e;
7322
11.5k
        if (
7323
11.5k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7324
11.5k
            &&
7325
11.5k
            (e = expressions_rule(p))  // expressions
7326
11.5k
            &&
7327
11.5k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7328
11.5k
            &&
7329
11.5k
            (b = block_rule(p))  // block
7330
11.5k
        )
7331
356
        {
7332
356
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expressions ':' block"));
7333
356
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7334
356
            if (_token == NULL) {
7335
0
                p->level--;
7336
0
                return NULL;
7337
0
            }
7338
356
            int _end_lineno = _token->end_lineno;
7339
356
            UNUSED(_end_lineno); // Only used by EXTRA macro
7340
356
            int _end_col_offset = _token->end_col_offset;
7341
356
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7342
356
            _res = CHECK_VERSION ( excepthandler_ty , 14 , "except expressions without parentheses are" , _PyAST_ExceptHandler ( e , NULL , b , EXTRA ) );
7343
356
            if (_res == NULL && PyErr_Occurred()) {
7344
0
                p->error_indicator = 1;
7345
0
                p->level--;
7346
0
                return NULL;
7347
0
            }
7348
356
            goto done;
7349
356
        }
7350
11.2k
        p->mark = _mark;
7351
11.2k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7352
11.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expressions ':' block"));
7353
11.2k
    }
7354
0
    { // 'except' ':' block
7355
11.2k
        if (p->error_indicator) {
7356
2
            p->level--;
7357
2
            return NULL;
7358
2
        }
7359
11.2k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' ':' block"));
7360
11.2k
        Token * _keyword;
7361
11.2k
        Token * _literal;
7362
11.2k
        asdl_stmt_seq* b;
7363
11.2k
        if (
7364
11.2k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7365
11.2k
            &&
7366
11.2k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7367
11.2k
            &&
7368
11.2k
            (b = block_rule(p))  // block
7369
11.2k
        )
7370
4.43k
        {
7371
4.43k
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' ':' block"));
7372
4.43k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7373
4.43k
            if (_token == NULL) {
7374
0
                p->level--;
7375
0
                return NULL;
7376
0
            }
7377
4.43k
            int _end_lineno = _token->end_lineno;
7378
4.43k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7379
4.43k
            int _end_col_offset = _token->end_col_offset;
7380
4.43k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7381
4.43k
            _res = _PyAST_ExceptHandler ( NULL , NULL , b , EXTRA );
7382
4.43k
            if (_res == NULL && PyErr_Occurred()) {
7383
0
                p->error_indicator = 1;
7384
0
                p->level--;
7385
0
                return NULL;
7386
0
            }
7387
4.43k
            goto done;
7388
4.43k
        }
7389
6.80k
        p->mark = _mark;
7390
6.80k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7391
6.80k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' ':' block"));
7392
6.80k
    }
7393
6.80k
    if (p->call_invalid_rules) { // invalid_except_stmt
7394
3.41k
        if (p->error_indicator) {
7395
13
            p->level--;
7396
13
            return NULL;
7397
13
        }
7398
3.40k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt"));
7399
3.40k
        void *invalid_except_stmt_var;
7400
3.40k
        if (
7401
3.40k
            (invalid_except_stmt_var = invalid_except_stmt_rule(p))  // invalid_except_stmt
7402
3.40k
        )
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.40k
        p->mark = _mark;
7409
3.40k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7410
3.40k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_stmt"));
7411
3.40k
    }
7412
6.79k
    _res = NULL;
7413
13.4k
  done:
7414
13.4k
    p->level--;
7415
13.4k
    return _res;
7416
6.79k
}
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.54k
{
7427
8.54k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7428
0
        _Pypegen_stack_overflow(p);
7429
0
    }
7430
8.54k
    if (p->error_indicator) {
7431
0
        p->level--;
7432
0
        return NULL;
7433
0
    }
7434
8.54k
    excepthandler_ty _res = NULL;
7435
8.54k
    int _mark = p->mark;
7436
8.54k
    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.54k
    int _start_lineno = p->tokens[_mark]->lineno;
7442
8.54k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7443
8.54k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7444
8.54k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7445
8.54k
    if (p->call_invalid_rules) { // invalid_except_star_stmt_indent
7446
4.97k
        if (p->error_indicator) {
7447
0
            p->level--;
7448
0
            return NULL;
7449
0
        }
7450
4.97k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_star_stmt_indent"));
7451
4.97k
        void *invalid_except_star_stmt_indent_var;
7452
4.97k
        if (
7453
4.97k
            (invalid_except_star_stmt_indent_var = invalid_except_star_stmt_indent_rule(p))  // invalid_except_star_stmt_indent
7454
4.97k
        )
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.97k
        p->mark = _mark;
7461
4.97k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7462
4.97k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_star_stmt_indent"));
7463
4.97k
    }
7464
8.54k
    { // 'except' '*' expression ':' block
7465
8.54k
        if (p->error_indicator) {
7466
4
            p->level--;
7467
4
            return NULL;
7468
4
        }
7469
8.54k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ':' block"));
7470
8.54k
        Token * _keyword;
7471
8.54k
        Token * _literal;
7472
8.54k
        Token * _literal_1;
7473
8.54k
        asdl_stmt_seq* b;
7474
8.54k
        expr_ty e;
7475
8.54k
        if (
7476
8.54k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7477
8.54k
            &&
7478
8.54k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
7479
8.54k
            &&
7480
8.54k
            (e = expression_rule(p))  // expression
7481
8.54k
            &&
7482
8.54k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
7483
8.54k
            &&
7484
8.54k
            (b = block_rule(p))  // block
7485
8.54k
        )
7486
3.82k
        {
7487
3.82k
            D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ':' block"));
7488
3.82k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7489
3.82k
            if (_token == NULL) {
7490
0
                p->level--;
7491
0
                return NULL;
7492
0
            }
7493
3.82k
            int _end_lineno = _token->end_lineno;
7494
3.82k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7495
3.82k
            int _end_col_offset = _token->end_col_offset;
7496
3.82k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7497
3.82k
            _res = _PyAST_ExceptHandler ( e , NULL , b , EXTRA );
7498
3.82k
            if (_res == NULL && PyErr_Occurred()) {
7499
0
                p->error_indicator = 1;
7500
0
                p->level--;
7501
0
                return NULL;
7502
0
            }
7503
3.82k
            goto done;
7504
3.82k
        }
7505
4.71k
        p->mark = _mark;
7506
4.71k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7507
4.71k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression ':' block"));
7508
4.71k
    }
7509
0
    { // 'except' '*' expression 'as' NAME ':' block
7510
4.71k
        if (p->error_indicator) {
7511
4
            p->level--;
7512
4
            return NULL;
7513
4
        }
7514
4.71k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression 'as' NAME ':' block"));
7515
4.71k
        Token * _keyword;
7516
4.71k
        Token * _keyword_1;
7517
4.71k
        Token * _literal;
7518
4.71k
        Token * _literal_1;
7519
4.71k
        asdl_stmt_seq* b;
7520
4.71k
        expr_ty e;
7521
4.71k
        expr_ty t;
7522
4.71k
        if (
7523
4.71k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7524
4.71k
            &&
7525
4.71k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
7526
4.71k
            &&
7527
4.71k
            (e = expression_rule(p))  // expression
7528
4.71k
            &&
7529
4.71k
            (_keyword_1 = _PyPegen_expect_token(p, 685))  // token='as'
7530
4.71k
            &&
7531
4.71k
            (t = _PyPegen_name_token(p))  // NAME
7532
4.71k
            &&
7533
4.71k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
7534
4.71k
            &&
7535
4.71k
            (b = block_rule(p))  // block
7536
4.71k
        )
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.49k
        p->mark = _mark;
7557
4.49k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7558
4.49k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression 'as' NAME ':' block"));
7559
4.49k
    }
7560
0
    { // 'except' '*' expressions ':' block
7561
4.49k
        if (p->error_indicator) {
7562
3
            p->level--;
7563
3
            return NULL;
7564
3
        }
7565
4.49k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expressions ':' block"));
7566
4.49k
        Token * _keyword;
7567
4.49k
        Token * _literal;
7568
4.49k
        Token * _literal_1;
7569
4.49k
        asdl_stmt_seq* b;
7570
4.49k
        expr_ty e;
7571
4.49k
        if (
7572
4.49k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7573
4.49k
            &&
7574
4.49k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
7575
4.49k
            &&
7576
4.49k
            (e = expressions_rule(p))  // expressions
7577
4.49k
            &&
7578
4.49k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
7579
4.49k
            &&
7580
4.49k
            (b = block_rule(p))  // block
7581
4.49k
        )
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
4.01k
        p->mark = _mark;
7602
4.01k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7603
4.01k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expressions ':' block"));
7604
4.01k
    }
7605
4.01k
    if (p->call_invalid_rules) { // invalid_except_star_stmt
7606
2.60k
        if (p->error_indicator) {
7607
2
            p->level--;
7608
2
            return NULL;
7609
2
        }
7610
2.60k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_star_stmt"));
7611
2.60k
        void *invalid_except_star_stmt_var;
7612
2.60k
        if (
7613
2.60k
            (invalid_except_star_stmt_var = invalid_except_star_stmt_rule(p))  // invalid_except_star_stmt
7614
2.60k
        )
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.60k
        p->mark = _mark;
7621
2.60k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7622
2.60k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_star_stmt"));
7623
2.60k
    }
7624
4.00k
    _res = NULL;
7625
8.53k
  done:
7626
8.53k
    p->level--;
7627
8.53k
    return _res;
7628
4.00k
}
7629
7630
// finally_block: invalid_finally_stmt | 'finally' &&':' block
7631
static asdl_stmt_seq*
7632
finally_block_rule(Parser *p)
7633
10.2k
{
7634
10.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7635
0
        _Pypegen_stack_overflow(p);
7636
0
    }
7637
10.2k
    if (p->error_indicator) {
7638
0
        p->level--;
7639
0
        return NULL;
7640
0
    }
7641
10.2k
    asdl_stmt_seq* _res = NULL;
7642
10.2k
    int _mark = p->mark;
7643
10.2k
    if (p->call_invalid_rules) { // invalid_finally_stmt
7644
3.20k
        if (p->error_indicator) {
7645
0
            p->level--;
7646
0
            return NULL;
7647
0
        }
7648
3.20k
        D(fprintf(stderr, "%*c> finally_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_finally_stmt"));
7649
3.20k
        void *invalid_finally_stmt_var;
7650
3.20k
        if (
7651
3.20k
            (invalid_finally_stmt_var = invalid_finally_stmt_rule(p))  // invalid_finally_stmt
7652
3.20k
        )
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.20k
        p->mark = _mark;
7659
3.20k
        D(fprintf(stderr, "%*c%s finally_block[%d-%d]: %s failed!\n", p->level, ' ',
7660
3.20k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_finally_stmt"));
7661
3.20k
    }
7662
10.2k
    { // 'finally' &&':' block
7663
10.2k
        if (p->error_indicator) {
7664
1
            p->level--;
7665
1
            return NULL;
7666
1
        }
7667
10.2k
        D(fprintf(stderr, "%*c> finally_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally' &&':' block"));
7668
10.2k
        Token * _keyword;
7669
10.2k
        Token * _literal;
7670
10.2k
        asdl_stmt_seq* a;
7671
10.2k
        if (
7672
10.2k
            (_keyword = _PyPegen_expect_token(p, 678))  // token='finally'
7673
10.2k
            &&
7674
10.2k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
7675
10.2k
            &&
7676
10.2k
            (a = block_rule(p))  // block
7677
10.2k
        )
7678
663
        {
7679
663
            D(fprintf(stderr, "%*c+ finally_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally' &&':' block"));
7680
663
            _res = a;
7681
663
            if (_res == NULL && PyErr_Occurred()) {
7682
0
                p->error_indicator = 1;
7683
0
                p->level--;
7684
0
                return NULL;
7685
0
            }
7686
663
            goto done;
7687
663
        }
7688
9.62k
        p->mark = _mark;
7689
9.62k
        D(fprintf(stderr, "%*c%s finally_block[%d-%d]: %s failed!\n", p->level, ' ',
7690
9.62k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally' &&':' block"));
7691
9.62k
    }
7692
0
    _res = NULL;
7693
10.2k
  done:
7694
10.2k
    p->level--;
7695
10.2k
    return _res;
7696
9.62k
}
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
125k
{
7704
125k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7705
0
        _Pypegen_stack_overflow(p);
7706
0
    }
7707
125k
    if (p->error_indicator) {
7708
0
        p->level--;
7709
0
        return NULL;
7710
0
    }
7711
125k
    stmt_ty _res = NULL;
7712
125k
    int _mark = p->mark;
7713
125k
    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
125k
    int _start_lineno = p->tokens[_mark]->lineno;
7719
125k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7720
125k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7721
125k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7722
125k
    { // "match" subject_expr ':' NEWLINE INDENT case_block+ DEDENT
7723
125k
        if (p->error_indicator) {
7724
0
            p->level--;
7725
0
            return NULL;
7726
0
        }
7727
125k
        D(fprintf(stderr, "%*c> match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
7728
125k
        expr_ty _keyword;
7729
125k
        Token * _literal;
7730
125k
        asdl_match_case_seq* cases;
7731
125k
        Token * dedent_var;
7732
125k
        Token * indent_var;
7733
125k
        Token * newline_var;
7734
125k
        expr_ty subject;
7735
125k
        if (
7736
125k
            (_keyword = _PyPegen_expect_soft_keyword(p, "match"))  // soft_keyword='"match"'
7737
125k
            &&
7738
125k
            (subject = subject_expr_rule(p))  // subject_expr
7739
125k
            &&
7740
125k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7741
125k
            &&
7742
125k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
7743
125k
            &&
7744
125k
            (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
7745
125k
            &&
7746
125k
            (cases = (asdl_match_case_seq*)_loop1_38_rule(p))  // case_block+
7747
125k
            &&
7748
125k
            (dedent_var = _PyPegen_expect_token(p, DEDENT))  // token='DEDENT'
7749
125k
        )
7750
627
        {
7751
627
            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
627
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7753
627
            if (_token == NULL) {
7754
0
                p->level--;
7755
0
                return NULL;
7756
0
            }
7757
627
            int _end_lineno = _token->end_lineno;
7758
627
            UNUSED(_end_lineno); // Only used by EXTRA macro
7759
627
            int _end_col_offset = _token->end_col_offset;
7760
627
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7761
627
            _res = CHECK_VERSION ( stmt_ty , 10 , "Pattern matching is" , _PyAST_Match ( subject , cases , EXTRA ) );
7762
627
            if (_res == NULL && PyErr_Occurred()) {
7763
0
                p->error_indicator = 1;
7764
0
                p->level--;
7765
0
                return NULL;
7766
0
            }
7767
627
            goto done;
7768
627
        }
7769
125k
        p->mark = _mark;
7770
125k
        D(fprintf(stderr, "%*c%s match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7771
125k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
7772
125k
    }
7773
125k
    if (p->call_invalid_rules) { // invalid_match_stmt
7774
22.3k
        if (p->error_indicator) {
7775
151
            p->level--;
7776
151
            return NULL;
7777
151
        }
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
125k
    _res = NULL;
7793
125k
  done:
7794
125k
    p->level--;
7795
125k
    return _res;
7796
125k
}
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.48k
        p->mark = _mark;
7856
5.48k
        D(fprintf(stderr, "%*c%s subject_expr[%d-%d]: %s failed!\n", p->level, ' ',
7857
5.48k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
7858
5.48k
    }
7859
0
    { // named_expression
7860
5.48k
        if (p->error_indicator) {
7861
3
            p->level--;
7862
3
            return NULL;
7863
3
        }
7864
5.48k
        D(fprintf(stderr, "%*c> subject_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
7865
5.48k
        expr_ty named_expression_var;
7866
5.48k
        if (
7867
5.48k
            (named_expression_var = named_expression_rule(p))  // named_expression
7868
5.48k
        )
7869
4.06k
        {
7870
4.06k
            D(fprintf(stderr, "%*c+ subject_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
7871
4.06k
            _res = named_expression_var;
7872
4.06k
            goto done;
7873
4.06k
        }
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.50k
  done:
7880
6.50k
    p->level--;
7881
6.50k
    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.99k
{
7888
6.99k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7889
0
        _Pypegen_stack_overflow(p);
7890
0
    }
7891
6.99k
    if (p->error_indicator) {
7892
0
        p->level--;
7893
0
        return NULL;
7894
0
    }
7895
6.99k
    match_case_ty _res = NULL;
7896
6.99k
    int _mark = p->mark;
7897
6.99k
    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.99k
    { // "case" patterns guard? ':' block
7917
6.99k
        if (p->error_indicator) {
7918
147
            p->level--;
7919
147
            return NULL;
7920
147
        }
7921
6.85k
        D(fprintf(stderr, "%*c> case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' block"));
7922
6.85k
        expr_ty _keyword;
7923
6.85k
        Token * _literal;
7924
6.85k
        asdl_stmt_seq* body;
7925
6.85k
        void *guard;
7926
6.85k
        pattern_ty pattern;
7927
6.85k
        if (
7928
6.85k
            (_keyword = _PyPegen_expect_soft_keyword(p, "case"))  // soft_keyword='"case"'
7929
6.85k
            &&
7930
6.85k
            (pattern = patterns_rule(p))  // patterns
7931
6.85k
            &&
7932
6.85k
            (guard = guard_rule(p), !p->error_indicator)  // guard?
7933
6.85k
            &&
7934
6.85k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7935
6.85k
            &&
7936
6.85k
            (body = block_rule(p))  // block
7937
6.85k
        )
7938
5.00k
        {
7939
5.00k
            D(fprintf(stderr, "%*c+ case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' block"));
7940
5.00k
            _res = _PyAST_match_case ( pattern , guard , body , p -> arena );
7941
5.00k
            if (_res == NULL && PyErr_Occurred()) {
7942
0
                p->error_indicator = 1;
7943
0
                p->level--;
7944
0
                return NULL;
7945
0
            }
7946
5.00k
            goto done;
7947
5.00k
        }
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.85k
  done:
7954
6.85k
    p->level--;
7955
6.85k
    return _res;
7956
1.84k
}
7957
7958
// guard: 'if' named_expression
7959
static expr_ty
7960
guard_rule(Parser *p)
7961
9.14k
{
7962
9.14k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7963
0
        _Pypegen_stack_overflow(p);
7964
0
    }
7965
9.14k
    if (p->error_indicator) {
7966
0
        p->level--;
7967
0
        return NULL;
7968
0
    }
7969
9.14k
    expr_ty _res = NULL;
7970
9.14k
    int _mark = p->mark;
7971
9.14k
    { // 'if' named_expression
7972
9.14k
        if (p->error_indicator) {
7973
0
            p->level--;
7974
0
            return NULL;
7975
0
        }
7976
9.14k
        D(fprintf(stderr, "%*c> guard[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression"));
7977
9.14k
        Token * _keyword;
7978
9.14k
        expr_ty guard;
7979
9.14k
        if (
7980
9.14k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
7981
9.14k
            &&
7982
9.14k
            (guard = named_expression_rule(p))  // named_expression
7983
9.14k
        )
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.89k
        p->mark = _mark;
7995
8.89k
        D(fprintf(stderr, "%*c%s guard[%d-%d]: %s failed!\n", p->level, ' ',
7996
8.89k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression"));
7997
8.89k
    }
7998
0
    _res = NULL;
7999
9.14k
  done:
8000
9.14k
    p->level--;
8001
9.14k
    return _res;
8002
8.89k
}
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.77k
        {
8037
2.77k
            D(fprintf(stderr, "%*c+ patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "open_sequence_pattern"));
8038
2.77k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8039
2.77k
            if (_token == NULL) {
8040
0
                p->level--;
8041
0
                return NULL;
8042
0
            }
8043
2.77k
            int _end_lineno = _token->end_lineno;
8044
2.77k
            UNUSED(_end_lineno); // Only used by EXTRA macro
8045
2.77k
            int _end_col_offset = _token->end_col_offset;
8046
2.77k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8047
2.77k
            _res = _PyAST_MatchSequence ( patterns , EXTRA );
8048
2.77k
            if (_res == NULL && PyErr_Occurred()) {
8049
0
                p->error_indicator = 1;
8050
0
                p->level--;
8051
0
                return NULL;
8052
0
            }
8053
2.77k
            goto done;
8054
2.77k
        }
8055
7.78k
        p->mark = _mark;
8056
7.78k
        D(fprintf(stderr, "%*c%s patterns[%d-%d]: %s failed!\n", p->level, ' ',
8057
7.78k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "open_sequence_pattern"));
8058
7.78k
    }
8059
0
    { // pattern
8060
7.78k
        if (p->error_indicator) {
8061
259
            p->level--;
8062
259
            return NULL;
8063
259
        }
8064
7.52k
        D(fprintf(stderr, "%*c> patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern"));
8065
7.52k
        pattern_ty pattern_var;
8066
7.52k
        if (
8067
7.52k
            (pattern_var = pattern_rule(p))  // pattern
8068
7.52k
        )
8069
6.37k
        {
8070
6.37k
            D(fprintf(stderr, "%*c+ patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern"));
8071
6.37k
            _res = pattern_var;
8072
6.37k
            goto done;
8073
6.37k
        }
8074
1.14k
        p->mark = _mark;
8075
1.14k
        D(fprintf(stderr, "%*c%s patterns[%d-%d]: %s failed!\n", p->level, ' ',
8076
1.14k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern"));
8077
1.14k
    }
8078
0
    _res = NULL;
8079
10.2k
  done:
8080
10.2k
    p->level--;
8081
10.2k
    return _res;
8082
1.14k
}
8083
8084
// pattern: as_pattern | or_pattern
8085
static pattern_ty
8086
pattern_rule(Parser *p)
8087
91.7k
{
8088
91.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8089
0
        _Pypegen_stack_overflow(p);
8090
0
    }
8091
91.7k
    if (p->error_indicator) {
8092
0
        p->level--;
8093
0
        return NULL;
8094
0
    }
8095
91.7k
    pattern_ty _res = NULL;
8096
91.7k
    int _mark = p->mark;
8097
91.7k
    { // as_pattern
8098
91.7k
        if (p->error_indicator) {
8099
0
            p->level--;
8100
0
            return NULL;
8101
0
        }
8102
91.7k
        D(fprintf(stderr, "%*c> pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "as_pattern"));
8103
91.7k
        pattern_ty as_pattern_var;
8104
91.7k
        if (
8105
91.7k
            (as_pattern_var = as_pattern_rule(p))  // as_pattern
8106
91.7k
        )
8107
601
        {
8108
601
            D(fprintf(stderr, "%*c+ pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "as_pattern"));
8109
601
            _res = as_pattern_var;
8110
601
            goto done;
8111
601
        }
8112
91.1k
        p->mark = _mark;
8113
91.1k
        D(fprintf(stderr, "%*c%s pattern[%d-%d]: %s failed!\n", p->level, ' ',
8114
91.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "as_pattern"));
8115
91.1k
    }
8116
0
    { // or_pattern
8117
91.1k
        if (p->error_indicator) {
8118
4.16k
            p->level--;
8119
4.16k
            return NULL;
8120
4.16k
        }
8121
87.0k
        D(fprintf(stderr, "%*c> pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern"));
8122
87.0k
        pattern_ty or_pattern_var;
8123
87.0k
        if (
8124
87.0k
            (or_pattern_var = or_pattern_rule(p))  // or_pattern
8125
87.0k
        )
8126
56.0k
        {
8127
56.0k
            D(fprintf(stderr, "%*c+ pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern"));
8128
56.0k
            _res = or_pattern_var;
8129
56.0k
            goto done;
8130
56.0k
        }
8131
30.9k
        p->mark = _mark;
8132
30.9k
        D(fprintf(stderr, "%*c%s pattern[%d-%d]: %s failed!\n", p->level, ' ',
8133
30.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern"));
8134
30.9k
    }
8135
0
    _res = NULL;
8136
87.6k
  done:
8137
87.6k
    p->level--;
8138
87.6k
    return _res;
8139
30.9k
}
8140
8141
// as_pattern: or_pattern 'as' pattern_capture_target | invalid_as_pattern
8142
static pattern_ty
8143
as_pattern_rule(Parser *p)
8144
91.7k
{
8145
91.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8146
0
        _Pypegen_stack_overflow(p);
8147
0
    }
8148
91.7k
    if (p->error_indicator) {
8149
0
        p->level--;
8150
0
        return NULL;
8151
0
    }
8152
91.7k
    pattern_ty _res = NULL;
8153
91.7k
    int _mark = p->mark;
8154
91.7k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8155
46
        p->error_indicator = 1;
8156
46
        p->level--;
8157
46
        return NULL;
8158
46
    }
8159
91.7k
    int _start_lineno = p->tokens[_mark]->lineno;
8160
91.7k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8161
91.7k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8162
91.7k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8163
91.7k
    { // or_pattern 'as' pattern_capture_target
8164
91.7k
        if (p->error_indicator) {
8165
0
            p->level--;
8166
0
            return NULL;
8167
0
        }
8168
91.7k
        D(fprintf(stderr, "%*c> as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
8169
91.7k
        Token * _keyword;
8170
91.7k
        pattern_ty pattern;
8171
91.7k
        expr_ty target;
8172
91.7k
        if (
8173
91.7k
            (pattern = or_pattern_rule(p))  // or_pattern
8174
91.7k
            &&
8175
91.7k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
8176
91.7k
            &&
8177
91.7k
            (target = pattern_capture_target_rule(p))  // pattern_capture_target
8178
91.7k
        )
8179
601
        {
8180
601
            D(fprintf(stderr, "%*c+ as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
8181
601
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8182
601
            if (_token == NULL) {
8183
0
                p->level--;
8184
0
                return NULL;
8185
0
            }
8186
601
            int _end_lineno = _token->end_lineno;
8187
601
            UNUSED(_end_lineno); // Only used by EXTRA macro
8188
601
            int _end_col_offset = _token->end_col_offset;
8189
601
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8190
601
            _res = _PyAST_MatchAs ( pattern , target -> v . Name . id , EXTRA );
8191
601
            if (_res == NULL && PyErr_Occurred()) {
8192
0
                p->error_indicator = 1;
8193
0
                p->level--;
8194
0
                return NULL;
8195
0
            }
8196
601
            goto done;
8197
601
        }
8198
91.1k
        p->mark = _mark;
8199
91.1k
        D(fprintf(stderr, "%*c%s as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8200
91.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
8201
91.1k
    }
8202
91.1k
    if (p->call_invalid_rules) { // invalid_as_pattern
8203
49.2k
        if (p->error_indicator) {
8204
1.77k
            p->level--;
8205
1.77k
            return NULL;
8206
1.77k
        }
8207
47.4k
        D(fprintf(stderr, "%*c> as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_as_pattern"));
8208
47.4k
        void *invalid_as_pattern_var;
8209
47.4k
        if (
8210
47.4k
            (invalid_as_pattern_var = invalid_as_pattern_rule(p))  // invalid_as_pattern
8211
47.4k
        )
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.4k
        p->mark = _mark;
8218
47.4k
        D(fprintf(stderr, "%*c%s as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8219
47.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_as_pattern"));
8220
47.4k
    }
8221
89.3k
    _res = NULL;
8222
89.9k
  done:
8223
89.9k
    p->level--;
8224
89.9k
    return _res;
8225
89.3k
}
8226
8227
// or_pattern: '|'.closed_pattern+
8228
static pattern_ty
8229
or_pattern_rule(Parser *p)
8230
273k
{
8231
273k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8232
0
        _Pypegen_stack_overflow(p);
8233
0
    }
8234
273k
    if (p->error_indicator) {
8235
0
        p->level--;
8236
0
        return NULL;
8237
0
    }
8238
273k
    pattern_ty _res = NULL;
8239
273k
    int _mark = p->mark;
8240
273k
    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
273k
    int _start_lineno = p->tokens[_mark]->lineno;
8246
273k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8247
273k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8248
273k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8249
273k
    { // '|'.closed_pattern+
8250
273k
        if (p->error_indicator) {
8251
0
            p->level--;
8252
0
            return NULL;
8253
0
        }
8254
273k
        D(fprintf(stderr, "%*c> or_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|'.closed_pattern+"));
8255
273k
        asdl_pattern_seq* patterns;
8256
273k
        if (
8257
273k
            (patterns = (asdl_pattern_seq*)_gather_40_rule(p))  // '|'.closed_pattern+
8258
273k
        )
8259
172k
        {
8260
172k
            D(fprintf(stderr, "%*c+ or_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'|'.closed_pattern+"));
8261
172k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8262
172k
            if (_token == NULL) {
8263
0
                p->level--;
8264
0
                return NULL;
8265
0
            }
8266
172k
            int _end_lineno = _token->end_lineno;
8267
172k
            UNUSED(_end_lineno); // Only used by EXTRA macro
8268
172k
            int _end_col_offset = _token->end_col_offset;
8269
172k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8270
172k
            _res = asdl_seq_LEN ( patterns ) == 1 ? asdl_seq_GET ( patterns , 0 ) : _PyAST_MatchOr ( patterns , EXTRA );
8271
172k
            if (_res == NULL && PyErr_Occurred()) {
8272
0
                p->error_indicator = 1;
8273
0
                p->level--;
8274
0
                return NULL;
8275
0
            }
8276
172k
            goto done;
8277
172k
        }
8278
101k
        p->mark = _mark;
8279
101k
        D(fprintf(stderr, "%*c%s or_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8280
101k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|'.closed_pattern+"));
8281
101k
    }
8282
0
    _res = NULL;
8283
273k
  done:
8284
273k
    p->level--;
8285
273k
    return _res;
8286
101k
}
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
286k
{
8300
286k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8301
0
        _Pypegen_stack_overflow(p);
8302
0
    }
8303
286k
    if (p->error_indicator) {
8304
0
        p->level--;
8305
0
        return NULL;
8306
0
    }
8307
286k
    pattern_ty _res = NULL;
8308
286k
    if (_PyPegen_is_memoized(p, closed_pattern_type, &_res)) {
8309
230k
        p->level--;
8310
230k
        return _res;
8311
230k
    }
8312
55.9k
    int _mark = p->mark;
8313
55.9k
    { // literal_pattern
8314
55.9k
        if (p->error_indicator) {
8315
0
            p->level--;
8316
0
            return NULL;
8317
0
        }
8318
55.9k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "literal_pattern"));
8319
55.9k
        pattern_ty literal_pattern_var;
8320
55.9k
        if (
8321
55.9k
            (literal_pattern_var = literal_pattern_rule(p))  // literal_pattern
8322
55.9k
        )
8323
5.95k
        {
8324
5.95k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "literal_pattern"));
8325
5.95k
            _res = literal_pattern_var;
8326
5.95k
            goto done;
8327
5.95k
        }
8328
49.9k
        p->mark = _mark;
8329
49.9k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8330
49.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "literal_pattern"));
8331
49.9k
    }
8332
0
    { // capture_pattern
8333
49.9k
        if (p->error_indicator) {
8334
20
            p->level--;
8335
20
            return NULL;
8336
20
        }
8337
49.9k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "capture_pattern"));
8338
49.9k
        pattern_ty capture_pattern_var;
8339
49.9k
        if (
8340
49.9k
            (capture_pattern_var = capture_pattern_rule(p))  // capture_pattern
8341
49.9k
        )
8342
16.5k
        {
8343
16.5k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "capture_pattern"));
8344
16.5k
            _res = capture_pattern_var;
8345
16.5k
            goto done;
8346
16.5k
        }
8347
33.4k
        p->mark = _mark;
8348
33.4k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8349
33.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "capture_pattern"));
8350
33.4k
    }
8351
0
    { // wildcard_pattern
8352
33.4k
        if (p->error_indicator) {
8353
0
            p->level--;
8354
0
            return NULL;
8355
0
        }
8356
33.4k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "wildcard_pattern"));
8357
33.4k
        pattern_ty wildcard_pattern_var;
8358
33.4k
        if (
8359
33.4k
            (wildcard_pattern_var = wildcard_pattern_rule(p))  // wildcard_pattern
8360
33.4k
        )
8361
4.24k
        {
8362
4.24k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "wildcard_pattern"));
8363
4.24k
            _res = wildcard_pattern_var;
8364
4.24k
            goto done;
8365
4.24k
        }
8366
29.2k
        p->mark = _mark;
8367
29.2k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8368
29.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "wildcard_pattern"));
8369
29.2k
    }
8370
0
    { // value_pattern
8371
29.2k
        if (p->error_indicator) {
8372
0
            p->level--;
8373
0
            return NULL;
8374
0
        }
8375
29.2k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "value_pattern"));
8376
29.2k
        pattern_ty value_pattern_var;
8377
29.2k
        if (
8378
29.2k
            (value_pattern_var = value_pattern_rule(p))  // value_pattern
8379
29.2k
        )
8380
309
        {
8381
309
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "value_pattern"));
8382
309
            _res = value_pattern_var;
8383
309
            goto done;
8384
309
        }
8385
28.8k
        p->mark = _mark;
8386
28.8k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8387
28.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "value_pattern"));
8388
28.8k
    }
8389
0
    { // group_pattern
8390
28.8k
        if (p->error_indicator) {
8391
3
            p->level--;
8392
3
            return NULL;
8393
3
        }
8394
28.8k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "group_pattern"));
8395
28.8k
        pattern_ty group_pattern_var;
8396
28.8k
        if (
8397
28.8k
            (group_pattern_var = group_pattern_rule(p))  // group_pattern
8398
28.8k
        )
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
28.3k
        p->mark = _mark;
8405
28.3k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8406
28.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "group_pattern"));
8407
28.3k
    }
8408
0
    { // sequence_pattern
8409
28.3k
        if (p->error_indicator) {
8410
485
            p->level--;
8411
485
            return NULL;
8412
485
        }
8413
27.8k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sequence_pattern"));
8414
27.8k
        pattern_ty sequence_pattern_var;
8415
27.8k
        if (
8416
27.8k
            (sequence_pattern_var = sequence_pattern_rule(p))  // sequence_pattern
8417
27.8k
        )
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
25.6k
        p->mark = _mark;
8424
25.6k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8425
25.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sequence_pattern"));
8426
25.6k
    }
8427
0
    { // mapping_pattern
8428
25.6k
        if (p->error_indicator) {
8429
777
            p->level--;
8430
777
            return NULL;
8431
777
        }
8432
24.8k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "mapping_pattern"));
8433
24.8k
        pattern_ty mapping_pattern_var;
8434
24.8k
        if (
8435
24.8k
            (mapping_pattern_var = mapping_pattern_rule(p))  // mapping_pattern
8436
24.8k
        )
8437
2.72k
        {
8438
2.72k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "mapping_pattern"));
8439
2.72k
            _res = mapping_pattern_var;
8440
2.72k
            goto done;
8441
2.72k
        }
8442
22.1k
        p->mark = _mark;
8443
22.1k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8444
22.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "mapping_pattern"));
8445
22.1k
    }
8446
0
    { // class_pattern
8447
22.1k
        if (p->error_indicator) {
8448
497
            p->level--;
8449
497
            return NULL;
8450
497
        }
8451
21.6k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "class_pattern"));
8452
21.6k
        pattern_ty class_pattern_var;
8453
21.6k
        if (
8454
21.6k
            (class_pattern_var = class_pattern_rule(p))  // class_pattern
8455
21.6k
        )
8456
2.75k
        {
8457
2.75k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "class_pattern"));
8458
2.75k
            _res = class_pattern_var;
8459
2.75k
            goto done;
8460
2.75k
        }
8461
18.8k
        p->mark = _mark;
8462
18.8k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8463
18.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "class_pattern"));
8464
18.8k
    }
8465
0
    _res = NULL;
8466
54.1k
  done:
8467
54.1k
    _PyPegen_insert_memo(p, _mark, closed_pattern_type, _res);
8468
54.1k
    p->level--;
8469
54.1k
    return _res;
8470
18.8k
}
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
55.9k
{
8482
55.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8483
0
        _Pypegen_stack_overflow(p);
8484
0
    }
8485
55.9k
    if (p->error_indicator) {
8486
0
        p->level--;
8487
0
        return NULL;
8488
0
    }
8489
55.9k
    pattern_ty _res = NULL;
8490
55.9k
    int _mark = p->mark;
8491
55.9k
    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
55.9k
    int _start_lineno = p->tokens[_mark]->lineno;
8497
55.9k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8498
55.9k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8499
55.9k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8500
55.9k
    { // signed_number !('+' | '-')
8501
55.9k
        if (p->error_indicator) {
8502
0
            p->level--;
8503
0
            return NULL;
8504
0
        }
8505
55.9k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8506
55.9k
        expr_ty value;
8507
55.9k
        if (
8508
55.9k
            (value = signed_number_rule(p))  // signed_number
8509
55.9k
            &&
8510
55.9k
            _PyPegen_lookahead(0, _tmp_41_rule, p)
8511
55.9k
        )
8512
4.68k
        {
8513
4.68k
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8514
4.68k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8515
4.68k
            if (_token == NULL) {
8516
0
                p->level--;
8517
0
                return NULL;
8518
0
            }
8519
4.68k
            int _end_lineno = _token->end_lineno;
8520
4.68k
            UNUSED(_end_lineno); // Only used by EXTRA macro
8521
4.68k
            int _end_col_offset = _token->end_col_offset;
8522
4.68k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8523
4.68k
            _res = _PyAST_MatchValue ( value , EXTRA );
8524
4.68k
            if (_res == NULL && PyErr_Occurred()) {
8525
0
                p->error_indicator = 1;
8526
0
                p->level--;
8527
0
                return NULL;
8528
0
            }
8529
4.68k
            goto done;
8530
4.68k
        }
8531
51.2k
        p->mark = _mark;
8532
51.2k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8533
51.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_number !('+' | '-')"));
8534
51.2k
    }
8535
0
    { // complex_number
8536
51.2k
        if (p->error_indicator) {
8537
1
            p->level--;
8538
1
            return NULL;
8539
1
        }
8540
51.2k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "complex_number"));
8541
51.2k
        expr_ty value;
8542
51.2k
        if (
8543
51.2k
            (value = complex_number_rule(p))  // complex_number
8544
51.2k
        )
8545
582
        {
8546
582
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "complex_number"));
8547
582
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8548
582
            if (_token == NULL) {
8549
0
                p->level--;
8550
0
                return NULL;
8551
0
            }
8552
582
            int _end_lineno = _token->end_lineno;
8553
582
            UNUSED(_end_lineno); // Only used by EXTRA macro
8554
582
            int _end_col_offset = _token->end_col_offset;
8555
582
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8556
582
            _res = _PyAST_MatchValue ( value , EXTRA );
8557
582
            if (_res == NULL && PyErr_Occurred()) {
8558
0
                p->error_indicator = 1;
8559
0
                p->level--;
8560
0
                return NULL;
8561
0
            }
8562
582
            goto done;
8563
582
        }
8564
50.6k
        p->mark = _mark;
8565
50.6k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8566
50.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "complex_number"));
8567
50.6k
    }
8568
0
    { // strings
8569
50.6k
        if (p->error_indicator) {
8570
9
            p->level--;
8571
9
            return NULL;
8572
9
        }
8573
50.6k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "strings"));
8574
50.6k
        expr_ty value;
8575
50.6k
        if (
8576
50.6k
            (value = strings_rule(p))  // strings
8577
50.6k
        )
8578
73
        {
8579
73
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "strings"));
8580
73
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8581
73
            if (_token == NULL) {
8582
0
                p->level--;
8583
0
                return NULL;
8584
0
            }
8585
73
            int _end_lineno = _token->end_lineno;
8586
73
            UNUSED(_end_lineno); // Only used by EXTRA macro
8587
73
            int _end_col_offset = _token->end_col_offset;
8588
73
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8589
73
            _res = _PyAST_MatchValue ( value , EXTRA );
8590
73
            if (_res == NULL && PyErr_Occurred()) {
8591
0
                p->error_indicator = 1;
8592
0
                p->level--;
8593
0
                return NULL;
8594
0
            }
8595
73
            goto done;
8596
73
        }
8597
50.5k
        p->mark = _mark;
8598
50.5k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8599
50.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "strings"));
8600
50.5k
    }
8601
0
    { // 'None'
8602
50.5k
        if (p->error_indicator) {
8603
10
            p->level--;
8604
10
            return NULL;
8605
10
        }
8606
50.5k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
8607
50.5k
        Token * _keyword;
8608
50.5k
        if (
8609
50.5k
            (_keyword = _PyPegen_expect_token(p, 624))  // token='None'
8610
50.5k
        )
8611
253
        {
8612
253
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
8613
253
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8614
253
            if (_token == NULL) {
8615
0
                p->level--;
8616
0
                return NULL;
8617
0
            }
8618
253
            int _end_lineno = _token->end_lineno;
8619
253
            UNUSED(_end_lineno); // Only used by EXTRA macro
8620
253
            int _end_col_offset = _token->end_col_offset;
8621
253
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8622
253
            _res = _PyAST_MatchSingleton ( Py_None , EXTRA );
8623
253
            if (_res == NULL && PyErr_Occurred()) {
8624
0
                p->error_indicator = 1;
8625
0
                p->level--;
8626
0
                return NULL;
8627
0
            }
8628
253
            goto done;
8629
253
        }
8630
50.3k
        p->mark = _mark;
8631
50.3k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8632
50.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
8633
50.3k
    }
8634
0
    { // 'True'
8635
50.3k
        if (p->error_indicator) {
8636
0
            p->level--;
8637
0
            return NULL;
8638
0
        }
8639
50.3k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
8640
50.3k
        Token * _keyword;
8641
50.3k
        if (
8642
50.3k
            (_keyword = _PyPegen_expect_token(p, 623))  // token='True'
8643
50.3k
        )
8644
74
        {
8645
74
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
8646
74
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8647
74
            if (_token == NULL) {
8648
0
                p->level--;
8649
0
                return NULL;
8650
0
            }
8651
74
            int _end_lineno = _token->end_lineno;
8652
74
            UNUSED(_end_lineno); // Only used by EXTRA macro
8653
74
            int _end_col_offset = _token->end_col_offset;
8654
74
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8655
74
            _res = _PyAST_MatchSingleton ( Py_True , EXTRA );
8656
74
            if (_res == NULL && PyErr_Occurred()) {
8657
0
                p->error_indicator = 1;
8658
0
                p->level--;
8659
0
                return NULL;
8660
0
            }
8661
74
            goto done;
8662
74
        }
8663
50.2k
        p->mark = _mark;
8664
50.2k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8665
50.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
8666
50.2k
    }
8667
0
    { // 'False'
8668
50.2k
        if (p->error_indicator) {
8669
0
            p->level--;
8670
0
            return NULL;
8671
0
        }
8672
50.2k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
8673
50.2k
        Token * _keyword;
8674
50.2k
        if (
8675
50.2k
            (_keyword = _PyPegen_expect_token(p, 625))  // token='False'
8676
50.2k
        )
8677
296
        {
8678
296
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
8679
296
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8680
296
            if (_token == NULL) {
8681
0
                p->level--;
8682
0
                return NULL;
8683
0
            }
8684
296
            int _end_lineno = _token->end_lineno;
8685
296
            UNUSED(_end_lineno); // Only used by EXTRA macro
8686
296
            int _end_col_offset = _token->end_col_offset;
8687
296
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8688
296
            _res = _PyAST_MatchSingleton ( Py_False , EXTRA );
8689
296
            if (_res == NULL && PyErr_Occurred()) {
8690
0
                p->error_indicator = 1;
8691
0
                p->level--;
8692
0
                return NULL;
8693
0
            }
8694
296
            goto done;
8695
296
        }
8696
49.9k
        p->mark = _mark;
8697
49.9k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8698
49.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
8699
49.9k
    }
8700
0
    _res = NULL;
8701
55.9k
  done:
8702
55.9k
    p->level--;
8703
55.9k
    return _res;
8704
49.9k
}
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.43k
{
8716
8.43k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8717
0
        _Pypegen_stack_overflow(p);
8718
0
    }
8719
8.43k
    if (p->error_indicator) {
8720
0
        p->level--;
8721
0
        return NULL;
8722
0
    }
8723
8.43k
    expr_ty _res = NULL;
8724
8.43k
    int _mark = p->mark;
8725
8.43k
    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.42k
    int _start_lineno = p->tokens[_mark]->lineno;
8731
8.42k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8732
8.42k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8733
8.42k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8734
8.42k
    { // signed_number !('+' | '-')
8735
8.42k
        if (p->error_indicator) {
8736
0
            p->level--;
8737
0
            return NULL;
8738
0
        }
8739
8.42k
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8740
8.42k
        expr_ty signed_number_var;
8741
8.42k
        if (
8742
8.42k
            (signed_number_var = signed_number_rule(p))  // signed_number
8743
8.42k
            &&
8744
8.42k
            _PyPegen_lookahead(0, _tmp_41_rule, p)
8745
8.42k
        )
8746
5.18k
        {
8747
5.18k
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8748
5.18k
            _res = signed_number_var;
8749
5.18k
            goto done;
8750
5.18k
        }
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.67k
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
8780
2.67k
        expr_ty strings_var;
8781
2.67k
        if (
8782
2.67k
            _PyPegen_lookahead(1, _tmp_42_rule, p)
8783
2.67k
            &&
8784
2.67k
            (strings_var = strings_rule(p))  // strings
8785
2.67k
        )
8786
1.79k
        {
8787
1.79k
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
8788
1.79k
            _res = strings_var;
8789
1.79k
            goto done;
8790
1.79k
        }
8791
873
        p->mark = _mark;
8792
873
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8793
873
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
8794
873
    }
8795
0
    { // 'None'
8796
873
        if (p->error_indicator) {
8797
4
            p->level--;
8798
4
            return NULL;
8799
4
        }
8800
869
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
8801
869
        Token * _keyword;
8802
869
        if (
8803
869
            (_keyword = _PyPegen_expect_token(p, 624))  // token='None'
8804
869
        )
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
862
        p->mark = _mark;
8825
862
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8826
862
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
8827
862
    }
8828
0
    { // 'True'
8829
862
        if (p->error_indicator) {
8830
0
            p->level--;
8831
0
            return NULL;
8832
0
        }
8833
862
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
8834
862
        Token * _keyword;
8835
862
        if (
8836
862
            (_keyword = _PyPegen_expect_token(p, 623))  // token='True'
8837
862
        )
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
796
        p->mark = _mark;
8858
796
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8859
796
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
8860
796
    }
8861
0
    { // 'False'
8862
796
        if (p->error_indicator) {
8863
0
            p->level--;
8864
0
            return NULL;
8865
0
        }
8866
796
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
8867
796
        Token * _keyword;
8868
796
        if (
8869
796
            (_keyword = _PyPegen_expect_token(p, 625))  // token='False'
8870
796
        )
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
786
        p->mark = _mark;
8891
786
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8892
786
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
8893
786
    }
8894
0
    _res = NULL;
8895
8.41k
  done:
8896
8.41k
    p->level--;
8897
8.41k
    return _res;
8898
786
}
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
54.4k
{
8906
54.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8907
0
        _Pypegen_stack_overflow(p);
8908
0
    }
8909
54.4k
    if (p->error_indicator) {
8910
0
        p->level--;
8911
0
        return NULL;
8912
0
    }
8913
54.4k
    expr_ty _res = NULL;
8914
54.4k
    int _mark = p->mark;
8915
54.4k
    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
54.4k
    int _start_lineno = p->tokens[_mark]->lineno;
8921
54.4k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8922
54.4k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8923
54.4k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8924
54.4k
    { // signed_real_number '+' imaginary_number
8925
54.4k
        if (p->error_indicator) {
8926
0
            p->level--;
8927
0
            return NULL;
8928
0
        }
8929
54.4k
        D(fprintf(stderr, "%*c> complex_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_real_number '+' imaginary_number"));
8930
54.4k
        Token * _literal;
8931
54.4k
        expr_ty imag;
8932
54.4k
        expr_ty real;
8933
54.4k
        if (
8934
54.4k
            (real = signed_real_number_rule(p))  // signed_real_number
8935
54.4k
            &&
8936
54.4k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
8937
54.4k
            &&
8938
54.4k
            (imag = imaginary_number_rule(p))  // imaginary_number
8939
54.4k
        )
8940
427
        {
8941
427
            D(fprintf(stderr, "%*c+ complex_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_real_number '+' imaginary_number"));
8942
427
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8943
427
            if (_token == NULL) {
8944
0
                p->level--;
8945
0
                return NULL;
8946
0
            }
8947
427
            int _end_lineno = _token->end_lineno;
8948
427
            UNUSED(_end_lineno); // Only used by EXTRA macro
8949
427
            int _end_col_offset = _token->end_col_offset;
8950
427
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8951
427
            _res = _PyAST_BinOp ( real , Add , imag , EXTRA );
8952
427
            if (_res == NULL && PyErr_Occurred()) {
8953
0
                p->error_indicator = 1;
8954
0
                p->level--;
8955
0
                return NULL;
8956
0
            }
8957
427
            goto done;
8958
427
        }
8959
54.0k
        p->mark = _mark;
8960
54.0k
        D(fprintf(stderr, "%*c%s complex_number[%d-%d]: %s failed!\n", p->level, ' ',
8961
54.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_real_number '+' imaginary_number"));
8962
54.0k
    }
8963
0
    { // signed_real_number '-' imaginary_number
8964
54.0k
        if (p->error_indicator) {
8965
7
            p->level--;
8966
7
            return NULL;
8967
7
        }
8968
54.0k
        D(fprintf(stderr, "%*c> complex_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_real_number '-' imaginary_number"));
8969
54.0k
        Token * _literal;
8970
54.0k
        expr_ty imag;
8971
54.0k
        expr_ty real;
8972
54.0k
        if (
8973
54.0k
            (real = signed_real_number_rule(p))  // signed_real_number
8974
54.0k
            &&
8975
54.0k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
8976
54.0k
            &&
8977
54.0k
            (imag = imaginary_number_rule(p))  // imaginary_number
8978
54.0k
        )
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
53.3k
        p->mark = _mark;
8999
53.3k
        D(fprintf(stderr, "%*c%s complex_number[%d-%d]: %s failed!\n", p->level, ' ',
9000
53.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_real_number '-' imaginary_number"));
9001
53.3k
    }
9002
0
    _res = NULL;
9003
54.4k
  done:
9004
54.4k
    p->level--;
9005
54.4k
    return _res;
9006
53.3k
}
9007
9008
// signed_number: NUMBER | '-' NUMBER
9009
static expr_ty
9010
signed_number_rule(Parser *p)
9011
64.3k
{
9012
64.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9013
0
        _Pypegen_stack_overflow(p);
9014
0
    }
9015
64.3k
    if (p->error_indicator) {
9016
0
        p->level--;
9017
0
        return NULL;
9018
0
    }
9019
64.3k
    expr_ty _res = NULL;
9020
64.3k
    int _mark = p->mark;
9021
64.3k
    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
64.3k
    int _start_lineno = p->tokens[_mark]->lineno;
9027
64.3k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9028
64.3k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9029
64.3k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9030
64.3k
    { // NUMBER
9031
64.3k
        if (p->error_indicator) {
9032
0
            p->level--;
9033
0
            return NULL;
9034
0
        }
9035
64.3k
        D(fprintf(stderr, "%*c> signed_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9036
64.3k
        expr_ty number_var;
9037
64.3k
        if (
9038
64.3k
            (number_var = _PyPegen_number_token(p))  // NUMBER
9039
64.3k
        )
9040
9.35k
        {
9041
9.35k
            D(fprintf(stderr, "%*c+ signed_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9042
9.35k
            _res = number_var;
9043
9.35k
            goto done;
9044
9.35k
        }
9045
55.0k
        p->mark = _mark;
9046
55.0k
        D(fprintf(stderr, "%*c%s signed_number[%d-%d]: %s failed!\n", p->level, ' ',
9047
55.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
9048
55.0k
    }
9049
0
    { // '-' NUMBER
9050
55.0k
        if (p->error_indicator) {
9051
0
            p->level--;
9052
0
            return NULL;
9053
0
        }
9054
55.0k
        D(fprintf(stderr, "%*c> signed_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' NUMBER"));
9055
55.0k
        Token * _literal;
9056
55.0k
        expr_ty number;
9057
55.0k
        if (
9058
55.0k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
9059
55.0k
            &&
9060
55.0k
            (number = _PyPegen_number_token(p))  // NUMBER
9061
55.0k
        )
9062
1.70k
        {
9063
1.70k
            D(fprintf(stderr, "%*c+ signed_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' NUMBER"));
9064
1.70k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9065
1.70k
            if (_token == NULL) {
9066
0
                p->level--;
9067
0
                return NULL;
9068
0
            }
9069
1.70k
            int _end_lineno = _token->end_lineno;
9070
1.70k
            UNUSED(_end_lineno); // Only used by EXTRA macro
9071
1.70k
            int _end_col_offset = _token->end_col_offset;
9072
1.70k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9073
1.70k
            _res = _PyAST_UnaryOp ( USub , number , EXTRA );
9074
1.70k
            if (_res == NULL && PyErr_Occurred()) {
9075
0
                p->error_indicator = 1;
9076
0
                p->level--;
9077
0
                return NULL;
9078
0
            }
9079
1.70k
            goto done;
9080
1.70k
        }
9081
53.3k
        p->mark = _mark;
9082
53.3k
        D(fprintf(stderr, "%*c%s signed_number[%d-%d]: %s failed!\n", p->level, ' ',
9083
53.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' NUMBER"));
9084
53.3k
    }
9085
0
    _res = NULL;
9086
64.3k
  done:
9087
64.3k
    p->level--;
9088
64.3k
    return _res;
9089
53.3k
}
9090
9091
// signed_real_number: real_number | '-' real_number
9092
static expr_ty
9093
signed_real_number_rule(Parser *p)
9094
108k
{
9095
108k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9096
0
        _Pypegen_stack_overflow(p);
9097
0
    }
9098
108k
    if (p->error_indicator) {
9099
0
        p->level--;
9100
0
        return NULL;
9101
0
    }
9102
108k
    expr_ty _res = NULL;
9103
108k
    int _mark = p->mark;
9104
108k
    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
108k
    int _start_lineno = p->tokens[_mark]->lineno;
9110
108k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9111
108k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9112
108k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9113
108k
    { // real_number
9114
108k
        if (p->error_indicator) {
9115
0
            p->level--;
9116
0
            return NULL;
9117
0
        }
9118
108k
        D(fprintf(stderr, "%*c> signed_real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "real_number"));
9119
108k
        expr_ty real_number_var;
9120
108k
        if (
9121
108k
            (real_number_var = real_number_rule(p))  // real_number
9122
108k
        )
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
107k
        p->mark = _mark;
9129
107k
        D(fprintf(stderr, "%*c%s signed_real_number[%d-%d]: %s failed!\n", p->level, ' ',
9130
107k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "real_number"));
9131
107k
    }
9132
0
    { // '-' real_number
9133
107k
        if (p->error_indicator) {
9134
1
            p->level--;
9135
1
            return NULL;
9136
1
        }
9137
107k
        D(fprintf(stderr, "%*c> signed_real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' real_number"));
9138
107k
        Token * _literal;
9139
107k
        expr_ty real;
9140
107k
        if (
9141
107k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
9142
107k
            &&
9143
107k
            (real = real_number_rule(p))  // real_number
9144
107k
        )
9145
669
        {
9146
669
            D(fprintf(stderr, "%*c+ signed_real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' real_number"));
9147
669
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9148
669
            if (_token == NULL) {
9149
0
                p->level--;
9150
0
                return NULL;
9151
0
            }
9152
669
            int _end_lineno = _token->end_lineno;
9153
669
            UNUSED(_end_lineno); // Only used by EXTRA macro
9154
669
            int _end_col_offset = _token->end_col_offset;
9155
669
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9156
669
            _res = _PyAST_UnaryOp ( USub , real , EXTRA );
9157
669
            if (_res == NULL && PyErr_Occurred()) {
9158
0
                p->error_indicator = 1;
9159
0
                p->level--;
9160
0
                return NULL;
9161
0
            }
9162
669
            goto done;
9163
669
        }
9164
106k
        p->mark = _mark;
9165
106k
        D(fprintf(stderr, "%*c%s signed_real_number[%d-%d]: %s failed!\n", p->level, ' ',
9166
106k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' real_number"));
9167
106k
    }
9168
0
    _res = NULL;
9169
108k
  done:
9170
108k
    p->level--;
9171
108k
    return _res;
9172
106k
}
9173
9174
// real_number: NUMBER
9175
static expr_ty
9176
real_number_rule(Parser *p)
9177
109k
{
9178
109k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9179
0
        _Pypegen_stack_overflow(p);
9180
0
    }
9181
109k
    if (p->error_indicator) {
9182
0
        p->level--;
9183
0
        return NULL;
9184
0
    }
9185
109k
    expr_ty _res = NULL;
9186
109k
    int _mark = p->mark;
9187
109k
    { // NUMBER
9188
109k
        if (p->error_indicator) {
9189
0
            p->level--;
9190
0
            return NULL;
9191
0
        }
9192
109k
        D(fprintf(stderr, "%*c> real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9193
109k
        expr_ty real;
9194
109k
        if (
9195
109k
            (real = _PyPegen_number_token(p))  // NUMBER
9196
109k
        )
9197
1.94k
        {
9198
1.94k
            D(fprintf(stderr, "%*c+ real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9199
1.94k
            _res = _PyPegen_ensure_real ( p , real );
9200
1.94k
            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.94k
        }
9207
107k
        p->mark = _mark;
9208
107k
        D(fprintf(stderr, "%*c%s real_number[%d-%d]: %s failed!\n", p->level, ' ',
9209
107k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
9210
107k
    }
9211
0
    _res = NULL;
9212
109k
  done:
9213
109k
    p->level--;
9214
109k
    return _res;
9215
107k
}
9216
9217
// imaginary_number: NUMBER
9218
static expr_ty
9219
imaginary_number_rule(Parser *p)
9220
1.18k
{
9221
1.18k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9222
0
        _Pypegen_stack_overflow(p);
9223
0
    }
9224
1.18k
    if (p->error_indicator) {
9225
0
        p->level--;
9226
0
        return NULL;
9227
0
    }
9228
1.18k
    expr_ty _res = NULL;
9229
1.18k
    int _mark = p->mark;
9230
1.18k
    { // NUMBER
9231
1.18k
        if (p->error_indicator) {
9232
0
            p->level--;
9233
0
            return NULL;
9234
0
        }
9235
1.18k
        D(fprintf(stderr, "%*c> imaginary_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9236
1.18k
        expr_ty imag;
9237
1.18k
        if (
9238
1.18k
            (imag = _PyPegen_number_token(p))  // NUMBER
9239
1.18k
        )
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
5
                p->error_indicator = 1;
9245
5
                p->level--;
9246
5
                return NULL;
9247
5
            }
9248
1.15k
            goto done;
9249
1.15k
        }
9250
31
        p->mark = _mark;
9251
31
        D(fprintf(stderr, "%*c%s imaginary_number[%d-%d]: %s failed!\n", p->level, ' ',
9252
31
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
9253
31
    }
9254
0
    _res = NULL;
9255
1.18k
  done:
9256
1.18k
    p->level--;
9257
1.18k
    return _res;
9258
31
}
9259
9260
// capture_pattern: pattern_capture_target
9261
static pattern_ty
9262
capture_pattern_rule(Parser *p)
9263
49.9k
{
9264
49.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9265
0
        _Pypegen_stack_overflow(p);
9266
0
    }
9267
49.9k
    if (p->error_indicator) {
9268
0
        p->level--;
9269
0
        return NULL;
9270
0
    }
9271
49.9k
    pattern_ty _res = NULL;
9272
49.9k
    int _mark = p->mark;
9273
49.9k
    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
49.9k
    int _start_lineno = p->tokens[_mark]->lineno;
9279
49.9k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9280
49.9k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9281
49.9k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9282
49.9k
    { // pattern_capture_target
9283
49.9k
        if (p->error_indicator) {
9284
0
            p->level--;
9285
0
            return NULL;
9286
0
        }
9287
49.9k
        D(fprintf(stderr, "%*c> capture_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern_capture_target"));
9288
49.9k
        expr_ty target;
9289
49.9k
        if (
9290
49.9k
            (target = pattern_capture_target_rule(p))  // pattern_capture_target
9291
49.9k
        )
9292
16.5k
        {
9293
16.5k
            D(fprintf(stderr, "%*c+ capture_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern_capture_target"));
9294
16.5k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9295
16.5k
            if (_token == NULL) {
9296
0
                p->level--;
9297
0
                return NULL;
9298
0
            }
9299
16.5k
            int _end_lineno = _token->end_lineno;
9300
16.5k
            UNUSED(_end_lineno); // Only used by EXTRA macro
9301
16.5k
            int _end_col_offset = _token->end_col_offset;
9302
16.5k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9303
16.5k
            _res = _PyAST_MatchAs ( NULL , target -> v . Name . id , EXTRA );
9304
16.5k
            if (_res == NULL && PyErr_Occurred()) {
9305
0
                p->error_indicator = 1;
9306
0
                p->level--;
9307
0
                return NULL;
9308
0
            }
9309
16.5k
            goto done;
9310
16.5k
        }
9311
33.4k
        p->mark = _mark;
9312
33.4k
        D(fprintf(stderr, "%*c%s capture_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9313
33.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern_capture_target"));
9314
33.4k
    }
9315
0
    _res = NULL;
9316
49.9k
  done:
9317
49.9k
    p->level--;
9318
49.9k
    return _res;
9319
33.4k
}
9320
9321
// pattern_capture_target: !"_" NAME !('.' | '(' | '=')
9322
static expr_ty
9323
pattern_capture_target_rule(Parser *p)
9324
53.6k
{
9325
53.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9326
0
        _Pypegen_stack_overflow(p);
9327
0
    }
9328
53.6k
    if (p->error_indicator) {
9329
0
        p->level--;
9330
0
        return NULL;
9331
0
    }
9332
53.6k
    expr_ty _res = NULL;
9333
53.6k
    int _mark = p->mark;
9334
53.6k
    { // !"_" NAME !('.' | '(' | '=')
9335
53.6k
        if (p->error_indicator) {
9336
0
            p->level--;
9337
0
            return NULL;
9338
0
        }
9339
53.6k
        D(fprintf(stderr, "%*c> pattern_capture_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
9340
53.6k
        expr_ty name;
9341
53.6k
        if (
9342
53.6k
            _PyPegen_lookahead_with_string(0, _PyPegen_expect_soft_keyword, p, "_")
9343
53.6k
            &&
9344
53.6k
            (name = _PyPegen_name_token(p))  // NAME
9345
53.6k
            &&
9346
53.6k
            _PyPegen_lookahead(0, _tmp_43_rule, p)
9347
53.6k
        )
9348
19.2k
        {
9349
19.2k
            D(fprintf(stderr, "%*c+ pattern_capture_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
9350
19.2k
            _res = _PyPegen_set_expr_context ( p , name , Store );
9351
19.2k
            if (_res == NULL && PyErr_Occurred()) {
9352
0
                p->error_indicator = 1;
9353
0
                p->level--;
9354
0
                return NULL;
9355
0
            }
9356
19.2k
            goto done;
9357
19.2k
        }
9358
34.3k
        p->mark = _mark;
9359
34.3k
        D(fprintf(stderr, "%*c%s pattern_capture_target[%d-%d]: %s failed!\n", p->level, ' ',
9360
34.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
9361
34.3k
    }
9362
0
    _res = NULL;
9363
53.6k
  done:
9364
53.6k
    p->level--;
9365
53.6k
    return _res;
9366
34.3k
}
9367
9368
// wildcard_pattern: "_"
9369
static pattern_ty
9370
wildcard_pattern_rule(Parser *p)
9371
34.3k
{
9372
34.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9373
0
        _Pypegen_stack_overflow(p);
9374
0
    }
9375
34.3k
    if (p->error_indicator) {
9376
0
        p->level--;
9377
0
        return NULL;
9378
0
    }
9379
34.3k
    pattern_ty _res = NULL;
9380
34.3k
    int _mark = p->mark;
9381
34.3k
    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
34.3k
    int _start_lineno = p->tokens[_mark]->lineno;
9387
34.3k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9388
34.3k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9389
34.3k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9390
34.3k
    { // "_"
9391
34.3k
        if (p->error_indicator) {
9392
0
            p->level--;
9393
0
            return NULL;
9394
0
        }
9395
34.3k
        D(fprintf(stderr, "%*c> wildcard_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"_\""));
9396
34.3k
        expr_ty _keyword;
9397
34.3k
        if (
9398
34.3k
            (_keyword = _PyPegen_expect_soft_keyword(p, "_"))  // soft_keyword='"_"'
9399
34.3k
        )
9400
5.11k
        {
9401
5.11k
            D(fprintf(stderr, "%*c+ wildcard_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"_\""));
9402
5.11k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9403
5.11k
            if (_token == NULL) {
9404
0
                p->level--;
9405
0
                return NULL;
9406
0
            }
9407
5.11k
            int _end_lineno = _token->end_lineno;
9408
5.11k
            UNUSED(_end_lineno); // Only used by EXTRA macro
9409
5.11k
            int _end_col_offset = _token->end_col_offset;
9410
5.11k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9411
5.11k
            _res = _PyAST_MatchAs ( NULL , NULL , EXTRA );
9412
5.11k
            if (_res == NULL && PyErr_Occurred()) {
9413
0
                p->error_indicator = 1;
9414
0
                p->level--;
9415
0
                return NULL;
9416
0
            }
9417
5.11k
            goto done;
9418
5.11k
        }
9419
29.2k
        p->mark = _mark;
9420
29.2k
        D(fprintf(stderr, "%*c%s wildcard_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9421
29.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"_\""));
9422
29.2k
    }
9423
0
    _res = NULL;
9424
34.3k
  done:
9425
34.3k
    p->level--;
9426
34.3k
    return _res;
9427
29.2k
}
9428
9429
// value_pattern: attr !('.' | '(' | '=')
9430
static pattern_ty
9431
value_pattern_rule(Parser *p)
9432
29.2k
{
9433
29.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9434
0
        _Pypegen_stack_overflow(p);
9435
0
    }
9436
29.2k
    if (p->error_indicator) {
9437
0
        p->level--;
9438
0
        return NULL;
9439
0
    }
9440
29.2k
    pattern_ty _res = NULL;
9441
29.2k
    int _mark = p->mark;
9442
29.2k
    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
29.2k
    int _start_lineno = p->tokens[_mark]->lineno;
9448
29.2k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9449
29.2k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9450
29.2k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9451
29.2k
    { // attr !('.' | '(' | '=')
9452
29.2k
        if (p->error_indicator) {
9453
0
            p->level--;
9454
0
            return NULL;
9455
0
        }
9456
29.2k
        D(fprintf(stderr, "%*c> value_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr !('.' | '(' | '=')"));
9457
29.2k
        expr_ty attr;
9458
29.2k
        if (
9459
29.2k
            (attr = attr_rule(p))  // attr
9460
29.2k
            &&
9461
29.2k
            _PyPegen_lookahead(0, _tmp_43_rule, p)
9462
29.2k
        )
9463
309
        {
9464
309
            D(fprintf(stderr, "%*c+ value_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr !('.' | '(' | '=')"));
9465
309
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9466
309
            if (_token == NULL) {
9467
0
                p->level--;
9468
0
                return NULL;
9469
0
            }
9470
309
            int _end_lineno = _token->end_lineno;
9471
309
            UNUSED(_end_lineno); // Only used by EXTRA macro
9472
309
            int _end_col_offset = _token->end_col_offset;
9473
309
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9474
309
            _res = _PyAST_MatchValue ( attr , EXTRA );
9475
309
            if (_res == NULL && PyErr_Occurred()) {
9476
0
                p->error_indicator = 1;
9477
0
                p->level--;
9478
0
                return NULL;
9479
0
            }
9480
309
            goto done;
9481
309
        }
9482
28.8k
        p->mark = _mark;
9483
28.8k
        D(fprintf(stderr, "%*c%s value_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9484
28.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr !('.' | '(' | '=')"));
9485
28.8k
    }
9486
0
    _res = NULL;
9487
29.2k
  done:
9488
29.2k
    p->level--;
9489
29.2k
    return _res;
9490
28.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
149k
{
9498
149k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9499
0
        _Pypegen_stack_overflow(p);
9500
0
    }
9501
149k
    expr_ty _res = NULL;
9502
149k
    if (_PyPegen_is_memoized(p, attr_type, &_res)) {
9503
119k
        p->level--;
9504
119k
        return _res;
9505
119k
    }
9506
29.7k
    int _mark = p->mark;
9507
29.7k
    int _resmark = p->mark;
9508
30.7k
    while (1) {
9509
30.7k
        int tmpvar_1 = _PyPegen_update_memo(p, _mark, attr_type, _res);
9510
30.7k
        if (tmpvar_1) {
9511
0
            p->level--;
9512
0
            return _res;
9513
0
        }
9514
30.7k
        p->mark = _mark;
9515
30.7k
        void *_raw = attr_raw(p);
9516
30.7k
        if (p->error_indicator) {
9517
9
            p->level--;
9518
9
            return NULL;
9519
9
        }
9520
30.6k
        if (_raw == NULL || p->mark <= _resmark)
9521
29.7k
            break;
9522
910
        _resmark = p->mark;
9523
910
        _res = _raw;
9524
910
    }
9525
29.7k
    p->mark = _resmark;
9526
29.7k
    p->level--;
9527
29.7k
    return _res;
9528
29.7k
}
9529
static expr_ty
9530
attr_raw(Parser *p)
9531
30.7k
{
9532
30.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9533
0
        _Pypegen_stack_overflow(p);
9534
0
    }
9535
30.7k
    if (p->error_indicator) {
9536
0
        p->level--;
9537
0
        return NULL;
9538
0
    }
9539
30.7k
    expr_ty _res = NULL;
9540
30.7k
    int _mark = p->mark;
9541
30.7k
    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
30.7k
    int _start_lineno = p->tokens[_mark]->lineno;
9547
30.7k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9548
30.7k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9549
30.7k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9550
30.7k
    { // name_or_attr '.' NAME
9551
30.7k
        if (p->error_indicator) {
9552
0
            p->level--;
9553
0
            return NULL;
9554
0
        }
9555
30.7k
        D(fprintf(stderr, "%*c> attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '.' NAME"));
9556
30.7k
        Token * _literal;
9557
30.7k
        expr_ty attr;
9558
30.7k
        expr_ty value;
9559
30.7k
        if (
9560
30.7k
            (value = name_or_attr_rule(p))  // name_or_attr
9561
30.7k
            &&
9562
30.7k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
9563
30.7k
            &&
9564
30.7k
            (attr = _PyPegen_name_token(p))  // NAME
9565
30.7k
        )
9566
910
        {
9567
910
            D(fprintf(stderr, "%*c+ attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '.' NAME"));
9568
910
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9569
910
            if (_token == NULL) {
9570
0
                p->level--;
9571
0
                return NULL;
9572
0
            }
9573
910
            int _end_lineno = _token->end_lineno;
9574
910
            UNUSED(_end_lineno); // Only used by EXTRA macro
9575
910
            int _end_col_offset = _token->end_col_offset;
9576
910
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9577
910
            _res = _PyAST_Attribute ( value , attr -> v . Name . id , Load , EXTRA );
9578
910
            if (_res == NULL && PyErr_Occurred()) {
9579
0
                p->error_indicator = 1;
9580
0
                p->level--;
9581
0
                return NULL;
9582
0
            }
9583
910
            goto done;
9584
910
        }
9585
29.7k
        p->mark = _mark;
9586
29.7k
        D(fprintf(stderr, "%*c%s attr[%d-%d]: %s failed!\n", p->level, ' ',
9587
29.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '.' NAME"));
9588
29.7k
    }
9589
0
    _res = NULL;
9590
30.7k
  done:
9591
30.7k
    p->level--;
9592
30.7k
    return _res;
9593
29.7k
}
9594
9595
// Left-recursive
9596
// name_or_attr: attr | NAME
9597
static expr_ty
9598
name_or_attr_rule(Parser *p)
9599
119k
{
9600
119k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9601
0
        _Pypegen_stack_overflow(p);
9602
0
    }
9603
119k
    if (p->error_indicator) {
9604
0
        p->level--;
9605
0
        return NULL;
9606
0
    }
9607
119k
    expr_ty _res = NULL;
9608
119k
    int _mark = p->mark;
9609
119k
    { // attr
9610
119k
        if (p->error_indicator) {
9611
0
            p->level--;
9612
0
            return NULL;
9613
0
        }
9614
119k
        D(fprintf(stderr, "%*c> name_or_attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr"));
9615
119k
        expr_ty attr_var;
9616
119k
        if (
9617
119k
            (attr_var = attr_rule(p))  // attr
9618
119k
        )
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
116k
        p->mark = _mark;
9625
116k
        D(fprintf(stderr, "%*c%s name_or_attr[%d-%d]: %s failed!\n", p->level, ' ',
9626
116k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr"));
9627
116k
    }
9628
0
    { // NAME
9629
116k
        if (p->error_indicator) {
9630
0
            p->level--;
9631
0
            return NULL;
9632
0
        }
9633
116k
        D(fprintf(stderr, "%*c> name_or_attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
9634
116k
        expr_ty name_var;
9635
116k
        if (
9636
116k
            (name_var = _PyPegen_name_token(p))  // NAME
9637
116k
        )
9638
65.7k
        {
9639
65.7k
            D(fprintf(stderr, "%*c+ name_or_attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
9640
65.7k
            _res = name_var;
9641
65.7k
            goto done;
9642
65.7k
        }
9643
50.7k
        p->mark = _mark;
9644
50.7k
        D(fprintf(stderr, "%*c%s name_or_attr[%d-%d]: %s failed!\n", p->level, ' ',
9645
50.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
9646
50.7k
    }
9647
0
    _res = NULL;
9648
119k
  done:
9649
119k
    p->level--;
9650
119k
    return _res;
9651
50.7k
}
9652
9653
// group_pattern: '(' pattern ')'
9654
static pattern_ty
9655
group_pattern_rule(Parser *p)
9656
28.8k
{
9657
28.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9658
0
        _Pypegen_stack_overflow(p);
9659
0
    }
9660
28.8k
    if (p->error_indicator) {
9661
0
        p->level--;
9662
0
        return NULL;
9663
0
    }
9664
28.8k
    pattern_ty _res = NULL;
9665
28.8k
    int _mark = p->mark;
9666
28.8k
    { // '(' pattern ')'
9667
28.8k
        if (p->error_indicator) {
9668
0
            p->level--;
9669
0
            return NULL;
9670
0
        }
9671
28.8k
        D(fprintf(stderr, "%*c> group_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' pattern ')'"));
9672
28.8k
        Token * _literal;
9673
28.8k
        Token * _literal_1;
9674
28.8k
        pattern_ty pattern;
9675
28.8k
        if (
9676
28.8k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
9677
28.8k
            &&
9678
28.8k
            (pattern = pattern_rule(p))  // pattern
9679
28.8k
            &&
9680
28.8k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
9681
28.8k
        )
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
28.3k
        p->mark = _mark;
9693
28.3k
        D(fprintf(stderr, "%*c%s group_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9694
28.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' pattern ')'"));
9695
28.3k
    }
9696
0
    _res = NULL;
9697
28.8k
  done:
9698
28.8k
    p->level--;
9699
28.8k
    return _res;
9700
28.3k
}
9701
9702
// sequence_pattern: '[' maybe_sequence_pattern? ']' | '(' open_sequence_pattern? ')'
9703
static pattern_ty
9704
sequence_pattern_rule(Parser *p)
9705
27.8k
{
9706
27.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9707
0
        _Pypegen_stack_overflow(p);
9708
0
    }
9709
27.8k
    if (p->error_indicator) {
9710
0
        p->level--;
9711
0
        return NULL;
9712
0
    }
9713
27.8k
    pattern_ty _res = NULL;
9714
27.8k
    int _mark = p->mark;
9715
27.8k
    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
27.8k
    int _start_lineno = p->tokens[_mark]->lineno;
9721
27.8k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9722
27.8k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9723
27.8k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9724
27.8k
    { // '[' maybe_sequence_pattern? ']'
9725
27.8k
        if (p->error_indicator) {
9726
0
            p->level--;
9727
0
            return NULL;
9728
0
        }
9729
27.8k
        D(fprintf(stderr, "%*c> sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
9730
27.8k
        Token * _literal;
9731
27.8k
        Token * _literal_1;
9732
27.8k
        void *patterns;
9733
27.8k
        if (
9734
27.8k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
9735
27.8k
            &&
9736
27.8k
            (patterns = maybe_sequence_pattern_rule(p), !p->error_indicator)  // maybe_sequence_pattern?
9737
27.8k
            &&
9738
27.8k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
9739
27.8k
        )
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
27.6k
        p->mark = _mark;
9760
27.6k
        D(fprintf(stderr, "%*c%s sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9761
27.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
9762
27.6k
    }
9763
0
    { // '(' open_sequence_pattern? ')'
9764
27.6k
        if (p->error_indicator) {
9765
543
            p->level--;
9766
543
            return NULL;
9767
543
        }
9768
27.0k
        D(fprintf(stderr, "%*c> sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' open_sequence_pattern? ')'"));
9769
27.0k
        Token * _literal;
9770
27.0k
        Token * _literal_1;
9771
27.0k
        void *patterns;
9772
27.0k
        if (
9773
27.0k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
9774
27.0k
            &&
9775
27.0k
            (patterns = open_sequence_pattern_rule(p), !p->error_indicator)  // open_sequence_pattern?
9776
27.0k
            &&
9777
27.0k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
9778
27.0k
        )
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
25.0k
        p->mark = _mark;
9799
25.0k
        D(fprintf(stderr, "%*c%s sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9800
25.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' open_sequence_pattern? ')'"));
9801
25.0k
    }
9802
0
    _res = NULL;
9803
27.3k
  done:
9804
27.3k
    p->level--;
9805
27.3k
    return _res;
9806
25.0k
}
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.25k
        {
9838
3.25k
            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.25k
            _res = _PyPegen_seq_insert_in_front ( p , pattern , patterns );
9840
3.25k
            if (_res == NULL && PyErr_Occurred()) {
9841
0
                p->error_indicator = 1;
9842
0
                p->level--;
9843
0
                return NULL;
9844
0
            }
9845
3.25k
            goto done;
9846
3.25k
        }
9847
11.4k
        p->mark = _mark;
9848
11.4k
        D(fprintf(stderr, "%*c%s open_sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9849
11.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
9850
11.4k
    }
9851
0
    _res = NULL;
9852
14.6k
  done:
9853
14.6k
    p->level--;
9854
14.6k
    return _res;
9855
11.4k
}
9856
9857
// maybe_sequence_pattern: ','.maybe_star_pattern+ ','?
9858
static asdl_seq*
9859
maybe_sequence_pattern_rule(Parser *p)
9860
6.16k
{
9861
6.16k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9862
0
        _Pypegen_stack_overflow(p);
9863
0
    }
9864
6.16k
    if (p->error_indicator) {
9865
0
        p->level--;
9866
0
        return NULL;
9867
0
    }
9868
6.16k
    asdl_seq* _res = NULL;
9869
6.16k
    int _mark = p->mark;
9870
6.16k
    { // ','.maybe_star_pattern+ ','?
9871
6.16k
        if (p->error_indicator) {
9872
0
            p->level--;
9873
0
            return NULL;
9874
0
        }
9875
6.16k
        D(fprintf(stderr, "%*c> maybe_sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.maybe_star_pattern+ ','?"));
9876
6.16k
        void *_opt_var;
9877
6.16k
        UNUSED(_opt_var); // Silence compiler warnings
9878
6.16k
        asdl_seq * patterns;
9879
6.16k
        if (
9880
6.16k
            (patterns = _gather_45_rule(p))  // ','.maybe_star_pattern+
9881
6.16k
            &&
9882
6.16k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
9883
6.16k
        )
9884
2.89k
        {
9885
2.89k
            D(fprintf(stderr, "%*c+ maybe_sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.maybe_star_pattern+ ','?"));
9886
2.89k
            _res = patterns;
9887
2.89k
            if (_res == NULL && PyErr_Occurred()) {
9888
0
                p->error_indicator = 1;
9889
0
                p->level--;
9890
0
                return NULL;
9891
0
            }
9892
2.89k
            goto done;
9893
2.89k
        }
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.16k
  done:
9900
6.16k
    p->level--;
9901
6.16k
    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.14k
        {
9928
3.14k
            D(fprintf(stderr, "%*c+ maybe_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_pattern"));
9929
3.14k
            _res = star_pattern_var;
9930
3.14k
            goto done;
9931
3.14k
        }
9932
29.9k
        p->mark = _mark;
9933
29.9k
        D(fprintf(stderr, "%*c%s maybe_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9934
29.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_pattern"));
9935
29.9k
    }
9936
0
    { // pattern
9937
29.9k
        if (p->error_indicator) {
9938
29
            p->level--;
9939
29
            return NULL;
9940
29
        }
9941
29.9k
        D(fprintf(stderr, "%*c> maybe_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern"));
9942
29.9k
        pattern_ty pattern_var;
9943
29.9k
        if (
9944
29.9k
            (pattern_var = pattern_rule(p))  // pattern
9945
29.9k
        )
9946
20.5k
        {
9947
20.5k
            D(fprintf(stderr, "%*c+ maybe_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern"));
9948
20.5k
            _res = pattern_var;
9949
20.5k
            goto done;
9950
20.5k
        }
9951
9.39k
        p->mark = _mark;
9952
9.39k
        D(fprintf(stderr, "%*c%s maybe_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9953
9.39k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern"));
9954
9.39k
    }
9955
0
    _res = NULL;
9956
33.0k
  done:
9957
33.0k
    p->level--;
9958
33.0k
    return _res;
9959
9.39k
}
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.29k
        p->level--;
9975
7.29k
        return _res;
9976
7.29k
    }
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.05k
        {
10001
1.05k
            D(fprintf(stderr, "%*c+ star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' pattern_capture_target"));
10002
1.05k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10003
1.05k
            if (_token == NULL) {
10004
0
                p->level--;
10005
0
                return NULL;
10006
0
            }
10007
1.05k
            int _end_lineno = _token->end_lineno;
10008
1.05k
            UNUSED(_end_lineno); // Only used by EXTRA macro
10009
1.05k
            int _end_col_offset = _token->end_col_offset;
10010
1.05k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10011
1.05k
            _res = _PyAST_MatchStar ( target -> v . Name . id , EXTRA );
10012
1.05k
            if (_res == NULL && PyErr_Occurred()) {
10013
0
                p->error_indicator = 1;
10014
0
                p->level--;
10015
0
                return NULL;
10016
0
            }
10017
1.05k
            goto done;
10018
1.05k
        }
10019
24.7k
        p->mark = _mark;
10020
24.7k
        D(fprintf(stderr, "%*c%s star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10021
24.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' pattern_capture_target"));
10022
24.7k
    }
10023
0
    { // '*' wildcard_pattern
10024
24.7k
        if (p->error_indicator) {
10025
3
            p->level--;
10026
3
            return NULL;
10027
3
        }
10028
24.7k
        D(fprintf(stderr, "%*c> star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' wildcard_pattern"));
10029
24.7k
        Token * _literal;
10030
24.7k
        pattern_ty wildcard_pattern_var;
10031
24.7k
        if (
10032
24.7k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
10033
24.7k
            &&
10034
24.7k
            (wildcard_pattern_var = wildcard_pattern_rule(p))  // wildcard_pattern
10035
24.7k
        )
10036
868
        {
10037
868
            D(fprintf(stderr, "%*c+ star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' wildcard_pattern"));
10038
868
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10039
868
            if (_token == NULL) {
10040
0
                p->level--;
10041
0
                return NULL;
10042
0
            }
10043
868
            int _end_lineno = _token->end_lineno;
10044
868
            UNUSED(_end_lineno); // Only used by EXTRA macro
10045
868
            int _end_col_offset = _token->end_col_offset;
10046
868
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10047
868
            _res = _PyAST_MatchStar ( NULL , EXTRA );
10048
868
            if (_res == NULL && PyErr_Occurred()) {
10049
0
                p->error_indicator = 1;
10050
0
                p->level--;
10051
0
                return NULL;
10052
0
            }
10053
868
            goto done;
10054
868
        }
10055
23.8k
        p->mark = _mark;
10056
23.8k
        D(fprintf(stderr, "%*c%s star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10057
23.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' wildcard_pattern"));
10058
23.8k
    }
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.8k
}
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
24.8k
{
10074
24.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10075
0
        _Pypegen_stack_overflow(p);
10076
0
    }
10077
24.8k
    if (p->error_indicator) {
10078
0
        p->level--;
10079
0
        return NULL;
10080
0
    }
10081
24.8k
    pattern_ty _res = NULL;
10082
24.8k
    int _mark = p->mark;
10083
24.8k
    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
24.8k
    int _start_lineno = p->tokens[_mark]->lineno;
10089
24.8k
    UNUSED(_start_lineno); // Only used by EXTRA macro
10090
24.8k
    int _start_col_offset = p->tokens[_mark]->col_offset;
10091
24.8k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
10092
24.8k
    { // '{' '}'
10093
24.8k
        if (p->error_indicator) {
10094
0
            p->level--;
10095
0
            return NULL;
10096
0
        }
10097
24.8k
        D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
10098
24.8k
        Token * _literal;
10099
24.8k
        Token * _literal_1;
10100
24.8k
        if (
10101
24.8k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
10102
24.8k
            &&
10103
24.8k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
10104
24.8k
        )
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
24.0k
        p->mark = _mark;
10125
24.0k
        D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10126
24.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '}'"));
10127
24.0k
    }
10128
0
    { // '{' double_star_pattern ','? '}'
10129
24.0k
        if (p->error_indicator) {
10130
1
            p->level--;
10131
1
            return NULL;
10132
1
        }
10133
24.0k
        D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' double_star_pattern ','? '}'"));
10134
24.0k
        Token * _literal;
10135
24.0k
        Token * _literal_1;
10136
24.0k
        void *_opt_var;
10137
24.0k
        UNUSED(_opt_var); // Silence compiler warnings
10138
24.0k
        expr_ty rest;
10139
24.0k
        if (
10140
24.0k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
10141
24.0k
            &&
10142
24.0k
            (rest = double_star_pattern_rule(p))  // double_star_pattern
10143
24.0k
            &&
10144
24.0k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10145
24.0k
            &&
10146
24.0k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
10147
24.0k
        )
10148
712
        {
10149
712
            D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' double_star_pattern ','? '}'"));
10150
712
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10151
712
            if (_token == NULL) {
10152
0
                p->level--;
10153
0
                return NULL;
10154
0
            }
10155
712
            int _end_lineno = _token->end_lineno;
10156
712
            UNUSED(_end_lineno); // Only used by EXTRA macro
10157
712
            int _end_col_offset = _token->end_col_offset;
10158
712
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10159
712
            _res = _PyAST_MatchMapping ( NULL , NULL , rest -> v . Name . id , EXTRA );
10160
712
            if (_res == NULL && PyErr_Occurred()) {
10161
0
                p->error_indicator = 1;
10162
0
                p->level--;
10163
0
                return NULL;
10164
0
            }
10165
712
            goto done;
10166
712
        }
10167
23.3k
        p->mark = _mark;
10168
23.3k
        D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10169
23.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' double_star_pattern ','? '}'"));
10170
23.3k
    }
10171
0
    { // '{' items_pattern ',' double_star_pattern ','? '}'
10172
23.3k
        if (p->error_indicator) {
10173
3
            p->level--;
10174
3
            return NULL;
10175
3
        }
10176
23.3k
        D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
10177
23.3k
        Token * _literal;
10178
23.3k
        Token * _literal_1;
10179
23.3k
        Token * _literal_2;
10180
23.3k
        void *_opt_var;
10181
23.3k
        UNUSED(_opt_var); // Silence compiler warnings
10182
23.3k
        asdl_seq* items;
10183
23.3k
        expr_ty rest;
10184
23.3k
        if (
10185
23.3k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
10186
23.3k
            &&
10187
23.3k
            (items = items_pattern_rule(p))  // items_pattern
10188
23.3k
            &&
10189
23.3k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
10190
23.3k
            &&
10191
23.3k
            (rest = double_star_pattern_rule(p))  // double_star_pattern
10192
23.3k
            &&
10193
23.3k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10194
23.3k
            &&
10195
23.3k
            (_literal_2 = _PyPegen_expect_token(p, 26))  // token='}'
10196
23.3k
        )
10197
392
        {
10198
392
            D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
10199
392
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10200
392
            if (_token == NULL) {
10201
0
                p->level--;
10202
0
                return NULL;
10203
0
            }
10204
392
            int _end_lineno = _token->end_lineno;
10205
392
            UNUSED(_end_lineno); // Only used by EXTRA macro
10206
392
            int _end_col_offset = _token->end_col_offset;
10207
392
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10208
392
            _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
392
            if (_res == NULL && PyErr_Occurred()) {
10210
0
                p->error_indicator = 1;
10211
0
                p->level--;
10212
0
                return NULL;
10213
0
            }
10214
392
            goto done;
10215
392
        }
10216
22.9k
        p->mark = _mark;
10217
22.9k
        D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10218
22.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
10219
22.9k
    }
10220
0
    { // '{' items_pattern ','? '}'
10221
22.9k
        if (p->error_indicator) {
10222
493
            p->level--;
10223
493
            return NULL;
10224
493
        }
10225
22.4k
        D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ','? '}'"));
10226
22.4k
        Token * _literal;
10227
22.4k
        Token * _literal_1;
10228
22.4k
        void *_opt_var;
10229
22.4k
        UNUSED(_opt_var); // Silence compiler warnings
10230
22.4k
        asdl_seq* items;
10231
22.4k
        if (
10232
22.4k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
10233
22.4k
            &&
10234
22.4k
            (items = items_pattern_rule(p))  // items_pattern
10235
22.4k
            &&
10236
22.4k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10237
22.4k
            &&
10238
22.4k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
10239
22.4k
        )
10240
796
        {
10241
796
            D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ','? '}'"));
10242
796
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10243
796
            if (_token == NULL) {
10244
0
                p->level--;
10245
0
                return NULL;
10246
0
            }
10247
796
            int _end_lineno = _token->end_lineno;
10248
796
            UNUSED(_end_lineno); // Only used by EXTRA macro
10249
796
            int _end_col_offset = _token->end_col_offset;
10250
796
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10251
796
            _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
796
            if (_res == NULL && PyErr_Occurred()) {
10253
0
                p->error_indicator = 1;
10254
0
                p->level--;
10255
0
                return NULL;
10256
0
            }
10257
796
            goto done;
10258
796
        }
10259
21.6k
        p->mark = _mark;
10260
21.6k
        D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10261
21.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' items_pattern ','? '}'"));
10262
21.6k
    }
10263
0
    _res = NULL;
10264
24.3k
  done:
10265
24.3k
    p->level--;
10266
24.3k
    return _res;
10267
21.6k
}
10268
10269
// items_pattern: ','.key_value_pattern+
10270
static asdl_seq*
10271
items_pattern_rule(Parser *p)
10272
4.38k
{
10273
4.38k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10274
0
        _Pypegen_stack_overflow(p);
10275
0
    }
10276
4.38k
    if (p->error_indicator) {
10277
0
        p->level--;
10278
0
        return NULL;
10279
0
    }
10280
4.38k
    asdl_seq* _res = NULL;
10281
4.38k
    int _mark = p->mark;
10282
4.38k
    { // ','.key_value_pattern+
10283
4.38k
        if (p->error_indicator) {
10284
0
            p->level--;
10285
0
            return NULL;
10286
0
        }
10287
4.38k
        D(fprintf(stderr, "%*c> items_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.key_value_pattern+"));
10288
4.38k
        asdl_seq * _gather_47_var;
10289
4.38k
        if (
10290
4.38k
            (_gather_47_var = _gather_47_rule(p))  // ','.key_value_pattern+
10291
4.38k
        )
10292
2.89k
        {
10293
2.89k
            D(fprintf(stderr, "%*c+ items_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.key_value_pattern+"));
10294
2.89k
            _res = _gather_47_var;
10295
2.89k
            goto done;
10296
2.89k
        }
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.38k
  done:
10303
4.38k
    p->level--;
10304
4.38k
    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.43k
{
10311
8.43k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10312
0
        _Pypegen_stack_overflow(p);
10313
0
    }
10314
8.43k
    if (p->error_indicator) {
10315
0
        p->level--;
10316
0
        return NULL;
10317
0
    }
10318
8.43k
    KeyPatternPair* _res = NULL;
10319
8.43k
    int _mark = p->mark;
10320
8.43k
    { // (literal_expr | attr) ':' pattern
10321
8.43k
        if (p->error_indicator) {
10322
0
            p->level--;
10323
0
            return NULL;
10324
0
        }
10325
8.43k
        D(fprintf(stderr, "%*c> key_value_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(literal_expr | attr) ':' pattern"));
10326
8.43k
        Token * _literal;
10327
8.43k
        void *key;
10328
8.43k
        pattern_ty pattern;
10329
8.43k
        if (
10330
8.43k
            (key = _tmp_48_rule(p))  // literal_expr | attr
10331
8.43k
            &&
10332
8.43k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
10333
8.43k
            &&
10334
8.43k
            (pattern = pattern_rule(p))  // pattern
10335
8.43k
        )
10336
5.48k
        {
10337
5.48k
            D(fprintf(stderr, "%*c+ key_value_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(literal_expr | attr) ':' pattern"));
10338
5.48k
            _res = _PyPegen_key_pattern_pair ( p , key , pattern );
10339
5.48k
            if (_res == NULL && PyErr_Occurred()) {
10340
0
                p->error_indicator = 1;
10341
0
                p->level--;
10342
0
                return NULL;
10343
0
            }
10344
5.48k
            goto done;
10345
5.48k
        }
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.43k
  done:
10352
8.43k
    p->level--;
10353
8.43k
    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.43k
{
10360
4.43k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10361
0
        _Pypegen_stack_overflow(p);
10362
0
    }
10363
4.43k
    if (p->error_indicator) {
10364
303
        p->level--;
10365
303
        return NULL;
10366
303
    }
10367
4.12k
    expr_ty _res = NULL;
10368
4.12k
    int _mark = p->mark;
10369
4.12k
    { // '**' pattern_capture_target
10370
4.12k
        if (p->error_indicator) {
10371
0
            p->level--;
10372
0
            return NULL;
10373
0
        }
10374
4.12k
        D(fprintf(stderr, "%*c> double_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' pattern_capture_target"));
10375
4.12k
        Token * _literal;
10376
4.12k
        expr_ty target;
10377
4.12k
        if (
10378
4.12k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
10379
4.12k
            &&
10380
4.12k
            (target = pattern_capture_target_rule(p))  // pattern_capture_target
10381
4.12k
        )
10382
1.11k
        {
10383
1.11k
            D(fprintf(stderr, "%*c+ double_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' pattern_capture_target"));
10384
1.11k
            _res = target;
10385
1.11k
            if (_res == NULL && PyErr_Occurred()) {
10386
0
                p->error_indicator = 1;
10387
0
                p->level--;
10388
0
                return NULL;
10389
0
            }
10390
1.11k
            goto done;
10391
1.11k
        }
10392
3.01k
        p->mark = _mark;
10393
3.01k
        D(fprintf(stderr, "%*c%s double_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10394
3.01k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' pattern_capture_target"));
10395
3.01k
    }
10396
0
    _res = NULL;
10397
4.12k
  done:
10398
4.12k
    p->level--;
10399
4.12k
    return _res;
10400
3.01k
}
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
21.6k
{
10411
21.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10412
0
        _Pypegen_stack_overflow(p);
10413
0
    }
10414
21.6k
    if (p->error_indicator) {
10415
0
        p->level--;
10416
0
        return NULL;
10417
0
    }
10418
21.6k
    pattern_ty _res = NULL;
10419
21.6k
    int _mark = p->mark;
10420
21.6k
    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
21.6k
    int _start_lineno = p->tokens[_mark]->lineno;
10426
21.6k
    UNUSED(_start_lineno); // Only used by EXTRA macro
10427
21.6k
    int _start_col_offset = p->tokens[_mark]->col_offset;
10428
21.6k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
10429
21.6k
    { // name_or_attr '(' ')'
10430
21.6k
        if (p->error_indicator) {
10431
0
            p->level--;
10432
0
            return NULL;
10433
0
        }
10434
21.6k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' ')'"));
10435
21.6k
        Token * _literal;
10436
21.6k
        Token * _literal_1;
10437
21.6k
        expr_ty cls;
10438
21.6k
        if (
10439
21.6k
            (cls = name_or_attr_rule(p))  // name_or_attr
10440
21.6k
            &&
10441
21.6k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
10442
21.6k
            &&
10443
21.6k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
10444
21.6k
        )
10445
939
        {
10446
939
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' ')'"));
10447
939
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10448
939
            if (_token == NULL) {
10449
0
                p->level--;
10450
0
                return NULL;
10451
0
            }
10452
939
            int _end_lineno = _token->end_lineno;
10453
939
            UNUSED(_end_lineno); // Only used by EXTRA macro
10454
939
            int _end_col_offset = _token->end_col_offset;
10455
939
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10456
939
            _res = _PyAST_MatchClass ( cls , NULL , NULL , NULL , EXTRA );
10457
939
            if (_res == NULL && PyErr_Occurred()) {
10458
0
                p->error_indicator = 1;
10459
0
                p->level--;
10460
0
                return NULL;
10461
0
            }
10462
939
            goto done;
10463
939
        }
10464
20.6k
        p->mark = _mark;
10465
20.6k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10466
20.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' ')'"));
10467
20.6k
    }
10468
0
    { // name_or_attr '(' positional_patterns ','? ')'
10469
20.6k
        if (p->error_indicator) {
10470
18
            p->level--;
10471
18
            return NULL;
10472
18
        }
10473
20.6k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
10474
20.6k
        Token * _literal;
10475
20.6k
        Token * _literal_1;
10476
20.6k
        void *_opt_var;
10477
20.6k
        UNUSED(_opt_var); // Silence compiler warnings
10478
20.6k
        expr_ty cls;
10479
20.6k
        asdl_pattern_seq* patterns;
10480
20.6k
        if (
10481
20.6k
            (cls = name_or_attr_rule(p))  // name_or_attr
10482
20.6k
            &&
10483
20.6k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
10484
20.6k
            &&
10485
20.6k
            (patterns = positional_patterns_rule(p))  // positional_patterns
10486
20.6k
            &&
10487
20.6k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10488
20.6k
            &&
10489
20.6k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
10490
20.6k
        )
10491
842
        {
10492
842
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
10493
842
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10494
842
            if (_token == NULL) {
10495
0
                p->level--;
10496
0
                return NULL;
10497
0
            }
10498
842
            int _end_lineno = _token->end_lineno;
10499
842
            UNUSED(_end_lineno); // Only used by EXTRA macro
10500
842
            int _end_col_offset = _token->end_col_offset;
10501
842
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10502
842
            _res = _PyAST_MatchClass ( cls , patterns , NULL , NULL , EXTRA );
10503
842
            if (_res == NULL && PyErr_Occurred()) {
10504
0
                p->error_indicator = 1;
10505
0
                p->level--;
10506
0
                return NULL;
10507
0
            }
10508
842
            goto done;
10509
842
        }
10510
19.8k
        p->mark = _mark;
10511
19.8k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10512
19.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
10513
19.8k
    }
10514
0
    { // name_or_attr '(' keyword_patterns ','? ')'
10515
19.8k
        if (p->error_indicator) {
10516
803
            p->level--;
10517
803
            return NULL;
10518
803
        }
10519
19.0k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
10520
19.0k
        Token * _literal;
10521
19.0k
        Token * _literal_1;
10522
19.0k
        void *_opt_var;
10523
19.0k
        UNUSED(_opt_var); // Silence compiler warnings
10524
19.0k
        expr_ty cls;
10525
19.0k
        asdl_seq* keywords;
10526
19.0k
        if (
10527
19.0k
            (cls = name_or_attr_rule(p))  // name_or_attr
10528
19.0k
            &&
10529
19.0k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
10530
19.0k
            &&
10531
19.0k
            (keywords = keyword_patterns_rule(p))  // keyword_patterns
10532
19.0k
            &&
10533
19.0k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10534
19.0k
            &&
10535
19.0k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
10536
19.0k
        )
10537
653
        {
10538
653
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
10539
653
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10540
653
            if (_token == NULL) {
10541
0
                p->level--;
10542
0
                return NULL;
10543
0
            }
10544
653
            int _end_lineno = _token->end_lineno;
10545
653
            UNUSED(_end_lineno); // Only used by EXTRA macro
10546
653
            int _end_col_offset = _token->end_col_offset;
10547
653
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10548
653
            _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
653
            if (_res == NULL && PyErr_Occurred()) {
10550
0
                p->error_indicator = 1;
10551
0
                p->level--;
10552
0
                return NULL;
10553
0
            }
10554
653
            goto done;
10555
653
        }
10556
18.3k
        p->mark = _mark;
10557
18.3k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10558
18.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
10559
18.3k
    }
10560
0
    { // name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'
10561
18.3k
        if (p->error_indicator) {
10562
295
            p->level--;
10563
295
            return NULL;
10564
295
        }
10565
18.0k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
10566
18.0k
        Token * _literal;
10567
18.0k
        Token * _literal_1;
10568
18.0k
        Token * _literal_2;
10569
18.0k
        void *_opt_var;
10570
18.0k
        UNUSED(_opt_var); // Silence compiler warnings
10571
18.0k
        expr_ty cls;
10572
18.0k
        asdl_seq* keywords;
10573
18.0k
        asdl_pattern_seq* patterns;
10574
18.0k
        if (
10575
18.0k
            (cls = name_or_attr_rule(p))  // name_or_attr
10576
18.0k
            &&
10577
18.0k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
10578
18.0k
            &&
10579
18.0k
            (patterns = positional_patterns_rule(p))  // positional_patterns
10580
18.0k
            &&
10581
18.0k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
10582
18.0k
            &&
10583
18.0k
            (keywords = keyword_patterns_rule(p))  // keyword_patterns
10584
18.0k
            &&
10585
18.0k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10586
18.0k
            &&
10587
18.0k
            (_literal_2 = _PyPegen_expect_token(p, 8))  // token=')'
10588
18.0k
        )
10589
317
        {
10590
317
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
10591
317
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10592
317
            if (_token == NULL) {
10593
0
                p->level--;
10594
0
                return NULL;
10595
0
            }
10596
317
            int _end_lineno = _token->end_lineno;
10597
317
            UNUSED(_end_lineno); // Only used by EXTRA macro
10598
317
            int _end_col_offset = _token->end_col_offset;
10599
317
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10600
317
            _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
317
            if (_res == NULL && PyErr_Occurred()) {
10602
0
                p->error_indicator = 1;
10603
0
                p->level--;
10604
0
                return NULL;
10605
0
            }
10606
317
            goto done;
10607
317
        }
10608
17.7k
        p->mark = _mark;
10609
17.7k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10610
17.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
10611
17.7k
    }
10612
17.7k
    if (p->call_invalid_rules) { // invalid_class_pattern
10613
9.11k
        if (p->error_indicator) {
10614
195
            p->level--;
10615
195
            return NULL;
10616
195
        }
10617
8.92k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_class_pattern"));
10618
8.92k
        void *invalid_class_pattern_var;
10619
8.92k
        if (
10620
8.92k
            (invalid_class_pattern_var = invalid_class_pattern_rule(p))  // invalid_class_pattern
10621
8.92k
        )
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.92k
        p->mark = _mark;
10628
8.92k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10629
8.92k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_class_pattern"));
10630
8.92k
    }
10631
17.5k
    _res = NULL;
10632
20.3k
  done:
10633
20.3k
    p->level--;
10634
20.3k
    return _res;
10635
17.5k
}
10636
10637
// positional_patterns: ','.pattern+
10638
static asdl_pattern_seq*
10639
positional_patterns_rule(Parser *p)
10640
20.6k
{
10641
20.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10642
0
        _Pypegen_stack_overflow(p);
10643
0
    }
10644
20.6k
    if (p->error_indicator) {
10645
0
        p->level--;
10646
0
        return NULL;
10647
0
    }
10648
20.6k
    asdl_pattern_seq* _res = NULL;
10649
20.6k
    int _mark = p->mark;
10650
20.6k
    { // ','.pattern+
10651
20.6k
        if (p->error_indicator) {
10652
0
            p->level--;
10653
0
            return NULL;
10654
0
        }
10655
20.6k
        D(fprintf(stderr, "%*c> positional_patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.pattern+"));
10656
20.6k
        asdl_pattern_seq* args;
10657
20.6k
        if (
10658
20.6k
            (args = (asdl_pattern_seq*)_gather_50_rule(p))  // ','.pattern+
10659
20.6k
        )
10660
11.5k
        {
10661
11.5k
            D(fprintf(stderr, "%*c+ positional_patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.pattern+"));
10662
11.5k
            _res = args;
10663
11.5k
            if (_res == NULL && PyErr_Occurred()) {
10664
0
                p->error_indicator = 1;
10665
0
                p->level--;
10666
0
                return NULL;
10667
0
            }
10668
11.5k
            goto done;
10669
11.5k
        }
10670
9.11k
        p->mark = _mark;
10671
9.11k
        D(fprintf(stderr, "%*c%s positional_patterns[%d-%d]: %s failed!\n", p->level, ' ',
10672
9.11k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.pattern+"));
10673
9.11k
    }
10674
0
    _res = NULL;
10675
20.6k
  done:
10676
20.6k
    p->level--;
10677
20.6k
    return _res;
10678
9.11k
}
10679
10680
// keyword_patterns: ','.keyword_pattern+
10681
static asdl_seq*
10682
keyword_patterns_rule(Parser *p)
10683
13.4k
{
10684
13.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10685
0
        _Pypegen_stack_overflow(p);
10686
0
    }
10687
13.4k
    if (p->error_indicator) {
10688
0
        p->level--;
10689
0
        return NULL;
10690
0
    }
10691
13.4k
    asdl_seq* _res = NULL;
10692
13.4k
    int _mark = p->mark;
10693
13.4k
    { // ','.keyword_pattern+
10694
13.4k
        if (p->error_indicator) {
10695
0
            p->level--;
10696
0
            return NULL;
10697
0
        }
10698
13.4k
        D(fprintf(stderr, "%*c> keyword_patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.keyword_pattern+"));
10699
13.4k
        asdl_seq * _gather_52_var;
10700
13.4k
        if (
10701
13.4k
            (_gather_52_var = _gather_52_rule(p))  // ','.keyword_pattern+
10702
13.4k
        )
10703
4.82k
        {
10704
4.82k
            D(fprintf(stderr, "%*c+ keyword_patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.keyword_pattern+"));
10705
4.82k
            _res = _gather_52_var;
10706
4.82k
            goto done;
10707
4.82k
        }
10708
8.64k
        p->mark = _mark;
10709
8.64k
        D(fprintf(stderr, "%*c%s keyword_patterns[%d-%d]: %s failed!\n", p->level, ' ',
10710
8.64k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.keyword_pattern+"));
10711
8.64k
    }
10712
0
    _res = NULL;
10713
13.4k
  done:
10714
13.4k
    p->level--;
10715
13.4k
    return _res;
10716
8.64k
}
10717
10718
// keyword_pattern: NAME '=' pattern
10719
static KeyPatternPair*
10720
keyword_pattern_rule(Parser *p)
10721
18.1k
{
10722
18.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10723
0
        _Pypegen_stack_overflow(p);
10724
0
    }
10725
18.1k
    if (p->error_indicator) {
10726
0
        p->level--;
10727
0
        return NULL;
10728
0
    }
10729
18.1k
    KeyPatternPair* _res = NULL;
10730
18.1k
    int _mark = p->mark;
10731
18.1k
    { // NAME '=' pattern
10732
18.1k
        if (p->error_indicator) {
10733
0
            p->level--;
10734
0
            return NULL;
10735
0
        }
10736
18.1k
        D(fprintf(stderr, "%*c> keyword_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' pattern"));
10737
18.1k
        Token * _literal;
10738
18.1k
        expr_ty arg;
10739
18.1k
        pattern_ty value;
10740
18.1k
        if (
10741
18.1k
            (arg = _PyPegen_name_token(p))  // NAME
10742
18.1k
            &&
10743
18.1k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
10744
18.1k
            &&
10745
18.1k
            (value = pattern_rule(p))  // pattern
10746
18.1k
        )
10747
6.51k
        {
10748
6.51k
            D(fprintf(stderr, "%*c+ keyword_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' pattern"));
10749
6.51k
            _res = _PyPegen_key_pattern_pair ( p , arg , value );
10750
6.51k
            if (_res == NULL && PyErr_Occurred()) {
10751
0
                p->error_indicator = 1;
10752
0
                p->level--;
10753
0
                return NULL;
10754
0
            }
10755
6.51k
            goto done;
10756
6.51k
        }
10757
11.6k
        p->mark = _mark;
10758
11.6k
        D(fprintf(stderr, "%*c%s keyword_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10759
11.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' pattern"));
10760
11.6k
    }
10761
0
    _res = NULL;
10762
18.1k
  done:
10763
18.1k
    p->level--;
10764
18.1k
    return _res;
10765
11.6k
}
10766
10767
// type_alias: "type" NAME type_params? '=' expression
10768
static stmt_ty
10769
type_alias_rule(Parser *p)
10770
626
{
10771
626
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10772
0
        _Pypegen_stack_overflow(p);
10773
0
    }
10774
626
    if (p->error_indicator) {
10775
0
        p->level--;
10776
0
        return NULL;
10777
0
    }
10778
626
    stmt_ty _res = NULL;
10779
626
    int _mark = p->mark;
10780
626
    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
626
    int _start_lineno = p->tokens[_mark]->lineno;
10786
626
    UNUSED(_start_lineno); // Only used by EXTRA macro
10787
626
    int _start_col_offset = p->tokens[_mark]->col_offset;
10788
626
    UNUSED(_start_col_offset); // Only used by EXTRA macro
10789
626
    { // "type" NAME type_params? '=' expression
10790
626
        if (p->error_indicator) {
10791
0
            p->level--;
10792
0
            return NULL;
10793
0
        }
10794
626
        D(fprintf(stderr, "%*c> type_alias[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"type\" NAME type_params? '=' expression"));
10795
626
        expr_ty _keyword;
10796
626
        Token * _literal;
10797
626
        expr_ty b;
10798
626
        expr_ty n;
10799
626
        void *t;
10800
626
        if (
10801
626
            (_keyword = _PyPegen_expect_soft_keyword(p, "type"))  // soft_keyword='"type"'
10802
626
            &&
10803
626
            (n = _PyPegen_name_token(p))  // NAME
10804
626
            &&
10805
626
            (t = type_params_rule(p), !p->error_indicator)  // type_params?
10806
626
            &&
10807
626
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
10808
626
            &&
10809
626
            (b = expression_rule(p))  // expression
10810
626
        )
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
216
        p->mark = _mark;
10831
216
        D(fprintf(stderr, "%*c%s type_alias[%d-%d]: %s failed!\n", p->level, ' ',
10832
216
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"type\" NAME type_params? '=' expression"));
10833
216
    }
10834
0
    _res = NULL;
10835
626
  done:
10836
626
    p->level--;
10837
626
    return _res;
10838
216
}
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.23k
        if (p->error_indicator) {
10855
0
            p->level--;
10856
0
            return NULL;
10857
0
        }
10858
8.23k
        D(fprintf(stderr, "%*c> type_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_type_params"));
10859
8.23k
        void *invalid_type_params_var;
10860
8.23k
        if (
10861
8.23k
            (invalid_type_params_var = invalid_type_params_rule(p))  // invalid_type_params
10862
8.23k
        )
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.23k
        p->mark = _mark;
10869
8.23k
        D(fprintf(stderr, "%*c%s type_params[%d-%d]: %s failed!\n", p->level, ' ',
10870
8.23k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_type_params"));
10871
8.23k
    }
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.9k
        p->mark = _mark;
10899
18.9k
        D(fprintf(stderr, "%*c%s type_params[%d-%d]: %s failed!\n", p->level, ' ',
10900
18.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' type_param_seq ']'"));
10901
18.9k
    }
10902
0
    _res = NULL;
10903
20.4k
  done:
10904
20.4k
    p->level--;
10905
20.4k
    return _res;
10906
18.9k
}
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.76k
        {
10936
1.76k
            D(fprintf(stderr, "%*c+ type_param_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.type_param+ ','?"));
10937
1.76k
            _res = a;
10938
1.76k
            if (_res == NULL && PyErr_Occurred()) {
10939
0
                p->error_indicator = 1;
10940
0
                p->level--;
10941
0
                return NULL;
10942
0
            }
10943
1.76k
            goto done;
10944
1.76k
        }
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
11.5k
{
10963
11.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10964
0
        _Pypegen_stack_overflow(p);
10965
0
    }
10966
11.5k
    if (p->error_indicator) {
10967
0
        p->level--;
10968
0
        return NULL;
10969
0
    }
10970
11.5k
    type_param_ty _res = NULL;
10971
11.5k
    if (_PyPegen_is_memoized(p, type_param_type, &_res)) {
10972
2.80k
        p->level--;
10973
2.80k
        return _res;
10974
2.80k
    }
10975
8.72k
    int _mark = p->mark;
10976
8.72k
    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
8.72k
    int _start_lineno = p->tokens[_mark]->lineno;
10982
8.72k
    UNUSED(_start_lineno); // Only used by EXTRA macro
10983
8.72k
    int _start_col_offset = p->tokens[_mark]->col_offset;
10984
8.72k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
10985
8.72k
    { // NAME type_param_bound? type_param_default?
10986
8.72k
        if (p->error_indicator) {
10987
0
            p->level--;
10988
0
            return NULL;
10989
0
        }
10990
8.72k
        D(fprintf(stderr, "%*c> type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME type_param_bound? type_param_default?"));
10991
8.72k
        expr_ty a;
10992
8.72k
        void *b;
10993
8.72k
        void *c;
10994
8.72k
        if (
10995
8.72k
            (a = _PyPegen_name_token(p))  // NAME
10996
8.72k
            &&
10997
8.72k
            (b = type_param_bound_rule(p), !p->error_indicator)  // type_param_bound?
10998
8.72k
            &&
10999
8.72k
            (c = type_param_default_rule(p), !p->error_indicator)  // type_param_default?
11000
8.72k
        )
11001
5.15k
        {
11002
5.15k
            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.15k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11004
5.15k
            if (_token == NULL) {
11005
0
                p->level--;
11006
0
                return NULL;
11007
0
            }
11008
5.15k
            int _end_lineno = _token->end_lineno;
11009
5.15k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11010
5.15k
            int _end_col_offset = _token->end_col_offset;
11011
5.15k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11012
5.15k
            _res = _PyAST_TypeVar ( a -> v . Name . id , b , c , EXTRA );
11013
5.15k
            if (_res == NULL && PyErr_Occurred()) {
11014
0
                p->error_indicator = 1;
11015
0
                p->level--;
11016
0
                return NULL;
11017
0
            }
11018
5.15k
            goto done;
11019
5.15k
        }
11020
3.57k
        p->mark = _mark;
11021
3.57k
        D(fprintf(stderr, "%*c%s type_param[%d-%d]: %s failed!\n", p->level, ' ',
11022
3.57k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME type_param_bound? type_param_default?"));
11023
3.57k
    }
11024
3.57k
    if (p->call_invalid_rules) { // invalid_type_param
11025
962
        if (p->error_indicator) {
11026
4
            p->level--;
11027
4
            return NULL;
11028
4
        }
11029
958
        D(fprintf(stderr, "%*c> type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_type_param"));
11030
958
        void *invalid_type_param_var;
11031
958
        if (
11032
958
            (invalid_type_param_var = invalid_type_param_rule(p))  // invalid_type_param
11033
958
        )
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
958
        p->mark = _mark;
11040
958
        D(fprintf(stderr, "%*c%s type_param[%d-%d]: %s failed!\n", p->level, ' ',
11041
958
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_type_param"));
11042
958
    }
11043
3.56k
    { // '*' NAME type_param_starred_default?
11044
3.56k
        if (p->error_indicator) {
11045
8
            p->level--;
11046
8
            return NULL;
11047
8
        }
11048
3.55k
        D(fprintf(stderr, "%*c> type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' NAME type_param_starred_default?"));
11049
3.55k
        Token * _literal;
11050
3.55k
        expr_ty a;
11051
3.55k
        void *b;
11052
3.55k
        if (
11053
3.55k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
11054
3.55k
            &&
11055
3.55k
            (a = _PyPegen_name_token(p))  // NAME
11056
3.55k
            &&
11057
3.55k
            (b = type_param_starred_default_rule(p), !p->error_indicator)  // type_param_starred_default?
11058
3.55k
        )
11059
1.74k
        {
11060
1.74k
            D(fprintf(stderr, "%*c+ type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' NAME type_param_starred_default?"));
11061
1.74k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11062
1.74k
            if (_token == NULL) {
11063
0
                p->level--;
11064
0
                return NULL;
11065
0
            }
11066
1.74k
            int _end_lineno = _token->end_lineno;
11067
1.74k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11068
1.74k
            int _end_col_offset = _token->end_col_offset;
11069
1.74k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11070
1.74k
            _res = _PyAST_TypeVarTuple ( a -> v . Name . id , b , EXTRA );
11071
1.74k
            if (_res == NULL && PyErr_Occurred()) {
11072
0
                p->error_indicator = 1;
11073
0
                p->level--;
11074
0
                return NULL;
11075
0
            }
11076
1.74k
            goto done;
11077
1.74k
        }
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.03k
        {
11099
1.03k
            D(fprintf(stderr, "%*c+ type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' NAME type_param_default?"));
11100
1.03k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11101
1.03k
            if (_token == NULL) {
11102
0
                p->level--;
11103
0
                return NULL;
11104
0
            }
11105
1.03k
            int _end_lineno = _token->end_lineno;
11106
1.03k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11107
1.03k
            int _end_col_offset = _token->end_col_offset;
11108
1.03k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11109
1.03k
            _res = _PyAST_ParamSpec ( a -> v . Name . id , b , EXTRA );
11110
1.03k
            if (_res == NULL && PyErr_Occurred()) {
11111
0
                p->error_indicator = 1;
11112
0
                p->level--;
11113
0
                return NULL;
11114
0
            }
11115
1.03k
            goto done;
11116
1.03k
        }
11117
773
        p->mark = _mark;
11118
773
        D(fprintf(stderr, "%*c%s type_param[%d-%d]: %s failed!\n", p->level, ' ',
11119
773
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' NAME type_param_default?"));
11120
773
    }
11121
0
    _res = NULL;
11122
8.71k
  done:
11123
8.71k
    _PyPegen_insert_memo(p, _mark, type_param_type, _res);
11124
8.71k
    p->level--;
11125
8.71k
    return _res;
11126
773
}
11127
11128
// type_param_bound: ':' expression
11129
static expr_ty
11130
type_param_bound_rule(Parser *p)
11131
5.16k
{
11132
5.16k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11133
0
        _Pypegen_stack_overflow(p);
11134
0
    }
11135
5.16k
    if (p->error_indicator) {
11136
0
        p->level--;
11137
0
        return NULL;
11138
0
    }
11139
5.16k
    expr_ty _res = NULL;
11140
5.16k
    int _mark = p->mark;
11141
5.16k
    { // ':' expression
11142
5.16k
        if (p->error_indicator) {
11143
0
            p->level--;
11144
0
            return NULL;
11145
0
        }
11146
5.16k
        D(fprintf(stderr, "%*c> type_param_bound[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression"));
11147
5.16k
        Token * _literal;
11148
5.16k
        expr_ty e;
11149
5.16k
        if (
11150
5.16k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
11151
5.16k
            &&
11152
5.16k
            (e = expression_rule(p))  // expression
11153
5.16k
        )
11154
278
        {
11155
278
            D(fprintf(stderr, "%*c+ type_param_bound[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression"));
11156
278
            _res = e;
11157
278
            if (_res == NULL && PyErr_Occurred()) {
11158
0
                p->error_indicator = 1;
11159
0
                p->level--;
11160
0
                return NULL;
11161
0
            }
11162
278
            goto done;
11163
278
        }
11164
4.88k
        p->mark = _mark;
11165
4.88k
        D(fprintf(stderr, "%*c%s type_param_bound[%d-%d]: %s failed!\n", p->level, ' ',
11166
4.88k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression"));
11167
4.88k
    }
11168
0
    _res = NULL;
11169
5.16k
  done:
11170
5.16k
    p->level--;
11171
5.16k
    return _res;
11172
4.88k
}
11173
11174
// type_param_default: '=' expression
11175
static expr_ty
11176
type_param_default_rule(Parser *p)
11177
6.19k
{
11178
6.19k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11179
0
        _Pypegen_stack_overflow(p);
11180
0
    }
11181
6.19k
    if (p->error_indicator) {
11182
0
        p->level--;
11183
0
        return NULL;
11184
0
    }
11185
6.19k
    expr_ty _res = NULL;
11186
6.19k
    int _mark = p->mark;
11187
6.19k
    { // '=' expression
11188
6.19k
        if (p->error_indicator) {
11189
0
            p->level--;
11190
0
            return NULL;
11191
0
        }
11192
6.19k
        D(fprintf(stderr, "%*c> type_param_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' expression"));
11193
6.19k
        Token * _literal;
11194
6.19k
        expr_ty e;
11195
6.19k
        if (
11196
6.19k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
11197
6.19k
            &&
11198
6.19k
            (e = expression_rule(p))  // expression
11199
6.19k
        )
11200
1.21k
        {
11201
1.21k
            D(fprintf(stderr, "%*c+ type_param_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' expression"));
11202
1.21k
            _res = CHECK_VERSION ( expr_ty , 13 , "Type parameter defaults are" , e );
11203
1.21k
            if (_res == NULL && PyErr_Occurred()) {
11204
0
                p->error_indicator = 1;
11205
0
                p->level--;
11206
0
                return NULL;
11207
0
            }
11208
1.21k
            goto done;
11209
1.21k
        }
11210
4.97k
        p->mark = _mark;
11211
4.97k
        D(fprintf(stderr, "%*c%s type_param_default[%d-%d]: %s failed!\n", p->level, ' ',
11212
4.97k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' expression"));
11213
4.97k
    }
11214
0
    _res = NULL;
11215
6.19k
  done:
11216
6.19k
    p->level--;
11217
6.19k
    return _res;
11218
4.97k
}
11219
11220
// type_param_starred_default: '=' star_expression
11221
static expr_ty
11222
type_param_starred_default_rule(Parser *p)
11223
1.75k
{
11224
1.75k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11225
0
        _Pypegen_stack_overflow(p);
11226
0
    }
11227
1.75k
    if (p->error_indicator) {
11228
0
        p->level--;
11229
0
        return NULL;
11230
0
    }
11231
1.75k
    expr_ty _res = NULL;
11232
1.75k
    int _mark = p->mark;
11233
1.75k
    { // '=' star_expression
11234
1.75k
        if (p->error_indicator) {
11235
0
            p->level--;
11236
0
            return NULL;
11237
0
        }
11238
1.75k
        D(fprintf(stderr, "%*c> type_param_starred_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' star_expression"));
11239
1.75k
        Token * _literal;
11240
1.75k
        expr_ty e;
11241
1.75k
        if (
11242
1.75k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
11243
1.75k
            &&
11244
1.75k
            (e = star_expression_rule(p))  // star_expression
11245
1.75k
        )
11246
558
        {
11247
558
            D(fprintf(stderr, "%*c+ type_param_starred_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' star_expression"));
11248
558
            _res = CHECK_VERSION ( expr_ty , 13 , "Type parameter defaults are" , e );
11249
558
            if (_res == NULL && PyErr_Occurred()) {
11250
0
                p->error_indicator = 1;
11251
0
                p->level--;
11252
0
                return NULL;
11253
0
            }
11254
558
            goto done;
11255
558
        }
11256
1.19k
        p->mark = _mark;
11257
1.19k
        D(fprintf(stderr, "%*c%s type_param_starred_default[%d-%d]: %s failed!\n", p->level, ' ',
11258
1.19k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' star_expression"));
11259
1.19k
    }
11260
0
    _res = NULL;
11261
1.75k
  done:
11262
1.75k
    p->level--;
11263
1.75k
    return _res;
11264
1.19k
}
11265
11266
// expressions: expression ((',' expression))+ ','? | expression ',' | expression
11267
static expr_ty
11268
expressions_rule(Parser *p)
11269
11.8k
{
11270
11.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11271
0
        _Pypegen_stack_overflow(p);
11272
0
    }
11273
11.8k
    if (p->error_indicator) {
11274
0
        p->level--;
11275
0
        return NULL;
11276
0
    }
11277
11.8k
    expr_ty _res = NULL;
11278
11.8k
    int _mark = p->mark;
11279
11.8k
    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.8k
    int _start_lineno = p->tokens[_mark]->lineno;
11285
11.8k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11286
11.8k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11287
11.8k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11288
11.8k
    { // expression ((',' expression))+ ','?
11289
11.8k
        if (p->error_indicator) {
11290
0
            p->level--;
11291
0
            return NULL;
11292
0
        }
11293
11.8k
        D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ((',' expression))+ ','?"));
11294
11.8k
        void *_opt_var;
11295
11.8k
        UNUSED(_opt_var); // Silence compiler warnings
11296
11.8k
        expr_ty a;
11297
11.8k
        asdl_seq * b;
11298
11.8k
        if (
11299
11.8k
            (a = expression_rule(p))  // expression
11300
11.8k
            &&
11301
11.8k
            (b = _loop1_55_rule(p))  // ((',' expression))+
11302
11.8k
            &&
11303
11.8k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
11304
11.8k
        )
11305
1.29k
        {
11306
1.29k
            D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ((',' expression))+ ','?"));
11307
1.29k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11308
1.29k
            if (_token == NULL) {
11309
0
                p->level--;
11310
0
                return NULL;
11311
0
            }
11312
1.29k
            int _end_lineno = _token->end_lineno;
11313
1.29k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11314
1.29k
            int _end_col_offset = _token->end_col_offset;
11315
1.29k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11316
1.29k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
11317
1.29k
            if (_res == NULL && PyErr_Occurred()) {
11318
0
                p->error_indicator = 1;
11319
0
                p->level--;
11320
0
                return NULL;
11321
0
            }
11322
1.29k
            goto done;
11323
1.29k
        }
11324
10.5k
        p->mark = _mark;
11325
10.5k
        D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
11326
10.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ((',' expression))+ ','?"));
11327
10.5k
    }
11328
0
    { // expression ','
11329
10.5k
        if (p->error_indicator) {
11330
3
            p->level--;
11331
3
            return NULL;
11332
3
        }
11333
10.5k
        D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ','"));
11334
10.5k
        Token * _literal;
11335
10.5k
        expr_ty a;
11336
10.5k
        if (
11337
10.5k
            (a = expression_rule(p))  // expression
11338
10.5k
            &&
11339
10.5k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
11340
10.5k
        )
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.92k
        p->mark = _mark;
11361
8.92k
        D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
11362
8.92k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ','"));
11363
8.92k
    }
11364
0
    { // expression
11365
8.92k
        if (p->error_indicator) {
11366
0
            p->level--;
11367
0
            return NULL;
11368
0
        }
11369
8.92k
        D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
11370
8.92k
        expr_ty expression_var;
11371
8.92k
        if (
11372
8.92k
            (expression_var = expression_rule(p))  // expression
11373
8.92k
        )
11374
945
        {
11375
945
            D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
11376
945
            _res = expression_var;
11377
945
            goto done;
11378
945
        }
11379
7.98k
        p->mark = _mark;
11380
7.98k
        D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
11381
7.98k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
11382
7.98k
    }
11383
0
    _res = NULL;
11384
11.8k
  done:
11385
11.8k
    p->level--;
11386
11.8k
    return _res;
11387
7.98k
}
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.79M
{
11398
1.79M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11399
1
        _Pypegen_stack_overflow(p);
11400
1
    }
11401
1.79M
    if (p->error_indicator) {
11402
2
        p->level--;
11403
2
        return NULL;
11404
2
    }
11405
1.79M
    expr_ty _res = NULL;
11406
1.79M
    if (_PyPegen_is_memoized(p, expression_type, &_res)) {
11407
1.15M
        p->level--;
11408
1.15M
        return _res;
11409
1.15M
    }
11410
640k
    int _mark = p->mark;
11411
640k
    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
640k
    int _start_lineno = p->tokens[_mark]->lineno;
11417
640k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11418
640k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11419
640k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11420
640k
    if (p->call_invalid_rules) { // invalid_expression
11421
233k
        if (p->error_indicator) {
11422
0
            p->level--;
11423
0
            return NULL;
11424
0
        }
11425
233k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_expression"));
11426
233k
        void *invalid_expression_var;
11427
233k
        if (
11428
233k
            (invalid_expression_var = invalid_expression_rule(p))  // invalid_expression
11429
233k
        )
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
233k
        p->mark = _mark;
11436
233k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11437
233k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_expression"));
11438
233k
    }
11439
640k
    if (p->call_invalid_rules) { // invalid_legacy_expression
11440
233k
        if (p->error_indicator) {
11441
29.1k
            p->level--;
11442
29.1k
            return NULL;
11443
29.1k
        }
11444
204k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_legacy_expression"));
11445
204k
        void *invalid_legacy_expression_var;
11446
204k
        if (
11447
204k
            (invalid_legacy_expression_var = invalid_legacy_expression_rule(p))  // invalid_legacy_expression
11448
204k
        )
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
204k
        p->mark = _mark;
11455
204k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11456
204k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_legacy_expression"));
11457
204k
    }
11458
611k
    { // disjunction 'if' disjunction 'else' expression
11459
611k
        if (p->error_indicator) {
11460
1.50k
            p->level--;
11461
1.50k
            return NULL;
11462
1.50k
        }
11463
610k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
11464
610k
        Token * _keyword;
11465
610k
        Token * _keyword_1;
11466
610k
        expr_ty a;
11467
610k
        expr_ty b;
11468
610k
        expr_ty c;
11469
610k
        if (
11470
610k
            (a = disjunction_rule(p))  // disjunction
11471
610k
            &&
11472
610k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
11473
610k
            &&
11474
610k
            (b = disjunction_rule(p))  // disjunction
11475
610k
            &&
11476
610k
            (_keyword_1 = _PyPegen_expect_token(p, 691))  // token='else'
11477
610k
            &&
11478
610k
            (c = expression_rule(p))  // expression
11479
610k
        )
11480
1.14k
        {
11481
1.14k
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
11482
1.14k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11483
1.14k
            if (_token == NULL) {
11484
0
                p->level--;
11485
0
                return NULL;
11486
0
            }
11487
1.14k
            int _end_lineno = _token->end_lineno;
11488
1.14k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11489
1.14k
            int _end_col_offset = _token->end_col_offset;
11490
1.14k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11491
1.14k
            _res = _PyAST_IfExp ( b , a , c , EXTRA );
11492
1.14k
            if (_res == NULL && PyErr_Occurred()) {
11493
0
                p->error_indicator = 1;
11494
0
                p->level--;
11495
0
                return NULL;
11496
0
            }
11497
1.14k
            goto done;
11498
1.14k
        }
11499
608k
        p->mark = _mark;
11500
608k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11501
608k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
11502
608k
    }
11503
0
    { // disjunction
11504
608k
        if (p->error_indicator) {
11505
9.10k
            p->level--;
11506
9.10k
            return NULL;
11507
9.10k
        }
11508
599k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction"));
11509
599k
        expr_ty disjunction_var;
11510
599k
        if (
11511
599k
            (disjunction_var = disjunction_rule(p))  // disjunction
11512
599k
        )
11513
366k
        {
11514
366k
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction"));
11515
366k
            _res = disjunction_var;
11516
366k
            goto done;
11517
366k
        }
11518
232k
        p->mark = _mark;
11519
232k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11520
232k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction"));
11521
232k
    }
11522
0
    { // lambdef
11523
232k
        if (p->error_indicator) {
11524
0
            p->level--;
11525
0
            return NULL;
11526
0
        }
11527
232k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambdef"));
11528
232k
        expr_ty lambdef_var;
11529
232k
        if (
11530
232k
            (lambdef_var = lambdef_rule(p))  // lambdef
11531
232k
        )
11532
2.96k
        {
11533
2.96k
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambdef"));
11534
2.96k
            _res = lambdef_var;
11535
2.96k
            goto done;
11536
2.96k
        }
11537
229k
        p->mark = _mark;
11538
229k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11539
229k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambdef"));
11540
229k
    }
11541
0
    _res = NULL;
11542
601k
  done:
11543
601k
    _PyPegen_insert_memo(p, _mark, expression_type, _res);
11544
601k
    p->level--;
11545
601k
    return _res;
11546
229k
}
11547
11548
// yield_expr: 'yield' 'from' expression | 'yield' star_expressions?
11549
static expr_ty
11550
yield_expr_rule(Parser *p)
11551
127k
{
11552
127k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11553
1
        _Pypegen_stack_overflow(p);
11554
1
    }
11555
127k
    if (p->error_indicator) {
11556
1
        p->level--;
11557
1
        return NULL;
11558
1
    }
11559
127k
    expr_ty _res = NULL;
11560
127k
    int _mark = p->mark;
11561
127k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11562
54
        p->error_indicator = 1;
11563
54
        p->level--;
11564
54
        return NULL;
11565
54
    }
11566
127k
    int _start_lineno = p->tokens[_mark]->lineno;
11567
127k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11568
127k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11569
127k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11570
127k
    { // 'yield' 'from' expression
11571
127k
        if (p->error_indicator) {
11572
0
            p->level--;
11573
0
            return NULL;
11574
0
        }
11575
127k
        D(fprintf(stderr, "%*c> yield_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'yield' 'from' expression"));
11576
127k
        Token * _keyword;
11577
127k
        Token * _keyword_1;
11578
127k
        expr_ty a;
11579
127k
        if (
11580
127k
            (_keyword = _PyPegen_expect_token(p, 588))  // token='yield'
11581
127k
            &&
11582
127k
            (_keyword_1 = _PyPegen_expect_token(p, 638))  // token='from'
11583
127k
            &&
11584
127k
            (a = expression_rule(p))  // expression
11585
127k
        )
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
127k
        p->mark = _mark;
11606
127k
        D(fprintf(stderr, "%*c%s yield_expr[%d-%d]: %s failed!\n", p->level, ' ',
11607
127k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'yield' 'from' expression"));
11608
127k
    }
11609
0
    { // 'yield' star_expressions?
11610
127k
        if (p->error_indicator) {
11611
205
            p->level--;
11612
205
            return NULL;
11613
205
        }
11614
127k
        D(fprintf(stderr, "%*c> yield_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'yield' star_expressions?"));
11615
127k
        Token * _keyword;
11616
127k
        void *a;
11617
127k
        if (
11618
127k
            (_keyword = _PyPegen_expect_token(p, 588))  // token='yield'
11619
127k
            &&
11620
127k
            (a = star_expressions_rule(p), !p->error_indicator)  // star_expressions?
11621
127k
        )
11622
2.80k
        {
11623
2.80k
            D(fprintf(stderr, "%*c+ yield_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'yield' star_expressions?"));
11624
2.80k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11625
2.80k
            if (_token == NULL) {
11626
0
                p->level--;
11627
0
                return NULL;
11628
0
            }
11629
2.80k
            int _end_lineno = _token->end_lineno;
11630
2.80k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11631
2.80k
            int _end_col_offset = _token->end_col_offset;
11632
2.80k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11633
2.80k
            _res = _PyAST_Yield ( a , EXTRA );
11634
2.80k
            if (_res == NULL && PyErr_Occurred()) {
11635
0
                p->error_indicator = 1;
11636
0
                p->level--;
11637
0
                return NULL;
11638
0
            }
11639
2.80k
            goto done;
11640
2.80k
        }
11641
124k
        p->mark = _mark;
11642
124k
        D(fprintf(stderr, "%*c%s yield_expr[%d-%d]: %s failed!\n", p->level, ' ',
11643
124k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'yield' star_expressions?"));
11644
124k
    }
11645
0
    _res = NULL;
11646
127k
  done:
11647
127k
    p->level--;
11648
127k
    return _res;
11649
124k
}
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
370k
{
11658
370k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11659
0
        _Pypegen_stack_overflow(p);
11660
0
    }
11661
370k
    if (p->error_indicator) {
11662
0
        p->level--;
11663
0
        return NULL;
11664
0
    }
11665
370k
    expr_ty _res = NULL;
11666
370k
    int _mark = p->mark;
11667
370k
    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
370k
    int _start_lineno = p->tokens[_mark]->lineno;
11673
370k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11674
370k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11675
370k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11676
370k
    { // star_expression ((',' star_expression))+ ','?
11677
370k
        if (p->error_indicator) {
11678
0
            p->level--;
11679
0
            return NULL;
11680
0
        }
11681
370k
        D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
11682
370k
        void *_opt_var;
11683
370k
        UNUSED(_opt_var); // Silence compiler warnings
11684
370k
        expr_ty a;
11685
370k
        asdl_seq * b;
11686
370k
        if (
11687
370k
            (a = star_expression_rule(p))  // star_expression
11688
370k
            &&
11689
370k
            (b = _loop1_56_rule(p))  // ((',' star_expression))+
11690
370k
            &&
11691
370k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
11692
370k
        )
11693
5.77k
        {
11694
5.77k
            D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
11695
5.77k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11696
5.77k
            if (_token == NULL) {
11697
0
                p->level--;
11698
0
                return NULL;
11699
0
            }
11700
5.77k
            int _end_lineno = _token->end_lineno;
11701
5.77k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11702
5.77k
            int _end_col_offset = _token->end_col_offset;
11703
5.77k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11704
5.77k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
11705
5.77k
            if (_res == NULL && PyErr_Occurred()) {
11706
0
                p->error_indicator = 1;
11707
0
                p->level--;
11708
0
                return NULL;
11709
0
            }
11710
5.77k
            goto done;
11711
5.77k
        }
11712
364k
        p->mark = _mark;
11713
364k
        D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
11714
364k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
11715
364k
    }
11716
0
    { // star_expression ','
11717
364k
        if (p->error_indicator) {
11718
5.63k
            p->level--;
11719
5.63k
            return NULL;
11720
5.63k
        }
11721
358k
        D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression ','"));
11722
358k
        Token * _literal;
11723
358k
        expr_ty a;
11724
358k
        if (
11725
358k
            (a = star_expression_rule(p))  // star_expression
11726
358k
            &&
11727
358k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
11728
358k
        )
11729
10.4k
        {
11730
10.4k
            D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression ','"));
11731
10.4k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11732
10.4k
            if (_token == NULL) {
11733
0
                p->level--;
11734
0
                return NULL;
11735
0
            }
11736
10.4k
            int _end_lineno = _token->end_lineno;
11737
10.4k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11738
10.4k
            int _end_col_offset = _token->end_col_offset;
11739
10.4k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11740
10.4k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
11741
10.4k
            if (_res == NULL && PyErr_Occurred()) {
11742
0
                p->error_indicator = 1;
11743
0
                p->level--;
11744
0
                return NULL;
11745
0
            }
11746
10.4k
            goto done;
11747
10.4k
        }
11748
348k
        p->mark = _mark;
11749
348k
        D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
11750
348k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression ','"));
11751
348k
    }
11752
0
    { // star_expression
11753
348k
        if (p->error_indicator) {
11754
0
            p->level--;
11755
0
            return NULL;
11756
0
        }
11757
348k
        D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression"));
11758
348k
        expr_ty star_expression_var;
11759
348k
        if (
11760
348k
            (star_expression_var = star_expression_rule(p))  // star_expression
11761
348k
        )
11762
196k
        {
11763
196k
            D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression"));
11764
196k
            _res = star_expression_var;
11765
196k
            goto done;
11766
196k
        }
11767
151k
        p->mark = _mark;
11768
151k
        D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
11769
151k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression"));
11770
151k
    }
11771
0
    _res = NULL;
11772
364k
  done:
11773
364k
    p->level--;
11774
364k
    return _res;
11775
151k
}
11776
11777
// star_expression: '*' bitwise_or | expression
11778
static expr_ty
11779
star_expression_rule(Parser *p)
11780
1.10M
{
11781
1.10M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11782
1
        _Pypegen_stack_overflow(p);
11783
1
    }
11784
1.10M
    if (p->error_indicator) {
11785
1
        p->level--;
11786
1
        return NULL;
11787
1
    }
11788
1.10M
    expr_ty _res = NULL;
11789
1.10M
    if (_PyPegen_is_memoized(p, star_expression_type, &_res)) {
11790
802k
        p->level--;
11791
802k
        return _res;
11792
802k
    }
11793
305k
    int _mark = p->mark;
11794
305k
    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
305k
    int _start_lineno = p->tokens[_mark]->lineno;
11800
305k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11801
305k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11802
305k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11803
305k
    { // '*' bitwise_or
11804
305k
        if (p->error_indicator) {
11805
0
            p->level--;
11806
0
            return NULL;
11807
0
        }
11808
305k
        D(fprintf(stderr, "%*c> star_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
11809
305k
        Token * _literal;
11810
305k
        expr_ty a;
11811
305k
        if (
11812
305k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
11813
305k
            &&
11814
305k
            (a = bitwise_or_rule(p))  // bitwise_or
11815
305k
        )
11816
2.73k
        {
11817
2.73k
            D(fprintf(stderr, "%*c+ star_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
11818
2.73k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11819
2.73k
            if (_token == NULL) {
11820
0
                p->level--;
11821
0
                return NULL;
11822
0
            }
11823
2.73k
            int _end_lineno = _token->end_lineno;
11824
2.73k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11825
2.73k
            int _end_col_offset = _token->end_col_offset;
11826
2.73k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11827
2.73k
            _res = _PyAST_Starred ( a , Load , EXTRA );
11828
2.73k
            if (_res == NULL && PyErr_Occurred()) {
11829
0
                p->error_indicator = 1;
11830
0
                p->level--;
11831
0
                return NULL;
11832
0
            }
11833
2.73k
            goto done;
11834
2.73k
        }
11835
303k
        p->mark = _mark;
11836
303k
        D(fprintf(stderr, "%*c%s star_expression[%d-%d]: %s failed!\n", p->level, ' ',
11837
303k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' bitwise_or"));
11838
303k
    }
11839
0
    { // expression
11840
303k
        if (p->error_indicator) {
11841
322
            p->level--;
11842
322
            return NULL;
11843
322
        }
11844
302k
        D(fprintf(stderr, "%*c> star_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
11845
302k
        expr_ty expression_var;
11846
302k
        if (
11847
302k
            (expression_var = expression_rule(p))  // expression
11848
302k
        )
11849
160k
        {
11850
160k
            D(fprintf(stderr, "%*c+ star_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
11851
160k
            _res = expression_var;
11852
160k
            goto done;
11853
160k
        }
11854
141k
        p->mark = _mark;
11855
141k
        D(fprintf(stderr, "%*c%s star_expression[%d-%d]: %s failed!\n", p->level, ' ',
11856
141k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
11857
141k
    }
11858
0
    _res = NULL;
11859
305k
  done:
11860
305k
    _PyPegen_insert_memo(p, _mark, star_expression_type, _res);
11861
305k
    p->level--;
11862
305k
    return _res;
11863
141k
}
11864
11865
// star_named_expressions: ','.star_named_expression+ ','?
11866
static asdl_expr_seq*
11867
star_named_expressions_rule(Parser *p)
11868
101k
{
11869
101k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11870
1
        _Pypegen_stack_overflow(p);
11871
1
    }
11872
101k
    if (p->error_indicator) {
11873
1
        p->level--;
11874
1
        return NULL;
11875
1
    }
11876
101k
    asdl_expr_seq* _res = NULL;
11877
101k
    int _mark = p->mark;
11878
101k
    { // ','.star_named_expression+ ','?
11879
101k
        if (p->error_indicator) {
11880
0
            p->level--;
11881
0
            return NULL;
11882
0
        }
11883
101k
        D(fprintf(stderr, "%*c> star_named_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.star_named_expression+ ','?"));
11884
101k
        void *_opt_var;
11885
101k
        UNUSED(_opt_var); // Silence compiler warnings
11886
101k
        asdl_expr_seq* a;
11887
101k
        if (
11888
101k
            (a = (asdl_expr_seq*)_gather_58_rule(p))  // ','.star_named_expression+
11889
101k
            &&
11890
101k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
11891
101k
        )
11892
42.6k
        {
11893
42.6k
            D(fprintf(stderr, "%*c+ star_named_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_named_expression+ ','?"));
11894
42.6k
            _res = a;
11895
42.6k
            if (_res == NULL && PyErr_Occurred()) {
11896
0
                p->error_indicator = 1;
11897
0
                p->level--;
11898
0
                return NULL;
11899
0
            }
11900
42.6k
            goto done;
11901
42.6k
        }
11902
58.5k
        p->mark = _mark;
11903
58.5k
        D(fprintf(stderr, "%*c%s star_named_expressions[%d-%d]: %s failed!\n", p->level, ' ',
11904
58.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.star_named_expression+ ','?"));
11905
58.5k
    }
11906
0
    _res = NULL;
11907
101k
  done:
11908
101k
    p->level--;
11909
101k
    return _res;
11910
58.5k
}
11911
11912
// star_named_expression: '*' bitwise_or | named_expression
11913
static expr_ty
11914
star_named_expression_rule(Parser *p)
11915
357k
{
11916
357k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11917
1
        _Pypegen_stack_overflow(p);
11918
1
    }
11919
357k
    if (p->error_indicator) {
11920
1
        p->level--;
11921
1
        return NULL;
11922
1
    }
11923
357k
    expr_ty _res = NULL;
11924
357k
    int _mark = p->mark;
11925
357k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11926
153
        p->error_indicator = 1;
11927
153
        p->level--;
11928
153
        return NULL;
11929
153
    }
11930
357k
    int _start_lineno = p->tokens[_mark]->lineno;
11931
357k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11932
357k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11933
357k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11934
357k
    { // '*' bitwise_or
11935
357k
        if (p->error_indicator) {
11936
0
            p->level--;
11937
0
            return NULL;
11938
0
        }
11939
357k
        D(fprintf(stderr, "%*c> star_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
11940
357k
        Token * _literal;
11941
357k
        expr_ty a;
11942
357k
        if (
11943
357k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
11944
357k
            &&
11945
357k
            (a = bitwise_or_rule(p))  // bitwise_or
11946
357k
        )
11947
3.82k
        {
11948
3.82k
            D(fprintf(stderr, "%*c+ star_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
11949
3.82k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11950
3.82k
            if (_token == NULL) {
11951
0
                p->level--;
11952
0
                return NULL;
11953
0
            }
11954
3.82k
            int _end_lineno = _token->end_lineno;
11955
3.82k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11956
3.82k
            int _end_col_offset = _token->end_col_offset;
11957
3.82k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11958
3.82k
            _res = _PyAST_Starred ( a , Load , EXTRA );
11959
3.82k
            if (_res == NULL && PyErr_Occurred()) {
11960
0
                p->error_indicator = 1;
11961
0
                p->level--;
11962
0
                return NULL;
11963
0
            }
11964
3.82k
            goto done;
11965
3.82k
        }
11966
353k
        p->mark = _mark;
11967
353k
        D(fprintf(stderr, "%*c%s star_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
11968
353k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' bitwise_or"));
11969
353k
    }
11970
0
    { // named_expression
11971
353k
        if (p->error_indicator) {
11972
699
            p->level--;
11973
699
            return NULL;
11974
699
        }
11975
353k
        D(fprintf(stderr, "%*c> star_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
11976
353k
        expr_ty named_expression_var;
11977
353k
        if (
11978
353k
            (named_expression_var = named_expression_rule(p))  // named_expression
11979
353k
        )
11980
196k
        {
11981
196k
            D(fprintf(stderr, "%*c+ star_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
11982
196k
            _res = named_expression_var;
11983
196k
            goto done;
11984
196k
        }
11985
156k
        p->mark = _mark;
11986
156k
        D(fprintf(stderr, "%*c%s star_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
11987
156k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
11988
156k
    }
11989
0
    _res = NULL;
11990
356k
  done:
11991
356k
    p->level--;
11992
356k
    return _res;
11993
156k
}
11994
11995
// assignment_expression: NAME ':=' ~ expression
11996
static expr_ty
11997
assignment_expression_rule(Parser *p)
11998
667k
{
11999
667k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12000
1
        _Pypegen_stack_overflow(p);
12001
1
    }
12002
667k
    if (p->error_indicator) {
12003
1
        p->level--;
12004
1
        return NULL;
12005
1
    }
12006
667k
    expr_ty _res = NULL;
12007
667k
    int _mark = p->mark;
12008
667k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12009
74
        p->error_indicator = 1;
12010
74
        p->level--;
12011
74
        return NULL;
12012
74
    }
12013
667k
    int _start_lineno = p->tokens[_mark]->lineno;
12014
667k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12015
667k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12016
667k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12017
667k
    { // NAME ':=' ~ expression
12018
667k
        if (p->error_indicator) {
12019
0
            p->level--;
12020
0
            return NULL;
12021
0
        }
12022
667k
        D(fprintf(stderr, "%*c> assignment_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ':=' ~ expression"));
12023
667k
        int _cut_var = 0;
12024
667k
        Token * _literal;
12025
667k
        expr_ty a;
12026
667k
        expr_ty b;
12027
667k
        if (
12028
667k
            (a = _PyPegen_name_token(p))  // NAME
12029
667k
            &&
12030
667k
            (_literal = _PyPegen_expect_token(p, 53))  // token=':='
12031
667k
            &&
12032
667k
            (_cut_var = 1)
12033
667k
            &&
12034
667k
            (b = expression_rule(p))  // expression
12035
667k
        )
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
666k
        p->mark = _mark;
12056
666k
        D(fprintf(stderr, "%*c%s assignment_expression[%d-%d]: %s failed!\n", p->level, ' ',
12057
666k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ':=' ~ expression"));
12058
666k
        if (_cut_var) {
12059
1.96k
            p->level--;
12060
1.96k
            return NULL;
12061
1.96k
        }
12062
666k
    }
12063
664k
    _res = NULL;
12064
665k
  done:
12065
665k
    p->level--;
12066
665k
    return _res;
12067
664k
}
12068
12069
// named_expression: assignment_expression | invalid_named_expression | expression !':='
12070
static expr_ty
12071
named_expression_rule(Parser *p)
12072
484k
{
12073
484k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12074
1
        _Pypegen_stack_overflow(p);
12075
1
    }
12076
484k
    if (p->error_indicator) {
12077
1
        p->level--;
12078
1
        return NULL;
12079
1
    }
12080
484k
    expr_ty _res = NULL;
12081
484k
    int _mark = p->mark;
12082
484k
    { // assignment_expression
12083
484k
        if (p->error_indicator) {
12084
0
            p->level--;
12085
0
            return NULL;
12086
0
        }
12087
484k
        D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
12088
484k
        expr_ty assignment_expression_var;
12089
484k
        if (
12090
484k
            (assignment_expression_var = assignment_expression_rule(p))  // assignment_expression
12091
484k
        )
12092
720
        {
12093
720
            D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
12094
720
            _res = assignment_expression_var;
12095
720
            goto done;
12096
720
        }
12097
483k
        p->mark = _mark;
12098
483k
        D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
12099
483k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression"));
12100
483k
    }
12101
483k
    if (p->call_invalid_rules) { // invalid_named_expression
12102
262k
        if (p->error_indicator) {
12103
86
            p->level--;
12104
86
            return NULL;
12105
86
        }
12106
262k
        D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_named_expression"));
12107
262k
        void *invalid_named_expression_var;
12108
262k
        if (
12109
262k
            (invalid_named_expression_var = invalid_named_expression_rule(p))  // invalid_named_expression
12110
262k
        )
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
262k
        p->mark = _mark;
12117
262k
        D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
12118
262k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_named_expression"));
12119
262k
    }
12120
483k
    { // expression !':='
12121
483k
        if (p->error_indicator) {
12122
15.1k
            p->level--;
12123
15.1k
            return NULL;
12124
15.1k
        }
12125
468k
        D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
12126
468k
        expr_ty expression_var;
12127
468k
        if (
12128
468k
            (expression_var = expression_rule(p))  // expression
12129
468k
            &&
12130
468k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53)  // token=':='
12131
468k
        )
12132
283k
        {
12133
283k
            D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='"));
12134
283k
            _res = expression_var;
12135
283k
            goto done;
12136
283k
        }
12137
185k
        p->mark = _mark;
12138
185k
        D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
12139
185k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
12140
185k
    }
12141
0
    _res = NULL;
12142
469k
  done:
12143
469k
    p->level--;
12144
469k
    return _res;
12145
185k
}
12146
12147
// disjunction: conjunction (('or' conjunction))+ | conjunction
12148
static expr_ty
12149
disjunction_rule(Parser *p)
12150
2.06M
{
12151
2.06M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12152
1
        _Pypegen_stack_overflow(p);
12153
1
    }
12154
2.06M
    if (p->error_indicator) {
12155
26
        p->level--;
12156
26
        return NULL;
12157
26
    }
12158
2.06M
    expr_ty _res = NULL;
12159
2.06M
    if (_PyPegen_is_memoized(p, disjunction_type, &_res)) {
12160
1.37M
        p->level--;
12161
1.37M
        return _res;
12162
1.37M
    }
12163
688k
    int _mark = p->mark;
12164
688k
    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
688k
    int _start_lineno = p->tokens[_mark]->lineno;
12170
688k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12171
688k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12172
688k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12173
688k
    { // conjunction (('or' conjunction))+
12174
688k
        if (p->error_indicator) {
12175
0
            p->level--;
12176
0
            return NULL;
12177
0
        }
12178
688k
        D(fprintf(stderr, "%*c> disjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "conjunction (('or' conjunction))+"));
12179
688k
        expr_ty a;
12180
688k
        asdl_seq * b;
12181
688k
        if (
12182
688k
            (a = conjunction_rule(p))  // conjunction
12183
688k
            &&
12184
688k
            (b = _loop1_59_rule(p))  // (('or' conjunction))+
12185
688k
        )
12186
1.50k
        {
12187
1.50k
            D(fprintf(stderr, "%*c+ disjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "conjunction (('or' conjunction))+"));
12188
1.50k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12189
1.50k
            if (_token == NULL) {
12190
0
                p->level--;
12191
0
                return NULL;
12192
0
            }
12193
1.50k
            int _end_lineno = _token->end_lineno;
12194
1.50k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12195
1.50k
            int _end_col_offset = _token->end_col_offset;
12196
1.50k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12197
1.50k
            _res = _PyAST_BoolOp ( Or , CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
12198
1.50k
            if (_res == NULL && PyErr_Occurred()) {
12199
0
                p->error_indicator = 1;
12200
0
                p->level--;
12201
0
                return NULL;
12202
0
            }
12203
1.50k
            goto done;
12204
1.50k
        }
12205
686k
        p->mark = _mark;
12206
686k
        D(fprintf(stderr, "%*c%s disjunction[%d-%d]: %s failed!\n", p->level, ' ',
12207
686k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "conjunction (('or' conjunction))+"));
12208
686k
    }
12209
0
    { // conjunction
12210
686k
        if (p->error_indicator) {
12211
35.8k
            p->level--;
12212
35.8k
            return NULL;
12213
35.8k
        }
12214
650k
        D(fprintf(stderr, "%*c> disjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "conjunction"));
12215
650k
        expr_ty conjunction_var;
12216
650k
        if (
12217
650k
            (conjunction_var = conjunction_rule(p))  // conjunction
12218
650k
        )
12219
381k
        {
12220
381k
            D(fprintf(stderr, "%*c+ disjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "conjunction"));
12221
381k
            _res = conjunction_var;
12222
381k
            goto done;
12223
381k
        }
12224
269k
        p->mark = _mark;
12225
269k
        D(fprintf(stderr, "%*c%s disjunction[%d-%d]: %s failed!\n", p->level, ' ',
12226
269k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "conjunction"));
12227
269k
    }
12228
0
    _res = NULL;
12229
652k
  done:
12230
652k
    _PyPegen_insert_memo(p, _mark, disjunction_type, _res);
12231
652k
    p->level--;
12232
652k
    return _res;
12233
269k
}
12234
12235
// conjunction: inversion (('and' inversion))+ | inversion
12236
static expr_ty
12237
conjunction_rule(Parser *p)
12238
1.34M
{
12239
1.34M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12240
1
        _Pypegen_stack_overflow(p);
12241
1
    }
12242
1.34M
    if (p->error_indicator) {
12243
1
        p->level--;
12244
1
        return NULL;
12245
1
    }
12246
1.34M
    expr_ty _res = NULL;
12247
1.34M
    if (_PyPegen_is_memoized(p, conjunction_type, &_res)) {
12248
651k
        p->level--;
12249
651k
        return _res;
12250
651k
    }
12251
693k
    int _mark = p->mark;
12252
693k
    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
693k
    int _start_lineno = p->tokens[_mark]->lineno;
12258
693k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12259
693k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12260
693k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12261
693k
    { // inversion (('and' inversion))+
12262
693k
        if (p->error_indicator) {
12263
0
            p->level--;
12264
0
            return NULL;
12265
0
        }
12266
693k
        D(fprintf(stderr, "%*c> conjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "inversion (('and' inversion))+"));
12267
693k
        expr_ty a;
12268
693k
        asdl_seq * b;
12269
693k
        if (
12270
693k
            (a = inversion_rule(p))  // inversion
12271
693k
            &&
12272
693k
            (b = _loop1_60_rule(p))  // (('and' inversion))+
12273
693k
        )
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
691k
        p->mark = _mark;
12294
691k
        D(fprintf(stderr, "%*c%s conjunction[%d-%d]: %s failed!\n", p->level, ' ',
12295
691k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "inversion (('and' inversion))+"));
12296
691k
    }
12297
0
    { // inversion
12298
691k
        if (p->error_indicator) {
12299
35.8k
            p->level--;
12300
35.8k
            return NULL;
12301
35.8k
        }
12302
655k
        D(fprintf(stderr, "%*c> conjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "inversion"));
12303
655k
        expr_ty inversion_var;
12304
655k
        if (
12305
655k
            (inversion_var = inversion_rule(p))  // inversion
12306
655k
        )
12307
386k
        {
12308
386k
            D(fprintf(stderr, "%*c+ conjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "inversion"));
12309
386k
            _res = inversion_var;
12310
386k
            goto done;
12311
386k
        }
12312
269k
        p->mark = _mark;
12313
269k
        D(fprintf(stderr, "%*c%s conjunction[%d-%d]: %s failed!\n", p->level, ' ',
12314
269k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "inversion"));
12315
269k
    }
12316
0
    _res = NULL;
12317
657k
  done:
12318
657k
    _PyPegen_insert_memo(p, _mark, conjunction_type, _res);
12319
657k
    p->level--;
12320
657k
    return _res;
12321
269k
}
12322
12323
// inversion: 'not' inversion | comparison
12324
static expr_ty
12325
inversion_rule(Parser *p)
12326
1.35M
{
12327
1.35M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12328
1
        _Pypegen_stack_overflow(p);
12329
1
    }
12330
1.35M
    if (p->error_indicator) {
12331
1
        p->level--;
12332
1
        return NULL;
12333
1
    }
12334
1.35M
    expr_ty _res = NULL;
12335
1.35M
    if (_PyPegen_is_memoized(p, inversion_type, &_res)) {
12336
656k
        p->level--;
12337
656k
        return _res;
12338
656k
    }
12339
698k
    int _mark = p->mark;
12340
698k
    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
698k
    int _start_lineno = p->tokens[_mark]->lineno;
12346
698k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12347
698k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12348
698k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12349
698k
    { // 'not' inversion
12350
698k
        if (p->error_indicator) {
12351
0
            p->level--;
12352
0
            return NULL;
12353
0
        }
12354
698k
        D(fprintf(stderr, "%*c> inversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'not' inversion"));
12355
698k
        Token * _keyword;
12356
698k
        expr_ty a;
12357
698k
        if (
12358
698k
            (_keyword = _PyPegen_expect_token(p, 708))  // token='not'
12359
698k
            &&
12360
698k
            (a = inversion_rule(p))  // inversion
12361
698k
        )
12362
1.54k
        {
12363
1.54k
            D(fprintf(stderr, "%*c+ inversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'not' inversion"));
12364
1.54k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12365
1.54k
            if (_token == NULL) {
12366
0
                p->level--;
12367
0
                return NULL;
12368
0
            }
12369
1.54k
            int _end_lineno = _token->end_lineno;
12370
1.54k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12371
1.54k
            int _end_col_offset = _token->end_col_offset;
12372
1.54k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12373
1.54k
            _res = _PyAST_UnaryOp ( Not , a , EXTRA );
12374
1.54k
            if (_res == NULL && PyErr_Occurred()) {
12375
0
                p->error_indicator = 1;
12376
0
                p->level--;
12377
0
                return NULL;
12378
0
            }
12379
1.54k
            goto done;
12380
1.54k
        }
12381
696k
        p->mark = _mark;
12382
696k
        D(fprintf(stderr, "%*c%s inversion[%d-%d]: %s failed!\n", p->level, ' ',
12383
696k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'not' inversion"));
12384
696k
    }
12385
0
    { // comparison
12386
696k
        if (p->error_indicator) {
12387
205
            p->level--;
12388
205
            return NULL;
12389
205
        }
12390
696k
        D(fprintf(stderr, "%*c> inversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "comparison"));
12391
696k
        expr_ty comparison_var;
12392
696k
        if (
12393
696k
            (comparison_var = comparison_rule(p))  // comparison
12394
696k
        )
12395
390k
        {
12396
390k
            D(fprintf(stderr, "%*c+ inversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "comparison"));
12397
390k
            _res = comparison_var;
12398
390k
            goto done;
12399
390k
        }
12400
305k
        p->mark = _mark;
12401
305k
        D(fprintf(stderr, "%*c%s inversion[%d-%d]: %s failed!\n", p->level, ' ',
12402
305k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "comparison"));
12403
305k
    }
12404
0
    _res = NULL;
12405
697k
  done:
12406
697k
    _PyPegen_insert_memo(p, _mark, inversion_type, _res);
12407
697k
    p->level--;
12408
697k
    return _res;
12409
305k
}
12410
12411
// comparison: bitwise_or compare_op_bitwise_or_pair+ | bitwise_or
12412
static expr_ty
12413
comparison_rule(Parser *p)
12414
696k
{
12415
696k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12416
1
        _Pypegen_stack_overflow(p);
12417
1
    }
12418
696k
    if (p->error_indicator) {
12419
1
        p->level--;
12420
1
        return NULL;
12421
1
    }
12422
696k
    expr_ty _res = NULL;
12423
696k
    int _mark = p->mark;
12424
696k
    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
696k
    int _start_lineno = p->tokens[_mark]->lineno;
12430
696k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12431
696k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12432
696k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12433
696k
    { // bitwise_or compare_op_bitwise_or_pair+
12434
696k
        if (p->error_indicator) {
12435
0
            p->level--;
12436
0
            return NULL;
12437
0
        }
12438
696k
        D(fprintf(stderr, "%*c> comparison[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
12439
696k
        expr_ty a;
12440
696k
        asdl_seq * b;
12441
696k
        if (
12442
696k
            (a = bitwise_or_rule(p))  // bitwise_or
12443
696k
            &&
12444
696k
            (b = _loop1_61_rule(p))  // compare_op_bitwise_or_pair+
12445
696k
        )
12446
9.32k
        {
12447
9.32k
            D(fprintf(stderr, "%*c+ comparison[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
12448
9.32k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12449
9.32k
            if (_token == NULL) {
12450
0
                p->level--;
12451
0
                return NULL;
12452
0
            }
12453
9.32k
            int _end_lineno = _token->end_lineno;
12454
9.32k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12455
9.32k
            int _end_col_offset = _token->end_col_offset;
12456
9.32k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12457
9.32k
            _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.32k
            if (_res == NULL && PyErr_Occurred()) {
12459
0
                p->error_indicator = 1;
12460
0
                p->level--;
12461
0
                return NULL;
12462
0
            }
12463
9.32k
            goto done;
12464
9.32k
        }
12465
686k
        p->mark = _mark;
12466
686k
        D(fprintf(stderr, "%*c%s comparison[%d-%d]: %s failed!\n", p->level, ' ',
12467
686k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
12468
686k
    }
12469
0
    { // bitwise_or
12470
686k
        if (p->error_indicator) {
12471
36.0k
            p->level--;
12472
36.0k
            return NULL;
12473
36.0k
        }
12474
650k
        D(fprintf(stderr, "%*c> comparison[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or"));
12475
650k
        expr_ty bitwise_or_var;
12476
650k
        if (
12477
650k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
12478
650k
        )
12479
381k
        {
12480
381k
            D(fprintf(stderr, "%*c+ comparison[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or"));
12481
381k
            _res = bitwise_or_var;
12482
381k
            goto done;
12483
381k
        }
12484
269k
        p->mark = _mark;
12485
269k
        D(fprintf(stderr, "%*c%s comparison[%d-%d]: %s failed!\n", p->level, ' ',
12486
269k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or"));
12487
269k
    }
12488
0
    _res = NULL;
12489
660k
  done:
12490
660k
    p->level--;
12491
660k
    return _res;
12492
269k
}
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
417k
{
12508
417k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12509
0
        _Pypegen_stack_overflow(p);
12510
0
    }
12511
417k
    if (p->error_indicator) {
12512
0
        p->level--;
12513
0
        return NULL;
12514
0
    }
12515
417k
    CmpopExprPair* _res = NULL;
12516
417k
    int _mark = p->mark;
12517
417k
    { // eq_bitwise_or
12518
417k
        if (p->error_indicator) {
12519
0
            p->level--;
12520
0
            return NULL;
12521
0
        }
12522
417k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "eq_bitwise_or"));
12523
417k
        CmpopExprPair* eq_bitwise_or_var;
12524
417k
        if (
12525
417k
            (eq_bitwise_or_var = eq_bitwise_or_rule(p))  // eq_bitwise_or
12526
417k
        )
12527
1.75k
        {
12528
1.75k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "eq_bitwise_or"));
12529
1.75k
            _res = eq_bitwise_or_var;
12530
1.75k
            goto done;
12531
1.75k
        }
12532
415k
        p->mark = _mark;
12533
415k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12534
415k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "eq_bitwise_or"));
12535
415k
    }
12536
0
    { // noteq_bitwise_or
12537
415k
        if (p->error_indicator) {
12538
262
            p->level--;
12539
262
            return NULL;
12540
262
        }
12541
415k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "noteq_bitwise_or"));
12542
415k
        CmpopExprPair* noteq_bitwise_or_var;
12543
415k
        if (
12544
415k
            (noteq_bitwise_or_var = noteq_bitwise_or_rule(p))  // noteq_bitwise_or
12545
415k
        )
12546
833
        {
12547
833
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "noteq_bitwise_or"));
12548
833
            _res = noteq_bitwise_or_var;
12549
833
            goto done;
12550
833
        }
12551
414k
        p->mark = _mark;
12552
414k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12553
414k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "noteq_bitwise_or"));
12554
414k
    }
12555
0
    { // lte_bitwise_or
12556
414k
        if (p->error_indicator) {
12557
261
            p->level--;
12558
261
            return NULL;
12559
261
        }
12560
414k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lte_bitwise_or"));
12561
414k
        CmpopExprPair* lte_bitwise_or_var;
12562
414k
        if (
12563
414k
            (lte_bitwise_or_var = lte_bitwise_or_rule(p))  // lte_bitwise_or
12564
414k
        )
12565
608
        {
12566
608
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lte_bitwise_or"));
12567
608
            _res = lte_bitwise_or_var;
12568
608
            goto done;
12569
608
        }
12570
413k
        p->mark = _mark;
12571
413k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12572
413k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lte_bitwise_or"));
12573
413k
    }
12574
0
    { // lt_bitwise_or
12575
413k
        if (p->error_indicator) {
12576
199
            p->level--;
12577
199
            return NULL;
12578
199
        }
12579
413k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lt_bitwise_or"));
12580
413k
        CmpopExprPair* lt_bitwise_or_var;
12581
413k
        if (
12582
413k
            (lt_bitwise_or_var = lt_bitwise_or_rule(p))  // lt_bitwise_or
12583
413k
        )
12584
7.64k
        {
12585
7.64k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lt_bitwise_or"));
12586
7.64k
            _res = lt_bitwise_or_var;
12587
7.64k
            goto done;
12588
7.64k
        }
12589
405k
        p->mark = _mark;
12590
405k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12591
405k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lt_bitwise_or"));
12592
405k
    }
12593
0
    { // gte_bitwise_or
12594
405k
        if (p->error_indicator) {
12595
305
            p->level--;
12596
305
            return NULL;
12597
305
        }
12598
405k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "gte_bitwise_or"));
12599
405k
        CmpopExprPair* gte_bitwise_or_var;
12600
405k
        if (
12601
405k
            (gte_bitwise_or_var = gte_bitwise_or_rule(p))  // gte_bitwise_or
12602
405k
        )
12603
584
        {
12604
584
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "gte_bitwise_or"));
12605
584
            _res = gte_bitwise_or_var;
12606
584
            goto done;
12607
584
        }
12608
404k
        p->mark = _mark;
12609
404k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12610
404k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "gte_bitwise_or"));
12611
404k
    }
12612
0
    { // gt_bitwise_or
12613
404k
        if (p->error_indicator) {
12614
194
            p->level--;
12615
194
            return NULL;
12616
194
        }
12617
404k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "gt_bitwise_or"));
12618
404k
        CmpopExprPair* gt_bitwise_or_var;
12619
404k
        if (
12620
404k
            (gt_bitwise_or_var = gt_bitwise_or_rule(p))  // gt_bitwise_or
12621
404k
        )
12622
7.85k
        {
12623
7.85k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "gt_bitwise_or"));
12624
7.85k
            _res = gt_bitwise_or_var;
12625
7.85k
            goto done;
12626
7.85k
        }
12627
396k
        p->mark = _mark;
12628
396k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12629
396k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "gt_bitwise_or"));
12630
396k
    }
12631
0
    { // notin_bitwise_or
12632
396k
        if (p->error_indicator) {
12633
430
            p->level--;
12634
430
            return NULL;
12635
430
        }
12636
396k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "notin_bitwise_or"));
12637
396k
        CmpopExprPair* notin_bitwise_or_var;
12638
396k
        if (
12639
396k
            (notin_bitwise_or_var = notin_bitwise_or_rule(p))  // notin_bitwise_or
12640
396k
        )
12641
701
        {
12642
701
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "notin_bitwise_or"));
12643
701
            _res = notin_bitwise_or_var;
12644
701
            goto done;
12645
701
        }
12646
395k
        p->mark = _mark;
12647
395k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12648
395k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "notin_bitwise_or"));
12649
395k
    }
12650
0
    { // in_bitwise_or
12651
395k
        if (p->error_indicator) {
12652
265
            p->level--;
12653
265
            return NULL;
12654
265
        }
12655
395k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "in_bitwise_or"));
12656
395k
        CmpopExprPair* in_bitwise_or_var;
12657
395k
        if (
12658
395k
            (in_bitwise_or_var = in_bitwise_or_rule(p))  // in_bitwise_or
12659
395k
        )
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
394k
        p->mark = _mark;
12666
394k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12667
394k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "in_bitwise_or"));
12668
394k
    }
12669
0
    { // isnot_bitwise_or
12670
394k
        if (p->error_indicator) {
12671
500
            p->level--;
12672
500
            return NULL;
12673
500
        }
12674
393k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "isnot_bitwise_or"));
12675
393k
        CmpopExprPair* isnot_bitwise_or_var;
12676
393k
        if (
12677
393k
            (isnot_bitwise_or_var = isnot_bitwise_or_rule(p))  // isnot_bitwise_or
12678
393k
        )
12679
822
        {
12680
822
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "isnot_bitwise_or"));
12681
822
            _res = isnot_bitwise_or_var;
12682
822
            goto done;
12683
822
        }
12684
392k
        p->mark = _mark;
12685
392k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12686
392k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "isnot_bitwise_or"));
12687
392k
    }
12688
0
    { // is_bitwise_or
12689
392k
        if (p->error_indicator) {
12690
268
            p->level--;
12691
268
            return NULL;
12692
268
        }
12693
392k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "is_bitwise_or"));
12694
392k
        CmpopExprPair* is_bitwise_or_var;
12695
392k
        if (
12696
392k
            (is_bitwise_or_var = is_bitwise_or_rule(p))  // is_bitwise_or
12697
392k
        )
12698
1.78k
        {
12699
1.78k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "is_bitwise_or"));
12700
1.78k
            _res = is_bitwise_or_var;
12701
1.78k
            goto done;
12702
1.78k
        }
12703
390k
        p->mark = _mark;
12704
390k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12705
390k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "is_bitwise_or"));
12706
390k
    }
12707
0
    _res = NULL;
12708
414k
  done:
12709
414k
    p->level--;
12710
414k
    return _res;
12711
390k
}
12712
12713
// eq_bitwise_or: '==' bitwise_or
12714
static CmpopExprPair*
12715
eq_bitwise_or_rule(Parser *p)
12716
417k
{
12717
417k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12718
0
        _Pypegen_stack_overflow(p);
12719
0
    }
12720
417k
    if (p->error_indicator) {
12721
0
        p->level--;
12722
0
        return NULL;
12723
0
    }
12724
417k
    CmpopExprPair* _res = NULL;
12725
417k
    int _mark = p->mark;
12726
417k
    { // '==' bitwise_or
12727
417k
        if (p->error_indicator) {
12728
0
            p->level--;
12729
0
            return NULL;
12730
0
        }
12731
417k
        D(fprintf(stderr, "%*c> eq_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'==' bitwise_or"));
12732
417k
        Token * _literal;
12733
417k
        expr_ty a;
12734
417k
        if (
12735
417k
            (_literal = _PyPegen_expect_token(p, 27))  // token='=='
12736
417k
            &&
12737
417k
            (a = bitwise_or_rule(p))  // bitwise_or
12738
417k
        )
12739
1.75k
        {
12740
1.75k
            D(fprintf(stderr, "%*c+ eq_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'==' bitwise_or"));
12741
1.75k
            _res = _PyPegen_cmpop_expr_pair ( p , Eq , a );
12742
1.75k
            if (_res == NULL && PyErr_Occurred()) {
12743
0
                p->error_indicator = 1;
12744
0
                p->level--;
12745
0
                return NULL;
12746
0
            }
12747
1.75k
            goto done;
12748
1.75k
        }
12749
415k
        p->mark = _mark;
12750
415k
        D(fprintf(stderr, "%*c%s eq_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12751
415k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'==' bitwise_or"));
12752
415k
    }
12753
0
    _res = NULL;
12754
417k
  done:
12755
417k
    p->level--;
12756
417k
    return _res;
12757
415k
}
12758
12759
// noteq_bitwise_or: ('!=') bitwise_or
12760
static CmpopExprPair*
12761
noteq_bitwise_or_rule(Parser *p)
12762
415k
{
12763
415k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12764
0
        _Pypegen_stack_overflow(p);
12765
0
    }
12766
415k
    if (p->error_indicator) {
12767
0
        p->level--;
12768
0
        return NULL;
12769
0
    }
12770
415k
    CmpopExprPair* _res = NULL;
12771
415k
    int _mark = p->mark;
12772
415k
    { // ('!=') bitwise_or
12773
415k
        if (p->error_indicator) {
12774
0
            p->level--;
12775
0
            return NULL;
12776
0
        }
12777
415k
        D(fprintf(stderr, "%*c> noteq_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('!=') bitwise_or"));
12778
415k
        void *_tmp_62_var;
12779
415k
        expr_ty a;
12780
415k
        if (
12781
415k
            (_tmp_62_var = _tmp_62_rule(p))  // '!='
12782
415k
            &&
12783
415k
            (a = bitwise_or_rule(p))  // bitwise_or
12784
415k
        )
12785
833
        {
12786
833
            D(fprintf(stderr, "%*c+ noteq_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('!=') bitwise_or"));
12787
833
            _res = _PyPegen_cmpop_expr_pair ( p , NotEq , a );
12788
833
            if (_res == NULL && PyErr_Occurred()) {
12789
0
                p->error_indicator = 1;
12790
0
                p->level--;
12791
0
                return NULL;
12792
0
            }
12793
833
            goto done;
12794
833
        }
12795
414k
        p->mark = _mark;
12796
414k
        D(fprintf(stderr, "%*c%s noteq_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12797
414k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('!=') bitwise_or"));
12798
414k
    }
12799
0
    _res = NULL;
12800
415k
  done:
12801
415k
    p->level--;
12802
415k
    return _res;
12803
414k
}
12804
12805
// lte_bitwise_or: '<=' bitwise_or
12806
static CmpopExprPair*
12807
lte_bitwise_or_rule(Parser *p)
12808
414k
{
12809
414k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12810
0
        _Pypegen_stack_overflow(p);
12811
0
    }
12812
414k
    if (p->error_indicator) {
12813
0
        p->level--;
12814
0
        return NULL;
12815
0
    }
12816
414k
    CmpopExprPair* _res = NULL;
12817
414k
    int _mark = p->mark;
12818
414k
    { // '<=' bitwise_or
12819
414k
        if (p->error_indicator) {
12820
0
            p->level--;
12821
0
            return NULL;
12822
0
        }
12823
414k
        D(fprintf(stderr, "%*c> lte_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<=' bitwise_or"));
12824
414k
        Token * _literal;
12825
414k
        expr_ty a;
12826
414k
        if (
12827
414k
            (_literal = _PyPegen_expect_token(p, 29))  // token='<='
12828
414k
            &&
12829
414k
            (a = bitwise_or_rule(p))  // bitwise_or
12830
414k
        )
12831
608
        {
12832
608
            D(fprintf(stderr, "%*c+ lte_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<=' bitwise_or"));
12833
608
            _res = _PyPegen_cmpop_expr_pair ( p , LtE , a );
12834
608
            if (_res == NULL && PyErr_Occurred()) {
12835
0
                p->error_indicator = 1;
12836
0
                p->level--;
12837
0
                return NULL;
12838
0
            }
12839
608
            goto done;
12840
608
        }
12841
413k
        p->mark = _mark;
12842
413k
        D(fprintf(stderr, "%*c%s lte_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12843
413k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<=' bitwise_or"));
12844
413k
    }
12845
0
    _res = NULL;
12846
414k
  done:
12847
414k
    p->level--;
12848
414k
    return _res;
12849
413k
}
12850
12851
// lt_bitwise_or: '<' bitwise_or
12852
static CmpopExprPair*
12853
lt_bitwise_or_rule(Parser *p)
12854
413k
{
12855
413k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12856
0
        _Pypegen_stack_overflow(p);
12857
0
    }
12858
413k
    if (p->error_indicator) {
12859
0
        p->level--;
12860
0
        return NULL;
12861
0
    }
12862
413k
    CmpopExprPair* _res = NULL;
12863
413k
    int _mark = p->mark;
12864
413k
    { // '<' bitwise_or
12865
413k
        if (p->error_indicator) {
12866
0
            p->level--;
12867
0
            return NULL;
12868
0
        }
12869
413k
        D(fprintf(stderr, "%*c> lt_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<' bitwise_or"));
12870
413k
        Token * _literal;
12871
413k
        expr_ty a;
12872
413k
        if (
12873
413k
            (_literal = _PyPegen_expect_token(p, 20))  // token='<'
12874
413k
            &&
12875
413k
            (a = bitwise_or_rule(p))  // bitwise_or
12876
413k
        )
12877
7.64k
        {
12878
7.64k
            D(fprintf(stderr, "%*c+ lt_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<' bitwise_or"));
12879
7.64k
            _res = _PyPegen_cmpop_expr_pair ( p , Lt , a );
12880
7.64k
            if (_res == NULL && PyErr_Occurred()) {
12881
0
                p->error_indicator = 1;
12882
0
                p->level--;
12883
0
                return NULL;
12884
0
            }
12885
7.64k
            goto done;
12886
7.64k
        }
12887
405k
        p->mark = _mark;
12888
405k
        D(fprintf(stderr, "%*c%s lt_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12889
405k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<' bitwise_or"));
12890
405k
    }
12891
0
    _res = NULL;
12892
413k
  done:
12893
413k
    p->level--;
12894
413k
    return _res;
12895
405k
}
12896
12897
// gte_bitwise_or: '>=' bitwise_or
12898
static CmpopExprPair*
12899
gte_bitwise_or_rule(Parser *p)
12900
405k
{
12901
405k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12902
0
        _Pypegen_stack_overflow(p);
12903
0
    }
12904
405k
    if (p->error_indicator) {
12905
0
        p->level--;
12906
0
        return NULL;
12907
0
    }
12908
405k
    CmpopExprPair* _res = NULL;
12909
405k
    int _mark = p->mark;
12910
405k
    { // '>=' bitwise_or
12911
405k
        if (p->error_indicator) {
12912
0
            p->level--;
12913
0
            return NULL;
12914
0
        }
12915
405k
        D(fprintf(stderr, "%*c> gte_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>=' bitwise_or"));
12916
405k
        Token * _literal;
12917
405k
        expr_ty a;
12918
405k
        if (
12919
405k
            (_literal = _PyPegen_expect_token(p, 30))  // token='>='
12920
405k
            &&
12921
405k
            (a = bitwise_or_rule(p))  // bitwise_or
12922
405k
        )
12923
584
        {
12924
584
            D(fprintf(stderr, "%*c+ gte_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>=' bitwise_or"));
12925
584
            _res = _PyPegen_cmpop_expr_pair ( p , GtE , a );
12926
584
            if (_res == NULL && PyErr_Occurred()) {
12927
0
                p->error_indicator = 1;
12928
0
                p->level--;
12929
0
                return NULL;
12930
0
            }
12931
584
            goto done;
12932
584
        }
12933
404k
        p->mark = _mark;
12934
404k
        D(fprintf(stderr, "%*c%s gte_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12935
404k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>=' bitwise_or"));
12936
404k
    }
12937
0
    _res = NULL;
12938
405k
  done:
12939
405k
    p->level--;
12940
405k
    return _res;
12941
404k
}
12942
12943
// gt_bitwise_or: '>' bitwise_or
12944
static CmpopExprPair*
12945
gt_bitwise_or_rule(Parser *p)
12946
404k
{
12947
404k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12948
0
        _Pypegen_stack_overflow(p);
12949
0
    }
12950
404k
    if (p->error_indicator) {
12951
0
        p->level--;
12952
0
        return NULL;
12953
0
    }
12954
404k
    CmpopExprPair* _res = NULL;
12955
404k
    int _mark = p->mark;
12956
404k
    { // '>' bitwise_or
12957
404k
        if (p->error_indicator) {
12958
0
            p->level--;
12959
0
            return NULL;
12960
0
        }
12961
404k
        D(fprintf(stderr, "%*c> gt_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>' bitwise_or"));
12962
404k
        Token * _literal;
12963
404k
        expr_ty a;
12964
404k
        if (
12965
404k
            (_literal = _PyPegen_expect_token(p, 21))  // token='>'
12966
404k
            &&
12967
404k
            (a = bitwise_or_rule(p))  // bitwise_or
12968
404k
        )
12969
7.85k
        {
12970
7.85k
            D(fprintf(stderr, "%*c+ gt_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>' bitwise_or"));
12971
7.85k
            _res = _PyPegen_cmpop_expr_pair ( p , Gt , a );
12972
7.85k
            if (_res == NULL && PyErr_Occurred()) {
12973
0
                p->error_indicator = 1;
12974
0
                p->level--;
12975
0
                return NULL;
12976
0
            }
12977
7.85k
            goto done;
12978
7.85k
        }
12979
396k
        p->mark = _mark;
12980
396k
        D(fprintf(stderr, "%*c%s gt_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12981
396k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>' bitwise_or"));
12982
396k
    }
12983
0
    _res = NULL;
12984
404k
  done:
12985
404k
    p->level--;
12986
404k
    return _res;
12987
396k
}
12988
12989
// notin_bitwise_or: 'not' 'in' bitwise_or
12990
static CmpopExprPair*
12991
notin_bitwise_or_rule(Parser *p)
12992
396k
{
12993
396k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12994
0
        _Pypegen_stack_overflow(p);
12995
0
    }
12996
396k
    if (p->error_indicator) {
12997
0
        p->level--;
12998
0
        return NULL;
12999
0
    }
13000
396k
    CmpopExprPair* _res = NULL;
13001
396k
    int _mark = p->mark;
13002
396k
    { // 'not' 'in' bitwise_or
13003
396k
        if (p->error_indicator) {
13004
0
            p->level--;
13005
0
            return NULL;
13006
0
        }
13007
396k
        D(fprintf(stderr, "%*c> notin_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'not' 'in' bitwise_or"));
13008
396k
        Token * _keyword;
13009
396k
        Token * _keyword_1;
13010
396k
        expr_ty a;
13011
396k
        if (
13012
396k
            (_keyword = _PyPegen_expect_token(p, 708))  // token='not'
13013
396k
            &&
13014
396k
            (_keyword_1 = _PyPegen_expect_token(p, 700))  // token='in'
13015
396k
            &&
13016
396k
            (a = bitwise_or_rule(p))  // bitwise_or
13017
396k
        )
13018
701
        {
13019
701
            D(fprintf(stderr, "%*c+ notin_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'not' 'in' bitwise_or"));
13020
701
            _res = _PyPegen_cmpop_expr_pair ( p , NotIn , a );
13021
701
            if (_res == NULL && PyErr_Occurred()) {
13022
0
                p->error_indicator = 1;
13023
0
                p->level--;
13024
0
                return NULL;
13025
0
            }
13026
701
            goto done;
13027
701
        }
13028
395k
        p->mark = _mark;
13029
395k
        D(fprintf(stderr, "%*c%s notin_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13030
395k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'not' 'in' bitwise_or"));
13031
395k
    }
13032
0
    _res = NULL;
13033
396k
  done:
13034
396k
    p->level--;
13035
396k
    return _res;
13036
395k
}
13037
13038
// in_bitwise_or: 'in' bitwise_or
13039
static CmpopExprPair*
13040
in_bitwise_or_rule(Parser *p)
13041
395k
{
13042
395k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13043
0
        _Pypegen_stack_overflow(p);
13044
0
    }
13045
395k
    if (p->error_indicator) {
13046
0
        p->level--;
13047
0
        return NULL;
13048
0
    }
13049
395k
    CmpopExprPair* _res = NULL;
13050
395k
    int _mark = p->mark;
13051
395k
    { // 'in' bitwise_or
13052
395k
        if (p->error_indicator) {
13053
0
            p->level--;
13054
0
            return NULL;
13055
0
        }
13056
395k
        D(fprintf(stderr, "%*c> in_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'in' bitwise_or"));
13057
395k
        Token * _keyword;
13058
395k
        expr_ty a;
13059
395k
        if (
13060
395k
            (_keyword = _PyPegen_expect_token(p, 700))  // token='in'
13061
395k
            &&
13062
395k
            (a = bitwise_or_rule(p))  // bitwise_or
13063
395k
        )
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
394k
        p->mark = _mark;
13075
394k
        D(fprintf(stderr, "%*c%s in_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13076
394k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'in' bitwise_or"));
13077
394k
    }
13078
0
    _res = NULL;
13079
395k
  done:
13080
395k
    p->level--;
13081
395k
    return _res;
13082
394k
}
13083
13084
// isnot_bitwise_or: 'is' 'not' bitwise_or
13085
static CmpopExprPair*
13086
isnot_bitwise_or_rule(Parser *p)
13087
393k
{
13088
393k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13089
0
        _Pypegen_stack_overflow(p);
13090
0
    }
13091
393k
    if (p->error_indicator) {
13092
0
        p->level--;
13093
0
        return NULL;
13094
0
    }
13095
393k
    CmpopExprPair* _res = NULL;
13096
393k
    int _mark = p->mark;
13097
393k
    { // 'is' 'not' bitwise_or
13098
393k
        if (p->error_indicator) {
13099
0
            p->level--;
13100
0
            return NULL;
13101
0
        }
13102
393k
        D(fprintf(stderr, "%*c> isnot_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'is' 'not' bitwise_or"));
13103
393k
        Token * _keyword;
13104
393k
        Token * _keyword_1;
13105
393k
        expr_ty a;
13106
393k
        if (
13107
393k
            (_keyword = _PyPegen_expect_token(p, 597))  // token='is'
13108
393k
            &&
13109
393k
            (_keyword_1 = _PyPegen_expect_token(p, 708))  // token='not'
13110
393k
            &&
13111
393k
            (a = bitwise_or_rule(p))  // bitwise_or
13112
393k
        )
13113
822
        {
13114
822
            D(fprintf(stderr, "%*c+ isnot_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'is' 'not' bitwise_or"));
13115
822
            _res = _PyPegen_cmpop_expr_pair ( p , IsNot , a );
13116
822
            if (_res == NULL && PyErr_Occurred()) {
13117
0
                p->error_indicator = 1;
13118
0
                p->level--;
13119
0
                return NULL;
13120
0
            }
13121
822
            goto done;
13122
822
        }
13123
392k
        p->mark = _mark;
13124
392k
        D(fprintf(stderr, "%*c%s isnot_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13125
392k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'is' 'not' bitwise_or"));
13126
392k
    }
13127
0
    _res = NULL;
13128
393k
  done:
13129
393k
    p->level--;
13130
393k
    return _res;
13131
392k
}
13132
13133
// is_bitwise_or: 'is' bitwise_or
13134
static CmpopExprPair*
13135
is_bitwise_or_rule(Parser *p)
13136
392k
{
13137
392k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13138
0
        _Pypegen_stack_overflow(p);
13139
0
    }
13140
392k
    if (p->error_indicator) {
13141
0
        p->level--;
13142
0
        return NULL;
13143
0
    }
13144
392k
    CmpopExprPair* _res = NULL;
13145
392k
    int _mark = p->mark;
13146
392k
    { // 'is' bitwise_or
13147
392k
        if (p->error_indicator) {
13148
0
            p->level--;
13149
0
            return NULL;
13150
0
        }
13151
392k
        D(fprintf(stderr, "%*c> is_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'is' bitwise_or"));
13152
392k
        Token * _keyword;
13153
392k
        expr_ty a;
13154
392k
        if (
13155
392k
            (_keyword = _PyPegen_expect_token(p, 597))  // token='is'
13156
392k
            &&
13157
392k
            (a = bitwise_or_rule(p))  // bitwise_or
13158
392k
        )
13159
1.78k
        {
13160
1.78k
            D(fprintf(stderr, "%*c+ is_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'is' bitwise_or"));
13161
1.78k
            _res = _PyPegen_cmpop_expr_pair ( p , Is , a );
13162
1.78k
            if (_res == NULL && PyErr_Occurred()) {
13163
0
                p->error_indicator = 1;
13164
0
                p->level--;
13165
0
                return NULL;
13166
0
            }
13167
1.78k
            goto done;
13168
1.78k
        }
13169
390k
        p->mark = _mark;
13170
390k
        D(fprintf(stderr, "%*c%s is_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13171
390k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'is' bitwise_or"));
13172
390k
    }
13173
0
    _res = NULL;
13174
392k
  done:
13175
392k
    p->level--;
13176
392k
    return _res;
13177
390k
}
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.63M
{
13185
2.63M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13186
1
        _Pypegen_stack_overflow(p);
13187
1
    }
13188
2.63M
    expr_ty _res = NULL;
13189
2.63M
    if (_PyPegen_is_memoized(p, bitwise_or_type, &_res)) {
13190
1.90M
        p->level--;
13191
1.90M
        return _res;
13192
1.90M
    }
13193
735k
    int _mark = p->mark;
13194
735k
    int _resmark = p->mark;
13195
1.15M
    while (1) {
13196
1.15M
        int tmpvar_2 = _PyPegen_update_memo(p, _mark, bitwise_or_type, _res);
13197
1.15M
        if (tmpvar_2) {
13198
0
            p->level--;
13199
0
            return _res;
13200
0
        }
13201
1.15M
        p->mark = _mark;
13202
1.15M
        void *_raw = bitwise_or_raw(p);
13203
1.15M
        if (p->error_indicator) {
13204
38.3k
            p->level--;
13205
38.3k
            return NULL;
13206
38.3k
        }
13207
1.12M
        if (_raw == NULL || p->mark <= _resmark)
13208
697k
            break;
13209
423k
        _resmark = p->mark;
13210
423k
        _res = _raw;
13211
423k
    }
13212
697k
    p->mark = _resmark;
13213
697k
    p->level--;
13214
697k
    return _res;
13215
735k
}
13216
static expr_ty
13217
bitwise_or_raw(Parser *p)
13218
1.15M
{
13219
1.15M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13220
1
        _Pypegen_stack_overflow(p);
13221
1
    }
13222
1.15M
    if (p->error_indicator) {
13223
2
        p->level--;
13224
2
        return NULL;
13225
2
    }
13226
1.15M
    expr_ty _res = NULL;
13227
1.15M
    int _mark = p->mark;
13228
1.15M
    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.15M
    int _start_lineno = p->tokens[_mark]->lineno;
13234
1.15M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13235
1.15M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13236
1.15M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13237
1.15M
    { // bitwise_or '|' bitwise_xor
13238
1.15M
        if (p->error_indicator) {
13239
0
            p->level--;
13240
0
            return NULL;
13241
0
        }
13242
1.15M
        D(fprintf(stderr, "%*c> bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or '|' bitwise_xor"));
13243
1.15M
        Token * _literal;
13244
1.15M
        expr_ty a;
13245
1.15M
        expr_ty b;
13246
1.15M
        if (
13247
1.15M
            (a = bitwise_or_rule(p))  // bitwise_or
13248
1.15M
            &&
13249
1.15M
            (_literal = _PyPegen_expect_token(p, 18))  // token='|'
13250
1.15M
            &&
13251
1.15M
            (b = bitwise_xor_rule(p))  // bitwise_xor
13252
1.15M
        )
13253
892
        {
13254
892
            D(fprintf(stderr, "%*c+ bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or '|' bitwise_xor"));
13255
892
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13256
892
            if (_token == NULL) {
13257
0
                p->level--;
13258
0
                return NULL;
13259
0
            }
13260
892
            int _end_lineno = _token->end_lineno;
13261
892
            UNUSED(_end_lineno); // Only used by EXTRA macro
13262
892
            int _end_col_offset = _token->end_col_offset;
13263
892
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13264
892
            _res = _PyAST_BinOp ( a , BitOr , b , EXTRA );
13265
892
            if (_res == NULL && PyErr_Occurred()) {
13266
0
                p->error_indicator = 1;
13267
0
                p->level--;
13268
0
                return NULL;
13269
0
            }
13270
892
            goto done;
13271
892
        }
13272
1.15M
        p->mark = _mark;
13273
1.15M
        D(fprintf(stderr, "%*c%s bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13274
1.15M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or '|' bitwise_xor"));
13275
1.15M
    }
13276
0
    { // bitwise_xor
13277
1.15M
        if (p->error_indicator) {
13278
301
            p->level--;
13279
301
            return NULL;
13280
301
        }
13281
1.15M
        D(fprintf(stderr, "%*c> bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_xor"));
13282
1.15M
        expr_ty bitwise_xor_var;
13283
1.15M
        if (
13284
1.15M
            (bitwise_xor_var = bitwise_xor_rule(p))  // bitwise_xor
13285
1.15M
        )
13286
845k
        {
13287
845k
            D(fprintf(stderr, "%*c+ bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_xor"));
13288
845k
            _res = bitwise_xor_var;
13289
845k
            goto done;
13290
845k
        }
13291
312k
        p->mark = _mark;
13292
312k
        D(fprintf(stderr, "%*c%s bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13293
312k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_xor"));
13294
312k
    }
13295
0
    _res = NULL;
13296
1.15M
  done:
13297
1.15M
    p->level--;
13298
1.15M
    return _res;
13299
312k
}
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.32M
{
13307
2.32M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13308
1
        _Pypegen_stack_overflow(p);
13309
1
    }
13310
2.32M
    expr_ty _res = NULL;
13311
2.32M
    if (_PyPegen_is_memoized(p, bitwise_xor_type, &_res)) {
13312
1.58M
        p->level--;
13313
1.58M
        return _res;
13314
1.58M
    }
13315
737k
    int _mark = p->mark;
13316
737k
    int _resmark = p->mark;
13317
1.16M
    while (1) {
13318
1.16M
        int tmpvar_3 = _PyPegen_update_memo(p, _mark, bitwise_xor_type, _res);
13319
1.16M
        if (tmpvar_3) {
13320
0
            p->level--;
13321
0
            return _res;
13322
0
        }
13323
1.16M
        p->mark = _mark;
13324
1.16M
        void *_raw = bitwise_xor_raw(p);
13325
1.16M
        if (p->error_indicator) {
13326
38.3k
            p->level--;
13327
38.3k
            return NULL;
13328
38.3k
        }
13329
1.12M
        if (_raw == NULL || p->mark <= _resmark)
13330
698k
            break;
13331
424k
        _resmark = p->mark;
13332
424k
        _res = _raw;
13333
424k
    }
13334
698k
    p->mark = _resmark;
13335
698k
    p->level--;
13336
698k
    return _res;
13337
737k
}
13338
static expr_ty
13339
bitwise_xor_raw(Parser *p)
13340
1.16M
{
13341
1.16M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13342
1
        _Pypegen_stack_overflow(p);
13343
1
    }
13344
1.16M
    if (p->error_indicator) {
13345
1
        p->level--;
13346
1
        return NULL;
13347
1
    }
13348
1.16M
    expr_ty _res = NULL;
13349
1.16M
    int _mark = p->mark;
13350
1.16M
    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.16M
    int _start_lineno = p->tokens[_mark]->lineno;
13356
1.16M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13357
1.16M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13358
1.16M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13359
1.16M
    { // bitwise_xor '^' bitwise_and
13360
1.16M
        if (p->error_indicator) {
13361
0
            p->level--;
13362
0
            return NULL;
13363
0
        }
13364
1.16M
        D(fprintf(stderr, "%*c> bitwise_xor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_xor '^' bitwise_and"));
13365
1.16M
        Token * _literal;
13366
1.16M
        expr_ty a;
13367
1.16M
        expr_ty b;
13368
1.16M
        if (
13369
1.16M
            (a = bitwise_xor_rule(p))  // bitwise_xor
13370
1.16M
            &&
13371
1.16M
            (_literal = _PyPegen_expect_token(p, 32))  // token='^'
13372
1.16M
            &&
13373
1.16M
            (b = bitwise_and_rule(p))  // bitwise_and
13374
1.16M
        )
13375
795
        {
13376
795
            D(fprintf(stderr, "%*c+ bitwise_xor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_xor '^' bitwise_and"));
13377
795
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13378
795
            if (_token == NULL) {
13379
0
                p->level--;
13380
0
                return NULL;
13381
0
            }
13382
795
            int _end_lineno = _token->end_lineno;
13383
795
            UNUSED(_end_lineno); // Only used by EXTRA macro
13384
795
            int _end_col_offset = _token->end_col_offset;
13385
795
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13386
795
            _res = _PyAST_BinOp ( a , BitXor , b , EXTRA );
13387
795
            if (_res == NULL && PyErr_Occurred()) {
13388
0
                p->error_indicator = 1;
13389
0
                p->level--;
13390
0
                return NULL;
13391
0
            }
13392
795
            goto done;
13393
795
        }
13394
1.16M
        p->mark = _mark;
13395
1.16M
        D(fprintf(stderr, "%*c%s bitwise_xor[%d-%d]: %s failed!\n", p->level, ' ',
13396
1.16M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_xor '^' bitwise_and"));
13397
1.16M
    }
13398
0
    { // bitwise_and
13399
1.16M
        if (p->error_indicator) {
13400
200
            p->level--;
13401
200
            return NULL;
13402
200
        }
13403
1.16M
        D(fprintf(stderr, "%*c> bitwise_xor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_and"));
13404
1.16M
        expr_ty bitwise_and_var;
13405
1.16M
        if (
13406
1.16M
            (bitwise_and_var = bitwise_and_rule(p))  // bitwise_and
13407
1.16M
        )
13408
848k
        {
13409
848k
            D(fprintf(stderr, "%*c+ bitwise_xor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_and"));
13410
848k
            _res = bitwise_and_var;
13411
848k
            goto done;
13412
848k
        }
13413
313k
        p->mark = _mark;
13414
313k
        D(fprintf(stderr, "%*c%s bitwise_xor[%d-%d]: %s failed!\n", p->level, ' ',
13415
313k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_and"));
13416
313k
    }
13417
0
    _res = NULL;
13418
1.16M
  done:
13419
1.16M
    p->level--;
13420
1.16M
    return _res;
13421
313k
}
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.32M
{
13429
2.32M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13430
2
        _Pypegen_stack_overflow(p);
13431
2
    }
13432
2.32M
    expr_ty _res = NULL;
13433
2.32M
    if (_PyPegen_is_memoized(p, bitwise_and_type, &_res)) {
13434
1.59M
        p->level--;
13435
1.59M
        return _res;
13436
1.59M
    }
13437
738k
    int _mark = p->mark;
13438
738k
    int _resmark = p->mark;
13439
1.16M
    while (1) {
13440
1.16M
        int tmpvar_4 = _PyPegen_update_memo(p, _mark, bitwise_and_type, _res);
13441
1.16M
        if (tmpvar_4) {
13442
0
            p->level--;
13443
0
            return _res;
13444
0
        }
13445
1.16M
        p->mark = _mark;
13446
1.16M
        void *_raw = bitwise_and_raw(p);
13447
1.16M
        if (p->error_indicator) {
13448
38.3k
            p->level--;
13449
38.3k
            return NULL;
13450
38.3k
        }
13451
1.12M
        if (_raw == NULL || p->mark <= _resmark)
13452
699k
            break;
13453
427k
        _resmark = p->mark;
13454
427k
        _res = _raw;
13455
427k
    }
13456
699k
    p->mark = _resmark;
13457
699k
    p->level--;
13458
699k
    return _res;
13459
738k
}
13460
static expr_ty
13461
bitwise_and_raw(Parser *p)
13462
1.16M
{
13463
1.16M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13464
1
        _Pypegen_stack_overflow(p);
13465
1
    }
13466
1.16M
    if (p->error_indicator) {
13467
1
        p->level--;
13468
1
        return NULL;
13469
1
    }
13470
1.16M
    expr_ty _res = NULL;
13471
1.16M
    int _mark = p->mark;
13472
1.16M
    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.16M
    int _start_lineno = p->tokens[_mark]->lineno;
13478
1.16M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13479
1.16M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13480
1.16M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13481
1.16M
    { // bitwise_and '&' shift_expr
13482
1.16M
        if (p->error_indicator) {
13483
0
            p->level--;
13484
0
            return NULL;
13485
0
        }
13486
1.16M
        D(fprintf(stderr, "%*c> bitwise_and[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_and '&' shift_expr"));
13487
1.16M
        Token * _literal;
13488
1.16M
        expr_ty a;
13489
1.16M
        expr_ty b;
13490
1.16M
        if (
13491
1.16M
            (a = bitwise_and_rule(p))  // bitwise_and
13492
1.16M
            &&
13493
1.16M
            (_literal = _PyPegen_expect_token(p, 19))  // token='&'
13494
1.16M
            &&
13495
1.16M
            (b = shift_expr_rule(p))  // shift_expr
13496
1.16M
        )
13497
2.65k
        {
13498
2.65k
            D(fprintf(stderr, "%*c+ bitwise_and[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_and '&' shift_expr"));
13499
2.65k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13500
2.65k
            if (_token == NULL) {
13501
0
                p->level--;
13502
0
                return NULL;
13503
0
            }
13504
2.65k
            int _end_lineno = _token->end_lineno;
13505
2.65k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13506
2.65k
            int _end_col_offset = _token->end_col_offset;
13507
2.65k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13508
2.65k
            _res = _PyAST_BinOp ( a , BitAnd , b , EXTRA );
13509
2.65k
            if (_res == NULL && PyErr_Occurred()) {
13510
0
                p->error_indicator = 1;
13511
0
                p->level--;
13512
0
                return NULL;
13513
0
            }
13514
2.65k
            goto done;
13515
2.65k
        }
13516
1.16M
        p->mark = _mark;
13517
1.16M
        D(fprintf(stderr, "%*c%s bitwise_and[%d-%d]: %s failed!\n", p->level, ' ',
13518
1.16M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_and '&' shift_expr"));
13519
1.16M
    }
13520
0
    { // shift_expr
13521
1.16M
        if (p->error_indicator) {
13522
413
            p->level--;
13523
413
            return NULL;
13524
413
        }
13525
1.16M
        D(fprintf(stderr, "%*c> bitwise_and[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr"));
13526
1.16M
        expr_ty shift_expr_var;
13527
1.16M
        if (
13528
1.16M
            (shift_expr_var = shift_expr_rule(p))  // shift_expr
13529
1.16M
        )
13530
850k
        {
13531
850k
            D(fprintf(stderr, "%*c+ bitwise_and[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr"));
13532
850k
            _res = shift_expr_var;
13533
850k
            goto done;
13534
850k
        }
13535
313k
        p->mark = _mark;
13536
313k
        D(fprintf(stderr, "%*c%s bitwise_and[%d-%d]: %s failed!\n", p->level, ' ',
13537
313k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr"));
13538
313k
    }
13539
0
    _res = NULL;
13540
1.16M
  done:
13541
1.16M
    p->level--;
13542
1.16M
    return _res;
13543
313k
}
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.50M
{
13551
3.50M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13552
1
        _Pypegen_stack_overflow(p);
13553
1
    }
13554
3.50M
    expr_ty _res = NULL;
13555
3.50M
    if (_PyPegen_is_memoized(p, shift_expr_type, &_res)) {
13556
2.76M
        p->level--;
13557
2.76M
        return _res;
13558
2.76M
    }
13559
741k
    int _mark = p->mark;
13560
741k
    int _resmark = p->mark;
13561
1.17M
    while (1) {
13562
1.17M
        int tmpvar_5 = _PyPegen_update_memo(p, _mark, shift_expr_type, _res);
13563
1.17M
        if (tmpvar_5) {
13564
0
            p->level--;
13565
0
            return _res;
13566
0
        }
13567
1.17M
        p->mark = _mark;
13568
1.17M
        void *_raw = shift_expr_raw(p);
13569
1.17M
        if (p->error_indicator) {
13570
38.3k
            p->level--;
13571
38.3k
            return NULL;
13572
38.3k
        }
13573
1.13M
        if (_raw == NULL || p->mark <= _resmark)
13574
703k
            break;
13575
429k
        _resmark = p->mark;
13576
429k
        _res = _raw;
13577
429k
    }
13578
703k
    p->mark = _resmark;
13579
703k
    p->level--;
13580
703k
    return _res;
13581
741k
}
13582
static expr_ty
13583
shift_expr_raw(Parser *p)
13584
1.17M
{
13585
1.17M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13586
1
        _Pypegen_stack_overflow(p);
13587
1
    }
13588
1.17M
    if (p->error_indicator) {
13589
1
        p->level--;
13590
1
        return NULL;
13591
1
    }
13592
1.17M
    expr_ty _res = NULL;
13593
1.17M
    int _mark = p->mark;
13594
1.17M
    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.17M
    int _start_lineno = p->tokens[_mark]->lineno;
13600
1.17M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13601
1.17M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13602
1.17M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13603
1.17M
    { // shift_expr '<<' sum
13604
1.17M
        if (p->error_indicator) {
13605
0
            p->level--;
13606
0
            return NULL;
13607
0
        }
13608
1.17M
        D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr '<<' sum"));
13609
1.17M
        Token * _literal;
13610
1.17M
        expr_ty a;
13611
1.17M
        expr_ty b;
13612
1.17M
        if (
13613
1.17M
            (a = shift_expr_rule(p))  // shift_expr
13614
1.17M
            &&
13615
1.17M
            (_literal = _PyPegen_expect_token(p, 33))  // token='<<'
13616
1.17M
            &&
13617
1.17M
            (b = sum_rule(p))  // sum
13618
1.17M
        )
13619
835
        {
13620
835
            D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr '<<' sum"));
13621
835
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13622
835
            if (_token == NULL) {
13623
0
                p->level--;
13624
0
                return NULL;
13625
0
            }
13626
835
            int _end_lineno = _token->end_lineno;
13627
835
            UNUSED(_end_lineno); // Only used by EXTRA macro
13628
835
            int _end_col_offset = _token->end_col_offset;
13629
835
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13630
835
            _res = _PyAST_BinOp ( a , LShift , b , EXTRA );
13631
835
            if (_res == NULL && PyErr_Occurred()) {
13632
0
                p->error_indicator = 1;
13633
0
                p->level--;
13634
0
                return NULL;
13635
0
            }
13636
835
            goto done;
13637
835
        }
13638
1.17M
        p->mark = _mark;
13639
1.17M
        D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13640
1.17M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr '<<' sum"));
13641
1.17M
    }
13642
0
    { // shift_expr '>>' sum
13643
1.17M
        if (p->error_indicator) {
13644
195
            p->level--;
13645
195
            return NULL;
13646
195
        }
13647
1.17M
        D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr '>>' sum"));
13648
1.17M
        Token * _literal;
13649
1.17M
        expr_ty a;
13650
1.17M
        expr_ty b;
13651
1.17M
        if (
13652
1.17M
            (a = shift_expr_rule(p))  // shift_expr
13653
1.17M
            &&
13654
1.17M
            (_literal = _PyPegen_expect_token(p, 34))  // token='>>'
13655
1.17M
            &&
13656
1.17M
            (b = sum_rule(p))  // sum
13657
1.17M
        )
13658
693
        {
13659
693
            D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr '>>' sum"));
13660
693
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13661
693
            if (_token == NULL) {
13662
0
                p->level--;
13663
0
                return NULL;
13664
0
            }
13665
693
            int _end_lineno = _token->end_lineno;
13666
693
            UNUSED(_end_lineno); // Only used by EXTRA macro
13667
693
            int _end_col_offset = _token->end_col_offset;
13668
693
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13669
693
            _res = _PyAST_BinOp ( a , RShift , b , EXTRA );
13670
693
            if (_res == NULL && PyErr_Occurred()) {
13671
0
                p->error_indicator = 1;
13672
0
                p->level--;
13673
0
                return NULL;
13674
0
            }
13675
693
            goto done;
13676
693
        }
13677
1.16M
        p->mark = _mark;
13678
1.16M
        D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13679
1.16M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr '>>' sum"));
13680
1.16M
    }
13681
1.16M
    if (p->call_invalid_rules) { // invalid_arithmetic
13682
301k
        if (p->error_indicator) {
13683
200
            p->level--;
13684
200
            return NULL;
13685
200
        }
13686
301k
        D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_arithmetic"));
13687
301k
        void *invalid_arithmetic_var;
13688
301k
        if (
13689
301k
            (invalid_arithmetic_var = invalid_arithmetic_rule(p))  // invalid_arithmetic
13690
301k
        )
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
301k
        p->mark = _mark;
13697
301k
        D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13698
301k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_arithmetic"));
13699
301k
    }
13700
1.16M
    { // sum
13701
1.16M
        if (p->error_indicator) {
13702
28.1k
            p->level--;
13703
28.1k
            return NULL;
13704
28.1k
        }
13705
1.14M
        D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum"));
13706
1.14M
        expr_ty sum_var;
13707
1.14M
        if (
13708
1.14M
            (sum_var = sum_rule(p))  // sum
13709
1.14M
        )
13710
856k
        {
13711
856k
            D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum"));
13712
856k
            _res = sum_var;
13713
856k
            goto done;
13714
856k
        }
13715
285k
        p->mark = _mark;
13716
285k
        D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13717
285k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum"));
13718
285k
    }
13719
0
    _res = NULL;
13720
1.14M
  done:
13721
1.14M
    p->level--;
13722
1.14M
    return _res;
13723
285k
}
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.83M
{
13731
3.83M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13732
1
        _Pypegen_stack_overflow(p);
13733
1
    }
13734
3.83M
    expr_ty _res = NULL;
13735
3.83M
    if (_PyPegen_is_memoized(p, sum_type, &_res)) {
13736
3.08M
        p->level--;
13737
3.08M
        return _res;
13738
3.08M
    }
13739
744k
    int _mark = p->mark;
13740
744k
    int _resmark = p->mark;
13741
1.19M
    while (1) {
13742
1.19M
        int tmpvar_6 = _PyPegen_update_memo(p, _mark, sum_type, _res);
13743
1.19M
        if (tmpvar_6) {
13744
0
            p->level--;
13745
0
            return _res;
13746
0
        }
13747
1.19M
        p->mark = _mark;
13748
1.19M
        void *_raw = sum_raw(p);
13749
1.19M
        if (p->error_indicator) {
13750
38.1k
            p->level--;
13751
38.1k
            return NULL;
13752
38.1k
        }
13753
1.16M
        if (_raw == NULL || p->mark <= _resmark)
13754
705k
            break;
13755
454k
        _resmark = p->mark;
13756
454k
        _res = _raw;
13757
454k
    }
13758
705k
    p->mark = _resmark;
13759
705k
    p->level--;
13760
705k
    return _res;
13761
744k
}
13762
static expr_ty
13763
sum_raw(Parser *p)
13764
1.19M
{
13765
1.19M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13766
1
        _Pypegen_stack_overflow(p);
13767
1
    }
13768
1.19M
    if (p->error_indicator) {
13769
2
        p->level--;
13770
2
        return NULL;
13771
2
    }
13772
1.19M
    expr_ty _res = NULL;
13773
1.19M
    int _mark = p->mark;
13774
1.19M
    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.19M
    int _start_lineno = p->tokens[_mark]->lineno;
13780
1.19M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13781
1.19M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13782
1.19M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13783
1.19M
    { // sum '+' term
13784
1.19M
        if (p->error_indicator) {
13785
0
            p->level--;
13786
0
            return NULL;
13787
0
        }
13788
1.19M
        D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum '+' term"));
13789
1.19M
        Token * _literal;
13790
1.19M
        expr_ty a;
13791
1.19M
        expr_ty b;
13792
1.19M
        if (
13793
1.19M
            (a = sum_rule(p))  // sum
13794
1.19M
            &&
13795
1.19M
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
13796
1.19M
            &&
13797
1.19M
            (b = term_rule(p))  // term
13798
1.19M
        )
13799
10.5k
        {
13800
10.5k
            D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum '+' term"));
13801
10.5k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13802
10.5k
            if (_token == NULL) {
13803
0
                p->level--;
13804
0
                return NULL;
13805
0
            }
13806
10.5k
            int _end_lineno = _token->end_lineno;
13807
10.5k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13808
10.5k
            int _end_col_offset = _token->end_col_offset;
13809
10.5k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13810
10.5k
            _res = _PyAST_BinOp ( a , Add , b , EXTRA );
13811
10.5k
            if (_res == NULL && PyErr_Occurred()) {
13812
0
                p->error_indicator = 1;
13813
0
                p->level--;
13814
0
                return NULL;
13815
0
            }
13816
10.5k
            goto done;
13817
10.5k
        }
13818
1.18M
        p->mark = _mark;
13819
1.18M
        D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13820
1.18M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum '+' term"));
13821
1.18M
    }
13822
0
    { // sum '-' term
13823
1.18M
        if (p->error_indicator) {
13824
239
            p->level--;
13825
239
            return NULL;
13826
239
        }
13827
1.18M
        D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum '-' term"));
13828
1.18M
        Token * _literal;
13829
1.18M
        expr_ty a;
13830
1.18M
        expr_ty b;
13831
1.18M
        if (
13832
1.18M
            (a = sum_rule(p))  // sum
13833
1.18M
            &&
13834
1.18M
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
13835
1.18M
            &&
13836
1.18M
            (b = term_rule(p))  // term
13837
1.18M
        )
13838
12.8k
        {
13839
12.8k
            D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum '-' term"));
13840
12.8k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13841
12.8k
            if (_token == NULL) {
13842
0
                p->level--;
13843
0
                return NULL;
13844
0
            }
13845
12.8k
            int _end_lineno = _token->end_lineno;
13846
12.8k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13847
12.8k
            int _end_col_offset = _token->end_col_offset;
13848
12.8k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13849
12.8k
            _res = _PyAST_BinOp ( a , Sub , b , EXTRA );
13850
12.8k
            if (_res == NULL && PyErr_Occurred()) {
13851
0
                p->error_indicator = 1;
13852
0
                p->level--;
13853
0
                return NULL;
13854
0
            }
13855
12.8k
            goto done;
13856
12.8k
        }
13857
1.17M
        p->mark = _mark;
13858
1.17M
        D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13859
1.17M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum '-' term"));
13860
1.17M
    }
13861
0
    { // term
13862
1.17M
        if (p->error_indicator) {
13863
1.02k
            p->level--;
13864
1.02k
            return NULL;
13865
1.02k
        }
13866
1.17M
        D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term"));
13867
1.17M
        expr_ty term_var;
13868
1.17M
        if (
13869
1.17M
            (term_var = term_rule(p))  // term
13870
1.17M
        )
13871
861k
        {
13872
861k
            D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term"));
13873
861k
            _res = term_var;
13874
861k
            goto done;
13875
861k
        }
13876
312k
        p->mark = _mark;
13877
312k
        D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13878
312k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term"));
13879
312k
    }
13880
0
    _res = NULL;
13881
1.19M
  done:
13882
1.19M
    p->level--;
13883
1.19M
    return _res;
13884
312k
}
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.36M
{
13899
7.36M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13900
1
        _Pypegen_stack_overflow(p);
13901
1
    }
13902
7.36M
    expr_ty _res = NULL;
13903
7.36M
    if (_PyPegen_is_memoized(p, term_type, &_res)) {
13904
6.59M
        p->level--;
13905
6.59M
        return _res;
13906
6.59M
    }
13907
769k
    int _mark = p->mark;
13908
769k
    int _resmark = p->mark;
13909
1.24M
    while (1) {
13910
1.24M
        int tmpvar_7 = _PyPegen_update_memo(p, _mark, term_type, _res);
13911
1.24M
        if (tmpvar_7) {
13912
0
            p->level--;
13913
0
            return _res;
13914
0
        }
13915
1.24M
        p->mark = _mark;
13916
1.24M
        void *_raw = term_raw(p);
13917
1.24M
        if (p->error_indicator) {
13918
38.0k
            p->level--;
13919
38.0k
            return NULL;
13920
38.0k
        }
13921
1.20M
        if (_raw == NULL || p->mark <= _resmark)
13922
731k
            break;
13923
471k
        _resmark = p->mark;
13924
471k
        _res = _raw;
13925
471k
    }
13926
731k
    p->mark = _resmark;
13927
731k
    p->level--;
13928
731k
    return _res;
13929
769k
}
13930
static expr_ty
13931
term_raw(Parser *p)
13932
1.24M
{
13933
1.24M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13934
1
        _Pypegen_stack_overflow(p);
13935
1
    }
13936
1.24M
    if (p->error_indicator) {
13937
1
        p->level--;
13938
1
        return NULL;
13939
1
    }
13940
1.24M
    expr_ty _res = NULL;
13941
1.24M
    int _mark = p->mark;
13942
1.24M
    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.24M
    int _start_lineno = p->tokens[_mark]->lineno;
13948
1.24M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13949
1.24M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13950
1.24M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13951
1.24M
    { // term '*' factor
13952
1.24M
        if (p->error_indicator) {
13953
0
            p->level--;
13954
0
            return NULL;
13955
0
        }
13956
1.24M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '*' factor"));
13957
1.24M
        Token * _literal;
13958
1.24M
        expr_ty a;
13959
1.24M
        expr_ty b;
13960
1.24M
        if (
13961
1.24M
            (a = term_rule(p))  // term
13962
1.24M
            &&
13963
1.24M
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
13964
1.24M
            &&
13965
1.24M
            (b = factor_rule(p))  // factor
13966
1.24M
        )
13967
5.47k
        {
13968
5.47k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '*' factor"));
13969
5.47k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13970
5.47k
            if (_token == NULL) {
13971
0
                p->level--;
13972
0
                return NULL;
13973
0
            }
13974
5.47k
            int _end_lineno = _token->end_lineno;
13975
5.47k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13976
5.47k
            int _end_col_offset = _token->end_col_offset;
13977
5.47k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13978
5.47k
            _res = _PyAST_BinOp ( a , Mult , b , EXTRA );
13979
5.47k
            if (_res == NULL && PyErr_Occurred()) {
13980
0
                p->error_indicator = 1;
13981
0
                p->level--;
13982
0
                return NULL;
13983
0
            }
13984
5.47k
            goto done;
13985
5.47k
        }
13986
1.23M
        p->mark = _mark;
13987
1.23M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
13988
1.23M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '*' factor"));
13989
1.23M
    }
13990
0
    { // term '/' factor
13991
1.23M
        if (p->error_indicator) {
13992
394
            p->level--;
13993
394
            return NULL;
13994
394
        }
13995
1.23M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '/' factor"));
13996
1.23M
        Token * _literal;
13997
1.23M
        expr_ty a;
13998
1.23M
        expr_ty b;
13999
1.23M
        if (
14000
1.23M
            (a = term_rule(p))  // term
14001
1.23M
            &&
14002
1.23M
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
14003
1.23M
            &&
14004
1.23M
            (b = factor_rule(p))  // factor
14005
1.23M
        )
14006
3.34k
        {
14007
3.34k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '/' factor"));
14008
3.34k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14009
3.34k
            if (_token == NULL) {
14010
0
                p->level--;
14011
0
                return NULL;
14012
0
            }
14013
3.34k
            int _end_lineno = _token->end_lineno;
14014
3.34k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14015
3.34k
            int _end_col_offset = _token->end_col_offset;
14016
3.34k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14017
3.34k
            _res = _PyAST_BinOp ( a , Div , b , EXTRA );
14018
3.34k
            if (_res == NULL && PyErr_Occurred()) {
14019
0
                p->error_indicator = 1;
14020
0
                p->level--;
14021
0
                return NULL;
14022
0
            }
14023
3.34k
            goto done;
14024
3.34k
        }
14025
1.23M
        p->mark = _mark;
14026
1.23M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14027
1.23M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '/' factor"));
14028
1.23M
    }
14029
0
    { // term '//' factor
14030
1.23M
        if (p->error_indicator) {
14031
229
            p->level--;
14032
229
            return NULL;
14033
229
        }
14034
1.23M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '//' factor"));
14035
1.23M
        Token * _literal;
14036
1.23M
        expr_ty a;
14037
1.23M
        expr_ty b;
14038
1.23M
        if (
14039
1.23M
            (a = term_rule(p))  // term
14040
1.23M
            &&
14041
1.23M
            (_literal = _PyPegen_expect_token(p, 47))  // token='//'
14042
1.23M
            &&
14043
1.23M
            (b = factor_rule(p))  // factor
14044
1.23M
        )
14045
637
        {
14046
637
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '//' factor"));
14047
637
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14048
637
            if (_token == NULL) {
14049
0
                p->level--;
14050
0
                return NULL;
14051
0
            }
14052
637
            int _end_lineno = _token->end_lineno;
14053
637
            UNUSED(_end_lineno); // Only used by EXTRA macro
14054
637
            int _end_col_offset = _token->end_col_offset;
14055
637
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14056
637
            _res = _PyAST_BinOp ( a , FloorDiv , b , EXTRA );
14057
637
            if (_res == NULL && PyErr_Occurred()) {
14058
0
                p->error_indicator = 1;
14059
0
                p->level--;
14060
0
                return NULL;
14061
0
            }
14062
637
            goto done;
14063
637
        }
14064
1.23M
        p->mark = _mark;
14065
1.23M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14066
1.23M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '//' factor"));
14067
1.23M
    }
14068
0
    { // term '%' factor
14069
1.23M
        if (p->error_indicator) {
14070
196
            p->level--;
14071
196
            return NULL;
14072
196
        }
14073
1.23M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '%' factor"));
14074
1.23M
        Token * _literal;
14075
1.23M
        expr_ty a;
14076
1.23M
        expr_ty b;
14077
1.23M
        if (
14078
1.23M
            (a = term_rule(p))  // term
14079
1.23M
            &&
14080
1.23M
            (_literal = _PyPegen_expect_token(p, 24))  // token='%'
14081
1.23M
            &&
14082
1.23M
            (b = factor_rule(p))  // factor
14083
1.23M
        )
14084
3.28k
        {
14085
3.28k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '%' factor"));
14086
3.28k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14087
3.28k
            if (_token == NULL) {
14088
0
                p->level--;
14089
0
                return NULL;
14090
0
            }
14091
3.28k
            int _end_lineno = _token->end_lineno;
14092
3.28k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14093
3.28k
            int _end_col_offset = _token->end_col_offset;
14094
3.28k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14095
3.28k
            _res = _PyAST_BinOp ( a , Mod , b , EXTRA );
14096
3.28k
            if (_res == NULL && PyErr_Occurred()) {
14097
0
                p->error_indicator = 1;
14098
0
                p->level--;
14099
0
                return NULL;
14100
0
            }
14101
3.28k
            goto done;
14102
3.28k
        }
14103
1.22M
        p->mark = _mark;
14104
1.22M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14105
1.22M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '%' factor"));
14106
1.22M
    }
14107
0
    { // term '@' factor
14108
1.22M
        if (p->error_indicator) {
14109
206
            p->level--;
14110
206
            return NULL;
14111
206
        }
14112
1.22M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '@' factor"));
14113
1.22M
        Token * _literal;
14114
1.22M
        expr_ty a;
14115
1.22M
        expr_ty b;
14116
1.22M
        if (
14117
1.22M
            (a = term_rule(p))  // term
14118
1.22M
            &&
14119
1.22M
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
14120
1.22M
            &&
14121
1.22M
            (b = factor_rule(p))  // factor
14122
1.22M
        )
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.22M
        p->mark = _mark;
14143
1.22M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14144
1.22M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '@' factor"));
14145
1.22M
    }
14146
1.22M
    if (p->call_invalid_rules) { // invalid_factor
14147
312k
        if (p->error_indicator) {
14148
201
            p->level--;
14149
201
            return NULL;
14150
201
        }
14151
312k
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_factor"));
14152
312k
        void *invalid_factor_var;
14153
312k
        if (
14154
312k
            (invalid_factor_var = invalid_factor_rule(p))  // invalid_factor
14155
312k
        )
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
312k
        p->mark = _mark;
14162
312k
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14163
312k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_factor"));
14164
312k
    }
14165
1.22M
    { // factor
14166
1.22M
        if (p->error_indicator) {
14167
305
            p->level--;
14168
305
            return NULL;
14169
305
        }
14170
1.22M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "factor"));
14171
1.22M
        expr_ty factor_var;
14172
1.22M
        if (
14173
1.22M
            (factor_var = factor_rule(p))  // factor
14174
1.22M
        )
14175
910k
        {
14176
910k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "factor"));
14177
910k
            _res = factor_var;
14178
910k
            goto done;
14179
910k
        }
14180
314k
        p->mark = _mark;
14181
314k
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14182
314k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "factor"));
14183
314k
    }
14184
0
    _res = NULL;
14185
1.23M
  done:
14186
1.23M
    p->level--;
14187
1.23M
    return _res;
14188
314k
}
14189
14190
// factor: '+' factor | '-' factor | '~' factor | power
14191
static expr_ty
14192
factor_rule(Parser *p)
14193
1.43M
{
14194
1.43M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14195
1
        _Pypegen_stack_overflow(p);
14196
1
    }
14197
1.43M
    if (p->error_indicator) {
14198
1
        p->level--;
14199
1
        return NULL;
14200
1
    }
14201
1.43M
    expr_ty _res = NULL;
14202
1.43M
    if (_PyPegen_is_memoized(p, factor_type, &_res)) {
14203
457k
        p->level--;
14204
457k
        return _res;
14205
457k
    }
14206
977k
    int _mark = p->mark;
14207
977k
    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
977k
    int _start_lineno = p->tokens[_mark]->lineno;
14213
977k
    UNUSED(_start_lineno); // Only used by EXTRA macro
14214
977k
    int _start_col_offset = p->tokens[_mark]->col_offset;
14215
977k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14216
977k
    { // '+' factor
14217
977k
        if (p->error_indicator) {
14218
0
            p->level--;
14219
0
            return NULL;
14220
0
        }
14221
977k
        D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+' factor"));
14222
977k
        Token * _literal;
14223
977k
        expr_ty a;
14224
977k
        if (
14225
977k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
14226
977k
            &&
14227
977k
            (a = factor_rule(p))  // factor
14228
977k
        )
14229
62.3k
        {
14230
62.3k
            D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+' factor"));
14231
62.3k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14232
62.3k
            if (_token == NULL) {
14233
0
                p->level--;
14234
0
                return NULL;
14235
0
            }
14236
62.3k
            int _end_lineno = _token->end_lineno;
14237
62.3k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14238
62.3k
            int _end_col_offset = _token->end_col_offset;
14239
62.3k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14240
62.3k
            _res = _PyAST_UnaryOp ( UAdd , a , EXTRA );
14241
62.3k
            if (_res == NULL && PyErr_Occurred()) {
14242
0
                p->error_indicator = 1;
14243
0
                p->level--;
14244
0
                return NULL;
14245
0
            }
14246
62.3k
            goto done;
14247
62.3k
        }
14248
915k
        p->mark = _mark;
14249
915k
        D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14250
915k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+' factor"));
14251
915k
    }
14252
0
    { // '-' factor
14253
915k
        if (p->error_indicator) {
14254
488
            p->level--;
14255
488
            return NULL;
14256
488
        }
14257
914k
        D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' factor"));
14258
914k
        Token * _literal;
14259
914k
        expr_ty a;
14260
914k
        if (
14261
914k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
14262
914k
            &&
14263
914k
            (a = factor_rule(p))  // factor
14264
914k
        )
14265
98.6k
        {
14266
98.6k
            D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' factor"));
14267
98.6k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14268
98.6k
            if (_token == NULL) {
14269
0
                p->level--;
14270
0
                return NULL;
14271
0
            }
14272
98.6k
            int _end_lineno = _token->end_lineno;
14273
98.6k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14274
98.6k
            int _end_col_offset = _token->end_col_offset;
14275
98.6k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14276
98.6k
            _res = _PyAST_UnaryOp ( USub , a , EXTRA );
14277
98.6k
            if (_res == NULL && PyErr_Occurred()) {
14278
0
                p->error_indicator = 1;
14279
0
                p->level--;
14280
0
                return NULL;
14281
0
            }
14282
98.6k
            goto done;
14283
98.6k
        }
14284
815k
        p->mark = _mark;
14285
815k
        D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14286
815k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' factor"));
14287
815k
    }
14288
0
    { // '~' factor
14289
815k
        if (p->error_indicator) {
14290
3.04k
            p->level--;
14291
3.04k
            return NULL;
14292
3.04k
        }
14293
812k
        D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'~' factor"));
14294
812k
        Token * _literal;
14295
812k
        expr_ty a;
14296
812k
        if (
14297
812k
            (_literal = _PyPegen_expect_token(p, 31))  // token='~'
14298
812k
            &&
14299
812k
            (a = factor_rule(p))  // factor
14300
812k
        )
14301
21.7k
        {
14302
21.7k
            D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'~' factor"));
14303
21.7k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14304
21.7k
            if (_token == NULL) {
14305
0
                p->level--;
14306
0
                return NULL;
14307
0
            }
14308
21.7k
            int _end_lineno = _token->end_lineno;
14309
21.7k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14310
21.7k
            int _end_col_offset = _token->end_col_offset;
14311
21.7k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14312
21.7k
            _res = _PyAST_UnaryOp ( Invert , a , EXTRA );
14313
21.7k
            if (_res == NULL && PyErr_Occurred()) {
14314
0
                p->error_indicator = 1;
14315
0
                p->level--;
14316
0
                return NULL;
14317
0
            }
14318
21.7k
            goto done;
14319
21.7k
        }
14320
791k
        p->mark = _mark;
14321
791k
        D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14322
791k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'~' factor"));
14323
791k
    }
14324
0
    { // power
14325
791k
        if (p->error_indicator) {
14326
295
            p->level--;
14327
295
            return NULL;
14328
295
        }
14329
790k
        D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "power"));
14330
790k
        expr_ty power_var;
14331
790k
        if (
14332
790k
            (power_var = power_rule(p))  // power
14333
790k
        )
14334
471k
        {
14335
471k
            D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "power"));
14336
471k
            _res = power_var;
14337
471k
            goto done;
14338
471k
        }
14339
319k
        p->mark = _mark;
14340
319k
        D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14341
319k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "power"));
14342
319k
    }
14343
0
    _res = NULL;
14344
973k
  done:
14345
973k
    _PyPegen_insert_memo(p, _mark, factor_type, _res);
14346
973k
    p->level--;
14347
973k
    return _res;
14348
319k
}
14349
14350
// power: await_primary '**' factor | await_primary
14351
static expr_ty
14352
power_rule(Parser *p)
14353
790k
{
14354
790k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14355
1
        _Pypegen_stack_overflow(p);
14356
1
    }
14357
790k
    if (p->error_indicator) {
14358
1
        p->level--;
14359
1
        return NULL;
14360
1
    }
14361
790k
    expr_ty _res = NULL;
14362
790k
    int _mark = p->mark;
14363
790k
    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
790k
    int _start_lineno = p->tokens[_mark]->lineno;
14369
790k
    UNUSED(_start_lineno); // Only used by EXTRA macro
14370
790k
    int _start_col_offset = p->tokens[_mark]->col_offset;
14371
790k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14372
790k
    { // await_primary '**' factor
14373
790k
        if (p->error_indicator) {
14374
0
            p->level--;
14375
0
            return NULL;
14376
0
        }
14377
790k
        D(fprintf(stderr, "%*c> power[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "await_primary '**' factor"));
14378
790k
        Token * _literal;
14379
790k
        expr_ty a;
14380
790k
        expr_ty b;
14381
790k
        if (
14382
790k
            (a = await_primary_rule(p))  // await_primary
14383
790k
            &&
14384
790k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
14385
790k
            &&
14386
790k
            (b = factor_rule(p))  // factor
14387
790k
        )
14388
1.69k
        {
14389
1.69k
            D(fprintf(stderr, "%*c+ power[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "await_primary '**' factor"));
14390
1.69k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14391
1.69k
            if (_token == NULL) {
14392
0
                p->level--;
14393
0
                return NULL;
14394
0
            }
14395
1.69k
            int _end_lineno = _token->end_lineno;
14396
1.69k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14397
1.69k
            int _end_col_offset = _token->end_col_offset;
14398
1.69k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14399
1.69k
            _res = _PyAST_BinOp ( a , Pow , b , EXTRA );
14400
1.69k
            if (_res == NULL && PyErr_Occurred()) {
14401
0
                p->error_indicator = 1;
14402
0
                p->level--;
14403
0
                return NULL;
14404
0
            }
14405
1.69k
            goto done;
14406
1.69k
        }
14407
789k
        p->mark = _mark;
14408
789k
        D(fprintf(stderr, "%*c%s power[%d-%d]: %s failed!\n", p->level, ' ',
14409
789k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "await_primary '**' factor"));
14410
789k
    }
14411
0
    { // await_primary
14412
789k
        if (p->error_indicator) {
14413
38.0k
            p->level--;
14414
38.0k
            return NULL;
14415
38.0k
        }
14416
750k
        D(fprintf(stderr, "%*c> power[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "await_primary"));
14417
750k
        expr_ty await_primary_var;
14418
750k
        if (
14419
750k
            (await_primary_var = await_primary_rule(p))  // await_primary
14420
750k
        )
14421
469k
        {
14422
469k
            D(fprintf(stderr, "%*c+ power[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "await_primary"));
14423
469k
            _res = await_primary_var;
14424
469k
            goto done;
14425
469k
        }
14426
281k
        p->mark = _mark;
14427
281k
        D(fprintf(stderr, "%*c%s power[%d-%d]: %s failed!\n", p->level, ' ',
14428
281k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "await_primary"));
14429
281k
    }
14430
0
    _res = NULL;
14431
752k
  done:
14432
752k
    p->level--;
14433
752k
    return _res;
14434
281k
}
14435
14436
// await_primary: 'await' primary | primary
14437
static expr_ty
14438
await_primary_rule(Parser *p)
14439
1.54M
{
14440
1.54M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14441
1
        _Pypegen_stack_overflow(p);
14442
1
    }
14443
1.54M
    if (p->error_indicator) {
14444
1
        p->level--;
14445
1
        return NULL;
14446
1
    }
14447
1.54M
    expr_ty _res = NULL;
14448
1.54M
    if (_PyPegen_is_memoized(p, await_primary_type, &_res)) {
14449
750k
        p->level--;
14450
750k
        return _res;
14451
750k
    }
14452
790k
    int _mark = p->mark;
14453
790k
    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
790k
    int _start_lineno = p->tokens[_mark]->lineno;
14459
790k
    UNUSED(_start_lineno); // Only used by EXTRA macro
14460
790k
    int _start_col_offset = p->tokens[_mark]->col_offset;
14461
790k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14462
790k
    { // 'await' primary
14463
790k
        if (p->error_indicator) {
14464
0
            p->level--;
14465
0
            return NULL;
14466
0
        }
14467
790k
        D(fprintf(stderr, "%*c> await_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'await' primary"));
14468
790k
        Token * _keyword;
14469
790k
        expr_ty a;
14470
790k
        if (
14471
790k
            (_keyword = _PyPegen_expect_token(p, 598))  // token='await'
14472
790k
            &&
14473
790k
            (a = primary_rule(p))  // primary
14474
790k
        )
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
790k
        p->mark = _mark;
14495
790k
        D(fprintf(stderr, "%*c%s await_primary[%d-%d]: %s failed!\n", p->level, ' ',
14496
790k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'await' primary"));
14497
790k
    }
14498
0
    { // primary
14499
790k
        if (p->error_indicator) {
14500
197
            p->level--;
14501
197
            return NULL;
14502
197
        }
14503
790k
        D(fprintf(stderr, "%*c> await_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary"));
14504
790k
        expr_ty primary_var;
14505
790k
        if (
14506
790k
            (primary_var = primary_rule(p))  // primary
14507
790k
        )
14508
471k
        {
14509
471k
            D(fprintf(stderr, "%*c+ await_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary"));
14510
471k
            _res = primary_var;
14511
471k
            goto done;
14512
471k
        }
14513
319k
        p->mark = _mark;
14514
319k
        D(fprintf(stderr, "%*c%s await_primary[%d-%d]: %s failed!\n", p->level, ' ',
14515
319k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary"));
14516
319k
    }
14517
0
    _res = NULL;
14518
790k
  done:
14519
790k
    _PyPegen_insert_memo(p, _mark, await_primary_type, _res);
14520
790k
    p->level--;
14521
790k
    return _res;
14522
319k
}
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
5.99M
{
14535
5.99M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14536
1
        _Pypegen_stack_overflow(p);
14537
1
    }
14538
5.99M
    expr_ty _res = NULL;
14539
5.99M
    if (_PyPegen_is_memoized(p, primary_type, &_res)) {
14540
5.20M
        p->level--;
14541
5.20M
        return _res;
14542
5.20M
    }
14543
790k
    int _mark = p->mark;
14544
790k
    int _resmark = p->mark;
14545
1.32M
    while (1) {
14546
1.32M
        int tmpvar_8 = _PyPegen_update_memo(p, _mark, primary_type, _res);
14547
1.32M
        if (tmpvar_8) {
14548
0
            p->level--;
14549
0
            return _res;
14550
0
        }
14551
1.32M
        p->mark = _mark;
14552
1.32M
        void *_raw = primary_raw(p);
14553
1.32M
        if (p->error_indicator) {
14554
37.8k
            p->level--;
14555
37.8k
            return NULL;
14556
37.8k
        }
14557
1.29M
        if (_raw == NULL || p->mark <= _resmark)
14558
753k
            break;
14559
537k
        _resmark = p->mark;
14560
537k
        _res = _raw;
14561
537k
    }
14562
753k
    p->mark = _resmark;
14563
753k
    p->level--;
14564
753k
    return _res;
14565
790k
}
14566
static expr_ty
14567
primary_raw(Parser *p)
14568
1.32M
{
14569
1.32M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14570
1
        _Pypegen_stack_overflow(p);
14571
1
    }
14572
1.32M
    if (p->error_indicator) {
14573
2
        p->level--;
14574
2
        return NULL;
14575
2
    }
14576
1.32M
    expr_ty _res = NULL;
14577
1.32M
    int _mark = p->mark;
14578
1.32M
    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.32M
    int _start_lineno = p->tokens[_mark]->lineno;
14584
1.32M
    UNUSED(_start_lineno); // Only used by EXTRA macro
14585
1.32M
    int _start_col_offset = p->tokens[_mark]->col_offset;
14586
1.32M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14587
1.32M
    { // primary '.' NAME
14588
1.32M
        if (p->error_indicator) {
14589
0
            p->level--;
14590
0
            return NULL;
14591
0
        }
14592
1.32M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '.' NAME"));
14593
1.32M
        Token * _literal;
14594
1.32M
        expr_ty a;
14595
1.32M
        expr_ty b;
14596
1.32M
        if (
14597
1.32M
            (a = primary_rule(p))  // primary
14598
1.32M
            &&
14599
1.32M
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
14600
1.32M
            &&
14601
1.32M
            (b = _PyPegen_name_token(p))  // NAME
14602
1.32M
        )
14603
20.4k
        {
14604
20.4k
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '.' NAME"));
14605
20.4k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14606
20.4k
            if (_token == NULL) {
14607
0
                p->level--;
14608
0
                return NULL;
14609
0
            }
14610
20.4k
            int _end_lineno = _token->end_lineno;
14611
20.4k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14612
20.4k
            int _end_col_offset = _token->end_col_offset;
14613
20.4k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14614
20.4k
            _res = _PyAST_Attribute ( a , b -> v . Name . id , Load , EXTRA );
14615
20.4k
            if (_res == NULL && PyErr_Occurred()) {
14616
0
                p->error_indicator = 1;
14617
0
                p->level--;
14618
0
                return NULL;
14619
0
            }
14620
20.4k
            goto done;
14621
20.4k
        }
14622
1.30M
        p->mark = _mark;
14623
1.30M
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14624
1.30M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '.' NAME"));
14625
1.30M
    }
14626
0
    { // primary genexp
14627
1.30M
        if (p->error_indicator) {
14628
389
            p->level--;
14629
389
            return NULL;
14630
389
        }
14631
1.30M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary genexp"));
14632
1.30M
        expr_ty a;
14633
1.30M
        expr_ty b;
14634
1.30M
        if (
14635
1.30M
            (a = primary_rule(p))  // primary
14636
1.30M
            &&
14637
1.30M
            (b = genexp_rule(p))  // genexp
14638
1.30M
        )
14639
1.09k
        {
14640
1.09k
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary genexp"));
14641
1.09k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14642
1.09k
            if (_token == NULL) {
14643
0
                p->level--;
14644
0
                return NULL;
14645
0
            }
14646
1.09k
            int _end_lineno = _token->end_lineno;
14647
1.09k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14648
1.09k
            int _end_col_offset = _token->end_col_offset;
14649
1.09k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14650
1.09k
            _res = _PyAST_Call ( a , CHECK ( asdl_expr_seq* , ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
14651
1.09k
            if (_res == NULL && PyErr_Occurred()) {
14652
0
                p->error_indicator = 1;
14653
0
                p->level--;
14654
0
                return NULL;
14655
0
            }
14656
1.09k
            goto done;
14657
1.09k
        }
14658
1.30M
        p->mark = _mark;
14659
1.30M
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14660
1.30M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary genexp"));
14661
1.30M
    }
14662
0
    { // primary '(' arguments? ')'
14663
1.30M
        if (p->error_indicator) {
14664
4.26k
            p->level--;
14665
4.26k
            return NULL;
14666
4.26k
        }
14667
1.30M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '(' arguments? ')'"));
14668
1.30M
        Token * _literal;
14669
1.30M
        Token * _literal_1;
14670
1.30M
        expr_ty a;
14671
1.30M
        void *b;
14672
1.30M
        if (
14673
1.30M
            (a = primary_rule(p))  // primary
14674
1.30M
            &&
14675
1.30M
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
14676
1.30M
            &&
14677
1.30M
            (b = arguments_rule(p), !p->error_indicator)  // arguments?
14678
1.30M
            &&
14679
1.30M
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
14680
1.30M
        )
14681
31.1k
        {
14682
31.1k
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '(' arguments? ')'"));
14683
31.1k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14684
31.1k
            if (_token == NULL) {
14685
0
                p->level--;
14686
0
                return NULL;
14687
0
            }
14688
31.1k
            int _end_lineno = _token->end_lineno;
14689
31.1k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14690
31.1k
            int _end_col_offset = _token->end_col_offset;
14691
31.1k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14692
31.1k
            _res = _PyAST_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
14693
31.1k
            if (_res == NULL && PyErr_Occurred()) {
14694
0
                p->error_indicator = 1;
14695
0
                p->level--;
14696
0
                return NULL;
14697
0
            }
14698
31.1k
            goto done;
14699
31.1k
        }
14700
1.27M
        p->mark = _mark;
14701
1.27M
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14702
1.27M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '(' arguments? ')'"));
14703
1.27M
    }
14704
0
    { // primary '[' slices ']'
14705
1.27M
        if (p->error_indicator) {
14706
2.70k
            p->level--;
14707
2.70k
            return NULL;
14708
2.70k
        }
14709
1.26M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '[' slices ']'"));
14710
1.26M
        Token * _literal;
14711
1.26M
        Token * _literal_1;
14712
1.26M
        expr_ty a;
14713
1.26M
        expr_ty b;
14714
1.26M
        if (
14715
1.26M
            (a = primary_rule(p))  // primary
14716
1.26M
            &&
14717
1.26M
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
14718
1.26M
            &&
14719
1.26M
            (b = slices_rule(p))  // slices
14720
1.26M
            &&
14721
1.26M
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
14722
1.26M
        )
14723
4.90k
        {
14724
4.90k
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '[' slices ']'"));
14725
4.90k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14726
4.90k
            if (_token == NULL) {
14727
0
                p->level--;
14728
0
                return NULL;
14729
0
            }
14730
4.90k
            int _end_lineno = _token->end_lineno;
14731
4.90k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14732
4.90k
            int _end_col_offset = _token->end_col_offset;
14733
4.90k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14734
4.90k
            _res = _PyAST_Subscript ( a , b , Load , EXTRA );
14735
4.90k
            if (_res == NULL && PyErr_Occurred()) {
14736
0
                p->error_indicator = 1;
14737
0
                p->level--;
14738
0
                return NULL;
14739
0
            }
14740
4.90k
            goto done;
14741
4.90k
        }
14742
1.26M
        p->mark = _mark;
14743
1.26M
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14744
1.26M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '[' slices ']'"));
14745
1.26M
    }
14746
0
    { // atom
14747
1.26M
        if (p->error_indicator) {
14748
996
            p->level--;
14749
996
            return NULL;
14750
996
        }
14751
1.26M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "atom"));
14752
1.26M
        expr_ty atom_var;
14753
1.26M
        if (
14754
1.26M
            (atom_var = atom_rule(p))  // atom
14755
1.26M
        )
14756
951k
        {
14757
951k
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "atom"));
14758
951k
            _res = atom_var;
14759
951k
            goto done;
14760
951k
        }
14761
311k
        p->mark = _mark;
14762
311k
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14763
311k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "atom"));
14764
311k
    }
14765
0
    _res = NULL;
14766
1.31M
  done:
14767
1.31M
    p->level--;
14768
1.31M
    return _res;
14769
311k
}
14770
14771
// slices: slice !',' | ','.(slice | starred_expression)+ ','?
14772
static expr_ty
14773
slices_rule(Parser *p)
14774
17.7k
{
14775
17.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14776
0
        _Pypegen_stack_overflow(p);
14777
0
    }
14778
17.7k
    if (p->error_indicator) {
14779
0
        p->level--;
14780
0
        return NULL;
14781
0
    }
14782
17.7k
    expr_ty _res = NULL;
14783
17.7k
    int _mark = p->mark;
14784
17.7k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14785
47
        p->error_indicator = 1;
14786
47
        p->level--;
14787
47
        return NULL;
14788
47
    }
14789
17.6k
    int _start_lineno = p->tokens[_mark]->lineno;
14790
17.6k
    UNUSED(_start_lineno); // Only used by EXTRA macro
14791
17.6k
    int _start_col_offset = p->tokens[_mark]->col_offset;
14792
17.6k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14793
17.6k
    { // slice !','
14794
17.6k
        if (p->error_indicator) {
14795
0
            p->level--;
14796
0
            return NULL;
14797
0
        }
14798
17.6k
        D(fprintf(stderr, "%*c> slices[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice !','"));
14799
17.6k
        expr_ty a;
14800
17.6k
        if (
14801
17.6k
            (a = slice_rule(p))  // slice
14802
17.6k
            &&
14803
17.6k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
14804
17.6k
        )
14805
11.3k
        {
14806
11.3k
            D(fprintf(stderr, "%*c+ slices[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice !','"));
14807
11.3k
            _res = a;
14808
11.3k
            if (_res == NULL && PyErr_Occurred()) {
14809
0
                p->error_indicator = 1;
14810
0
                p->level--;
14811
0
                return NULL;
14812
0
            }
14813
11.3k
            goto done;
14814
11.3k
        }
14815
6.36k
        p->mark = _mark;
14816
6.36k
        D(fprintf(stderr, "%*c%s slices[%d-%d]: %s failed!\n", p->level, ' ',
14817
6.36k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice !','"));
14818
6.36k
    }
14819
0
    { // ','.(slice | starred_expression)+ ','?
14820
6.36k
        if (p->error_indicator) {
14821
985
            p->level--;
14822
985
            return NULL;
14823
985
        }
14824
5.38k
        D(fprintf(stderr, "%*c> slices[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.(slice | starred_expression)+ ','?"));
14825
5.38k
        void *_opt_var;
14826
5.38k
        UNUSED(_opt_var); // Silence compiler warnings
14827
5.38k
        asdl_expr_seq* a;
14828
5.38k
        if (
14829
5.38k
            (a = (asdl_expr_seq*)_gather_64_rule(p))  // ','.(slice | starred_expression)+
14830
5.38k
            &&
14831
5.38k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
14832
5.38k
        )
14833
3.03k
        {
14834
3.03k
            D(fprintf(stderr, "%*c+ slices[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.(slice | starred_expression)+ ','?"));
14835
3.03k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14836
3.03k
            if (_token == NULL) {
14837
0
                p->level--;
14838
0
                return NULL;
14839
0
            }
14840
3.03k
            int _end_lineno = _token->end_lineno;
14841
3.03k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14842
3.03k
            int _end_col_offset = _token->end_col_offset;
14843
3.03k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14844
3.03k
            _res = _PyAST_Tuple ( a , Load , EXTRA );
14845
3.03k
            if (_res == NULL && PyErr_Occurred()) {
14846
0
                p->error_indicator = 1;
14847
0
                p->level--;
14848
0
                return NULL;
14849
0
            }
14850
3.03k
            goto done;
14851
3.03k
        }
14852
2.34k
        p->mark = _mark;
14853
2.34k
        D(fprintf(stderr, "%*c%s slices[%d-%d]: %s failed!\n", p->level, ' ',
14854
2.34k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.(slice | starred_expression)+ ','?"));
14855
2.34k
    }
14856
0
    _res = NULL;
14857
16.7k
  done:
14858
16.7k
    p->level--;
14859
16.7k
    return _res;
14860
2.34k
}
14861
14862
// slice: expression? ':' expression? [':' expression?] | named_expression
14863
static expr_ty
14864
slice_rule(Parser *p)
14865
44.5k
{
14866
44.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14867
1
        _Pypegen_stack_overflow(p);
14868
1
    }
14869
44.5k
    if (p->error_indicator) {
14870
1
        p->level--;
14871
1
        return NULL;
14872
1
    }
14873
44.5k
    expr_ty _res = NULL;
14874
44.5k
    int _mark = p->mark;
14875
44.5k
    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
44.5k
    int _start_lineno = p->tokens[_mark]->lineno;
14881
44.5k
    UNUSED(_start_lineno); // Only used by EXTRA macro
14882
44.5k
    int _start_col_offset = p->tokens[_mark]->col_offset;
14883
44.5k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14884
44.5k
    { // expression? ':' expression? [':' expression?]
14885
44.5k
        if (p->error_indicator) {
14886
0
            p->level--;
14887
0
            return NULL;
14888
0
        }
14889
44.5k
        D(fprintf(stderr, "%*c> slice[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14890
44.5k
        Token * _literal;
14891
44.5k
        void *a;
14892
44.5k
        void *b;
14893
44.5k
        void *c;
14894
44.5k
        if (
14895
44.5k
            (a = expression_rule(p), !p->error_indicator)  // expression?
14896
44.5k
            &&
14897
44.5k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
14898
44.5k
            &&
14899
44.5k
            (b = expression_rule(p), !p->error_indicator)  // expression?
14900
44.5k
            &&
14901
44.5k
            (c = _tmp_65_rule(p), !p->error_indicator)  // [':' expression?]
14902
44.5k
        )
14903
17.1k
        {
14904
17.1k
            D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14905
17.1k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14906
17.1k
            if (_token == NULL) {
14907
0
                p->level--;
14908
0
                return NULL;
14909
0
            }
14910
17.1k
            int _end_lineno = _token->end_lineno;
14911
17.1k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14912
17.1k
            int _end_col_offset = _token->end_col_offset;
14913
17.1k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14914
17.1k
            _res = _PyAST_Slice ( a , b , c , EXTRA );
14915
17.1k
            if (_res == NULL && PyErr_Occurred()) {
14916
0
                p->error_indicator = 1;
14917
0
                p->level--;
14918
0
                return NULL;
14919
0
            }
14920
17.1k
            goto done;
14921
17.1k
        }
14922
27.4k
        p->mark = _mark;
14923
27.4k
        D(fprintf(stderr, "%*c%s slice[%d-%d]: %s failed!\n", p->level, ' ',
14924
27.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14925
27.4k
    }
14926
0
    { // named_expression
14927
27.4k
        if (p->error_indicator) {
14928
1.17k
            p->level--;
14929
1.17k
            return NULL;
14930
1.17k
        }
14931
26.2k
        D(fprintf(stderr, "%*c> slice[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
14932
26.2k
        expr_ty a;
14933
26.2k
        if (
14934
26.2k
            (a = named_expression_rule(p))  // named_expression
14935
26.2k
        )
14936
20.2k
        {
14937
20.2k
            D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
14938
20.2k
            _res = a;
14939
20.2k
            if (_res == NULL && PyErr_Occurred()) {
14940
0
                p->error_indicator = 1;
14941
0
                p->level--;
14942
0
                return NULL;
14943
0
            }
14944
20.2k
            goto done;
14945
20.2k
        }
14946
5.99k
        p->mark = _mark;
14947
5.99k
        D(fprintf(stderr, "%*c%s slice[%d-%d]: %s failed!\n", p->level, ' ',
14948
5.99k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
14949
5.99k
    }
14950
0
    _res = NULL;
14951
43.3k
  done:
14952
43.3k
    p->level--;
14953
43.3k
    return _res;
14954
5.99k
}
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.55M
{
14970
1.55M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14971
0
        _Pypegen_stack_overflow(p);
14972
0
    }
14973
1.55M
    if (p->error_indicator) {
14974
0
        p->level--;
14975
0
        return NULL;
14976
0
    }
14977
1.55M
    expr_ty _res = NULL;
14978
1.55M
    int _mark = p->mark;
14979
1.55M
    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.55M
    int _start_lineno = p->tokens[_mark]->lineno;
14985
1.55M
    UNUSED(_start_lineno); // Only used by EXTRA macro
14986
1.55M
    int _start_col_offset = p->tokens[_mark]->col_offset;
14987
1.55M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14988
1.55M
    { // NAME
14989
1.55M
        if (p->error_indicator) {
14990
0
            p->level--;
14991
0
            return NULL;
14992
0
        }
14993
1.55M
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
14994
1.55M
        expr_ty name_var;
14995
1.55M
        if (
14996
1.55M
            (name_var = _PyPegen_name_token(p))  // NAME
14997
1.55M
        )
14998
715k
        {
14999
715k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
15000
715k
            _res = name_var;
15001
715k
            goto done;
15002
715k
        }
15003
836k
        p->mark = _mark;
15004
836k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15005
836k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
15006
836k
    }
15007
0
    { // 'True'
15008
836k
        if (p->error_indicator) {
15009
0
            p->level--;
15010
0
            return NULL;
15011
0
        }
15012
836k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
15013
836k
        Token * _keyword;
15014
836k
        if (
15015
836k
            (_keyword = _PyPegen_expect_token(p, 623))  // token='True'
15016
836k
        )
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
832k
        p->mark = _mark;
15037
832k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15038
832k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
15039
832k
    }
15040
0
    { // 'False'
15041
832k
        if (p->error_indicator) {
15042
0
            p->level--;
15043
0
            return NULL;
15044
0
        }
15045
832k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
15046
832k
        Token * _keyword;
15047
832k
        if (
15048
832k
            (_keyword = _PyPegen_expect_token(p, 625))  // token='False'
15049
832k
        )
15050
2.17k
        {
15051
2.17k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
15052
2.17k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15053
2.17k
            if (_token == NULL) {
15054
0
                p->level--;
15055
0
                return NULL;
15056
0
            }
15057
2.17k
            int _end_lineno = _token->end_lineno;
15058
2.17k
            UNUSED(_end_lineno); // Only used by EXTRA macro
15059
2.17k
            int _end_col_offset = _token->end_col_offset;
15060
2.17k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15061
2.17k
            _res = _PyAST_Constant ( Py_False , NULL , EXTRA );
15062
2.17k
            if (_res == NULL && PyErr_Occurred()) {
15063
0
                p->error_indicator = 1;
15064
0
                p->level--;
15065
0
                return NULL;
15066
0
            }
15067
2.17k
            goto done;
15068
2.17k
        }
15069
830k
        p->mark = _mark;
15070
830k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15071
830k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
15072
830k
    }
15073
0
    { // 'None'
15074
830k
        if (p->error_indicator) {
15075
0
            p->level--;
15076
0
            return NULL;
15077
0
        }
15078
830k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
15079
830k
        Token * _keyword;
15080
830k
        if (
15081
830k
            (_keyword = _PyPegen_expect_token(p, 624))  // token='None'
15082
830k
        )
15083
7.63k
        {
15084
7.63k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
15085
7.63k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15086
7.63k
            if (_token == NULL) {
15087
0
                p->level--;
15088
0
                return NULL;
15089
0
            }
15090
7.63k
            int _end_lineno = _token->end_lineno;
15091
7.63k
            UNUSED(_end_lineno); // Only used by EXTRA macro
15092
7.63k
            int _end_col_offset = _token->end_col_offset;
15093
7.63k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15094
7.63k
            _res = _PyAST_Constant ( Py_None , NULL , EXTRA );
15095
7.63k
            if (_res == NULL && PyErr_Occurred()) {
15096
0
                p->error_indicator = 1;
15097
0
                p->level--;
15098
0
                return NULL;
15099
0
            }
15100
7.63k
            goto done;
15101
7.63k
        }
15102
823k
        p->mark = _mark;
15103
823k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15104
823k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
15105
823k
    }
15106
0
    { // &(STRING | FSTRING_START | TSTRING_START) strings
15107
823k
        if (p->error_indicator) {
15108
0
            p->level--;
15109
0
            return NULL;
15110
0
        }
15111
823k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
15112
823k
        expr_ty strings_var;
15113
823k
        if (
15114
823k
            _PyPegen_lookahead(1, _tmp_42_rule, p)
15115
823k
            &&
15116
823k
            (strings_var = strings_rule(p))  // strings
15117
823k
        )
15118
104k
        {
15119
104k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
15120
104k
            _res = strings_var;
15121
104k
            goto done;
15122
104k
        }
15123
718k
        p->mark = _mark;
15124
718k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15125
718k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
15126
718k
    }
15127
0
    { // NUMBER
15128
718k
        if (p->error_indicator) {
15129
4.32k
            p->level--;
15130
4.32k
            return NULL;
15131
4.32k
        }
15132
714k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
15133
714k
        expr_ty number_var;
15134
714k
        if (
15135
714k
            (number_var = _PyPegen_number_token(p))  // NUMBER
15136
714k
        )
15137
227k
        {
15138
227k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
15139
227k
            _res = number_var;
15140
227k
            goto done;
15141
227k
        }
15142
487k
        p->mark = _mark;
15143
487k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15144
487k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
15145
487k
    }
15146
0
    { // &'(' (tuple | group | genexp)
15147
487k
        if (p->error_indicator) {
15148
15
            p->level--;
15149
15
            return NULL;
15150
15
        }
15151
487k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'(' (tuple | group | genexp)"));
15152
487k
        void *_tmp_66_var;
15153
487k
        if (
15154
487k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 7)  // token='('
15155
487k
            &&
15156
487k
            (_tmp_66_var = _tmp_66_rule(p))  // tuple | group | genexp
15157
487k
        )
15158
57.1k
        {
15159
57.1k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'(' (tuple | group | genexp)"));
15160
57.1k
            _res = _tmp_66_var;
15161
57.1k
            goto done;
15162
57.1k
        }
15163
429k
        p->mark = _mark;
15164
429k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15165
429k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'(' (tuple | group | genexp)"));
15166
429k
    }
15167
0
    { // &'[' (list | listcomp)
15168
429k
        if (p->error_indicator) {
15169
8.94k
            p->level--;
15170
8.94k
            return NULL;
15171
8.94k
        }
15172
420k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'[' (list | listcomp)"));
15173
420k
        void *_tmp_67_var;
15174
420k
        if (
15175
420k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 9)  // token='['
15176
420k
            &&
15177
420k
            (_tmp_67_var = _tmp_67_rule(p))  // list | listcomp
15178
420k
        )
15179
17.1k
        {
15180
17.1k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'[' (list | listcomp)"));
15181
17.1k
            _res = _tmp_67_var;
15182
17.1k
            goto done;
15183
17.1k
        }
15184
403k
        p->mark = _mark;
15185
403k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15186
403k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'[' (list | listcomp)"));
15187
403k
    }
15188
0
    { // &'{' (dict | set | dictcomp | setcomp)
15189
403k
        if (p->error_indicator) {
15190
11.2k
            p->level--;
15191
11.2k
            return NULL;
15192
11.2k
        }
15193
392k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
15194
392k
        void *_tmp_68_var;
15195
392k
        if (
15196
392k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 25)  // token='{'
15197
392k
            &&
15198
392k
            (_tmp_68_var = _tmp_68_rule(p))  // dict | set | dictcomp | setcomp
15199
392k
        )
15200
7.76k
        {
15201
7.76k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
15202
7.76k
            _res = _tmp_68_var;
15203
7.76k
            goto done;
15204
7.76k
        }
15205
384k
        p->mark = _mark;
15206
384k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15207
384k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
15208
384k
    }
15209
0
    { // '...'
15210
384k
        if (p->error_indicator) {
15211
8.29k
            p->level--;
15212
8.29k
            return NULL;
15213
8.29k
        }
15214
376k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
15215
376k
        Token * _literal;
15216
376k
        if (
15217
376k
            (_literal = _PyPegen_expect_token(p, 52))  // token='...'
15218
376k
        )
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
375k
        p->mark = _mark;
15239
375k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15240
375k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
15241
375k
    }
15242
0
    _res = NULL;
15243
1.51M
  done:
15244
1.51M
    p->level--;
15245
1.51M
    return _res;
15246
375k
}
15247
15248
// group: '(' (yield_expr | named_expression) ')' | invalid_group
15249
static expr_ty
15250
group_rule(Parser *p)
15251
36.6k
{
15252
36.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15253
0
        _Pypegen_stack_overflow(p);
15254
0
    }
15255
36.6k
    if (p->error_indicator) {
15256
0
        p->level--;
15257
0
        return NULL;
15258
0
    }
15259
36.6k
    expr_ty _res = NULL;
15260
36.6k
    int _mark = p->mark;
15261
36.6k
    { // '(' (yield_expr | named_expression) ')'
15262
36.6k
        if (p->error_indicator) {
15263
0
            p->level--;
15264
0
            return NULL;
15265
0
        }
15266
36.6k
        D(fprintf(stderr, "%*c> group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
15267
36.6k
        Token * _literal;
15268
36.6k
        Token * _literal_1;
15269
36.6k
        void *a;
15270
36.6k
        if (
15271
36.6k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
15272
36.6k
            &&
15273
36.6k
            (a = _tmp_69_rule(p))  // yield_expr | named_expression
15274
36.6k
            &&
15275
36.6k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
15276
36.6k
        )
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
24.7k
        p->mark = _mark;
15288
24.7k
        D(fprintf(stderr, "%*c%s group[%d-%d]: %s failed!\n", p->level, ' ',
15289
24.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
15290
24.7k
    }
15291
24.7k
    if (p->call_invalid_rules) { // invalid_group
15292
8.86k
        if (p->error_indicator) {
15293
329
            p->level--;
15294
329
            return NULL;
15295
329
        }
15296
8.53k
        D(fprintf(stderr, "%*c> group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_group"));
15297
8.53k
        void *invalid_group_var;
15298
8.53k
        if (
15299
8.53k
            (invalid_group_var = invalid_group_rule(p))  // invalid_group
15300
8.53k
        )
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.53k
        p->mark = _mark;
15307
8.53k
        D(fprintf(stderr, "%*c%s group[%d-%d]: %s failed!\n", p->level, ' ',
15308
8.53k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_group"));
15309
8.53k
    }
15310
24.4k
    _res = NULL;
15311
36.3k
  done:
15312
36.3k
    p->level--;
15313
36.3k
    return _res;
15314
24.4k
}
15315
15316
// lambdef: 'lambda' lambda_params? ':' expression
15317
static expr_ty
15318
lambdef_rule(Parser *p)
15319
325k
{
15320
325k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15321
0
        _Pypegen_stack_overflow(p);
15322
0
    }
15323
325k
    if (p->error_indicator) {
15324
0
        p->level--;
15325
0
        return NULL;
15326
0
    }
15327
325k
    expr_ty _res = NULL;
15328
325k
    int _mark = p->mark;
15329
325k
    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
325k
    int _start_lineno = p->tokens[_mark]->lineno;
15335
325k
    UNUSED(_start_lineno); // Only used by EXTRA macro
15336
325k
    int _start_col_offset = p->tokens[_mark]->col_offset;
15337
325k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
15338
325k
    { // 'lambda' lambda_params? ':' expression
15339
325k
        if (p->error_indicator) {
15340
0
            p->level--;
15341
0
            return NULL;
15342
0
        }
15343
325k
        D(fprintf(stderr, "%*c> lambdef[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' expression"));
15344
325k
        Token * _keyword;
15345
325k
        Token * _literal;
15346
325k
        void *a;
15347
325k
        expr_ty b;
15348
325k
        if (
15349
325k
            (_keyword = _PyPegen_expect_token(p, 622))  // token='lambda'
15350
325k
            &&
15351
325k
            (a = lambda_params_rule(p), !p->error_indicator)  // lambda_params?
15352
325k
            &&
15353
325k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
15354
325k
            &&
15355
325k
            (b = expression_rule(p))  // expression
15356
325k
        )
15357
3.03k
        {
15358
3.03k
            D(fprintf(stderr, "%*c+ lambdef[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' expression"));
15359
3.03k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15360
3.03k
            if (_token == NULL) {
15361
0
                p->level--;
15362
0
                return NULL;
15363
0
            }
15364
3.03k
            int _end_lineno = _token->end_lineno;
15365
3.03k
            UNUSED(_end_lineno); // Only used by EXTRA macro
15366
3.03k
            int _end_col_offset = _token->end_col_offset;
15367
3.03k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15368
3.03k
            _res = _PyAST_Lambda ( ( a ) ? a : CHECK ( arguments_ty , _PyPegen_empty_arguments ( p ) ) , b , EXTRA );
15369
3.03k
            if (_res == NULL && PyErr_Occurred()) {
15370
0
                p->error_indicator = 1;
15371
0
                p->level--;
15372
0
                return NULL;
15373
0
            }
15374
3.03k
            goto done;
15375
3.03k
        }
15376
322k
        p->mark = _mark;
15377
322k
        D(fprintf(stderr, "%*c%s lambdef[%d-%d]: %s failed!\n", p->level, ' ',
15378
322k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'lambda' lambda_params? ':' expression"));
15379
322k
    }
15380
0
    _res = NULL;
15381
325k
  done:
15382
325k
    p->level--;
15383
325k
    return _res;
15384
322k
}
15385
15386
// lambda_params: invalid_lambda_parameters | lambda_parameters
15387
static arguments_ty
15388
lambda_params_rule(Parser *p)
15389
14.8k
{
15390
14.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15391
0
        _Pypegen_stack_overflow(p);
15392
0
    }
15393
14.8k
    if (p->error_indicator) {
15394
0
        p->level--;
15395
0
        return NULL;
15396
0
    }
15397
14.8k
    arguments_ty _res = NULL;
15398
14.8k
    int _mark = p->mark;
15399
14.8k
    if (p->call_invalid_rules) { // invalid_lambda_parameters
15400
8.88k
        if (p->error_indicator) {
15401
0
            p->level--;
15402
0
            return NULL;
15403
0
        }
15404
8.88k
        D(fprintf(stderr, "%*c> lambda_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_parameters"));
15405
8.88k
        void *invalid_lambda_parameters_var;
15406
8.88k
        if (
15407
8.88k
            (invalid_lambda_parameters_var = invalid_lambda_parameters_rule(p))  // invalid_lambda_parameters
15408
8.88k
        )
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
8.88k
        p->mark = _mark;
15415
8.88k
        D(fprintf(stderr, "%*c%s lambda_params[%d-%d]: %s failed!\n", p->level, ' ',
15416
8.88k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_parameters"));
15417
8.88k
    }
15418
14.8k
    { // lambda_parameters
15419
14.8k
        if (p->error_indicator) {
15420
707
            p->level--;
15421
707
            return NULL;
15422
707
        }
15423
14.1k
        D(fprintf(stderr, "%*c> lambda_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_parameters"));
15424
14.1k
        arguments_ty lambda_parameters_var;
15425
14.1k
        if (
15426
14.1k
            (lambda_parameters_var = lambda_parameters_rule(p))  // lambda_parameters
15427
14.1k
        )
15428
7.63k
        {
15429
7.63k
            D(fprintf(stderr, "%*c+ lambda_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_parameters"));
15430
7.63k
            _res = lambda_parameters_var;
15431
7.63k
            goto done;
15432
7.63k
        }
15433
6.50k
        p->mark = _mark;
15434
6.50k
        D(fprintf(stderr, "%*c%s lambda_params[%d-%d]: %s failed!\n", p->level, ' ',
15435
6.50k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_parameters"));
15436
6.50k
    }
15437
0
    _res = NULL;
15438
14.1k
  done:
15439
14.1k
    p->level--;
15440
14.1k
    return _res;
15441
6.50k
}
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.1k
{
15452
14.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15453
0
        _Pypegen_stack_overflow(p);
15454
0
    }
15455
14.1k
    if (p->error_indicator) {
15456
0
        p->level--;
15457
0
        return NULL;
15458
0
    }
15459
14.1k
    arguments_ty _res = NULL;
15460
14.1k
    int _mark = p->mark;
15461
14.1k
    { // lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
15462
14.1k
        if (p->error_indicator) {
15463
0
            p->level--;
15464
0
            return NULL;
15465
0
        }
15466
14.1k
        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.1k
        asdl_arg_seq* a;
15468
14.1k
        asdl_arg_seq* b;
15469
14.1k
        asdl_seq * c;
15470
14.1k
        void *d;
15471
14.1k
        if (
15472
14.1k
            (a = lambda_slash_no_default_rule(p))  // lambda_slash_no_default
15473
14.1k
            &&
15474
14.1k
            (b = (asdl_arg_seq*)_loop0_70_rule(p))  // lambda_param_no_default*
15475
14.1k
            &&
15476
14.1k
            (c = _loop0_71_rule(p))  // lambda_param_with_default*
15477
14.1k
            &&
15478
14.1k
            (d = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
15479
14.1k
        )
15480
483
        {
15481
483
            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
483
            _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , a , NULL , b , c , d ) );
15483
483
            if (_res == NULL && PyErr_Occurred()) {
15484
0
                p->error_indicator = 1;
15485
0
                p->level--;
15486
0
                return NULL;
15487
0
            }
15488
483
            goto done;
15489
483
        }
15490
13.6k
        p->mark = _mark;
15491
13.6k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15492
13.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?"));
15493
13.6k
    }
15494
0
    { // lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
15495
13.6k
        if (p->error_indicator) {
15496
339
            p->level--;
15497
339
            return NULL;
15498
339
        }
15499
13.3k
        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
13.3k
        SlashWithDefault* a;
15501
13.3k
        asdl_seq * b;
15502
13.3k
        void *c;
15503
13.3k
        if (
15504
13.3k
            (a = lambda_slash_with_default_rule(p))  // lambda_slash_with_default
15505
13.3k
            &&
15506
13.3k
            (b = _loop0_71_rule(p))  // lambda_param_with_default*
15507
13.3k
            &&
15508
13.3k
            (c = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
15509
13.3k
        )
15510
1.31k
        {
15511
1.31k
            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.31k
            _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , NULL , a , NULL , b , c ) );
15513
1.31k
            if (_res == NULL && PyErr_Occurred()) {
15514
0
                p->error_indicator = 1;
15515
0
                p->level--;
15516
0
                return NULL;
15517
0
            }
15518
1.31k
            goto done;
15519
1.31k
        }
15520
12.0k
        p->mark = _mark;
15521
12.0k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15522
12.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default lambda_param_with_default* lambda_star_etc?"));
15523
12.0k
    }
15524
0
    { // lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
15525
12.0k
        if (p->error_indicator) {
15526
424
            p->level--;
15527
424
            return NULL;
15528
424
        }
15529
11.5k
        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
11.5k
        asdl_arg_seq* a;
15531
11.5k
        asdl_seq * b;
15532
11.5k
        void *c;
15533
11.5k
        if (
15534
11.5k
            (a = (asdl_arg_seq*)_loop1_72_rule(p))  // lambda_param_no_default+
15535
11.5k
            &&
15536
11.5k
            (b = _loop0_71_rule(p))  // lambda_param_with_default*
15537
11.5k
            &&
15538
11.5k
            (c = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
15539
11.5k
        )
15540
1.59k
        {
15541
1.59k
            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.59k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
15543
1.59k
            if (_res == NULL && PyErr_Occurred()) {
15544
0
                p->error_indicator = 1;
15545
0
                p->level--;
15546
0
                return NULL;
15547
0
            }
15548
1.59k
            goto done;
15549
1.59k
        }
15550
9.98k
        p->mark = _mark;
15551
9.98k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15552
9.98k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?"));
15553
9.98k
    }
15554
0
    { // lambda_param_with_default+ lambda_star_etc?
15555
9.98k
        if (p->error_indicator) {
15556
87
            p->level--;
15557
87
            return NULL;
15558
87
        }
15559
9.90k
        D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
15560
9.90k
        asdl_seq * a;
15561
9.90k
        void *b;
15562
9.90k
        if (
15563
9.90k
            (a = _loop1_73_rule(p))  // lambda_param_with_default+
15564
9.90k
            &&
15565
9.90k
            (b = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
15566
9.90k
        )
15567
1.95k
        {
15568
1.95k
            D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
15569
1.95k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
15570
1.95k
            if (_res == NULL && PyErr_Occurred()) {
15571
0
                p->error_indicator = 1;
15572
0
                p->level--;
15573
0
                return NULL;
15574
0
            }
15575
1.95k
            goto done;
15576
1.95k
        }
15577
7.94k
        p->mark = _mark;
15578
7.94k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15579
7.94k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
15580
7.94k
    }
15581
0
    { // lambda_star_etc
15582
7.94k
        if (p->error_indicator) {
15583
68
            p->level--;
15584
68
            return NULL;
15585
68
        }
15586
7.87k
        D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_star_etc"));
15587
7.87k
        StarEtc* a;
15588
7.87k
        if (
15589
7.87k
            (a = lambda_star_etc_rule(p))  // lambda_star_etc
15590
7.87k
        )
15591
2.28k
        {
15592
2.28k
            D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_star_etc"));
15593
2.28k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
15594
2.28k
            if (_res == NULL && PyErr_Occurred()) {
15595
0
                p->error_indicator = 1;
15596
0
                p->level--;
15597
0
                return NULL;
15598
0
            }
15599
2.28k
            goto done;
15600
2.28k
        }
15601
5.59k
        p->mark = _mark;
15602
5.59k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15603
5.59k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_star_etc"));
15604
5.59k
    }
15605
0
    _res = NULL;
15606
13.2k
  done:
15607
13.2k
    p->level--;
15608
13.2k
    return _res;
15609
5.59k
}
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
39.8k
{
15617
39.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15618
0
        _Pypegen_stack_overflow(p);
15619
0
    }
15620
39.8k
    if (p->error_indicator) {
15621
0
        p->level--;
15622
0
        return NULL;
15623
0
    }
15624
39.8k
    asdl_arg_seq* _res = NULL;
15625
39.8k
    int _mark = p->mark;
15626
39.8k
    { // lambda_param_no_default+ '/' ','
15627
39.8k
        if (p->error_indicator) {
15628
0
            p->level--;
15629
0
            return NULL;
15630
0
        }
15631
39.8k
        D(fprintf(stderr, "%*c> lambda_slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' ','"));
15632
39.8k
        Token * _literal;
15633
39.8k
        Token * _literal_1;
15634
39.8k
        asdl_arg_seq* a;
15635
39.8k
        if (
15636
39.8k
            (a = (asdl_arg_seq*)_loop1_72_rule(p))  // lambda_param_no_default+
15637
39.8k
            &&
15638
39.8k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
15639
39.8k
            &&
15640
39.8k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
15641
39.8k
        )
15642
920
        {
15643
920
            D(fprintf(stderr, "%*c+ lambda_slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' ','"));
15644
920
            _res = a;
15645
920
            if (_res == NULL && PyErr_Occurred()) {
15646
0
                p->error_indicator = 1;
15647
0
                p->level--;
15648
0
                return NULL;
15649
0
            }
15650
920
            goto done;
15651
920
        }
15652
38.9k
        p->mark = _mark;
15653
38.9k
        D(fprintf(stderr, "%*c%s lambda_slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
15654
38.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ '/' ','"));
15655
38.9k
    }
15656
0
    { // lambda_param_no_default+ '/' &':'
15657
38.9k
        if (p->error_indicator) {
15658
16
            p->level--;
15659
16
            return NULL;
15660
16
        }
15661
38.9k
        D(fprintf(stderr, "%*c> lambda_slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
15662
38.9k
        Token * _literal;
15663
38.9k
        asdl_arg_seq* a;
15664
38.9k
        if (
15665
38.9k
            (a = (asdl_arg_seq*)_loop1_72_rule(p))  // lambda_param_no_default+
15666
38.9k
            &&
15667
38.9k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
15668
38.9k
            &&
15669
38.9k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
15670
38.9k
        )
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
37.8k
        p->mark = _mark;
15682
37.8k
        D(fprintf(stderr, "%*c%s lambda_slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
15683
37.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
15684
37.8k
    }
15685
0
    _res = NULL;
15686
39.8k
  done:
15687
39.8k
    p->level--;
15688
39.8k
    return _res;
15689
37.8k
}
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
38.2k
{
15697
38.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15698
0
        _Pypegen_stack_overflow(p);
15699
0
    }
15700
38.2k
    if (p->error_indicator) {
15701
0
        p->level--;
15702
0
        return NULL;
15703
0
    }
15704
38.2k
    SlashWithDefault* _res = NULL;
15705
38.2k
    int _mark = p->mark;
15706
38.2k
    { // lambda_param_no_default* lambda_param_with_default+ '/' ','
15707
38.2k
        if (p->error_indicator) {
15708
0
            p->level--;
15709
0
            return NULL;
15710
0
        }
15711
38.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+ '/' ','"));
15712
38.2k
        Token * _literal;
15713
38.2k
        Token * _literal_1;
15714
38.2k
        asdl_seq * a;
15715
38.2k
        asdl_seq * b;
15716
38.2k
        if (
15717
38.2k
            (a = _loop0_70_rule(p))  // lambda_param_no_default*
15718
38.2k
            &&
15719
38.2k
            (b = _loop1_73_rule(p))  // lambda_param_with_default+
15720
38.2k
            &&
15721
38.2k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
15722
38.2k
            &&
15723
38.2k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
15724
38.2k
        )
15725
2.93k
        {
15726
2.93k
            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
2.93k
            _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
15728
2.93k
            if (_res == NULL && PyErr_Occurred()) {
15729
0
                p->error_indicator = 1;
15730
0
                p->level--;
15731
0
                return NULL;
15732
0
            }
15733
2.93k
            goto done;
15734
2.93k
        }
15735
35.3k
        p->mark = _mark;
15736
35.3k
        D(fprintf(stderr, "%*c%s lambda_slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
15737
35.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' ','"));
15738
35.3k
    }
15739
0
    { // lambda_param_no_default* lambda_param_with_default+ '/' &':'
15740
35.3k
        if (p->error_indicator) {
15741
620
            p->level--;
15742
620
            return NULL;
15743
620
        }
15744
34.7k
        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
34.7k
        Token * _literal;
15746
34.7k
        asdl_seq * a;
15747
34.7k
        asdl_seq * b;
15748
34.7k
        if (
15749
34.7k
            (a = _loop0_70_rule(p))  // lambda_param_no_default*
15750
34.7k
            &&
15751
34.7k
            (b = _loop1_73_rule(p))  // lambda_param_with_default+
15752
34.7k
            &&
15753
34.7k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
15754
34.7k
            &&
15755
34.7k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
15756
34.7k
        )
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
33.4k
        p->mark = _mark;
15768
33.4k
        D(fprintf(stderr, "%*c%s lambda_slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
15769
33.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' &':'"));
15770
33.4k
    }
15771
0
    _res = NULL;
15772
37.6k
  done:
15773
37.6k
    p->level--;
15774
37.6k
    return _res;
15775
33.4k
}
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
13.8k
{
15785
13.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15786
0
        _Pypegen_stack_overflow(p);
15787
0
    }
15788
13.8k
    if (p->error_indicator) {
15789
451
        p->level--;
15790
451
        return NULL;
15791
451
    }
15792
13.3k
    StarEtc* _res = NULL;
15793
13.3k
    int _mark = p->mark;
15794
13.3k
    if (p->call_invalid_rules) { // invalid_lambda_star_etc
15795
8.17k
        if (p->error_indicator) {
15796
0
            p->level--;
15797
0
            return NULL;
15798
0
        }
15799
8.17k
        D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_star_etc"));
15800
8.17k
        void *invalid_lambda_star_etc_var;
15801
8.17k
        if (
15802
8.17k
            (invalid_lambda_star_etc_var = invalid_lambda_star_etc_rule(p))  // invalid_lambda_star_etc
15803
8.17k
        )
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.17k
        p->mark = _mark;
15810
8.17k
        D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15811
8.17k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_star_etc"));
15812
8.17k
    }
15813
13.3k
    { // '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
15814
13.3k
        if (p->error_indicator) {
15815
21
            p->level--;
15816
21
            return NULL;
15817
21
        }
15818
13.3k
        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
13.3k
        Token * _literal;
15820
13.3k
        arg_ty a;
15821
13.3k
        asdl_seq * b;
15822
13.3k
        void *c;
15823
13.3k
        if (
15824
13.3k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
15825
13.3k
            &&
15826
13.3k
            (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
15827
13.3k
            &&
15828
13.3k
            (b = _loop0_74_rule(p))  // lambda_param_maybe_default*
15829
13.3k
            &&
15830
13.3k
            (c = lambda_kwds_rule(p), !p->error_indicator)  // lambda_kwds?
15831
13.3k
        )
15832
1.61k
        {
15833
1.61k
            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.61k
            _res = _PyPegen_star_etc ( p , a , b , c );
15835
1.61k
            if (_res == NULL && PyErr_Occurred()) {
15836
0
                p->error_indicator = 1;
15837
0
                p->level--;
15838
0
                return NULL;
15839
0
            }
15840
1.61k
            goto done;
15841
1.61k
        }
15842
11.7k
        p->mark = _mark;
15843
11.7k
        D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15844
11.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?"));
15845
11.7k
    }
15846
0
    { // '*' ',' lambda_param_maybe_default+ lambda_kwds?
15847
11.7k
        if (p->error_indicator) {
15848
111
            p->level--;
15849
111
            return NULL;
15850
111
        }
15851
11.6k
        D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
15852
11.6k
        Token * _literal;
15853
11.6k
        Token * _literal_1;
15854
11.6k
        asdl_seq * b;
15855
11.6k
        void *c;
15856
11.6k
        if (
15857
11.6k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
15858
11.6k
            &&
15859
11.6k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
15860
11.6k
            &&
15861
11.6k
            (b = _loop1_75_rule(p))  // lambda_param_maybe_default+
15862
11.6k
            &&
15863
11.6k
            (c = lambda_kwds_rule(p), !p->error_indicator)  // lambda_kwds?
15864
11.6k
        )
15865
377
        {
15866
377
            D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
15867
377
            _res = _PyPegen_star_etc ( p , NULL , b , c );
15868
377
            if (_res == NULL && PyErr_Occurred()) {
15869
0
                p->error_indicator = 1;
15870
0
                p->level--;
15871
0
                return NULL;
15872
0
            }
15873
377
            goto done;
15874
377
        }
15875
11.2k
        p->mark = _mark;
15876
11.2k
        D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15877
11.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
15878
11.2k
    }
15879
0
    { // lambda_kwds
15880
11.2k
        if (p->error_indicator) {
15881
679
            p->level--;
15882
679
            return NULL;
15883
679
        }
15884
10.5k
        D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_kwds"));
15885
10.5k
        arg_ty a;
15886
10.5k
        if (
15887
10.5k
            (a = lambda_kwds_rule(p))  // lambda_kwds
15888
10.5k
        )
15889
499
        {
15890
499
            D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_kwds"));
15891
499
            _res = _PyPegen_star_etc ( p , NULL , NULL , a );
15892
499
            if (_res == NULL && PyErr_Occurred()) {
15893
0
                p->error_indicator = 1;
15894
0
                p->level--;
15895
0
                return NULL;
15896
0
            }
15897
499
            goto done;
15898
499
        }
15899
10.0k
        p->mark = _mark;
15900
10.0k
        D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15901
10.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_kwds"));
15902
10.0k
    }
15903
0
    _res = NULL;
15904
12.5k
  done:
15905
12.5k
    p->level--;
15906
12.5k
    return _res;
15907
10.0k
}
15908
15909
// lambda_kwds: invalid_lambda_kwds | '**' lambda_param_no_default
15910
static arg_ty
15911
lambda_kwds_rule(Parser *p)
15912
12.6k
{
15913
12.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15914
0
        _Pypegen_stack_overflow(p);
15915
0
    }
15916
12.6k
    if (p->error_indicator) {
15917
101
        p->level--;
15918
101
        return NULL;
15919
101
    }
15920
12.5k
    arg_ty _res = NULL;
15921
12.5k
    int _mark = p->mark;
15922
12.5k
    if (p->call_invalid_rules) { // invalid_lambda_kwds
15923
8.15k
        if (p->error_indicator) {
15924
0
            p->level--;
15925
0
            return NULL;
15926
0
        }
15927
8.15k
        D(fprintf(stderr, "%*c> lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_kwds"));
15928
8.15k
        void *invalid_lambda_kwds_var;
15929
8.15k
        if (
15930
8.15k
            (invalid_lambda_kwds_var = invalid_lambda_kwds_rule(p))  // invalid_lambda_kwds
15931
8.15k
        )
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.15k
        p->mark = _mark;
15938
8.15k
        D(fprintf(stderr, "%*c%s lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
15939
8.15k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_kwds"));
15940
8.15k
    }
15941
12.5k
    { // '**' lambda_param_no_default
15942
12.5k
        if (p->error_indicator) {
15943
5
            p->level--;
15944
5
            return NULL;
15945
5
        }
15946
12.5k
        D(fprintf(stderr, "%*c> lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param_no_default"));
15947
12.5k
        Token * _literal;
15948
12.5k
        arg_ty a;
15949
12.5k
        if (
15950
12.5k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
15951
12.5k
            &&
15952
12.5k
            (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
15953
12.5k
        )
15954
499
        {
15955
499
            D(fprintf(stderr, "%*c+ lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' lambda_param_no_default"));
15956
499
            _res = a;
15957
499
            if (_res == NULL && PyErr_Occurred()) {
15958
0
                p->error_indicator = 1;
15959
0
                p->level--;
15960
0
                return NULL;
15961
0
            }
15962
499
            goto done;
15963
499
        }
15964
12.0k
        p->mark = _mark;
15965
12.0k
        D(fprintf(stderr, "%*c%s lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
15966
12.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param_no_default"));
15967
12.0k
    }
15968
0
    _res = NULL;
15969
12.5k
  done:
15970
12.5k
    p->level--;
15971
12.5k
    return _res;
15972
12.0k
}
15973
15974
// lambda_param_no_default: lambda_param ',' | lambda_param &':'
15975
static arg_ty
15976
lambda_param_no_default_rule(Parser *p)
15977
314k
{
15978
314k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15979
0
        _Pypegen_stack_overflow(p);
15980
0
    }
15981
314k
    if (p->error_indicator) {
15982
0
        p->level--;
15983
0
        return NULL;
15984
0
    }
15985
314k
    arg_ty _res = NULL;
15986
314k
    int _mark = p->mark;
15987
314k
    { // lambda_param ','
15988
314k
        if (p->error_indicator) {
15989
0
            p->level--;
15990
0
            return NULL;
15991
0
        }
15992
314k
        D(fprintf(stderr, "%*c> lambda_param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param ','"));
15993
314k
        Token * _literal;
15994
314k
        arg_ty a;
15995
314k
        if (
15996
314k
            (a = lambda_param_rule(p))  // lambda_param
15997
314k
            &&
15998
314k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
15999
314k
        )
16000
112k
        {
16001
112k
            D(fprintf(stderr, "%*c+ lambda_param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param ','"));
16002
112k
            _res = a;
16003
112k
            if (_res == NULL && PyErr_Occurred()) {
16004
0
                p->error_indicator = 1;
16005
0
                p->level--;
16006
0
                return NULL;
16007
0
            }
16008
112k
            goto done;
16009
112k
        }
16010
202k
        p->mark = _mark;
16011
202k
        D(fprintf(stderr, "%*c%s lambda_param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
16012
202k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param ','"));
16013
202k
    }
16014
0
    { // lambda_param &':'
16015
202k
        if (p->error_indicator) {
16016
26
            p->level--;
16017
26
            return NULL;
16018
26
        }
16019
202k
        D(fprintf(stderr, "%*c> lambda_param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param &':'"));
16020
202k
        arg_ty a;
16021
202k
        if (
16022
202k
            (a = lambda_param_rule(p))  // lambda_param
16023
202k
            &&
16024
202k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
16025
202k
        )
16026
13.8k
        {
16027
13.8k
            D(fprintf(stderr, "%*c+ lambda_param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param &':'"));
16028
13.8k
            _res = a;
16029
13.8k
            if (_res == NULL && PyErr_Occurred()) {
16030
0
                p->error_indicator = 1;
16031
0
                p->level--;
16032
0
                return NULL;
16033
0
            }
16034
13.8k
            goto done;
16035
13.8k
        }
16036
188k
        p->mark = _mark;
16037
188k
        D(fprintf(stderr, "%*c%s lambda_param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
16038
188k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param &':'"));
16039
188k
    }
16040
0
    _res = NULL;
16041
314k
  done:
16042
314k
    p->level--;
16043
314k
    return _res;
16044
188k
}
16045
16046
// lambda_param_with_default: lambda_param default ',' | lambda_param default &':'
16047
static NameDefaultPair*
16048
lambda_param_with_default_rule(Parser *p)
16049
126k
{
16050
126k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16051
0
        _Pypegen_stack_overflow(p);
16052
0
    }
16053
126k
    if (p->error_indicator) {
16054
0
        p->level--;
16055
0
        return NULL;
16056
0
    }
16057
126k
    NameDefaultPair* _res = NULL;
16058
126k
    int _mark = p->mark;
16059
126k
    { // lambda_param default ','
16060
126k
        if (p->error_indicator) {
16061
0
            p->level--;
16062
0
            return NULL;
16063
0
        }
16064
126k
        D(fprintf(stderr, "%*c> lambda_param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default ','"));
16065
126k
        Token * _literal;
16066
126k
        arg_ty a;
16067
126k
        expr_ty c;
16068
126k
        if (
16069
126k
            (a = lambda_param_rule(p))  // lambda_param
16070
126k
            &&
16071
126k
            (c = default_rule(p))  // default
16072
126k
            &&
16073
126k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
16074
126k
        )
16075
21.9k
        {
16076
21.9k
            D(fprintf(stderr, "%*c+ lambda_param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default ','"));
16077
21.9k
            _res = _PyPegen_name_default_pair ( p , a , c , NULL );
16078
21.9k
            if (_res == NULL && PyErr_Occurred()) {
16079
0
                p->error_indicator = 1;
16080
0
                p->level--;
16081
0
                return NULL;
16082
0
            }
16083
21.9k
            goto done;
16084
21.9k
        }
16085
104k
        p->mark = _mark;
16086
104k
        D(fprintf(stderr, "%*c%s lambda_param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
16087
104k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default ','"));
16088
104k
    }
16089
0
    { // lambda_param default &':'
16090
104k
        if (p->error_indicator) {
16091
1.06k
            p->level--;
16092
1.06k
            return NULL;
16093
1.06k
        }
16094
103k
        D(fprintf(stderr, "%*c> lambda_param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default &':'"));
16095
103k
        arg_ty a;
16096
103k
        expr_ty c;
16097
103k
        if (
16098
103k
            (a = lambda_param_rule(p))  // lambda_param
16099
103k
            &&
16100
103k
            (c = default_rule(p))  // default
16101
103k
            &&
16102
103k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
16103
103k
        )
16104
10.1k
        {
16105
10.1k
            D(fprintf(stderr, "%*c+ lambda_param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default &':'"));
16106
10.1k
            _res = _PyPegen_name_default_pair ( p , a , c , NULL );
16107
10.1k
            if (_res == NULL && PyErr_Occurred()) {
16108
0
                p->error_indicator = 1;
16109
0
                p->level--;
16110
0
                return NULL;
16111
0
            }
16112
10.1k
            goto done;
16113
10.1k
        }
16114
93.2k
        p->mark = _mark;
16115
93.2k
        D(fprintf(stderr, "%*c%s lambda_param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
16116
93.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default &':'"));
16117
93.2k
    }
16118
0
    _res = NULL;
16119
125k
  done:
16120
125k
    p->level--;
16121
125k
    return _res;
16122
93.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
47.0k
{
16128
47.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16129
0
        _Pypegen_stack_overflow(p);
16130
0
    }
16131
47.0k
    if (p->error_indicator) {
16132
0
        p->level--;
16133
0
        return NULL;
16134
0
    }
16135
47.0k
    NameDefaultPair* _res = NULL;
16136
47.0k
    int _mark = p->mark;
16137
47.0k
    { // lambda_param default? ','
16138
47.0k
        if (p->error_indicator) {
16139
0
            p->level--;
16140
0
            return NULL;
16141
0
        }
16142
47.0k
        D(fprintf(stderr, "%*c> lambda_param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default? ','"));
16143
47.0k
        Token * _literal;
16144
47.0k
        arg_ty a;
16145
47.0k
        void *c;
16146
47.0k
        if (
16147
47.0k
            (a = lambda_param_rule(p))  // lambda_param
16148
47.0k
            &&
16149
47.0k
            (c = default_rule(p), !p->error_indicator)  // default?
16150
47.0k
            &&
16151
47.0k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
16152
47.0k
        )
16153
17.8k
        {
16154
17.8k
            D(fprintf(stderr, "%*c+ lambda_param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default? ','"));
16155
17.8k
            _res = _PyPegen_name_default_pair ( p , a , c , NULL );
16156
17.8k
            if (_res == NULL && PyErr_Occurred()) {
16157
0
                p->error_indicator = 1;
16158
0
                p->level--;
16159
0
                return NULL;
16160
0
            }
16161
17.8k
            goto done;
16162
17.8k
        }
16163
29.2k
        p->mark = _mark;
16164
29.2k
        D(fprintf(stderr, "%*c%s lambda_param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
16165
29.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default? ','"));
16166
29.2k
    }
16167
0
    { // lambda_param default? &':'
16168
29.2k
        if (p->error_indicator) {
16169
1.12k
            p->level--;
16170
1.12k
            return NULL;
16171
1.12k
        }
16172
28.0k
        D(fprintf(stderr, "%*c> lambda_param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default? &':'"));
16173
28.0k
        arg_ty a;
16174
28.0k
        void *c;
16175
28.0k
        if (
16176
28.0k
            (a = lambda_param_rule(p))  // lambda_param
16177
28.0k
            &&
16178
28.0k
            (c = default_rule(p), !p->error_indicator)  // default?
16179
28.0k
            &&
16180
28.0k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
16181
28.0k
        )
16182
3.25k
        {
16183
3.25k
            D(fprintf(stderr, "%*c+ lambda_param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default? &':'"));
16184
3.25k
            _res = _PyPegen_name_default_pair ( p , a , c , NULL );
16185
3.25k
            if (_res == NULL && PyErr_Occurred()) {
16186
0
                p->error_indicator = 1;
16187
0
                p->level--;
16188
0
                return NULL;
16189
0
            }
16190
3.25k
            goto done;
16191
3.25k
        }
16192
24.8k
        p->mark = _mark;
16193
24.8k
        D(fprintf(stderr, "%*c%s lambda_param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
16194
24.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default? &':'"));
16195
24.8k
    }
16196
0
    _res = NULL;
16197
45.9k
  done:
16198
45.9k
    p->level--;
16199
45.9k
    return _res;
16200
24.8k
}
16201
16202
// lambda_param: NAME
16203
static arg_ty
16204
lambda_param_rule(Parser *p)
16205
828k
{
16206
828k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16207
0
        _Pypegen_stack_overflow(p);
16208
0
    }
16209
828k
    if (p->error_indicator) {
16210
0
        p->level--;
16211
0
        return NULL;
16212
0
    }
16213
828k
    arg_ty _res = NULL;
16214
828k
    int _mark = p->mark;
16215
828k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16216
64
        p->error_indicator = 1;
16217
64
        p->level--;
16218
64
        return NULL;
16219
64
    }
16220
828k
    int _start_lineno = p->tokens[_mark]->lineno;
16221
828k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16222
828k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16223
828k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16224
828k
    { // NAME
16225
828k
        if (p->error_indicator) {
16226
0
            p->level--;
16227
0
            return NULL;
16228
0
        }
16229
828k
        D(fprintf(stderr, "%*c> lambda_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
16230
828k
        expr_ty a;
16231
828k
        if (
16232
828k
            (a = _PyPegen_name_token(p))  // NAME
16233
828k
        )
16234
408k
        {
16235
408k
            D(fprintf(stderr, "%*c+ lambda_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
16236
408k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16237
408k
            if (_token == NULL) {
16238
0
                p->level--;
16239
0
                return NULL;
16240
0
            }
16241
408k
            int _end_lineno = _token->end_lineno;
16242
408k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16243
408k
            int _end_col_offset = _token->end_col_offset;
16244
408k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16245
408k
            _res = _PyAST_arg ( a -> v . Name . id , NULL , NULL , EXTRA );
16246
408k
            if (_res == NULL && PyErr_Occurred()) {
16247
0
                p->error_indicator = 1;
16248
0
                p->level--;
16249
0
                return NULL;
16250
0
            }
16251
408k
            goto done;
16252
408k
        }
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
828k
  done:
16259
828k
    p->level--;
16260
828k
    return _res;
16261
419k
}
16262
16263
// fstring_middle: fstring_replacement_field | FSTRING_MIDDLE
16264
static expr_ty
16265
fstring_middle_rule(Parser *p)
16266
57.9k
{
16267
57.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16268
1
        _Pypegen_stack_overflow(p);
16269
1
    }
16270
57.9k
    if (p->error_indicator) {
16271
1
        p->level--;
16272
1
        return NULL;
16273
1
    }
16274
57.9k
    expr_ty _res = NULL;
16275
57.9k
    int _mark = p->mark;
16276
57.9k
    { // fstring_replacement_field
16277
57.9k
        if (p->error_indicator) {
16278
0
            p->level--;
16279
0
            return NULL;
16280
0
        }
16281
57.9k
        D(fprintf(stderr, "%*c> fstring_middle[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field"));
16282
57.9k
        expr_ty fstring_replacement_field_var;
16283
57.9k
        if (
16284
57.9k
            (fstring_replacement_field_var = fstring_replacement_field_rule(p))  // fstring_replacement_field
16285
57.9k
        )
16286
15.2k
        {
16287
15.2k
            D(fprintf(stderr, "%*c+ fstring_middle[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field"));
16288
15.2k
            _res = fstring_replacement_field_var;
16289
15.2k
            goto done;
16290
15.2k
        }
16291
42.7k
        p->mark = _mark;
16292
42.7k
        D(fprintf(stderr, "%*c%s fstring_middle[%d-%d]: %s failed!\n", p->level, ' ',
16293
42.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_replacement_field"));
16294
42.7k
    }
16295
0
    { // FSTRING_MIDDLE
16296
42.7k
        if (p->error_indicator) {
16297
2.44k
            p->level--;
16298
2.44k
            return NULL;
16299
2.44k
        }
16300
40.3k
        D(fprintf(stderr, "%*c> fstring_middle[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE"));
16301
40.3k
        Token * t;
16302
40.3k
        if (
16303
40.3k
            (t = _PyPegen_expect_token(p, FSTRING_MIDDLE))  // token='FSTRING_MIDDLE'
16304
40.3k
        )
16305
25.5k
        {
16306
25.5k
            D(fprintf(stderr, "%*c+ fstring_middle[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE"));
16307
25.5k
            _res = _PyPegen_constant_from_token ( p , t );
16308
25.5k
            if (_res == NULL && PyErr_Occurred()) {
16309
5
                p->error_indicator = 1;
16310
5
                p->level--;
16311
5
                return NULL;
16312
5
            }
16313
25.5k
            goto done;
16314
25.5k
        }
16315
14.7k
        p->mark = _mark;
16316
14.7k
        D(fprintf(stderr, "%*c%s fstring_middle[%d-%d]: %s failed!\n", p->level, ' ',
16317
14.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_MIDDLE"));
16318
14.7k
    }
16319
0
    _res = NULL;
16320
55.5k
  done:
16321
55.5k
    p->level--;
16322
55.5k
    return _res;
16323
14.7k
}
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
65.5k
{
16331
65.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16332
1
        _Pypegen_stack_overflow(p);
16333
1
    }
16334
65.5k
    if (p->error_indicator) {
16335
1
        p->level--;
16336
1
        return NULL;
16337
1
    }
16338
65.5k
    expr_ty _res = NULL;
16339
65.5k
    int _mark = p->mark;
16340
65.5k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16341
154
        p->error_indicator = 1;
16342
154
        p->level--;
16343
154
        return NULL;
16344
154
    }
16345
65.3k
    int _start_lineno = p->tokens[_mark]->lineno;
16346
65.3k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16347
65.3k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16348
65.3k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16349
65.3k
    { // '{' annotated_rhs '='? fstring_conversion? fstring_full_format_spec? '}'
16350
65.3k
        if (p->error_indicator) {
16351
0
            p->level--;
16352
0
            return NULL;
16353
0
        }
16354
65.3k
        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.3k
        Token * _literal;
16356
65.3k
        expr_ty a;
16357
65.3k
        void *conversion;
16358
65.3k
        void *debug_expr;
16359
65.3k
        void *format;
16360
65.3k
        Token * rbrace;
16361
65.3k
        if (
16362
65.3k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
16363
65.3k
            &&
16364
65.3k
            (a = annotated_rhs_rule(p))  // annotated_rhs
16365
65.3k
            &&
16366
65.3k
            (debug_expr = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
16367
65.3k
            &&
16368
65.3k
            (conversion = fstring_conversion_rule(p), !p->error_indicator)  // fstring_conversion?
16369
65.3k
            &&
16370
65.3k
            (format = fstring_full_format_spec_rule(p), !p->error_indicator)  // fstring_full_format_spec?
16371
65.3k
            &&
16372
65.3k
            (rbrace = _PyPegen_expect_token(p, 26))  // token='}'
16373
65.3k
        )
16374
18.8k
        {
16375
18.8k
            D(fprintf(stderr, "%*c+ fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? fstring_full_format_spec? '}'"));
16376
18.8k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16377
18.8k
            if (_token == NULL) {
16378
0
                p->level--;
16379
0
                return NULL;
16380
0
            }
16381
18.8k
            int _end_lineno = _token->end_lineno;
16382
18.8k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16383
18.8k
            int _end_col_offset = _token->end_col_offset;
16384
18.8k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16385
18.8k
            _res = _PyPegen_formatted_value ( p , a , debug_expr , conversion , format , rbrace , EXTRA );
16386
18.8k
            if (_res == NULL && PyErr_Occurred()) {
16387
2
                p->error_indicator = 1;
16388
2
                p->level--;
16389
2
                return NULL;
16390
2
            }
16391
18.8k
            goto done;
16392
18.8k
        }
16393
46.5k
        p->mark = _mark;
16394
46.5k
        D(fprintf(stderr, "%*c%s fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16395
46.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? fstring_full_format_spec? '}'"));
16396
46.5k
    }
16397
46.5k
    if (p->call_invalid_rules) { // invalid_fstring_replacement_field
16398
9.76k
        if (p->error_indicator) {
16399
1.82k
            p->level--;
16400
1.82k
            return NULL;
16401
1.82k
        }
16402
7.93k
        D(fprintf(stderr, "%*c> fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_fstring_replacement_field"));
16403
7.93k
        void *invalid_fstring_replacement_field_var;
16404
7.93k
        if (
16405
7.93k
            (invalid_fstring_replacement_field_var = invalid_fstring_replacement_field_rule(p))  // invalid_fstring_replacement_field
16406
7.93k
        )
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.93k
        p->mark = _mark;
16413
7.93k
        D(fprintf(stderr, "%*c%s fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16414
7.93k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_fstring_replacement_field"));
16415
7.93k
    }
16416
44.7k
    _res = NULL;
16417
63.5k
  done:
16418
63.5k
    p->level--;
16419
63.5k
    return _res;
16420
44.7k
}
16421
16422
// fstring_conversion: "!" NAME
16423
static ResultTokenWithMetadata*
16424
fstring_conversion_rule(Parser *p)
16425
27.3k
{
16426
27.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16427
0
        _Pypegen_stack_overflow(p);
16428
0
    }
16429
27.3k
    if (p->error_indicator) {
16430
0
        p->level--;
16431
0
        return NULL;
16432
0
    }
16433
27.3k
    ResultTokenWithMetadata* _res = NULL;
16434
27.3k
    int _mark = p->mark;
16435
27.3k
    { // "!" NAME
16436
27.3k
        if (p->error_indicator) {
16437
0
            p->level--;
16438
0
            return NULL;
16439
0
        }
16440
27.3k
        D(fprintf(stderr, "%*c> fstring_conversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"!\" NAME"));
16441
27.3k
        expr_ty conv;
16442
27.3k
        Token * conv_token;
16443
27.3k
        if (
16444
27.3k
            (conv_token = _PyPegen_expect_token(p, 54))  // token='!'
16445
27.3k
            &&
16446
27.3k
            (conv = _PyPegen_name_token(p))  // NAME
16447
27.3k
        )
16448
1.47k
        {
16449
1.47k
            D(fprintf(stderr, "%*c+ fstring_conversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"!\" NAME"));
16450
1.47k
            _res = _PyPegen_check_fstring_conversion ( p , conv_token , conv );
16451
1.47k
            if (_res == NULL && PyErr_Occurred()) {
16452
14
                p->error_indicator = 1;
16453
14
                p->level--;
16454
14
                return NULL;
16455
14
            }
16456
1.46k
            goto done;
16457
1.47k
        }
16458
25.9k
        p->mark = _mark;
16459
25.9k
        D(fprintf(stderr, "%*c%s fstring_conversion[%d-%d]: %s failed!\n", p->level, ' ',
16460
25.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"!\" NAME"));
16461
25.9k
    }
16462
0
    _res = NULL;
16463
27.3k
  done:
16464
27.3k
    p->level--;
16465
27.3k
    return _res;
16466
25.9k
}
16467
16468
// fstring_full_format_spec: ':' fstring_format_spec*
16469
static ResultTokenWithMetadata*
16470
fstring_full_format_spec_rule(Parser *p)
16471
20.7k
{
16472
20.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16473
0
        _Pypegen_stack_overflow(p);
16474
0
    }
16475
20.7k
    if (p->error_indicator) {
16476
0
        p->level--;
16477
0
        return NULL;
16478
0
    }
16479
20.7k
    ResultTokenWithMetadata* _res = NULL;
16480
20.7k
    int _mark = p->mark;
16481
20.7k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16482
3
        p->error_indicator = 1;
16483
3
        p->level--;
16484
3
        return NULL;
16485
3
    }
16486
20.7k
    int _start_lineno = p->tokens[_mark]->lineno;
16487
20.7k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16488
20.7k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16489
20.7k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16490
20.7k
    { // ':' fstring_format_spec*
16491
20.7k
        if (p->error_indicator) {
16492
0
            p->level--;
16493
0
            return NULL;
16494
0
        }
16495
20.7k
        D(fprintf(stderr, "%*c> fstring_full_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' fstring_format_spec*"));
16496
20.7k
        Token * colon;
16497
20.7k
        asdl_seq * spec;
16498
20.7k
        if (
16499
20.7k
            (colon = _PyPegen_expect_token(p, 11))  // token=':'
16500
20.7k
            &&
16501
20.7k
            (spec = _loop0_76_rule(p))  // fstring_format_spec*
16502
20.7k
        )
16503
3.73k
        {
16504
3.73k
            D(fprintf(stderr, "%*c+ fstring_full_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' fstring_format_spec*"));
16505
3.73k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16506
3.73k
            if (_token == NULL) {
16507
0
                p->level--;
16508
0
                return NULL;
16509
0
            }
16510
3.73k
            int _end_lineno = _token->end_lineno;
16511
3.73k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16512
3.73k
            int _end_col_offset = _token->end_col_offset;
16513
3.73k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16514
3.73k
            _res = _PyPegen_setup_full_format_spec ( p , colon , ( asdl_expr_seq* ) spec , EXTRA );
16515
3.73k
            if (_res == NULL && PyErr_Occurred()) {
16516
0
                p->error_indicator = 1;
16517
0
                p->level--;
16518
0
                return NULL;
16519
0
            }
16520
3.73k
            goto done;
16521
3.73k
        }
16522
17.0k
        p->mark = _mark;
16523
17.0k
        D(fprintf(stderr, "%*c%s fstring_full_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16524
17.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' fstring_format_spec*"));
16525
17.0k
    }
16526
0
    _res = NULL;
16527
20.7k
  done:
16528
20.7k
    p->level--;
16529
20.7k
    return _res;
16530
17.0k
}
16531
16532
// fstring_format_spec: FSTRING_MIDDLE | fstring_replacement_field
16533
static expr_ty
16534
fstring_format_spec_rule(Parser *p)
16535
14.4k
{
16536
14.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16537
0
        _Pypegen_stack_overflow(p);
16538
0
    }
16539
14.4k
    if (p->error_indicator) {
16540
0
        p->level--;
16541
0
        return NULL;
16542
0
    }
16543
14.4k
    expr_ty _res = NULL;
16544
14.4k
    int _mark = p->mark;
16545
14.4k
    { // FSTRING_MIDDLE
16546
14.4k
        if (p->error_indicator) {
16547
0
            p->level--;
16548
0
            return NULL;
16549
0
        }
16550
14.4k
        D(fprintf(stderr, "%*c> fstring_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE"));
16551
14.4k
        Token * t;
16552
14.4k
        if (
16553
14.4k
            (t = _PyPegen_expect_token(p, FSTRING_MIDDLE))  // token='FSTRING_MIDDLE'
16554
14.4k
        )
16555
6.83k
        {
16556
6.83k
            D(fprintf(stderr, "%*c+ fstring_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE"));
16557
6.83k
            _res = _PyPegen_decoded_constant_from_token ( p , t );
16558
6.83k
            if (_res == NULL && PyErr_Occurred()) {
16559
1
                p->error_indicator = 1;
16560
1
                p->level--;
16561
1
                return NULL;
16562
1
            }
16563
6.83k
            goto done;
16564
6.83k
        }
16565
7.57k
        p->mark = _mark;
16566
7.57k
        D(fprintf(stderr, "%*c%s fstring_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16567
7.57k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_MIDDLE"));
16568
7.57k
    }
16569
0
    { // fstring_replacement_field
16570
7.57k
        if (p->error_indicator) {
16571
12
            p->level--;
16572
12
            return NULL;
16573
12
        }
16574
7.56k
        D(fprintf(stderr, "%*c> fstring_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field"));
16575
7.56k
        expr_ty fstring_replacement_field_var;
16576
7.56k
        if (
16577
7.56k
            (fstring_replacement_field_var = fstring_replacement_field_rule(p))  // fstring_replacement_field
16578
7.56k
        )
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.92k
        p->mark = _mark;
16585
3.92k
        D(fprintf(stderr, "%*c%s fstring_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16586
3.92k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_replacement_field"));
16587
3.92k
    }
16588
0
    _res = NULL;
16589
14.3k
  done:
16590
14.3k
    p->level--;
16591
14.3k
    return _res;
16592
3.92k
}
16593
16594
// fstring: FSTRING_START fstring_middle* FSTRING_END
16595
static expr_ty
16596
fstring_rule(Parser *p)
16597
185k
{
16598
185k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16599
1
        _Pypegen_stack_overflow(p);
16600
1
    }
16601
185k
    if (p->error_indicator) {
16602
1
        p->level--;
16603
1
        return NULL;
16604
1
    }
16605
185k
    expr_ty _res = NULL;
16606
185k
    int _mark = p->mark;
16607
185k
    { // FSTRING_START fstring_middle* FSTRING_END
16608
185k
        if (p->error_indicator) {
16609
0
            p->level--;
16610
0
            return NULL;
16611
0
        }
16612
185k
        D(fprintf(stderr, "%*c> fstring[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_START fstring_middle* FSTRING_END"));
16613
185k
        Token * a;
16614
185k
        asdl_seq * b;
16615
185k
        Token * c;
16616
185k
        if (
16617
185k
            (a = _PyPegen_expect_token(p, FSTRING_START))  // token='FSTRING_START'
16618
185k
            &&
16619
185k
            (b = _loop0_77_rule(p))  // fstring_middle*
16620
185k
            &&
16621
185k
            (c = _PyPegen_expect_token(p, FSTRING_END))  // token='FSTRING_END'
16622
185k
        )
16623
13.1k
        {
16624
13.1k
            D(fprintf(stderr, "%*c+ fstring[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_START fstring_middle* FSTRING_END"));
16625
13.1k
            _res = _PyPegen_joined_str ( p , a , ( asdl_expr_seq* ) b , c );
16626
13.1k
            if (_res == NULL && PyErr_Occurred()) {
16627
0
                p->error_indicator = 1;
16628
0
                p->level--;
16629
0
                return NULL;
16630
0
            }
16631
13.1k
            goto done;
16632
13.1k
        }
16633
172k
        p->mark = _mark;
16634
172k
        D(fprintf(stderr, "%*c%s fstring[%d-%d]: %s failed!\n", p->level, ' ',
16635
172k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_START fstring_middle* FSTRING_END"));
16636
172k
    }
16637
0
    _res = NULL;
16638
185k
  done:
16639
185k
    p->level--;
16640
185k
    return _res;
16641
172k
}
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.58k
{
16649
3.58k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16650
0
        _Pypegen_stack_overflow(p);
16651
0
    }
16652
3.58k
    if (p->error_indicator) {
16653
0
        p->level--;
16654
0
        return NULL;
16655
0
    }
16656
3.58k
    expr_ty _res = NULL;
16657
3.58k
    int _mark = p->mark;
16658
3.58k
    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.58k
    int _start_lineno = p->tokens[_mark]->lineno;
16664
3.58k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16665
3.58k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16666
3.58k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16667
3.58k
    { // '{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'
16668
3.58k
        if (p->error_indicator) {
16669
0
            p->level--;
16670
0
            return NULL;
16671
0
        }
16672
3.58k
        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.58k
        Token * _literal;
16674
3.58k
        expr_ty a;
16675
3.58k
        void *conversion;
16676
3.58k
        void *debug_expr;
16677
3.58k
        void *format;
16678
3.58k
        Token * rbrace;
16679
3.58k
        if (
16680
3.58k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
16681
3.58k
            &&
16682
3.58k
            (a = annotated_rhs_rule(p))  // annotated_rhs
16683
3.58k
            &&
16684
3.58k
            (debug_expr = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
16685
3.58k
            &&
16686
3.58k
            (conversion = fstring_conversion_rule(p), !p->error_indicator)  // fstring_conversion?
16687
3.58k
            &&
16688
3.58k
            (format = tstring_full_format_spec_rule(p), !p->error_indicator)  // tstring_full_format_spec?
16689
3.58k
            &&
16690
3.58k
            (rbrace = _PyPegen_expect_token(p, 26))  // token='}'
16691
3.58k
        )
16692
1.11k
        {
16693
1.11k
            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.11k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16695
1.11k
            if (_token == NULL) {
16696
0
                p->level--;
16697
0
                return NULL;
16698
0
            }
16699
1.11k
            int _end_lineno = _token->end_lineno;
16700
1.11k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16701
1.11k
            int _end_col_offset = _token->end_col_offset;
16702
1.11k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16703
1.11k
            _res = _PyPegen_formatted_value ( p , a , debug_expr , conversion , format , rbrace , EXTRA );
16704
1.11k
            if (_res == NULL && PyErr_Occurred()) {
16705
1
                p->error_indicator = 1;
16706
1
                p->level--;
16707
1
                return NULL;
16708
1
            }
16709
1.11k
            goto done;
16710
1.11k
        }
16711
2.47k
        p->mark = _mark;
16712
2.47k
        D(fprintf(stderr, "%*c%s tstring_format_spec_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16713
2.47k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'"));
16714
2.47k
    }
16715
2.47k
    if (p->call_invalid_rules) { // invalid_tstring_replacement_field
16716
974
        if (p->error_indicator) {
16717
281
            p->level--;
16718
281
            return NULL;
16719
281
        }
16720
693
        D(fprintf(stderr, "%*c> tstring_format_spec_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_tstring_replacement_field"));
16721
693
        void *invalid_tstring_replacement_field_var;
16722
693
        if (
16723
693
            (invalid_tstring_replacement_field_var = invalid_tstring_replacement_field_rule(p))  // invalid_tstring_replacement_field
16724
693
        )
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
693
        p->mark = _mark;
16731
693
        D(fprintf(stderr, "%*c%s tstring_format_spec_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16732
693
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_tstring_replacement_field"));
16733
693
    }
16734
2.19k
    _res = NULL;
16735
3.30k
  done:
16736
3.30k
    p->level--;
16737
3.30k
    return _res;
16738
2.19k
}
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.28k
{
16744
6.28k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16745
0
        _Pypegen_stack_overflow(p);
16746
0
    }
16747
6.28k
    if (p->error_indicator) {
16748
0
        p->level--;
16749
0
        return NULL;
16750
0
    }
16751
6.28k
    expr_ty _res = NULL;
16752
6.28k
    int _mark = p->mark;
16753
6.28k
    { // TSTRING_MIDDLE
16754
6.28k
        if (p->error_indicator) {
16755
0
            p->level--;
16756
0
            return NULL;
16757
0
        }
16758
6.28k
        D(fprintf(stderr, "%*c> tstring_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TSTRING_MIDDLE"));
16759
6.28k
        Token * t;
16760
6.28k
        if (
16761
6.28k
            (t = _PyPegen_expect_token(p, TSTRING_MIDDLE))  // token='TSTRING_MIDDLE'
16762
6.28k
        )
16763
2.68k
        {
16764
2.68k
            D(fprintf(stderr, "%*c+ tstring_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TSTRING_MIDDLE"));
16765
2.68k
            _res = _PyPegen_decoded_constant_from_token ( p , t );
16766
2.68k
            if (_res == NULL && PyErr_Occurred()) {
16767
1
                p->error_indicator = 1;
16768
1
                p->level--;
16769
1
                return NULL;
16770
1
            }
16771
2.68k
            goto done;
16772
2.68k
        }
16773
3.59k
        p->mark = _mark;
16774
3.59k
        D(fprintf(stderr, "%*c%s tstring_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16775
3.59k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TSTRING_MIDDLE"));
16776
3.59k
    }
16777
0
    { // tstring_format_spec_replacement_field
16778
3.59k
        if (p->error_indicator) {
16779
11
            p->level--;
16780
11
            return NULL;
16781
11
        }
16782
3.58k
        D(fprintf(stderr, "%*c> tstring_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring_format_spec_replacement_field"));
16783
3.58k
        expr_ty tstring_format_spec_replacement_field_var;
16784
3.58k
        if (
16785
3.58k
            (tstring_format_spec_replacement_field_var = tstring_format_spec_replacement_field_rule(p))  // tstring_format_spec_replacement_field
16786
3.58k
        )
16787
1.11k
        {
16788
1.11k
            D(fprintf(stderr, "%*c+ tstring_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tstring_format_spec_replacement_field"));
16789
1.11k
            _res = tstring_format_spec_replacement_field_var;
16790
1.11k
            goto done;
16791
1.11k
        }
16792
2.47k
        p->mark = _mark;
16793
2.47k
        D(fprintf(stderr, "%*c%s tstring_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16794
2.47k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring_format_spec_replacement_field"));
16795
2.47k
    }
16796
0
    _res = NULL;
16797
6.27k
  done:
16798
6.27k
    p->level--;
16799
6.27k
    return _res;
16800
2.47k
}
16801
16802
// tstring_full_format_spec: ':' tstring_format_spec*
16803
static ResultTokenWithMetadata*
16804
tstring_full_format_spec_rule(Parser *p)
16805
6.62k
{
16806
6.62k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16807
0
        _Pypegen_stack_overflow(p);
16808
0
    }
16809
6.62k
    if (p->error_indicator) {
16810
0
        p->level--;
16811
0
        return NULL;
16812
0
    }
16813
6.62k
    ResultTokenWithMetadata* _res = NULL;
16814
6.62k
    int _mark = p->mark;
16815
6.62k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16816
1
        p->error_indicator = 1;
16817
1
        p->level--;
16818
1
        return NULL;
16819
1
    }
16820
6.62k
    int _start_lineno = p->tokens[_mark]->lineno;
16821
6.62k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16822
6.62k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16823
6.62k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16824
6.62k
    { // ':' tstring_format_spec*
16825
6.62k
        if (p->error_indicator) {
16826
0
            p->level--;
16827
0
            return NULL;
16828
0
        }
16829
6.62k
        D(fprintf(stderr, "%*c> tstring_full_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' tstring_format_spec*"));
16830
6.62k
        Token * colon;
16831
6.62k
        asdl_seq * spec;
16832
6.62k
        if (
16833
6.62k
            (colon = _PyPegen_expect_token(p, 11))  // token=':'
16834
6.62k
            &&
16835
6.62k
            (spec = _loop0_78_rule(p))  // tstring_format_spec*
16836
6.62k
        )
16837
2.48k
        {
16838
2.48k
            D(fprintf(stderr, "%*c+ tstring_full_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' tstring_format_spec*"));
16839
2.48k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16840
2.48k
            if (_token == NULL) {
16841
0
                p->level--;
16842
0
                return NULL;
16843
0
            }
16844
2.48k
            int _end_lineno = _token->end_lineno;
16845
2.48k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16846
2.48k
            int _end_col_offset = _token->end_col_offset;
16847
2.48k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16848
2.48k
            _res = _PyPegen_setup_full_format_spec ( p , colon , ( asdl_expr_seq* ) spec , EXTRA );
16849
2.48k
            if (_res == NULL && PyErr_Occurred()) {
16850
0
                p->error_indicator = 1;
16851
0
                p->level--;
16852
0
                return NULL;
16853
0
            }
16854
2.48k
            goto done;
16855
2.48k
        }
16856
4.13k
        p->mark = _mark;
16857
4.13k
        D(fprintf(stderr, "%*c%s tstring_full_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16858
4.13k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' tstring_format_spec*"));
16859
4.13k
    }
16860
0
    _res = NULL;
16861
6.62k
  done:
16862
6.62k
    p->level--;
16863
6.62k
    return _res;
16864
4.13k
}
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
15.7k
{
16872
15.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16873
1
        _Pypegen_stack_overflow(p);
16874
1
    }
16875
15.7k
    if (p->error_indicator) {
16876
1
        p->level--;
16877
1
        return NULL;
16878
1
    }
16879
15.7k
    expr_ty _res = NULL;
16880
15.7k
    int _mark = p->mark;
16881
15.7k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16882
155
        p->error_indicator = 1;
16883
155
        p->level--;
16884
155
        return NULL;
16885
155
    }
16886
15.5k
    int _start_lineno = p->tokens[_mark]->lineno;
16887
15.5k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16888
15.5k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16889
15.5k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16890
15.5k
    { // '{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'
16891
15.5k
        if (p->error_indicator) {
16892
0
            p->level--;
16893
0
            return NULL;
16894
0
        }
16895
15.5k
        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
15.5k
        Token * _literal;
16897
15.5k
        expr_ty a;
16898
15.5k
        void *conversion;
16899
15.5k
        void *debug_expr;
16900
15.5k
        void *format;
16901
15.5k
        Token * rbrace;
16902
15.5k
        if (
16903
15.5k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
16904
15.5k
            &&
16905
15.5k
            (a = annotated_rhs_rule(p))  // annotated_rhs
16906
15.5k
            &&
16907
15.5k
            (debug_expr = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
16908
15.5k
            &&
16909
15.5k
            (conversion = fstring_conversion_rule(p), !p->error_indicator)  // fstring_conversion?
16910
15.5k
            &&
16911
15.5k
            (format = tstring_full_format_spec_rule(p), !p->error_indicator)  // tstring_full_format_spec?
16912
15.5k
            &&
16913
15.5k
            (rbrace = _PyPegen_expect_token(p, 26))  // token='}'
16914
15.5k
        )
16915
4.31k
        {
16916
4.31k
            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.31k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16918
4.31k
            if (_token == NULL) {
16919
0
                p->level--;
16920
0
                return NULL;
16921
0
            }
16922
4.31k
            int _end_lineno = _token->end_lineno;
16923
4.31k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16924
4.31k
            int _end_col_offset = _token->end_col_offset;
16925
4.31k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16926
4.31k
            _res = _PyPegen_interpolation ( p , a , debug_expr , conversion , format , rbrace , EXTRA );
16927
4.31k
            if (_res == NULL && PyErr_Occurred()) {
16928
0
                p->error_indicator = 1;
16929
0
                p->level--;
16930
0
                return NULL;
16931
0
            }
16932
4.31k
            goto done;
16933
4.31k
        }
16934
11.2k
        p->mark = _mark;
16935
11.2k
        D(fprintf(stderr, "%*c%s tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16936
11.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'"));
16937
11.2k
    }
16938
11.2k
    if (p->call_invalid_rules) { // invalid_tstring_replacement_field
16939
4.26k
        if (p->error_indicator) {
16940
923
            p->level--;
16941
923
            return NULL;
16942
923
        }
16943
3.33k
        D(fprintf(stderr, "%*c> tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_tstring_replacement_field"));
16944
3.33k
        void *invalid_tstring_replacement_field_var;
16945
3.33k
        if (
16946
3.33k
            (invalid_tstring_replacement_field_var = invalid_tstring_replacement_field_rule(p))  // invalid_tstring_replacement_field
16947
3.33k
        )
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
3.33k
        p->mark = _mark;
16954
3.33k
        D(fprintf(stderr, "%*c%s tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16955
3.33k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_tstring_replacement_field"));
16956
3.33k
    }
16957
10.3k
    _res = NULL;
16958
14.6k
  done:
16959
14.6k
    p->level--;
16960
14.6k
    return _res;
16961
10.3k
}
16962
16963
// tstring_middle: tstring_replacement_field | TSTRING_MIDDLE
16964
static expr_ty
16965
tstring_middle_rule(Parser *p)
16966
15.7k
{
16967
15.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16968
1
        _Pypegen_stack_overflow(p);
16969
1
    }
16970
15.7k
    if (p->error_indicator) {
16971
1
        p->level--;
16972
1
        return NULL;
16973
1
    }
16974
15.7k
    expr_ty _res = NULL;
16975
15.7k
    int _mark = p->mark;
16976
15.7k
    { // tstring_replacement_field
16977
15.7k
        if (p->error_indicator) {
16978
0
            p->level--;
16979
0
            return NULL;
16980
0
        }
16981
15.7k
        D(fprintf(stderr, "%*c> tstring_middle[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring_replacement_field"));
16982
15.7k
        expr_ty tstring_replacement_field_var;
16983
15.7k
        if (
16984
15.7k
            (tstring_replacement_field_var = tstring_replacement_field_rule(p))  // tstring_replacement_field
16985
15.7k
        )
16986
4.31k
        {
16987
4.31k
            D(fprintf(stderr, "%*c+ tstring_middle[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tstring_replacement_field"));
16988
4.31k
            _res = tstring_replacement_field_var;
16989
4.31k
            goto done;
16990
4.31k
        }
16991
11.4k
        p->mark = _mark;
16992
11.4k
        D(fprintf(stderr, "%*c%s tstring_middle[%d-%d]: %s failed!\n", p->level, ' ',
16993
11.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring_replacement_field"));
16994
11.4k
    }
16995
0
    { // TSTRING_MIDDLE
16996
11.4k
        if (p->error_indicator) {
16997
1.43k
            p->level--;
16998
1.43k
            return NULL;
16999
1.43k
        }
17000
10.0k
        D(fprintf(stderr, "%*c> tstring_middle[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TSTRING_MIDDLE"));
17001
10.0k
        Token * t;
17002
10.0k
        if (
17003
10.0k
            (t = _PyPegen_expect_token(p, TSTRING_MIDDLE))  // token='TSTRING_MIDDLE'
17004
10.0k
        )
17005
6.70k
        {
17006
6.70k
            D(fprintf(stderr, "%*c+ tstring_middle[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TSTRING_MIDDLE"));
17007
6.70k
            _res = _PyPegen_constant_from_token ( p , t );
17008
6.70k
            if (_res == NULL && PyErr_Occurred()) {
17009
2
                p->error_indicator = 1;
17010
2
                p->level--;
17011
2
                return NULL;
17012
2
            }
17013
6.70k
            goto done;
17014
6.70k
        }
17015
3.29k
        p->mark = _mark;
17016
3.29k
        D(fprintf(stderr, "%*c%s tstring_middle[%d-%d]: %s failed!\n", p->level, ' ',
17017
3.29k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TSTRING_MIDDLE"));
17018
3.29k
    }
17019
0
    _res = NULL;
17020
14.3k
  done:
17021
14.3k
    p->level--;
17022
14.3k
    return _res;
17023
3.29k
}
17024
17025
// tstring: TSTRING_START tstring_middle* TSTRING_END
17026
static expr_ty
17027
tstring_rule(Parser *p)
17028
104k
{
17029
104k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17030
0
        _Pypegen_stack_overflow(p);
17031
0
    }
17032
104k
    if (p->error_indicator) {
17033
0
        p->level--;
17034
0
        return NULL;
17035
0
    }
17036
104k
    expr_ty _res = NULL;
17037
104k
    if (_PyPegen_is_memoized(p, tstring_type, &_res)) {
17038
878
        p->level--;
17039
878
        return _res;
17040
878
    }
17041
103k
    int _mark = p->mark;
17042
103k
    { // TSTRING_START tstring_middle* TSTRING_END
17043
103k
        if (p->error_indicator) {
17044
0
            p->level--;
17045
0
            return NULL;
17046
0
        }
17047
103k
        D(fprintf(stderr, "%*c> tstring[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TSTRING_START tstring_middle* TSTRING_END"));
17048
103k
        Token * a;
17049
103k
        asdl_seq * b;
17050
103k
        Token * c;
17051
103k
        if (
17052
103k
            (a = _PyPegen_expect_token(p, TSTRING_START))  // token='TSTRING_START'
17053
103k
            &&
17054
103k
            (b = _loop0_79_rule(p))  // tstring_middle*
17055
103k
            &&
17056
103k
            (c = _PyPegen_expect_token(p, TSTRING_END))  // token='TSTRING_END'
17057
103k
        )
17058
2.40k
        {
17059
2.40k
            D(fprintf(stderr, "%*c+ tstring[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TSTRING_START tstring_middle* TSTRING_END"));
17060
2.40k
            _res = CHECK_VERSION ( expr_ty , 14 , "t-strings are" , _PyPegen_template_str ( p , a , ( asdl_expr_seq* ) b , c ) );
17061
2.40k
            if (_res == NULL && PyErr_Occurred()) {
17062
0
                p->error_indicator = 1;
17063
0
                p->level--;
17064
0
                return NULL;
17065
0
            }
17066
2.40k
            goto done;
17067
2.40k
        }
17068
101k
        p->mark = _mark;
17069
101k
        D(fprintf(stderr, "%*c%s tstring[%d-%d]: %s failed!\n", p->level, ' ',
17070
101k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TSTRING_START tstring_middle* TSTRING_END"));
17071
101k
    }
17072
0
    _res = NULL;
17073
103k
  done:
17074
103k
    _PyPegen_insert_memo(p, _mark, tstring_type, _res);
17075
103k
    p->level--;
17076
103k
    return _res;
17077
101k
}
17078
17079
// string: STRING
17080
static expr_ty
17081
string_rule(Parser *p)
17082
169k
{
17083
169k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17084
0
        _Pypegen_stack_overflow(p);
17085
0
    }
17086
169k
    if (p->error_indicator) {
17087
0
        p->level--;
17088
0
        return NULL;
17089
0
    }
17090
169k
    expr_ty _res = NULL;
17091
169k
    int _mark = p->mark;
17092
169k
    { // STRING
17093
169k
        if (p->error_indicator) {
17094
0
            p->level--;
17095
0
            return NULL;
17096
0
        }
17097
169k
        D(fprintf(stderr, "%*c> string[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING"));
17098
169k
        Token* s;
17099
169k
        if (
17100
169k
            (s = (Token*)_PyPegen_string_token(p))  // STRING
17101
169k
        )
17102
64.9k
        {
17103
64.9k
            D(fprintf(stderr, "%*c+ string[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING"));
17104
64.9k
            _res = _PyPegen_constant_from_string ( p , s );
17105
64.9k
            if (_res == NULL && PyErr_Occurred()) {
17106
373
                p->error_indicator = 1;
17107
373
                p->level--;
17108
373
                return NULL;
17109
373
            }
17110
64.5k
            goto done;
17111
64.9k
        }
17112
104k
        p->mark = _mark;
17113
104k
        D(fprintf(stderr, "%*c%s string[%d-%d]: %s failed!\n", p->level, ' ',
17114
104k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING"));
17115
104k
    }
17116
0
    _res = NULL;
17117
169k
  done:
17118
169k
    p->level--;
17119
169k
    return _res;
17120
104k
}
17121
17122
// strings: ((fstring | string | tstring))+
17123
static expr_ty
17124
strings_rule(Parser *p)
17125
163k
{
17126
163k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17127
0
        _Pypegen_stack_overflow(p);
17128
0
    }
17129
163k
    if (p->error_indicator) {
17130
0
        p->level--;
17131
0
        return NULL;
17132
0
    }
17133
163k
    expr_ty _res = NULL;
17134
163k
    if (_PyPegen_is_memoized(p, strings_type, &_res)) {
17135
59.0k
        p->level--;
17136
59.0k
        return _res;
17137
59.0k
    }
17138
104k
    int _mark = p->mark;
17139
104k
    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
104k
    int _start_lineno = p->tokens[_mark]->lineno;
17145
104k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17146
104k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17147
104k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17148
104k
    { // ((fstring | string | tstring))+
17149
104k
        if (p->error_indicator) {
17150
0
            p->level--;
17151
0
            return NULL;
17152
0
        }
17153
104k
        D(fprintf(stderr, "%*c> strings[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((fstring | string | tstring))+"));
17154
104k
        asdl_expr_seq* a;
17155
104k
        if (
17156
104k
            (a = (asdl_expr_seq*)_loop1_80_rule(p))  // ((fstring | string | tstring))+
17157
104k
        )
17158
47.9k
        {
17159
47.9k
            D(fprintf(stderr, "%*c+ strings[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((fstring | string | tstring))+"));
17160
47.9k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17161
47.9k
            if (_token == NULL) {
17162
0
                p->level--;
17163
0
                return NULL;
17164
0
            }
17165
47.9k
            int _end_lineno = _token->end_lineno;
17166
47.9k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17167
47.9k
            int _end_col_offset = _token->end_col_offset;
17168
47.9k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17169
47.9k
            _res = _PyPegen_concatenate_strings ( p , a , EXTRA );
17170
47.9k
            if (_res == NULL && PyErr_Occurred()) {
17171
4
                p->error_indicator = 1;
17172
4
                p->level--;
17173
4
                return NULL;
17174
4
            }
17175
47.9k
            goto done;
17176
47.9k
        }
17177
56.8k
        p->mark = _mark;
17178
56.8k
        D(fprintf(stderr, "%*c%s strings[%d-%d]: %s failed!\n", p->level, ' ',
17179
56.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((fstring | string | tstring))+"));
17180
56.8k
    }
17181
0
    _res = NULL;
17182
104k
  done:
17183
104k
    _PyPegen_insert_memo(p, _mark, strings_type, _res);
17184
104k
    p->level--;
17185
104k
    return _res;
17186
56.8k
}
17187
17188
// list: '[' star_named_expressions? ']'
17189
static expr_ty
17190
list_rule(Parser *p)
17191
188k
{
17192
188k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17193
1
        _Pypegen_stack_overflow(p);
17194
1
    }
17195
188k
    if (p->error_indicator) {
17196
1
        p->level--;
17197
1
        return NULL;
17198
1
    }
17199
188k
    expr_ty _res = NULL;
17200
188k
    int _mark = p->mark;
17201
188k
    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
188k
    int _start_lineno = p->tokens[_mark]->lineno;
17207
188k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17208
188k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17209
188k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17210
188k
    { // '[' star_named_expressions? ']'
17211
188k
        if (p->error_indicator) {
17212
0
            p->level--;
17213
0
            return NULL;
17214
0
        }
17215
188k
        D(fprintf(stderr, "%*c> list[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' star_named_expressions? ']'"));
17216
188k
        Token * _literal;
17217
188k
        Token * _literal_1;
17218
188k
        void *a;
17219
188k
        if (
17220
188k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
17221
188k
            &&
17222
188k
            (a = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
17223
188k
            &&
17224
188k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
17225
188k
        )
17226
16.8k
        {
17227
16.8k
            D(fprintf(stderr, "%*c+ list[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' star_named_expressions? ']'"));
17228
16.8k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17229
16.8k
            if (_token == NULL) {
17230
0
                p->level--;
17231
0
                return NULL;
17232
0
            }
17233
16.8k
            int _end_lineno = _token->end_lineno;
17234
16.8k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17235
16.8k
            int _end_col_offset = _token->end_col_offset;
17236
16.8k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17237
16.8k
            _res = _PyAST_List ( a , Load , EXTRA );
17238
16.8k
            if (_res == NULL && PyErr_Occurred()) {
17239
0
                p->error_indicator = 1;
17240
0
                p->level--;
17241
0
                return NULL;
17242
0
            }
17243
16.8k
            goto done;
17244
16.8k
        }
17245
171k
        p->mark = _mark;
17246
171k
        D(fprintf(stderr, "%*c%s list[%d-%d]: %s failed!\n", p->level, ' ',
17247
171k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' star_named_expressions? ']'"));
17248
171k
    }
17249
0
    _res = NULL;
17250
188k
  done:
17251
188k
    p->level--;
17252
188k
    return _res;
17253
171k
}
17254
17255
// tuple: '(' [star_named_expression ',' star_named_expressions?] ')'
17256
static expr_ty
17257
tuple_rule(Parser *p)
17258
216k
{
17259
216k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17260
1
        _Pypegen_stack_overflow(p);
17261
1
    }
17262
216k
    if (p->error_indicator) {
17263
1
        p->level--;
17264
1
        return NULL;
17265
1
    }
17266
216k
    expr_ty _res = NULL;
17267
216k
    int _mark = p->mark;
17268
216k
    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
216k
    int _start_lineno = p->tokens[_mark]->lineno;
17274
216k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17275
216k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17276
216k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17277
216k
    { // '(' [star_named_expression ',' star_named_expressions?] ')'
17278
216k
        if (p->error_indicator) {
17279
0
            p->level--;
17280
0
            return NULL;
17281
0
        }
17282
216k
        D(fprintf(stderr, "%*c> tuple[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
17283
216k
        Token * _literal;
17284
216k
        Token * _literal_1;
17285
216k
        void *a;
17286
216k
        if (
17287
216k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
17288
216k
            &&
17289
216k
            (a = _tmp_81_rule(p), !p->error_indicator)  // [star_named_expression ',' star_named_expressions?]
17290
216k
            &&
17291
216k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
17292
216k
        )
17293
47.2k
        {
17294
47.2k
            D(fprintf(stderr, "%*c+ tuple[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
17295
47.2k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17296
47.2k
            if (_token == NULL) {
17297
0
                p->level--;
17298
0
                return NULL;
17299
0
            }
17300
47.2k
            int _end_lineno = _token->end_lineno;
17301
47.2k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17302
47.2k
            int _end_col_offset = _token->end_col_offset;
17303
47.2k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17304
47.2k
            _res = _PyAST_Tuple ( a , Load , EXTRA );
17305
47.2k
            if (_res == NULL && PyErr_Occurred()) {
17306
0
                p->error_indicator = 1;
17307
0
                p->level--;
17308
0
                return NULL;
17309
0
            }
17310
47.2k
            goto done;
17311
47.2k
        }
17312
169k
        p->mark = _mark;
17313
169k
        D(fprintf(stderr, "%*c%s tuple[%d-%d]: %s failed!\n", p->level, ' ',
17314
169k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
17315
169k
    }
17316
0
    _res = NULL;
17317
216k
  done:
17318
216k
    p->level--;
17319
216k
    return _res;
17320
169k
}
17321
17322
// set: '{' star_named_expressions '}'
17323
static expr_ty
17324
set_rule(Parser *p)
17325
11.1k
{
17326
11.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17327
0
        _Pypegen_stack_overflow(p);
17328
0
    }
17329
11.1k
    if (p->error_indicator) {
17330
0
        p->level--;
17331
0
        return NULL;
17332
0
    }
17333
11.1k
    expr_ty _res = NULL;
17334
11.1k
    int _mark = p->mark;
17335
11.1k
    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.1k
    int _start_lineno = p->tokens[_mark]->lineno;
17341
11.1k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17342
11.1k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17343
11.1k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17344
11.1k
    { // '{' star_named_expressions '}'
17345
11.1k
        if (p->error_indicator) {
17346
0
            p->level--;
17347
0
            return NULL;
17348
0
        }
17349
11.1k
        D(fprintf(stderr, "%*c> set[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' star_named_expressions '}'"));
17350
11.1k
        Token * _literal;
17351
11.1k
        Token * _literal_1;
17352
11.1k
        asdl_expr_seq* a;
17353
11.1k
        if (
17354
11.1k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
17355
11.1k
            &&
17356
11.1k
            (a = star_named_expressions_rule(p))  // star_named_expressions
17357
11.1k
            &&
17358
11.1k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
17359
11.1k
        )
17360
1.48k
        {
17361
1.48k
            D(fprintf(stderr, "%*c+ set[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' star_named_expressions '}'"));
17362
1.48k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17363
1.48k
            if (_token == NULL) {
17364
0
                p->level--;
17365
0
                return NULL;
17366
0
            }
17367
1.48k
            int _end_lineno = _token->end_lineno;
17368
1.48k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17369
1.48k
            int _end_col_offset = _token->end_col_offset;
17370
1.48k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17371
1.48k
            _res = _PyAST_Set ( a , EXTRA );
17372
1.48k
            if (_res == NULL && PyErr_Occurred()) {
17373
0
                p->error_indicator = 1;
17374
0
                p->level--;
17375
0
                return NULL;
17376
0
            }
17377
1.48k
            goto done;
17378
1.48k
        }
17379
9.68k
        p->mark = _mark;
17380
9.68k
        D(fprintf(stderr, "%*c%s set[%d-%d]: %s failed!\n", p->level, ' ',
17381
9.68k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' star_named_expressions '}'"));
17382
9.68k
    }
17383
0
    _res = NULL;
17384
11.1k
  done:
17385
11.1k
    p->level--;
17386
11.1k
    return _res;
17387
9.68k
}
17388
17389
// dict: '{' double_starred_kvpairs? '}' | '{' invalid_double_starred_kvpairs '}'
17390
static expr_ty
17391
dict_rule(Parser *p)
17392
23.1k
{
17393
23.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17394
1
        _Pypegen_stack_overflow(p);
17395
1
    }
17396
23.1k
    if (p->error_indicator) {
17397
1
        p->level--;
17398
1
        return NULL;
17399
1
    }
17400
23.1k
    expr_ty _res = NULL;
17401
23.1k
    int _mark = p->mark;
17402
23.1k
    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
23.1k
    int _start_lineno = p->tokens[_mark]->lineno;
17408
23.1k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17409
23.1k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17410
23.1k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17411
23.1k
    { // '{' double_starred_kvpairs? '}'
17412
23.1k
        if (p->error_indicator) {
17413
0
            p->level--;
17414
0
            return NULL;
17415
0
        }
17416
23.1k
        D(fprintf(stderr, "%*c> dict[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
17417
23.1k
        Token * _literal;
17418
23.1k
        Token * _literal_1;
17419
23.1k
        void *a;
17420
23.1k
        if (
17421
23.1k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
17422
23.1k
            &&
17423
23.1k
            (a = double_starred_kvpairs_rule(p), !p->error_indicator)  // double_starred_kvpairs?
17424
23.1k
            &&
17425
23.1k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
17426
23.1k
        )
17427
4.37k
        {
17428
4.37k
            D(fprintf(stderr, "%*c+ dict[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
17429
4.37k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17430
4.37k
            if (_token == NULL) {
17431
0
                p->level--;
17432
0
                return NULL;
17433
0
            }
17434
4.37k
            int _end_lineno = _token->end_lineno;
17435
4.37k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17436
4.37k
            int _end_col_offset = _token->end_col_offset;
17437
4.37k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17438
4.37k
            _res = _PyAST_Dict ( CHECK ( asdl_expr_seq* , _PyPegen_get_keys ( p , a ) ) , CHECK ( asdl_expr_seq* , _PyPegen_get_values ( p , a ) ) , EXTRA );
17439
4.37k
            if (_res == NULL && PyErr_Occurred()) {
17440
0
                p->error_indicator = 1;
17441
0
                p->level--;
17442
0
                return NULL;
17443
0
            }
17444
4.37k
            goto done;
17445
4.37k
        }
17446
18.7k
        p->mark = _mark;
17447
18.7k
        D(fprintf(stderr, "%*c%s dict[%d-%d]: %s failed!\n", p->level, ' ',
17448
18.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
17449
18.7k
    }
17450
0
    { // '{' invalid_double_starred_kvpairs '}'
17451
18.7k
        if (p->error_indicator) {
17452
7.28k
            p->level--;
17453
7.28k
            return NULL;
17454
7.28k
        }
17455
11.5k
        D(fprintf(stderr, "%*c> dict[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
17456
11.5k
        Token * _literal;
17457
11.5k
        Token * _literal_1;
17458
11.5k
        void *invalid_double_starred_kvpairs_var;
17459
11.5k
        if (
17460
11.5k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
17461
11.5k
            &&
17462
11.5k
            (invalid_double_starred_kvpairs_var = invalid_double_starred_kvpairs_rule(p))  // invalid_double_starred_kvpairs
17463
11.5k
            &&
17464
11.5k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
17465
11.5k
        )
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.5k
        p->mark = _mark;
17472
11.5k
        D(fprintf(stderr, "%*c%s dict[%d-%d]: %s failed!\n", p->level, ' ',
17473
11.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
17474
11.5k
    }
17475
0
    _res = NULL;
17476
15.8k
  done:
17477
15.8k
    p->level--;
17478
15.8k
    return _res;
17479
11.5k
}
17480
17481
// double_starred_kvpairs: ','.double_starred_kvpair+ ','?
17482
static asdl_seq*
17483
double_starred_kvpairs_rule(Parser *p)
17484
23.1k
{
17485
23.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17486
1
        _Pypegen_stack_overflow(p);
17487
1
    }
17488
23.1k
    if (p->error_indicator) {
17489
1
        p->level--;
17490
1
        return NULL;
17491
1
    }
17492
23.1k
    asdl_seq* _res = NULL;
17493
23.1k
    int _mark = p->mark;
17494
23.1k
    { // ','.double_starred_kvpair+ ','?
17495
23.1k
        if (p->error_indicator) {
17496
0
            p->level--;
17497
0
            return NULL;
17498
0
        }
17499
23.1k
        D(fprintf(stderr, "%*c> double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ','?"));
17500
23.1k
        void *_opt_var;
17501
23.1k
        UNUSED(_opt_var); // Silence compiler warnings
17502
23.1k
        asdl_seq * a;
17503
23.1k
        if (
17504
23.1k
            (a = _gather_83_rule(p))  // ','.double_starred_kvpair+
17505
23.1k
            &&
17506
23.1k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
17507
23.1k
        )
17508
5.58k
        {
17509
5.58k
            D(fprintf(stderr, "%*c+ double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ','?"));
17510
5.58k
            _res = a;
17511
5.58k
            if (_res == NULL && PyErr_Occurred()) {
17512
0
                p->error_indicator = 1;
17513
0
                p->level--;
17514
0
                return NULL;
17515
0
            }
17516
5.58k
            goto done;
17517
5.58k
        }
17518
17.5k
        p->mark = _mark;
17519
17.5k
        D(fprintf(stderr, "%*c%s double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
17520
17.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.double_starred_kvpair+ ','?"));
17521
17.5k
    }
17522
0
    _res = NULL;
17523
23.1k
  done:
17524
23.1k
    p->level--;
17525
23.1k
    return _res;
17526
17.5k
}
17527
17528
// double_starred_kvpair: '**' bitwise_or | kvpair
17529
static KeyValuePair*
17530
double_starred_kvpair_rule(Parser *p)
17531
71.2k
{
17532
71.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17533
2
        _Pypegen_stack_overflow(p);
17534
2
    }
17535
71.2k
    if (p->error_indicator) {
17536
2
        p->level--;
17537
2
        return NULL;
17538
2
    }
17539
71.2k
    KeyValuePair* _res = NULL;
17540
71.2k
    int _mark = p->mark;
17541
71.2k
    { // '**' bitwise_or
17542
71.2k
        if (p->error_indicator) {
17543
0
            p->level--;
17544
0
            return NULL;
17545
0
        }
17546
71.2k
        D(fprintf(stderr, "%*c> double_starred_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' bitwise_or"));
17547
71.2k
        Token * _literal;
17548
71.2k
        expr_ty a;
17549
71.2k
        if (
17550
71.2k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
17551
71.2k
            &&
17552
71.2k
            (a = bitwise_or_rule(p))  // bitwise_or
17553
71.2k
        )
17554
1.19k
        {
17555
1.19k
            D(fprintf(stderr, "%*c+ double_starred_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' bitwise_or"));
17556
1.19k
            _res = _PyPegen_key_value_pair ( p , NULL , a );
17557
1.19k
            if (_res == NULL && PyErr_Occurred()) {
17558
0
                p->error_indicator = 1;
17559
0
                p->level--;
17560
0
                return NULL;
17561
0
            }
17562
1.19k
            goto done;
17563
1.19k
        }
17564
70.0k
        p->mark = _mark;
17565
70.0k
        D(fprintf(stderr, "%*c%s double_starred_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
17566
70.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' bitwise_or"));
17567
70.0k
    }
17568
0
    { // kvpair
17569
70.0k
        if (p->error_indicator) {
17570
505
            p->level--;
17571
505
            return NULL;
17572
505
        }
17573
69.5k
        D(fprintf(stderr, "%*c> double_starred_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kvpair"));
17574
69.5k
        KeyValuePair* kvpair_var;
17575
69.5k
        if (
17576
69.5k
            (kvpair_var = kvpair_rule(p))  // kvpair
17577
69.5k
        )
17578
41.7k
        {
17579
41.7k
            D(fprintf(stderr, "%*c+ double_starred_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kvpair"));
17580
41.7k
            _res = kvpair_var;
17581
41.7k
            goto done;
17582
41.7k
        }
17583
27.7k
        p->mark = _mark;
17584
27.7k
        D(fprintf(stderr, "%*c%s double_starred_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
17585
27.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kvpair"));
17586
27.7k
    }
17587
0
    _res = NULL;
17588
70.7k
  done:
17589
70.7k
    p->level--;
17590
70.7k
    return _res;
17591
27.7k
}
17592
17593
// kvpair: expression ':' expression
17594
static KeyValuePair*
17595
kvpair_rule(Parser *p)
17596
78.8k
{
17597
78.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17598
1
        _Pypegen_stack_overflow(p);
17599
1
    }
17600
78.8k
    if (p->error_indicator) {
17601
1
        p->level--;
17602
1
        return NULL;
17603
1
    }
17604
78.8k
    KeyValuePair* _res = NULL;
17605
78.8k
    int _mark = p->mark;
17606
78.8k
    { // expression ':' expression
17607
78.8k
        if (p->error_indicator) {
17608
0
            p->level--;
17609
0
            return NULL;
17610
0
        }
17611
78.8k
        D(fprintf(stderr, "%*c> kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
17612
78.8k
        Token * _literal;
17613
78.8k
        expr_ty a;
17614
78.8k
        expr_ty b;
17615
78.8k
        if (
17616
78.8k
            (a = expression_rule(p))  // expression
17617
78.8k
            &&
17618
78.8k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
17619
78.8k
            &&
17620
78.8k
            (b = expression_rule(p))  // expression
17621
78.8k
        )
17622
44.3k
        {
17623
44.3k
            D(fprintf(stderr, "%*c+ kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
17624
44.3k
            _res = _PyPegen_key_value_pair ( p , a , b );
17625
44.3k
            if (_res == NULL && PyErr_Occurred()) {
17626
0
                p->error_indicator = 1;
17627
0
                p->level--;
17628
0
                return NULL;
17629
0
            }
17630
44.3k
            goto done;
17631
44.3k
        }
17632
34.4k
        p->mark = _mark;
17633
34.4k
        D(fprintf(stderr, "%*c%s kvpair[%d-%d]: %s failed!\n", p->level, ' ',
17634
34.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' expression"));
17635
34.4k
    }
17636
0
    _res = NULL;
17637
78.8k
  done:
17638
78.8k
    p->level--;
17639
78.8k
    return _res;
17640
34.4k
}
17641
17642
// for_if_clauses: for_if_clause+
17643
static asdl_comprehension_seq*
17644
for_if_clauses_rule(Parser *p)
17645
95.1k
{
17646
95.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17647
0
        _Pypegen_stack_overflow(p);
17648
0
    }
17649
95.1k
    if (p->error_indicator) {
17650
0
        p->level--;
17651
0
        return NULL;
17652
0
    }
17653
95.1k
    asdl_comprehension_seq* _res = NULL;
17654
95.1k
    int _mark = p->mark;
17655
95.1k
    { // for_if_clause+
17656
95.1k
        if (p->error_indicator) {
17657
0
            p->level--;
17658
0
            return NULL;
17659
0
        }
17660
95.1k
        D(fprintf(stderr, "%*c> for_if_clauses[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause+"));
17661
95.1k
        asdl_comprehension_seq* a;
17662
95.1k
        if (
17663
95.1k
            (a = (asdl_comprehension_seq*)_loop1_84_rule(p))  // for_if_clause+
17664
95.1k
        )
17665
10.0k
        {
17666
10.0k
            D(fprintf(stderr, "%*c+ for_if_clauses[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "for_if_clause+"));
17667
10.0k
            _res = a;
17668
10.0k
            if (_res == NULL && PyErr_Occurred()) {
17669
0
                p->error_indicator = 1;
17670
0
                p->level--;
17671
0
                return NULL;
17672
0
            }
17673
10.0k
            goto done;
17674
10.0k
        }
17675
85.1k
        p->mark = _mark;
17676
85.1k
        D(fprintf(stderr, "%*c%s for_if_clauses[%d-%d]: %s failed!\n", p->level, ' ',
17677
85.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause+"));
17678
85.1k
    }
17679
0
    _res = NULL;
17680
95.1k
  done:
17681
95.1k
    p->level--;
17682
95.1k
    return _res;
17683
85.1k
}
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
72
        p->level--;
17698
72
        return NULL;
17699
72
    }
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
105k
        p->mark = _mark;
17741
105k
        D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
17742
105k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
17743
105k
        if (_cut_var) {
17744
67
            p->level--;
17745
67
            return NULL;
17746
67
        }
17747
105k
    }
17748
105k
    { // 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
17749
105k
        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.4k
        {
17774
10.4k
            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.4k
            _res = _PyAST_comprehension ( a , b , c , 0 , p -> arena );
17776
10.4k
            if (_res == NULL && PyErr_Occurred()) {
17777
0
                p->error_indicator = 1;
17778
0
                p->level--;
17779
0
                return NULL;
17780
0
            }
17781
10.4k
            goto done;
17782
10.4k
        }
17783
94.8k
        p->mark = _mark;
17784
94.8k
        D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
17785
94.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
17786
94.8k
        if (_cut_var) {
17787
225
            p->level--;
17788
225
            return NULL;
17789
225
        }
17790
94.8k
    }
17791
94.6k
    if (p->call_invalid_rules) { // invalid_for_if_clause
17792
48.4k
        if (p->error_indicator) {
17793
1.01k
            p->level--;
17794
1.01k
            return NULL;
17795
1.01k
        }
17796
47.4k
        D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_if_clause"));
17797
47.4k
        void *invalid_for_if_clause_var;
17798
47.4k
        if (
17799
47.4k
            (invalid_for_if_clause_var = invalid_for_if_clause_rule(p))  // invalid_for_if_clause
17800
47.4k
        )
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
47.4k
        p->mark = _mark;
17807
47.4k
        D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
17808
47.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_if_clause"));
17809
47.4k
    }
17810
93.6k
    if (p->call_invalid_rules) { // invalid_for_target
17811
47.4k
        if (p->error_indicator) {
17812
476
            p->level--;
17813
476
            return NULL;
17814
476
        }
17815
46.9k
        D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
17816
46.9k
        void *invalid_for_target_var;
17817
46.9k
        if (
17818
46.9k
            (invalid_for_target_var = invalid_for_target_rule(p))  // invalid_for_target
17819
46.9k
        )
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
46.9k
        p->mark = _mark;
17826
46.9k
        D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
17827
46.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_target"));
17828
46.9k
    }
17829
93.1k
    _res = NULL;
17830
104k
  done:
17831
104k
    p->level--;
17832
104k
    return _res;
17833
93.1k
}
17834
17835
// listcomp: '[' named_expression for_if_clauses ']' | invalid_comprehension
17836
static expr_ty
17837
listcomp_rule(Parser *p)
17838
30.2k
{
17839
30.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17840
0
        _Pypegen_stack_overflow(p);
17841
0
    }
17842
30.2k
    if (p->error_indicator) {
17843
0
        p->level--;
17844
0
        return NULL;
17845
0
    }
17846
30.2k
    expr_ty _res = NULL;
17847
30.2k
    int _mark = p->mark;
17848
30.2k
    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
30.2k
    int _start_lineno = p->tokens[_mark]->lineno;
17854
30.2k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17855
30.2k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17856
30.2k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17857
30.2k
    { // '[' named_expression for_if_clauses ']'
17858
30.2k
        if (p->error_indicator) {
17859
0
            p->level--;
17860
0
            return NULL;
17861
0
        }
17862
30.2k
        D(fprintf(stderr, "%*c> listcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
17863
30.2k
        Token * _literal;
17864
30.2k
        Token * _literal_1;
17865
30.2k
        expr_ty a;
17866
30.2k
        asdl_comprehension_seq* b;
17867
30.2k
        if (
17868
30.2k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
17869
30.2k
            &&
17870
30.2k
            (a = named_expression_rule(p))  // named_expression
17871
30.2k
            &&
17872
30.2k
            (b = for_if_clauses_rule(p))  // for_if_clauses
17873
30.2k
            &&
17874
30.2k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
17875
30.2k
        )
17876
1.21k
        {
17877
1.21k
            D(fprintf(stderr, "%*c+ listcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
17878
1.21k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17879
1.21k
            if (_token == NULL) {
17880
0
                p->level--;
17881
0
                return NULL;
17882
0
            }
17883
1.21k
            int _end_lineno = _token->end_lineno;
17884
1.21k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17885
1.21k
            int _end_col_offset = _token->end_col_offset;
17886
1.21k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17887
1.21k
            _res = _PyAST_ListComp ( a , b , EXTRA );
17888
1.21k
            if (_res == NULL && PyErr_Occurred()) {
17889
0
                p->error_indicator = 1;
17890
0
                p->level--;
17891
0
                return NULL;
17892
0
            }
17893
1.21k
            goto done;
17894
1.21k
        }
17895
28.9k
        p->mark = _mark;
17896
28.9k
        D(fprintf(stderr, "%*c%s listcomp[%d-%d]: %s failed!\n", p->level, ' ',
17897
28.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
17898
28.9k
    }
17899
28.9k
    if (p->call_invalid_rules) { // invalid_comprehension
17900
9.63k
        if (p->error_indicator) {
17901
449
            p->level--;
17902
449
            return NULL;
17903
449
        }
17904
9.18k
        D(fprintf(stderr, "%*c> listcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
17905
9.18k
        void *invalid_comprehension_var;
17906
9.18k
        if (
17907
9.18k
            (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
17908
9.18k
        )
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
9.18k
        p->mark = _mark;
17915
9.18k
        D(fprintf(stderr, "%*c%s listcomp[%d-%d]: %s failed!\n", p->level, ' ',
17916
9.18k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
17917
9.18k
    }
17918
28.5k
    _res = NULL;
17919
29.7k
  done:
17920
29.7k
    p->level--;
17921
29.7k
    return _res;
17922
28.5k
}
17923
17924
// setcomp: '{' named_expression for_if_clauses '}' | invalid_comprehension
17925
static expr_ty
17926
setcomp_rule(Parser *p)
17927
7.74k
{
17928
7.74k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17929
0
        _Pypegen_stack_overflow(p);
17930
0
    }
17931
7.74k
    if (p->error_indicator) {
17932
0
        p->level--;
17933
0
        return NULL;
17934
0
    }
17935
7.74k
    expr_ty _res = NULL;
17936
7.74k
    int _mark = p->mark;
17937
7.74k
    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
7.74k
    int _start_lineno = p->tokens[_mark]->lineno;
17943
7.74k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17944
7.74k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17945
7.74k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17946
7.74k
    { // '{' named_expression for_if_clauses '}'
17947
7.74k
        if (p->error_indicator) {
17948
0
            p->level--;
17949
0
            return NULL;
17950
0
        }
17951
7.74k
        D(fprintf(stderr, "%*c> setcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
17952
7.74k
        Token * _literal;
17953
7.74k
        Token * _literal_1;
17954
7.74k
        expr_ty a;
17955
7.74k
        asdl_comprehension_seq* b;
17956
7.74k
        if (
17957
7.74k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
17958
7.74k
            &&
17959
7.74k
            (a = named_expression_rule(p))  // named_expression
17960
7.74k
            &&
17961
7.74k
            (b = for_if_clauses_rule(p))  // for_if_clauses
17962
7.74k
            &&
17963
7.74k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
17964
7.74k
        )
17965
516
        {
17966
516
            D(fprintf(stderr, "%*c+ setcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
17967
516
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17968
516
            if (_token == NULL) {
17969
0
                p->level--;
17970
0
                return NULL;
17971
0
            }
17972
516
            int _end_lineno = _token->end_lineno;
17973
516
            UNUSED(_end_lineno); // Only used by EXTRA macro
17974
516
            int _end_col_offset = _token->end_col_offset;
17975
516
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17976
516
            _res = _PyAST_SetComp ( a , b , EXTRA );
17977
516
            if (_res == NULL && PyErr_Occurred()) {
17978
0
                p->error_indicator = 1;
17979
0
                p->level--;
17980
0
                return NULL;
17981
0
            }
17982
516
            goto done;
17983
516
        }
17984
7.23k
        p->mark = _mark;
17985
7.23k
        D(fprintf(stderr, "%*c%s setcomp[%d-%d]: %s failed!\n", p->level, ' ',
17986
7.23k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
17987
7.23k
    }
17988
7.23k
    if (p->call_invalid_rules) { // invalid_comprehension
17989
2.93k
        if (p->error_indicator) {
17990
88
            p->level--;
17991
88
            return NULL;
17992
88
        }
17993
2.84k
        D(fprintf(stderr, "%*c> setcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
17994
2.84k
        void *invalid_comprehension_var;
17995
2.84k
        if (
17996
2.84k
            (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
17997
2.84k
        )
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.84k
        p->mark = _mark;
18004
2.84k
        D(fprintf(stderr, "%*c%s setcomp[%d-%d]: %s failed!\n", p->level, ' ',
18005
2.84k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
18006
2.84k
    }
18007
7.14k
    _res = NULL;
18008
7.66k
  done:
18009
7.66k
    p->level--;
18010
7.66k
    return _res;
18011
7.14k
}
18012
18013
// genexp:
18014
//     | '(' (assignment_expression | expression !':=') for_if_clauses ')'
18015
//     | invalid_comprehension
18016
static expr_ty
18017
genexp_rule(Parser *p)
18018
650k
{
18019
650k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18020
0
        _Pypegen_stack_overflow(p);
18021
0
    }
18022
650k
    if (p->error_indicator) {
18023
0
        p->level--;
18024
0
        return NULL;
18025
0
    }
18026
650k
    expr_ty _res = NULL;
18027
650k
    int _mark = p->mark;
18028
650k
    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
650k
    int _start_lineno = p->tokens[_mark]->lineno;
18034
650k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18035
650k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18036
650k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18037
650k
    { // '(' (assignment_expression | expression !':=') for_if_clauses ')'
18038
650k
        if (p->error_indicator) {
18039
0
            p->level--;
18040
0
            return NULL;
18041
0
        }
18042
650k
        D(fprintf(stderr, "%*c> genexp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
18043
650k
        Token * _literal;
18044
650k
        Token * _literal_1;
18045
650k
        void *a;
18046
650k
        asdl_comprehension_seq* b;
18047
650k
        if (
18048
650k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
18049
650k
            &&
18050
650k
            (a = _tmp_86_rule(p))  // assignment_expression | expression !':='
18051
650k
            &&
18052
650k
            (b = for_if_clauses_rule(p))  // for_if_clauses
18053
650k
            &&
18054
650k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
18055
650k
        )
18056
5.18k
        {
18057
5.18k
            D(fprintf(stderr, "%*c+ genexp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
18058
5.18k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18059
5.18k
            if (_token == NULL) {
18060
0
                p->level--;
18061
0
                return NULL;
18062
0
            }
18063
5.18k
            int _end_lineno = _token->end_lineno;
18064
5.18k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18065
5.18k
            int _end_col_offset = _token->end_col_offset;
18066
5.18k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18067
5.18k
            _res = _PyAST_GeneratorExp ( a , b , EXTRA );
18068
5.18k
            if (_res == NULL && PyErr_Occurred()) {
18069
0
                p->error_indicator = 1;
18070
0
                p->level--;
18071
0
                return NULL;
18072
0
            }
18073
5.18k
            goto done;
18074
5.18k
        }
18075
645k
        p->mark = _mark;
18076
645k
        D(fprintf(stderr, "%*c%s genexp[%d-%d]: %s failed!\n", p->level, ' ',
18077
645k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
18078
645k
    }
18079
645k
    if (p->call_invalid_rules) { // invalid_comprehension
18080
221k
        if (p->error_indicator) {
18081
2.58k
            p->level--;
18082
2.58k
            return NULL;
18083
2.58k
        }
18084
219k
        D(fprintf(stderr, "%*c> genexp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
18085
219k
        void *invalid_comprehension_var;
18086
219k
        if (
18087
219k
            (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
18088
219k
        )
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
219k
        p->mark = _mark;
18095
219k
        D(fprintf(stderr, "%*c%s genexp[%d-%d]: %s failed!\n", p->level, ' ',
18096
219k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
18097
219k
    }
18098
642k
    _res = NULL;
18099
647k
  done:
18100
647k
    p->level--;
18101
647k
    return _res;
18102
642k
}
18103
18104
// dictcomp: '{' kvpair for_if_clauses '}' | invalid_dict_comprehension
18105
static expr_ty
18106
dictcomp_rule(Parser *p)
18107
9.34k
{
18108
9.34k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18109
0
        _Pypegen_stack_overflow(p);
18110
0
    }
18111
9.34k
    if (p->error_indicator) {
18112
0
        p->level--;
18113
0
        return NULL;
18114
0
    }
18115
9.34k
    expr_ty _res = NULL;
18116
9.34k
    int _mark = p->mark;
18117
9.34k
    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.34k
    int _start_lineno = p->tokens[_mark]->lineno;
18123
9.34k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18124
9.34k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18125
9.34k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18126
9.34k
    { // '{' kvpair for_if_clauses '}'
18127
9.34k
        if (p->error_indicator) {
18128
0
            p->level--;
18129
0
            return NULL;
18130
0
        }
18131
9.34k
        D(fprintf(stderr, "%*c> dictcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
18132
9.34k
        Token * _literal;
18133
9.34k
        Token * _literal_1;
18134
9.34k
        KeyValuePair* a;
18135
9.34k
        asdl_comprehension_seq* b;
18136
9.34k
        if (
18137
9.34k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
18138
9.34k
            &&
18139
9.34k
            (a = kvpair_rule(p))  // kvpair
18140
9.34k
            &&
18141
9.34k
            (b = for_if_clauses_rule(p))  // for_if_clauses
18142
9.34k
            &&
18143
9.34k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
18144
9.34k
        )
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
7.94k
        p->mark = _mark;
18165
7.94k
        D(fprintf(stderr, "%*c%s dictcomp[%d-%d]: %s failed!\n", p->level, ' ',
18166
7.94k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
18167
7.94k
    }
18168
7.94k
    if (p->call_invalid_rules) { // invalid_dict_comprehension
18169
3.22k
        if (p->error_indicator) {
18170
194
            p->level--;
18171
194
            return NULL;
18172
194
        }
18173
3.03k
        D(fprintf(stderr, "%*c> dictcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_dict_comprehension"));
18174
3.03k
        void *invalid_dict_comprehension_var;
18175
3.03k
        if (
18176
3.03k
            (invalid_dict_comprehension_var = invalid_dict_comprehension_rule(p))  // invalid_dict_comprehension
18177
3.03k
        )
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.03k
        p->mark = _mark;
18184
3.03k
        D(fprintf(stderr, "%*c%s dictcomp[%d-%d]: %s failed!\n", p->level, ' ',
18185
3.03k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_dict_comprehension"));
18186
3.03k
    }
18187
7.75k
    _res = NULL;
18188
9.14k
  done:
18189
9.14k
    p->level--;
18190
9.14k
    return _res;
18191
7.75k
}
18192
18193
// arguments: args ','? &')' | invalid_arguments
18194
static expr_ty
18195
arguments_rule(Parser *p)
18196
60.6k
{
18197
60.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18198
0
        _Pypegen_stack_overflow(p);
18199
0
    }
18200
60.6k
    if (p->error_indicator) {
18201
0
        p->level--;
18202
0
        return NULL;
18203
0
    }
18204
60.6k
    expr_ty _res = NULL;
18205
60.6k
    if (_PyPegen_is_memoized(p, arguments_type, &_res)) {
18206
15.6k
        p->level--;
18207
15.6k
        return _res;
18208
15.6k
    }
18209
45.0k
    int _mark = p->mark;
18210
45.0k
    { // args ','? &')'
18211
45.0k
        if (p->error_indicator) {
18212
0
            p->level--;
18213
0
            return NULL;
18214
0
        }
18215
45.0k
        D(fprintf(stderr, "%*c> arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ','? &')'"));
18216
45.0k
        void *_opt_var;
18217
45.0k
        UNUSED(_opt_var); // Silence compiler warnings
18218
45.0k
        expr_ty a;
18219
45.0k
        if (
18220
45.0k
            (a = args_rule(p))  // args
18221
45.0k
            &&
18222
45.0k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
18223
45.0k
            &&
18224
45.0k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
18225
45.0k
        )
18226
17.6k
        {
18227
17.6k
            D(fprintf(stderr, "%*c+ arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ','? &')'"));
18228
17.6k
            _res = a;
18229
17.6k
            if (_res == NULL && PyErr_Occurred()) {
18230
0
                p->error_indicator = 1;
18231
0
                p->level--;
18232
0
                return NULL;
18233
0
            }
18234
17.6k
            goto done;
18235
17.6k
        }
18236
27.3k
        p->mark = _mark;
18237
27.3k
        D(fprintf(stderr, "%*c%s arguments[%d-%d]: %s failed!\n", p->level, ' ',
18238
27.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ','? &')'"));
18239
27.3k
    }
18240
27.3k
    if (p->call_invalid_rules) { // invalid_arguments
18241
9.11k
        if (p->error_indicator) {
18242
1.17k
            p->level--;
18243
1.17k
            return NULL;
18244
1.17k
        }
18245
7.93k
        D(fprintf(stderr, "%*c> arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_arguments"));
18246
7.93k
        void *invalid_arguments_var;
18247
7.93k
        if (
18248
7.93k
            (invalid_arguments_var = invalid_arguments_rule(p))  // invalid_arguments
18249
7.93k
        )
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
7.93k
        p->mark = _mark;
18256
7.93k
        D(fprintf(stderr, "%*c%s arguments[%d-%d]: %s failed!\n", p->level, ' ',
18257
7.93k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_arguments"));
18258
7.93k
    }
18259
26.2k
    _res = NULL;
18260
43.8k
  done:
18261
43.8k
    _PyPegen_insert_memo(p, _mark, arguments_type, _res);
18262
43.8k
    p->level--;
18263
43.8k
    return _res;
18264
26.2k
}
18265
18266
// args:
18267
//     | ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]
18268
//     | kwargs
18269
static expr_ty
18270
args_rule(Parser *p)
18271
73.6k
{
18272
73.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18273
0
        _Pypegen_stack_overflow(p);
18274
0
    }
18275
73.6k
    if (p->error_indicator) {
18276
0
        p->level--;
18277
0
        return NULL;
18278
0
    }
18279
73.6k
    expr_ty _res = NULL;
18280
73.6k
    int _mark = p->mark;
18281
73.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
73.6k
    int _start_lineno = p->tokens[_mark]->lineno;
18287
73.6k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18288
73.6k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18289
73.6k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18290
73.6k
    { // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]
18291
73.6k
        if (p->error_indicator) {
18292
0
            p->level--;
18293
0
            return NULL;
18294
0
        }
18295
73.6k
        D(fprintf(stderr, "%*c> args[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
18296
73.6k
        asdl_expr_seq* a;
18297
73.6k
        void *b;
18298
73.6k
        if (
18299
73.6k
            (a = (asdl_expr_seq*)_gather_88_rule(p))  // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+
18300
73.6k
            &&
18301
73.6k
            (b = _tmp_89_rule(p), !p->error_indicator)  // [',' kwargs]
18302
73.6k
        )
18303
33.6k
        {
18304
33.6k
            D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
18305
33.6k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18306
33.6k
            if (_token == NULL) {
18307
0
                p->level--;
18308
0
                return NULL;
18309
0
            }
18310
33.6k
            int _end_lineno = _token->end_lineno;
18311
33.6k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18312
33.6k
            int _end_col_offset = _token->end_col_offset;
18313
33.6k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18314
33.6k
            _res = _PyPegen_collect_call_seqs ( p , a , b , EXTRA );
18315
33.6k
            if (_res == NULL && PyErr_Occurred()) {
18316
0
                p->error_indicator = 1;
18317
0
                p->level--;
18318
0
                return NULL;
18319
0
            }
18320
33.6k
            goto done;
18321
33.6k
        }
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
915
            p->level--;
18329
915
            return NULL;
18330
915
        }
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
6.98k
        {
18337
6.98k
            D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwargs"));
18338
6.98k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18339
6.98k
            if (_token == NULL) {
18340
0
                p->level--;
18341
0
                return NULL;
18342
0
            }
18343
6.98k
            int _end_lineno = _token->end_lineno;
18344
6.98k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18345
6.98k
            int _end_col_offset = _token->end_col_offset;
18346
6.98k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18347
6.98k
            _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
6.98k
            if (_res == NULL && PyErr_Occurred()) {
18349
0
                p->error_indicator = 1;
18350
0
                p->level--;
18351
0
                return NULL;
18352
0
            }
18353
6.98k
            goto done;
18354
6.98k
        }
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
72.7k
  done:
18361
72.7k
    p->level--;
18362
72.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.5k
{
18372
51.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18373
0
        _Pypegen_stack_overflow(p);
18374
0
    }
18375
51.5k
    if (p->error_indicator) {
18376
0
        p->level--;
18377
0
        return NULL;
18378
0
    }
18379
51.5k
    asdl_seq* _res = NULL;
18380
51.5k
    int _mark = p->mark;
18381
51.5k
    { // ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
18382
51.5k
        if (p->error_indicator) {
18383
0
            p->level--;
18384
0
            return NULL;
18385
0
        }
18386
51.5k
        D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
18387
51.5k
        Token * _literal;
18388
51.5k
        asdl_seq * a;
18389
51.5k
        asdl_seq * b;
18390
51.5k
        if (
18391
51.5k
            (a = _gather_91_rule(p))  // ','.kwarg_or_starred+
18392
51.5k
            &&
18393
51.5k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
18394
51.5k
            &&
18395
51.5k
            (b = _gather_93_rule(p))  // ','.kwarg_or_double_starred+
18396
51.5k
        )
18397
354
        {
18398
354
            D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
18399
354
            _res = _PyPegen_join_sequences ( p , a , b );
18400
354
            if (_res == NULL && PyErr_Occurred()) {
18401
0
                p->error_indicator = 1;
18402
0
                p->level--;
18403
0
                return NULL;
18404
0
            }
18405
354
            goto done;
18406
354
        }
18407
51.1k
        p->mark = _mark;
18408
51.1k
        D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
18409
51.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
18410
51.1k
    }
18411
0
    { // ','.kwarg_or_starred+
18412
51.1k
        if (p->error_indicator) {
18413
956
            p->level--;
18414
956
            return NULL;
18415
956
        }
18416
50.1k
        D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+"));
18417
50.1k
        asdl_seq * _gather_91_var;
18418
50.1k
        if (
18419
50.1k
            (_gather_91_var = _gather_91_rule(p))  // ','.kwarg_or_starred+
18420
50.1k
        )
18421
7.72k
        {
18422
7.72k
            D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+"));
18423
7.72k
            _res = _gather_91_var;
18424
7.72k
            goto done;
18425
7.72k
        }
18426
42.4k
        p->mark = _mark;
18427
42.4k
        D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
18428
42.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_starred+"));
18429
42.4k
    }
18430
0
    { // ','.kwarg_or_double_starred+
18431
42.4k
        if (p->error_indicator) {
18432
0
            p->level--;
18433
0
            return NULL;
18434
0
        }
18435
42.4k
        D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_double_starred+"));
18436
42.4k
        asdl_seq * _gather_93_var;
18437
42.4k
        if (
18438
42.4k
            (_gather_93_var = _gather_93_rule(p))  // ','.kwarg_or_double_starred+
18439
42.4k
        )
18440
4.05k
        {
18441
4.05k
            D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_double_starred+"));
18442
4.05k
            _res = _gather_93_var;
18443
4.05k
            goto done;
18444
4.05k
        }
18445
38.4k
        p->mark = _mark;
18446
38.4k
        D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
18447
38.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_double_starred+"));
18448
38.4k
    }
18449
0
    _res = NULL;
18450
50.5k
  done:
18451
50.5k
    p->level--;
18452
50.5k
    return _res;
18453
38.4k
}
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
255k
{
18462
255k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18463
0
        _Pypegen_stack_overflow(p);
18464
0
    }
18465
255k
    if (p->error_indicator) {
18466
0
        p->level--;
18467
0
        return NULL;
18468
0
    }
18469
255k
    expr_ty _res = NULL;
18470
255k
    int _mark = p->mark;
18471
255k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18472
206
        p->error_indicator = 1;
18473
206
        p->level--;
18474
206
        return NULL;
18475
206
    }
18476
254k
    int _start_lineno = p->tokens[_mark]->lineno;
18477
254k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18478
254k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18479
254k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18480
254k
    if (p->call_invalid_rules) { // invalid_starred_expression_unpacking
18481
178k
        if (p->error_indicator) {
18482
0
            p->level--;
18483
0
            return NULL;
18484
0
        }
18485
178k
        D(fprintf(stderr, "%*c> starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_starred_expression_unpacking"));
18486
178k
        void *invalid_starred_expression_unpacking_var;
18487
178k
        if (
18488
178k
            (invalid_starred_expression_unpacking_var = invalid_starred_expression_unpacking_rule(p))  // invalid_starred_expression_unpacking
18489
178k
        )
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
178k
        p->mark = _mark;
18496
178k
        D(fprintf(stderr, "%*c%s starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
18497
178k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_starred_expression_unpacking"));
18498
178k
    }
18499
254k
    { // '*' expression
18500
254k
        if (p->error_indicator) {
18501
1.40k
            p->level--;
18502
1.40k
            return NULL;
18503
1.40k
        }
18504
253k
        D(fprintf(stderr, "%*c> starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression"));
18505
253k
        Token * _literal;
18506
253k
        expr_ty a;
18507
253k
        if (
18508
253k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
18509
253k
            &&
18510
253k
            (a = expression_rule(p))  // expression
18511
253k
        )
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
238k
        p->mark = _mark;
18532
238k
        D(fprintf(stderr, "%*c%s starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
18533
238k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression"));
18534
238k
    }
18535
238k
    if (p->call_invalid_rules) { // invalid_starred_expression
18536
164k
        if (p->error_indicator) {
18537
0
            p->level--;
18538
0
            return NULL;
18539
0
        }
18540
164k
        D(fprintf(stderr, "%*c> starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_starred_expression"));
18541
164k
        void *invalid_starred_expression_var;
18542
164k
        if (
18543
164k
            (invalid_starred_expression_var = invalid_starred_expression_rule(p))  // invalid_starred_expression
18544
164k
        )
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
164k
        p->mark = _mark;
18551
164k
        D(fprintf(stderr, "%*c%s starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
18552
164k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_starred_expression"));
18553
164k
    }
18554
238k
    _res = NULL;
18555
253k
  done:
18556
253k
    p->level--;
18557
253k
    return _res;
18558
238k
}
18559
18560
// kwarg_or_starred: invalid_kwarg | NAME '=' expression | starred_expression
18561
static KeywordOrStarred*
18562
kwarg_or_starred_rule(Parser *p)
18563
118k
{
18564
118k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18565
0
        _Pypegen_stack_overflow(p);
18566
0
    }
18567
118k
    if (p->error_indicator) {
18568
0
        p->level--;
18569
0
        return NULL;
18570
0
    }
18571
118k
    KeywordOrStarred* _res = NULL;
18572
118k
    int _mark = p->mark;
18573
118k
    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
118k
    int _start_lineno = p->tokens[_mark]->lineno;
18579
118k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18580
118k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18581
118k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18582
118k
    if (p->call_invalid_rules) { // invalid_kwarg
18583
82.8k
        if (p->error_indicator) {
18584
0
            p->level--;
18585
0
            return NULL;
18586
0
        }
18587
82.8k
        D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
18588
82.8k
        void *invalid_kwarg_var;
18589
82.8k
        if (
18590
82.8k
            (invalid_kwarg_var = invalid_kwarg_rule(p))  // invalid_kwarg
18591
82.8k
        )
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
82.8k
        p->mark = _mark;
18598
82.8k
        D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
18599
82.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwarg"));
18600
82.8k
    }
18601
118k
    { // NAME '=' expression
18602
118k
        if (p->error_indicator) {
18603
613
            p->level--;
18604
613
            return NULL;
18605
613
        }
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
95.6k
        p->mark = _mark;
18637
95.6k
        D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
18638
95.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression"));
18639
95.6k
    }
18640
0
    { // starred_expression
18641
95.6k
        if (p->error_indicator) {
18642
329
            p->level--;
18643
329
            return NULL;
18644
329
        }
18645
95.3k
        D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
18646
95.3k
        expr_ty a;
18647
95.3k
        if (
18648
95.3k
            (a = starred_expression_rule(p))  // starred_expression
18649
95.3k
        )
18650
4.78k
        {
18651
4.78k
            D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
18652
4.78k
            _res = _PyPegen_keyword_or_starred ( p , a , 0 );
18653
4.78k
            if (_res == NULL && PyErr_Occurred()) {
18654
0
                p->error_indicator = 1;
18655
0
                p->level--;
18656
0
                return NULL;
18657
0
            }
18658
4.78k
            goto done;
18659
4.78k
        }
18660
90.5k
        p->mark = _mark;
18661
90.5k
        D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
18662
90.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
18663
90.5k
    }
18664
0
    _res = NULL;
18665
117k
  done:
18666
117k
    p->level--;
18667
117k
    return _res;
18668
90.5k
}
18669
18670
// kwarg_or_double_starred: invalid_kwarg | NAME '=' expression | '**' expression
18671
static KeywordOrStarred*
18672
kwarg_or_double_starred_rule(Parser *p)
18673
53.0k
{
18674
53.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18675
0
        _Pypegen_stack_overflow(p);
18676
0
    }
18677
53.0k
    if (p->error_indicator) {
18678
0
        p->level--;
18679
0
        return NULL;
18680
0
    }
18681
53.0k
    KeywordOrStarred* _res = NULL;
18682
53.0k
    int _mark = p->mark;
18683
53.0k
    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.0k
    int _start_lineno = p->tokens[_mark]->lineno;
18689
53.0k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18690
53.0k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18691
53.0k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18692
53.0k
    if (p->call_invalid_rules) { // invalid_kwarg
18693
36.0k
        if (p->error_indicator) {
18694
0
            p->level--;
18695
0
            return NULL;
18696
0
        }
18697
36.0k
        D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
18698
36.0k
        void *invalid_kwarg_var;
18699
36.0k
        if (
18700
36.0k
            (invalid_kwarg_var = invalid_kwarg_rule(p))  // invalid_kwarg
18701
36.0k
        )
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.0k
        p->mark = _mark;
18708
36.0k
        D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
18709
36.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwarg"));
18710
36.0k
    }
18711
53.0k
    { // NAME '=' expression
18712
53.0k
        if (p->error_indicator) {
18713
308
            p->level--;
18714
308
            return NULL;
18715
308
        }
18716
52.7k
        D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
18717
52.7k
        Token * _literal;
18718
52.7k
        expr_ty a;
18719
52.7k
        expr_ty b;
18720
52.7k
        if (
18721
52.7k
            (a = _PyPegen_name_token(p))  // NAME
18722
52.7k
            &&
18723
52.7k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
18724
52.7k
            &&
18725
52.7k
            (b = expression_rule(p))  // expression
18726
52.7k
        )
18727
2.18k
        {
18728
2.18k
            D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
18729
2.18k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18730
2.18k
            if (_token == NULL) {
18731
0
                p->level--;
18732
0
                return NULL;
18733
0
            }
18734
2.18k
            int _end_lineno = _token->end_lineno;
18735
2.18k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18736
2.18k
            int _end_col_offset = _token->end_col_offset;
18737
2.18k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18738
2.18k
            _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
18739
2.18k
            if (_res == NULL && PyErr_Occurred()) {
18740
0
                p->error_indicator = 1;
18741
0
                p->level--;
18742
0
                return NULL;
18743
0
            }
18744
2.18k
            goto done;
18745
2.18k
        }
18746
50.5k
        p->mark = _mark;
18747
50.5k
        D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
18748
50.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression"));
18749
50.5k
    }
18750
0
    { // '**' expression
18751
50.5k
        if (p->error_indicator) {
18752
66
            p->level--;
18753
66
            return NULL;
18754
66
        }
18755
50.4k
        D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' expression"));
18756
50.4k
        Token * _literal;
18757
50.4k
        expr_ty a;
18758
50.4k
        if (
18759
50.4k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
18760
50.4k
            &&
18761
50.4k
            (a = expression_rule(p))  // expression
18762
50.4k
        )
18763
7.65k
        {
18764
7.65k
            D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' expression"));
18765
7.65k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18766
7.65k
            if (_token == NULL) {
18767
0
                p->level--;
18768
0
                return NULL;
18769
0
            }
18770
7.65k
            int _end_lineno = _token->end_lineno;
18771
7.65k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18772
7.65k
            int _end_col_offset = _token->end_col_offset;
18773
7.65k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18774
7.65k
            _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( NULL , a , EXTRA ) ) , 1 );
18775
7.65k
            if (_res == NULL && PyErr_Occurred()) {
18776
0
                p->error_indicator = 1;
18777
0
                p->level--;
18778
0
                return NULL;
18779
0
            }
18780
7.65k
            goto done;
18781
7.65k
        }
18782
42.8k
        p->mark = _mark;
18783
42.8k
        D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
18784
42.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression"));
18785
42.8k
    }
18786
0
    _res = NULL;
18787
52.6k
  done:
18788
52.6k
    p->level--;
18789
52.6k
    return _res;
18790
42.8k
}
18791
18792
// star_targets: star_target !',' | star_target ((',' star_target))* ','?
18793
static expr_ty
18794
star_targets_rule(Parser *p)
18795
293k
{
18796
293k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18797
0
        _Pypegen_stack_overflow(p);
18798
0
    }
18799
293k
    if (p->error_indicator) {
18800
0
        p->level--;
18801
0
        return NULL;
18802
0
    }
18803
293k
    expr_ty _res = NULL;
18804
293k
    int _mark = p->mark;
18805
293k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18806
44
        p->error_indicator = 1;
18807
44
        p->level--;
18808
44
        return NULL;
18809
44
    }
18810
293k
    int _start_lineno = p->tokens[_mark]->lineno;
18811
293k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18812
293k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18813
293k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18814
293k
    { // star_target !','
18815
293k
        if (p->error_indicator) {
18816
0
            p->level--;
18817
0
            return NULL;
18818
0
        }
18819
293k
        D(fprintf(stderr, "%*c> star_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target !','"));
18820
293k
        expr_ty a;
18821
293k
        if (
18822
293k
            (a = star_target_rule(p))  // star_target
18823
293k
            &&
18824
293k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
18825
293k
        )
18826
144k
        {
18827
144k
            D(fprintf(stderr, "%*c+ star_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target !','"));
18828
144k
            _res = a;
18829
144k
            if (_res == NULL && PyErr_Occurred()) {
18830
0
                p->error_indicator = 1;
18831
0
                p->level--;
18832
0
                return NULL;
18833
0
            }
18834
144k
            goto done;
18835
144k
        }
18836
148k
        p->mark = _mark;
18837
148k
        D(fprintf(stderr, "%*c%s star_targets[%d-%d]: %s failed!\n", p->level, ' ',
18838
148k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target !','"));
18839
148k
    }
18840
0
    { // star_target ((',' star_target))* ','?
18841
148k
        if (p->error_indicator) {
18842
1.55k
            p->level--;
18843
1.55k
            return NULL;
18844
1.55k
        }
18845
147k
        D(fprintf(stderr, "%*c> star_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))* ','?"));
18846
147k
        void *_opt_var;
18847
147k
        UNUSED(_opt_var); // Silence compiler warnings
18848
147k
        expr_ty a;
18849
147k
        asdl_seq * b;
18850
147k
        if (
18851
147k
            (a = star_target_rule(p))  // star_target
18852
147k
            &&
18853
147k
            (b = _loop0_94_rule(p))  // ((',' star_target))*
18854
147k
            &&
18855
147k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
18856
147k
        )
18857
13.4k
        {
18858
13.4k
            D(fprintf(stderr, "%*c+ star_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))* ','?"));
18859
13.4k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18860
13.4k
            if (_token == NULL) {
18861
0
                p->level--;
18862
0
                return NULL;
18863
0
            }
18864
13.4k
            int _end_lineno = _token->end_lineno;
18865
13.4k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18866
13.4k
            int _end_col_offset = _token->end_col_offset;
18867
13.4k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18868
13.4k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Store , EXTRA );
18869
13.4k
            if (_res == NULL && PyErr_Occurred()) {
18870
0
                p->error_indicator = 1;
18871
0
                p->level--;
18872
0
                return NULL;
18873
0
            }
18874
13.4k
            goto done;
18875
13.4k
        }
18876
133k
        p->mark = _mark;
18877
133k
        D(fprintf(stderr, "%*c%s star_targets[%d-%d]: %s failed!\n", p->level, ' ',
18878
133k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ((',' star_target))* ','?"));
18879
133k
    }
18880
0
    _res = NULL;
18881
292k
  done:
18882
292k
    p->level--;
18883
292k
    return _res;
18884
133k
}
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.78k
        {
18914
2.78k
            D(fprintf(stderr, "%*c+ star_targets_list_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_target+ ','?"));
18915
2.78k
            _res = a;
18916
2.78k
            if (_res == NULL && PyErr_Occurred()) {
18917
0
                p->error_indicator = 1;
18918
0
                p->level--;
18919
0
                return NULL;
18920
0
            }
18921
2.78k
            goto done;
18922
2.78k
        }
18923
7.30k
        p->mark = _mark;
18924
7.30k
        D(fprintf(stderr, "%*c%s star_targets_list_seq[%d-%d]: %s failed!\n", p->level, ' ',
18925
7.30k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.star_target+ ','?"));
18926
7.30k
    }
18927
0
    _res = NULL;
18928
10.0k
  done:
18929
10.0k
    p->level--;
18930
10.0k
    return _res;
18931
7.30k
}
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
691
        {
18964
691
            D(fprintf(stderr, "%*c+ star_targets_tuple_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))+ ','?"));
18965
691
            _res = ( asdl_expr_seq* ) _PyPegen_seq_insert_in_front ( p , a , b );
18966
691
            if (_res == NULL && PyErr_Occurred()) {
18967
0
                p->error_indicator = 1;
18968
0
                p->level--;
18969
0
                return NULL;
18970
0
            }
18971
691
            goto done;
18972
691
        }
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.88k
        p->mark = _mark;
19001
8.88k
        D(fprintf(stderr, "%*c%s star_targets_tuple_seq[%d-%d]: %s failed!\n", p->level, ' ',
19002
8.88k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ','"));
19003
8.88k
    }
19004
0
    _res = NULL;
19005
11.1k
  done:
19006
11.1k
    p->level--;
19007
11.1k
    return _res;
19008
8.88k
}
19009
19010
// star_target: '*' (!'*' star_target) | target_with_star_atom
19011
static expr_ty
19012
star_target_rule(Parser *p)
19013
505k
{
19014
505k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19015
0
        _Pypegen_stack_overflow(p);
19016
0
    }
19017
505k
    if (p->error_indicator) {
19018
15
        p->level--;
19019
15
        return NULL;
19020
15
    }
19021
505k
    expr_ty _res = NULL;
19022
505k
    if (_PyPegen_is_memoized(p, star_target_type, &_res)) {
19023
253k
        p->level--;
19024
253k
        return _res;
19025
253k
    }
19026
251k
    int _mark = p->mark;
19027
251k
    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
251k
    int _start_lineno = p->tokens[_mark]->lineno;
19033
251k
    UNUSED(_start_lineno); // Only used by EXTRA macro
19034
251k
    int _start_col_offset = p->tokens[_mark]->col_offset;
19035
251k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
19036
251k
    { // '*' (!'*' star_target)
19037
251k
        if (p->error_indicator) {
19038
0
            p->level--;
19039
0
            return NULL;
19040
0
        }
19041
251k
        D(fprintf(stderr, "%*c> star_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (!'*' star_target)"));
19042
251k
        Token * _literal;
19043
251k
        void *a;
19044
251k
        if (
19045
251k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
19046
251k
            &&
19047
251k
            (a = _tmp_98_rule(p))  // !'*' star_target
19048
251k
        )
19049
2.01k
        {
19050
2.01k
            D(fprintf(stderr, "%*c+ star_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (!'*' star_target)"));
19051
2.01k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19052
2.01k
            if (_token == NULL) {
19053
0
                p->level--;
19054
0
                return NULL;
19055
0
            }
19056
2.01k
            int _end_lineno = _token->end_lineno;
19057
2.01k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19058
2.01k
            int _end_col_offset = _token->end_col_offset;
19059
2.01k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19060
2.01k
            _res = _PyAST_Starred ( CHECK ( expr_ty , _PyPegen_set_expr_context ( p , a , Store ) ) , Store , EXTRA );
19061
2.01k
            if (_res == NULL && PyErr_Occurred()) {
19062
0
                p->error_indicator = 1;
19063
0
                p->level--;
19064
0
                return NULL;
19065
0
            }
19066
2.01k
            goto done;
19067
2.01k
        }
19068
249k
        p->mark = _mark;
19069
249k
        D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
19070
249k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (!'*' star_target)"));
19071
249k
    }
19072
0
    { // target_with_star_atom
19073
249k
        if (p->error_indicator) {
19074
489
            p->level--;
19075
489
            return NULL;
19076
489
        }
19077
249k
        D(fprintf(stderr, "%*c> star_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "target_with_star_atom"));
19078
249k
        expr_ty target_with_star_atom_var;
19079
249k
        if (
19080
249k
            (target_with_star_atom_var = target_with_star_atom_rule(p))  // target_with_star_atom
19081
249k
        )
19082
125k
        {
19083
125k
            D(fprintf(stderr, "%*c+ star_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "target_with_star_atom"));
19084
125k
            _res = target_with_star_atom_var;
19085
125k
            goto done;
19086
125k
        }
19087
123k
        p->mark = _mark;
19088
123k
        D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
19089
123k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "target_with_star_atom"));
19090
123k
    }
19091
0
    _res = NULL;
19092
251k
  done:
19093
251k
    _PyPegen_insert_memo(p, _mark, star_target_type, _res);
19094
251k
    p->level--;
19095
251k
    return _res;
19096
123k
}
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
262k
{
19105
262k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19106
0
        _Pypegen_stack_overflow(p);
19107
0
    }
19108
262k
    if (p->error_indicator) {
19109
0
        p->level--;
19110
0
        return NULL;
19111
0
    }
19112
262k
    expr_ty _res = NULL;
19113
262k
    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
251k
    int _mark = p->mark;
19118
251k
    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
251k
    int _start_lineno = p->tokens[_mark]->lineno;
19124
251k
    UNUSED(_start_lineno); // Only used by EXTRA macro
19125
251k
    int _start_col_offset = p->tokens[_mark]->col_offset;
19126
251k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
19127
251k
    { // t_primary '.' NAME !t_lookahead
19128
251k
        if (p->error_indicator) {
19129
0
            p->level--;
19130
0
            return NULL;
19131
0
        }
19132
251k
        D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19133
251k
        Token * _literal;
19134
251k
        expr_ty a;
19135
251k
        expr_ty b;
19136
251k
        if (
19137
251k
            (a = t_primary_rule(p))  // t_primary
19138
251k
            &&
19139
251k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
19140
251k
            &&
19141
251k
            (b = _PyPegen_name_token(p))  // NAME
19142
251k
            &&
19143
251k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
19144
251k
        )
19145
4.01k
        {
19146
4.01k
            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.01k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19148
4.01k
            if (_token == NULL) {
19149
0
                p->level--;
19150
0
                return NULL;
19151
0
            }
19152
4.01k
            int _end_lineno = _token->end_lineno;
19153
4.01k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19154
4.01k
            int _end_col_offset = _token->end_col_offset;
19155
4.01k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19156
4.01k
            _res = _PyAST_Attribute ( a , b -> v . Name . id , Store , EXTRA );
19157
4.01k
            if (_res == NULL && PyErr_Occurred()) {
19158
0
                p->error_indicator = 1;
19159
0
                p->level--;
19160
0
                return NULL;
19161
0
            }
19162
4.01k
            goto done;
19163
4.01k
        }
19164
247k
        p->mark = _mark;
19165
247k
        D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19166
247k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19167
247k
    }
19168
0
    { // t_primary '[' slices ']' !t_lookahead
19169
247k
        if (p->error_indicator) {
19170
1.75k
            p->level--;
19171
1.75k
            return NULL;
19172
1.75k
        }
19173
245k
        D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19174
245k
        Token * _literal;
19175
245k
        Token * _literal_1;
19176
245k
        expr_ty a;
19177
245k
        expr_ty b;
19178
245k
        if (
19179
245k
            (a = t_primary_rule(p))  // t_primary
19180
245k
            &&
19181
245k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
19182
245k
            &&
19183
245k
            (b = slices_rule(p))  // slices
19184
245k
            &&
19185
245k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
19186
245k
            &&
19187
245k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
19188
245k
        )
19189
1.99k
        {
19190
1.99k
            D(fprintf(stderr, "%*c+ target_with_star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19191
1.99k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19192
1.99k
            if (_token == NULL) {
19193
0
                p->level--;
19194
0
                return NULL;
19195
0
            }
19196
1.99k
            int _end_lineno = _token->end_lineno;
19197
1.99k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19198
1.99k
            int _end_col_offset = _token->end_col_offset;
19199
1.99k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19200
1.99k
            _res = _PyAST_Subscript ( a , b , Store , EXTRA );
19201
1.99k
            if (_res == NULL && PyErr_Occurred()) {
19202
0
                p->error_indicator = 1;
19203
0
                p->level--;
19204
0
                return NULL;
19205
0
            }
19206
1.99k
            goto done;
19207
1.99k
        }
19208
243k
        p->mark = _mark;
19209
243k
        D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19210
243k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19211
243k
    }
19212
0
    { // star_atom
19213
243k
        if (p->error_indicator) {
19214
0
            p->level--;
19215
0
            return NULL;
19216
0
        }
19217
243k
        D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_atom"));
19218
243k
        expr_ty star_atom_var;
19219
243k
        if (
19220
243k
            (star_atom_var = star_atom_rule(p))  // star_atom
19221
243k
        )
19222
122k
        {
19223
122k
            D(fprintf(stderr, "%*c+ target_with_star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_atom"));
19224
122k
            _res = star_atom_var;
19225
122k
            goto done;
19226
122k
        }
19227
121k
        p->mark = _mark;
19228
121k
        D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19229
121k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_atom"));
19230
121k
    }
19231
0
    _res = NULL;
19232
249k
  done:
19233
249k
    _PyPegen_insert_memo(p, _mark, target_with_star_atom_type, _res);
19234
249k
    p->level--;
19235
249k
    return _res;
19236
121k
}
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
243k
{
19246
243k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19247
0
        _Pypegen_stack_overflow(p);
19248
0
    }
19249
243k
    if (p->error_indicator) {
19250
0
        p->level--;
19251
0
        return NULL;
19252
0
    }
19253
243k
    expr_ty _res = NULL;
19254
243k
    int _mark = p->mark;
19255
243k
    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
243k
    int _start_lineno = p->tokens[_mark]->lineno;
19261
243k
    UNUSED(_start_lineno); // Only used by EXTRA macro
19262
243k
    int _start_col_offset = p->tokens[_mark]->col_offset;
19263
243k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
19264
243k
    { // NAME
19265
243k
        if (p->error_indicator) {
19266
0
            p->level--;
19267
0
            return NULL;
19268
0
        }
19269
243k
        D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
19270
243k
        expr_ty a;
19271
243k
        if (
19272
243k
            (a = _PyPegen_name_token(p))  // NAME
19273
243k
        )
19274
112k
        {
19275
112k
            D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
19276
112k
            _res = _PyPegen_set_expr_context ( p , a , Store );
19277
112k
            if (_res == NULL && PyErr_Occurred()) {
19278
0
                p->error_indicator = 1;
19279
0
                p->level--;
19280
0
                return NULL;
19281
0
            }
19282
112k
            goto done;
19283
112k
        }
19284
131k
        p->mark = _mark;
19285
131k
        D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19286
131k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
19287
131k
    }
19288
0
    { // '(' target_with_star_atom ')'
19289
131k
        if (p->error_indicator) {
19290
0
            p->level--;
19291
0
            return NULL;
19292
0
        }
19293
131k
        D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' target_with_star_atom ')'"));
19294
131k
        Token * _literal;
19295
131k
        Token * _literal_1;
19296
131k
        expr_ty a;
19297
131k
        if (
19298
131k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
19299
131k
            &&
19300
131k
            (a = target_with_star_atom_rule(p))  // target_with_star_atom
19301
131k
            &&
19302
131k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19303
131k
        )
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
129k
        p->mark = _mark;
19315
129k
        D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19316
129k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' target_with_star_atom ')'"));
19317
129k
    }
19318
0
    { // '(' star_targets_tuple_seq? ')'
19319
129k
        if (p->error_indicator) {
19320
0
            p->level--;
19321
0
            return NULL;
19322
0
        }
19323
129k
        D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
19324
129k
        Token * _literal;
19325
129k
        Token * _literal_1;
19326
129k
        void *a;
19327
129k
        if (
19328
129k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
19329
129k
            &&
19330
129k
            (a = star_targets_tuple_seq_rule(p), !p->error_indicator)  // star_targets_tuple_seq?
19331
129k
            &&
19332
129k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19333
129k
        )
19334
5.32k
        {
19335
5.32k
            D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
19336
5.32k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19337
5.32k
            if (_token == NULL) {
19338
0
                p->level--;
19339
0
                return NULL;
19340
0
            }
19341
5.32k
            int _end_lineno = _token->end_lineno;
19342
5.32k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19343
5.32k
            int _end_col_offset = _token->end_col_offset;
19344
5.32k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19345
5.32k
            _res = _PyAST_Tuple ( a , Store , EXTRA );
19346
5.32k
            if (_res == NULL && PyErr_Occurred()) {
19347
0
                p->error_indicator = 1;
19348
0
                p->level--;
19349
0
                return NULL;
19350
0
            }
19351
5.32k
            goto done;
19352
5.32k
        }
19353
123k
        p->mark = _mark;
19354
123k
        D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19355
123k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
19356
123k
    }
19357
0
    { // '[' star_targets_list_seq? ']'
19358
123k
        if (p->error_indicator) {
19359
0
            p->level--;
19360
0
            return NULL;
19361
0
        }
19362
123k
        D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' star_targets_list_seq? ']'"));
19363
123k
        Token * _literal;
19364
123k
        Token * _literal_1;
19365
123k
        void *a;
19366
123k
        if (
19367
123k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
19368
123k
            &&
19369
123k
            (a = star_targets_list_seq_rule(p), !p->error_indicator)  // star_targets_list_seq?
19370
123k
            &&
19371
123k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
19372
123k
        )
19373
2.42k
        {
19374
2.42k
            D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' star_targets_list_seq? ']'"));
19375
2.42k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19376
2.42k
            if (_token == NULL) {
19377
0
                p->level--;
19378
0
                return NULL;
19379
0
            }
19380
2.42k
            int _end_lineno = _token->end_lineno;
19381
2.42k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19382
2.42k
            int _end_col_offset = _token->end_col_offset;
19383
2.42k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19384
2.42k
            _res = _PyAST_List ( a , Store , EXTRA );
19385
2.42k
            if (_res == NULL && PyErr_Occurred()) {
19386
0
                p->error_indicator = 1;
19387
0
                p->level--;
19388
0
                return NULL;
19389
0
            }
19390
2.42k
            goto done;
19391
2.42k
        }
19392
121k
        p->mark = _mark;
19393
121k
        D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19394
121k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' star_targets_list_seq? ']'"));
19395
121k
    }
19396
0
    _res = NULL;
19397
243k
  done:
19398
243k
    p->level--;
19399
243k
    return _res;
19400
121k
}
19401
19402
// single_target: single_subscript_attribute_target | NAME | '(' single_target ')'
19403
static expr_ty
19404
single_target_rule(Parser *p)
19405
178k
{
19406
178k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19407
0
        _Pypegen_stack_overflow(p);
19408
0
    }
19409
178k
    if (p->error_indicator) {
19410
0
        p->level--;
19411
0
        return NULL;
19412
0
    }
19413
178k
    expr_ty _res = NULL;
19414
178k
    int _mark = p->mark;
19415
178k
    { // single_subscript_attribute_target
19416
178k
        if (p->error_indicator) {
19417
0
            p->level--;
19418
0
            return NULL;
19419
0
        }
19420
178k
        D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
19421
178k
        expr_ty single_subscript_attribute_target_var;
19422
178k
        if (
19423
178k
            (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p))  // single_subscript_attribute_target
19424
178k
        )
19425
1.57k
        {
19426
1.57k
            D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
19427
1.57k
            _res = single_subscript_attribute_target_var;
19428
1.57k
            goto done;
19429
1.57k
        }
19430
177k
        p->mark = _mark;
19431
177k
        D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
19432
177k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_subscript_attribute_target"));
19433
177k
    }
19434
0
    { // NAME
19435
177k
        if (p->error_indicator) {
19436
158
            p->level--;
19437
158
            return NULL;
19438
158
        }
19439
177k
        D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
19440
177k
        expr_ty a;
19441
177k
        if (
19442
177k
            (a = _PyPegen_name_token(p))  // NAME
19443
177k
        )
19444
75.5k
        {
19445
75.5k
            D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
19446
75.5k
            _res = _PyPegen_set_expr_context ( p , a , Store );
19447
75.5k
            if (_res == NULL && PyErr_Occurred()) {
19448
0
                p->error_indicator = 1;
19449
0
                p->level--;
19450
0
                return NULL;
19451
0
            }
19452
75.5k
            goto done;
19453
75.5k
        }
19454
101k
        p->mark = _mark;
19455
101k
        D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
19456
101k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
19457
101k
    }
19458
0
    { // '(' single_target ')'
19459
101k
        if (p->error_indicator) {
19460
0
            p->level--;
19461
0
            return NULL;
19462
0
        }
19463
101k
        D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
19464
101k
        Token * _literal;
19465
101k
        Token * _literal_1;
19466
101k
        expr_ty a;
19467
101k
        if (
19468
101k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
19469
101k
            &&
19470
101k
            (a = single_target_rule(p))  // single_target
19471
101k
            &&
19472
101k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19473
101k
        )
19474
929
        {
19475
929
            D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
19476
929
            _res = a;
19477
929
            if (_res == NULL && PyErr_Occurred()) {
19478
0
                p->error_indicator = 1;
19479
0
                p->level--;
19480
0
                return NULL;
19481
0
            }
19482
929
            goto done;
19483
929
        }
19484
100k
        p->mark = _mark;
19485
100k
        D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
19486
100k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' single_target ')'"));
19487
100k
    }
19488
0
    _res = NULL;
19489
178k
  done:
19490
178k
    p->level--;
19491
178k
    return _res;
19492
100k
}
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
359k
{
19500
359k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19501
0
        _Pypegen_stack_overflow(p);
19502
0
    }
19503
359k
    if (p->error_indicator) {
19504
0
        p->level--;
19505
0
        return NULL;
19506
0
    }
19507
359k
    expr_ty _res = NULL;
19508
359k
    int _mark = p->mark;
19509
359k
    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
359k
    int _start_lineno = p->tokens[_mark]->lineno;
19515
359k
    UNUSED(_start_lineno); // Only used by EXTRA macro
19516
359k
    int _start_col_offset = p->tokens[_mark]->col_offset;
19517
359k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
19518
359k
    { // t_primary '.' NAME !t_lookahead
19519
359k
        if (p->error_indicator) {
19520
0
            p->level--;
19521
0
            return NULL;
19522
0
        }
19523
359k
        D(fprintf(stderr, "%*c> single_subscript_attribute_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19524
359k
        Token * _literal;
19525
359k
        expr_ty a;
19526
359k
        expr_ty b;
19527
359k
        if (
19528
359k
            (a = t_primary_rule(p))  // t_primary
19529
359k
            &&
19530
359k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
19531
359k
            &&
19532
359k
            (b = _PyPegen_name_token(p))  // NAME
19533
359k
            &&
19534
359k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
19535
359k
        )
19536
4.95k
        {
19537
4.95k
            D(fprintf(stderr, "%*c+ single_subscript_attribute_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19538
4.95k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19539
4.95k
            if (_token == NULL) {
19540
0
                p->level--;
19541
0
                return NULL;
19542
0
            }
19543
4.95k
            int _end_lineno = _token->end_lineno;
19544
4.95k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19545
4.95k
            int _end_col_offset = _token->end_col_offset;
19546
4.95k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19547
4.95k
            _res = _PyAST_Attribute ( a , b -> v . Name . id , Store , EXTRA );
19548
4.95k
            if (_res == NULL && PyErr_Occurred()) {
19549
0
                p->error_indicator = 1;
19550
0
                p->level--;
19551
0
                return NULL;
19552
0
            }
19553
4.95k
            goto done;
19554
4.95k
        }
19555
354k
        p->mark = _mark;
19556
354k
        D(fprintf(stderr, "%*c%s single_subscript_attribute_target[%d-%d]: %s failed!\n", p->level, ' ',
19557
354k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19558
354k
    }
19559
0
    { // t_primary '[' slices ']' !t_lookahead
19560
354k
        if (p->error_indicator) {
19561
2.78k
            p->level--;
19562
2.78k
            return NULL;
19563
2.78k
        }
19564
351k
        D(fprintf(stderr, "%*c> single_subscript_attribute_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19565
351k
        Token * _literal;
19566
351k
        Token * _literal_1;
19567
351k
        expr_ty a;
19568
351k
        expr_ty b;
19569
351k
        if (
19570
351k
            (a = t_primary_rule(p))  // t_primary
19571
351k
            &&
19572
351k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
19573
351k
            &&
19574
351k
            (b = slices_rule(p))  // slices
19575
351k
            &&
19576
351k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
19577
351k
            &&
19578
351k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
19579
351k
        )
19580
1.05k
        {
19581
1.05k
            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.05k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19583
1.05k
            if (_token == NULL) {
19584
0
                p->level--;
19585
0
                return NULL;
19586
0
            }
19587
1.05k
            int _end_lineno = _token->end_lineno;
19588
1.05k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19589
1.05k
            int _end_col_offset = _token->end_col_offset;
19590
1.05k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19591
1.05k
            _res = _PyAST_Subscript ( a , b , Store , EXTRA );
19592
1.05k
            if (_res == NULL && PyErr_Occurred()) {
19593
0
                p->error_indicator = 1;
19594
0
                p->level--;
19595
0
                return NULL;
19596
0
            }
19597
1.05k
            goto done;
19598
1.05k
        }
19599
350k
        p->mark = _mark;
19600
350k
        D(fprintf(stderr, "%*c%s single_subscript_attribute_target[%d-%d]: %s failed!\n", p->level, ' ',
19601
350k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19602
350k
    }
19603
0
    _res = NULL;
19604
356k
  done:
19605
356k
    p->level--;
19606
356k
    return _res;
19607
350k
}
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.41M
{
19620
2.41M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19621
0
        _Pypegen_stack_overflow(p);
19622
0
    }
19623
2.41M
    expr_ty _res = NULL;
19624
2.41M
    if (_PyPegen_is_memoized(p, t_primary_type, &_res)) {
19625
2.14M
        p->level--;
19626
2.14M
        return _res;
19627
2.14M
    }
19628
267k
    int _mark = p->mark;
19629
267k
    int _resmark = p->mark;
19630
301k
    while (1) {
19631
301k
        int tmpvar_9 = _PyPegen_update_memo(p, _mark, t_primary_type, _res);
19632
301k
        if (tmpvar_9) {
19633
0
            p->level--;
19634
0
            return _res;
19635
0
        }
19636
301k
        p->mark = _mark;
19637
301k
        void *_raw = t_primary_raw(p);
19638
301k
        if (p->error_indicator) {
19639
4.65k
            p->level--;
19640
4.65k
            return NULL;
19641
4.65k
        }
19642
296k
        if (_raw == NULL || p->mark <= _resmark)
19643
262k
            break;
19644
33.7k
        _resmark = p->mark;
19645
33.7k
        _res = _raw;
19646
33.7k
    }
19647
262k
    p->mark = _resmark;
19648
262k
    p->level--;
19649
262k
    return _res;
19650
267k
}
19651
static expr_ty
19652
t_primary_raw(Parser *p)
19653
301k
{
19654
301k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19655
0
        _Pypegen_stack_overflow(p);
19656
0
    }
19657
301k
    if (p->error_indicator) {
19658
0
        p->level--;
19659
0
        return NULL;
19660
0
    }
19661
301k
    expr_ty _res = NULL;
19662
301k
    int _mark = p->mark;
19663
301k
    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
301k
    int _start_lineno = p->tokens[_mark]->lineno;
19669
301k
    UNUSED(_start_lineno); // Only used by EXTRA macro
19670
301k
    int _start_col_offset = p->tokens[_mark]->col_offset;
19671
301k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
19672
301k
    { // t_primary '.' NAME &t_lookahead
19673
301k
        if (p->error_indicator) {
19674
0
            p->level--;
19675
0
            return NULL;
19676
0
        }
19677
301k
        D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
19678
301k
        Token * _literal;
19679
301k
        expr_ty a;
19680
301k
        expr_ty b;
19681
301k
        if (
19682
301k
            (a = t_primary_rule(p))  // t_primary
19683
301k
            &&
19684
301k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
19685
301k
            &&
19686
301k
            (b = _PyPegen_name_token(p))  // NAME
19687
301k
            &&
19688
301k
            _PyPegen_lookahead(1, t_lookahead_rule, p)
19689
301k
        )
19690
6.25k
        {
19691
6.25k
            D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
19692
6.25k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19693
6.25k
            if (_token == NULL) {
19694
0
                p->level--;
19695
0
                return NULL;
19696
0
            }
19697
6.25k
            int _end_lineno = _token->end_lineno;
19698
6.25k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19699
6.25k
            int _end_col_offset = _token->end_col_offset;
19700
6.25k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19701
6.25k
            _res = _PyAST_Attribute ( a , b -> v . Name . id , Load , EXTRA );
19702
6.25k
            if (_res == NULL && PyErr_Occurred()) {
19703
0
                p->error_indicator = 1;
19704
0
                p->level--;
19705
0
                return NULL;
19706
0
            }
19707
6.25k
            goto done;
19708
6.25k
        }
19709
294k
        p->mark = _mark;
19710
294k
        D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
19711
294k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
19712
294k
    }
19713
0
    { // t_primary '[' slices ']' &t_lookahead
19714
294k
        if (p->error_indicator) {
19715
16
            p->level--;
19716
16
            return NULL;
19717
16
        }
19718
294k
        D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
19719
294k
        Token * _literal;
19720
294k
        Token * _literal_1;
19721
294k
        expr_ty a;
19722
294k
        expr_ty b;
19723
294k
        if (
19724
294k
            (a = t_primary_rule(p))  // t_primary
19725
294k
            &&
19726
294k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
19727
294k
            &&
19728
294k
            (b = slices_rule(p))  // slices
19729
294k
            &&
19730
294k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
19731
294k
            &&
19732
294k
            _PyPegen_lookahead(1, t_lookahead_rule, p)
19733
294k
        )
19734
706
        {
19735
706
            D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
19736
706
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19737
706
            if (_token == NULL) {
19738
0
                p->level--;
19739
0
                return NULL;
19740
0
            }
19741
706
            int _end_lineno = _token->end_lineno;
19742
706
            UNUSED(_end_lineno); // Only used by EXTRA macro
19743
706
            int _end_col_offset = _token->end_col_offset;
19744
706
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19745
706
            _res = _PyAST_Subscript ( a , b , Load , EXTRA );
19746
706
            if (_res == NULL && PyErr_Occurred()) {
19747
0
                p->error_indicator = 1;
19748
0
                p->level--;
19749
0
                return NULL;
19750
0
            }
19751
706
            goto done;
19752
706
        }
19753
294k
        p->mark = _mark;
19754
294k
        D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
19755
294k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
19756
294k
    }
19757
0
    { // t_primary genexp &t_lookahead
19758
294k
        if (p->error_indicator) {
19759
253
            p->level--;
19760
253
            return NULL;
19761
253
        }
19762
293k
        D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary genexp &t_lookahead"));
19763
293k
        expr_ty a;
19764
293k
        expr_ty b;
19765
293k
        if (
19766
293k
            (a = t_primary_rule(p))  // t_primary
19767
293k
            &&
19768
293k
            (b = genexp_rule(p))  // genexp
19769
293k
            &&
19770
293k
            _PyPegen_lookahead(1, t_lookahead_rule, p)
19771
293k
        )
19772
617
        {
19773
617
            D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary genexp &t_lookahead"));
19774
617
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19775
617
            if (_token == NULL) {
19776
0
                p->level--;
19777
0
                return NULL;
19778
0
            }
19779
617
            int _end_lineno = _token->end_lineno;
19780
617
            UNUSED(_end_lineno); // Only used by EXTRA macro
19781
617
            int _end_col_offset = _token->end_col_offset;
19782
617
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19783
617
            _res = _PyAST_Call ( a , CHECK ( asdl_expr_seq* , ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
19784
617
            if (_res == NULL && PyErr_Occurred()) {
19785
0
                p->error_indicator = 1;
19786
0
                p->level--;
19787
0
                return NULL;
19788
0
            }
19789
617
            goto done;
19790
617
        }
19791
293k
        p->mark = _mark;
19792
293k
        D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
19793
293k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary genexp &t_lookahead"));
19794
293k
    }
19795
0
    { // t_primary '(' arguments? ')' &t_lookahead
19796
293k
        if (p->error_indicator) {
19797
434
            p->level--;
19798
434
            return NULL;
19799
434
        }
19800
292k
        D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
19801
292k
        Token * _literal;
19802
292k
        Token * _literal_1;
19803
292k
        expr_ty a;
19804
292k
        void *b;
19805
292k
        if (
19806
292k
            (a = t_primary_rule(p))  // t_primary
19807
292k
            &&
19808
292k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
19809
292k
            &&
19810
292k
            (b = arguments_rule(p), !p->error_indicator)  // arguments?
19811
292k
            &&
19812
292k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19813
292k
            &&
19814
292k
            _PyPegen_lookahead(1, t_lookahead_rule, p)
19815
292k
        )
19816
3.26k
        {
19817
3.26k
            D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
19818
3.26k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19819
3.26k
            if (_token == NULL) {
19820
0
                p->level--;
19821
0
                return NULL;
19822
0
            }
19823
3.26k
            int _end_lineno = _token->end_lineno;
19824
3.26k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19825
3.26k
            int _end_col_offset = _token->end_col_offset;
19826
3.26k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19827
3.26k
            _res = _PyAST_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
19828
3.26k
            if (_res == NULL && PyErr_Occurred()) {
19829
0
                p->error_indicator = 1;
19830
0
                p->level--;
19831
0
                return NULL;
19832
0
            }
19833
3.26k
            goto done;
19834
3.26k
        }
19835
289k
        p->mark = _mark;
19836
289k
        D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
19837
289k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
19838
289k
    }
19839
0
    { // atom &t_lookahead
19840
289k
        if (p->error_indicator) {
19841
405
            p->level--;
19842
405
            return NULL;
19843
405
        }
19844
289k
        D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "atom &t_lookahead"));
19845
289k
        expr_ty a;
19846
289k
        if (
19847
289k
            (a = atom_rule(p))  // atom
19848
289k
            &&
19849
289k
            _PyPegen_lookahead(1, t_lookahead_rule, p)
19850
289k
        )
19851
44.7k
        {
19852
44.7k
            D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "atom &t_lookahead"));
19853
44.7k
            _res = a;
19854
44.7k
            if (_res == NULL && PyErr_Occurred()) {
19855
0
                p->error_indicator = 1;
19856
0
                p->level--;
19857
0
                return NULL;
19858
0
            }
19859
44.7k
            goto done;
19860
44.7k
        }
19861
244k
        p->mark = _mark;
19862
244k
        D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
19863
244k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "atom &t_lookahead"));
19864
244k
    }
19865
0
    _res = NULL;
19866
300k
  done:
19867
300k
    p->level--;
19868
300k
    return _res;
19869
244k
}
19870
19871
// t_lookahead: '(' | '[' | '.'
19872
static void *
19873
t_lookahead_rule(Parser *p)
19874
234k
{
19875
234k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19876
0
        _Pypegen_stack_overflow(p);
19877
0
    }
19878
234k
    if (p->error_indicator) {
19879
0
        p->level--;
19880
0
        return NULL;
19881
0
    }
19882
234k
    void * _res = NULL;
19883
234k
    int _mark = p->mark;
19884
234k
    { // '('
19885
234k
        if (p->error_indicator) {
19886
0
            p->level--;
19887
0
            return NULL;
19888
0
        }
19889
234k
        D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
19890
234k
        Token * _literal;
19891
234k
        if (
19892
234k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
19893
234k
        )
19894
26.4k
        {
19895
26.4k
            D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
19896
26.4k
            _res = _literal;
19897
26.4k
            goto done;
19898
26.4k
        }
19899
207k
        p->mark = _mark;
19900
207k
        D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
19901
207k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
19902
207k
    }
19903
0
    { // '['
19904
207k
        if (p->error_indicator) {
19905
190
            p->level--;
19906
190
            return NULL;
19907
190
        }
19908
207k
        D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
19909
207k
        Token * _literal;
19910
207k
        if (
19911
207k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
19912
207k
        )
19913
7.14k
        {
19914
7.14k
            D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
19915
7.14k
            _res = _literal;
19916
7.14k
            goto done;
19917
7.14k
        }
19918
200k
        p->mark = _mark;
19919
200k
        D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
19920
200k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
19921
200k
    }
19922
0
    { // '.'
19923
200k
        if (p->error_indicator) {
19924
0
            p->level--;
19925
0
            return NULL;
19926
0
        }
19927
200k
        D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
19928
200k
        Token * _literal;
19929
200k
        if (
19930
200k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
19931
200k
        )
19932
21.9k
        {
19933
21.9k
            D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
19934
21.9k
            _res = _literal;
19935
21.9k
            goto done;
19936
21.9k
        }
19937
178k
        p->mark = _mark;
19938
178k
        D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
19939
178k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
19940
178k
    }
19941
0
    _res = NULL;
19942
234k
  done:
19943
234k
    p->level--;
19944
234k
    return _res;
19945
178k
}
19946
19947
// del_targets: ','.del_target+ ','?
19948
static asdl_expr_seq*
19949
del_targets_rule(Parser *p)
19950
5.62k
{
19951
5.62k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19952
0
        _Pypegen_stack_overflow(p);
19953
0
    }
19954
5.62k
    if (p->error_indicator) {
19955
0
        p->level--;
19956
0
        return NULL;
19957
0
    }
19958
5.62k
    asdl_expr_seq* _res = NULL;
19959
5.62k
    int _mark = p->mark;
19960
5.62k
    { // ','.del_target+ ','?
19961
5.62k
        if (p->error_indicator) {
19962
0
            p->level--;
19963
0
            return NULL;
19964
0
        }
19965
5.62k
        D(fprintf(stderr, "%*c> del_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.del_target+ ','?"));
19966
5.62k
        void *_opt_var;
19967
5.62k
        UNUSED(_opt_var); // Silence compiler warnings
19968
5.62k
        asdl_expr_seq* a;
19969
5.62k
        if (
19970
5.62k
            (a = (asdl_expr_seq*)_gather_100_rule(p))  // ','.del_target+
19971
5.62k
            &&
19972
5.62k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
19973
5.62k
        )
19974
2.78k
        {
19975
2.78k
            D(fprintf(stderr, "%*c+ del_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.del_target+ ','?"));
19976
2.78k
            _res = a;
19977
2.78k
            if (_res == NULL && PyErr_Occurred()) {
19978
0
                p->error_indicator = 1;
19979
0
                p->level--;
19980
0
                return NULL;
19981
0
            }
19982
2.78k
            goto done;
19983
2.78k
        }
19984
2.83k
        p->mark = _mark;
19985
2.83k
        D(fprintf(stderr, "%*c%s del_targets[%d-%d]: %s failed!\n", p->level, ' ',
19986
2.83k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.del_target+ ','?"));
19987
2.83k
    }
19988
0
    _res = NULL;
19989
5.62k
  done:
19990
5.62k
    p->level--;
19991
5.62k
    return _res;
19992
2.83k
}
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
14.7k
{
20001
14.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20002
0
        _Pypegen_stack_overflow(p);
20003
0
    }
20004
14.7k
    if (p->error_indicator) {
20005
0
        p->level--;
20006
0
        return NULL;
20007
0
    }
20008
14.7k
    expr_ty _res = NULL;
20009
14.7k
    if (_PyPegen_is_memoized(p, del_target_type, &_res)) {
20010
3.13k
        p->level--;
20011
3.13k
        return _res;
20012
3.13k
    }
20013
11.6k
    int _mark = p->mark;
20014
11.6k
    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
11.6k
    int _start_lineno = p->tokens[_mark]->lineno;
20020
11.6k
    UNUSED(_start_lineno); // Only used by EXTRA macro
20021
11.6k
    int _start_col_offset = p->tokens[_mark]->col_offset;
20022
11.6k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
20023
11.6k
    { // t_primary '.' NAME !t_lookahead
20024
11.6k
        if (p->error_indicator) {
20025
0
            p->level--;
20026
0
            return NULL;
20027
0
        }
20028
11.6k
        D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
20029
11.6k
        Token * _literal;
20030
11.6k
        expr_ty a;
20031
11.6k
        expr_ty b;
20032
11.6k
        if (
20033
11.6k
            (a = t_primary_rule(p))  // t_primary
20034
11.6k
            &&
20035
11.6k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
20036
11.6k
            &&
20037
11.6k
            (b = _PyPegen_name_token(p))  // NAME
20038
11.6k
            &&
20039
11.6k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
20040
11.6k
        )
20041
338
        {
20042
338
            D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
20043
338
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
20044
338
            if (_token == NULL) {
20045
0
                p->level--;
20046
0
                return NULL;
20047
0
            }
20048
338
            int _end_lineno = _token->end_lineno;
20049
338
            UNUSED(_end_lineno); // Only used by EXTRA macro
20050
338
            int _end_col_offset = _token->end_col_offset;
20051
338
            UNUSED(_end_col_offset); // Only used by EXTRA macro
20052
338
            _res = _PyAST_Attribute ( a , b -> v . Name . id , Del , EXTRA );
20053
338
            if (_res == NULL && PyErr_Occurred()) {
20054
0
                p->error_indicator = 1;
20055
0
                p->level--;
20056
0
                return NULL;
20057
0
            }
20058
338
            goto done;
20059
338
        }
20060
11.2k
        p->mark = _mark;
20061
11.2k
        D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
20062
11.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
20063
11.2k
    }
20064
0
    { // t_primary '[' slices ']' !t_lookahead
20065
11.2k
        if (p->error_indicator) {
20066
126
            p->level--;
20067
126
            return NULL;
20068
126
        }
20069
11.1k
        D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
20070
11.1k
        Token * _literal;
20071
11.1k
        Token * _literal_1;
20072
11.1k
        expr_ty a;
20073
11.1k
        expr_ty b;
20074
11.1k
        if (
20075
11.1k
            (a = t_primary_rule(p))  // t_primary
20076
11.1k
            &&
20077
11.1k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
20078
11.1k
            &&
20079
11.1k
            (b = slices_rule(p))  // slices
20080
11.1k
            &&
20081
11.1k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
20082
11.1k
            &&
20083
11.1k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
20084
11.1k
        )
20085
272
        {
20086
272
            D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
20087
272
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
20088
272
            if (_token == NULL) {
20089
0
                p->level--;
20090
0
                return NULL;
20091
0
            }
20092
272
            int _end_lineno = _token->end_lineno;
20093
272
            UNUSED(_end_lineno); // Only used by EXTRA macro
20094
272
            int _end_col_offset = _token->end_col_offset;
20095
272
            UNUSED(_end_col_offset); // Only used by EXTRA macro
20096
272
            _res = _PyAST_Subscript ( a , b , Del , EXTRA );
20097
272
            if (_res == NULL && PyErr_Occurred()) {
20098
0
                p->error_indicator = 1;
20099
0
                p->level--;
20100
0
                return NULL;
20101
0
            }
20102
272
            goto done;
20103
272
        }
20104
10.8k
        p->mark = _mark;
20105
10.8k
        D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
20106
10.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
20107
10.8k
    }
20108
0
    { // del_t_atom
20109
10.8k
        if (p->error_indicator) {
20110
0
            p->level--;
20111
0
            return NULL;
20112
0
        }
20113
10.8k
        D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "del_t_atom"));
20114
10.8k
        expr_ty del_t_atom_var;
20115
10.8k
        if (
20116
10.8k
            (del_t_atom_var = del_t_atom_rule(p))  // del_t_atom
20117
10.8k
        )
20118
7.30k
        {
20119
7.30k
            D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "del_t_atom"));
20120
7.30k
            _res = del_t_atom_var;
20121
7.30k
            goto done;
20122
7.30k
        }
20123
3.58k
        p->mark = _mark;
20124
3.58k
        D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
20125
3.58k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_t_atom"));
20126
3.58k
    }
20127
0
    _res = NULL;
20128
11.4k
  done:
20129
11.4k
    _PyPegen_insert_memo(p, _mark, del_target_type, _res);
20130
11.4k
    p->level--;
20131
11.4k
    return _res;
20132
3.58k
}
20133
20134
// del_t_atom: NAME | '(' del_target ')' | '(' del_targets? ')' | '[' del_targets? ']'
20135
static expr_ty
20136
del_t_atom_rule(Parser *p)
20137
10.8k
{
20138
10.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20139
0
        _Pypegen_stack_overflow(p);
20140
0
    }
20141
10.8k
    if (p->error_indicator) {
20142
0
        p->level--;
20143
0
        return NULL;
20144
0
    }
20145
10.8k
    expr_ty _res = NULL;
20146
10.8k
    int _mark = p->mark;
20147
10.8k
    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
10.8k
    int _start_lineno = p->tokens[_mark]->lineno;
20153
10.8k
    UNUSED(_start_lineno); // Only used by EXTRA macro
20154
10.8k
    int _start_col_offset = p->tokens[_mark]->col_offset;
20155
10.8k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
20156
10.8k
    { // NAME
20157
10.8k
        if (p->error_indicator) {
20158
0
            p->level--;
20159
0
            return NULL;
20160
0
        }
20161
10.8k
        D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
20162
10.8k
        expr_ty a;
20163
10.8k
        if (
20164
10.8k
            (a = _PyPegen_name_token(p))  // NAME
20165
10.8k
        )
20166
4.08k
        {
20167
4.08k
            D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
20168
4.08k
            _res = _PyPegen_set_expr_context ( p , a , Del );
20169
4.08k
            if (_res == NULL && PyErr_Occurred()) {
20170
0
                p->error_indicator = 1;
20171
0
                p->level--;
20172
0
                return NULL;
20173
0
            }
20174
4.08k
            goto done;
20175
4.08k
        }
20176
6.79k
        p->mark = _mark;
20177
6.79k
        D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
20178
6.79k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
20179
6.79k
    }
20180
0
    { // '(' del_target ')'
20181
6.79k
        if (p->error_indicator) {
20182
0
            p->level--;
20183
0
            return NULL;
20184
0
        }
20185
6.79k
        D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' del_target ')'"));
20186
6.79k
        Token * _literal;
20187
6.79k
        Token * _literal_1;
20188
6.79k
        expr_ty a;
20189
6.79k
        if (
20190
6.79k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
20191
6.79k
            &&
20192
6.79k
            (a = del_target_rule(p))  // del_target
20193
6.79k
            &&
20194
6.79k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
20195
6.79k
        )
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.52k
        p->mark = _mark;
20207
6.52k
        D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
20208
6.52k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' del_target ')'"));
20209
6.52k
    }
20210
0
    { // '(' del_targets? ')'
20211
6.52k
        if (p->error_indicator) {
20212
0
            p->level--;
20213
0
            return NULL;
20214
0
        }
20215
6.52k
        D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' del_targets? ')'"));
20216
6.52k
        Token * _literal;
20217
6.52k
        Token * _literal_1;
20218
6.52k
        void *a;
20219
6.52k
        if (
20220
6.52k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
20221
6.52k
            &&
20222
6.52k
            (a = del_targets_rule(p), !p->error_indicator)  // del_targets?
20223
6.52k
            &&
20224
6.52k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
20225
6.52k
        )
20226
2.34k
        {
20227
2.34k
            D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' del_targets? ')'"));
20228
2.34k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
20229
2.34k
            if (_token == NULL) {
20230
0
                p->level--;
20231
0
                return NULL;
20232
0
            }
20233
2.34k
            int _end_lineno = _token->end_lineno;
20234
2.34k
            UNUSED(_end_lineno); // Only used by EXTRA macro
20235
2.34k
            int _end_col_offset = _token->end_col_offset;
20236
2.34k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
20237
2.34k
            _res = _PyAST_Tuple ( a , Del , EXTRA );
20238
2.34k
            if (_res == NULL && PyErr_Occurred()) {
20239
0
                p->error_indicator = 1;
20240
0
                p->level--;
20241
0
                return NULL;
20242
0
            }
20243
2.34k
            goto done;
20244
2.34k
        }
20245
4.17k
        p->mark = _mark;
20246
4.17k
        D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
20247
4.17k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' del_targets? ')'"));
20248
4.17k
    }
20249
0
    { // '[' del_targets? ']'
20250
4.17k
        if (p->error_indicator) {
20251
0
            p->level--;
20252
0
            return NULL;
20253
0
        }
20254
4.17k
        D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' del_targets? ']'"));
20255
4.17k
        Token * _literal;
20256
4.17k
        Token * _literal_1;
20257
4.17k
        void *a;
20258
4.17k
        if (
20259
4.17k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
20260
4.17k
            &&
20261
4.17k
            (a = del_targets_rule(p), !p->error_indicator)  // del_targets?
20262
4.17k
            &&
20263
4.17k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
20264
4.17k
        )
20265
596
        {
20266
596
            D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' del_targets? ']'"));
20267
596
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
20268
596
            if (_token == NULL) {
20269
0
                p->level--;
20270
0
                return NULL;
20271
0
            }
20272
596
            int _end_lineno = _token->end_lineno;
20273
596
            UNUSED(_end_lineno); // Only used by EXTRA macro
20274
596
            int _end_col_offset = _token->end_col_offset;
20275
596
            UNUSED(_end_col_offset); // Only used by EXTRA macro
20276
596
            _res = _PyAST_List ( a , Del , EXTRA );
20277
596
            if (_res == NULL && PyErr_Occurred()) {
20278
0
                p->error_indicator = 1;
20279
0
                p->level--;
20280
0
                return NULL;
20281
0
            }
20282
596
            goto done;
20283
596
        }
20284
3.58k
        p->mark = _mark;
20285
3.58k
        D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
20286
3.58k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' del_targets? ']'"));
20287
3.58k
    }
20288
0
    _res = NULL;
20289
10.8k
  done:
20290
10.8k
    p->level--;
20291
10.8k
    return _res;
20292
3.58k
}
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.19k
        if (p->error_indicator) {
20589
0
            p->level--;
20590
0
            return NULL;
20591
0
        }
20592
2.19k
        D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_double_type_comments"));
20593
2.19k
        void *invalid_double_type_comments_var;
20594
2.19k
        if (
20595
2.19k
            (invalid_double_type_comments_var = invalid_double_type_comments_rule(p))  // invalid_double_type_comments
20596
2.19k
        )
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.19k
        p->mark = _mark;
20603
2.19k
        D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
20604
2.19k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_double_type_comments"));
20605
2.19k
    }
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
7.93k
{
20642
7.93k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20643
0
        _Pypegen_stack_overflow(p);
20644
0
    }
20645
7.93k
    if (p->error_indicator) {
20646
0
        p->level--;
20647
0
        return NULL;
20648
0
    }
20649
7.93k
    void * _res = NULL;
20650
7.93k
    int _mark = p->mark;
20651
7.93k
    { // ((','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs) | kwargs) ',' ','.(starred_expression !'=')+
20652
7.93k
        if (p->error_indicator) {
20653
0
            p->level--;
20654
0
            return NULL;
20655
0
        }
20656
7.93k
        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
7.93k
        asdl_seq * _gather_106_var;
20658
7.93k
        void *_tmp_104_var;
20659
7.93k
        Token * a;
20660
7.93k
        if (
20661
7.93k
            (_tmp_104_var = _tmp_104_rule(p))  // (','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs) | kwargs
20662
7.93k
            &&
20663
7.93k
            (a = _PyPegen_expect_token(p, 12))  // token=','
20664
7.93k
            &&
20665
7.93k
            (_gather_106_var = _gather_106_rule(p))  // ','.(starred_expression !'=')+
20666
7.93k
        )
20667
586
        {
20668
586
            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
586
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "iterable argument unpacking follows keyword argument unpacking" );
20670
586
            if (_res == NULL && PyErr_Occurred()) {
20671
586
                p->error_indicator = 1;
20672
586
                p->level--;
20673
586
                return NULL;
20674
586
            }
20675
0
            goto done;
20676
586
        }
20677
7.35k
        p->mark = _mark;
20678
7.35k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20679
7.35k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs) | kwargs) ',' ','.(starred_expression !'=')+"));
20680
7.35k
    }
20681
0
    { // expression for_if_clauses ',' [args | expression for_if_clauses]
20682
7.35k
        if (p->error_indicator) {
20683
75
            p->level--;
20684
75
            return NULL;
20685
75
        }
20686
7.27k
        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.27k
        Token * _literal;
20688
7.27k
        void *_opt_var;
20689
7.27k
        UNUSED(_opt_var); // Silence compiler warnings
20690
7.27k
        expr_ty a;
20691
7.27k
        asdl_comprehension_seq* b;
20692
7.27k
        if (
20693
7.27k
            (a = expression_rule(p))  // expression
20694
7.27k
            &&
20695
7.27k
            (b = for_if_clauses_rule(p))  // for_if_clauses
20696
7.27k
            &&
20697
7.27k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20698
7.27k
            &&
20699
7.27k
            (_opt_var = _tmp_107_rule(p), !p->error_indicator)  // [args | expression for_if_clauses]
20700
7.27k
        )
20701
6
        {
20702
6
            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
6
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , _PyPegen_get_last_comprehension_item ( PyPegen_last_item ( b , comprehension_ty ) ) , "Generator expression must be parenthesized" );
20704
6
            if (_res == NULL && PyErr_Occurred()) {
20705
6
                p->error_indicator = 1;
20706
6
                p->level--;
20707
6
                return NULL;
20708
6
            }
20709
0
            goto done;
20710
6
        }
20711
7.27k
        p->mark = _mark;
20712
7.27k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20713
7.27k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]"));
20714
7.27k
    }
20715
0
    { // NAME '=' expression for_if_clauses
20716
7.27k
        if (p->error_indicator) {
20717
47
            p->level--;
20718
47
            return NULL;
20719
47
        }
20720
7.22k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
20721
7.22k
        expr_ty a;
20722
7.22k
        Token * b;
20723
7.22k
        expr_ty expression_var;
20724
7.22k
        asdl_comprehension_seq* for_if_clauses_var;
20725
7.22k
        if (
20726
7.22k
            (a = _PyPegen_name_token(p))  // NAME
20727
7.22k
            &&
20728
7.22k
            (b = _PyPegen_expect_token(p, 22))  // token='='
20729
7.22k
            &&
20730
7.22k
            (expression_var = expression_rule(p))  // expression
20731
7.22k
            &&
20732
7.22k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
20733
7.22k
        )
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.22k
        p->mark = _mark;
20745
7.22k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20746
7.22k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression for_if_clauses"));
20747
7.22k
    }
20748
0
    { // [(args ',')] NAME '=' &(',' | ')')
20749
7.22k
        if (p->error_indicator) {
20750
0
            p->level--;
20751
0
            return NULL;
20752
0
        }
20753
7.22k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "[(args ',')] NAME '=' &(',' | ')')"));
20754
7.22k
        void *_opt_var;
20755
7.22k
        UNUSED(_opt_var); // Silence compiler warnings
20756
7.22k
        expr_ty a;
20757
7.22k
        Token * b;
20758
7.22k
        if (
20759
7.22k
            (_opt_var = _tmp_108_rule(p), !p->error_indicator)  // [(args ',')]
20760
7.22k
            &&
20761
7.22k
            (a = _PyPegen_name_token(p))  // NAME
20762
7.22k
            &&
20763
7.22k
            (b = _PyPegen_expect_token(p, 22))  // token='='
20764
7.22k
            &&
20765
7.22k
            _PyPegen_lookahead(1, _tmp_109_rule, p)
20766
7.22k
        )
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.20k
        p->mark = _mark;
20778
7.20k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20779
7.20k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "[(args ',')] NAME '=' &(',' | ')')"));
20780
7.20k
    }
20781
0
    { // args for_if_clauses
20782
7.20k
        if (p->error_indicator) {
20783
0
            p->level--;
20784
0
            return NULL;
20785
0
        }
20786
7.20k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args for_if_clauses"));
20787
7.20k
        expr_ty a;
20788
7.20k
        asdl_comprehension_seq* b;
20789
7.20k
        if (
20790
7.20k
            (a = args_rule(p))  // args
20791
7.20k
            &&
20792
7.20k
            (b = for_if_clauses_rule(p))  // for_if_clauses
20793
7.20k
        )
20794
301
        {
20795
301
            D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args for_if_clauses"));
20796
301
            _res = _PyPegen_nonparen_genexp_in_call ( p , a , b );
20797
301
            if (_res == NULL && PyErr_Occurred()) {
20798
2
                p->error_indicator = 1;
20799
2
                p->level--;
20800
2
                return NULL;
20801
2
            }
20802
299
            goto done;
20803
301
        }
20804
6.90k
        p->mark = _mark;
20805
6.90k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20806
6.90k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args for_if_clauses"));
20807
6.90k
    }
20808
0
    { // args ',' expression for_if_clauses
20809
6.90k
        if (p->error_indicator) {
20810
77
            p->level--;
20811
77
            return NULL;
20812
77
        }
20813
6.83k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' expression for_if_clauses"));
20814
6.83k
        Token * _literal;
20815
6.83k
        expr_ty a;
20816
6.83k
        expr_ty args_var;
20817
6.83k
        asdl_comprehension_seq* b;
20818
6.83k
        if (
20819
6.83k
            (args_var = args_rule(p))  // args
20820
6.83k
            &&
20821
6.83k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20822
6.83k
            &&
20823
6.83k
            (a = expression_rule(p))  // expression
20824
6.83k
            &&
20825
6.83k
            (b = for_if_clauses_rule(p))  // for_if_clauses
20826
6.83k
        )
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
6.83k
        p->mark = _mark;
20838
6.83k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20839
6.83k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' expression for_if_clauses"));
20840
6.83k
    }
20841
0
    { // args ',' args
20842
6.83k
        if (p->error_indicator) {
20843
77
            p->level--;
20844
77
            return NULL;
20845
77
        }
20846
6.75k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' args"));
20847
6.75k
        Token * _literal;
20848
6.75k
        expr_ty a;
20849
6.75k
        expr_ty args_var;
20850
6.75k
        if (
20851
6.75k
            (a = args_rule(p))  // args
20852
6.75k
            &&
20853
6.75k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20854
6.75k
            &&
20855
6.75k
            (args_var = args_rule(p))  // args
20856
6.75k
        )
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.72k
        p->mark = _mark;
20868
6.72k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20869
6.72k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' args"));
20870
6.72k
    }
20871
0
    _res = NULL;
20872
7.02k
  done:
20873
7.02k
    p->level--;
20874
7.02k
    return _res;
20875
6.72k
}
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
118k
{
20885
118k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20886
0
        _Pypegen_stack_overflow(p);
20887
0
    }
20888
118k
    if (p->error_indicator) {
20889
0
        p->level--;
20890
0
        return NULL;
20891
0
    }
20892
118k
    void * _res = NULL;
20893
118k
    int _mark = p->mark;
20894
118k
    { // ('True' | 'False' | 'None') '='
20895
118k
        if (p->error_indicator) {
20896
0
            p->level--;
20897
0
            return NULL;
20898
0
        }
20899
118k
        D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('True' | 'False' | 'None') '='"));
20900
118k
        Token* a;
20901
118k
        Token * b;
20902
118k
        if (
20903
118k
            (a = (Token*)_tmp_110_rule(p))  // 'True' | 'False' | 'None'
20904
118k
            &&
20905
118k
            (b = _PyPegen_expect_token(p, 22))  // token='='
20906
118k
        )
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
118k
        p->mark = _mark;
20918
118k
        D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
20919
118k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('True' | 'False' | 'None') '='"));
20920
118k
    }
20921
0
    { // NAME '=' expression for_if_clauses
20922
118k
        if (p->error_indicator) {
20923
5
            p->level--;
20924
5
            return NULL;
20925
5
        }
20926
118k
        D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
20927
118k
        expr_ty a;
20928
118k
        Token * b;
20929
118k
        expr_ty expression_var;
20930
118k
        asdl_comprehension_seq* for_if_clauses_var;
20931
118k
        if (
20932
118k
            (a = _PyPegen_name_token(p))  // NAME
20933
118k
            &&
20934
118k
            (b = _PyPegen_expect_token(p, 22))  // token='='
20935
118k
            &&
20936
118k
            (expression_var = expression_rule(p))  // expression
20937
118k
            &&
20938
118k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
20939
118k
        )
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
118k
        p->mark = _mark;
20951
118k
        D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
20952
118k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression for_if_clauses"));
20953
118k
    }
20954
0
    { // !(NAME '=') expression '='
20955
118k
        if (p->error_indicator) {
20956
225
            p->level--;
20957
225
            return NULL;
20958
225
        }
20959
118k
        D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!(NAME '=') expression '='"));
20960
118k
        expr_ty a;
20961
118k
        Token * b;
20962
118k
        if (
20963
118k
            _PyPegen_lookahead(0, _tmp_111_rule, p)
20964
118k
            &&
20965
118k
            (a = expression_rule(p))  // expression
20966
118k
            &&
20967
118k
            (b = _PyPegen_expect_token(p, 22))  // token='='
20968
118k
        )
20969
7
        {
20970
7
            D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!(NAME '=') expression '='"));
20971
7
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "expression cannot contain assignment, perhaps you meant \"==\"?" );
20972
7
            if (_res == NULL && PyErr_Occurred()) {
20973
7
                p->error_indicator = 1;
20974
7
                p->level--;
20975
7
                return NULL;
20976
7
            }
20977
0
            goto done;
20978
7
        }
20979
118k
        p->mark = _mark;
20980
118k
        D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
20981
118k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(NAME '=') expression '='"));
20982
118k
    }
20983
0
    { // '**' expression '=' expression
20984
118k
        if (p->error_indicator) {
20985
508
            p->level--;
20986
508
            return NULL;
20987
508
        }
20988
118k
        D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' expression '=' expression"));
20989
118k
        Token * _literal;
20990
118k
        Token * a;
20991
118k
        expr_ty b;
20992
118k
        expr_ty expression_var;
20993
118k
        if (
20994
118k
            (a = _PyPegen_expect_token(p, 35))  // token='**'
20995
118k
            &&
20996
118k
            (expression_var = expression_rule(p))  // expression
20997
118k
            &&
20998
118k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
20999
118k
            &&
21000
118k
            (b = expression_rule(p))  // expression
21001
118k
        )
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
118k
        p->mark = _mark;
21013
118k
        D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
21014
118k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression '=' expression"));
21015
118k
    }
21016
0
    _res = NULL;
21017
118k
  done:
21018
118k
    p->level--;
21019
118k
    return _res;
21020
118k
}
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
99.8k
{
21029
99.8k
    int _prev_call_invalid = p->call_invalid_rules;
21030
99.8k
    p->call_invalid_rules = 0;
21031
99.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21032
1
        _Pypegen_stack_overflow(p);
21033
1
    }
21034
99.8k
    if (p->error_indicator) {
21035
16
        p->call_invalid_rules = _prev_call_invalid;
21036
16
        p->level--;
21037
16
        return NULL;
21038
16
    }
21039
99.8k
    expr_ty _res = NULL;
21040
99.8k
    int _mark = p->mark;
21041
99.8k
    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
99.8k
    int _start_lineno = p->tokens[_mark]->lineno;
21048
99.8k
    UNUSED(_start_lineno); // Only used by EXTRA macro
21049
99.8k
    int _start_col_offset = p->tokens[_mark]->col_offset;
21050
99.8k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
21051
99.8k
    { // disjunction 'if' disjunction 'else' expression
21052
99.8k
        if (p->error_indicator) {
21053
0
            p->call_invalid_rules = _prev_call_invalid;
21054
0
            p->level--;
21055
0
            return NULL;
21056
0
        }
21057
99.8k
        D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
21058
99.8k
        Token * _keyword;
21059
99.8k
        Token * _keyword_1;
21060
99.8k
        expr_ty a;
21061
99.8k
        expr_ty b;
21062
99.8k
        expr_ty c;
21063
99.8k
        if (
21064
99.8k
            (a = disjunction_rule(p))  // disjunction
21065
99.8k
            &&
21066
99.8k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
21067
99.8k
            &&
21068
99.8k
            (b = disjunction_rule(p))  // disjunction
21069
99.8k
            &&
21070
99.8k
            (_keyword_1 = _PyPegen_expect_token(p, 691))  // token='else'
21071
99.8k
            &&
21072
99.8k
            (c = expression_rule(p))  // expression
21073
99.8k
        )
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
99.7k
        p->mark = _mark;
21096
99.7k
        D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
21097
99.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
21098
99.7k
    }
21099
0
    { // disjunction
21100
99.7k
        if (p->error_indicator) {
21101
375
            p->call_invalid_rules = _prev_call_invalid;
21102
375
            p->level--;
21103
375
            return NULL;
21104
375
        }
21105
99.4k
        D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction"));
21106
99.4k
        expr_ty disjunction_var;
21107
99.4k
        if (
21108
99.4k
            (disjunction_var = disjunction_rule(p))  // disjunction
21109
99.4k
        )
21110
6.92k
        {
21111
6.92k
            D(fprintf(stderr, "%*c+ expression_without_invalid[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction"));
21112
6.92k
            _res = disjunction_var;
21113
6.92k
            goto done;
21114
6.92k
        }
21115
92.4k
        p->mark = _mark;
21116
92.4k
        D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
21117
92.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction"));
21118
92.4k
    }
21119
0
    { // lambdef
21120
92.4k
        if (p->error_indicator) {
21121
0
            p->call_invalid_rules = _prev_call_invalid;
21122
0
            p->level--;
21123
0
            return NULL;
21124
0
        }
21125
92.4k
        D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambdef"));
21126
92.4k
        expr_ty lambdef_var;
21127
92.4k
        if (
21128
92.4k
            (lambdef_var = lambdef_rule(p))  // lambdef
21129
92.4k
        )
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.4k
        p->mark = _mark;
21136
92.4k
        D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
21137
92.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambdef"));
21138
92.4k
    }
21139
0
    _res = NULL;
21140
99.4k
  done:
21141
99.4k
    p->call_invalid_rules = _prev_call_invalid;
21142
99.4k
    p->level--;
21143
99.4k
    return _res;
21144
92.4k
}
21145
21146
// invalid_legacy_expression: NAME !'(' star_expressions
21147
static void *
21148
invalid_legacy_expression_rule(Parser *p)
21149
204k
{
21150
204k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21151
0
        _Pypegen_stack_overflow(p);
21152
0
    }
21153
204k
    if (p->error_indicator) {
21154
0
        p->level--;
21155
0
        return NULL;
21156
0
    }
21157
204k
    void * _res = NULL;
21158
204k
    int _mark = p->mark;
21159
204k
    { // NAME !'(' star_expressions
21160
204k
        if (p->error_indicator) {
21161
0
            p->level--;
21162
0
            return NULL;
21163
0
        }
21164
204k
        D(fprintf(stderr, "%*c> invalid_legacy_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME !'(' star_expressions"));
21165
204k
        expr_ty a;
21166
204k
        expr_ty b;
21167
204k
        if (
21168
204k
            (a = _PyPegen_name_token(p))  // NAME
21169
204k
            &&
21170
204k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 7)  // token='('
21171
204k
            &&
21172
204k
            (b = star_expressions_rule(p))  // star_expressions
21173
204k
        )
21174
3.84k
        {
21175
3.84k
            D(fprintf(stderr, "%*c+ invalid_legacy_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME !'(' star_expressions"));
21176
3.84k
            _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.84k
            if (_res == NULL && PyErr_Occurred()) {
21178
20
                p->error_indicator = 1;
21179
20
                p->level--;
21180
20
                return NULL;
21181
20
            }
21182
3.82k
            goto done;
21183
3.84k
        }
21184
200k
        p->mark = _mark;
21185
200k
        D(fprintf(stderr, "%*c%s invalid_legacy_expression[%d-%d]: %s failed!\n", p->level, ' ',
21186
200k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME !'(' star_expressions"));
21187
200k
    }
21188
0
    _res = NULL;
21189
204k
  done:
21190
204k
    p->level--;
21191
204k
    return _res;
21192
200k
}
21193
21194
// invalid_type_param: '*' NAME ':' expression | '**' NAME ':' expression
21195
static void *
21196
invalid_type_param_rule(Parser *p)
21197
958
{
21198
958
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21199
0
        _Pypegen_stack_overflow(p);
21200
0
    }
21201
958
    if (p->error_indicator) {
21202
0
        p->level--;
21203
0
        return NULL;
21204
0
    }
21205
958
    void * _res = NULL;
21206
958
    int _mark = p->mark;
21207
958
    { // '*' NAME ':' expression
21208
958
        if (p->error_indicator) {
21209
0
            p->level--;
21210
0
            return NULL;
21211
0
        }
21212
958
        D(fprintf(stderr, "%*c> invalid_type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' NAME ':' expression"));
21213
958
        Token * _literal;
21214
958
        expr_ty a;
21215
958
        Token * colon;
21216
958
        expr_ty e;
21217
958
        if (
21218
958
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
21219
958
            &&
21220
958
            (a = _PyPegen_name_token(p))  // NAME
21221
958
            &&
21222
958
            (colon = _PyPegen_expect_token(p, 11))  // token=':'
21223
958
            &&
21224
958
            (e = expression_rule(p))  // expression
21225
958
        )
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
957
        p->mark = _mark;
21237
957
        D(fprintf(stderr, "%*c%s invalid_type_param[%d-%d]: %s failed!\n", p->level, ' ',
21238
957
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' NAME ':' expression"));
21239
957
    }
21240
0
    { // '**' NAME ':' expression
21241
957
        if (p->error_indicator) {
21242
1
            p->level--;
21243
1
            return NULL;
21244
1
        }
21245
956
        D(fprintf(stderr, "%*c> invalid_type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' NAME ':' expression"));
21246
956
        Token * _literal;
21247
956
        expr_ty a;
21248
956
        Token * colon;
21249
956
        expr_ty e;
21250
956
        if (
21251
956
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
21252
956
            &&
21253
956
            (a = _PyPegen_name_token(p))  // NAME
21254
956
            &&
21255
956
            (colon = _PyPegen_expect_token(p, 11))  // token=':'
21256
956
            &&
21257
956
            (e = expression_rule(p))  // expression
21258
956
        )
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
955
        p->mark = _mark;
21270
955
        D(fprintf(stderr, "%*c%s invalid_type_param[%d-%d]: %s failed!\n", p->level, ' ',
21271
955
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' NAME ':' expression"));
21272
955
    }
21273
0
    _res = NULL;
21274
955
  done:
21275
955
    p->level--;
21276
955
    return _res;
21277
955
}
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
233k
{
21290
233k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21291
2
        _Pypegen_stack_overflow(p);
21292
2
    }
21293
233k
    if (p->error_indicator) {
21294
2
        p->level--;
21295
2
        return NULL;
21296
2
    }
21297
233k
    void * _res = NULL;
21298
233k
    int _mark = p->mark;
21299
233k
    { // STRING ((!STRING expression_without_invalid))+ STRING
21300
233k
        if (p->error_indicator) {
21301
0
            p->level--;
21302
0
            return NULL;
21303
0
        }
21304
233k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING ((!STRING expression_without_invalid))+ STRING"));
21305
233k
        asdl_seq * a;
21306
233k
        expr_ty string_var;
21307
233k
        expr_ty string_var_1;
21308
233k
        if (
21309
233k
            (string_var = _PyPegen_string_token(p))  // STRING
21310
233k
            &&
21311
233k
            (a = _loop1_112_rule(p))  // ((!STRING expression_without_invalid))+
21312
233k
            &&
21313
233k
            (string_var_1 = _PyPegen_string_token(p))  // STRING
21314
233k
        )
21315
10
        {
21316
10
            D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING ((!STRING expression_without_invalid))+ STRING"));
21317
10
            _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
10
            if (_res == NULL && PyErr_Occurred()) {
21319
10
                p->error_indicator = 1;
21320
10
                p->level--;
21321
10
                return NULL;
21322
10
            }
21323
0
            goto done;
21324
10
        }
21325
233k
        p->mark = _mark;
21326
233k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21327
233k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING ((!STRING expression_without_invalid))+ STRING"));
21328
233k
    }
21329
0
    { // !(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid
21330
233k
        if (p->error_indicator) {
21331
112
            p->level--;
21332
112
            return NULL;
21333
112
        }
21334
233k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid"));
21335
233k
        expr_ty a;
21336
233k
        expr_ty b;
21337
233k
        if (
21338
233k
            _PyPegen_lookahead(0, _tmp_113_rule, p)
21339
233k
            &&
21340
233k
            (a = disjunction_rule(p))  // disjunction
21341
233k
            &&
21342
233k
            (b = expression_without_invalid_rule(p))  // expression_without_invalid
21343
233k
        )
21344
5.07k
        {
21345
5.07k
            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.07k
            _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.07k
            if (_res == NULL && PyErr_Occurred()) {
21348
100
                p->error_indicator = 1;
21349
100
                p->level--;
21350
100
                return NULL;
21351
100
            }
21352
4.97k
            goto done;
21353
5.07k
        }
21354
228k
        p->mark = _mark;
21355
228k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21356
228k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid"));
21357
228k
    }
21358
0
    { // disjunction 'if' disjunction !('else' | ':')
21359
228k
        if (p->error_indicator) {
21360
25.8k
            p->level--;
21361
25.8k
            return NULL;
21362
25.8k
        }
21363
202k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')"));
21364
202k
        Token * _keyword;
21365
202k
        expr_ty a;
21366
202k
        expr_ty b;
21367
202k
        if (
21368
202k
            (a = disjunction_rule(p))  // disjunction
21369
202k
            &&
21370
202k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
21371
202k
            &&
21372
202k
            (b = disjunction_rule(p))  // disjunction
21373
202k
            &&
21374
202k
            _PyPegen_lookahead(0, _tmp_114_rule, p)
21375
202k
        )
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
202k
        p->mark = _mark;
21387
202k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21388
202k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')"));
21389
202k
    }
21390
0
    { // disjunction 'if' disjunction 'else' !expression
21391
202k
        if (p->error_indicator) {
21392
697
            p->level--;
21393
697
            return NULL;
21394
697
        }
21395
202k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' !expression"));
21396
202k
        Token * _keyword;
21397
202k
        Token * _keyword_1;
21398
202k
        expr_ty a;
21399
202k
        expr_ty b;
21400
202k
        if (
21401
202k
            (a = disjunction_rule(p))  // disjunction
21402
202k
            &&
21403
202k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
21404
202k
            &&
21405
202k
            (b = disjunction_rule(p))  // disjunction
21406
202k
            &&
21407
202k
            (_keyword_1 = _PyPegen_expect_token(p, 691))  // token='else'
21408
202k
            &&
21409
202k
            _PyPegen_lookahead_for_expr(0, expression_rule, p)
21410
202k
        )
21411
224
        {
21412
224
            D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' !expression"));
21413
224
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "expected expression after 'else', but statement is given" );
21414
224
            if (_res == NULL && PyErr_Occurred()) {
21415
224
                p->error_indicator = 1;
21416
224
                p->level--;
21417
224
                return NULL;
21418
224
            }
21419
0
            goto done;
21420
224
        }
21421
201k
        p->mark = _mark;
21422
201k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21423
201k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' !expression"));
21424
201k
    }
21425
0
    { // (pass_stmt | break_stmt | continue_stmt) 'if' disjunction 'else' simple_stmt
21426
201k
        if (p->error_indicator) {
21427
0
            p->level--;
21428
0
            return NULL;
21429
0
        }
21430
201k
        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
201k
        Token * _keyword;
21432
201k
        Token * _keyword_1;
21433
201k
        stmt_ty a;
21434
201k
        expr_ty b;
21435
201k
        stmt_ty c;
21436
201k
        if (
21437
201k
            (a = (stmt_ty)_tmp_115_rule(p))  // pass_stmt | break_stmt | continue_stmt
21438
201k
            &&
21439
201k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
21440
201k
            &&
21441
201k
            (b = disjunction_rule(p))  // disjunction
21442
201k
            &&
21443
201k
            (_keyword_1 = _PyPegen_expect_token(p, 691))  // token='else'
21444
201k
            &&
21445
201k
            (c = simple_stmt_rule(p))  // simple_stmt
21446
201k
        )
21447
7
        {
21448
7
            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
7
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expected expression before 'if', but statement is given" );
21450
7
            if (_res == NULL && PyErr_Occurred()) {
21451
7
                p->error_indicator = 1;
21452
7
                p->level--;
21453
7
                return NULL;
21454
7
            }
21455
0
            goto done;
21456
7
        }
21457
201k
        p->mark = _mark;
21458
201k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21459
201k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(pass_stmt | break_stmt | continue_stmt) 'if' disjunction 'else' simple_stmt"));
21460
201k
    }
21461
0
    { // 'lambda' lambda_params? ':' &FSTRING_MIDDLE
21462
201k
        if (p->error_indicator) {
21463
1.40k
            p->level--;
21464
1.40k
            return NULL;
21465
1.40k
        }
21466
200k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' &FSTRING_MIDDLE"));
21467
200k
        void *_opt_var;
21468
200k
        UNUSED(_opt_var); // Silence compiler warnings
21469
200k
        Token * a;
21470
200k
        Token * b;
21471
200k
        if (
21472
200k
            (a = _PyPegen_expect_token(p, 622))  // token='lambda'
21473
200k
            &&
21474
200k
            (_opt_var = lambda_params_rule(p), !p->error_indicator)  // lambda_params?
21475
200k
            &&
21476
200k
            (b = _PyPegen_expect_token(p, 11))  // token=':'
21477
200k
            &&
21478
200k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, FSTRING_MIDDLE)  // token=FSTRING_MIDDLE
21479
200k
        )
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
200k
        p->mark = _mark;
21491
200k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21492
200k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'lambda' lambda_params? ':' &FSTRING_MIDDLE"));
21493
200k
    }
21494
0
    { // 'lambda' lambda_params? ':' &TSTRING_MIDDLE
21495
200k
        if (p->error_indicator) {
21496
742
            p->level--;
21497
742
            return NULL;
21498
742
        }
21499
199k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' &TSTRING_MIDDLE"));
21500
199k
        void *_opt_var;
21501
199k
        UNUSED(_opt_var); // Silence compiler warnings
21502
199k
        Token * a;
21503
199k
        Token * b;
21504
199k
        if (
21505
199k
            (a = _PyPegen_expect_token(p, 622))  // token='lambda'
21506
199k
            &&
21507
199k
            (_opt_var = lambda_params_rule(p), !p->error_indicator)  // lambda_params?
21508
199k
            &&
21509
199k
            (b = _PyPegen_expect_token(p, 11))  // token=':'
21510
199k
            &&
21511
199k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, TSTRING_MIDDLE)  // token=TSTRING_MIDDLE
21512
199k
        )
21513
8
        {
21514
8
            D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' &TSTRING_MIDDLE"));
21515
8
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "t-string: lambda expressions are not allowed without parentheses" );
21516
8
            if (_res == NULL && PyErr_Occurred()) {
21517
8
                p->error_indicator = 1;
21518
8
                p->level--;
21519
8
                return NULL;
21520
8
            }
21521
0
            goto done;
21522
8
        }
21523
199k
        p->mark = _mark;
21524
199k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21525
199k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'lambda' lambda_params? ':' &TSTRING_MIDDLE"));
21526
199k
    }
21527
0
    _res = NULL;
21528
204k
  done:
21529
204k
    p->level--;
21530
204k
    return _res;
21531
199k
}
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
262k
{
21540
262k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21541
0
        _Pypegen_stack_overflow(p);
21542
0
    }
21543
262k
    if (p->error_indicator) {
21544
0
        p->level--;
21545
0
        return NULL;
21546
0
    }
21547
262k
    void * _res = NULL;
21548
262k
    if (_PyPegen_is_memoized(p, invalid_named_expression_type, &_res)) {
21549
159k
        p->level--;
21550
159k
        return _res;
21551
159k
    }
21552
103k
    int _mark = p->mark;
21553
103k
    { // expression ':=' expression
21554
103k
        if (p->error_indicator) {
21555
0
            p->level--;
21556
0
            return NULL;
21557
0
        }
21558
103k
        D(fprintf(stderr, "%*c> invalid_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':=' expression"));
21559
103k
        Token * _literal;
21560
103k
        expr_ty a;
21561
103k
        expr_ty expression_var;
21562
103k
        if (
21563
103k
            (a = expression_rule(p))  // expression
21564
103k
            &&
21565
103k
            (_literal = _PyPegen_expect_token(p, 53))  // token=':='
21566
103k
            &&
21567
103k
            (expression_var = expression_rule(p))  // expression
21568
103k
        )
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
103k
        p->mark = _mark;
21580
103k
        D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
21581
103k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':=' expression"));
21582
103k
    }
21583
0
    { // NAME '=' bitwise_or !('=' | ':=')
21584
103k
        if (p->error_indicator) {
21585
14.2k
            p->level--;
21586
14.2k
            return NULL;
21587
14.2k
        }
21588
89.3k
        D(fprintf(stderr, "%*c> invalid_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
21589
89.3k
        Token * _literal;
21590
89.3k
        expr_ty a;
21591
89.3k
        expr_ty b;
21592
89.3k
        if (
21593
89.3k
            (a = _PyPegen_name_token(p))  // NAME
21594
89.3k
            &&
21595
89.3k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
21596
89.3k
            &&
21597
89.3k
            (b = bitwise_or_rule(p))  // bitwise_or
21598
89.3k
            &&
21599
89.3k
            _PyPegen_lookahead(0, _tmp_116_rule, p)
21600
89.3k
        )
21601
11
        {
21602
11
            D(fprintf(stderr, "%*c+ invalid_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
21603
11
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "invalid syntax. Maybe you meant '==' or ':=' instead of '='?" );
21604
11
            if (_res == NULL && PyErr_Occurred()) {
21605
11
                p->error_indicator = 1;
21606
11
                p->level--;
21607
11
                return NULL;
21608
11
            }
21609
0
            goto done;
21610
11
        }
21611
89.3k
        p->mark = _mark;
21612
89.3k
        D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
21613
89.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
21614
89.3k
    }
21615
0
    { // !(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')
21616
89.3k
        if (p->error_indicator) {
21617
303
            p->level--;
21618
303
            return NULL;
21619
303
        }
21620
88.9k
        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
88.9k
        expr_ty a;
21622
88.9k
        Token * b;
21623
88.9k
        expr_ty bitwise_or_var;
21624
88.9k
        if (
21625
88.9k
            _PyPegen_lookahead(0, _tmp_117_rule, p)
21626
88.9k
            &&
21627
88.9k
            (a = bitwise_or_rule(p))  // bitwise_or
21628
88.9k
            &&
21629
88.9k
            (b = _PyPegen_expect_token(p, 22))  // token='='
21630
88.9k
            &&
21631
88.9k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
21632
88.9k
            &&
21633
88.9k
            _PyPegen_lookahead(0, _tmp_116_rule, p)
21634
88.9k
        )
21635
17
        {
21636
17
            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
17
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot assign to %s here. Maybe you meant '==' instead of '='?" , _PyPegen_get_expr_name ( a ) );
21638
17
            if (_res == NULL && PyErr_Occurred()) {
21639
17
                p->error_indicator = 1;
21640
17
                p->level--;
21641
17
                return NULL;
21642
17
            }
21643
0
            goto done;
21644
17
        }
21645
88.9k
        p->mark = _mark;
21646
88.9k
        D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
21647
88.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')"));
21648
88.9k
    }
21649
0
    _res = NULL;
21650
88.9k
  done:
21651
88.9k
    _PyPegen_insert_memo(p, _mark, invalid_named_expression_type, _res);
21652
88.9k
    p->level--;
21653
88.9k
    return _res;
21654
88.9k
}
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.6k
{
21666
40.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21667
0
        _Pypegen_stack_overflow(p);
21668
0
    }
21669
40.6k
    if (p->error_indicator) {
21670
0
        p->level--;
21671
0
        return NULL;
21672
0
    }
21673
40.6k
    void * _res = NULL;
21674
40.6k
    int _mark = p->mark;
21675
40.6k
    { // invalid_ann_assign_target ':' expression
21676
40.6k
        if (p->error_indicator) {
21677
0
            p->level--;
21678
0
            return NULL;
21679
0
        }
21680
40.6k
        D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_ann_assign_target ':' expression"));
21681
40.6k
        Token * _literal;
21682
40.6k
        expr_ty a;
21683
40.6k
        expr_ty expression_var;
21684
40.6k
        if (
21685
40.6k
            (a = invalid_ann_assign_target_rule(p))  // invalid_ann_assign_target
21686
40.6k
            &&
21687
40.6k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21688
40.6k
            &&
21689
40.6k
            (expression_var = expression_rule(p))  // expression
21690
40.6k
        )
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.6k
        p->mark = _mark;
21702
40.6k
        D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
21703
40.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_ann_assign_target ':' expression"));
21704
40.6k
    }
21705
0
    { // star_named_expression ',' star_named_expressions* ':' expression
21706
40.6k
        if (p->error_indicator) {
21707
74
            p->level--;
21708
74
            return NULL;
21709
74
        }
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
8
        {
21728
8
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression"));
21729
8
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
21730
8
            if (_res == NULL && PyErr_Occurred()) {
21731
8
                p->error_indicator = 1;
21732
8
                p->level--;
21733
8
                return NULL;
21734
8
            }
21735
0
            goto done;
21736
8
        }
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
824
            p->level--;
21744
824
            return NULL;
21745
824
        }
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
30
        {
21758
30
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
21759
30
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "illegal target for annotation" );
21760
30
            if (_res == NULL && PyErr_Occurred()) {
21761
30
                p->error_indicator = 1;
21762
30
                p->level--;
21763
30
                return NULL;
21764
30
            }
21765
0
            goto done;
21766
30
        }
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
181
            p->level--;
21774
181
            return NULL;
21775
181
        }
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
125
        {
21788
125
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* star_expressions '='"));
21789
125
            _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( STAR_TARGETS , a );
21790
125
            if (_res == NULL && PyErr_Occurred()) {
21791
125
                p->error_indicator = 1;
21792
125
                p->level--;
21793
125
                return NULL;
21794
125
            }
21795
0
            goto done;
21796
125
        }
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
10
        {
21848
10
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions augassign annotated_rhs"));
21849
10
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "'%s' is an illegal expression for augmented assignment" , _PyPegen_get_expr_name ( a ) );
21850
10
            if (_res == NULL && PyErr_Occurred()) {
21851
10
                p->error_indicator = 1;
21852
10
                p->level--;
21853
10
                return NULL;
21854
10
            }
21855
0
            goto done;
21856
10
        }
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
905
        {
21910
905
            D(fprintf(stderr, "%*c+ invalid_ann_assign_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
21911
905
            _res = tuple_var;
21912
905
            goto done;
21913
905
        }
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
579
{
21958
579
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21959
0
        _Pypegen_stack_overflow(p);
21960
0
    }
21961
579
    if (p->error_indicator) {
21962
0
        p->level--;
21963
0
        return NULL;
21964
0
    }
21965
579
    void * _res = NULL;
21966
579
    int _mark = p->mark;
21967
579
    { // 'raise' 'from'
21968
579
        if (p->error_indicator) {
21969
0
            p->level--;
21970
0
            return NULL;
21971
0
        }
21972
579
        D(fprintf(stderr, "%*c> invalid_raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' 'from'"));
21973
579
        Token * a;
21974
579
        Token * b;
21975
579
        if (
21976
579
            (a = _PyPegen_expect_token(p, 628))  // token='raise'
21977
579
            &&
21978
579
            (b = _PyPegen_expect_token(p, 638))  // token='from'
21979
579
        )
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
577
        p->mark = _mark;
21991
577
        D(fprintf(stderr, "%*c%s invalid_raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
21992
577
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' 'from'"));
21993
577
    }
21994
0
    { // 'raise' expression 'from'
21995
577
        if (p->error_indicator) {
21996
0
            p->level--;
21997
0
            return NULL;
21998
0
        }
21999
577
        D(fprintf(stderr, "%*c> invalid_raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' expression 'from'"));
22000
577
        Token * _keyword;
22001
577
        Token * a;
22002
577
        expr_ty expression_var;
22003
577
        if (
22004
577
            (_keyword = _PyPegen_expect_token(p, 628))  // token='raise'
22005
577
            &&
22006
577
            (expression_var = expression_rule(p))  // expression
22007
577
            &&
22008
577
            (a = _PyPegen_expect_token(p, 638))  // token='from'
22009
577
        )
22010
2
        {
22011
2
            D(fprintf(stderr, "%*c+ invalid_raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' expression 'from'"));
22012
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "did you forget an expression after 'from'?" );
22013
2
            if (_res == NULL && PyErr_Occurred()) {
22014
2
                p->error_indicator = 1;
22015
2
                p->level--;
22016
2
                return NULL;
22017
2
            }
22018
0
            goto done;
22019
2
        }
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
301
{
22034
301
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22035
0
        _Pypegen_stack_overflow(p);
22036
0
    }
22037
301
    if (p->error_indicator) {
22038
0
        p->level--;
22039
0
        return NULL;
22040
0
    }
22041
301
    void * _res = NULL;
22042
301
    int _mark = p->mark;
22043
301
    { // 'del' star_expressions
22044
301
        if (p->error_indicator) {
22045
0
            p->level--;
22046
0
            return NULL;
22047
0
        }
22048
301
        D(fprintf(stderr, "%*c> invalid_del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'del' star_expressions"));
22049
301
        Token * _keyword;
22050
301
        expr_ty a;
22051
301
        if (
22052
301
            (_keyword = _PyPegen_expect_token(p, 630))  // token='del'
22053
301
            &&
22054
301
            (a = star_expressions_rule(p))  // star_expressions
22055
301
        )
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
14
                p->error_indicator = 1;
22061
14
                p->level--;
22062
14
                return NULL;
22063
14
            }
22064
131
            goto done;
22065
145
        }
22066
156
        p->mark = _mark;
22067
156
        D(fprintf(stderr, "%*c%s invalid_del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22068
156
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'del' star_expressions"));
22069
156
    }
22070
0
    _res = NULL;
22071
287
  done:
22072
287
    p->level--;
22073
287
    return _res;
22074
156
}
22075
22076
// invalid_block: NEWLINE !INDENT
22077
static void *
22078
invalid_block_rule(Parser *p)
22079
2.22k
{
22080
2.22k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22081
0
        _Pypegen_stack_overflow(p);
22082
0
    }
22083
2.22k
    if (p->error_indicator) {
22084
0
        p->level--;
22085
0
        return NULL;
22086
0
    }
22087
2.22k
    void * _res = NULL;
22088
2.22k
    int _mark = p->mark;
22089
2.22k
    { // NEWLINE !INDENT
22090
2.22k
        if (p->error_indicator) {
22091
0
            p->level--;
22092
0
            return NULL;
22093
0
        }
22094
2.22k
        D(fprintf(stderr, "%*c> invalid_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE !INDENT"));
22095
2.22k
        Token * newline_var;
22096
2.22k
        if (
22097
2.22k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
22098
2.22k
            &&
22099
2.22k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
22100
2.22k
        )
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.21k
        p->mark = _mark;
22112
2.21k
        D(fprintf(stderr, "%*c%s invalid_block[%d-%d]: %s failed!\n", p->level, ' ',
22113
2.21k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE !INDENT"));
22114
2.21k
    }
22115
0
    _res = NULL;
22116
2.21k
  done:
22117
2.21k
    p->level--;
22118
2.21k
    return _res;
22119
2.21k
}
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
231k
{
22128
231k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22129
1
        _Pypegen_stack_overflow(p);
22130
1
    }
22131
231k
    if (p->error_indicator) {
22132
1
        p->level--;
22133
1
        return NULL;
22134
1
    }
22135
231k
    void * _res = NULL;
22136
231k
    int _mark = p->mark;
22137
231k
    { // ('[' | '(' | '{') starred_expression for_if_clauses
22138
231k
        if (p->error_indicator) {
22139
0
            p->level--;
22140
0
            return NULL;
22141
0
        }
22142
231k
        D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
22143
231k
        void *_tmp_120_var;
22144
231k
        expr_ty a;
22145
231k
        asdl_comprehension_seq* for_if_clauses_var;
22146
231k
        if (
22147
231k
            (_tmp_120_var = _tmp_120_rule(p))  // '[' | '(' | '{'
22148
231k
            &&
22149
231k
            (a = starred_expression_rule(p))  // starred_expression
22150
231k
            &&
22151
231k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
22152
231k
        )
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
231k
        p->mark = _mark;
22164
231k
        D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
22165
231k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
22166
231k
    }
22167
0
    { // ('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses
22168
231k
        if (p->error_indicator) {
22169
697
            p->level--;
22170
697
            return NULL;
22171
697
        }
22172
230k
        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
230k
        Token * _literal;
22174
230k
        void *_tmp_121_var;
22175
230k
        expr_ty a;
22176
230k
        asdl_expr_seq* b;
22177
230k
        asdl_comprehension_seq* for_if_clauses_var;
22178
230k
        if (
22179
230k
            (_tmp_121_var = _tmp_121_rule(p))  // '[' | '{'
22180
230k
            &&
22181
230k
            (a = star_named_expression_rule(p))  // star_named_expression
22182
230k
            &&
22183
230k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
22184
230k
            &&
22185
230k
            (b = star_named_expressions_rule(p))  // star_named_expressions
22186
230k
            &&
22187
230k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
22188
230k
        )
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
230k
        p->mark = _mark;
22200
230k
        D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
22201
230k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses"));
22202
230k
    }
22203
0
    { // ('[' | '{') star_named_expression ',' for_if_clauses
22204
230k
        if (p->error_indicator) {
22205
1.56k
            p->level--;
22206
1.56k
            return NULL;
22207
1.56k
        }
22208
229k
        D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses"));
22209
229k
        void *_tmp_121_var;
22210
229k
        expr_ty a;
22211
229k
        Token * b;
22212
229k
        asdl_comprehension_seq* for_if_clauses_var;
22213
229k
        if (
22214
229k
            (_tmp_121_var = _tmp_121_rule(p))  // '[' | '{'
22215
229k
            &&
22216
229k
            (a = star_named_expression_rule(p))  // star_named_expression
22217
229k
            &&
22218
229k
            (b = _PyPegen_expect_token(p, 12))  // token=','
22219
229k
            &&
22220
229k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
22221
229k
        )
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
229k
        p->mark = _mark;
22233
229k
        D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
22234
229k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses"));
22235
229k
    }
22236
0
    _res = NULL;
22237
229k
  done:
22238
229k
    p->level--;
22239
229k
    return _res;
22240
229k
}
22241
22242
// invalid_dict_comprehension: '{' '**' bitwise_or for_if_clauses '}'
22243
static void *
22244
invalid_dict_comprehension_rule(Parser *p)
22245
3.03k
{
22246
3.03k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22247
0
        _Pypegen_stack_overflow(p);
22248
0
    }
22249
3.03k
    if (p->error_indicator) {
22250
0
        p->level--;
22251
0
        return NULL;
22252
0
    }
22253
3.03k
    void * _res = NULL;
22254
3.03k
    int _mark = p->mark;
22255
3.03k
    { // '{' '**' bitwise_or for_if_clauses '}'
22256
3.03k
        if (p->error_indicator) {
22257
0
            p->level--;
22258
0
            return NULL;
22259
0
        }
22260
3.03k
        D(fprintf(stderr, "%*c> invalid_dict_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
22261
3.03k
        Token * _literal;
22262
3.03k
        Token * _literal_1;
22263
3.03k
        Token * a;
22264
3.03k
        expr_ty bitwise_or_var;
22265
3.03k
        asdl_comprehension_seq* for_if_clauses_var;
22266
3.03k
        if (
22267
3.03k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
22268
3.03k
            &&
22269
3.03k
            (a = _PyPegen_expect_token(p, 35))  // token='**'
22270
3.03k
            &&
22271
3.03k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
22272
3.03k
            &&
22273
3.03k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
22274
3.03k
            &&
22275
3.03k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
22276
3.03k
        )
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.03k
        p->mark = _mark;
22288
3.03k
        D(fprintf(stderr, "%*c%s invalid_dict_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
22289
3.03k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
22290
3.03k
    }
22291
0
    _res = NULL;
22292
3.03k
  done:
22293
3.03k
    p->level--;
22294
3.03k
    return _res;
22295
3.03k
}
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.94k
{
22307
4.94k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22308
0
        _Pypegen_stack_overflow(p);
22309
0
    }
22310
4.94k
    if (p->error_indicator) {
22311
0
        p->level--;
22312
0
        return NULL;
22313
0
    }
22314
4.94k
    void * _res = NULL;
22315
4.94k
    int _mark = p->mark;
22316
4.94k
    { // "/" ','
22317
4.94k
        if (p->error_indicator) {
22318
0
            p->level--;
22319
0
            return NULL;
22320
0
        }
22321
4.94k
        D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"/\" ','"));
22322
4.94k
        Token * _literal;
22323
4.94k
        Token * a;
22324
4.94k
        if (
22325
4.94k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
22326
4.94k
            &&
22327
4.94k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
22328
4.94k
        )
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.94k
        p->mark = _mark;
22340
4.94k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22341
4.94k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"/\" ','"));
22342
4.94k
    }
22343
0
    { // (slash_no_default | slash_with_default) param_maybe_default* '/'
22344
4.94k
        if (p->error_indicator) {
22345
1
            p->level--;
22346
1
            return NULL;
22347
1
        }
22348
4.94k
        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.94k
        asdl_seq * _loop0_31_var;
22350
4.94k
        void *_tmp_122_var;
22351
4.94k
        Token * a;
22352
4.94k
        if (
22353
4.94k
            (_tmp_122_var = _tmp_122_rule(p))  // slash_no_default | slash_with_default
22354
4.94k
            &&
22355
4.94k
            (_loop0_31_var = _loop0_31_rule(p))  // param_maybe_default*
22356
4.94k
            &&
22357
4.94k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
22358
4.94k
        )
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.93k
        p->mark = _mark;
22370
4.93k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22371
4.93k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(slash_no_default | slash_with_default) param_maybe_default* '/'"));
22372
4.93k
    }
22373
0
    { // slash_no_default? param_no_default* invalid_parameters_helper param_no_default
22374
4.93k
        if (p->error_indicator) {
22375
7
            p->level--;
22376
7
            return NULL;
22377
7
        }
22378
4.93k
        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.93k
        asdl_seq * _loop0_27_var;
22380
4.93k
        void *_opt_var;
22381
4.93k
        UNUSED(_opt_var); // Silence compiler warnings
22382
4.93k
        arg_ty a;
22383
4.93k
        void *invalid_parameters_helper_var;
22384
4.93k
        if (
22385
4.93k
            (_opt_var = slash_no_default_rule(p), !p->error_indicator)  // slash_no_default?
22386
4.93k
            &&
22387
4.93k
            (_loop0_27_var = _loop0_27_rule(p))  // param_no_default*
22388
4.93k
            &&
22389
4.93k
            (invalid_parameters_helper_var = invalid_parameters_helper_rule(p))  // invalid_parameters_helper
22390
4.93k
            &&
22391
4.93k
            (a = param_no_default_rule(p))  // param_no_default
22392
4.93k
        )
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.92k
        p->mark = _mark;
22404
4.92k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22405
4.92k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_no_default? param_no_default* invalid_parameters_helper param_no_default"));
22406
4.92k
    }
22407
0
    { // param_no_default* '(' param_no_default+ ','? ')'
22408
4.92k
        if (p->error_indicator) {
22409
1
            p->level--;
22410
1
            return NULL;
22411
1
        }
22412
4.92k
        D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* '(' param_no_default+ ','? ')'"));
22413
4.92k
        asdl_seq * _loop0_27_var;
22414
4.92k
        asdl_seq * _loop1_29_var;
22415
4.92k
        void *_opt_var;
22416
4.92k
        UNUSED(_opt_var); // Silence compiler warnings
22417
4.92k
        Token * a;
22418
4.92k
        Token * b;
22419
4.92k
        if (
22420
4.92k
            (_loop0_27_var = _loop0_27_rule(p))  // param_no_default*
22421
4.92k
            &&
22422
4.92k
            (a = _PyPegen_expect_token(p, 7))  // token='('
22423
4.92k
            &&
22424
4.92k
            (_loop1_29_var = _loop1_29_rule(p))  // param_no_default+
22425
4.92k
            &&
22426
4.92k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
22427
4.92k
            &&
22428
4.92k
            (b = _PyPegen_expect_token(p, 8))  // token=')'
22429
4.92k
        )
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.92k
        p->mark = _mark;
22441
4.92k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22442
4.92k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* '(' param_no_default+ ','? ')'"));
22443
4.92k
    }
22444
0
    { // [(slash_no_default | slash_with_default)] param_maybe_default* '*' (',' | param_no_default) param_maybe_default* '/'
22445
4.92k
        if (p->error_indicator) {
22446
4
            p->level--;
22447
4
            return NULL;
22448
4
        }
22449
4.92k
        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.92k
        Token * _literal;
22451
4.92k
        asdl_seq * _loop0_31_var;
22452
4.92k
        asdl_seq * _loop0_31_var_1;
22453
4.92k
        void *_opt_var;
22454
4.92k
        UNUSED(_opt_var); // Silence compiler warnings
22455
4.92k
        void *_tmp_123_var;
22456
4.92k
        Token * a;
22457
4.92k
        if (
22458
4.92k
            (_opt_var = _tmp_122_rule(p), !p->error_indicator)  // [(slash_no_default | slash_with_default)]
22459
4.92k
            &&
22460
4.92k
            (_loop0_31_var = _loop0_31_rule(p))  // param_maybe_default*
22461
4.92k
            &&
22462
4.92k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
22463
4.92k
            &&
22464
4.92k
            (_tmp_123_var = _tmp_123_rule(p))  // ',' | param_no_default
22465
4.92k
            &&
22466
4.92k
            (_loop0_31_var_1 = _loop0_31_rule(p))  // param_maybe_default*
22467
4.92k
            &&
22468
4.92k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
22469
4.92k
        )
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.92k
        p->mark = _mark;
22481
4.92k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22482
4.92k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "[(slash_no_default | slash_with_default)] param_maybe_default* '*' (',' | param_no_default) param_maybe_default* '/'"));
22483
4.92k
    }
22484
0
    { // param_maybe_default+ '/' '*'
22485
4.92k
        if (p->error_indicator) {
22486
4
            p->level--;
22487
4
            return NULL;
22488
4
        }
22489
4.91k
        D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default+ '/' '*'"));
22490
4.91k
        Token * _literal;
22491
4.91k
        asdl_seq * _loop1_32_var;
22492
4.91k
        Token * a;
22493
4.91k
        if (
22494
4.91k
            (_loop1_32_var = _loop1_32_rule(p))  // param_maybe_default+
22495
4.91k
            &&
22496
4.91k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
22497
4.91k
            &&
22498
4.91k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
22499
4.91k
        )
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.91k
        p->mark = _mark;
22511
4.91k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22512
4.91k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default+ '/' '*'"));
22513
4.91k
    }
22514
0
    _res = NULL;
22515
4.91k
  done:
22516
4.91k
    p->level--;
22517
4.91k
    return _res;
22518
4.91k
}
22519
22520
// invalid_default: '=' &(')' | ',')
22521
static void *
22522
invalid_default_rule(Parser *p)
22523
60.5k
{
22524
60.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22525
0
        _Pypegen_stack_overflow(p);
22526
0
    }
22527
60.5k
    if (p->error_indicator) {
22528
0
        p->level--;
22529
0
        return NULL;
22530
0
    }
22531
60.5k
    void * _res = NULL;
22532
60.5k
    int _mark = p->mark;
22533
60.5k
    { // '=' &(')' | ',')
22534
60.5k
        if (p->error_indicator) {
22535
0
            p->level--;
22536
0
            return NULL;
22537
0
        }
22538
60.5k
        D(fprintf(stderr, "%*c> invalid_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' &(')' | ',')"));
22539
60.5k
        Token * a;
22540
60.5k
        if (
22541
60.5k
            (a = _PyPegen_expect_token(p, 22))  // token='='
22542
60.5k
            &&
22543
60.5k
            _PyPegen_lookahead(1, _tmp_124_rule, p)
22544
60.5k
        )
22545
16
        {
22546
16
            D(fprintf(stderr, "%*c+ invalid_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' &(')' | ',')"));
22547
16
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expected default value expression" );
22548
16
            if (_res == NULL && PyErr_Occurred()) {
22549
16
                p->error_indicator = 1;
22550
16
                p->level--;
22551
16
                return NULL;
22552
16
            }
22553
0
            goto done;
22554
16
        }
22555
60.5k
        p->mark = _mark;
22556
60.5k
        D(fprintf(stderr, "%*c%s invalid_default[%d-%d]: %s failed!\n", p->level, ' ',
22557
60.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' &(')' | ',')"));
22558
60.5k
    }
22559
0
    _res = NULL;
22560
60.5k
  done:
22561
60.5k
    p->level--;
22562
60.5k
    return _res;
22563
60.5k
}
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.91k
{
22573
4.91k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22574
0
        _Pypegen_stack_overflow(p);
22575
0
    }
22576
4.91k
    if (p->error_indicator) {
22577
0
        p->level--;
22578
0
        return NULL;
22579
0
    }
22580
4.91k
    void * _res = NULL;
22581
4.91k
    int _mark = p->mark;
22582
4.91k
    { // '*' (')' | ',' (')' | '**'))
22583
4.91k
        if (p->error_indicator) {
22584
0
            p->level--;
22585
0
            return NULL;
22586
0
        }
22587
4.91k
        D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
22588
4.91k
        void *_tmp_125_var;
22589
4.91k
        Token * a;
22590
4.91k
        if (
22591
4.91k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
22592
4.91k
            &&
22593
4.91k
            (_tmp_125_var = _tmp_125_rule(p))  // ')' | ',' (')' | '**')
22594
4.91k
        )
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.91k
        p->mark = _mark;
22606
4.91k
        D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
22607
4.91k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
22608
4.91k
    }
22609
0
    { // '*' ',' TYPE_COMMENT
22610
4.91k
        if (p->error_indicator) {
22611
0
            p->level--;
22612
0
            return NULL;
22613
0
        }
22614
4.91k
        D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' TYPE_COMMENT"));
22615
4.91k
        Token * _literal;
22616
4.91k
        Token * _literal_1;
22617
4.91k
        Token * type_comment_var;
22618
4.91k
        if (
22619
4.91k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
22620
4.91k
            &&
22621
4.91k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
22622
4.91k
            &&
22623
4.91k
            (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
22624
4.91k
        )
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.91k
        p->mark = _mark;
22636
4.91k
        D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
22637
4.91k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' TYPE_COMMENT"));
22638
4.91k
    }
22639
0
    { // '*' param '='
22640
4.91k
        if (p->error_indicator) {
22641
0
            p->level--;
22642
0
            return NULL;
22643
0
        }
22644
4.91k
        D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' param '='"));
22645
4.91k
        Token * _literal;
22646
4.91k
        Token * a;
22647
4.91k
        arg_ty param_var;
22648
4.91k
        if (
22649
4.91k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
22650
4.91k
            &&
22651
4.91k
            (param_var = param_rule(p))  // param
22652
4.91k
            &&
22653
4.91k
            (a = _PyPegen_expect_token(p, 22))  // token='='
22654
4.91k
        )
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.91k
        p->mark = _mark;
22666
4.91k
        D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
22667
4.91k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' param '='"));
22668
4.91k
    }
22669
0
    { // '*' (param_no_default | ',') param_maybe_default* '*' (param_no_default | ',')
22670
4.91k
        if (p->error_indicator) {
22671
0
            p->level--;
22672
0
            return NULL;
22673
0
        }
22674
4.91k
        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.91k
        Token * _literal;
22676
4.91k
        asdl_seq * _loop0_31_var;
22677
4.91k
        void *_tmp_126_var;
22678
4.91k
        void *_tmp_126_var_1;
22679
4.91k
        Token * a;
22680
4.91k
        if (
22681
4.91k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
22682
4.91k
            &&
22683
4.91k
            (_tmp_126_var = _tmp_126_rule(p))  // param_no_default | ','
22684
4.91k
            &&
22685
4.91k
            (_loop0_31_var = _loop0_31_rule(p))  // param_maybe_default*
22686
4.91k
            &&
22687
4.91k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
22688
4.91k
            &&
22689
4.91k
            (_tmp_126_var_1 = _tmp_126_rule(p))  // param_no_default | ','
22690
4.91k
        )
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.90k
        p->mark = _mark;
22702
4.90k
        D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
22703
4.90k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (param_no_default | ',') param_maybe_default* '*' (param_no_default | ',')"));
22704
4.90k
    }
22705
0
    _res = NULL;
22706
4.90k
  done:
22707
4.90k
    p->level--;
22708
4.90k
    return _res;
22709
4.90k
}
22710
22711
// invalid_kwds: '**' param '=' | '**' param ',' param | '**' param ',' ('*' | '**' | '/')
22712
static void *
22713
invalid_kwds_rule(Parser *p)
22714
4.90k
{
22715
4.90k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22716
0
        _Pypegen_stack_overflow(p);
22717
0
    }
22718
4.90k
    if (p->error_indicator) {
22719
0
        p->level--;
22720
0
        return NULL;
22721
0
    }
22722
4.90k
    void * _res = NULL;
22723
4.90k
    int _mark = p->mark;
22724
4.90k
    { // '**' param '='
22725
4.90k
        if (p->error_indicator) {
22726
0
            p->level--;
22727
0
            return NULL;
22728
0
        }
22729
4.90k
        D(fprintf(stderr, "%*c> invalid_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param '='"));
22730
4.90k
        Token * _literal;
22731
4.90k
        Token * a;
22732
4.90k
        arg_ty param_var;
22733
4.90k
        if (
22734
4.90k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
22735
4.90k
            &&
22736
4.90k
            (param_var = param_rule(p))  // param
22737
4.90k
            &&
22738
4.90k
            (a = _PyPegen_expect_token(p, 22))  // token='='
22739
4.90k
        )
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.90k
        p->mark = _mark;
22751
4.90k
        D(fprintf(stderr, "%*c%s invalid_kwds[%d-%d]: %s failed!\n", p->level, ' ',
22752
4.90k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param '='"));
22753
4.90k
    }
22754
0
    { // '**' param ',' param
22755
4.90k
        if (p->error_indicator) {
22756
1
            p->level--;
22757
1
            return NULL;
22758
1
        }
22759
4.90k
        D(fprintf(stderr, "%*c> invalid_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param ',' param"));
22760
4.90k
        Token * _literal;
22761
4.90k
        Token * _literal_1;
22762
4.90k
        arg_ty a;
22763
4.90k
        arg_ty param_var;
22764
4.90k
        if (
22765
4.90k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
22766
4.90k
            &&
22767
4.90k
            (param_var = param_rule(p))  // param
22768
4.90k
            &&
22769
4.90k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
22770
4.90k
            &&
22771
4.90k
            (a = param_rule(p))  // param
22772
4.90k
        )
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.90k
        p->mark = _mark;
22784
4.90k
        D(fprintf(stderr, "%*c%s invalid_kwds[%d-%d]: %s failed!\n", p->level, ' ',
22785
4.90k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param ',' param"));
22786
4.90k
    }
22787
0
    { // '**' param ',' ('*' | '**' | '/')
22788
4.90k
        if (p->error_indicator) {
22789
1
            p->level--;
22790
1
            return NULL;
22791
1
        }
22792
4.90k
        D(fprintf(stderr, "%*c> invalid_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param ',' ('*' | '**' | '/')"));
22793
4.90k
        Token * _literal;
22794
4.90k
        Token * _literal_1;
22795
4.90k
        Token* a;
22796
4.90k
        arg_ty param_var;
22797
4.90k
        if (
22798
4.90k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
22799
4.90k
            &&
22800
4.90k
            (param_var = param_rule(p))  // param
22801
4.90k
            &&
22802
4.90k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
22803
4.90k
            &&
22804
4.90k
            (a = (Token*)_tmp_127_rule(p))  // '*' | '**' | '/'
22805
4.90k
        )
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.89k
        p->mark = _mark;
22817
4.89k
        D(fprintf(stderr, "%*c%s invalid_kwds[%d-%d]: %s failed!\n", p->level, ' ',
22818
4.89k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param ',' ('*' | '**' | '/')"));
22819
4.89k
    }
22820
0
    _res = NULL;
22821
4.89k
  done:
22822
4.89k
    p->level--;
22823
4.89k
    return _res;
22824
4.89k
}
22825
22826
// invalid_parameters_helper: slash_with_default | param_with_default+
22827
static void *
22828
invalid_parameters_helper_rule(Parser *p)
22829
4.93k
{
22830
4.93k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22831
0
        _Pypegen_stack_overflow(p);
22832
0
    }
22833
4.93k
    if (p->error_indicator) {
22834
0
        p->level--;
22835
0
        return NULL;
22836
0
    }
22837
4.93k
    void * _res = NULL;
22838
4.93k
    int _mark = p->mark;
22839
4.93k
    { // slash_with_default
22840
4.93k
        if (p->error_indicator) {
22841
0
            p->level--;
22842
0
            return NULL;
22843
0
        }
22844
4.93k
        D(fprintf(stderr, "%*c> invalid_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
22845
4.93k
        SlashWithDefault* a;
22846
4.93k
        if (
22847
4.93k
            (a = slash_with_default_rule(p))  // slash_with_default
22848
4.93k
        )
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.49k
        p->mark = _mark;
22860
4.49k
        D(fprintf(stderr, "%*c%s invalid_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
22861
4.49k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default"));
22862
4.49k
    }
22863
0
    { // param_with_default+
22864
4.49k
        if (p->error_indicator) {
22865
0
            p->level--;
22866
0
            return NULL;
22867
0
        }
22868
4.49k
        D(fprintf(stderr, "%*c> invalid_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+"));
22869
4.49k
        asdl_seq * _loop1_30_var;
22870
4.49k
        if (
22871
4.49k
            (_loop1_30_var = _loop1_30_rule(p))  // param_with_default+
22872
4.49k
        )
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.95k
        p->mark = _mark;
22879
3.95k
        D(fprintf(stderr, "%*c%s invalid_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
22880
3.95k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default+"));
22881
3.95k
    }
22882
0
    _res = NULL;
22883
4.93k
  done:
22884
4.93k
    p->level--;
22885
4.93k
    return _res;
22886
3.95k
}
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
8.88k
{
22898
8.88k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22899
0
        _Pypegen_stack_overflow(p);
22900
0
    }
22901
8.88k
    if (p->error_indicator) {
22902
0
        p->level--;
22903
0
        return NULL;
22904
0
    }
22905
8.88k
    void * _res = NULL;
22906
8.88k
    int _mark = p->mark;
22907
8.88k
    { // "/" ','
22908
8.88k
        if (p->error_indicator) {
22909
0
            p->level--;
22910
0
            return NULL;
22911
0
        }
22912
8.88k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"/\" ','"));
22913
8.88k
        Token * _literal;
22914
8.88k
        Token * a;
22915
8.88k
        if (
22916
8.88k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
22917
8.88k
            &&
22918
8.88k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
22919
8.88k
        )
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
8.88k
        p->mark = _mark;
22931
8.88k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22932
8.88k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"/\" ','"));
22933
8.88k
    }
22934
0
    { // (lambda_slash_no_default | lambda_slash_with_default) lambda_param_maybe_default* '/'
22935
8.88k
        if (p->error_indicator) {
22936
2
            p->level--;
22937
2
            return NULL;
22938
2
        }
22939
8.88k
        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
8.88k
        asdl_seq * _loop0_74_var;
22941
8.88k
        void *_tmp_128_var;
22942
8.88k
        Token * a;
22943
8.88k
        if (
22944
8.88k
            (_tmp_128_var = _tmp_128_rule(p))  // lambda_slash_no_default | lambda_slash_with_default
22945
8.88k
            &&
22946
8.88k
            (_loop0_74_var = _loop0_74_rule(p))  // lambda_param_maybe_default*
22947
8.88k
            &&
22948
8.88k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
22949
8.88k
        )
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
8.87k
        p->mark = _mark;
22961
8.87k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22962
8.87k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(lambda_slash_no_default | lambda_slash_with_default) lambda_param_maybe_default* '/'"));
22963
8.87k
    }
22964
0
    { // lambda_slash_no_default? lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default
22965
8.87k
        if (p->error_indicator) {
22966
452
            p->level--;
22967
452
            return NULL;
22968
452
        }
22969
8.42k
        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.42k
        asdl_seq * _loop0_70_var;
22971
8.42k
        void *_opt_var;
22972
8.42k
        UNUSED(_opt_var); // Silence compiler warnings
22973
8.42k
        arg_ty a;
22974
8.42k
        void *invalid_lambda_parameters_helper_var;
22975
8.42k
        if (
22976
8.42k
            (_opt_var = lambda_slash_no_default_rule(p), !p->error_indicator)  // lambda_slash_no_default?
22977
8.42k
            &&
22978
8.42k
            (_loop0_70_var = _loop0_70_rule(p))  // lambda_param_no_default*
22979
8.42k
            &&
22980
8.42k
            (invalid_lambda_parameters_helper_var = invalid_lambda_parameters_helper_rule(p))  // invalid_lambda_parameters_helper
22981
8.42k
            &&
22982
8.42k
            (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
22983
8.42k
        )
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.42k
        p->mark = _mark;
22995
8.42k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22996
8.42k
                  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.42k
    }
22998
0
    { // lambda_param_no_default* '(' ','.lambda_param+ ','? ')'
22999
8.42k
        if (p->error_indicator) {
23000
0
            p->level--;
23001
0
            return NULL;
23002
0
        }
23003
8.42k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* '(' ','.lambda_param+ ','? ')'"));
23004
8.42k
        asdl_seq * _gather_130_var;
23005
8.42k
        asdl_seq * _loop0_70_var;
23006
8.42k
        void *_opt_var;
23007
8.42k
        UNUSED(_opt_var); // Silence compiler warnings
23008
8.42k
        Token * a;
23009
8.42k
        Token * b;
23010
8.42k
        if (
23011
8.42k
            (_loop0_70_var = _loop0_70_rule(p))  // lambda_param_no_default*
23012
8.42k
            &&
23013
8.42k
            (a = _PyPegen_expect_token(p, 7))  // token='('
23014
8.42k
            &&
23015
8.42k
            (_gather_130_var = _gather_130_rule(p))  // ','.lambda_param+
23016
8.42k
            &&
23017
8.42k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
23018
8.42k
            &&
23019
8.42k
            (b = _PyPegen_expect_token(p, 8))  // token=')'
23020
8.42k
        )
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.42k
        p->mark = _mark;
23032
8.42k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
23033
8.42k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* '(' ','.lambda_param+ ','? ')'"));
23034
8.42k
    }
23035
0
    { // [(lambda_slash_no_default | lambda_slash_with_default)] lambda_param_maybe_default* '*' (',' | lambda_param_no_default) lambda_param_maybe_default* '/'
23036
8.42k
        if (p->error_indicator) {
23037
10
            p->level--;
23038
10
            return NULL;
23039
10
        }
23040
8.41k
        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.41k
        Token * _literal;
23042
8.41k
        asdl_seq * _loop0_74_var;
23043
8.41k
        asdl_seq * _loop0_74_var_1;
23044
8.41k
        void *_opt_var;
23045
8.41k
        UNUSED(_opt_var); // Silence compiler warnings
23046
8.41k
        void *_tmp_131_var;
23047
8.41k
        Token * a;
23048
8.41k
        if (
23049
8.41k
            (_opt_var = _tmp_128_rule(p), !p->error_indicator)  // [(lambda_slash_no_default | lambda_slash_with_default)]
23050
8.41k
            &&
23051
8.41k
            (_loop0_74_var = _loop0_74_rule(p))  // lambda_param_maybe_default*
23052
8.41k
            &&
23053
8.41k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
23054
8.41k
            &&
23055
8.41k
            (_tmp_131_var = _tmp_131_rule(p))  // ',' | lambda_param_no_default
23056
8.41k
            &&
23057
8.41k
            (_loop0_74_var_1 = _loop0_74_rule(p))  // lambda_param_maybe_default*
23058
8.41k
            &&
23059
8.41k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
23060
8.41k
        )
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.40k
        p->mark = _mark;
23072
8.40k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
23073
8.40k
                  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.40k
    }
23075
0
    { // lambda_param_maybe_default+ '/' '*'
23076
8.40k
        if (p->error_indicator) {
23077
227
            p->level--;
23078
227
            return NULL;
23079
227
        }
23080
8.18k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default+ '/' '*'"));
23081
8.18k
        Token * _literal;
23082
8.18k
        asdl_seq * _loop1_75_var;
23083
8.18k
        Token * a;
23084
8.18k
        if (
23085
8.18k
            (_loop1_75_var = _loop1_75_rule(p))  // lambda_param_maybe_default+
23086
8.18k
            &&
23087
8.18k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
23088
8.18k
            &&
23089
8.18k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
23090
8.18k
        )
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.17k
        p->mark = _mark;
23102
8.17k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
23103
8.17k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default+ '/' '*'"));
23104
8.17k
    }
23105
0
    _res = NULL;
23106
8.17k
  done:
23107
8.17k
    p->level--;
23108
8.17k
    return _res;
23109
8.17k
}
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.42k
{
23117
8.42k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23118
0
        _Pypegen_stack_overflow(p);
23119
0
    }
23120
8.42k
    if (p->error_indicator) {
23121
0
        p->level--;
23122
0
        return NULL;
23123
0
    }
23124
8.42k
    void * _res = NULL;
23125
8.42k
    int _mark = p->mark;
23126
8.42k
    { // lambda_slash_with_default
23127
8.42k
        if (p->error_indicator) {
23128
0
            p->level--;
23129
0
            return NULL;
23130
0
        }
23131
8.42k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
23132
8.42k
        SlashWithDefault* a;
23133
8.42k
        if (
23134
8.42k
            (a = lambda_slash_with_default_rule(p))  // lambda_slash_with_default
23135
8.42k
        )
23136
888
        {
23137
888
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
23138
888
            _res = _PyPegen_singleton_seq ( p , a );
23139
888
            if (_res == NULL && PyErr_Occurred()) {
23140
0
                p->error_indicator = 1;
23141
0
                p->level--;
23142
0
                return NULL;
23143
0
            }
23144
888
            goto done;
23145
888
        }
23146
7.53k
        p->mark = _mark;
23147
7.53k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
23148
7.53k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default"));
23149
7.53k
    }
23150
0
    { // lambda_param_with_default+
23151
7.53k
        if (p->error_indicator) {
23152
0
            p->level--;
23153
0
            return NULL;
23154
0
        }
23155
7.53k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+"));
23156
7.53k
        asdl_seq * _loop1_73_var;
23157
7.53k
        if (
23158
7.53k
            (_loop1_73_var = _loop1_73_rule(p))  // lambda_param_with_default+
23159
7.53k
        )
23160
1.83k
        {
23161
1.83k
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+"));
23162
1.83k
            _res = _loop1_73_var;
23163
1.83k
            goto done;
23164
1.83k
        }
23165
5.70k
        p->mark = _mark;
23166
5.70k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
23167
5.70k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default+"));
23168
5.70k
    }
23169
0
    _res = NULL;
23170
8.42k
  done:
23171
8.42k
    p->level--;
23172
8.42k
    return _res;
23173
5.70k
}
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.17k
{
23182
8.17k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23183
0
        _Pypegen_stack_overflow(p);
23184
0
    }
23185
8.17k
    if (p->error_indicator) {
23186
0
        p->level--;
23187
0
        return NULL;
23188
0
    }
23189
8.17k
    void * _res = NULL;
23190
8.17k
    int _mark = p->mark;
23191
8.17k
    { // '*' (':' | ',' (':' | '**'))
23192
8.17k
        if (p->error_indicator) {
23193
0
            p->level--;
23194
0
            return NULL;
23195
0
        }
23196
8.17k
        D(fprintf(stderr, "%*c> invalid_lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
23197
8.17k
        Token * _literal;
23198
8.17k
        void *_tmp_132_var;
23199
8.17k
        if (
23200
8.17k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
23201
8.17k
            &&
23202
8.17k
            (_tmp_132_var = _tmp_132_rule(p))  // ':' | ',' (':' | '**')
23203
8.17k
        )
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.16k
        p->mark = _mark;
23215
8.16k
        D(fprintf(stderr, "%*c%s invalid_lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
23216
8.16k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
23217
8.16k
    }
23218
0
    { // '*' lambda_param '='
23219
8.16k
        if (p->error_indicator) {
23220
0
            p->level--;
23221
0
            return NULL;
23222
0
        }
23223
8.16k
        D(fprintf(stderr, "%*c> invalid_lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' lambda_param '='"));
23224
8.16k
        Token * _literal;
23225
8.16k
        Token * a;
23226
8.16k
        arg_ty lambda_param_var;
23227
8.16k
        if (
23228
8.16k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
23229
8.16k
            &&
23230
8.16k
            (lambda_param_var = lambda_param_rule(p))  // lambda_param
23231
8.16k
            &&
23232
8.16k
            (a = _PyPegen_expect_token(p, 22))  // token='='
23233
8.16k
        )
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.16k
        p->mark = _mark;
23245
8.16k
        D(fprintf(stderr, "%*c%s invalid_lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
23246
8.16k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' lambda_param '='"));
23247
8.16k
    }
23248
0
    { // '*' (lambda_param_no_default | ',') lambda_param_maybe_default* '*' (lambda_param_no_default | ',')
23249
8.16k
        if (p->error_indicator) {
23250
0
            p->level--;
23251
0
            return NULL;
23252
0
        }
23253
8.16k
        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.16k
        Token * _literal;
23255
8.16k
        asdl_seq * _loop0_74_var;
23256
8.16k
        void *_tmp_133_var;
23257
8.16k
        void *_tmp_133_var_1;
23258
8.16k
        Token * a;
23259
8.16k
        if (
23260
8.16k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
23261
8.16k
            &&
23262
8.16k
            (_tmp_133_var = _tmp_133_rule(p))  // lambda_param_no_default | ','
23263
8.16k
            &&
23264
8.16k
            (_loop0_74_var = _loop0_74_rule(p))  // lambda_param_maybe_default*
23265
8.16k
            &&
23266
8.16k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
23267
8.16k
            &&
23268
8.16k
            (_tmp_133_var_1 = _tmp_133_rule(p))  // lambda_param_no_default | ','
23269
8.16k
        )
23270
4
        {
23271
4
            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
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "* may appear only once" );
23273
4
            if (_res == NULL && PyErr_Occurred()) {
23274
4
                p->error_indicator = 1;
23275
4
                p->level--;
23276
4
                return NULL;
23277
4
            }
23278
0
            goto done;
23279
4
        }
23280
8.15k
        p->mark = _mark;
23281
8.15k
        D(fprintf(stderr, "%*c%s invalid_lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
23282
8.15k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (lambda_param_no_default | ',') lambda_param_maybe_default* '*' (lambda_param_no_default | ',')"));
23283
8.15k
    }
23284
0
    _res = NULL;
23285
8.15k
  done:
23286
8.15k
    p->level--;
23287
8.15k
    return _res;
23288
8.15k
}
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.15k
{
23297
8.15k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23298
0
        _Pypegen_stack_overflow(p);
23299
0
    }
23300
8.15k
    if (p->error_indicator) {
23301
0
        p->level--;
23302
0
        return NULL;
23303
0
    }
23304
8.15k
    void * _res = NULL;
23305
8.15k
    int _mark = p->mark;
23306
8.15k
    { // '**' lambda_param '='
23307
8.15k
        if (p->error_indicator) {
23308
0
            p->level--;
23309
0
            return NULL;
23310
0
        }
23311
8.15k
        D(fprintf(stderr, "%*c> invalid_lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param '='"));
23312
8.15k
        Token * _literal;
23313
8.15k
        Token * a;
23314
8.15k
        arg_ty lambda_param_var;
23315
8.15k
        if (
23316
8.15k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
23317
8.15k
            &&
23318
8.15k
            (lambda_param_var = lambda_param_rule(p))  // lambda_param
23319
8.15k
            &&
23320
8.15k
            (a = _PyPegen_expect_token(p, 22))  // token='='
23321
8.15k
        )
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.15k
        p->mark = _mark;
23333
8.15k
        D(fprintf(stderr, "%*c%s invalid_lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
23334
8.15k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param '='"));
23335
8.15k
    }
23336
0
    { // '**' lambda_param ',' lambda_param
23337
8.15k
        if (p->error_indicator) {
23338
1
            p->level--;
23339
1
            return NULL;
23340
1
        }
23341
8.15k
        D(fprintf(stderr, "%*c> invalid_lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param ',' lambda_param"));
23342
8.15k
        Token * _literal;
23343
8.15k
        Token * _literal_1;
23344
8.15k
        arg_ty a;
23345
8.15k
        arg_ty lambda_param_var;
23346
8.15k
        if (
23347
8.15k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
23348
8.15k
            &&
23349
8.15k
            (lambda_param_var = lambda_param_rule(p))  // lambda_param
23350
8.15k
            &&
23351
8.15k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
23352
8.15k
            &&
23353
8.15k
            (a = lambda_param_rule(p))  // lambda_param
23354
8.15k
        )
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.15k
        p->mark = _mark;
23366
8.15k
        D(fprintf(stderr, "%*c%s invalid_lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
23367
8.15k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param ',' lambda_param"));
23368
8.15k
    }
23369
0
    { // '**' lambda_param ',' ('*' | '**' | '/')
23370
8.15k
        if (p->error_indicator) {
23371
1
            p->level--;
23372
1
            return NULL;
23373
1
        }
23374
8.15k
        D(fprintf(stderr, "%*c> invalid_lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param ',' ('*' | '**' | '/')"));
23375
8.15k
        Token * _literal;
23376
8.15k
        Token * _literal_1;
23377
8.15k
        Token* a;
23378
8.15k
        arg_ty lambda_param_var;
23379
8.15k
        if (
23380
8.15k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
23381
8.15k
            &&
23382
8.15k
            (lambda_param_var = lambda_param_rule(p))  // lambda_param
23383
8.15k
            &&
23384
8.15k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
23385
8.15k
            &&
23386
8.15k
            (a = (Token*)_tmp_127_rule(p))  // '*' | '**' | '/'
23387
8.15k
        )
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.15k
        p->mark = _mark;
23399
8.15k
        D(fprintf(stderr, "%*c%s invalid_lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
23400
8.15k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param ',' ('*' | '**' | '/')"));
23401
8.15k
    }
23402
0
    _res = NULL;
23403
8.15k
  done:
23404
8.15k
    p->level--;
23405
8.15k
    return _res;
23406
8.15k
}
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.19k
{
23412
2.19k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23413
0
        _Pypegen_stack_overflow(p);
23414
0
    }
23415
2.19k
    if (p->error_indicator) {
23416
0
        p->level--;
23417
0
        return NULL;
23418
0
    }
23419
2.19k
    void * _res = NULL;
23420
2.19k
    int _mark = p->mark;
23421
2.19k
    { // TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
23422
2.19k
        if (p->error_indicator) {
23423
0
            p->level--;
23424
0
            return NULL;
23425
0
        }
23426
2.19k
        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.19k
        Token * indent_var;
23428
2.19k
        Token * newline_var;
23429
2.19k
        Token * newline_var_1;
23430
2.19k
        Token * type_comment_var;
23431
2.19k
        Token * type_comment_var_1;
23432
2.19k
        if (
23433
2.19k
            (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
23434
2.19k
            &&
23435
2.19k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23436
2.19k
            &&
23437
2.19k
            (type_comment_var_1 = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
23438
2.19k
            &&
23439
2.19k
            (newline_var_1 = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23440
2.19k
            &&
23441
2.19k
            (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
23442
2.19k
        )
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.19k
        p->mark = _mark;
23454
2.19k
        D(fprintf(stderr, "%*c%s invalid_double_type_comments[%d-%d]: %s failed!\n", p->level, ' ',
23455
2.19k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT"));
23456
2.19k
    }
23457
0
    _res = NULL;
23458
2.19k
  done:
23459
2.19k
    p->level--;
23460
2.19k
    return _res;
23461
2.19k
}
23462
23463
// invalid_with_item: expression 'as' expression &(',' | ')' | ':')
23464
static void *
23465
invalid_with_item_rule(Parser *p)
23466
5.62k
{
23467
5.62k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23468
0
        _Pypegen_stack_overflow(p);
23469
0
    }
23470
5.62k
    if (p->error_indicator) {
23471
0
        p->level--;
23472
0
        return NULL;
23473
0
    }
23474
5.62k
    void * _res = NULL;
23475
5.62k
    int _mark = p->mark;
23476
5.62k
    { // expression 'as' expression &(',' | ')' | ':')
23477
5.62k
        if (p->error_indicator) {
23478
0
            p->level--;
23479
0
            return NULL;
23480
0
        }
23481
5.62k
        D(fprintf(stderr, "%*c> invalid_with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')"));
23482
5.62k
        Token * _keyword;
23483
5.62k
        expr_ty a;
23484
5.62k
        expr_ty expression_var;
23485
5.62k
        if (
23486
5.62k
            (expression_var = expression_rule(p))  // expression
23487
5.62k
            &&
23488
5.62k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
23489
5.62k
            &&
23490
5.62k
            (a = expression_rule(p))  // expression
23491
5.62k
            &&
23492
5.62k
            _PyPegen_lookahead(1, _tmp_35_rule, p)
23493
5.62k
        )
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.61k
        p->mark = _mark;
23505
5.61k
        D(fprintf(stderr, "%*c%s invalid_with_item[%d-%d]: %s failed!\n", p->level, ' ',
23506
5.61k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')"));
23507
5.61k
    }
23508
0
    _res = NULL;
23509
5.61k
  done:
23510
5.61k
    p->level--;
23511
5.61k
    return _res;
23512
5.61k
}
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
47.4k
{
23518
47.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23519
0
        _Pypegen_stack_overflow(p);
23520
0
    }
23521
47.4k
    if (p->error_indicator) {
23522
0
        p->level--;
23523
0
        return NULL;
23524
0
    }
23525
47.4k
    void * _res = NULL;
23526
47.4k
    int _mark = p->mark;
23527
47.4k
    { // 'async'? 'for' (bitwise_or ((',' bitwise_or))* ','?) !'in'
23528
47.4k
        if (p->error_indicator) {
23529
0
            p->level--;
23530
0
            return NULL;
23531
0
        }
23532
47.4k
        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
47.4k
        Token * _keyword;
23534
47.4k
        void *_opt_var;
23535
47.4k
        UNUSED(_opt_var); // Silence compiler warnings
23536
47.4k
        void *_tmp_134_var;
23537
47.4k
        if (
23538
47.4k
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
23539
47.4k
            &&
23540
47.4k
            (_keyword = _PyPegen_expect_token(p, 699))  // token='for'
23541
47.4k
            &&
23542
47.4k
            (_tmp_134_var = _tmp_134_rule(p))  // bitwise_or ((',' bitwise_or))* ','?
23543
47.4k
            &&
23544
47.4k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 700)  // token='in'
23545
47.4k
        )
23546
17
        {
23547
17
            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
17
            _res = RAISE_SYNTAX_ERROR ( "'in' expected after for-loop variables" );
23549
17
            if (_res == NULL && PyErr_Occurred()) {
23550
17
                p->error_indicator = 1;
23551
17
                p->level--;
23552
17
                return NULL;
23553
17
            }
23554
0
            goto done;
23555
17
        }
23556
47.4k
        p->mark = _mark;
23557
47.4k
        D(fprintf(stderr, "%*c%s invalid_for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
23558
47.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'for' (bitwise_or ((',' bitwise_or))* ','?) !'in'"));
23559
47.4k
    }
23560
0
    _res = NULL;
23561
47.4k
  done:
23562
47.4k
    p->level--;
23563
47.4k
    return _res;
23564
47.4k
}
23565
23566
// invalid_for_target: 'async'? 'for' star_expressions
23567
static void *
23568
invalid_for_target_rule(Parser *p)
23569
47.0k
{
23570
47.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23571
0
        _Pypegen_stack_overflow(p);
23572
0
    }
23573
47.0k
    if (p->error_indicator) {
23574
0
        p->level--;
23575
0
        return NULL;
23576
0
    }
23577
47.0k
    void * _res = NULL;
23578
47.0k
    int _mark = p->mark;
23579
47.0k
    { // 'async'? 'for' star_expressions
23580
47.0k
        if (p->error_indicator) {
23581
0
            p->level--;
23582
0
            return NULL;
23583
0
        }
23584
47.0k
        D(fprintf(stderr, "%*c> invalid_for_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'? 'for' star_expressions"));
23585
47.0k
        Token * _keyword;
23586
47.0k
        void *_opt_var;
23587
47.0k
        UNUSED(_opt_var); // Silence compiler warnings
23588
47.0k
        expr_ty a;
23589
47.0k
        if (
23590
47.0k
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
23591
47.0k
            &&
23592
47.0k
            (_keyword = _PyPegen_expect_token(p, 699))  // token='for'
23593
47.0k
            &&
23594
47.0k
            (a = star_expressions_rule(p))  // star_expressions
23595
47.0k
        )
23596
1.48k
        {
23597
1.48k
            D(fprintf(stderr, "%*c+ invalid_for_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'? 'for' star_expressions"));
23598
1.48k
            _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( FOR_TARGETS , a );
23599
1.48k
            if (_res == NULL && PyErr_Occurred()) {
23600
2
                p->error_indicator = 1;
23601
2
                p->level--;
23602
2
                return NULL;
23603
2
            }
23604
1.48k
            goto done;
23605
1.48k
        }
23606
45.5k
        p->mark = _mark;
23607
45.5k
        D(fprintf(stderr, "%*c%s invalid_for_target[%d-%d]: %s failed!\n", p->level, ' ',
23608
45.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'for' star_expressions"));
23609
45.5k
    }
23610
0
    _res = NULL;
23611
47.0k
  done:
23612
47.0k
    p->level--;
23613
47.0k
    return _res;
23614
45.5k
}
23615
23616
// invalid_group: '(' starred_expression ')' | '(' '**' expression ')'
23617
static void *
23618
invalid_group_rule(Parser *p)
23619
8.53k
{
23620
8.53k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23621
0
        _Pypegen_stack_overflow(p);
23622
0
    }
23623
8.53k
    if (p->error_indicator) {
23624
0
        p->level--;
23625
0
        return NULL;
23626
0
    }
23627
8.53k
    void * _res = NULL;
23628
8.53k
    int _mark = p->mark;
23629
8.53k
    { // '(' starred_expression ')'
23630
8.53k
        if (p->error_indicator) {
23631
0
            p->level--;
23632
0
            return NULL;
23633
0
        }
23634
8.53k
        D(fprintf(stderr, "%*c> invalid_group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' starred_expression ')'"));
23635
8.53k
        Token * _literal;
23636
8.53k
        Token * _literal_1;
23637
8.53k
        expr_ty a;
23638
8.53k
        if (
23639
8.53k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
23640
8.53k
            &&
23641
8.53k
            (a = starred_expression_rule(p))  // starred_expression
23642
8.53k
            &&
23643
8.53k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
23644
8.53k
        )
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.53k
        p->mark = _mark;
23656
8.53k
        D(fprintf(stderr, "%*c%s invalid_group[%d-%d]: %s failed!\n", p->level, ' ',
23657
8.53k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' starred_expression ')'"));
23658
8.53k
    }
23659
0
    { // '(' '**' expression ')'
23660
8.53k
        if (p->error_indicator) {
23661
295
            p->level--;
23662
295
            return NULL;
23663
295
        }
23664
8.24k
        D(fprintf(stderr, "%*c> invalid_group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' '**' expression ')'"));
23665
8.24k
        Token * _literal;
23666
8.24k
        Token * _literal_1;
23667
8.24k
        Token * a;
23668
8.24k
        expr_ty expression_var;
23669
8.24k
        if (
23670
8.24k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
23671
8.24k
            &&
23672
8.24k
            (a = _PyPegen_expect_token(p, 35))  // token='**'
23673
8.24k
            &&
23674
8.24k
            (expression_var = expression_rule(p))  // expression
23675
8.24k
            &&
23676
8.24k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
23677
8.24k
        )
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.23k
        p->mark = _mark;
23689
8.23k
        D(fprintf(stderr, "%*c%s invalid_group[%d-%d]: %s failed!\n", p->level, ' ',
23690
8.23k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' '**' expression ')'"));
23691
8.23k
    }
23692
0
    _res = NULL;
23693
8.23k
  done:
23694
8.23k
    p->level--;
23695
8.23k
    return _res;
23696
8.23k
}
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.78k
        p->mark = _mark;
23768
1.78k
        D(fprintf(stderr, "%*c%s invalid_import[%d-%d]: %s failed!\n", p->level, ' ',
23769
1.78k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import' NEWLINE"));
23770
1.78k
    }
23771
0
    _res = NULL;
23772
1.78k
  done:
23773
1.78k
    p->level--;
23774
1.78k
    return _res;
23775
1.78k
}
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
10
        {
23809
10
            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
10
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use %s as import target" , _PyPegen_get_expr_name ( a ) );
23811
10
            if (_res == NULL && PyErr_Occurred()) {
23812
10
                p->error_indicator = 1;
23813
10
                p->level--;
23814
10
                return NULL;
23815
10
            }
23816
0
            goto done;
23817
10
        }
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.47k
{
23832
2.47k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23833
0
        _Pypegen_stack_overflow(p);
23834
0
    }
23835
2.47k
    if (p->error_indicator) {
23836
0
        p->level--;
23837
0
        return NULL;
23838
0
    }
23839
2.47k
    void * _res = NULL;
23840
2.47k
    int _mark = p->mark;
23841
2.47k
    { // NAME 'as' !(NAME (',' | ')' | NEWLINE)) expression
23842
2.47k
        if (p->error_indicator) {
23843
0
            p->level--;
23844
0
            return NULL;
23845
0
        }
23846
2.47k
        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.47k
        Token * _keyword;
23848
2.47k
        expr_ty a;
23849
2.47k
        expr_ty name_var;
23850
2.47k
        if (
23851
2.47k
            (name_var = _PyPegen_name_token(p))  // NAME
23852
2.47k
            &&
23853
2.47k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
23854
2.47k
            &&
23855
2.47k
            _PyPegen_lookahead(0, _tmp_137_rule, p)
23856
2.47k
            &&
23857
2.47k
            (a = expression_rule(p))  // expression
23858
2.47k
        )
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
33
{
23883
33
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23884
0
        _Pypegen_stack_overflow(p);
23885
0
    }
23886
33
    if (p->error_indicator) {
23887
0
        p->level--;
23888
0
        return NULL;
23889
0
    }
23890
33
    void * _res = NULL;
23891
33
    int _mark = p->mark;
23892
33
    { // import_from_as_names ',' NEWLINE
23893
33
        if (p->error_indicator) {
23894
0
            p->level--;
23895
0
            return NULL;
23896
0
        }
23897
33
        D(fprintf(stderr, "%*c> invalid_import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_names ',' NEWLINE"));
23898
33
        Token * _literal;
23899
33
        asdl_alias_seq* import_from_as_names_var;
23900
33
        Token * newline_var;
23901
33
        if (
23902
33
            (import_from_as_names_var = import_from_as_names_rule(p))  // import_from_as_names
23903
33
            &&
23904
33
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
23905
33
            &&
23906
33
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23907
33
        )
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
17
        p->mark = _mark;
23919
17
        D(fprintf(stderr, "%*c%s invalid_import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
23920
17
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_names ',' NEWLINE"));
23921
17
    }
23922
0
    { // NEWLINE
23923
17
        if (p->error_indicator) {
23924
0
            p->level--;
23925
0
            return NULL;
23926
0
        }
23927
17
        D(fprintf(stderr, "%*c> invalid_import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
23928
17
        Token * token;
23929
17
        if (
23930
17
            (token = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23931
17
        )
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
12
        p->mark = _mark;
23943
12
        D(fprintf(stderr, "%*c%s invalid_import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
23944
12
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
23945
12
    }
23946
0
    _res = NULL;
23947
12
  done:
23948
12
    p->level--;
23949
12
    return _res;
23950
12
}
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
42
        {
23988
42
            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
42
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
23990
42
            if (_res == NULL && PyErr_Occurred()) {
23991
42
                p->error_indicator = 1;
23992
42
                p->level--;
23993
42
                return NULL;
23994
42
            }
23995
0
            goto done;
23996
42
        }
23997
474
        p->mark = _mark;
23998
474
        D(fprintf(stderr, "%*c%s invalid_with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
23999
474
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'with' ','.(expression ['as' star_target])+ NEWLINE"));
24000
474
    }
24001
0
    { // 'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE
24002
474
        if (p->error_indicator) {
24003
0
            p->level--;
24004
0
            return NULL;
24005
0
        }
24006
474
        D(fprintf(stderr, "%*c> invalid_with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE"));
24007
474
        asdl_seq * _gather_141_var;
24008
474
        Token * _keyword;
24009
474
        Token * _literal;
24010
474
        Token * _literal_1;
24011
474
        void *_opt_var;
24012
474
        UNUSED(_opt_var); // Silence compiler warnings
24013
474
        void *_opt_var_1;
24014
474
        UNUSED(_opt_var_1); // Silence compiler warnings
24015
474
        Token * newline_var;
24016
474
        if (
24017
474
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
24018
474
            &&
24019
474
            (_keyword = _PyPegen_expect_token(p, 652))  // token='with'
24020
474
            &&
24021
474
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
24022
474
            &&
24023
474
            (_gather_141_var = _gather_141_rule(p))  // ','.(expressions ['as' star_target])+
24024
474
            &&
24025
474
            (_opt_var_1 = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
24026
474
            &&
24027
474
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
24028
474
            &&
24029
474
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24030
474
        )
24031
7
        {
24032
7
            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
7
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
24034
7
            if (_res == NULL && PyErr_Occurred()) {
24035
7
                p->error_indicator = 1;
24036
7
                p->level--;
24037
7
                return NULL;
24038
7
            }
24039
0
            goto done;
24040
7
        }
24041
467
        p->mark = _mark;
24042
467
        D(fprintf(stderr, "%*c%s invalid_with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24043
467
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE"));
24044
467
    }
24045
0
    _res = NULL;
24046
467
  done:
24047
467
    p->level--;
24048
467
    return _res;
24049
467
}
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.51k
{
24057
2.51k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24058
0
        _Pypegen_stack_overflow(p);
24059
0
    }
24060
2.51k
    if (p->error_indicator) {
24061
0
        p->level--;
24062
0
        return NULL;
24063
0
    }
24064
2.51k
    void * _res = NULL;
24065
2.51k
    int _mark = p->mark;
24066
2.51k
    { // 'async'? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT
24067
2.51k
        if (p->error_indicator) {
24068
0
            p->level--;
24069
0
            return NULL;
24070
0
        }
24071
2.51k
        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.51k
        asdl_seq * _gather_139_var;
24073
2.51k
        Token * _literal;
24074
2.51k
        void *_opt_var;
24075
2.51k
        UNUSED(_opt_var); // Silence compiler warnings
24076
2.51k
        Token * a;
24077
2.51k
        Token * newline_var;
24078
2.51k
        if (
24079
2.51k
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
24080
2.51k
            &&
24081
2.51k
            (a = _PyPegen_expect_token(p, 652))  // token='with'
24082
2.51k
            &&
24083
2.51k
            (_gather_139_var = _gather_139_rule(p))  // ','.(expression ['as' star_target])+
24084
2.51k
            &&
24085
2.51k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24086
2.51k
            &&
24087
2.51k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24088
2.51k
            &&
24089
2.51k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24090
2.51k
        )
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.49k
        p->mark = _mark;
24102
2.49k
        D(fprintf(stderr, "%*c%s invalid_with_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
24103
2.49k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT"));
24104
2.49k
    }
24105
0
    { // 'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT
24106
2.49k
        if (p->error_indicator) {
24107
12
            p->level--;
24108
12
            return NULL;
24109
12
        }
24110
2.48k
        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.48k
        asdl_seq * _gather_141_var;
24112
2.48k
        Token * _literal;
24113
2.48k
        Token * _literal_1;
24114
2.48k
        Token * _literal_2;
24115
2.48k
        void *_opt_var;
24116
2.48k
        UNUSED(_opt_var); // Silence compiler warnings
24117
2.48k
        void *_opt_var_1;
24118
2.48k
        UNUSED(_opt_var_1); // Silence compiler warnings
24119
2.48k
        Token * a;
24120
2.48k
        Token * newline_var;
24121
2.48k
        if (
24122
2.48k
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
24123
2.48k
            &&
24124
2.48k
            (a = _PyPegen_expect_token(p, 652))  // token='with'
24125
2.48k
            &&
24126
2.48k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
24127
2.48k
            &&
24128
2.48k
            (_gather_141_var = _gather_141_rule(p))  // ','.(expressions ['as' star_target])+
24129
2.48k
            &&
24130
2.48k
            (_opt_var_1 = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
24131
2.48k
            &&
24132
2.48k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
24133
2.48k
            &&
24134
2.48k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
24135
2.48k
            &&
24136
2.48k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24137
2.48k
            &&
24138
2.48k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24139
2.48k
        )
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.48k
        p->mark = _mark;
24151
2.48k
        D(fprintf(stderr, "%*c%s invalid_with_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
24152
2.48k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT"));
24153
2.48k
    }
24154
0
    _res = NULL;
24155
2.48k
  done:
24156
2.48k
    p->level--;
24157
2.48k
    return _res;
24158
2.48k
}
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.95k
{
24168
1.95k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24169
0
        _Pypegen_stack_overflow(p);
24170
0
    }
24171
1.95k
    if (p->error_indicator) {
24172
0
        p->level--;
24173
0
        return NULL;
24174
0
    }
24175
1.95k
    void * _res = NULL;
24176
1.95k
    int _mark = p->mark;
24177
1.95k
    { // 'try' ':' NEWLINE !INDENT
24178
1.95k
        if (p->error_indicator) {
24179
0
            p->level--;
24180
0
            return NULL;
24181
0
        }
24182
1.95k
        D(fprintf(stderr, "%*c> invalid_try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' NEWLINE !INDENT"));
24183
1.95k
        Token * _literal;
24184
1.95k
        Token * a;
24185
1.95k
        Token * newline_var;
24186
1.95k
        if (
24187
1.95k
            (a = _PyPegen_expect_token(p, 661))  // token='try'
24188
1.95k
            &&
24189
1.95k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24190
1.95k
            &&
24191
1.95k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24192
1.95k
            &&
24193
1.95k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24194
1.95k
        )
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.95k
        p->mark = _mark;
24206
1.95k
        D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24207
1.95k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' NEWLINE !INDENT"));
24208
1.95k
    }
24209
0
    { // 'try' ':' block !('except' | 'finally')
24210
1.95k
        if (p->error_indicator) {
24211
1
            p->level--;
24212
1
            return NULL;
24213
1
        }
24214
1.95k
        D(fprintf(stderr, "%*c> invalid_try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
24215
1.95k
        Token * _keyword;
24216
1.95k
        Token * _literal;
24217
1.95k
        asdl_stmt_seq* block_var;
24218
1.95k
        if (
24219
1.95k
            (_keyword = _PyPegen_expect_token(p, 661))  // token='try'
24220
1.95k
            &&
24221
1.95k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24222
1.95k
            &&
24223
1.95k
            (block_var = block_rule(p))  // block
24224
1.95k
            &&
24225
1.95k
            _PyPegen_lookahead(0, _tmp_142_rule, p)
24226
1.95k
        )
24227
39
        {
24228
39
            D(fprintf(stderr, "%*c+ invalid_try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
24229
39
            _res = RAISE_SYNTAX_ERROR ( "expected 'except' or 'finally' block" );
24230
39
            if (_res == NULL && PyErr_Occurred()) {
24231
39
                p->error_indicator = 1;
24232
39
                p->level--;
24233
39
                return NULL;
24234
39
            }
24235
0
            goto done;
24236
39
        }
24237
1.91k
        p->mark = _mark;
24238
1.91k
        D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24239
1.91k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
24240
1.91k
    }
24241
0
    { // 'try' ':' block* except_block+ 'except' '*' expression ['as' NAME] ':'
24242
1.91k
        if (p->error_indicator) {
24243
17
            p->level--;
24244
17
            return NULL;
24245
17
        }
24246
1.89k
        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.89k
        Token * _keyword;
24248
1.89k
        Token * _literal;
24249
1.89k
        Token * _literal_1;
24250
1.89k
        asdl_seq * _loop0_143_var;
24251
1.89k
        asdl_seq * _loop1_36_var;
24252
1.89k
        void *_opt_var;
24253
1.89k
        UNUSED(_opt_var); // Silence compiler warnings
24254
1.89k
        Token * a;
24255
1.89k
        Token * b;
24256
1.89k
        expr_ty expression_var;
24257
1.89k
        if (
24258
1.89k
            (_keyword = _PyPegen_expect_token(p, 661))  // token='try'
24259
1.89k
            &&
24260
1.89k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24261
1.89k
            &&
24262
1.89k
            (_loop0_143_var = _loop0_143_rule(p))  // block*
24263
1.89k
            &&
24264
1.89k
            (_loop1_36_var = _loop1_36_rule(p))  // except_block+
24265
1.89k
            &&
24266
1.89k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24267
1.89k
            &&
24268
1.89k
            (b = _PyPegen_expect_token(p, 16))  // token='*'
24269
1.89k
            &&
24270
1.89k
            (expression_var = expression_rule(p))  // expression
24271
1.89k
            &&
24272
1.89k
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
24273
1.89k
            &&
24274
1.89k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
24275
1.89k
        )
24276
1
        {
24277
1
            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
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "cannot have both 'except' and 'except*' on the same 'try'" );
24279
1
            if (_res == NULL && PyErr_Occurred()) {
24280
1
                p->error_indicator = 1;
24281
1
                p->level--;
24282
1
                return NULL;
24283
1
            }
24284
0
            goto done;
24285
1
        }
24286
1.89k
        p->mark = _mark;
24287
1.89k
        D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24288
1.89k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block* except_block+ 'except' '*' expression ['as' NAME] ':'"));
24289
1.89k
    }
24290
0
    { // 'try' ':' block* except_star_block+ 'except' [expression ['as' NAME]] ':'
24291
1.89k
        if (p->error_indicator) {
24292
48
            p->level--;
24293
48
            return NULL;
24294
48
        }
24295
1.84k
        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.84k
        Token * _keyword;
24297
1.84k
        Token * _literal;
24298
1.84k
        Token * _literal_1;
24299
1.84k
        asdl_seq * _loop0_143_var;
24300
1.84k
        asdl_seq * _loop1_37_var;
24301
1.84k
        void *_opt_var;
24302
1.84k
        UNUSED(_opt_var); // Silence compiler warnings
24303
1.84k
        Token * a;
24304
1.84k
        if (
24305
1.84k
            (_keyword = _PyPegen_expect_token(p, 661))  // token='try'
24306
1.84k
            &&
24307
1.84k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24308
1.84k
            &&
24309
1.84k
            (_loop0_143_var = _loop0_143_rule(p))  // block*
24310
1.84k
            &&
24311
1.84k
            (_loop1_37_var = _loop1_37_rule(p))  // except_star_block+
24312
1.84k
            &&
24313
1.84k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24314
1.84k
            &&
24315
1.84k
            (_opt_var = _tmp_144_rule(p), !p->error_indicator)  // [expression ['as' NAME]]
24316
1.84k
            &&
24317
1.84k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
24318
1.84k
        )
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.84k
        p->mark = _mark;
24330
1.84k
        D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24331
1.84k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block* except_star_block+ 'except' [expression ['as' NAME]] ':'"));
24332
1.84k
    }
24333
0
    _res = NULL;
24334
1.84k
  done:
24335
1.84k
    p->level--;
24336
1.84k
    return _res;
24337
1.84k
}
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.40k
{
24347
3.40k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24348
0
        _Pypegen_stack_overflow(p);
24349
0
    }
24350
3.40k
    if (p->error_indicator) {
24351
0
        p->level--;
24352
0
        return NULL;
24353
0
    }
24354
3.40k
    void * _res = NULL;
24355
3.40k
    int _mark = p->mark;
24356
3.40k
    { // 'except' expression ',' expressions 'as' NAME ':'
24357
3.40k
        if (p->error_indicator) {
24358
0
            p->level--;
24359
0
            return NULL;
24360
0
        }
24361
3.40k
        D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ',' expressions 'as' NAME ':'"));
24362
3.40k
        Token * _keyword;
24363
3.40k
        Token * _keyword_1;
24364
3.40k
        Token * _literal;
24365
3.40k
        Token * _literal_1;
24366
3.40k
        expr_ty a;
24367
3.40k
        expr_ty expressions_var;
24368
3.40k
        expr_ty name_var;
24369
3.40k
        if (
24370
3.40k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
24371
3.40k
            &&
24372
3.40k
            (a = expression_rule(p))  // expression
24373
3.40k
            &&
24374
3.40k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
24375
3.40k
            &&
24376
3.40k
            (expressions_var = expressions_rule(p))  // expressions
24377
3.40k
            &&
24378
3.40k
            (_keyword_1 = _PyPegen_expect_token(p, 685))  // token='as'
24379
3.40k
            &&
24380
3.40k
            (name_var = _PyPegen_name_token(p))  // NAME
24381
3.40k
            &&
24382
3.40k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
24383
3.40k
        )
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.40k
        p->mark = _mark;
24395
3.40k
        D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24396
3.40k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ',' expressions 'as' NAME ':'"));
24397
3.40k
    }
24398
0
    { // 'except' expression ['as' NAME] NEWLINE
24399
3.40k
        if (p->error_indicator) {
24400
1
            p->level--;
24401
1
            return NULL;
24402
1
        }
24403
3.40k
        D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] NEWLINE"));
24404
3.40k
        void *_opt_var;
24405
3.40k
        UNUSED(_opt_var); // Silence compiler warnings
24406
3.40k
        Token * a;
24407
3.40k
        expr_ty expression_var;
24408
3.40k
        Token * newline_var;
24409
3.40k
        if (
24410
3.40k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24411
3.40k
            &&
24412
3.40k
            (expression_var = expression_rule(p))  // expression
24413
3.40k
            &&
24414
3.40k
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
24415
3.40k
            &&
24416
3.40k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24417
3.40k
        )
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.39k
        p->mark = _mark;
24429
3.39k
        D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24430
3.39k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ['as' NAME] NEWLINE"));
24431
3.39k
    }
24432
0
    { // 'except' NEWLINE
24433
3.39k
        if (p->error_indicator) {
24434
0
            p->level--;
24435
0
            return NULL;
24436
0
        }
24437
3.39k
        D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' NEWLINE"));
24438
3.39k
        Token * a;
24439
3.39k
        Token * newline_var;
24440
3.39k
        if (
24441
3.39k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24442
3.39k
            &&
24443
3.39k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24444
3.39k
        )
24445
10
        {
24446
10
            D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' NEWLINE"));
24447
10
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
24448
10
            if (_res == NULL && PyErr_Occurred()) {
24449
10
                p->error_indicator = 1;
24450
10
                p->level--;
24451
10
                return NULL;
24452
10
            }
24453
0
            goto done;
24454
10
        }
24455
3.38k
        p->mark = _mark;
24456
3.38k
        D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24457
3.38k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' NEWLINE"));
24458
3.38k
    }
24459
0
    { // 'except' expression 'as' expression ':' block
24460
3.38k
        if (p->error_indicator) {
24461
0
            p->level--;
24462
0
            return NULL;
24463
0
        }
24464
3.38k
        D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression 'as' expression ':' block"));
24465
3.38k
        Token * _keyword;
24466
3.38k
        Token * _keyword_1;
24467
3.38k
        Token * _literal;
24468
3.38k
        expr_ty a;
24469
3.38k
        asdl_stmt_seq* block_var;
24470
3.38k
        expr_ty expression_var;
24471
3.38k
        if (
24472
3.38k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
24473
3.38k
            &&
24474
3.38k
            (expression_var = expression_rule(p))  // expression
24475
3.38k
            &&
24476
3.38k
            (_keyword_1 = _PyPegen_expect_token(p, 685))  // token='as'
24477
3.38k
            &&
24478
3.38k
            (a = expression_rule(p))  // expression
24479
3.38k
            &&
24480
3.38k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24481
3.38k
            &&
24482
3.38k
            (block_var = block_rule(p))  // block
24483
3.38k
        )
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.38k
        p->mark = _mark;
24495
3.38k
        D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24496
3.38k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression 'as' expression ':' block"));
24497
3.38k
    }
24498
0
    _res = NULL;
24499
3.38k
  done:
24500
3.38k
    p->level--;
24501
3.38k
    return _res;
24502
3.38k
}
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.60k
{
24512
2.60k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24513
0
        _Pypegen_stack_overflow(p);
24514
0
    }
24515
2.60k
    if (p->error_indicator) {
24516
0
        p->level--;
24517
0
        return NULL;
24518
0
    }
24519
2.60k
    void * _res = NULL;
24520
2.60k
    int _mark = p->mark;
24521
2.60k
    { // 'except' '*' expression ',' expressions 'as' NAME ':'
24522
2.60k
        if (p->error_indicator) {
24523
0
            p->level--;
24524
0
            return NULL;
24525
0
        }
24526
2.60k
        D(fprintf(stderr, "%*c> invalid_except_star_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ',' expressions 'as' NAME ':'"));
24527
2.60k
        Token * _keyword;
24528
2.60k
        Token * _keyword_1;
24529
2.60k
        Token * _literal;
24530
2.60k
        Token * _literal_1;
24531
2.60k
        Token * _literal_2;
24532
2.60k
        expr_ty a;
24533
2.60k
        expr_ty expressions_var;
24534
2.60k
        expr_ty name_var;
24535
2.60k
        if (
24536
2.60k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
24537
2.60k
            &&
24538
2.60k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
24539
2.60k
            &&
24540
2.60k
            (a = expression_rule(p))  // expression
24541
2.60k
            &&
24542
2.60k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
24543
2.60k
            &&
24544
2.60k
            (expressions_var = expressions_rule(p))  // expressions
24545
2.60k
            &&
24546
2.60k
            (_keyword_1 = _PyPegen_expect_token(p, 685))  // token='as'
24547
2.60k
            &&
24548
2.60k
            (name_var = _PyPegen_name_token(p))  // NAME
24549
2.60k
            &&
24550
2.60k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
24551
2.60k
        )
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.60k
        p->mark = _mark;
24563
2.60k
        D(fprintf(stderr, "%*c%s invalid_except_star_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24564
2.60k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression ',' expressions 'as' NAME ':'"));
24565
2.60k
    }
24566
0
    { // 'except' '*' expression ['as' NAME] NEWLINE
24567
2.60k
        if (p->error_indicator) {
24568
1
            p->level--;
24569
1
            return NULL;
24570
1
        }
24571
2.60k
        D(fprintf(stderr, "%*c> invalid_except_star_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ['as' NAME] NEWLINE"));
24572
2.60k
        Token * _literal;
24573
2.60k
        void *_opt_var;
24574
2.60k
        UNUSED(_opt_var); // Silence compiler warnings
24575
2.60k
        Token * a;
24576
2.60k
        expr_ty expression_var;
24577
2.60k
        Token * newline_var;
24578
2.60k
        if (
24579
2.60k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24580
2.60k
            &&
24581
2.60k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
24582
2.60k
            &&
24583
2.60k
            (expression_var = expression_rule(p))  // expression
24584
2.60k
            &&
24585
2.60k
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
24586
2.60k
            &&
24587
2.60k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24588
2.60k
        )
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.59k
        p->mark = _mark;
24630
2.59k
        D(fprintf(stderr, "%*c%s invalid_except_star_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24631
2.59k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' (NEWLINE | ':')"));
24632
2.59k
    }
24633
0
    { // 'except' '*' expression 'as' expression ':' block
24634
2.59k
        if (p->error_indicator) {
24635
0
            p->level--;
24636
0
            return NULL;
24637
0
        }
24638
2.59k
        D(fprintf(stderr, "%*c> invalid_except_star_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression 'as' expression ':' block"));
24639
2.59k
        Token * _keyword;
24640
2.59k
        Token * _keyword_1;
24641
2.59k
        Token * _literal;
24642
2.59k
        Token * _literal_1;
24643
2.59k
        expr_ty a;
24644
2.59k
        asdl_stmt_seq* block_var;
24645
2.59k
        expr_ty expression_var;
24646
2.59k
        if (
24647
2.59k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
24648
2.59k
            &&
24649
2.59k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
24650
2.59k
            &&
24651
2.59k
            (expression_var = expression_rule(p))  // expression
24652
2.59k
            &&
24653
2.59k
            (_keyword_1 = _PyPegen_expect_token(p, 685))  // token='as'
24654
2.59k
            &&
24655
2.59k
            (a = expression_rule(p))  // expression
24656
2.59k
            &&
24657
2.59k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
24658
2.59k
            &&
24659
2.59k
            (block_var = block_rule(p))  // block
24660
2.59k
        )
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.59k
        p->mark = _mark;
24672
2.59k
        D(fprintf(stderr, "%*c%s invalid_except_star_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24673
2.59k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression 'as' expression ':' block"));
24674
2.59k
    }
24675
0
    _res = NULL;
24676
2.59k
  done:
24677
2.59k
    p->level--;
24678
2.59k
    return _res;
24679
2.59k
}
24680
24681
// invalid_finally_stmt: 'finally' ':' NEWLINE !INDENT
24682
static void *
24683
invalid_finally_stmt_rule(Parser *p)
24684
3.20k
{
24685
3.20k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24686
0
        _Pypegen_stack_overflow(p);
24687
0
    }
24688
3.20k
    if (p->error_indicator) {
24689
0
        p->level--;
24690
0
        return NULL;
24691
0
    }
24692
3.20k
    void * _res = NULL;
24693
3.20k
    int _mark = p->mark;
24694
3.20k
    { // 'finally' ':' NEWLINE !INDENT
24695
3.20k
        if (p->error_indicator) {
24696
0
            p->level--;
24697
0
            return NULL;
24698
0
        }
24699
3.20k
        D(fprintf(stderr, "%*c> invalid_finally_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally' ':' NEWLINE !INDENT"));
24700
3.20k
        Token * _literal;
24701
3.20k
        Token * a;
24702
3.20k
        Token * newline_var;
24703
3.20k
        if (
24704
3.20k
            (a = _PyPegen_expect_token(p, 678))  // token='finally'
24705
3.20k
            &&
24706
3.20k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24707
3.20k
            &&
24708
3.20k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24709
3.20k
            &&
24710
3.20k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24711
3.20k
        )
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.20k
        p->mark = _mark;
24723
3.20k
        D(fprintf(stderr, "%*c%s invalid_finally_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24724
3.20k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally' ':' NEWLINE !INDENT"));
24725
3.20k
    }
24726
0
    _res = NULL;
24727
3.20k
  done:
24728
3.20k
    p->level--;
24729
3.20k
    return _res;
24730
3.20k
}
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.77k
{
24738
6.77k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24739
0
        _Pypegen_stack_overflow(p);
24740
0
    }
24741
6.77k
    if (p->error_indicator) {
24742
0
        p->level--;
24743
0
        return NULL;
24744
0
    }
24745
6.77k
    void * _res = NULL;
24746
6.77k
    int _mark = p->mark;
24747
6.77k
    { // 'except' expression ['as' NAME] ':' NEWLINE !INDENT
24748
6.77k
        if (p->error_indicator) {
24749
0
            p->level--;
24750
0
            return NULL;
24751
0
        }
24752
6.77k
        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.77k
        Token * _literal;
24754
6.77k
        void *_opt_var;
24755
6.77k
        UNUSED(_opt_var); // Silence compiler warnings
24756
6.77k
        Token * a;
24757
6.77k
        expr_ty expression_var;
24758
6.77k
        Token * newline_var;
24759
6.77k
        if (
24760
6.77k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24761
6.77k
            &&
24762
6.77k
            (expression_var = expression_rule(p))  // expression
24763
6.77k
            &&
24764
6.77k
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
24765
6.77k
            &&
24766
6.77k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24767
6.77k
            &&
24768
6.77k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24769
6.77k
            &&
24770
6.77k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24771
6.77k
        )
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.77k
        p->mark = _mark;
24783
6.77k
        D(fprintf(stderr, "%*c%s invalid_except_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
24784
6.77k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ['as' NAME] ':' NEWLINE !INDENT"));
24785
6.77k
    }
24786
0
    { // 'except' ':' NEWLINE !INDENT
24787
6.77k
        if (p->error_indicator) {
24788
2
            p->level--;
24789
2
            return NULL;
24790
2
        }
24791
6.77k
        D(fprintf(stderr, "%*c> invalid_except_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
24792
6.77k
        Token * _literal;
24793
6.77k
        Token * a;
24794
6.77k
        Token * newline_var;
24795
6.77k
        if (
24796
6.77k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24797
6.77k
            &&
24798
6.77k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24799
6.77k
            &&
24800
6.77k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24801
6.77k
            &&
24802
6.77k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24803
6.77k
        )
24804
1
        {
24805
1
            D(fprintf(stderr, "%*c+ invalid_except_stmt_indent[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
24806
1
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'except' statement on line %d" , a -> lineno );
24807
1
            if (_res == NULL && PyErr_Occurred()) {
24808
1
                p->error_indicator = 1;
24809
1
                p->level--;
24810
1
                return NULL;
24811
1
            }
24812
0
            goto done;
24813
1
        }
24814
6.77k
        p->mark = _mark;
24815
6.77k
        D(fprintf(stderr, "%*c%s invalid_except_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
24816
6.77k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
24817
6.77k
    }
24818
0
    _res = NULL;
24819
6.77k
  done:
24820
6.77k
    p->level--;
24821
6.77k
    return _res;
24822
6.77k
}
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.97k
{
24829
4.97k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24830
0
        _Pypegen_stack_overflow(p);
24831
0
    }
24832
4.97k
    if (p->error_indicator) {
24833
0
        p->level--;
24834
0
        return NULL;
24835
0
    }
24836
4.97k
    void * _res = NULL;
24837
4.97k
    int _mark = p->mark;
24838
4.97k
    { // 'except' '*' expression ['as' NAME] ':' NEWLINE !INDENT
24839
4.97k
        if (p->error_indicator) {
24840
0
            p->level--;
24841
0
            return NULL;
24842
0
        }
24843
4.97k
        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.97k
        Token * _literal;
24845
4.97k
        Token * _literal_1;
24846
4.97k
        void *_opt_var;
24847
4.97k
        UNUSED(_opt_var); // Silence compiler warnings
24848
4.97k
        Token * a;
24849
4.97k
        expr_ty expression_var;
24850
4.97k
        Token * newline_var;
24851
4.97k
        if (
24852
4.97k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24853
4.97k
            &&
24854
4.97k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
24855
4.97k
            &&
24856
4.97k
            (expression_var = expression_rule(p))  // expression
24857
4.97k
            &&
24858
4.97k
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
24859
4.97k
            &&
24860
4.97k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
24861
4.97k
            &&
24862
4.97k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24863
4.97k
            &&
24864
4.97k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24865
4.97k
        )
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.97k
        p->mark = _mark;
24877
4.97k
        D(fprintf(stderr, "%*c%s invalid_except_star_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
24878
4.97k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression ['as' NAME] ':' NEWLINE !INDENT"));
24879
4.97k
    }
24880
0
    _res = NULL;
24881
4.97k
  done:
24882
4.97k
    p->level--;
24883
4.97k
    return _res;
24884
4.97k
}
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
4
        {
24953
4
            D(fprintf(stderr, "%*c+ invalid_match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE !INDENT"));
24954
4
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'match' statement on line %d" , a -> lineno );
24955
4
            if (_res == NULL && PyErr_Occurred()) {
24956
4
                p->error_indicator = 1;
24957
4
                p->level--;
24958
4
                return NULL;
24959
4
            }
24960
0
            goto done;
24961
4
        }
24962
22.1k
        p->mark = _mark;
24963
22.1k
        D(fprintf(stderr, "%*c%s invalid_match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24964
22.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr ':' NEWLINE !INDENT"));
24965
22.1k
    }
24966
0
    _res = NULL;
24967
22.1k
  done:
24968
22.1k
    p->level--;
24969
22.1k
    return _res;
24970
22.1k
}
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
75
        {
25008
75
            D(fprintf(stderr, "%*c+ invalid_case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? NEWLINE"));
25009
75
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
25010
75
            if (_res == NULL && PyErr_Occurred()) {
25011
75
                p->error_indicator = 1;
25012
75
                p->level--;
25013
75
                return NULL;
25014
75
            }
25015
0
            goto done;
25016
75
        }
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
60
            p->level--;
25024
60
            return NULL;
25025
60
        }
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.4k
{
25070
47.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25071
0
        _Pypegen_stack_overflow(p);
25072
0
    }
25073
47.4k
    if (p->error_indicator) {
25074
0
        p->level--;
25075
0
        return NULL;
25076
0
    }
25077
47.4k
    void * _res = NULL;
25078
47.4k
    int _mark = p->mark;
25079
47.4k
    { // or_pattern 'as' "_"
25080
47.4k
        if (p->error_indicator) {
25081
0
            p->level--;
25082
0
            return NULL;
25083
0
        }
25084
47.4k
        D(fprintf(stderr, "%*c> invalid_as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' \"_\""));
25085
47.4k
        Token * _keyword;
25086
47.4k
        expr_ty a;
25087
47.4k
        pattern_ty or_pattern_var;
25088
47.4k
        if (
25089
47.4k
            (or_pattern_var = or_pattern_rule(p))  // or_pattern
25090
47.4k
            &&
25091
47.4k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
25092
47.4k
            &&
25093
47.4k
            (a = _PyPegen_expect_soft_keyword(p, "_"))  // soft_keyword='"_"'
25094
47.4k
        )
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.4k
        p->mark = _mark;
25106
47.4k
        D(fprintf(stderr, "%*c%s invalid_as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
25107
47.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' \"_\""));
25108
47.4k
    }
25109
0
    { // or_pattern 'as' expression
25110
47.4k
        if (p->error_indicator) {
25111
0
            p->level--;
25112
0
            return NULL;
25113
0
        }
25114
47.4k
        D(fprintf(stderr, "%*c> invalid_as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' expression"));
25115
47.4k
        Token * _keyword;
25116
47.4k
        expr_ty a;
25117
47.4k
        pattern_ty or_pattern_var;
25118
47.4k
        if (
25119
47.4k
            (or_pattern_var = or_pattern_rule(p))  // or_pattern
25120
47.4k
            &&
25121
47.4k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
25122
47.4k
            &&
25123
47.4k
            (a = expression_rule(p))  // expression
25124
47.4k
        )
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.4k
        p->mark = _mark;
25136
47.4k
        D(fprintf(stderr, "%*c%s invalid_as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
25137
47.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' expression"));
25138
47.4k
    }
25139
0
    _res = NULL;
25140
47.4k
  done:
25141
47.4k
    p->level--;
25142
47.4k
    return _res;
25143
47.4k
}
25144
25145
// invalid_class_pattern: name_or_attr '(' invalid_class_argument_pattern
25146
static void *
25147
invalid_class_pattern_rule(Parser *p)
25148
8.92k
{
25149
8.92k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25150
0
        _Pypegen_stack_overflow(p);
25151
0
    }
25152
8.92k
    if (p->error_indicator) {
25153
0
        p->level--;
25154
0
        return NULL;
25155
0
    }
25156
8.92k
    void * _res = NULL;
25157
8.92k
    int _mark = p->mark;
25158
8.92k
    { // name_or_attr '(' invalid_class_argument_pattern
25159
8.92k
        if (p->error_indicator) {
25160
0
            p->level--;
25161
0
            return NULL;
25162
0
        }
25163
8.92k
        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.92k
        Token * _literal;
25165
8.92k
        asdl_pattern_seq* a;
25166
8.92k
        expr_ty name_or_attr_var;
25167
8.92k
        if (
25168
8.92k
            (name_or_attr_var = name_or_attr_rule(p))  // name_or_attr
25169
8.92k
            &&
25170
8.92k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
25171
8.92k
            &&
25172
8.92k
            (a = invalid_class_argument_pattern_rule(p))  // invalid_class_argument_pattern
25173
8.92k
        )
25174
664
        {
25175
664
            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
664
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( PyPegen_first_item ( a , pattern_ty ) , PyPegen_last_item ( a , pattern_ty ) , "positional patterns follow keyword patterns" );
25177
664
            if (_res == NULL && PyErr_Occurred()) {
25178
664
                p->error_indicator = 1;
25179
664
                p->level--;
25180
664
                return NULL;
25181
664
            }
25182
0
            goto done;
25183
664
        }
25184
8.25k
        p->mark = _mark;
25185
8.25k
        D(fprintf(stderr, "%*c%s invalid_class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
25186
8.25k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern"));
25187
8.25k
    }
25188
0
    _res = NULL;
25189
8.25k
  done:
25190
8.25k
    p->level--;
25191
8.25k
    return _res;
25192
8.25k
}
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.47k
{
25199
3.47k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25200
0
        _Pypegen_stack_overflow(p);
25201
0
    }
25202
3.47k
    if (p->error_indicator) {
25203
0
        p->level--;
25204
0
        return NULL;
25205
0
    }
25206
3.47k
    asdl_pattern_seq* _res = NULL;
25207
3.47k
    int _mark = p->mark;
25208
3.47k
    { // [positional_patterns ','] keyword_patterns ',' positional_patterns
25209
3.47k
        if (p->error_indicator) {
25210
0
            p->level--;
25211
0
            return NULL;
25212
0
        }
25213
3.47k
        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.47k
        Token * _literal;
25215
3.47k
        void *_opt_var;
25216
3.47k
        UNUSED(_opt_var); // Silence compiler warnings
25217
3.47k
        asdl_pattern_seq* a;
25218
3.47k
        asdl_seq* keyword_patterns_var;
25219
3.47k
        if (
25220
3.47k
            (_opt_var = _tmp_146_rule(p), !p->error_indicator)  // [positional_patterns ',']
25221
3.47k
            &&
25222
3.47k
            (keyword_patterns_var = keyword_patterns_rule(p))  // keyword_patterns
25223
3.47k
            &&
25224
3.47k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
25225
3.47k
            &&
25226
3.47k
            (a = positional_patterns_rule(p))  // positional_patterns
25227
3.47k
        )
25228
664
        {
25229
664
            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
664
            _res = a;
25231
664
            if (_res == NULL && PyErr_Occurred()) {
25232
0
                p->error_indicator = 1;
25233
0
                p->level--;
25234
0
                return NULL;
25235
0
            }
25236
664
            goto done;
25237
664
        }
25238
2.81k
        p->mark = _mark;
25239
2.81k
        D(fprintf(stderr, "%*c%s invalid_class_argument_pattern[%d-%d]: %s failed!\n", p->level, ' ',
25240
2.81k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns"));
25241
2.81k
    }
25242
0
    _res = NULL;
25243
3.47k
  done:
25244
3.47k
    p->level--;
25245
3.47k
    return _res;
25246
2.81k
}
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
3
            p->level--;
25296
3
            return NULL;
25297
3
        }
25298
764
        D(fprintf(stderr, "%*c> invalid_if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' NEWLINE !INDENT"));
25299
764
        Token * _literal;
25300
764
        Token * a;
25301
764
        expr_ty a_1;
25302
764
        Token * newline_var;
25303
764
        if (
25304
764
            (a = _PyPegen_expect_token(p, 687))  // token='if'
25305
764
            &&
25306
764
            (a_1 = named_expression_rule(p))  // named_expression
25307
764
            &&
25308
764
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25309
764
            &&
25310
764
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25311
764
            &&
25312
764
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25313
764
        )
25314
5
        {
25315
5
            D(fprintf(stderr, "%*c+ invalid_if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' NEWLINE !INDENT"));
25316
5
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'if' statement on line %d" , a -> lineno );
25317
5
            if (_res == NULL && PyErr_Occurred()) {
25318
5
                p->error_indicator = 1;
25319
5
                p->level--;
25320
5
                return NULL;
25321
5
            }
25322
0
            goto done;
25323
5
        }
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.02k
{
25424
3.02k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25425
0
        _Pypegen_stack_overflow(p);
25426
0
    }
25427
3.02k
    if (p->error_indicator) {
25428
0
        p->level--;
25429
0
        return NULL;
25430
0
    }
25431
3.02k
    void * _res = NULL;
25432
3.02k
    int _mark = p->mark;
25433
3.02k
    { // 'else' ':' NEWLINE !INDENT
25434
3.02k
        if (p->error_indicator) {
25435
0
            p->level--;
25436
0
            return NULL;
25437
0
        }
25438
3.02k
        D(fprintf(stderr, "%*c> invalid_else_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else' ':' NEWLINE !INDENT"));
25439
3.02k
        Token * _literal;
25440
3.02k
        Token * a;
25441
3.02k
        Token * newline_var;
25442
3.02k
        if (
25443
3.02k
            (a = _PyPegen_expect_token(p, 691))  // token='else'
25444
3.02k
            &&
25445
3.02k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25446
3.02k
            &&
25447
3.02k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25448
3.02k
            &&
25449
3.02k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25450
3.02k
        )
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.02k
        p->mark = _mark;
25462
3.02k
        D(fprintf(stderr, "%*c%s invalid_else_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25463
3.02k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else' ':' NEWLINE !INDENT"));
25464
3.02k
    }
25465
0
    { // 'else' ':' block 'elif'
25466
3.02k
        if (p->error_indicator) {
25467
1
            p->level--;
25468
1
            return NULL;
25469
1
        }
25470
3.02k
        D(fprintf(stderr, "%*c> invalid_else_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else' ':' block 'elif'"));
25471
3.02k
        Token * _keyword;
25472
3.02k
        Token * _keyword_1;
25473
3.02k
        Token * _literal;
25474
3.02k
        asdl_stmt_seq* block_var;
25475
3.02k
        if (
25476
3.02k
            (_keyword = _PyPegen_expect_token(p, 691))  // token='else'
25477
3.02k
            &&
25478
3.02k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25479
3.02k
            &&
25480
3.02k
            (block_var = block_rule(p))  // block
25481
3.02k
            &&
25482
3.02k
            (_keyword_1 = _PyPegen_expect_token(p, 692))  // token='elif'
25483
3.02k
        )
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.02k
        p->mark = _mark;
25495
3.02k
        D(fprintf(stderr, "%*c%s invalid_else_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25496
3.02k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else' ':' block 'elif'"));
25497
3.02k
    }
25498
0
    _res = NULL;
25499
3.02k
  done:
25500
3.02k
    p->level--;
25501
3.02k
    return _res;
25502
3.02k
}
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
648
{
25596
648
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25597
0
        _Pypegen_stack_overflow(p);
25598
0
    }
25599
648
    if (p->error_indicator) {
25600
0
        p->level--;
25601
0
        return NULL;
25602
0
    }
25603
648
    void * _res = NULL;
25604
648
    int _mark = p->mark;
25605
648
    { // 'async'? 'for' star_targets 'in' star_expressions NEWLINE
25606
648
        if (p->error_indicator) {
25607
0
            p->level--;
25608
0
            return NULL;
25609
0
        }
25610
648
        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
648
        Token * _keyword;
25612
648
        Token * _keyword_1;
25613
648
        void *_opt_var;
25614
648
        UNUSED(_opt_var); // Silence compiler warnings
25615
648
        Token * newline_var;
25616
648
        expr_ty star_expressions_var;
25617
648
        expr_ty star_targets_var;
25618
648
        if (
25619
648
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
25620
648
            &&
25621
648
            (_keyword = _PyPegen_expect_token(p, 699))  // token='for'
25622
648
            &&
25623
648
            (star_targets_var = star_targets_rule(p))  // star_targets
25624
648
            &&
25625
648
            (_keyword_1 = _PyPegen_expect_token(p, 700))  // token='in'
25626
648
            &&
25627
648
            (star_expressions_var = star_expressions_rule(p))  // star_expressions
25628
648
            &&
25629
648
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25630
648
        )
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
645
        p->mark = _mark;
25642
645
        D(fprintf(stderr, "%*c%s invalid_for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25643
645
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'for' star_targets 'in' star_expressions NEWLINE"));
25644
645
    }
25645
0
    { // 'async'? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT
25646
645
        if (p->error_indicator) {
25647
3
            p->level--;
25648
3
            return NULL;
25649
3
        }
25650
642
        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
642
        Token * _keyword;
25652
642
        Token * _literal;
25653
642
        void *_opt_var;
25654
642
        UNUSED(_opt_var); // Silence compiler warnings
25655
642
        Token * a;
25656
642
        Token * newline_var;
25657
642
        expr_ty star_expressions_var;
25658
642
        expr_ty star_targets_var;
25659
642
        if (
25660
642
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
25661
642
            &&
25662
642
            (a = _PyPegen_expect_token(p, 699))  // token='for'
25663
642
            &&
25664
642
            (star_targets_var = star_targets_rule(p))  // star_targets
25665
642
            &&
25666
642
            (_keyword = _PyPegen_expect_token(p, 700))  // token='in'
25667
642
            &&
25668
642
            (star_expressions_var = star_expressions_rule(p))  // star_expressions
25669
642
            &&
25670
642
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25671
642
            &&
25672
642
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25673
642
            &&
25674
642
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25675
642
        )
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
638
        p->mark = _mark;
25687
638
        D(fprintf(stderr, "%*c%s invalid_for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25688
638
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT"));
25689
638
    }
25690
0
    _res = NULL;
25691
638
  done:
25692
638
    p->level--;
25693
638
    return _res;
25694
638
}
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.86k
{
25702
3.86k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25703
0
        _Pypegen_stack_overflow(p);
25704
0
    }
25705
3.86k
    if (p->error_indicator) {
25706
0
        p->level--;
25707
0
        return NULL;
25708
0
    }
25709
3.86k
    void * _res = NULL;
25710
3.86k
    int _mark = p->mark;
25711
3.86k
    { // 'async'? 'def' NAME type_params? '(' params? ')' ['->' expression] ':' NEWLINE !INDENT
25712
3.86k
        if (p->error_indicator) {
25713
0
            p->level--;
25714
0
            return NULL;
25715
0
        }
25716
3.86k
        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.86k
        Token * _literal;
25718
3.86k
        Token * _literal_1;
25719
3.86k
        Token * _literal_2;
25720
3.86k
        void *_opt_var;
25721
3.86k
        UNUSED(_opt_var); // Silence compiler warnings
25722
3.86k
        void *_opt_var_1;
25723
3.86k
        UNUSED(_opt_var_1); // Silence compiler warnings
25724
3.86k
        void *_opt_var_2;
25725
3.86k
        UNUSED(_opt_var_2); // Silence compiler warnings
25726
3.86k
        void *_opt_var_3;
25727
3.86k
        UNUSED(_opt_var_3); // Silence compiler warnings
25728
3.86k
        Token * a;
25729
3.86k
        expr_ty name_var;
25730
3.86k
        Token * newline_var;
25731
3.86k
        if (
25732
3.86k
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
25733
3.86k
            &&
25734
3.86k
            (a = _PyPegen_expect_token(p, 704))  // token='def'
25735
3.86k
            &&
25736
3.86k
            (name_var = _PyPegen_name_token(p))  // NAME
25737
3.86k
            &&
25738
3.86k
            (_opt_var_1 = type_params_rule(p), !p->error_indicator)  // type_params?
25739
3.86k
            &&
25740
3.86k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
25741
3.86k
            &&
25742
3.86k
            (_opt_var_2 = params_rule(p), !p->error_indicator)  // params?
25743
3.86k
            &&
25744
3.86k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
25745
3.86k
            &&
25746
3.86k
            (_opt_var_3 = _tmp_26_rule(p), !p->error_indicator)  // ['->' expression]
25747
3.86k
            &&
25748
3.86k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
25749
3.86k
            &&
25750
3.86k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25751
3.86k
            &&
25752
3.86k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25753
3.86k
        )
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.84k
        p->mark = _mark;
25765
3.84k
        D(fprintf(stderr, "%*c%s invalid_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
25766
3.84k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'def' NAME type_params? '(' params? ')' ['->' expression] ':' NEWLINE !INDENT"));
25767
3.84k
    }
25768
0
    { // 'async'? 'def' NAME type_params? &&'(' params? ')' ['->' expression] &&':' func_type_comment? block
25769
3.84k
        if (p->error_indicator) {
25770
57
            p->level--;
25771
57
            return NULL;
25772
57
        }
25773
3.78k
        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.78k
        Token * _keyword;
25775
3.78k
        Token * _literal;
25776
3.78k
        Token * _literal_1;
25777
3.78k
        Token * _literal_2;
25778
3.78k
        void *_opt_var;
25779
3.78k
        UNUSED(_opt_var); // Silence compiler warnings
25780
3.78k
        void *_opt_var_1;
25781
3.78k
        UNUSED(_opt_var_1); // Silence compiler warnings
25782
3.78k
        void *_opt_var_2;
25783
3.78k
        UNUSED(_opt_var_2); // Silence compiler warnings
25784
3.78k
        void *_opt_var_3;
25785
3.78k
        UNUSED(_opt_var_3); // Silence compiler warnings
25786
3.78k
        void *_opt_var_4;
25787
3.78k
        UNUSED(_opt_var_4); // Silence compiler warnings
25788
3.78k
        asdl_stmt_seq* block_var;
25789
3.78k
        expr_ty name_var;
25790
3.78k
        if (
25791
3.78k
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
25792
3.78k
            &&
25793
3.78k
            (_keyword = _PyPegen_expect_token(p, 704))  // token='def'
25794
3.78k
            &&
25795
3.78k
            (name_var = _PyPegen_name_token(p))  // NAME
25796
3.78k
            &&
25797
3.78k
            (_opt_var_1 = type_params_rule(p), !p->error_indicator)  // type_params?
25798
3.78k
            &&
25799
3.78k
            (_literal = _PyPegen_expect_forced_token(p, 7, "("))  // forced_token='('
25800
3.78k
            &&
25801
3.78k
            (_opt_var_2 = params_rule(p), !p->error_indicator)  // params?
25802
3.78k
            &&
25803
3.78k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
25804
3.78k
            &&
25805
3.78k
            (_opt_var_3 = _tmp_26_rule(p), !p->error_indicator)  // ['->' expression]
25806
3.78k
            &&
25807
3.78k
            (_literal_2 = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
25808
3.78k
            &&
25809
3.78k
            (_opt_var_4 = func_type_comment_rule(p), !p->error_indicator)  // func_type_comment?
25810
3.78k
            &&
25811
3.78k
            (block_var = block_rule(p))  // block
25812
3.78k
        )
25813
2.01k
        {
25814
2.01k
            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
2.01k
            _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
2.01k
            goto done;
25817
2.01k
        }
25818
1.77k
        p->mark = _mark;
25819
1.77k
        D(fprintf(stderr, "%*c%s invalid_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
25820
1.77k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'def' NAME type_params? &&'(' params? ')' ['->' expression] &&':' func_type_comment? block"));
25821
1.77k
    }
25822
0
    _res = NULL;
25823
3.78k
  done:
25824
3.78k
    p->level--;
25825
3.78k
    return _res;
25826
1.77k
}
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.25k
{
25834
1.25k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25835
0
        _Pypegen_stack_overflow(p);
25836
0
    }
25837
1.25k
    if (p->error_indicator) {
25838
0
        p->level--;
25839
0
        return NULL;
25840
0
    }
25841
1.25k
    void * _res = NULL;
25842
1.25k
    int _mark = p->mark;
25843
1.25k
    { // 'class' NAME type_params? ['(' arguments? ')'] NEWLINE
25844
1.25k
        if (p->error_indicator) {
25845
0
            p->level--;
25846
0
            return NULL;
25847
0
        }
25848
1.25k
        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.25k
        Token * _keyword;
25850
1.25k
        void *_opt_var;
25851
1.25k
        UNUSED(_opt_var); // Silence compiler warnings
25852
1.25k
        void *_opt_var_1;
25853
1.25k
        UNUSED(_opt_var_1); // Silence compiler warnings
25854
1.25k
        expr_ty name_var;
25855
1.25k
        Token * newline_var;
25856
1.25k
        if (
25857
1.25k
            (_keyword = _PyPegen_expect_token(p, 706))  // token='class'
25858
1.25k
            &&
25859
1.25k
            (name_var = _PyPegen_name_token(p))  // NAME
25860
1.25k
            &&
25861
1.25k
            (_opt_var = type_params_rule(p), !p->error_indicator)  // type_params?
25862
1.25k
            &&
25863
1.25k
            (_opt_var_1 = _tmp_25_rule(p), !p->error_indicator)  // ['(' arguments? ')']
25864
1.25k
            &&
25865
1.25k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25866
1.25k
        )
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.24k
        p->mark = _mark;
25878
1.24k
        D(fprintf(stderr, "%*c%s invalid_class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
25879
1.24k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] NEWLINE"));
25880
1.24k
    }
25881
0
    { // 'class' NAME type_params? ['(' arguments? ')'] ':' NEWLINE !INDENT
25882
1.24k
        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
6
        {
25911
6
            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
6
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after class definition on line %d" , a -> lineno );
25913
6
            if (_res == NULL && PyErr_Occurred()) {
25914
6
                p->error_indicator = 1;
25915
6
                p->level--;
25916
6
                return NULL;
25917
6
            }
25918
0
            goto done;
25919
6
        }
25920
1.23k
        p->mark = _mark;
25921
1.23k
        D(fprintf(stderr, "%*c%s invalid_class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
25922
1.23k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] ':' NEWLINE !INDENT"));
25923
1.23k
    }
25924
0
    _res = NULL;
25925
1.23k
  done:
25926
1.23k
    p->level--;
25927
1.23k
    return _res;
25928
1.23k
}
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.5k
{
25937
11.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25938
0
        _Pypegen_stack_overflow(p);
25939
0
    }
25940
11.5k
    if (p->error_indicator) {
25941
0
        p->level--;
25942
0
        return NULL;
25943
0
    }
25944
11.5k
    void * _res = NULL;
25945
11.5k
    int _mark = p->mark;
25946
11.5k
    { // ','.double_starred_kvpair+ ',' invalid_kvpair
25947
11.5k
        if (p->error_indicator) {
25948
0
            p->level--;
25949
0
            return NULL;
25950
0
        }
25951
11.5k
        D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair"));
25952
11.5k
        asdl_seq * _gather_83_var;
25953
11.5k
        Token * _literal;
25954
11.5k
        void *invalid_kvpair_var;
25955
11.5k
        if (
25956
11.5k
            (_gather_83_var = _gather_83_rule(p))  // ','.double_starred_kvpair+
25957
11.5k
            &&
25958
11.5k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
25959
11.5k
            &&
25960
11.5k
            (invalid_kvpair_var = invalid_kvpair_rule(p))  // invalid_kvpair
25961
11.5k
        )
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.5k
        p->mark = _mark;
25968
11.5k
        D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
25969
11.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair"));
25970
11.5k
    }
25971
0
    { // expression ':' '*' bitwise_or
25972
11.5k
        if (p->error_indicator) {
25973
71
            p->level--;
25974
71
            return NULL;
25975
71
        }
25976
11.4k
        D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
25977
11.4k
        Token * _literal;
25978
11.4k
        Token * a;
25979
11.4k
        expr_ty bitwise_or_var;
25980
11.4k
        expr_ty expression_var;
25981
11.4k
        if (
25982
11.4k
            (expression_var = expression_rule(p))  // expression
25983
11.4k
            &&
25984
11.4k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25985
11.4k
            &&
25986
11.4k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
25987
11.4k
            &&
25988
11.4k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
25989
11.4k
        )
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.4k
        p->mark = _mark;
26001
11.4k
        D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
26002
11.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' '*' bitwise_or"));
26003
11.4k
    }
26004
0
    { // expression ':' &('}' | ',')
26005
11.4k
        if (p->error_indicator) {
26006
261
            p->level--;
26007
261
            return NULL;
26008
261
        }
26009
11.1k
        D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
26010
11.1k
        Token * a;
26011
11.1k
        expr_ty expression_var;
26012
11.1k
        if (
26013
11.1k
            (expression_var = expression_rule(p))  // expression
26014
11.1k
            &&
26015
11.1k
            (a = _PyPegen_expect_token(p, 11))  // token=':'
26016
11.1k
            &&
26017
11.1k
            _PyPegen_lookahead(1, _tmp_147_rule, p)
26018
11.1k
        )
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.1k
        p->mark = _mark;
26030
11.1k
        D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
26031
11.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' &('}' | ',')"));
26032
11.1k
    }
26033
0
    _res = NULL;
26034
11.1k
  done:
26035
11.1k
    p->level--;
26036
11.1k
    return _res;
26037
11.1k
}
26038
26039
// invalid_kvpair:
26040
//     | expression !(':')
26041
//     | expression ':' '*' bitwise_or
26042
//     | expression ':' &('}' | ',')
26043
static void *
26044
invalid_kvpair_rule(Parser *p)
26045
956
{
26046
956
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26047
0
        _Pypegen_stack_overflow(p);
26048
0
    }
26049
956
    if (p->error_indicator) {
26050
0
        p->level--;
26051
0
        return NULL;
26052
0
    }
26053
956
    void * _res = NULL;
26054
956
    int _mark = p->mark;
26055
956
    { // expression !(':')
26056
956
        if (p->error_indicator) {
26057
0
            p->level--;
26058
0
            return NULL;
26059
0
        }
26060
956
        D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !(':')"));
26061
956
        expr_ty a;
26062
956
        if (
26063
956
            (a = expression_rule(p))  // expression
26064
956
            &&
26065
956
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 11)  // token=(':')
26066
956
        )
26067
3
        {
26068
3
            D(fprintf(stderr, "%*c+ invalid_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !(':')"));
26069
3
            _res = RAISE_ERROR_KNOWN_LOCATION ( p , PyExc_SyntaxError , a -> lineno , a -> end_col_offset - 1 , a -> end_lineno , - 1 , "':' expected after dictionary key" );
26070
3
            if (_res == NULL && PyErr_Occurred()) {
26071
3
                p->error_indicator = 1;
26072
3
                p->level--;
26073
3
                return NULL;
26074
3
            }
26075
0
            goto done;
26076
3
        }
26077
953
        p->mark = _mark;
26078
953
        D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
26079
953
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !(':')"));
26080
953
    }
26081
0
    { // expression ':' '*' bitwise_or
26082
953
        if (p->error_indicator) {
26083
0
            p->level--;
26084
0
            return NULL;
26085
0
        }
26086
953
        D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
26087
953
        Token * _literal;
26088
953
        Token * a;
26089
953
        expr_ty bitwise_or_var;
26090
953
        expr_ty expression_var;
26091
953
        if (
26092
953
            (expression_var = expression_rule(p))  // expression
26093
953
            &&
26094
953
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
26095
953
            &&
26096
953
            (a = _PyPegen_expect_token(p, 16))  // token='*'
26097
953
            &&
26098
953
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
26099
953
        )
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
952
        p->mark = _mark;
26111
952
        D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
26112
952
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' '*' bitwise_or"));
26113
952
    }
26114
0
    { // expression ':' &('}' | ',')
26115
952
        if (p->error_indicator) {
26116
66
            p->level--;
26117
66
            return NULL;
26118
66
        }
26119
886
        D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
26120
886
        Token * a;
26121
886
        expr_ty expression_var;
26122
886
        if (
26123
886
            (expression_var = expression_rule(p))  // expression
26124
886
            &&
26125
886
            (a = _PyPegen_expect_token(p, 11))  // token=':'
26126
886
            &&
26127
886
            _PyPegen_lookahead(1, _tmp_147_rule, p)
26128
886
        )
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
885
        p->mark = _mark;
26140
885
        D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
26141
885
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' &('}' | ',')"));
26142
885
    }
26143
0
    _res = NULL;
26144
885
  done:
26145
885
    p->level--;
26146
885
    return _res;
26147
885
}
26148
26149
// invalid_starred_expression_unpacking: '*' expression '=' expression
26150
static void *
26151
invalid_starred_expression_unpacking_rule(Parser *p)
26152
178k
{
26153
178k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26154
1
        _Pypegen_stack_overflow(p);
26155
1
    }
26156
178k
    if (p->error_indicator) {
26157
1
        p->level--;
26158
1
        return NULL;
26159
1
    }
26160
178k
    void * _res = NULL;
26161
178k
    int _mark = p->mark;
26162
178k
    { // '*' expression '=' expression
26163
178k
        if (p->error_indicator) {
26164
0
            p->level--;
26165
0
            return NULL;
26166
0
        }
26167
178k
        D(fprintf(stderr, "%*c> invalid_starred_expression_unpacking[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression '=' expression"));
26168
178k
        Token * _literal;
26169
178k
        Token * a;
26170
178k
        expr_ty b;
26171
178k
        expr_ty expression_var;
26172
178k
        if (
26173
178k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
26174
178k
            &&
26175
178k
            (expression_var = expression_rule(p))  // expression
26176
178k
            &&
26177
178k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
26178
178k
            &&
26179
178k
            (b = expression_rule(p))  // expression
26180
178k
        )
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
178k
        p->mark = _mark;
26192
178k
        D(fprintf(stderr, "%*c%s invalid_starred_expression_unpacking[%d-%d]: %s failed!\n", p->level, ' ',
26193
178k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression '=' expression"));
26194
178k
    }
26195
0
    _res = NULL;
26196
178k
  done:
26197
178k
    p->level--;
26198
178k
    return _res;
26199
178k
}
26200
26201
// invalid_starred_expression: '*'
26202
static void *
26203
invalid_starred_expression_rule(Parser *p)
26204
164k
{
26205
164k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26206
0
        _Pypegen_stack_overflow(p);
26207
0
    }
26208
164k
    if (p->error_indicator) {
26209
0
        p->level--;
26210
0
        return NULL;
26211
0
    }
26212
164k
    void * _res = NULL;
26213
164k
    int _mark = p->mark;
26214
164k
    { // '*'
26215
164k
        if (p->error_indicator) {
26216
0
            p->level--;
26217
0
            return NULL;
26218
0
        }
26219
164k
        D(fprintf(stderr, "%*c> invalid_starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
26220
164k
        Token * _literal;
26221
164k
        if (
26222
164k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
26223
164k
        )
26224
57
        {
26225
57
            D(fprintf(stderr, "%*c+ invalid_starred_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
26226
57
            _res = RAISE_SYNTAX_ERROR ( "Invalid star expression" );
26227
57
            if (_res == NULL && PyErr_Occurred()) {
26228
57
                p->error_indicator = 1;
26229
57
                p->level--;
26230
57
                return NULL;
26231
57
            }
26232
0
            goto done;
26233
57
        }
26234
163k
        p->mark = _mark;
26235
163k
        D(fprintf(stderr, "%*c%s invalid_starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
26236
163k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
26237
163k
    }
26238
0
    _res = NULL;
26239
163k
  done:
26240
163k
    p->level--;
26241
163k
    return _res;
26242
163k
}
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.93k
{
26259
7.93k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26260
1
        _Pypegen_stack_overflow(p);
26261
1
    }
26262
7.93k
    if (p->error_indicator) {
26263
1
        p->level--;
26264
1
        return NULL;
26265
1
    }
26266
7.93k
    void * _res = NULL;
26267
7.93k
    int _mark = p->mark;
26268
7.93k
    { // '{' '='
26269
7.93k
        if (p->error_indicator) {
26270
0
            p->level--;
26271
0
            return NULL;
26272
0
        }
26273
7.93k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '='"));
26274
7.93k
        Token * _literal;
26275
7.93k
        Token * a;
26276
7.93k
        if (
26277
7.93k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26278
7.93k
            &&
26279
7.93k
            (a = _PyPegen_expect_token(p, 22))  // token='='
26280
7.93k
        )
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.90k
        p->mark = _mark;
26292
7.90k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26293
7.90k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '='"));
26294
7.90k
    }
26295
0
    { // '{' '!'
26296
7.90k
        if (p->error_indicator) {
26297
0
            p->level--;
26298
0
            return NULL;
26299
0
        }
26300
7.90k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '!'"));
26301
7.90k
        Token * _literal;
26302
7.90k
        Token * a;
26303
7.90k
        if (
26304
7.90k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26305
7.90k
            &&
26306
7.90k
            (a = _PyPegen_expect_token(p, 54))  // token='!'
26307
7.90k
        )
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.89k
        p->mark = _mark;
26319
7.89k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26320
7.89k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '!'"));
26321
7.89k
    }
26322
0
    { // '{' ':'
26323
7.89k
        if (p->error_indicator) {
26324
0
            p->level--;
26325
0
            return NULL;
26326
0
        }
26327
7.89k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' ':'"));
26328
7.89k
        Token * _literal;
26329
7.89k
        Token * a;
26330
7.89k
        if (
26331
7.89k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26332
7.89k
            &&
26333
7.89k
            (a = _PyPegen_expect_token(p, 11))  // token=':'
26334
7.89k
        )
26335
79
        {
26336
79
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' ':'"));
26337
79
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "f-string: valid expression required before ':'" );
26338
79
            if (_res == NULL && PyErr_Occurred()) {
26339
79
                p->error_indicator = 1;
26340
79
                p->level--;
26341
79
                return NULL;
26342
79
            }
26343
0
            goto done;
26344
79
        }
26345
7.81k
        p->mark = _mark;
26346
7.81k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26347
7.81k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' ':'"));
26348
7.81k
    }
26349
0
    { // '{' '}'
26350
7.81k
        if (p->error_indicator) {
26351
0
            p->level--;
26352
0
            return NULL;
26353
0
        }
26354
7.81k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
26355
7.81k
        Token * _literal;
26356
7.81k
        Token * a;
26357
7.81k
        if (
26358
7.81k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26359
7.81k
            &&
26360
7.81k
            (a = _PyPegen_expect_token(p, 26))  // token='}'
26361
7.81k
        )
26362
19
        {
26363
19
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
26364
19
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "f-string: valid expression required before '}'" );
26365
19
            if (_res == NULL && PyErr_Occurred()) {
26366
19
                p->error_indicator = 1;
26367
19
                p->level--;
26368
19
                return NULL;
26369
19
            }
26370
0
            goto done;
26371
19
        }
26372
7.79k
        p->mark = _mark;
26373
7.79k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26374
7.79k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '}'"));
26375
7.79k
    }
26376
0
    { // '{' !annotated_rhs
26377
7.79k
        if (p->error_indicator) {
26378
0
            p->level--;
26379
0
            return NULL;
26380
0
        }
26381
7.79k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' !annotated_rhs"));
26382
7.79k
        Token * _literal;
26383
7.79k
        if (
26384
7.79k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26385
7.79k
            &&
26386
7.79k
            _PyPegen_lookahead_for_expr(0, annotated_rhs_rule, p)
26387
7.79k
        )
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.75k
        p->mark = _mark;
26399
7.75k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26400
7.75k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' !annotated_rhs"));
26401
7.75k
    }
26402
0
    { // '{' annotated_rhs !('=' | '!' | ':' | '}')
26403
7.75k
        if (p->error_indicator) {
26404
0
            p->level--;
26405
0
            return NULL;
26406
0
        }
26407
7.75k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
26408
7.75k
        Token * _literal;
26409
7.75k
        expr_ty annotated_rhs_var;
26410
7.75k
        if (
26411
7.75k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26412
7.75k
            &&
26413
7.75k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26414
7.75k
            &&
26415
7.75k
            _PyPegen_lookahead(0, _tmp_148_rule, p)
26416
7.75k
        )
26417
27
        {
26418
27
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
26419
27
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting '=', or '!', or ':', or '}'" );
26420
27
            if (_res == NULL && PyErr_Occurred()) {
26421
27
                p->error_indicator = 1;
26422
27
                p->level--;
26423
27
                return NULL;
26424
27
            }
26425
0
            goto done;
26426
27
        }
26427
7.72k
        p->mark = _mark;
26428
7.72k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26429
7.72k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
26430
7.72k
    }
26431
0
    { // '{' annotated_rhs '=' !('!' | ':' | '}')
26432
7.72k
        if (p->error_indicator) {
26433
0
            p->level--;
26434
0
            return NULL;
26435
0
        }
26436
7.72k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
26437
7.72k
        Token * _literal;
26438
7.72k
        Token * _literal_1;
26439
7.72k
        expr_ty annotated_rhs_var;
26440
7.72k
        if (
26441
7.72k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26442
7.72k
            &&
26443
7.72k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26444
7.72k
            &&
26445
7.72k
            (_literal_1 = _PyPegen_expect_token(p, 22))  // token='='
26446
7.72k
            &&
26447
7.72k
            _PyPegen_lookahead(0, _tmp_149_rule, p)
26448
7.72k
        )
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.71k
        p->mark = _mark;
26460
7.71k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26461
7.71k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
26462
7.71k
    }
26463
0
    { // '{' annotated_rhs '='? invalid_fstring_conversion_character
26464
7.71k
        if (p->error_indicator) {
26465
0
            p->level--;
26466
0
            return NULL;
26467
0
        }
26468
7.71k
        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.71k
        Token * _literal;
26470
7.71k
        void *_opt_var;
26471
7.71k
        UNUSED(_opt_var); // Silence compiler warnings
26472
7.71k
        expr_ty annotated_rhs_var;
26473
7.71k
        void *invalid_fstring_conversion_character_var;
26474
7.71k
        if (
26475
7.71k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26476
7.71k
            &&
26477
7.71k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26478
7.71k
            &&
26479
7.71k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26480
7.71k
            &&
26481
7.71k
            (invalid_fstring_conversion_character_var = invalid_fstring_conversion_character_rule(p))  // invalid_fstring_conversion_character
26482
7.71k
        )
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.71k
        p->mark = _mark;
26489
7.71k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26490
7.71k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? invalid_fstring_conversion_character"));
26491
7.71k
    }
26492
0
    { // '{' annotated_rhs '='? ['!' NAME] !(':' | '}')
26493
7.71k
        if (p->error_indicator) {
26494
17
            p->level--;
26495
17
            return NULL;
26496
17
        }
26497
7.70k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
26498
7.70k
        Token * _literal;
26499
7.70k
        void *_opt_var;
26500
7.70k
        UNUSED(_opt_var); // Silence compiler warnings
26501
7.70k
        void *_opt_var_1;
26502
7.70k
        UNUSED(_opt_var_1); // Silence compiler warnings
26503
7.70k
        expr_ty annotated_rhs_var;
26504
7.70k
        if (
26505
7.70k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26506
7.70k
            &&
26507
7.70k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26508
7.70k
            &&
26509
7.70k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26510
7.70k
            &&
26511
7.70k
            (_opt_var_1 = _tmp_150_rule(p), !p->error_indicator)  // ['!' NAME]
26512
7.70k
            &&
26513
7.70k
            _PyPegen_lookahead(0, _tmp_151_rule, p)
26514
7.70k
        )
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.69k
        p->mark = _mark;
26526
7.69k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26527
7.69k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
26528
7.69k
    }
26529
0
    { // '{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'
26530
7.69k
        if (p->error_indicator) {
26531
0
            p->level--;
26532
0
            return NULL;
26533
0
        }
26534
7.69k
        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.69k
        Token * _literal;
26536
7.69k
        Token * _literal_1;
26537
7.69k
        asdl_seq * _loop0_76_var;
26538
7.69k
        void *_opt_var;
26539
7.69k
        UNUSED(_opt_var); // Silence compiler warnings
26540
7.69k
        void *_opt_var_1;
26541
7.69k
        UNUSED(_opt_var_1); // Silence compiler warnings
26542
7.69k
        expr_ty annotated_rhs_var;
26543
7.69k
        if (
26544
7.69k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26545
7.69k
            &&
26546
7.69k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26547
7.69k
            &&
26548
7.69k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26549
7.69k
            &&
26550
7.69k
            (_opt_var_1 = _tmp_150_rule(p), !p->error_indicator)  // ['!' NAME]
26551
7.69k
            &&
26552
7.69k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
26553
7.69k
            &&
26554
7.69k
            (_loop0_76_var = _loop0_76_rule(p))  // fstring_format_spec*
26555
7.69k
            &&
26556
7.69k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 26)  // token='}'
26557
7.69k
        )
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.50k
        p->mark = _mark;
26569
7.50k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26570
7.50k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'"));
26571
7.50k
    }
26572
0
    { // '{' annotated_rhs '='? ['!' NAME] !'}'
26573
7.50k
        if (p->error_indicator) {
26574
0
            p->level--;
26575
0
            return NULL;
26576
0
        }
26577
7.50k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
26578
7.50k
        Token * _literal;
26579
7.50k
        void *_opt_var;
26580
7.50k
        UNUSED(_opt_var); // Silence compiler warnings
26581
7.50k
        void *_opt_var_1;
26582
7.50k
        UNUSED(_opt_var_1); // Silence compiler warnings
26583
7.50k
        expr_ty annotated_rhs_var;
26584
7.50k
        if (
26585
7.50k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26586
7.50k
            &&
26587
7.50k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26588
7.50k
            &&
26589
7.50k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26590
7.50k
            &&
26591
7.50k
            (_opt_var_1 = _tmp_150_rule(p), !p->error_indicator)  // ['!' NAME]
26592
7.50k
            &&
26593
7.50k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 26)  // token='}'
26594
7.50k
        )
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.50k
        p->mark = _mark;
26606
7.50k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26607
7.50k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
26608
7.50k
    }
26609
0
    _res = NULL;
26610
7.50k
  done:
26611
7.50k
    p->level--;
26612
7.50k
    return _res;
26613
7.50k
}
26614
26615
// invalid_fstring_conversion_character: '!' &(':' | '}') | '!' !NAME
26616
static void *
26617
invalid_fstring_conversion_character_rule(Parser *p)
26618
211
{
26619
211
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26620
0
        _Pypegen_stack_overflow(p);
26621
0
    }
26622
211
    if (p->error_indicator) {
26623
0
        p->level--;
26624
0
        return NULL;
26625
0
    }
26626
211
    void * _res = NULL;
26627
211
    int _mark = p->mark;
26628
211
    { // '!' &(':' | '}')
26629
211
        if (p->error_indicator) {
26630
0
            p->level--;
26631
0
            return NULL;
26632
0
        }
26633
211
        D(fprintf(stderr, "%*c> invalid_fstring_conversion_character[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' &(':' | '}')"));
26634
211
        Token * _literal;
26635
211
        if (
26636
211
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
26637
211
            &&
26638
211
            _PyPegen_lookahead(1, _tmp_151_rule, p)
26639
211
        )
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
205
        p->mark = _mark;
26651
205
        D(fprintf(stderr, "%*c%s invalid_fstring_conversion_character[%d-%d]: %s failed!\n", p->level, ' ',
26652
205
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' &(':' | '}')"));
26653
205
    }
26654
0
    { // '!' !NAME
26655
205
        if (p->error_indicator) {
26656
0
            p->level--;
26657
0
            return NULL;
26658
0
        }
26659
205
        D(fprintf(stderr, "%*c> invalid_fstring_conversion_character[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' !NAME"));
26660
205
        Token * _literal;
26661
205
        if (
26662
205
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
26663
205
            &&
26664
205
            _PyPegen_lookahead_for_expr(0, _PyPegen_name_token, p)
26665
205
        )
26666
11
        {
26667
11
            D(fprintf(stderr, "%*c+ invalid_fstring_conversion_character[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!' !NAME"));
26668
11
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: invalid conversion character" );
26669
11
            if (_res == NULL && PyErr_Occurred()) {
26670
11
                p->error_indicator = 1;
26671
11
                p->level--;
26672
11
                return NULL;
26673
11
            }
26674
0
            goto done;
26675
11
        }
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.03k
{
26701
4.03k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26702
1
        _Pypegen_stack_overflow(p);
26703
1
    }
26704
4.03k
    if (p->error_indicator) {
26705
1
        p->level--;
26706
1
        return NULL;
26707
1
    }
26708
4.03k
    void * _res = NULL;
26709
4.03k
    int _mark = p->mark;
26710
4.03k
    { // '{' '='
26711
4.03k
        if (p->error_indicator) {
26712
0
            p->level--;
26713
0
            return NULL;
26714
0
        }
26715
4.03k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '='"));
26716
4.03k
        Token * _literal;
26717
4.03k
        Token * a;
26718
4.03k
        if (
26719
4.03k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26720
4.03k
            &&
26721
4.03k
            (a = _PyPegen_expect_token(p, 22))  // token='='
26722
4.03k
        )
26723
4
        {
26724
4
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '='"));
26725
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "t-string: valid expression required before '='" );
26726
4
            if (_res == NULL && PyErr_Occurred()) {
26727
4
                p->error_indicator = 1;
26728
4
                p->level--;
26729
4
                return NULL;
26730
4
            }
26731
0
            goto done;
26732
4
        }
26733
4.02k
        p->mark = _mark;
26734
4.02k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26735
4.02k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '='"));
26736
4.02k
    }
26737
0
    { // '{' '!'
26738
4.02k
        if (p->error_indicator) {
26739
0
            p->level--;
26740
0
            return NULL;
26741
0
        }
26742
4.02k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '!'"));
26743
4.02k
        Token * _literal;
26744
4.02k
        Token * a;
26745
4.02k
        if (
26746
4.02k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26747
4.02k
            &&
26748
4.02k
            (a = _PyPegen_expect_token(p, 54))  // token='!'
26749
4.02k
        )
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.01k
        p->mark = _mark;
26761
4.01k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26762
4.01k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '!'"));
26763
4.01k
    }
26764
0
    { // '{' ':'
26765
4.01k
        if (p->error_indicator) {
26766
0
            p->level--;
26767
0
            return NULL;
26768
0
        }
26769
4.01k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' ':'"));
26770
4.01k
        Token * _literal;
26771
4.01k
        Token * a;
26772
4.01k
        if (
26773
4.01k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26774
4.01k
            &&
26775
4.01k
            (a = _PyPegen_expect_token(p, 11))  // token=':'
26776
4.01k
        )
26777
17
        {
26778
17
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' ':'"));
26779
17
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "t-string: valid expression required before ':'" );
26780
17
            if (_res == NULL && PyErr_Occurred()) {
26781
17
                p->error_indicator = 1;
26782
17
                p->level--;
26783
17
                return NULL;
26784
17
            }
26785
0
            goto done;
26786
17
        }
26787
4.00k
        p->mark = _mark;
26788
4.00k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26789
4.00k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' ':'"));
26790
4.00k
    }
26791
0
    { // '{' '}'
26792
4.00k
        if (p->error_indicator) {
26793
0
            p->level--;
26794
0
            return NULL;
26795
0
        }
26796
4.00k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
26797
4.00k
        Token * _literal;
26798
4.00k
        Token * a;
26799
4.00k
        if (
26800
4.00k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26801
4.00k
            &&
26802
4.00k
            (a = _PyPegen_expect_token(p, 26))  // token='}'
26803
4.00k
        )
26804
15
        {
26805
15
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
26806
15
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "t-string: valid expression required before '}'" );
26807
15
            if (_res == NULL && PyErr_Occurred()) {
26808
15
                p->error_indicator = 1;
26809
15
                p->level--;
26810
15
                return NULL;
26811
15
            }
26812
0
            goto done;
26813
15
        }
26814
3.98k
        p->mark = _mark;
26815
3.98k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26816
3.98k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '}'"));
26817
3.98k
    }
26818
0
    { // '{' !annotated_rhs
26819
3.98k
        if (p->error_indicator) {
26820
0
            p->level--;
26821
0
            return NULL;
26822
0
        }
26823
3.98k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' !annotated_rhs"));
26824
3.98k
        Token * _literal;
26825
3.98k
        if (
26826
3.98k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26827
3.98k
            &&
26828
3.98k
            _PyPegen_lookahead_for_expr(0, annotated_rhs_rule, p)
26829
3.98k
        )
26830
44
        {
26831
44
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' !annotated_rhs"));
26832
44
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting a valid expression after '{'" );
26833
44
            if (_res == NULL && PyErr_Occurred()) {
26834
44
                p->error_indicator = 1;
26835
44
                p->level--;
26836
44
                return NULL;
26837
44
            }
26838
0
            goto done;
26839
44
        }
26840
3.94k
        p->mark = _mark;
26841
3.94k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26842
3.94k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' !annotated_rhs"));
26843
3.94k
    }
26844
0
    { // '{' annotated_rhs !('=' | '!' | ':' | '}')
26845
3.94k
        if (p->error_indicator) {
26846
0
            p->level--;
26847
0
            return NULL;
26848
0
        }
26849
3.94k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
26850
3.94k
        Token * _literal;
26851
3.94k
        expr_ty annotated_rhs_var;
26852
3.94k
        if (
26853
3.94k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26854
3.94k
            &&
26855
3.94k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26856
3.94k
            &&
26857
3.94k
            _PyPegen_lookahead(0, _tmp_148_rule, p)
26858
3.94k
        )
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
3.92k
        p->mark = _mark;
26870
3.92k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26871
3.92k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
26872
3.92k
    }
26873
0
    { // '{' annotated_rhs '=' !('!' | ':' | '}')
26874
3.92k
        if (p->error_indicator) {
26875
0
            p->level--;
26876
0
            return NULL;
26877
0
        }
26878
3.92k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
26879
3.92k
        Token * _literal;
26880
3.92k
        Token * _literal_1;
26881
3.92k
        expr_ty annotated_rhs_var;
26882
3.92k
        if (
26883
3.92k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26884
3.92k
            &&
26885
3.92k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26886
3.92k
            &&
26887
3.92k
            (_literal_1 = _PyPegen_expect_token(p, 22))  // token='='
26888
3.92k
            &&
26889
3.92k
            _PyPegen_lookahead(0, _tmp_149_rule, p)
26890
3.92k
        )
26891
2
        {
26892
2
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
26893
2
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting '!', or ':', or '}'" );
26894
2
            if (_res == NULL && PyErr_Occurred()) {
26895
2
                p->error_indicator = 1;
26896
2
                p->level--;
26897
2
                return NULL;
26898
2
            }
26899
0
            goto done;
26900
2
        }
26901
3.91k
        p->mark = _mark;
26902
3.91k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26903
3.91k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
26904
3.91k
    }
26905
0
    { // '{' annotated_rhs '='? invalid_tstring_conversion_character
26906
3.91k
        if (p->error_indicator) {
26907
0
            p->level--;
26908
0
            return NULL;
26909
0
        }
26910
3.91k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? invalid_tstring_conversion_character"));
26911
3.91k
        Token * _literal;
26912
3.91k
        void *_opt_var;
26913
3.91k
        UNUSED(_opt_var); // Silence compiler warnings
26914
3.91k
        expr_ty annotated_rhs_var;
26915
3.91k
        void *invalid_tstring_conversion_character_var;
26916
3.91k
        if (
26917
3.91k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26918
3.91k
            &&
26919
3.91k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26920
3.91k
            &&
26921
3.91k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26922
3.91k
            &&
26923
3.91k
            (invalid_tstring_conversion_character_var = invalid_tstring_conversion_character_rule(p))  // invalid_tstring_conversion_character
26924
3.91k
        )
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
3.91k
        p->mark = _mark;
26931
3.91k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26932
3.91k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? invalid_tstring_conversion_character"));
26933
3.91k
    }
26934
0
    { // '{' annotated_rhs '='? ['!' NAME] !(':' | '}')
26935
3.91k
        if (p->error_indicator) {
26936
4
            p->level--;
26937
4
            return NULL;
26938
4
        }
26939
3.91k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
26940
3.91k
        Token * _literal;
26941
3.91k
        void *_opt_var;
26942
3.91k
        UNUSED(_opt_var); // Silence compiler warnings
26943
3.91k
        void *_opt_var_1;
26944
3.91k
        UNUSED(_opt_var_1); // Silence compiler warnings
26945
3.91k
        expr_ty annotated_rhs_var;
26946
3.91k
        if (
26947
3.91k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26948
3.91k
            &&
26949
3.91k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26950
3.91k
            &&
26951
3.91k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26952
3.91k
            &&
26953
3.91k
            (_opt_var_1 = _tmp_150_rule(p), !p->error_indicator)  // ['!' NAME]
26954
3.91k
            &&
26955
3.91k
            _PyPegen_lookahead(0, _tmp_151_rule, p)
26956
3.91k
        )
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
3.91k
        p->mark = _mark;
26968
3.91k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26969
3.91k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
26970
3.91k
    }
26971
0
    { // '{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'
26972
3.91k
        if (p->error_indicator) {
26973
0
            p->level--;
26974
0
            return NULL;
26975
0
        }
26976
3.91k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'"));
26977
3.91k
        Token * _literal;
26978
3.91k
        Token * _literal_1;
26979
3.91k
        asdl_seq * _loop0_76_var;
26980
3.91k
        void *_opt_var;
26981
3.91k
        UNUSED(_opt_var); // Silence compiler warnings
26982
3.91k
        void *_opt_var_1;
26983
3.91k
        UNUSED(_opt_var_1); // Silence compiler warnings
26984
3.91k
        expr_ty annotated_rhs_var;
26985
3.91k
        if (
26986
3.91k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26987
3.91k
            &&
26988
3.91k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26989
3.91k
            &&
26990
3.91k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26991
3.91k
            &&
26992
3.91k
            (_opt_var_1 = _tmp_150_rule(p), !p->error_indicator)  // ['!' NAME]
26993
3.91k
            &&
26994
3.91k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
26995
3.91k
            &&
26996
3.91k
            (_loop0_76_var = _loop0_76_rule(p))  // fstring_format_spec*
26997
3.91k
            &&
26998
3.91k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 26)  // token='}'
26999
3.91k
        )
27000
20
        {
27001
20
            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
20
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting '}', or format specs" );
27003
20
            if (_res == NULL && PyErr_Occurred()) {
27004
20
                p->error_indicator = 1;
27005
20
                p->level--;
27006
20
                return NULL;
27007
20
            }
27008
0
            goto done;
27009
20
        }
27010
3.89k
        p->mark = _mark;
27011
3.89k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
27012
3.89k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'"));
27013
3.89k
    }
27014
0
    { // '{' annotated_rhs '='? ['!' NAME] !'}'
27015
3.89k
        if (p->error_indicator) {
27016
0
            p->level--;
27017
0
            return NULL;
27018
0
        }
27019
3.89k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
27020
3.89k
        Token * _literal;
27021
3.89k
        void *_opt_var;
27022
3.89k
        UNUSED(_opt_var); // Silence compiler warnings
27023
3.89k
        void *_opt_var_1;
27024
3.89k
        UNUSED(_opt_var_1); // Silence compiler warnings
27025
3.89k
        expr_ty annotated_rhs_var;
27026
3.89k
        if (
27027
3.89k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
27028
3.89k
            &&
27029
3.89k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
27030
3.89k
            &&
27031
3.89k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
27032
3.89k
            &&
27033
3.89k
            (_opt_var_1 = _tmp_150_rule(p), !p->error_indicator)  // ['!' NAME]
27034
3.89k
            &&
27035
3.89k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 26)  // token='}'
27036
3.89k
        )
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
3.89k
        p->mark = _mark;
27048
3.89k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
27049
3.89k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
27050
3.89k
    }
27051
0
    _res = NULL;
27052
3.89k
  done:
27053
3.89k
    p->level--;
27054
3.89k
    return _res;
27055
3.89k
}
27056
27057
// invalid_tstring_conversion_character: '!' &(':' | '}') | '!' !NAME
27058
static void *
27059
invalid_tstring_conversion_character_rule(Parser *p)
27060
27
{
27061
27
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27062
0
        _Pypegen_stack_overflow(p);
27063
0
    }
27064
27
    if (p->error_indicator) {
27065
0
        p->level--;
27066
0
        return NULL;
27067
0
    }
27068
27
    void * _res = NULL;
27069
27
    int _mark = p->mark;
27070
27
    { // '!' &(':' | '}')
27071
27
        if (p->error_indicator) {
27072
0
            p->level--;
27073
0
            return NULL;
27074
0
        }
27075
27
        D(fprintf(stderr, "%*c> invalid_tstring_conversion_character[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' &(':' | '}')"));
27076
27
        Token * _literal;
27077
27
        if (
27078
27
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
27079
27
            &&
27080
27
            _PyPegen_lookahead(1, _tmp_151_rule, p)
27081
27
        )
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
26
        p->mark = _mark;
27093
26
        D(fprintf(stderr, "%*c%s invalid_tstring_conversion_character[%d-%d]: %s failed!\n", p->level, ' ',
27094
26
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' &(':' | '}')"));
27095
26
    }
27096
0
    { // '!' !NAME
27097
26
        if (p->error_indicator) {
27098
0
            p->level--;
27099
0
            return NULL;
27100
0
        }
27101
26
        D(fprintf(stderr, "%*c> invalid_tstring_conversion_character[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' !NAME"));
27102
26
        Token * _literal;
27103
26
        if (
27104
26
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
27105
26
            &&
27106
26
            _PyPegen_lookahead_for_expr(0, _PyPegen_name_token, p)
27107
26
        )
27108
3
        {
27109
3
            D(fprintf(stderr, "%*c+ invalid_tstring_conversion_character[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!' !NAME"));
27110
3
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: invalid conversion character" );
27111
3
            if (_res == NULL && PyErr_Occurred()) {
27112
3
                p->error_indicator = 1;
27113
3
                p->level--;
27114
3
                return NULL;
27115
3
            }
27116
0
            goto done;
27117
3
        }
27118
23
        p->mark = _mark;
27119
23
        D(fprintf(stderr, "%*c%s invalid_tstring_conversion_character[%d-%d]: %s failed!\n", p->level, ' ',
27120
23
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' !NAME"));
27121
23
    }
27122
0
    _res = NULL;
27123
23
  done:
27124
23
    p->level--;
27125
23
    return _res;
27126
23
}
27127
27128
// invalid_arithmetic: sum ('+' | '-' | '*' | '/' | '%' | '//' | '@') 'not' inversion
27129
static void *
27130
invalid_arithmetic_rule(Parser *p)
27131
301k
{
27132
301k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27133
0
        _Pypegen_stack_overflow(p);
27134
0
    }
27135
301k
    if (p->error_indicator) {
27136
0
        p->level--;
27137
0
        return NULL;
27138
0
    }
27139
301k
    void * _res = NULL;
27140
301k
    int _mark = p->mark;
27141
301k
    { // sum ('+' | '-' | '*' | '/' | '%' | '//' | '@') 'not' inversion
27142
301k
        if (p->error_indicator) {
27143
0
            p->level--;
27144
0
            return NULL;
27145
0
        }
27146
301k
        D(fprintf(stderr, "%*c> invalid_arithmetic[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum ('+' | '-' | '*' | '/' | '%' | '//' | '@') 'not' inversion"));
27147
301k
        void *_tmp_152_var;
27148
301k
        Token * a;
27149
301k
        expr_ty b;
27150
301k
        expr_ty sum_var;
27151
301k
        if (
27152
301k
            (sum_var = sum_rule(p))  // sum
27153
301k
            &&
27154
301k
            (_tmp_152_var = _tmp_152_rule(p))  // '+' | '-' | '*' | '/' | '%' | '//' | '@'
27155
301k
            &&
27156
301k
            (a = _PyPegen_expect_token(p, 708))  // token='not'
27157
301k
            &&
27158
301k
            (b = inversion_rule(p))  // inversion
27159
301k
        )
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
301k
        p->mark = _mark;
27171
301k
        D(fprintf(stderr, "%*c%s invalid_arithmetic[%d-%d]: %s failed!\n", p->level, ' ',
27172
301k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum ('+' | '-' | '*' | '/' | '%' | '//' | '@') 'not' inversion"));
27173
301k
    }
27174
0
    _res = NULL;
27175
301k
  done:
27176
301k
    p->level--;
27177
301k
    return _res;
27178
301k
}
27179
27180
// invalid_factor: ('+' | '-' | '~') 'not' factor
27181
static void *
27182
invalid_factor_rule(Parser *p)
27183
312k
{
27184
312k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27185
0
        _Pypegen_stack_overflow(p);
27186
0
    }
27187
312k
    if (p->error_indicator) {
27188
0
        p->level--;
27189
0
        return NULL;
27190
0
    }
27191
312k
    void * _res = NULL;
27192
312k
    int _mark = p->mark;
27193
312k
    { // ('+' | '-' | '~') 'not' factor
27194
312k
        if (p->error_indicator) {
27195
0
            p->level--;
27196
0
            return NULL;
27197
0
        }
27198
312k
        D(fprintf(stderr, "%*c> invalid_factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('+' | '-' | '~') 'not' factor"));
27199
312k
        void *_tmp_153_var;
27200
312k
        Token * a;
27201
312k
        expr_ty b;
27202
312k
        if (
27203
312k
            (_tmp_153_var = _tmp_153_rule(p))  // '+' | '-' | '~'
27204
312k
            &&
27205
312k
            (a = _PyPegen_expect_token(p, 708))  // token='not'
27206
312k
            &&
27207
312k
            (b = factor_rule(p))  // factor
27208
312k
        )
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
312k
        p->mark = _mark;
27220
312k
        D(fprintf(stderr, "%*c%s invalid_factor[%d-%d]: %s failed!\n", p->level, ' ',
27221
312k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('+' | '-' | '~') 'not' factor"));
27222
312k
    }
27223
0
    _res = NULL;
27224
312k
  done:
27225
312k
    p->level--;
27226
312k
    return _res;
27227
312k
}
27228
27229
// invalid_type_params: '[' ']'
27230
static void *
27231
invalid_type_params_rule(Parser *p)
27232
8.23k
{
27233
8.23k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27234
0
        _Pypegen_stack_overflow(p);
27235
0
    }
27236
8.23k
    if (p->error_indicator) {
27237
0
        p->level--;
27238
0
        return NULL;
27239
0
    }
27240
8.23k
    void * _res = NULL;
27241
8.23k
    int _mark = p->mark;
27242
8.23k
    { // '[' ']'
27243
8.23k
        if (p->error_indicator) {
27244
0
            p->level--;
27245
0
            return NULL;
27246
0
        }
27247
8.23k
        D(fprintf(stderr, "%*c> invalid_type_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' ']'"));
27248
8.23k
        Token * _literal;
27249
8.23k
        Token * token;
27250
8.23k
        if (
27251
8.23k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
27252
8.23k
            &&
27253
8.23k
            (token = _PyPegen_expect_token(p, 10))  // token=']'
27254
8.23k
        )
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.23k
        p->mark = _mark;
27266
8.23k
        D(fprintf(stderr, "%*c%s invalid_type_params[%d-%d]: %s failed!\n", p->level, ' ',
27267
8.23k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' ']'"));
27268
8.23k
    }
27269
0
    _res = NULL;
27270
8.23k
  done:
27271
8.23k
    p->level--;
27272
8.23k
    return _res;
27273
8.23k
}
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
49.6k
{
27346
49.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27347
0
        _Pypegen_stack_overflow(p);
27348
0
    }
27349
49.6k
    if (p->error_indicator) {
27350
0
        p->level--;
27351
0
        return NULL;
27352
0
    }
27353
49.6k
    void *_res = NULL;
27354
49.6k
    int _mark = p->mark;
27355
49.6k
    void **_children = PyMem_Malloc(sizeof(void *));
27356
49.6k
    if (!_children) {
27357
0
        p->error_indicator = 1;
27358
0
        PyErr_NoMemory();
27359
0
        p->level--;
27360
0
        return NULL;
27361
0
    }
27362
49.6k
    Py_ssize_t _children_capacity = 1;
27363
49.6k
    Py_ssize_t _n = 0;
27364
49.6k
    { // statement
27365
49.6k
        if (p->error_indicator) {
27366
0
            p->level--;
27367
0
            return NULL;
27368
0
        }
27369
49.6k
        D(fprintf(stderr, "%*c> _loop1_2[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement"));
27370
49.6k
        asdl_stmt_seq* statement_var;
27371
49.6k
        while (
27372
163k
            (statement_var = statement_rule(p))  // statement
27373
49.6k
        )
27374
113k
        {
27375
113k
            _res = statement_var;
27376
113k
            if (_n == _children_capacity) {
27377
22.4k
                _children_capacity *= 2;
27378
22.4k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27379
22.4k
                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.4k
                _children = _new_children;
27387
22.4k
            }
27388
113k
            _children[_n++] = _res;
27389
113k
            _mark = p->mark;
27390
113k
        }
27391
49.6k
        p->mark = _mark;
27392
49.6k
        D(fprintf(stderr, "%*c%s _loop1_2[%d-%d]: %s failed!\n", p->level, ' ',
27393
49.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement"));
27394
49.6k
    }
27395
49.6k
    if (_n == 0 || p->error_indicator) {
27396
22.5k
        PyMem_Free(_children);
27397
22.5k
        p->level--;
27398
22.5k
        return NULL;
27399
22.5k
    }
27400
27.0k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27401
27.0k
    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
136k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27409
27.0k
    PyMem_Free(_children);
27410
27.0k
    p->level--;
27411
27.0k
    return _seq;
27412
27.0k
}
27413
27414
// _loop0_3: ';' simple_stmt
27415
static asdl_seq *
27416
_loop0_3_rule(Parser *p)
27417
12.9k
{
27418
12.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27419
0
        _Pypegen_stack_overflow(p);
27420
0
    }
27421
12.9k
    if (p->error_indicator) {
27422
0
        p->level--;
27423
0
        return NULL;
27424
0
    }
27425
12.9k
    void *_res = NULL;
27426
12.9k
    int _mark = p->mark;
27427
12.9k
    void **_children = PyMem_Malloc(sizeof(void *));
27428
12.9k
    if (!_children) {
27429
0
        p->error_indicator = 1;
27430
0
        PyErr_NoMemory();
27431
0
        p->level--;
27432
0
        return NULL;
27433
0
    }
27434
12.9k
    Py_ssize_t _children_capacity = 1;
27435
12.9k
    Py_ssize_t _n = 0;
27436
12.9k
    { // ';' simple_stmt
27437
12.9k
        if (p->error_indicator) {
27438
0
            p->level--;
27439
0
            return NULL;
27440
0
        }
27441
12.9k
        D(fprintf(stderr, "%*c> _loop0_3[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';' simple_stmt"));
27442
12.9k
        Token * _literal;
27443
12.9k
        stmt_ty elem;
27444
12.9k
        while (
27445
31.5k
            (_literal = _PyPegen_expect_token(p, 13))  // token=';'
27446
31.5k
            &&
27447
31.5k
            (elem = simple_stmt_rule(p))  // simple_stmt
27448
12.9k
        )
27449
18.6k
        {
27450
18.6k
            _res = elem;
27451
18.6k
            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.6k
            if (_n == _children_capacity) {
27458
3.25k
                _children_capacity *= 2;
27459
3.25k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27460
3.25k
                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.25k
                _children = _new_children;
27468
3.25k
            }
27469
18.6k
            _children[_n++] = _res;
27470
18.6k
            _mark = p->mark;
27471
18.6k
        }
27472
12.9k
        p->mark = _mark;
27473
12.9k
        D(fprintf(stderr, "%*c%s _loop0_3[%d-%d]: %s failed!\n", p->level, ' ',
27474
12.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';' simple_stmt"));
27475
12.9k
    }
27476
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27477
12.9k
    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.5k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27485
12.9k
    PyMem_Free(_children);
27486
12.9k
    p->level--;
27487
12.9k
    return _seq;
27488
12.9k
}
27489
27490
// _gather_4: simple_stmt _loop0_3
27491
static asdl_seq *
27492
_gather_4_rule(Parser *p)
27493
48.3k
{
27494
48.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27495
0
        _Pypegen_stack_overflow(p);
27496
0
    }
27497
48.3k
    if (p->error_indicator) {
27498
0
        p->level--;
27499
0
        return NULL;
27500
0
    }
27501
48.3k
    asdl_seq * _res = NULL;
27502
48.3k
    int _mark = p->mark;
27503
48.3k
    { // simple_stmt _loop0_3
27504
48.3k
        if (p->error_indicator) {
27505
0
            p->level--;
27506
0
            return NULL;
27507
0
        }
27508
48.3k
        D(fprintf(stderr, "%*c> _gather_4[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt _loop0_3"));
27509
48.3k
        stmt_ty elem;
27510
48.3k
        asdl_seq * seq;
27511
48.3k
        if (
27512
48.3k
            (elem = simple_stmt_rule(p))  // simple_stmt
27513
48.3k
            &&
27514
48.3k
            (seq = _loop0_3_rule(p))  // _loop0_3
27515
48.3k
        )
27516
12.9k
        {
27517
12.9k
            D(fprintf(stderr, "%*c+ _gather_4[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt _loop0_3"));
27518
12.9k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
27519
12.9k
            goto done;
27520
12.9k
        }
27521
35.4k
        p->mark = _mark;
27522
35.4k
        D(fprintf(stderr, "%*c%s _gather_4[%d-%d]: %s failed!\n", p->level, ' ',
27523
35.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt _loop0_3"));
27524
35.4k
    }
27525
0
    _res = NULL;
27526
48.3k
  done:
27527
48.3k
    p->level--;
27528
48.3k
    return _res;
27529
35.4k
}
27530
27531
// _tmp_5: 'import' | 'from'
27532
static void *
27533
_tmp_5_rule(Parser *p)
27534
54.1k
{
27535
54.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27536
0
        _Pypegen_stack_overflow(p);
27537
0
    }
27538
54.1k
    if (p->error_indicator) {
27539
0
        p->level--;
27540
0
        return NULL;
27541
0
    }
27542
54.1k
    void * _res = NULL;
27543
54.1k
    int _mark = p->mark;
27544
54.1k
    { // 'import'
27545
54.1k
        if (p->error_indicator) {
27546
0
            p->level--;
27547
0
            return NULL;
27548
0
        }
27549
54.1k
        D(fprintf(stderr, "%*c> _tmp_5[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import'"));
27550
54.1k
        Token * _keyword;
27551
54.1k
        if (
27552
54.1k
            (_keyword = _PyPegen_expect_token(p, 639))  // token='import'
27553
54.1k
        )
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
51.5k
        p->mark = _mark;
27560
51.5k
        D(fprintf(stderr, "%*c%s _tmp_5[%d-%d]: %s failed!\n", p->level, ' ',
27561
51.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import'"));
27562
51.5k
    }
27563
0
    { // 'from'
27564
51.5k
        if (p->error_indicator) {
27565
0
            p->level--;
27566
0
            return NULL;
27567
0
        }
27568
51.5k
        D(fprintf(stderr, "%*c> _tmp_5[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from'"));
27569
51.5k
        Token * _keyword;
27570
51.5k
        if (
27571
51.5k
            (_keyword = _PyPegen_expect_token(p, 638))  // token='from'
27572
51.5k
        )
27573
3.02k
        {
27574
3.02k
            D(fprintf(stderr, "%*c+ _tmp_5[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from'"));
27575
3.02k
            _res = _keyword;
27576
3.02k
            goto done;
27577
3.02k
        }
27578
48.5k
        p->mark = _mark;
27579
48.5k
        D(fprintf(stderr, "%*c%s _tmp_5[%d-%d]: %s failed!\n", p->level, ' ',
27580
48.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from'"));
27581
48.5k
    }
27582
0
    _res = NULL;
27583
54.1k
  done:
27584
54.1k
    p->level--;
27585
54.1k
    return _res;
27586
48.5k
}
27587
27588
// _tmp_6: 'def' | '@' | 'async'
27589
static void *
27590
_tmp_6_rule(Parser *p)
27591
163k
{
27592
163k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27593
0
        _Pypegen_stack_overflow(p);
27594
0
    }
27595
163k
    if (p->error_indicator) {
27596
0
        p->level--;
27597
0
        return NULL;
27598
0
    }
27599
163k
    void * _res = NULL;
27600
163k
    int _mark = p->mark;
27601
163k
    { // 'def'
27602
163k
        if (p->error_indicator) {
27603
0
            p->level--;
27604
0
            return NULL;
27605
0
        }
27606
163k
        D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'def'"));
27607
163k
        Token * _keyword;
27608
163k
        if (
27609
163k
            (_keyword = _PyPegen_expect_token(p, 704))  // token='def'
27610
163k
        )
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
153k
        p->mark = _mark;
27617
153k
        D(fprintf(stderr, "%*c%s _tmp_6[%d-%d]: %s failed!\n", p->level, ' ',
27618
153k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'def'"));
27619
153k
    }
27620
0
    { // '@'
27621
153k
        if (p->error_indicator) {
27622
1.20k
            p->level--;
27623
1.20k
            return NULL;
27624
1.20k
        }
27625
151k
        D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
27626
151k
        Token * _literal;
27627
151k
        if (
27628
151k
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
27629
151k
        )
27630
1.77k
        {
27631
1.77k
            D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
27632
1.77k
            _res = _literal;
27633
1.77k
            goto done;
27634
1.77k
        }
27635
150k
        p->mark = _mark;
27636
150k
        D(fprintf(stderr, "%*c%s _tmp_6[%d-%d]: %s failed!\n", p->level, ' ',
27637
150k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
27638
150k
    }
27639
0
    { // 'async'
27640
150k
        if (p->error_indicator) {
27641
0
            p->level--;
27642
0
            return NULL;
27643
0
        }
27644
150k
        D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'"));
27645
150k
        Token * _keyword;
27646
150k
        if (
27647
150k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
27648
150k
        )
27649
2.26k
        {
27650
2.26k
            D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'"));
27651
2.26k
            _res = _keyword;
27652
2.26k
            goto done;
27653
2.26k
        }
27654
147k
        p->mark = _mark;
27655
147k
        D(fprintf(stderr, "%*c%s _tmp_6[%d-%d]: %s failed!\n", p->level, ' ',
27656
147k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'"));
27657
147k
    }
27658
0
    _res = NULL;
27659
161k
  done:
27660
161k
    p->level--;
27661
161k
    return _res;
27662
147k
}
27663
27664
// _tmp_7: 'class' | '@'
27665
static void *
27666
_tmp_7_rule(Parser *p)
27667
143k
{
27668
143k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27669
0
        _Pypegen_stack_overflow(p);
27670
0
    }
27671
143k
    if (p->error_indicator) {
27672
0
        p->level--;
27673
0
        return NULL;
27674
0
    }
27675
143k
    void * _res = NULL;
27676
143k
    int _mark = p->mark;
27677
143k
    { // 'class'
27678
143k
        if (p->error_indicator) {
27679
0
            p->level--;
27680
0
            return NULL;
27681
0
        }
27682
143k
        D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class'"));
27683
143k
        Token * _keyword;
27684
143k
        if (
27685
143k
            (_keyword = _PyPegen_expect_token(p, 706))  // token='class'
27686
143k
        )
27687
3.55k
        {
27688
3.55k
            D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class'"));
27689
3.55k
            _res = _keyword;
27690
3.55k
            goto done;
27691
3.55k
        }
27692
140k
        p->mark = _mark;
27693
140k
        D(fprintf(stderr, "%*c%s _tmp_7[%d-%d]: %s failed!\n", p->level, ' ',
27694
140k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class'"));
27695
140k
    }
27696
0
    { // '@'
27697
140k
        if (p->error_indicator) {
27698
0
            p->level--;
27699
0
            return NULL;
27700
0
        }
27701
140k
        D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
27702
140k
        Token * _literal;
27703
140k
        if (
27704
140k
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
27705
140k
        )
27706
778
        {
27707
778
            D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
27708
778
            _res = _literal;
27709
778
            goto done;
27710
778
        }
27711
139k
        p->mark = _mark;
27712
139k
        D(fprintf(stderr, "%*c%s _tmp_7[%d-%d]: %s failed!\n", p->level, ' ',
27713
139k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
27714
139k
    }
27715
0
    _res = NULL;
27716
143k
  done:
27717
143k
    p->level--;
27718
143k
    return _res;
27719
139k
}
27720
27721
// _tmp_8: 'with' | 'async'
27722
static void *
27723
_tmp_8_rule(Parser *p)
27724
139k
{
27725
139k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27726
0
        _Pypegen_stack_overflow(p);
27727
0
    }
27728
139k
    if (p->error_indicator) {
27729
0
        p->level--;
27730
0
        return NULL;
27731
0
    }
27732
139k
    void * _res = NULL;
27733
139k
    int _mark = p->mark;
27734
139k
    { // 'with'
27735
139k
        if (p->error_indicator) {
27736
0
            p->level--;
27737
0
            return NULL;
27738
0
        }
27739
139k
        D(fprintf(stderr, "%*c> _tmp_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with'"));
27740
139k
        Token * _keyword;
27741
139k
        if (
27742
139k
            (_keyword = _PyPegen_expect_token(p, 652))  // token='with'
27743
139k
        )
27744
3.87k
        {
27745
3.87k
            D(fprintf(stderr, "%*c+ _tmp_8[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with'"));
27746
3.87k
            _res = _keyword;
27747
3.87k
            goto done;
27748
3.87k
        }
27749
135k
        p->mark = _mark;
27750
135k
        D(fprintf(stderr, "%*c%s _tmp_8[%d-%d]: %s failed!\n", p->level, ' ',
27751
135k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with'"));
27752
135k
    }
27753
0
    { // 'async'
27754
135k
        if (p->error_indicator) {
27755
0
            p->level--;
27756
0
            return NULL;
27757
0
        }
27758
135k
        D(fprintf(stderr, "%*c> _tmp_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'"));
27759
135k
        Token * _keyword;
27760
135k
        if (
27761
135k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
27762
135k
        )
27763
1.91k
        {
27764
1.91k
            D(fprintf(stderr, "%*c+ _tmp_8[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'"));
27765
1.91k
            _res = _keyword;
27766
1.91k
            goto done;
27767
1.91k
        }
27768
133k
        p->mark = _mark;
27769
133k
        D(fprintf(stderr, "%*c%s _tmp_8[%d-%d]: %s failed!\n", p->level, ' ',
27770
133k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'"));
27771
133k
    }
27772
0
    _res = NULL;
27773
139k
  done:
27774
139k
    p->level--;
27775
139k
    return _res;
27776
133k
}
27777
27778
// _tmp_9: 'for' | 'async'
27779
static void *
27780
_tmp_9_rule(Parser *p)
27781
135k
{
27782
135k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27783
0
        _Pypegen_stack_overflow(p);
27784
0
    }
27785
135k
    if (p->error_indicator) {
27786
0
        p->level--;
27787
0
        return NULL;
27788
0
    }
27789
135k
    void * _res = NULL;
27790
135k
    int _mark = p->mark;
27791
135k
    { // 'for'
27792
135k
        if (p->error_indicator) {
27793
0
            p->level--;
27794
0
            return NULL;
27795
0
        }
27796
135k
        D(fprintf(stderr, "%*c> _tmp_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for'"));
27797
135k
        Token * _keyword;
27798
135k
        if (
27799
135k
            (_keyword = _PyPegen_expect_token(p, 699))  // token='for'
27800
135k
        )
27801
1.74k
        {
27802
1.74k
            D(fprintf(stderr, "%*c+ _tmp_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for'"));
27803
1.74k
            _res = _keyword;
27804
1.74k
            goto done;
27805
1.74k
        }
27806
133k
        p->mark = _mark;
27807
133k
        D(fprintf(stderr, "%*c%s _tmp_9[%d-%d]: %s failed!\n", p->level, ' ',
27808
133k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for'"));
27809
133k
    }
27810
0
    { // 'async'
27811
133k
        if (p->error_indicator) {
27812
0
            p->level--;
27813
0
            return NULL;
27814
0
        }
27815
133k
        D(fprintf(stderr, "%*c> _tmp_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'"));
27816
133k
        Token * _keyword;
27817
133k
        if (
27818
133k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
27819
133k
        )
27820
866
        {
27821
866
            D(fprintf(stderr, "%*c+ _tmp_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'"));
27822
866
            _res = _keyword;
27823
866
            goto done;
27824
866
        }
27825
132k
        p->mark = _mark;
27826
132k
        D(fprintf(stderr, "%*c%s _tmp_9[%d-%d]: %s failed!\n", p->level, ' ',
27827
132k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'"));
27828
132k
    }
27829
0
    _res = NULL;
27830
135k
  done:
27831
135k
    p->level--;
27832
135k
    return _res;
27833
132k
}
27834
27835
// _tmp_10: '=' annotated_rhs
27836
static void *
27837
_tmp_10_rule(Parser *p)
27838
3.26k
{
27839
3.26k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27840
0
        _Pypegen_stack_overflow(p);
27841
0
    }
27842
3.26k
    if (p->error_indicator) {
27843
0
        p->level--;
27844
0
        return NULL;
27845
0
    }
27846
3.26k
    void * _res = NULL;
27847
3.26k
    int _mark = p->mark;
27848
3.26k
    { // '=' annotated_rhs
27849
3.26k
        if (p->error_indicator) {
27850
0
            p->level--;
27851
0
            return NULL;
27852
0
        }
27853
3.26k
        D(fprintf(stderr, "%*c> _tmp_10[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
27854
3.26k
        Token * _literal;
27855
3.26k
        expr_ty d;
27856
3.26k
        if (
27857
3.26k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
27858
3.26k
            &&
27859
3.26k
            (d = annotated_rhs_rule(p))  // annotated_rhs
27860
3.26k
        )
27861
505
        {
27862
505
            D(fprintf(stderr, "%*c+ _tmp_10[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
27863
505
            _res = d;
27864
505
            if (_res == NULL && PyErr_Occurred()) {
27865
0
                p->error_indicator = 1;
27866
0
                p->level--;
27867
0
                return NULL;
27868
0
            }
27869
505
            goto done;
27870
505
        }
27871
2.76k
        p->mark = _mark;
27872
2.76k
        D(fprintf(stderr, "%*c%s _tmp_10[%d-%d]: %s failed!\n", p->level, ' ',
27873
2.76k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' annotated_rhs"));
27874
2.76k
    }
27875
0
    _res = NULL;
27876
3.26k
  done:
27877
3.26k
    p->level--;
27878
3.26k
    return _res;
27879
2.76k
}
27880
27881
// _tmp_11: '(' single_target ')' | single_subscript_attribute_target
27882
static void *
27883
_tmp_11_rule(Parser *p)
27884
181k
{
27885
181k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27886
0
        _Pypegen_stack_overflow(p);
27887
0
    }
27888
181k
    if (p->error_indicator) {
27889
0
        p->level--;
27890
0
        return NULL;
27891
0
    }
27892
181k
    void * _res = NULL;
27893
181k
    int _mark = p->mark;
27894
181k
    { // '(' single_target ')'
27895
181k
        if (p->error_indicator) {
27896
0
            p->level--;
27897
0
            return NULL;
27898
0
        }
27899
181k
        D(fprintf(stderr, "%*c> _tmp_11[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
27900
181k
        Token * _literal;
27901
181k
        Token * _literal_1;
27902
181k
        expr_ty b;
27903
181k
        if (
27904
181k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
27905
181k
            &&
27906
181k
            (b = single_target_rule(p))  // single_target
27907
181k
            &&
27908
181k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
27909
181k
        )
27910
721
        {
27911
721
            D(fprintf(stderr, "%*c+ _tmp_11[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
27912
721
            _res = b;
27913
721
            if (_res == NULL && PyErr_Occurred()) {
27914
0
                p->error_indicator = 1;
27915
0
                p->level--;
27916
0
                return NULL;
27917
0
            }
27918
721
            goto done;
27919
721
        }
27920
180k
        p->mark = _mark;
27921
180k
        D(fprintf(stderr, "%*c%s _tmp_11[%d-%d]: %s failed!\n", p->level, ' ',
27922
180k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' single_target ')'"));
27923
180k
    }
27924
0
    { // single_subscript_attribute_target
27925
180k
        if (p->error_indicator) {
27926
158
            p->level--;
27927
158
            return NULL;
27928
158
        }
27929
180k
        D(fprintf(stderr, "%*c> _tmp_11[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
27930
180k
        expr_ty single_subscript_attribute_target_var;
27931
180k
        if (
27932
180k
            (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p))  // single_subscript_attribute_target
27933
180k
        )
27934
4.42k
        {
27935
4.42k
            D(fprintf(stderr, "%*c+ _tmp_11[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
27936
4.42k
            _res = single_subscript_attribute_target_var;
27937
4.42k
            goto done;
27938
4.42k
        }
27939
175k
        p->mark = _mark;
27940
175k
        D(fprintf(stderr, "%*c%s _tmp_11[%d-%d]: %s failed!\n", p->level, ' ',
27941
175k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_subscript_attribute_target"));
27942
175k
    }
27943
0
    _res = NULL;
27944
181k
  done:
27945
181k
    p->level--;
27946
181k
    return _res;
27947
175k
}
27948
27949
// _loop1_12: (star_targets '=')
27950
static asdl_seq *
27951
_loop1_12_rule(Parser *p)
27952
177k
{
27953
177k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27954
0
        _Pypegen_stack_overflow(p);
27955
0
    }
27956
177k
    if (p->error_indicator) {
27957
0
        p->level--;
27958
0
        return NULL;
27959
0
    }
27960
177k
    void *_res = NULL;
27961
177k
    int _mark = p->mark;
27962
177k
    void **_children = PyMem_Malloc(sizeof(void *));
27963
177k
    if (!_children) {
27964
0
        p->error_indicator = 1;
27965
0
        PyErr_NoMemory();
27966
0
        p->level--;
27967
0
        return NULL;
27968
0
    }
27969
177k
    Py_ssize_t _children_capacity = 1;
27970
177k
    Py_ssize_t _n = 0;
27971
177k
    { // (star_targets '=')
27972
177k
        if (p->error_indicator) {
27973
0
            p->level--;
27974
0
            return NULL;
27975
0
        }
27976
177k
        D(fprintf(stderr, "%*c> _loop1_12[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
27977
177k
        void *_tmp_154_var;
27978
177k
        while (
27979
192k
            (_tmp_154_var = _tmp_154_rule(p))  // star_targets '='
27980
177k
        )
27981
14.9k
        {
27982
14.9k
            _res = _tmp_154_var;
27983
14.9k
            if (_n == _children_capacity) {
27984
510
                _children_capacity *= 2;
27985
510
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27986
510
                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
510
                _children = _new_children;
27994
510
            }
27995
14.9k
            _children[_n++] = _res;
27996
14.9k
            _mark = p->mark;
27997
14.9k
        }
27998
177k
        p->mark = _mark;
27999
177k
        D(fprintf(stderr, "%*c%s _loop1_12[%d-%d]: %s failed!\n", p->level, ' ',
28000
177k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
28001
177k
    }
28002
177k
    if (_n == 0 || p->error_indicator) {
28003
164k
        PyMem_Free(_children);
28004
164k
        p->level--;
28005
164k
        return NULL;
28006
164k
    }
28007
13.0k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28008
13.0k
    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
27.9k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28016
13.0k
    PyMem_Free(_children);
28017
13.0k
    p->level--;
28018
13.0k
    return _seq;
28019
13.0k
}
28020
28021
// _loop0_13: ',' NAME
28022
static asdl_seq *
28023
_loop0_13_rule(Parser *p)
28024
1.31k
{
28025
1.31k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28026
0
        _Pypegen_stack_overflow(p);
28027
0
    }
28028
1.31k
    if (p->error_indicator) {
28029
0
        p->level--;
28030
0
        return NULL;
28031
0
    }
28032
1.31k
    void *_res = NULL;
28033
1.31k
    int _mark = p->mark;
28034
1.31k
    void **_children = PyMem_Malloc(sizeof(void *));
28035
1.31k
    if (!_children) {
28036
0
        p->error_indicator = 1;
28037
0
        PyErr_NoMemory();
28038
0
        p->level--;
28039
0
        return NULL;
28040
0
    }
28041
1.31k
    Py_ssize_t _children_capacity = 1;
28042
1.31k
    Py_ssize_t _n = 0;
28043
1.31k
    { // ',' NAME
28044
1.31k
        if (p->error_indicator) {
28045
0
            p->level--;
28046
0
            return NULL;
28047
0
        }
28048
1.31k
        D(fprintf(stderr, "%*c> _loop0_13[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' NAME"));
28049
1.31k
        Token * _literal;
28050
1.31k
        expr_ty elem;
28051
1.31k
        while (
28052
3.61k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
28053
3.61k
            &&
28054
3.61k
            (elem = _PyPegen_name_token(p))  // NAME
28055
1.31k
        )
28056
2.30k
        {
28057
2.30k
            _res = elem;
28058
2.30k
            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
2.30k
            if (_n == _children_capacity) {
28065
684
                _children_capacity *= 2;
28066
684
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28067
684
                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
684
                _children = _new_children;
28075
684
            }
28076
2.30k
            _children[_n++] = _res;
28077
2.30k
            _mark = p->mark;
28078
2.30k
        }
28079
1.31k
        p->mark = _mark;
28080
1.31k
        D(fprintf(stderr, "%*c%s _loop0_13[%d-%d]: %s failed!\n", p->level, ' ',
28081
1.31k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' NAME"));
28082
1.31k
    }
28083
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28084
1.31k
    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
3.61k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28092
1.31k
    PyMem_Free(_children);
28093
1.31k
    p->level--;
28094
1.31k
    return _seq;
28095
1.31k
}
28096
28097
// _gather_14: NAME _loop0_13
28098
static asdl_seq *
28099
_gather_14_rule(Parser *p)
28100
1.32k
{
28101
1.32k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28102
0
        _Pypegen_stack_overflow(p);
28103
0
    }
28104
1.32k
    if (p->error_indicator) {
28105
0
        p->level--;
28106
0
        return NULL;
28107
0
    }
28108
1.32k
    asdl_seq * _res = NULL;
28109
1.32k
    int _mark = p->mark;
28110
1.32k
    { // NAME _loop0_13
28111
1.32k
        if (p->error_indicator) {
28112
0
            p->level--;
28113
0
            return NULL;
28114
0
        }
28115
1.32k
        D(fprintf(stderr, "%*c> _gather_14[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME _loop0_13"));
28116
1.32k
        expr_ty elem;
28117
1.32k
        asdl_seq * seq;
28118
1.32k
        if (
28119
1.32k
            (elem = _PyPegen_name_token(p))  // NAME
28120
1.32k
            &&
28121
1.32k
            (seq = _loop0_13_rule(p))  // _loop0_13
28122
1.32k
        )
28123
1.31k
        {
28124
1.31k
            D(fprintf(stderr, "%*c+ _gather_14[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME _loop0_13"));
28125
1.31k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28126
1.31k
            goto done;
28127
1.31k
        }
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.32k
  done:
28134
1.32k
    p->level--;
28135
1.32k
    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
451
        {
28162
451
            D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "';'"));
28163
451
            _res = _literal;
28164
451
            goto done;
28165
451
        }
28166
759
        p->mark = _mark;
28167
759
        D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
28168
759
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';'"));
28169
759
    }
28170
0
    { // NEWLINE
28171
759
        if (p->error_indicator) {
28172
0
            p->level--;
28173
0
            return NULL;
28174
0
        }
28175
759
        D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
28176
759
        Token * newline_var;
28177
759
        if (
28178
759
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
28179
759
        )
28180
451
        {
28181
451
            D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
28182
451
            _res = newline_var;
28183
451
            goto done;
28184
451
        }
28185
308
        p->mark = _mark;
28186
308
        D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
28187
308
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
28188
308
    }
28189
0
    _res = NULL;
28190
1.21k
  done:
28191
1.21k
    p->level--;
28192
1.21k
    return _res;
28193
308
}
28194
28195
// _tmp_16: ',' expression
28196
static void *
28197
_tmp_16_rule(Parser *p)
28198
7.30k
{
28199
7.30k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28200
0
        _Pypegen_stack_overflow(p);
28201
0
    }
28202
7.30k
    if (p->error_indicator) {
28203
0
        p->level--;
28204
0
        return NULL;
28205
0
    }
28206
7.30k
    void * _res = NULL;
28207
7.30k
    int _mark = p->mark;
28208
7.30k
    { // ',' expression
28209
7.30k
        if (p->error_indicator) {
28210
0
            p->level--;
28211
0
            return NULL;
28212
0
        }
28213
7.30k
        D(fprintf(stderr, "%*c> _tmp_16[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
28214
7.30k
        Token * _literal;
28215
7.30k
        expr_ty z;
28216
7.30k
        if (
28217
7.30k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
28218
7.30k
            &&
28219
7.30k
            (z = expression_rule(p))  // expression
28220
7.30k
        )
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.39k
        p->mark = _mark;
28232
4.39k
        D(fprintf(stderr, "%*c%s _tmp_16[%d-%d]: %s failed!\n", p->level, ' ',
28233
4.39k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
28234
4.39k
    }
28235
0
    _res = NULL;
28236
7.30k
  done:
28237
7.30k
    p->level--;
28238
7.30k
    return _res;
28239
4.39k
}
28240
28241
// _loop0_17: ('.' | '...')
28242
static asdl_seq *
28243
_loop0_17_rule(Parser *p)
28244
3.02k
{
28245
3.02k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28246
0
        _Pypegen_stack_overflow(p);
28247
0
    }
28248
3.02k
    if (p->error_indicator) {
28249
0
        p->level--;
28250
0
        return NULL;
28251
0
    }
28252
3.02k
    void *_res = NULL;
28253
3.02k
    int _mark = p->mark;
28254
3.02k
    void **_children = PyMem_Malloc(sizeof(void *));
28255
3.02k
    if (!_children) {
28256
0
        p->error_indicator = 1;
28257
0
        PyErr_NoMemory();
28258
0
        p->level--;
28259
0
        return NULL;
28260
0
    }
28261
3.02k
    Py_ssize_t _children_capacity = 1;
28262
3.02k
    Py_ssize_t _n = 0;
28263
3.02k
    { // ('.' | '...')
28264
3.02k
        if (p->error_indicator) {
28265
0
            p->level--;
28266
0
            return NULL;
28267
0
        }
28268
3.02k
        D(fprintf(stderr, "%*c> _loop0_17[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')"));
28269
3.02k
        void *_tmp_155_var;
28270
3.02k
        while (
28271
7.54k
            (_tmp_155_var = _tmp_155_rule(p))  // '.' | '...'
28272
3.02k
        )
28273
4.51k
        {
28274
4.51k
            _res = _tmp_155_var;
28275
4.51k
            if (_n == _children_capacity) {
28276
788
                _children_capacity *= 2;
28277
788
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28278
788
                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
788
                _children = _new_children;
28286
788
            }
28287
4.51k
            _children[_n++] = _res;
28288
4.51k
            _mark = p->mark;
28289
4.51k
        }
28290
3.02k
        p->mark = _mark;
28291
3.02k
        D(fprintf(stderr, "%*c%s _loop0_17[%d-%d]: %s failed!\n", p->level, ' ',
28292
3.02k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('.' | '...')"));
28293
3.02k
    }
28294
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28295
3.02k
    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.54k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28303
3.02k
    PyMem_Free(_children);
28304
3.02k
    p->level--;
28305
3.02k
    return _seq;
28306
3.02k
}
28307
28308
// _loop1_18: ('.' | '...')
28309
static asdl_seq *
28310
_loop1_18_rule(Parser *p)
28311
1.21k
{
28312
1.21k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28313
0
        _Pypegen_stack_overflow(p);
28314
0
    }
28315
1.21k
    if (p->error_indicator) {
28316
0
        p->level--;
28317
0
        return NULL;
28318
0
    }
28319
1.21k
    void *_res = NULL;
28320
1.21k
    int _mark = p->mark;
28321
1.21k
    void **_children = PyMem_Malloc(sizeof(void *));
28322
1.21k
    if (!_children) {
28323
0
        p->error_indicator = 1;
28324
0
        PyErr_NoMemory();
28325
0
        p->level--;
28326
0
        return NULL;
28327
0
    }
28328
1.21k
    Py_ssize_t _children_capacity = 1;
28329
1.21k
    Py_ssize_t _n = 0;
28330
1.21k
    { // ('.' | '...')
28331
1.21k
        if (p->error_indicator) {
28332
0
            p->level--;
28333
0
            return NULL;
28334
0
        }
28335
1.21k
        D(fprintf(stderr, "%*c> _loop1_18[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')"));
28336
1.21k
        void *_tmp_155_var;
28337
1.21k
        while (
28338
5.28k
            (_tmp_155_var = _tmp_155_rule(p))  // '.' | '...'
28339
1.21k
        )
28340
4.07k
        {
28341
4.07k
            _res = _tmp_155_var;
28342
4.07k
            if (_n == _children_capacity) {
28343
771
                _children_capacity *= 2;
28344
771
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28345
771
                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
771
                _children = _new_children;
28353
771
            }
28354
4.07k
            _children[_n++] = _res;
28355
4.07k
            _mark = p->mark;
28356
4.07k
        }
28357
1.21k
        p->mark = _mark;
28358
1.21k
        D(fprintf(stderr, "%*c%s _loop1_18[%d-%d]: %s failed!\n", p->level, ' ',
28359
1.21k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('.' | '...')"));
28360
1.21k
    }
28361
1.21k
    if (_n == 0 || p->error_indicator) {
28362
66
        PyMem_Free(_children);
28363
66
        p->level--;
28364
66
        return NULL;
28365
66
    }
28366
1.15k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28367
1.15k
    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.15k
    PyMem_Free(_children);
28376
1.15k
    p->level--;
28377
1.15k
    return _seq;
28378
1.15k
}
28379
28380
// _loop0_19: ',' import_from_as_name
28381
static asdl_seq *
28382
_loop0_19_rule(Parser *p)
28383
2.25k
{
28384
2.25k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28385
0
        _Pypegen_stack_overflow(p);
28386
0
    }
28387
2.25k
    if (p->error_indicator) {
28388
0
        p->level--;
28389
0
        return NULL;
28390
0
    }
28391
2.25k
    void *_res = NULL;
28392
2.25k
    int _mark = p->mark;
28393
2.25k
    void **_children = PyMem_Malloc(sizeof(void *));
28394
2.25k
    if (!_children) {
28395
0
        p->error_indicator = 1;
28396
0
        PyErr_NoMemory();
28397
0
        p->level--;
28398
0
        return NULL;
28399
0
    }
28400
2.25k
    Py_ssize_t _children_capacity = 1;
28401
2.25k
    Py_ssize_t _n = 0;
28402
2.25k
    { // ',' import_from_as_name
28403
2.25k
        if (p->error_indicator) {
28404
0
            p->level--;
28405
0
            return NULL;
28406
0
        }
28407
2.25k
        D(fprintf(stderr, "%*c> _loop0_19[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' import_from_as_name"));
28408
2.25k
        Token * _literal;
28409
2.25k
        alias_ty elem;
28410
2.25k
        while (
28411
5.87k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
28412
5.87k
            &&
28413
5.87k
            (elem = import_from_as_name_rule(p))  // import_from_as_name
28414
2.25k
        )
28415
3.62k
        {
28416
3.62k
            _res = elem;
28417
3.62k
            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.62k
            if (_n == _children_capacity) {
28424
536
                _children_capacity *= 2;
28425
536
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28426
536
                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
536
                _children = _new_children;
28434
536
            }
28435
3.62k
            _children[_n++] = _res;
28436
3.62k
            _mark = p->mark;
28437
3.62k
        }
28438
2.25k
        p->mark = _mark;
28439
2.25k
        D(fprintf(stderr, "%*c%s _loop0_19[%d-%d]: %s failed!\n", p->level, ' ',
28440
2.25k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' import_from_as_name"));
28441
2.25k
    }
28442
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28443
2.25k
    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.87k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28451
2.25k
    PyMem_Free(_children);
28452
2.25k
    p->level--;
28453
2.25k
    return _seq;
28454
2.25k
}
28455
28456
// _gather_20: import_from_as_name _loop0_19
28457
static asdl_seq *
28458
_gather_20_rule(Parser *p)
28459
2.94k
{
28460
2.94k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28461
0
        _Pypegen_stack_overflow(p);
28462
0
    }
28463
2.94k
    if (p->error_indicator) {
28464
0
        p->level--;
28465
0
        return NULL;
28466
0
    }
28467
2.94k
    asdl_seq * _res = NULL;
28468
2.94k
    int _mark = p->mark;
28469
2.94k
    { // import_from_as_name _loop0_19
28470
2.94k
        if (p->error_indicator) {
28471
0
            p->level--;
28472
0
            return NULL;
28473
0
        }
28474
2.94k
        D(fprintf(stderr, "%*c> _gather_20[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_name _loop0_19"));
28475
2.94k
        alias_ty elem;
28476
2.94k
        asdl_seq * seq;
28477
2.94k
        if (
28478
2.94k
            (elem = import_from_as_name_rule(p))  // import_from_as_name
28479
2.94k
            &&
28480
2.94k
            (seq = _loop0_19_rule(p))  // _loop0_19
28481
2.94k
        )
28482
2.25k
        {
28483
2.25k
            D(fprintf(stderr, "%*c+ _gather_20[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_name _loop0_19"));
28484
2.25k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28485
2.25k
            goto done;
28486
2.25k
        }
28487
689
        p->mark = _mark;
28488
689
        D(fprintf(stderr, "%*c%s _gather_20[%d-%d]: %s failed!\n", p->level, ' ',
28489
689
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_name _loop0_19"));
28490
689
    }
28491
0
    _res = NULL;
28492
2.94k
  done:
28493
2.94k
    p->level--;
28494
2.94k
    return _res;
28495
689
}
28496
28497
// _tmp_21: 'as' NAME
28498
static void *
28499
_tmp_21_rule(Parser *p)
28500
16.3k
{
28501
16.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28502
0
        _Pypegen_stack_overflow(p);
28503
0
    }
28504
16.3k
    if (p->error_indicator) {
28505
0
        p->level--;
28506
0
        return NULL;
28507
0
    }
28508
16.3k
    void * _res = NULL;
28509
16.3k
    int _mark = p->mark;
28510
16.3k
    { // 'as' NAME
28511
16.3k
        if (p->error_indicator) {
28512
0
            p->level--;
28513
0
            return NULL;
28514
0
        }
28515
16.3k
        D(fprintf(stderr, "%*c> _tmp_21[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
28516
16.3k
        Token * _keyword;
28517
16.3k
        expr_ty z;
28518
16.3k
        if (
28519
16.3k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
28520
16.3k
            &&
28521
16.3k
            (z = _PyPegen_name_token(p))  // NAME
28522
16.3k
        )
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.7k
        p->mark = _mark;
28534
14.7k
        D(fprintf(stderr, "%*c%s _tmp_21[%d-%d]: %s failed!\n", p->level, ' ',
28535
14.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
28536
14.7k
    }
28537
0
    _res = NULL;
28538
16.3k
  done:
28539
16.3k
    p->level--;
28540
16.3k
    return _res;
28541
14.7k
}
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.81k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
28575
6.81k
            &&
28576
6.81k
            (elem = dotted_as_name_rule(p))  // dotted_as_name
28577
2.56k
        )
28578
4.25k
        {
28579
4.25k
            _res = elem;
28580
4.25k
            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.25k
            if (_n == _children_capacity) {
28587
1.19k
                _children_capacity *= 2;
28588
1.19k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28589
1.19k
                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.19k
                _children = _new_children;
28597
1.19k
            }
28598
4.25k
            _children[_n++] = _res;
28599
4.25k
            _mark = p->mark;
28600
4.25k
        }
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.81k
    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
43
        p->mark = _mark;
28651
43
        D(fprintf(stderr, "%*c%s _gather_23[%d-%d]: %s failed!\n", p->level, ' ',
28652
43
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_as_name _loop0_22"));
28653
43
    }
28654
0
    _res = NULL;
28655
2.60k
  done:
28656
2.60k
    p->level--;
28657
2.60k
    return _res;
28658
43
}
28659
28660
// _loop1_24: ('@' named_expression NEWLINE)
28661
static asdl_seq *
28662
_loop1_24_rule(Parser *p)
28663
18.4k
{
28664
18.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28665
0
        _Pypegen_stack_overflow(p);
28666
0
    }
28667
18.4k
    if (p->error_indicator) {
28668
0
        p->level--;
28669
0
        return NULL;
28670
0
    }
28671
18.4k
    void *_res = NULL;
28672
18.4k
    int _mark = p->mark;
28673
18.4k
    void **_children = PyMem_Malloc(sizeof(void *));
28674
18.4k
    if (!_children) {
28675
0
        p->error_indicator = 1;
28676
0
        PyErr_NoMemory();
28677
0
        p->level--;
28678
0
        return NULL;
28679
0
    }
28680
18.4k
    Py_ssize_t _children_capacity = 1;
28681
18.4k
    Py_ssize_t _n = 0;
28682
18.4k
    { // ('@' named_expression NEWLINE)
28683
18.4k
        if (p->error_indicator) {
28684
0
            p->level--;
28685
0
            return NULL;
28686
0
        }
28687
18.4k
        D(fprintf(stderr, "%*c> _loop1_24[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('@' named_expression NEWLINE)"));
28688
18.4k
        void *_tmp_156_var;
28689
18.4k
        while (
28690
22.9k
            (_tmp_156_var = _tmp_156_rule(p))  // '@' named_expression NEWLINE
28691
18.4k
        )
28692
4.50k
        {
28693
4.50k
            _res = _tmp_156_var;
28694
4.50k
            if (_n == _children_capacity) {
28695
846
                _children_capacity *= 2;
28696
846
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28697
846
                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
846
                _children = _new_children;
28705
846
            }
28706
4.50k
            _children[_n++] = _res;
28707
4.50k
            _mark = p->mark;
28708
4.50k
        }
28709
18.4k
        p->mark = _mark;
28710
18.4k
        D(fprintf(stderr, "%*c%s _loop1_24[%d-%d]: %s failed!\n", p->level, ' ',
28711
18.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('@' named_expression NEWLINE)"));
28712
18.4k
    }
28713
18.4k
    if (_n == 0 || p->error_indicator) {
28714
16.0k
        PyMem_Free(_children);
28715
16.0k
        p->level--;
28716
16.0k
        return NULL;
28717
16.0k
    }
28718
2.34k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28719
2.34k
    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
6.83k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28727
2.34k
    PyMem_Free(_children);
28728
2.34k
    p->level--;
28729
2.34k
    return _seq;
28730
2.34k
}
28731
28732
// _tmp_25: '(' arguments? ')'
28733
static void *
28734
_tmp_25_rule(Parser *p)
28735
6.04k
{
28736
6.04k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28737
0
        _Pypegen_stack_overflow(p);
28738
0
    }
28739
6.04k
    if (p->error_indicator) {
28740
0
        p->level--;
28741
0
        return NULL;
28742
0
    }
28743
6.04k
    void * _res = NULL;
28744
6.04k
    int _mark = p->mark;
28745
6.04k
    { // '(' arguments? ')'
28746
6.04k
        if (p->error_indicator) {
28747
0
            p->level--;
28748
0
            return NULL;
28749
0
        }
28750
6.04k
        D(fprintf(stderr, "%*c> _tmp_25[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
28751
6.04k
        Token * _literal;
28752
6.04k
        Token * _literal_1;
28753
6.04k
        void *z;
28754
6.04k
        if (
28755
6.04k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
28756
6.04k
            &&
28757
6.04k
            (z = arguments_rule(p), !p->error_indicator)  // arguments?
28758
6.04k
            &&
28759
6.04k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
28760
6.04k
        )
28761
1.98k
        {
28762
1.98k
            D(fprintf(stderr, "%*c+ _tmp_25[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
28763
1.98k
            _res = z;
28764
1.98k
            if (_res == NULL && PyErr_Occurred()) {
28765
0
                p->error_indicator = 1;
28766
0
                p->level--;
28767
0
                return NULL;
28768
0
            }
28769
1.98k
            goto done;
28770
1.98k
        }
28771
4.05k
        p->mark = _mark;
28772
4.05k
        D(fprintf(stderr, "%*c%s _tmp_25[%d-%d]: %s failed!\n", p->level, ' ',
28773
4.05k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'"));
28774
4.05k
    }
28775
0
    _res = NULL;
28776
6.04k
  done:
28777
6.04k
    p->level--;
28778
6.04k
    return _res;
28779
4.05k
}
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
513
        {
28808
513
            D(fprintf(stderr, "%*c+ _tmp_26[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression"));
28809
513
            _res = z;
28810
513
            if (_res == NULL && PyErr_Occurred()) {
28811
0
                p->error_indicator = 1;
28812
0
                p->level--;
28813
0
                return NULL;
28814
0
            }
28815
513
            goto done;
28816
513
        }
28817
12.5k
        p->mark = _mark;
28818
12.5k
        D(fprintf(stderr, "%*c%s _tmp_26[%d-%d]: %s failed!\n", p->level, ' ',
28819
12.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression"));
28820
12.5k
    }
28821
0
    _res = NULL;
28822
13.0k
  done:
28823
13.0k
    p->level--;
28824
13.0k
    return _res;
28825
12.5k
}
28826
28827
// _loop0_27: param_no_default
28828
static asdl_seq *
28829
_loop0_27_rule(Parser *p)
28830
63.5k
{
28831
63.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28832
0
        _Pypegen_stack_overflow(p);
28833
0
    }
28834
63.5k
    if (p->error_indicator) {
28835
0
        p->level--;
28836
0
        return NULL;
28837
0
    }
28838
63.5k
    void *_res = NULL;
28839
63.5k
    int _mark = p->mark;
28840
63.5k
    void **_children = PyMem_Malloc(sizeof(void *));
28841
63.5k
    if (!_children) {
28842
0
        p->error_indicator = 1;
28843
0
        PyErr_NoMemory();
28844
0
        p->level--;
28845
0
        return NULL;
28846
0
    }
28847
63.5k
    Py_ssize_t _children_capacity = 1;
28848
63.5k
    Py_ssize_t _n = 0;
28849
63.5k
    { // param_no_default
28850
63.5k
        if (p->error_indicator) {
28851
0
            p->level--;
28852
0
            return NULL;
28853
0
        }
28854
63.5k
        D(fprintf(stderr, "%*c> _loop0_27[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
28855
63.5k
        arg_ty param_no_default_var;
28856
63.5k
        while (
28857
90.4k
            (param_no_default_var = param_no_default_rule(p))  // param_no_default
28858
63.5k
        )
28859
26.8k
        {
28860
26.8k
            _res = param_no_default_var;
28861
26.8k
            if (_n == _children_capacity) {
28862
7.03k
                _children_capacity *= 2;
28863
7.03k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28864
7.03k
                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.03k
                _children = _new_children;
28872
7.03k
            }
28873
26.8k
            _children[_n++] = _res;
28874
26.8k
            _mark = p->mark;
28875
26.8k
        }
28876
63.5k
        p->mark = _mark;
28877
63.5k
        D(fprintf(stderr, "%*c%s _loop0_27[%d-%d]: %s failed!\n", p->level, ' ',
28878
63.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
28879
63.5k
    }
28880
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28881
63.5k
    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
90.4k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28889
63.5k
    PyMem_Free(_children);
28890
63.5k
    p->level--;
28891
63.5k
    return _seq;
28892
63.5k
}
28893
28894
// _loop0_28: param_with_default
28895
static asdl_seq *
28896
_loop0_28_rule(Parser *p)
28897
7.54k
{
28898
7.54k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28899
0
        _Pypegen_stack_overflow(p);
28900
0
    }
28901
7.54k
    if (p->error_indicator) {
28902
2
        p->level--;
28903
2
        return NULL;
28904
2
    }
28905
7.54k
    void *_res = NULL;
28906
7.54k
    int _mark = p->mark;
28907
7.54k
    void **_children = PyMem_Malloc(sizeof(void *));
28908
7.54k
    if (!_children) {
28909
0
        p->error_indicator = 1;
28910
0
        PyErr_NoMemory();
28911
0
        p->level--;
28912
0
        return NULL;
28913
0
    }
28914
7.54k
    Py_ssize_t _children_capacity = 1;
28915
7.54k
    Py_ssize_t _n = 0;
28916
7.54k
    { // param_with_default
28917
7.54k
        if (p->error_indicator) {
28918
0
            p->level--;
28919
0
            return NULL;
28920
0
        }
28921
7.54k
        D(fprintf(stderr, "%*c> _loop0_28[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
28922
7.54k
        NameDefaultPair* param_with_default_var;
28923
7.54k
        while (
28924
9.97k
            (param_with_default_var = param_with_default_rule(p))  // param_with_default
28925
7.54k
        )
28926
2.42k
        {
28927
2.42k
            _res = param_with_default_var;
28928
2.42k
            if (_n == _children_capacity) {
28929
468
                _children_capacity *= 2;
28930
468
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28931
468
                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
468
                _children = _new_children;
28939
468
            }
28940
2.42k
            _children[_n++] = _res;
28941
2.42k
            _mark = p->mark;
28942
2.42k
        }
28943
7.54k
        p->mark = _mark;
28944
7.54k
        D(fprintf(stderr, "%*c%s _loop0_28[%d-%d]: %s failed!\n", p->level, ' ',
28945
7.54k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
28946
7.54k
    }
28947
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28948
7.54k
    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.97k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28956
7.54k
    PyMem_Free(_children);
28957
7.54k
    p->level--;
28958
7.54k
    return _seq;
28959
7.54k
}
28960
28961
// _loop1_29: param_no_default
28962
static asdl_seq *
28963
_loop1_29_rule(Parser *p)
28964
68.2k
{
28965
68.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28966
0
        _Pypegen_stack_overflow(p);
28967
0
    }
28968
68.2k
    if (p->error_indicator) {
28969
0
        p->level--;
28970
0
        return NULL;
28971
0
    }
28972
68.2k
    void *_res = NULL;
28973
68.2k
    int _mark = p->mark;
28974
68.2k
    void **_children = PyMem_Malloc(sizeof(void *));
28975
68.2k
    if (!_children) {
28976
0
        p->error_indicator = 1;
28977
0
        PyErr_NoMemory();
28978
0
        p->level--;
28979
0
        return NULL;
28980
0
    }
28981
68.2k
    Py_ssize_t _children_capacity = 1;
28982
68.2k
    Py_ssize_t _n = 0;
28983
68.2k
    { // param_no_default
28984
68.2k
        if (p->error_indicator) {
28985
0
            p->level--;
28986
0
            return NULL;
28987
0
        }
28988
68.2k
        D(fprintf(stderr, "%*c> _loop1_29[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
28989
68.2k
        arg_ty param_no_default_var;
28990
68.2k
        while (
28991
108k
            (param_no_default_var = param_no_default_rule(p))  // param_no_default
28992
68.2k
        )
28993
40.1k
        {
28994
40.1k
            _res = param_no_default_var;
28995
40.1k
            if (_n == _children_capacity) {
28996
9.92k
                _children_capacity *= 2;
28997
9.92k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28998
9.92k
                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.92k
                _children = _new_children;
29006
9.92k
            }
29007
40.1k
            _children[_n++] = _res;
29008
40.1k
            _mark = p->mark;
29009
40.1k
        }
29010
68.2k
        p->mark = _mark;
29011
68.2k
        D(fprintf(stderr, "%*c%s _loop1_29[%d-%d]: %s failed!\n", p->level, ' ',
29012
68.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
29013
68.2k
    }
29014
68.2k
    if (_n == 0 || p->error_indicator) {
29015
41.9k
        PyMem_Free(_children);
29016
41.9k
        p->level--;
29017
41.9k
        return NULL;
29018
41.9k
    }
29019
26.2k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29020
26.2k
    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
66.4k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29028
26.2k
    PyMem_Free(_children);
29029
26.2k
    p->level--;
29030
26.2k
    return _seq;
29031
26.2k
}
29032
29033
// _loop1_30: param_with_default
29034
static asdl_seq *
29035
_loop1_30_rule(Parser *p)
29036
63.3k
{
29037
63.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29038
0
        _Pypegen_stack_overflow(p);
29039
0
    }
29040
63.3k
    if (p->error_indicator) {
29041
0
        p->level--;
29042
0
        return NULL;
29043
0
    }
29044
63.3k
    void *_res = NULL;
29045
63.3k
    int _mark = p->mark;
29046
63.3k
    void **_children = PyMem_Malloc(sizeof(void *));
29047
63.3k
    if (!_children) {
29048
0
        p->error_indicator = 1;
29049
0
        PyErr_NoMemory();
29050
0
        p->level--;
29051
0
        return NULL;
29052
0
    }
29053
63.3k
    Py_ssize_t _children_capacity = 1;
29054
63.3k
    Py_ssize_t _n = 0;
29055
63.3k
    { // param_with_default
29056
63.3k
        if (p->error_indicator) {
29057
0
            p->level--;
29058
0
            return NULL;
29059
0
        }
29060
63.3k
        D(fprintf(stderr, "%*c> _loop1_30[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
29061
63.3k
        NameDefaultPair* param_with_default_var;
29062
63.3k
        while (
29063
85.4k
            (param_with_default_var = param_with_default_rule(p))  // param_with_default
29064
63.3k
        )
29065
22.0k
        {
29066
22.0k
            _res = param_with_default_var;
29067
22.0k
            if (_n == _children_capacity) {
29068
2.21k
                _children_capacity *= 2;
29069
2.21k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29070
2.21k
                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.21k
                _children = _new_children;
29078
2.21k
            }
29079
22.0k
            _children[_n++] = _res;
29080
22.0k
            _mark = p->mark;
29081
22.0k
        }
29082
63.3k
        p->mark = _mark;
29083
63.3k
        D(fprintf(stderr, "%*c%s _loop1_30[%d-%d]: %s failed!\n", p->level, ' ',
29084
63.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
29085
63.3k
    }
29086
63.3k
    if (_n == 0 || p->error_indicator) {
29087
49.8k
        PyMem_Free(_children);
29088
49.8k
        p->level--;
29089
49.8k
        return NULL;
29090
49.8k
    }
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.5k
    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.66k
{
29109
9.66k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29110
0
        _Pypegen_stack_overflow(p);
29111
0
    }
29112
9.66k
    if (p->error_indicator) {
29113
0
        p->level--;
29114
0
        return NULL;
29115
0
    }
29116
9.66k
    void *_res = NULL;
29117
9.66k
    int _mark = p->mark;
29118
9.66k
    void **_children = PyMem_Malloc(sizeof(void *));
29119
9.66k
    if (!_children) {
29120
0
        p->error_indicator = 1;
29121
0
        PyErr_NoMemory();
29122
0
        p->level--;
29123
0
        return NULL;
29124
0
    }
29125
9.66k
    Py_ssize_t _children_capacity = 1;
29126
9.66k
    Py_ssize_t _n = 0;
29127
9.66k
    { // param_maybe_default
29128
9.66k
        if (p->error_indicator) {
29129
0
            p->level--;
29130
0
            return NULL;
29131
0
        }
29132
9.66k
        D(fprintf(stderr, "%*c> _loop0_31[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
29133
9.66k
        NameDefaultPair* param_maybe_default_var;
29134
9.66k
        while (
29135
15.9k
            (param_maybe_default_var = param_maybe_default_rule(p))  // param_maybe_default
29136
9.66k
        )
29137
6.23k
        {
29138
6.23k
            _res = param_maybe_default_var;
29139
6.23k
            if (_n == _children_capacity) {
29140
1.69k
                _children_capacity *= 2;
29141
1.69k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29142
1.69k
                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.69k
                _children = _new_children;
29150
1.69k
            }
29151
6.23k
            _children[_n++] = _res;
29152
6.23k
            _mark = p->mark;
29153
6.23k
        }
29154
9.66k
        p->mark = _mark;
29155
9.66k
        D(fprintf(stderr, "%*c%s _loop0_31[%d-%d]: %s failed!\n", p->level, ' ',
29156
9.66k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
29157
9.66k
    }
29158
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29159
9.66k
    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.9k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29167
9.66k
    PyMem_Free(_children);
29168
9.66k
    p->level--;
29169
9.66k
    return _seq;
29170
9.66k
}
29171
29172
// _loop1_32: param_maybe_default
29173
static asdl_seq *
29174
_loop1_32_rule(Parser *p)
29175
5.88k
{
29176
5.88k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29177
0
        _Pypegen_stack_overflow(p);
29178
0
    }
29179
5.88k
    if (p->error_indicator) {
29180
0
        p->level--;
29181
0
        return NULL;
29182
0
    }
29183
5.88k
    void *_res = NULL;
29184
5.88k
    int _mark = p->mark;
29185
5.88k
    void **_children = PyMem_Malloc(sizeof(void *));
29186
5.88k
    if (!_children) {
29187
0
        p->error_indicator = 1;
29188
0
        PyErr_NoMemory();
29189
0
        p->level--;
29190
0
        return NULL;
29191
0
    }
29192
5.88k
    Py_ssize_t _children_capacity = 1;
29193
5.88k
    Py_ssize_t _n = 0;
29194
5.88k
    { // param_maybe_default
29195
5.88k
        if (p->error_indicator) {
29196
0
            p->level--;
29197
0
            return NULL;
29198
0
        }
29199
5.88k
        D(fprintf(stderr, "%*c> _loop1_32[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
29200
5.88k
        NameDefaultPair* param_maybe_default_var;
29201
5.88k
        while (
29202
10.8k
            (param_maybe_default_var = param_maybe_default_rule(p))  // param_maybe_default
29203
5.88k
        )
29204
5.01k
        {
29205
5.01k
            _res = param_maybe_default_var;
29206
5.01k
            if (_n == _children_capacity) {
29207
741
                _children_capacity *= 2;
29208
741
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29209
741
                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
741
                _children = _new_children;
29217
741
            }
29218
5.01k
            _children[_n++] = _res;
29219
5.01k
            _mark = p->mark;
29220
5.01k
        }
29221
5.88k
        p->mark = _mark;
29222
5.88k
        D(fprintf(stderr, "%*c%s _loop1_32[%d-%d]: %s failed!\n", p->level, ' ',
29223
5.88k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
29224
5.88k
    }
29225
5.88k
    if (_n == 0 || p->error_indicator) {
29226
2.86k
        PyMem_Free(_children);
29227
2.86k
        p->level--;
29228
2.86k
        return NULL;
29229
2.86k
    }
29230
3.01k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29231
3.01k
    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
8.03k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29239
3.01k
    PyMem_Free(_children);
29240
3.01k
    p->level--;
29241
3.01k
    return _seq;
29242
3.01k
}
29243
29244
// _loop0_33: ',' with_item
29245
static asdl_seq *
29246
_loop0_33_rule(Parser *p)
29247
5.80k
{
29248
5.80k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29249
0
        _Pypegen_stack_overflow(p);
29250
0
    }
29251
5.80k
    if (p->error_indicator) {
29252
0
        p->level--;
29253
0
        return NULL;
29254
0
    }
29255
5.80k
    void *_res = NULL;
29256
5.80k
    int _mark = p->mark;
29257
5.80k
    void **_children = PyMem_Malloc(sizeof(void *));
29258
5.80k
    if (!_children) {
29259
0
        p->error_indicator = 1;
29260
0
        PyErr_NoMemory();
29261
0
        p->level--;
29262
0
        return NULL;
29263
0
    }
29264
5.80k
    Py_ssize_t _children_capacity = 1;
29265
5.80k
    Py_ssize_t _n = 0;
29266
5.80k
    { // ',' with_item
29267
5.80k
        if (p->error_indicator) {
29268
0
            p->level--;
29269
0
            return NULL;
29270
0
        }
29271
5.80k
        D(fprintf(stderr, "%*c> _loop0_33[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
29272
5.80k
        Token * _literal;
29273
5.80k
        withitem_ty elem;
29274
5.80k
        while (
29275
13.1k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
29276
13.1k
            &&
29277
13.1k
            (elem = with_item_rule(p))  // with_item
29278
5.80k
        )
29279
7.38k
        {
29280
7.38k
            _res = elem;
29281
7.38k
            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.38k
            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.38k
            _children[_n++] = _res;
29300
7.38k
            _mark = p->mark;
29301
7.38k
        }
29302
5.80k
        p->mark = _mark;
29303
5.80k
        D(fprintf(stderr, "%*c%s _loop0_33[%d-%d]: %s failed!\n", p->level, ' ',
29304
5.80k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
29305
5.80k
    }
29306
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29307
5.80k
    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.1k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29315
5.80k
    PyMem_Free(_children);
29316
5.80k
    p->level--;
29317
5.80k
    return _seq;
29318
5.80k
}
29319
29320
// _gather_34: with_item _loop0_33
29321
static asdl_seq *
29322
_gather_34_rule(Parser *p)
29323
7.26k
{
29324
7.26k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29325
0
        _Pypegen_stack_overflow(p);
29326
0
    }
29327
7.26k
    if (p->error_indicator) {
29328
0
        p->level--;
29329
0
        return NULL;
29330
0
    }
29331
7.26k
    asdl_seq * _res = NULL;
29332
7.26k
    int _mark = p->mark;
29333
7.26k
    { // with_item _loop0_33
29334
7.26k
        if (p->error_indicator) {
29335
0
            p->level--;
29336
0
            return NULL;
29337
0
        }
29338
7.26k
        D(fprintf(stderr, "%*c> _gather_34[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_33"));
29339
7.26k
        withitem_ty elem;
29340
7.26k
        asdl_seq * seq;
29341
7.26k
        if (
29342
7.26k
            (elem = with_item_rule(p))  // with_item
29343
7.26k
            &&
29344
7.26k
            (seq = _loop0_33_rule(p))  // _loop0_33
29345
7.26k
        )
29346
5.80k
        {
29347
5.80k
            D(fprintf(stderr, "%*c+ _gather_34[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_33"));
29348
5.80k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
29349
5.80k
            goto done;
29350
5.80k
        }
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.26k
  done:
29357
7.26k
    p->level--;
29358
7.26k
    return _res;
29359
1.45k
}
29360
29361
// _tmp_35: ',' | ')' | ':'
29362
static void *
29363
_tmp_35_rule(Parser *p)
29364
1.94k
{
29365
1.94k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29366
0
        _Pypegen_stack_overflow(p);
29367
0
    }
29368
1.94k
    if (p->error_indicator) {
29369
0
        p->level--;
29370
0
        return NULL;
29371
0
    }
29372
1.94k
    void * _res = NULL;
29373
1.94k
    int _mark = p->mark;
29374
1.94k
    { // ','
29375
1.94k
        if (p->error_indicator) {
29376
0
            p->level--;
29377
0
            return NULL;
29378
0
        }
29379
1.94k
        D(fprintf(stderr, "%*c> _tmp_35[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
29380
1.94k
        Token * _literal;
29381
1.94k
        if (
29382
1.94k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
29383
1.94k
        )
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
903
        p->mark = _mark;
29390
903
        D(fprintf(stderr, "%*c%s _tmp_35[%d-%d]: %s failed!\n", p->level, ' ',
29391
903
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
29392
903
    }
29393
0
    { // ')'
29394
903
        if (p->error_indicator) {
29395
0
            p->level--;
29396
0
            return NULL;
29397
0
        }
29398
903
        D(fprintf(stderr, "%*c> _tmp_35[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
29399
903
        Token * _literal;
29400
903
        if (
29401
903
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
29402
903
        )
29403
457
        {
29404
457
            D(fprintf(stderr, "%*c+ _tmp_35[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
29405
457
            _res = _literal;
29406
457
            goto done;
29407
457
        }
29408
446
        p->mark = _mark;
29409
446
        D(fprintf(stderr, "%*c%s _tmp_35[%d-%d]: %s failed!\n", p->level, ' ',
29410
446
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
29411
446
    }
29412
0
    { // ':'
29413
446
        if (p->error_indicator) {
29414
0
            p->level--;
29415
0
            return NULL;
29416
0
        }
29417
446
        D(fprintf(stderr, "%*c> _tmp_35[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
29418
446
        Token * _literal;
29419
446
        if (
29420
446
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
29421
446
        )
29422
431
        {
29423
431
            D(fprintf(stderr, "%*c+ _tmp_35[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
29424
431
            _res = _literal;
29425
431
            goto done;
29426
431
        }
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.94k
  done:
29433
1.94k
    p->level--;
29434
1.94k
    return _res;
29435
15
}
29436
29437
// _loop1_36: except_block
29438
static asdl_seq *
29439
_loop1_36_rule(Parser *p)
29440
6.82k
{
29441
6.82k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29442
0
        _Pypegen_stack_overflow(p);
29443
0
    }
29444
6.82k
    if (p->error_indicator) {
29445
0
        p->level--;
29446
0
        return NULL;
29447
0
    }
29448
6.82k
    void *_res = NULL;
29449
6.82k
    int _mark = p->mark;
29450
6.82k
    void **_children = PyMem_Malloc(sizeof(void *));
29451
6.82k
    if (!_children) {
29452
0
        p->error_indicator = 1;
29453
0
        PyErr_NoMemory();
29454
0
        p->level--;
29455
0
        return NULL;
29456
0
    }
29457
6.82k
    Py_ssize_t _children_capacity = 1;
29458
6.82k
    Py_ssize_t _n = 0;
29459
6.82k
    { // except_block
29460
6.82k
        if (p->error_indicator) {
29461
0
            p->level--;
29462
0
            return NULL;
29463
0
        }
29464
6.82k
        D(fprintf(stderr, "%*c> _loop1_36[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_block"));
29465
6.82k
        excepthandler_ty except_block_var;
29466
6.82k
        while (
29467
13.5k
            (except_block_var = except_block_rule(p))  // except_block
29468
6.82k
        )
29469
6.70k
        {
29470
6.70k
            _res = except_block_var;
29471
6.70k
            if (_n == _children_capacity) {
29472
1.16k
                _children_capacity *= 2;
29473
1.16k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29474
1.16k
                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.16k
                _children = _new_children;
29482
1.16k
            }
29483
6.70k
            _children[_n++] = _res;
29484
6.70k
            _mark = p->mark;
29485
6.70k
        }
29486
6.82k
        p->mark = _mark;
29487
6.82k
        D(fprintf(stderr, "%*c%s _loop1_36[%d-%d]: %s failed!\n", p->level, ' ',
29488
6.82k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_block"));
29489
6.82k
    }
29490
6.82k
    if (_n == 0 || p->error_indicator) {
29491
3.29k
        PyMem_Free(_children);
29492
3.29k
        p->level--;
29493
3.29k
        return NULL;
29494
3.29k
    }
29495
3.52k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29496
3.52k
    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.2k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29504
3.52k
    PyMem_Free(_children);
29505
3.52k
    p->level--;
29506
3.52k
    return _seq;
29507
3.52k
}
29508
29509
// _loop1_37: except_star_block
29510
static asdl_seq *
29511
_loop1_37_rule(Parser *p)
29512
4.02k
{
29513
4.02k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29514
0
        _Pypegen_stack_overflow(p);
29515
0
    }
29516
4.02k
    if (p->error_indicator) {
29517
0
        p->level--;
29518
0
        return NULL;
29519
0
    }
29520
4.02k
    void *_res = NULL;
29521
4.02k
    int _mark = p->mark;
29522
4.02k
    void **_children = PyMem_Malloc(sizeof(void *));
29523
4.02k
    if (!_children) {
29524
0
        p->error_indicator = 1;
29525
0
        PyErr_NoMemory();
29526
0
        p->level--;
29527
0
        return NULL;
29528
0
    }
29529
4.02k
    Py_ssize_t _children_capacity = 1;
29530
4.02k
    Py_ssize_t _n = 0;
29531
4.02k
    { // except_star_block
29532
4.02k
        if (p->error_indicator) {
29533
0
            p->level--;
29534
0
            return NULL;
29535
0
        }
29536
4.02k
        D(fprintf(stderr, "%*c> _loop1_37[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_star_block"));
29537
4.02k
        excepthandler_ty except_star_block_var;
29538
4.02k
        while (
29539
8.54k
            (except_star_block_var = except_star_block_rule(p))  // except_star_block
29540
4.02k
        )
29541
4.52k
        {
29542
4.52k
            _res = except_star_block_var;
29543
4.52k
            if (_n == _children_capacity) {
29544
473
                _children_capacity *= 2;
29545
473
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29546
473
                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
473
                _children = _new_children;
29554
473
            }
29555
4.52k
            _children[_n++] = _res;
29556
4.52k
            _mark = p->mark;
29557
4.52k
        }
29558
4.02k
        p->mark = _mark;
29559
4.02k
        D(fprintf(stderr, "%*c%s _loop1_37[%d-%d]: %s failed!\n", p->level, ' ',
29560
4.02k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_star_block"));
29561
4.02k
    }
29562
4.02k
    if (_n == 0 || p->error_indicator) {
29563
1.35k
        PyMem_Free(_children);
29564
1.35k
        p->level--;
29565
1.35k
        return NULL;
29566
1.35k
    }
29567
2.67k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29568
2.67k
    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
7.19k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29576
2.67k
    PyMem_Free(_children);
29577
2.67k
    p->level--;
29578
2.67k
    return _seq;
29579
2.67k
}
29580
29581
// _loop1_38: case_block
29582
static asdl_seq *
29583
_loop1_38_rule(Parser *p)
29584
1.99k
{
29585
1.99k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29586
0
        _Pypegen_stack_overflow(p);
29587
0
    }
29588
1.99k
    if (p->error_indicator) {
29589
0
        p->level--;
29590
0
        return NULL;
29591
0
    }
29592
1.99k
    void *_res = NULL;
29593
1.99k
    int _mark = p->mark;
29594
1.99k
    void **_children = PyMem_Malloc(sizeof(void *));
29595
1.99k
    if (!_children) {
29596
0
        p->error_indicator = 1;
29597
0
        PyErr_NoMemory();
29598
0
        p->level--;
29599
0
        return NULL;
29600
0
    }
29601
1.99k
    Py_ssize_t _children_capacity = 1;
29602
1.99k
    Py_ssize_t _n = 0;
29603
1.99k
    { // case_block
29604
1.99k
        if (p->error_indicator) {
29605
0
            p->level--;
29606
0
            return NULL;
29607
0
        }
29608
1.99k
        D(fprintf(stderr, "%*c> _loop1_38[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "case_block"));
29609
1.99k
        match_case_ty case_block_var;
29610
1.99k
        while (
29611
6.99k
            (case_block_var = case_block_rule(p))  // case_block
29612
1.99k
        )
29613
5.00k
        {
29614
5.00k
            _res = case_block_var;
29615
5.00k
            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
5.00k
            _children[_n++] = _res;
29628
5.00k
            _mark = p->mark;
29629
5.00k
        }
29630
1.99k
        p->mark = _mark;
29631
1.99k
        D(fprintf(stderr, "%*c%s _loop1_38[%d-%d]: %s failed!\n", p->level, ' ',
29632
1.99k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "case_block"));
29633
1.99k
    }
29634
1.99k
    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
768
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29640
768
    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.73k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29648
768
    PyMem_Free(_children);
29649
768
    p->level--;
29650
768
    return _seq;
29651
768
}
29652
29653
// _loop0_39: '|' closed_pattern
29654
static asdl_seq *
29655
_loop0_39_rule(Parser *p)
29656
172k
{
29657
172k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29658
0
        _Pypegen_stack_overflow(p);
29659
0
    }
29660
172k
    if (p->error_indicator) {
29661
24
        p->level--;
29662
24
        return NULL;
29663
24
    }
29664
172k
    void *_res = NULL;
29665
172k
    int _mark = p->mark;
29666
172k
    void **_children = PyMem_Malloc(sizeof(void *));
29667
172k
    if (!_children) {
29668
0
        p->error_indicator = 1;
29669
0
        PyErr_NoMemory();
29670
0
        p->level--;
29671
0
        return NULL;
29672
0
    }
29673
172k
    Py_ssize_t _children_capacity = 1;
29674
172k
    Py_ssize_t _n = 0;
29675
172k
    { // '|' closed_pattern
29676
172k
        if (p->error_indicator) {
29677
0
            p->level--;
29678
0
            return NULL;
29679
0
        }
29680
172k
        D(fprintf(stderr, "%*c> _loop0_39[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|' closed_pattern"));
29681
172k
        Token * _literal;
29682
172k
        pattern_ty elem;
29683
172k
        while (
29684
182k
            (_literal = _PyPegen_expect_token(p, 18))  // token='|'
29685
182k
            &&
29686
182k
            (elem = closed_pattern_rule(p))  // closed_pattern
29687
172k
        )
29688
9.71k
        {
29689
9.71k
            _res = elem;
29690
9.71k
            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.71k
            if (_n == _children_capacity) {
29697
1.59k
                _children_capacity *= 2;
29698
1.59k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29699
1.59k
                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.59k
                _children = _new_children;
29707
1.59k
            }
29708
9.71k
            _children[_n++] = _res;
29709
9.71k
            _mark = p->mark;
29710
9.71k
        }
29711
172k
        p->mark = _mark;
29712
172k
        D(fprintf(stderr, "%*c%s _loop0_39[%d-%d]: %s failed!\n", p->level, ' ',
29713
172k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|' closed_pattern"));
29714
172k
    }
29715
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29716
172k
    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
182k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29724
172k
    PyMem_Free(_children);
29725
172k
    p->level--;
29726
172k
    return _seq;
29727
172k
}
29728
29729
// _gather_40: closed_pattern _loop0_39
29730
static asdl_seq *
29731
_gather_40_rule(Parser *p)
29732
273k
{
29733
273k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29734
0
        _Pypegen_stack_overflow(p);
29735
0
    }
29736
273k
    if (p->error_indicator) {
29737
0
        p->level--;
29738
0
        return NULL;
29739
0
    }
29740
273k
    asdl_seq * _res = NULL;
29741
273k
    int _mark = p->mark;
29742
273k
    { // closed_pattern _loop0_39
29743
273k
        if (p->error_indicator) {
29744
0
            p->level--;
29745
0
            return NULL;
29746
0
        }
29747
273k
        D(fprintf(stderr, "%*c> _gather_40[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "closed_pattern _loop0_39"));
29748
273k
        pattern_ty elem;
29749
273k
        asdl_seq * seq;
29750
273k
        if (
29751
273k
            (elem = closed_pattern_rule(p))  // closed_pattern
29752
273k
            &&
29753
273k
            (seq = _loop0_39_rule(p))  // _loop0_39
29754
273k
        )
29755
172k
        {
29756
172k
            D(fprintf(stderr, "%*c+ _gather_40[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "closed_pattern _loop0_39"));
29757
172k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
29758
172k
            goto done;
29759
172k
        }
29760
101k
        p->mark = _mark;
29761
101k
        D(fprintf(stderr, "%*c%s _gather_40[%d-%d]: %s failed!\n", p->level, ' ',
29762
101k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "closed_pattern _loop0_39"));
29763
101k
    }
29764
0
    _res = NULL;
29765
273k
  done:
29766
273k
    p->level--;
29767
273k
    return _res;
29768
101k
}
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
443
        {
29794
443
            D(fprintf(stderr, "%*c+ _tmp_41[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+'"));
29795
443
            _res = _literal;
29796
443
            goto done;
29797
443
        }
29798
10.6k
        p->mark = _mark;
29799
10.6k
        D(fprintf(stderr, "%*c%s _tmp_41[%d-%d]: %s failed!\n", p->level, ' ',
29800
10.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+'"));
29801
10.6k
    }
29802
0
    { // '-'
29803
10.6k
        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
747
        {
29813
747
            D(fprintf(stderr, "%*c+ _tmp_41[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-'"));
29814
747
            _res = _literal;
29815
747
            goto done;
29816
747
        }
29817
9.84k
        p->mark = _mark;
29818
9.84k
        D(fprintf(stderr, "%*c%s _tmp_41[%d-%d]: %s failed!\n", p->level, ' ',
29819
9.84k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-'"));
29820
9.84k
    }
29821
0
    _res = NULL;
29822
11.0k
  done:
29823
11.0k
    p->level--;
29824
11.0k
    return _res;
29825
9.84k
}
29826
29827
// _tmp_42: STRING | FSTRING_START | TSTRING_START
29828
static void *
29829
_tmp_42_rule(Parser *p)
29830
825k
{
29831
825k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29832
1
        _Pypegen_stack_overflow(p);
29833
1
    }
29834
825k
    if (p->error_indicator) {
29835
1
        p->level--;
29836
1
        return NULL;
29837
1
    }
29838
825k
    void * _res = NULL;
29839
825k
    int _mark = p->mark;
29840
825k
    { // STRING
29841
825k
        if (p->error_indicator) {
29842
0
            p->level--;
29843
0
            return NULL;
29844
0
        }
29845
825k
        D(fprintf(stderr, "%*c> _tmp_42[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING"));
29846
825k
        expr_ty string_var;
29847
825k
        if (
29848
825k
            (string_var = _PyPegen_string_token(p))  // STRING
29849
825k
        )
29850
84.9k
        {
29851
84.9k
            D(fprintf(stderr, "%*c+ _tmp_42[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING"));
29852
84.9k
            _res = string_var;
29853
84.9k
            goto done;
29854
84.9k
        }
29855
740k
        p->mark = _mark;
29856
740k
        D(fprintf(stderr, "%*c%s _tmp_42[%d-%d]: %s failed!\n", p->level, ' ',
29857
740k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING"));
29858
740k
    }
29859
0
    { // FSTRING_START
29860
740k
        if (p->error_indicator) {
29861
0
            p->level--;
29862
0
            return NULL;
29863
0
        }
29864
740k
        D(fprintf(stderr, "%*c> _tmp_42[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_START"));
29865
740k
        Token * fstring_start_var;
29866
740k
        if (
29867
740k
            (fstring_start_var = _PyPegen_expect_token(p, FSTRING_START))  // token='FSTRING_START'
29868
740k
        )
29869
22.6k
        {
29870
22.6k
            D(fprintf(stderr, "%*c+ _tmp_42[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_START"));
29871
22.6k
            _res = fstring_start_var;
29872
22.6k
            goto done;
29873
22.6k
        }
29874
718k
        p->mark = _mark;
29875
718k
        D(fprintf(stderr, "%*c%s _tmp_42[%d-%d]: %s failed!\n", p->level, ' ',
29876
718k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_START"));
29877
718k
    }
29878
0
    { // TSTRING_START
29879
718k
        if (p->error_indicator) {
29880
0
            p->level--;
29881
0
            return NULL;
29882
0
        }
29883
718k
        D(fprintf(stderr, "%*c> _tmp_42[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TSTRING_START"));
29884
718k
        Token * tstring_start_var;
29885
718k
        if (
29886
718k
            (tstring_start_var = _PyPegen_expect_token(p, TSTRING_START))  // token='TSTRING_START'
29887
718k
        )
29888
5.54k
        {
29889
5.54k
            D(fprintf(stderr, "%*c+ _tmp_42[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TSTRING_START"));
29890
5.54k
            _res = tstring_start_var;
29891
5.54k
            goto done;
29892
5.54k
        }
29893
712k
        p->mark = _mark;
29894
712k
        D(fprintf(stderr, "%*c%s _tmp_42[%d-%d]: %s failed!\n", p->level, ' ',
29895
712k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TSTRING_START"));
29896
712k
    }
29897
0
    _res = NULL;
29898
825k
  done:
29899
825k
    p->level--;
29900
825k
    return _res;
29901
712k
}
29902
29903
// _tmp_43: '.' | '(' | '='
29904
static void *
29905
_tmp_43_rule(Parser *p)
29906
34.0k
{
29907
34.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29908
0
        _Pypegen_stack_overflow(p);
29909
0
    }
29910
34.0k
    if (p->error_indicator) {
29911
0
        p->level--;
29912
0
        return NULL;
29913
0
    }
29914
34.0k
    void * _res = NULL;
29915
34.0k
    int _mark = p->mark;
29916
34.0k
    { // '.'
29917
34.0k
        if (p->error_indicator) {
29918
0
            p->level--;
29919
0
            return NULL;
29920
0
        }
29921
34.0k
        D(fprintf(stderr, "%*c> _tmp_43[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
29922
34.0k
        Token * _literal;
29923
34.0k
        if (
29924
34.0k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
29925
34.0k
        )
29926
694
        {
29927
694
            D(fprintf(stderr, "%*c+ _tmp_43[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
29928
694
            _res = _literal;
29929
694
            goto done;
29930
694
        }
29931
33.3k
        p->mark = _mark;
29932
33.3k
        D(fprintf(stderr, "%*c%s _tmp_43[%d-%d]: %s failed!\n", p->level, ' ',
29933
33.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
29934
33.3k
    }
29935
0
    { // '('
29936
33.3k
        if (p->error_indicator) {
29937
29
            p->level--;
29938
29
            return NULL;
29939
29
        }
29940
33.3k
        D(fprintf(stderr, "%*c> _tmp_43[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
29941
33.3k
        Token * _literal;
29942
33.3k
        if (
29943
33.3k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
29944
33.3k
        )
29945
10.2k
        {
29946
10.2k
            D(fprintf(stderr, "%*c+ _tmp_43[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
29947
10.2k
            _res = _literal;
29948
10.2k
            goto done;
29949
10.2k
        }
29950
23.0k
        p->mark = _mark;
29951
23.0k
        D(fprintf(stderr, "%*c%s _tmp_43[%d-%d]: %s failed!\n", p->level, ' ',
29952
23.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
29953
23.0k
    }
29954
0
    { // '='
29955
23.0k
        if (p->error_indicator) {
29956
0
            p->level--;
29957
0
            return NULL;
29958
0
        }
29959
23.0k
        D(fprintf(stderr, "%*c> _tmp_43[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
29960
23.0k
        Token * _literal;
29961
23.0k
        if (
29962
23.0k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
29963
23.0k
        )
29964
3.50k
        {
29965
3.50k
            D(fprintf(stderr, "%*c+ _tmp_43[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
29966
3.50k
            _res = _literal;
29967
3.50k
            goto done;
29968
3.50k
        }
29969
19.5k
        p->mark = _mark;
29970
19.5k
        D(fprintf(stderr, "%*c%s _tmp_43[%d-%d]: %s failed!\n", p->level, ' ',
29971
19.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
29972
19.5k
    }
29973
0
    _res = NULL;
29974
34.0k
  done:
29975
34.0k
    p->level--;
29976
34.0k
    return _res;
29977
19.5k
}
29978
29979
// _loop0_44: ',' maybe_star_pattern
29980
static asdl_seq *
29981
_loop0_44_rule(Parser *p)
29982
3.14k
{
29983
3.14k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29984
0
        _Pypegen_stack_overflow(p);
29985
0
    }
29986
3.14k
    if (p->error_indicator) {
29987
2
        p->level--;
29988
2
        return NULL;
29989
2
    }
29990
3.14k
    void *_res = NULL;
29991
3.14k
    int _mark = p->mark;
29992
3.14k
    void **_children = PyMem_Malloc(sizeof(void *));
29993
3.14k
    if (!_children) {
29994
0
        p->error_indicator = 1;
29995
0
        PyErr_NoMemory();
29996
0
        p->level--;
29997
0
        return NULL;
29998
0
    }
29999
3.14k
    Py_ssize_t _children_capacity = 1;
30000
3.14k
    Py_ssize_t _n = 0;
30001
3.14k
    { // ',' maybe_star_pattern
30002
3.14k
        if (p->error_indicator) {
30003
0
            p->level--;
30004
0
            return NULL;
30005
0
        }
30006
3.14k
        D(fprintf(stderr, "%*c> _loop0_44[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' maybe_star_pattern"));
30007
3.14k
        Token * _literal;
30008
3.14k
        pattern_ty elem;
30009
3.14k
        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.14k
        )
30014
10.6k
        {
30015
10.6k
            _res = elem;
30016
10.6k
            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.6k
            if (_n == _children_capacity) {
30023
2.29k
                _children_capacity *= 2;
30024
2.29k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30025
2.29k
                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.29k
                _children = _new_children;
30033
2.29k
            }
30034
10.6k
            _children[_n++] = _res;
30035
10.6k
            _mark = p->mark;
30036
10.6k
        }
30037
3.14k
        p->mark = _mark;
30038
3.14k
        D(fprintf(stderr, "%*c%s _loop0_44[%d-%d]: %s failed!\n", p->level, ' ',
30039
3.14k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' maybe_star_pattern"));
30040
3.14k
    }
30041
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30042
3.14k
    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.14k
    PyMem_Free(_children);
30051
3.14k
    p->level--;
30052
3.14k
    return _seq;
30053
3.14k
}
30054
30055
// _gather_45: maybe_star_pattern _loop0_44
30056
static asdl_seq *
30057
_gather_45_rule(Parser *p)
30058
6.16k
{
30059
6.16k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30060
0
        _Pypegen_stack_overflow(p);
30061
0
    }
30062
6.16k
    if (p->error_indicator) {
30063
0
        p->level--;
30064
0
        return NULL;
30065
0
    }
30066
6.16k
    asdl_seq * _res = NULL;
30067
6.16k
    int _mark = p->mark;
30068
6.16k
    { // maybe_star_pattern _loop0_44
30069
6.16k
        if (p->error_indicator) {
30070
0
            p->level--;
30071
0
            return NULL;
30072
0
        }
30073
6.16k
        D(fprintf(stderr, "%*c> _gather_45[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern _loop0_44"));
30074
6.16k
        pattern_ty elem;
30075
6.16k
        asdl_seq * seq;
30076
6.16k
        if (
30077
6.16k
            (elem = maybe_star_pattern_rule(p))  // maybe_star_pattern
30078
6.16k
            &&
30079
6.16k
            (seq = _loop0_44_rule(p))  // _loop0_44
30080
6.16k
        )
30081
3.14k
        {
30082
3.14k
            D(fprintf(stderr, "%*c+ _gather_45[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern _loop0_44"));
30083
3.14k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30084
3.14k
            goto done;
30085
3.14k
        }
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.16k
  done:
30092
6.16k
    p->level--;
30093
6.16k
    return _res;
30094
3.02k
}
30095
30096
// _loop0_46: ',' key_value_pattern
30097
static asdl_seq *
30098
_loop0_46_rule(Parser *p)
30099
2.89k
{
30100
2.89k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30101
0
        _Pypegen_stack_overflow(p);
30102
0
    }
30103
2.89k
    if (p->error_indicator) {
30104
1
        p->level--;
30105
1
        return NULL;
30106
1
    }
30107
2.89k
    void *_res = NULL;
30108
2.89k
    int _mark = p->mark;
30109
2.89k
    void **_children = PyMem_Malloc(sizeof(void *));
30110
2.89k
    if (!_children) {
30111
0
        p->error_indicator = 1;
30112
0
        PyErr_NoMemory();
30113
0
        p->level--;
30114
0
        return NULL;
30115
0
    }
30116
2.89k
    Py_ssize_t _children_capacity = 1;
30117
2.89k
    Py_ssize_t _n = 0;
30118
2.89k
    { // ',' key_value_pattern
30119
2.89k
        if (p->error_indicator) {
30120
0
            p->level--;
30121
0
            return NULL;
30122
0
        }
30123
2.89k
        D(fprintf(stderr, "%*c> _loop0_46[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' key_value_pattern"));
30124
2.89k
        Token * _literal;
30125
2.89k
        KeyPatternPair* elem;
30126
2.89k
        while (
30127
5.47k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30128
5.47k
            &&
30129
5.47k
            (elem = key_value_pattern_rule(p))  // key_value_pattern
30130
2.89k
        )
30131
2.58k
        {
30132
2.58k
            _res = elem;
30133
2.58k
            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.58k
            if (_n == _children_capacity) {
30140
414
                _children_capacity *= 2;
30141
414
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30142
414
                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
414
                _children = _new_children;
30150
414
            }
30151
2.58k
            _children[_n++] = _res;
30152
2.58k
            _mark = p->mark;
30153
2.58k
        }
30154
2.89k
        p->mark = _mark;
30155
2.89k
        D(fprintf(stderr, "%*c%s _loop0_46[%d-%d]: %s failed!\n", p->level, ' ',
30156
2.89k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' key_value_pattern"));
30157
2.89k
    }
30158
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30159
2.89k
    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.47k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30167
2.89k
    PyMem_Free(_children);
30168
2.89k
    p->level--;
30169
2.89k
    return _seq;
30170
2.89k
}
30171
30172
// _gather_47: key_value_pattern _loop0_46
30173
static asdl_seq *
30174
_gather_47_rule(Parser *p)
30175
4.38k
{
30176
4.38k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30177
0
        _Pypegen_stack_overflow(p);
30178
0
    }
30179
4.38k
    if (p->error_indicator) {
30180
0
        p->level--;
30181
0
        return NULL;
30182
0
    }
30183
4.38k
    asdl_seq * _res = NULL;
30184
4.38k
    int _mark = p->mark;
30185
4.38k
    { // key_value_pattern _loop0_46
30186
4.38k
        if (p->error_indicator) {
30187
0
            p->level--;
30188
0
            return NULL;
30189
0
        }
30190
4.38k
        D(fprintf(stderr, "%*c> _gather_47[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "key_value_pattern _loop0_46"));
30191
4.38k
        KeyPatternPair* elem;
30192
4.38k
        asdl_seq * seq;
30193
4.38k
        if (
30194
4.38k
            (elem = key_value_pattern_rule(p))  // key_value_pattern
30195
4.38k
            &&
30196
4.38k
            (seq = _loop0_46_rule(p))  // _loop0_46
30197
4.38k
        )
30198
2.89k
        {
30199
2.89k
            D(fprintf(stderr, "%*c+ _gather_47[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "key_value_pattern _loop0_46"));
30200
2.89k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30201
2.89k
            goto done;
30202
2.89k
        }
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.38k
  done:
30209
4.38k
    p->level--;
30210
4.38k
    return _res;
30211
1.49k
}
30212
30213
// _tmp_48: literal_expr | attr
30214
static void *
30215
_tmp_48_rule(Parser *p)
30216
8.43k
{
30217
8.43k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30218
0
        _Pypegen_stack_overflow(p);
30219
0
    }
30220
8.43k
    if (p->error_indicator) {
30221
0
        p->level--;
30222
0
        return NULL;
30223
0
    }
30224
8.43k
    void * _res = NULL;
30225
8.43k
    int _mark = p->mark;
30226
8.43k
    { // literal_expr
30227
8.43k
        if (p->error_indicator) {
30228
0
            p->level--;
30229
0
            return NULL;
30230
0
        }
30231
8.43k
        D(fprintf(stderr, "%*c> _tmp_48[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "literal_expr"));
30232
8.43k
        expr_ty literal_expr_var;
30233
8.43k
        if (
30234
8.43k
            (literal_expr_var = literal_expr_rule(p))  // literal_expr
30235
8.43k
        )
30236
7.63k
        {
30237
7.63k
            D(fprintf(stderr, "%*c+ _tmp_48[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "literal_expr"));
30238
7.63k
            _res = literal_expr_var;
30239
7.63k
            goto done;
30240
7.63k
        }
30241
803
        p->mark = _mark;
30242
803
        D(fprintf(stderr, "%*c%s _tmp_48[%d-%d]: %s failed!\n", p->level, ' ',
30243
803
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "literal_expr"));
30244
803
    }
30245
0
    { // attr
30246
803
        if (p->error_indicator) {
30247
17
            p->level--;
30248
17
            return NULL;
30249
17
        }
30250
786
        D(fprintf(stderr, "%*c> _tmp_48[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr"));
30251
786
        expr_ty attr_var;
30252
786
        if (
30253
786
            (attr_var = attr_rule(p))  // attr
30254
786
        )
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
764
        p->mark = _mark;
30261
764
        D(fprintf(stderr, "%*c%s _tmp_48[%d-%d]: %s failed!\n", p->level, ' ',
30262
764
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr"));
30263
764
    }
30264
0
    _res = NULL;
30265
8.41k
  done:
30266
8.41k
    p->level--;
30267
8.41k
    return _res;
30268
764
}
30269
30270
// _loop0_49: ',' pattern
30271
static asdl_seq *
30272
_loop0_49_rule(Parser *p)
30273
11.5k
{
30274
11.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30275
0
        _Pypegen_stack_overflow(p);
30276
0
    }
30277
11.5k
    if (p->error_indicator) {
30278
1
        p->level--;
30279
1
        return NULL;
30280
1
    }
30281
11.5k
    void *_res = NULL;
30282
11.5k
    int _mark = p->mark;
30283
11.5k
    void **_children = PyMem_Malloc(sizeof(void *));
30284
11.5k
    if (!_children) {
30285
0
        p->error_indicator = 1;
30286
0
        PyErr_NoMemory();
30287
0
        p->level--;
30288
0
        return NULL;
30289
0
    }
30290
11.5k
    Py_ssize_t _children_capacity = 1;
30291
11.5k
    Py_ssize_t _n = 0;
30292
11.5k
    { // ',' pattern
30293
11.5k
        if (p->error_indicator) {
30294
0
            p->level--;
30295
0
            return NULL;
30296
0
        }
30297
11.5k
        D(fprintf(stderr, "%*c> _loop0_49[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' pattern"));
30298
11.5k
        Token * _literal;
30299
11.5k
        pattern_ty elem;
30300
11.5k
        while (
30301
16.4k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30302
16.4k
            &&
30303
16.4k
            (elem = pattern_rule(p))  // pattern
30304
11.5k
        )
30305
4.90k
        {
30306
4.90k
            _res = elem;
30307
4.90k
            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.90k
            if (_n == _children_capacity) {
30314
956
                _children_capacity *= 2;
30315
956
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30316
956
                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
956
                _children = _new_children;
30324
956
            }
30325
4.90k
            _children[_n++] = _res;
30326
4.90k
            _mark = p->mark;
30327
4.90k
        }
30328
11.5k
        p->mark = _mark;
30329
11.5k
        D(fprintf(stderr, "%*c%s _loop0_49[%d-%d]: %s failed!\n", p->level, ' ',
30330
11.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' pattern"));
30331
11.5k
    }
30332
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30333
11.5k
    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
16.4k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30341
11.5k
    PyMem_Free(_children);
30342
11.5k
    p->level--;
30343
11.5k
    return _seq;
30344
11.5k
}
30345
30346
// _gather_50: pattern _loop0_49
30347
static asdl_seq *
30348
_gather_50_rule(Parser *p)
30349
20.6k
{
30350
20.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30351
0
        _Pypegen_stack_overflow(p);
30352
0
    }
30353
20.6k
    if (p->error_indicator) {
30354
0
        p->level--;
30355
0
        return NULL;
30356
0
    }
30357
20.6k
    asdl_seq * _res = NULL;
30358
20.6k
    int _mark = p->mark;
30359
20.6k
    { // pattern _loop0_49
30360
20.6k
        if (p->error_indicator) {
30361
0
            p->level--;
30362
0
            return NULL;
30363
0
        }
30364
20.6k
        D(fprintf(stderr, "%*c> _gather_50[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern _loop0_49"));
30365
20.6k
        pattern_ty elem;
30366
20.6k
        asdl_seq * seq;
30367
20.6k
        if (
30368
20.6k
            (elem = pattern_rule(p))  // pattern
30369
20.6k
            &&
30370
20.6k
            (seq = _loop0_49_rule(p))  // _loop0_49
30371
20.6k
        )
30372
11.5k
        {
30373
11.5k
            D(fprintf(stderr, "%*c+ _gather_50[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern _loop0_49"));
30374
11.5k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30375
11.5k
            goto done;
30376
11.5k
        }
30377
9.11k
        p->mark = _mark;
30378
9.11k
        D(fprintf(stderr, "%*c%s _gather_50[%d-%d]: %s failed!\n", p->level, ' ',
30379
9.11k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern _loop0_49"));
30380
9.11k
    }
30381
0
    _res = NULL;
30382
20.6k
  done:
30383
20.6k
    p->level--;
30384
20.6k
    return _res;
30385
9.11k
}
30386
30387
// _loop0_51: ',' keyword_pattern
30388
static asdl_seq *
30389
_loop0_51_rule(Parser *p)
30390
4.82k
{
30391
4.82k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30392
0
        _Pypegen_stack_overflow(p);
30393
0
    }
30394
4.82k
    if (p->error_indicator) {
30395
1
        p->level--;
30396
1
        return NULL;
30397
1
    }
30398
4.82k
    void *_res = NULL;
30399
4.82k
    int _mark = p->mark;
30400
4.82k
    void **_children = PyMem_Malloc(sizeof(void *));
30401
4.82k
    if (!_children) {
30402
0
        p->error_indicator = 1;
30403
0
        PyErr_NoMemory();
30404
0
        p->level--;
30405
0
        return NULL;
30406
0
    }
30407
4.82k
    Py_ssize_t _children_capacity = 1;
30408
4.82k
    Py_ssize_t _n = 0;
30409
4.82k
    { // ',' keyword_pattern
30410
4.82k
        if (p->error_indicator) {
30411
0
            p->level--;
30412
0
            return NULL;
30413
0
        }
30414
4.82k
        D(fprintf(stderr, "%*c> _loop0_51[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' keyword_pattern"));
30415
4.82k
        Token * _literal;
30416
4.82k
        KeyPatternPair* elem;
30417
4.82k
        while (
30418
6.51k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30419
6.51k
            &&
30420
6.51k
            (elem = keyword_pattern_rule(p))  // keyword_pattern
30421
4.82k
        )
30422
1.68k
        {
30423
1.68k
            _res = elem;
30424
1.68k
            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.68k
            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.68k
            _children[_n++] = _res;
30443
1.68k
            _mark = p->mark;
30444
1.68k
        }
30445
4.82k
        p->mark = _mark;
30446
4.82k
        D(fprintf(stderr, "%*c%s _loop0_51[%d-%d]: %s failed!\n", p->level, ' ',
30447
4.82k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' keyword_pattern"));
30448
4.82k
    }
30449
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30450
4.82k
    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.51k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30458
4.82k
    PyMem_Free(_children);
30459
4.82k
    p->level--;
30460
4.82k
    return _seq;
30461
4.82k
}
30462
30463
// _gather_52: keyword_pattern _loop0_51
30464
static asdl_seq *
30465
_gather_52_rule(Parser *p)
30466
13.4k
{
30467
13.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30468
0
        _Pypegen_stack_overflow(p);
30469
0
    }
30470
13.4k
    if (p->error_indicator) {
30471
0
        p->level--;
30472
0
        return NULL;
30473
0
    }
30474
13.4k
    asdl_seq * _res = NULL;
30475
13.4k
    int _mark = p->mark;
30476
13.4k
    { // keyword_pattern _loop0_51
30477
13.4k
        if (p->error_indicator) {
30478
0
            p->level--;
30479
0
            return NULL;
30480
0
        }
30481
13.4k
        D(fprintf(stderr, "%*c> _gather_52[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "keyword_pattern _loop0_51"));
30482
13.4k
        KeyPatternPair* elem;
30483
13.4k
        asdl_seq * seq;
30484
13.4k
        if (
30485
13.4k
            (elem = keyword_pattern_rule(p))  // keyword_pattern
30486
13.4k
            &&
30487
13.4k
            (seq = _loop0_51_rule(p))  // _loop0_51
30488
13.4k
        )
30489
4.82k
        {
30490
4.82k
            D(fprintf(stderr, "%*c+ _gather_52[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "keyword_pattern _loop0_51"));
30491
4.82k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30492
4.82k
            goto done;
30493
4.82k
        }
30494
8.64k
        p->mark = _mark;
30495
8.64k
        D(fprintf(stderr, "%*c%s _gather_52[%d-%d]: %s failed!\n", p->level, ' ',
30496
8.64k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "keyword_pattern _loop0_51"));
30497
8.64k
    }
30498
0
    _res = NULL;
30499
13.4k
  done:
30500
13.4k
    p->level--;
30501
13.4k
    return _res;
30502
8.64k
}
30503
30504
// _loop0_53: ',' type_param
30505
static asdl_seq *
30506
_loop0_53_rule(Parser *p)
30507
1.77k
{
30508
1.77k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30509
0
        _Pypegen_stack_overflow(p);
30510
0
    }
30511
1.77k
    if (p->error_indicator) {
30512
0
        p->level--;
30513
0
        return NULL;
30514
0
    }
30515
1.77k
    void *_res = NULL;
30516
1.77k
    int _mark = p->mark;
30517
1.77k
    void **_children = PyMem_Malloc(sizeof(void *));
30518
1.77k
    if (!_children) {
30519
0
        p->error_indicator = 1;
30520
0
        PyErr_NoMemory();
30521
0
        p->level--;
30522
0
        return NULL;
30523
0
    }
30524
1.77k
    Py_ssize_t _children_capacity = 1;
30525
1.77k
    Py_ssize_t _n = 0;
30526
1.77k
    { // ',' type_param
30527
1.77k
        if (p->error_indicator) {
30528
0
            p->level--;
30529
0
            return NULL;
30530
0
        }
30531
1.77k
        D(fprintf(stderr, "%*c> _loop0_53[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' type_param"));
30532
1.77k
        Token * _literal;
30533
1.77k
        type_param_ty elem;
30534
1.77k
        while (
30535
10.3k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30536
10.3k
            &&
30537
10.3k
            (elem = type_param_rule(p))  // type_param
30538
1.77k
        )
30539
8.53k
        {
30540
8.53k
            _res = elem;
30541
8.53k
            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
8.53k
            if (_n == _children_capacity) {
30548
930
                _children_capacity *= 2;
30549
930
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30550
930
                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
930
                _children = _new_children;
30558
930
            }
30559
8.53k
            _children[_n++] = _res;
30560
8.53k
            _mark = p->mark;
30561
8.53k
        }
30562
1.77k
        p->mark = _mark;
30563
1.77k
        D(fprintf(stderr, "%*c%s _loop0_53[%d-%d]: %s failed!\n", p->level, ' ',
30564
1.77k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' type_param"));
30565
1.77k
    }
30566
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30567
1.77k
    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.3k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30575
1.77k
    PyMem_Free(_children);
30576
1.77k
    p->level--;
30577
1.77k
    return _seq;
30578
1.77k
}
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.77k
        {
30607
1.77k
            D(fprintf(stderr, "%*c+ _gather_54[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "type_param _loop0_53"));
30608
1.77k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30609
1.77k
            goto done;
30610
1.77k
        }
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.89k
{
30625
3.89k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30626
0
        _Pypegen_stack_overflow(p);
30627
0
    }
30628
3.89k
    if (p->error_indicator) {
30629
0
        p->level--;
30630
0
        return NULL;
30631
0
    }
30632
3.89k
    void *_res = NULL;
30633
3.89k
    int _mark = p->mark;
30634
3.89k
    void **_children = PyMem_Malloc(sizeof(void *));
30635
3.89k
    if (!_children) {
30636
0
        p->error_indicator = 1;
30637
0
        PyErr_NoMemory();
30638
0
        p->level--;
30639
0
        return NULL;
30640
0
    }
30641
3.89k
    Py_ssize_t _children_capacity = 1;
30642
3.89k
    Py_ssize_t _n = 0;
30643
3.89k
    { // (',' expression)
30644
3.89k
        if (p->error_indicator) {
30645
0
            p->level--;
30646
0
            return NULL;
30647
0
        }
30648
3.89k
        D(fprintf(stderr, "%*c> _loop1_55[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' expression)"));
30649
3.89k
        void *_tmp_16_var;
30650
3.89k
        while (
30651
6.59k
            (_tmp_16_var = _tmp_16_rule(p))  // ',' expression
30652
3.89k
        )
30653
2.69k
        {
30654
2.69k
            _res = _tmp_16_var;
30655
2.69k
            if (_n == _children_capacity) {
30656
811
                _children_capacity *= 2;
30657
811
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30658
811
                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
811
                _children = _new_children;
30666
811
            }
30667
2.69k
            _children[_n++] = _res;
30668
2.69k
            _mark = p->mark;
30669
2.69k
        }
30670
3.89k
        p->mark = _mark;
30671
3.89k
        D(fprintf(stderr, "%*c%s _loop1_55[%d-%d]: %s failed!\n", p->level, ' ',
30672
3.89k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' expression)"));
30673
3.89k
    }
30674
3.89k
    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.29k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30680
1.29k
    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.98k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30688
1.29k
    PyMem_Free(_children);
30689
1.29k
    p->level--;
30690
1.29k
    return _seq;
30691
1.29k
}
30692
30693
// _loop1_56: (',' star_expression)
30694
static asdl_seq *
30695
_loop1_56_rule(Parser *p)
30696
213k
{
30697
213k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30698
0
        _Pypegen_stack_overflow(p);
30699
0
    }
30700
213k
    if (p->error_indicator) {
30701
0
        p->level--;
30702
0
        return NULL;
30703
0
    }
30704
213k
    void *_res = NULL;
30705
213k
    int _mark = p->mark;
30706
213k
    void **_children = PyMem_Malloc(sizeof(void *));
30707
213k
    if (!_children) {
30708
0
        p->error_indicator = 1;
30709
0
        PyErr_NoMemory();
30710
0
        p->level--;
30711
0
        return NULL;
30712
0
    }
30713
213k
    Py_ssize_t _children_capacity = 1;
30714
213k
    Py_ssize_t _n = 0;
30715
213k
    { // (',' star_expression)
30716
213k
        if (p->error_indicator) {
30717
0
            p->level--;
30718
0
            return NULL;
30719
0
        }
30720
213k
        D(fprintf(stderr, "%*c> _loop1_56[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_expression)"));
30721
213k
        void *_tmp_157_var;
30722
213k
        while (
30723
230k
            (_tmp_157_var = _tmp_157_rule(p))  // ',' star_expression
30724
213k
        )
30725
17.1k
        {
30726
17.1k
            _res = _tmp_157_var;
30727
17.1k
            if (_n == _children_capacity) {
30728
3.20k
                _children_capacity *= 2;
30729
3.20k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30730
3.20k
                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.20k
                _children = _new_children;
30738
3.20k
            }
30739
17.1k
            _children[_n++] = _res;
30740
17.1k
            _mark = p->mark;
30741
17.1k
        }
30742
213k
        p->mark = _mark;
30743
213k
        D(fprintf(stderr, "%*c%s _loop1_56[%d-%d]: %s failed!\n", p->level, ' ',
30744
213k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_expression)"));
30745
213k
    }
30746
213k
    if (_n == 0 || p->error_indicator) {
30747
207k
        PyMem_Free(_children);
30748
207k
        p->level--;
30749
207k
        return NULL;
30750
207k
    }
30751
5.77k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30752
5.77k
    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
22.5k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30760
5.77k
    PyMem_Free(_children);
30761
5.77k
    p->level--;
30762
5.77k
    return _seq;
30763
5.77k
}
30764
30765
// _loop0_57: ',' star_named_expression
30766
static asdl_seq *
30767
_loop0_57_rule(Parser *p)
30768
42.9k
{
30769
42.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30770
0
        _Pypegen_stack_overflow(p);
30771
0
    }
30772
42.9k
    if (p->error_indicator) {
30773
0
        p->level--;
30774
0
        return NULL;
30775
0
    }
30776
42.9k
    void *_res = NULL;
30777
42.9k
    int _mark = p->mark;
30778
42.9k
    void **_children = PyMem_Malloc(sizeof(void *));
30779
42.9k
    if (!_children) {
30780
0
        p->error_indicator = 1;
30781
0
        PyErr_NoMemory();
30782
0
        p->level--;
30783
0
        return NULL;
30784
0
    }
30785
42.9k
    Py_ssize_t _children_capacity = 1;
30786
42.9k
    Py_ssize_t _n = 0;
30787
42.9k
    { // ',' star_named_expression
30788
42.9k
        if (p->error_indicator) {
30789
0
            p->level--;
30790
0
            return NULL;
30791
0
        }
30792
42.9k
        D(fprintf(stderr, "%*c> _loop0_57[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_named_expression"));
30793
42.9k
        Token * _literal;
30794
42.9k
        expr_ty elem;
30795
42.9k
        while (
30796
106k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30797
106k
            &&
30798
106k
            (elem = star_named_expression_rule(p))  // star_named_expression
30799
42.9k
        )
30800
63.5k
        {
30801
63.5k
            _res = elem;
30802
63.5k
            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
63.5k
            if (_n == _children_capacity) {
30809
11.8k
                _children_capacity *= 2;
30810
11.8k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30811
11.8k
                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
11.8k
                _children = _new_children;
30819
11.8k
            }
30820
63.5k
            _children[_n++] = _res;
30821
63.5k
            _mark = p->mark;
30822
63.5k
        }
30823
42.9k
        p->mark = _mark;
30824
42.9k
        D(fprintf(stderr, "%*c%s _loop0_57[%d-%d]: %s failed!\n", p->level, ' ',
30825
42.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_named_expression"));
30826
42.9k
    }
30827
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30828
42.9k
    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
106k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30836
42.9k
    PyMem_Free(_children);
30837
42.9k
    p->level--;
30838
42.9k
    return _seq;
30839
42.9k
}
30840
30841
// _gather_58: star_named_expression _loop0_57
30842
static asdl_seq *
30843
_gather_58_rule(Parser *p)
30844
101k
{
30845
101k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30846
1
        _Pypegen_stack_overflow(p);
30847
1
    }
30848
101k
    if (p->error_indicator) {
30849
1
        p->level--;
30850
1
        return NULL;
30851
1
    }
30852
101k
    asdl_seq * _res = NULL;
30853
101k
    int _mark = p->mark;
30854
101k
    { // star_named_expression _loop0_57
30855
101k
        if (p->error_indicator) {
30856
0
            p->level--;
30857
0
            return NULL;
30858
0
        }
30859
101k
        D(fprintf(stderr, "%*c> _gather_58[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_57"));
30860
101k
        expr_ty elem;
30861
101k
        asdl_seq * seq;
30862
101k
        if (
30863
101k
            (elem = star_named_expression_rule(p))  // star_named_expression
30864
101k
            &&
30865
101k
            (seq = _loop0_57_rule(p))  // _loop0_57
30866
101k
        )
30867
42.9k
        {
30868
42.9k
            D(fprintf(stderr, "%*c+ _gather_58[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_57"));
30869
42.9k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30870
42.9k
            goto done;
30871
42.9k
        }
30872
58.1k
        p->mark = _mark;
30873
58.1k
        D(fprintf(stderr, "%*c%s _gather_58[%d-%d]: %s failed!\n", p->level, ' ',
30874
58.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression _loop0_57"));
30875
58.1k
    }
30876
0
    _res = NULL;
30877
101k
  done:
30878
101k
    p->level--;
30879
101k
    return _res;
30880
58.1k
}
30881
30882
// _loop1_59: ('or' conjunction)
30883
static asdl_seq *
30884
_loop1_59_rule(Parser *p)
30885
383k
{
30886
383k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30887
0
        _Pypegen_stack_overflow(p);
30888
0
    }
30889
383k
    if (p->error_indicator) {
30890
0
        p->level--;
30891
0
        return NULL;
30892
0
    }
30893
383k
    void *_res = NULL;
30894
383k
    int _mark = p->mark;
30895
383k
    void **_children = PyMem_Malloc(sizeof(void *));
30896
383k
    if (!_children) {
30897
0
        p->error_indicator = 1;
30898
0
        PyErr_NoMemory();
30899
0
        p->level--;
30900
0
        return NULL;
30901
0
    }
30902
383k
    Py_ssize_t _children_capacity = 1;
30903
383k
    Py_ssize_t _n = 0;
30904
383k
    { // ('or' conjunction)
30905
383k
        if (p->error_indicator) {
30906
0
            p->level--;
30907
0
            return NULL;
30908
0
        }
30909
383k
        D(fprintf(stderr, "%*c> _loop1_59[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('or' conjunction)"));
30910
383k
        void *_tmp_158_var;
30911
383k
        while (
30912
388k
            (_tmp_158_var = _tmp_158_rule(p))  // 'or' conjunction
30913
383k
        )
30914
4.66k
        {
30915
4.66k
            _res = _tmp_158_var;
30916
4.66k
            if (_n == _children_capacity) {
30917
824
                _children_capacity *= 2;
30918
824
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30919
824
                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
824
                _children = _new_children;
30927
824
            }
30928
4.66k
            _children[_n++] = _res;
30929
4.66k
            _mark = p->mark;
30930
4.66k
        }
30931
383k
        p->mark = _mark;
30932
383k
        D(fprintf(stderr, "%*c%s _loop1_59[%d-%d]: %s failed!\n", p->level, ' ',
30933
383k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('or' conjunction)"));
30934
383k
    }
30935
383k
    if (_n == 0 || p->error_indicator) {
30936
381k
        PyMem_Free(_children);
30937
381k
        p->level--;
30938
381k
        return NULL;
30939
381k
    }
30940
1.50k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30941
1.50k
    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
6.09k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30949
1.50k
    PyMem_Free(_children);
30950
1.50k
    p->level--;
30951
1.50k
    return _seq;
30952
1.50k
}
30953
30954
// _loop1_60: ('and' inversion)
30955
static asdl_seq *
30956
_loop1_60_rule(Parser *p)
30957
388k
{
30958
388k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30959
0
        _Pypegen_stack_overflow(p);
30960
0
    }
30961
388k
    if (p->error_indicator) {
30962
0
        p->level--;
30963
0
        return NULL;
30964
0
    }
30965
388k
    void *_res = NULL;
30966
388k
    int _mark = p->mark;
30967
388k
    void **_children = PyMem_Malloc(sizeof(void *));
30968
388k
    if (!_children) {
30969
0
        p->error_indicator = 1;
30970
0
        PyErr_NoMemory();
30971
0
        p->level--;
30972
0
        return NULL;
30973
0
    }
30974
388k
    Py_ssize_t _children_capacity = 1;
30975
388k
    Py_ssize_t _n = 0;
30976
388k
    { // ('and' inversion)
30977
388k
        if (p->error_indicator) {
30978
0
            p->level--;
30979
0
            return NULL;
30980
0
        }
30981
388k
        D(fprintf(stderr, "%*c> _loop1_60[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('and' inversion)"));
30982
388k
        void *_tmp_159_var;
30983
388k
        while (
30984
390k
            (_tmp_159_var = _tmp_159_rule(p))  // 'and' inversion
30985
388k
        )
30986
2.83k
        {
30987
2.83k
            _res = _tmp_159_var;
30988
2.83k
            if (_n == _children_capacity) {
30989
874
                _children_capacity *= 2;
30990
874
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30991
874
                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
874
                _children = _new_children;
30999
874
            }
31000
2.83k
            _children[_n++] = _res;
31001
2.83k
            _mark = p->mark;
31002
2.83k
        }
31003
388k
        p->mark = _mark;
31004
388k
        D(fprintf(stderr, "%*c%s _loop1_60[%d-%d]: %s failed!\n", p->level, ' ',
31005
388k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('and' inversion)"));
31006
388k
    }
31007
388k
    if (_n == 0 || p->error_indicator) {
31008
386k
        PyMem_Free(_children);
31009
386k
        p->level--;
31010
386k
        return NULL;
31011
386k
    }
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.16k
    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
393k
{
31030
393k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31031
0
        _Pypegen_stack_overflow(p);
31032
0
    }
31033
393k
    if (p->error_indicator) {
31034
0
        p->level--;
31035
0
        return NULL;
31036
0
    }
31037
393k
    void *_res = NULL;
31038
393k
    int _mark = p->mark;
31039
393k
    void **_children = PyMem_Malloc(sizeof(void *));
31040
393k
    if (!_children) {
31041
0
        p->error_indicator = 1;
31042
0
        PyErr_NoMemory();
31043
0
        p->level--;
31044
0
        return NULL;
31045
0
    }
31046
393k
    Py_ssize_t _children_capacity = 1;
31047
393k
    Py_ssize_t _n = 0;
31048
393k
    { // compare_op_bitwise_or_pair
31049
393k
        if (p->error_indicator) {
31050
0
            p->level--;
31051
0
            return NULL;
31052
0
        }
31053
393k
        D(fprintf(stderr, "%*c> _loop1_61[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compare_op_bitwise_or_pair"));
31054
393k
        CmpopExprPair* compare_op_bitwise_or_pair_var;
31055
393k
        while (
31056
417k
            (compare_op_bitwise_or_pair_var = compare_op_bitwise_or_pair_rule(p))  // compare_op_bitwise_or_pair
31057
393k
        )
31058
23.9k
        {
31059
23.9k
            _res = compare_op_bitwise_or_pair_var;
31060
23.9k
            if (_n == _children_capacity) {
31061
4.94k
                _children_capacity *= 2;
31062
4.94k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31063
4.94k
                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
4.94k
                _children = _new_children;
31071
4.94k
            }
31072
23.9k
            _children[_n++] = _res;
31073
23.9k
            _mark = p->mark;
31074
23.9k
        }
31075
393k
        p->mark = _mark;
31076
393k
        D(fprintf(stderr, "%*c%s _loop1_61[%d-%d]: %s failed!\n", p->level, ' ',
31077
393k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compare_op_bitwise_or_pair"));
31078
393k
    }
31079
393k
    if (_n == 0 || p->error_indicator) {
31080
384k
        PyMem_Free(_children);
31081
384k
        p->level--;
31082
384k
        return NULL;
31083
384k
    }
31084
9.32k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31085
9.32k
    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.6k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31093
9.32k
    PyMem_Free(_children);
31094
9.32k
    p->level--;
31095
9.32k
    return _seq;
31096
9.32k
}
31097
31098
// _tmp_62: '!='
31099
static void *
31100
_tmp_62_rule(Parser *p)
31101
415k
{
31102
415k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31103
0
        _Pypegen_stack_overflow(p);
31104
0
    }
31105
415k
    if (p->error_indicator) {
31106
0
        p->level--;
31107
0
        return NULL;
31108
0
    }
31109
415k
    void * _res = NULL;
31110
415k
    int _mark = p->mark;
31111
415k
    { // '!='
31112
415k
        if (p->error_indicator) {
31113
0
            p->level--;
31114
0
            return NULL;
31115
0
        }
31116
415k
        D(fprintf(stderr, "%*c> _tmp_62[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!='"));
31117
415k
        Token * tok;
31118
415k
        if (
31119
415k
            (tok = _PyPegen_expect_token(p, 28))  // token='!='
31120
415k
        )
31121
1.38k
        {
31122
1.38k
            D(fprintf(stderr, "%*c+ _tmp_62[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!='"));
31123
1.38k
            _res = _PyPegen_check_barry_as_flufl ( p , tok ) ? NULL : tok;
31124
1.38k
            if (_res == NULL && PyErr_Occurred()) {
31125
1
                p->error_indicator = 1;
31126
1
                p->level--;
31127
1
                return NULL;
31128
1
            }
31129
1.38k
            goto done;
31130
1.38k
        }
31131
414k
        p->mark = _mark;
31132
414k
        D(fprintf(stderr, "%*c%s _tmp_62[%d-%d]: %s failed!\n", p->level, ' ',
31133
414k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!='"));
31134
414k
    }
31135
0
    _res = NULL;
31136
415k
  done:
31137
415k
    p->level--;
31138
415k
    return _res;
31139
414k
}
31140
31141
// _loop0_63: ',' (slice | starred_expression)
31142
static asdl_seq *
31143
_loop0_63_rule(Parser *p)
31144
3.25k
{
31145
3.25k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31146
0
        _Pypegen_stack_overflow(p);
31147
0
    }
31148
3.25k
    if (p->error_indicator) {
31149
0
        p->level--;
31150
0
        return NULL;
31151
0
    }
31152
3.25k
    void *_res = NULL;
31153
3.25k
    int _mark = p->mark;
31154
3.25k
    void **_children = PyMem_Malloc(sizeof(void *));
31155
3.25k
    if (!_children) {
31156
0
        p->error_indicator = 1;
31157
0
        PyErr_NoMemory();
31158
0
        p->level--;
31159
0
        return NULL;
31160
0
    }
31161
3.25k
    Py_ssize_t _children_capacity = 1;
31162
3.25k
    Py_ssize_t _n = 0;
31163
3.25k
    { // ',' (slice | starred_expression)
31164
3.25k
        if (p->error_indicator) {
31165
0
            p->level--;
31166
0
            return NULL;
31167
0
        }
31168
3.25k
        D(fprintf(stderr, "%*c> _loop0_63[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (slice | starred_expression)"));
31169
3.25k
        Token * _literal;
31170
3.25k
        void *elem;
31171
3.25k
        while (
31172
23.4k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
31173
23.4k
            &&
31174
23.4k
            (elem = _tmp_160_rule(p))  // slice | starred_expression
31175
3.25k
        )
31176
20.1k
        {
31177
20.1k
            _res = elem;
31178
20.1k
            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
20.1k
            if (_n == _children_capacity) {
31185
2.61k
                _children_capacity *= 2;
31186
2.61k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31187
2.61k
                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.61k
                _children = _new_children;
31195
2.61k
            }
31196
20.1k
            _children[_n++] = _res;
31197
20.1k
            _mark = p->mark;
31198
20.1k
        }
31199
3.25k
        p->mark = _mark;
31200
3.25k
        D(fprintf(stderr, "%*c%s _loop0_63[%d-%d]: %s failed!\n", p->level, ' ',
31201
3.25k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (slice | starred_expression)"));
31202
3.25k
    }
31203
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31204
3.25k
    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
23.4k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31212
3.25k
    PyMem_Free(_children);
31213
3.25k
    p->level--;
31214
3.25k
    return _seq;
31215
3.25k
}
31216
31217
// _gather_64: (slice | starred_expression) _loop0_63
31218
static asdl_seq *
31219
_gather_64_rule(Parser *p)
31220
5.38k
{
31221
5.38k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31222
0
        _Pypegen_stack_overflow(p);
31223
0
    }
31224
5.38k
    if (p->error_indicator) {
31225
0
        p->level--;
31226
0
        return NULL;
31227
0
    }
31228
5.38k
    asdl_seq * _res = NULL;
31229
5.38k
    int _mark = p->mark;
31230
5.38k
    { // (slice | starred_expression) _loop0_63
31231
5.38k
        if (p->error_indicator) {
31232
0
            p->level--;
31233
0
            return NULL;
31234
0
        }
31235
5.38k
        D(fprintf(stderr, "%*c> _gather_64[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(slice | starred_expression) _loop0_63"));
31236
5.38k
        void *elem;
31237
5.38k
        asdl_seq * seq;
31238
5.38k
        if (
31239
5.38k
            (elem = _tmp_160_rule(p))  // slice | starred_expression
31240
5.38k
            &&
31241
5.38k
            (seq = _loop0_63_rule(p))  // _loop0_63
31242
5.38k
        )
31243
3.25k
        {
31244
3.25k
            D(fprintf(stderr, "%*c+ _gather_64[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(slice | starred_expression) _loop0_63"));
31245
3.25k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
31246
3.25k
            goto done;
31247
3.25k
        }
31248
2.13k
        p->mark = _mark;
31249
2.13k
        D(fprintf(stderr, "%*c%s _gather_64[%d-%d]: %s failed!\n", p->level, ' ',
31250
2.13k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(slice | starred_expression) _loop0_63"));
31251
2.13k
    }
31252
0
    _res = NULL;
31253
5.38k
  done:
31254
5.38k
    p->level--;
31255
5.38k
    return _res;
31256
2.13k
}
31257
31258
// _tmp_65: ':' expression?
31259
static void *
31260
_tmp_65_rule(Parser *p)
31261
17.3k
{
31262
17.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31263
0
        _Pypegen_stack_overflow(p);
31264
0
    }
31265
17.3k
    if (p->error_indicator) {
31266
0
        p->level--;
31267
0
        return NULL;
31268
0
    }
31269
17.3k
    void * _res = NULL;
31270
17.3k
    int _mark = p->mark;
31271
17.3k
    { // ':' expression?
31272
17.3k
        if (p->error_indicator) {
31273
0
            p->level--;
31274
0
            return NULL;
31275
0
        }
31276
17.3k
        D(fprintf(stderr, "%*c> _tmp_65[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression?"));
31277
17.3k
        Token * _literal;
31278
17.3k
        void *d;
31279
17.3k
        if (
31280
17.3k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
31281
17.3k
            &&
31282
17.3k
            (d = expression_rule(p), !p->error_indicator)  // expression?
31283
17.3k
        )
31284
2.97k
        {
31285
2.97k
            D(fprintf(stderr, "%*c+ _tmp_65[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression?"));
31286
2.97k
            _res = d;
31287
2.97k
            if (_res == NULL && PyErr_Occurred()) {
31288
0
                p->error_indicator = 1;
31289
0
                p->level--;
31290
0
                return NULL;
31291
0
            }
31292
2.97k
            goto done;
31293
2.97k
        }
31294
14.3k
        p->mark = _mark;
31295
14.3k
        D(fprintf(stderr, "%*c%s _tmp_65[%d-%d]: %s failed!\n", p->level, ' ',
31296
14.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression?"));
31297
14.3k
    }
31298
0
    _res = NULL;
31299
17.3k
  done:
31300
17.3k
    p->level--;
31301
17.3k
    return _res;
31302
14.3k
}
31303
31304
// _tmp_66: tuple | group | genexp
31305
static void *
31306
_tmp_66_rule(Parser *p)
31307
85.9k
{
31308
85.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31309
0
        _Pypegen_stack_overflow(p);
31310
0
    }
31311
85.9k
    if (p->error_indicator) {
31312
0
        p->level--;
31313
0
        return NULL;
31314
0
    }
31315
85.9k
    void * _res = NULL;
31316
85.9k
    int _mark = p->mark;
31317
85.9k
    { // tuple
31318
85.9k
        if (p->error_indicator) {
31319
0
            p->level--;
31320
0
            return NULL;
31321
0
        }
31322
85.9k
        D(fprintf(stderr, "%*c> _tmp_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
31323
85.9k
        expr_ty tuple_var;
31324
85.9k
        if (
31325
85.9k
            (tuple_var = tuple_rule(p))  // tuple
31326
85.9k
        )
31327
42.2k
        {
31328
42.2k
            D(fprintf(stderr, "%*c+ _tmp_66[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
31329
42.2k
            _res = tuple_var;
31330
42.2k
            goto done;
31331
42.2k
        }
31332
43.6k
        p->mark = _mark;
31333
43.6k
        D(fprintf(stderr, "%*c%s _tmp_66[%d-%d]: %s failed!\n", p->level, ' ',
31334
43.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
31335
43.6k
    }
31336
0
    { // group
31337
43.6k
        if (p->error_indicator) {
31338
6.97k
            p->level--;
31339
6.97k
            return NULL;
31340
6.97k
        }
31341
36.6k
        D(fprintf(stderr, "%*c> _tmp_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "group"));
31342
36.6k
        expr_ty group_var;
31343
36.6k
        if (
31344
36.6k
            (group_var = group_rule(p))  // group
31345
36.6k
        )
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
24.7k
        p->mark = _mark;
31352
24.7k
        D(fprintf(stderr, "%*c%s _tmp_66[%d-%d]: %s failed!\n", p->level, ' ',
31353
24.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "group"));
31354
24.7k
    }
31355
0
    { // genexp
31356
24.7k
        if (p->error_indicator) {
31357
1.09k
            p->level--;
31358
1.09k
            return NULL;
31359
1.09k
        }
31360
23.6k
        D(fprintf(stderr, "%*c> _tmp_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp"));
31361
23.6k
        expr_ty genexp_var;
31362
23.6k
        if (
31363
23.6k
            (genexp_var = genexp_rule(p))  // genexp
31364
23.6k
        )
31365
2.99k
        {
31366
2.99k
            D(fprintf(stderr, "%*c+ _tmp_66[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp"));
31367
2.99k
            _res = genexp_var;
31368
2.99k
            goto done;
31369
2.99k
        }
31370
20.6k
        p->mark = _mark;
31371
20.6k
        D(fprintf(stderr, "%*c%s _tmp_66[%d-%d]: %s failed!\n", p->level, ' ',
31372
20.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "genexp"));
31373
20.6k
    }
31374
0
    _res = NULL;
31375
77.8k
  done:
31376
77.8k
    p->level--;
31377
77.8k
    return _res;
31378
20.6k
}
31379
31380
// _tmp_67: list | listcomp
31381
static void *
31382
_tmp_67_rule(Parser *p)
31383
56.8k
{
31384
56.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31385
0
        _Pypegen_stack_overflow(p);
31386
0
    }
31387
56.8k
    if (p->error_indicator) {
31388
0
        p->level--;
31389
0
        return NULL;
31390
0
    }
31391
56.8k
    void * _res = NULL;
31392
56.8k
    int _mark = p->mark;
31393
56.8k
    { // list
31394
56.8k
        if (p->error_indicator) {
31395
0
            p->level--;
31396
0
            return NULL;
31397
0
        }
31398
56.8k
        D(fprintf(stderr, "%*c> _tmp_67[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
31399
56.8k
        expr_ty list_var;
31400
56.8k
        if (
31401
56.8k
            (list_var = list_rule(p))  // list
31402
56.8k
        )
31403
15.8k
        {
31404
15.8k
            D(fprintf(stderr, "%*c+ _tmp_67[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
31405
15.8k
            _res = list_var;
31406
15.8k
            goto done;
31407
15.8k
        }
31408
41.0k
        p->mark = _mark;
31409
41.0k
        D(fprintf(stderr, "%*c%s _tmp_67[%d-%d]: %s failed!\n", p->level, ' ',
31410
41.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
31411
41.0k
    }
31412
0
    { // listcomp
31413
41.0k
        if (p->error_indicator) {
31414
10.7k
            p->level--;
31415
10.7k
            return NULL;
31416
10.7k
        }
31417
30.2k
        D(fprintf(stderr, "%*c> _tmp_67[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "listcomp"));
31418
30.2k
        expr_ty listcomp_var;
31419
30.2k
        if (
31420
30.2k
            (listcomp_var = listcomp_rule(p))  // listcomp
31421
30.2k
        )
31422
1.21k
        {
31423
1.21k
            D(fprintf(stderr, "%*c+ _tmp_67[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "listcomp"));
31424
1.21k
            _res = listcomp_var;
31425
1.21k
            goto done;
31426
1.21k
        }
31427
28.9k
        p->mark = _mark;
31428
28.9k
        D(fprintf(stderr, "%*c%s _tmp_67[%d-%d]: %s failed!\n", p->level, ' ',
31429
28.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "listcomp"));
31430
28.9k
    }
31431
0
    _res = NULL;
31432
46.0k
  done:
31433
46.0k
    p->level--;
31434
46.0k
    return _res;
31435
28.9k
}
31436
31437
// _tmp_68: dict | set | dictcomp | setcomp
31438
static void *
31439
_tmp_68_rule(Parser *p)
31440
23.1k
{
31441
23.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31442
0
        _Pypegen_stack_overflow(p);
31443
0
    }
31444
23.1k
    if (p->error_indicator) {
31445
0
        p->level--;
31446
0
        return NULL;
31447
0
    }
31448
23.1k
    void * _res = NULL;
31449
23.1k
    int _mark = p->mark;
31450
23.1k
    { // dict
31451
23.1k
        if (p->error_indicator) {
31452
0
            p->level--;
31453
0
            return NULL;
31454
0
        }
31455
23.1k
        D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dict"));
31456
23.1k
        expr_ty dict_var;
31457
23.1k
        if (
31458
23.1k
            (dict_var = dict_rule(p))  // dict
31459
23.1k
        )
31460
4.37k
        {
31461
4.37k
            D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dict"));
31462
4.37k
            _res = dict_var;
31463
4.37k
            goto done;
31464
4.37k
        }
31465
18.7k
        p->mark = _mark;
31466
18.7k
        D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
31467
18.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dict"));
31468
18.7k
    }
31469
0
    { // set
31470
18.7k
        if (p->error_indicator) {
31471
7.62k
            p->level--;
31472
7.62k
            return NULL;
31473
7.62k
        }
31474
11.1k
        D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "set"));
31475
11.1k
        expr_ty set_var;
31476
11.1k
        if (
31477
11.1k
            (set_var = set_rule(p))  // set
31478
11.1k
        )
31479
1.48k
        {
31480
1.48k
            D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "set"));
31481
1.48k
            _res = set_var;
31482
1.48k
            goto done;
31483
1.48k
        }
31484
9.68k
        p->mark = _mark;
31485
9.68k
        D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
31486
9.68k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "set"));
31487
9.68k
    }
31488
0
    { // dictcomp
31489
9.68k
        if (p->error_indicator) {
31490
339
            p->level--;
31491
339
            return NULL;
31492
339
        }
31493
9.34k
        D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dictcomp"));
31494
9.34k
        expr_ty dictcomp_var;
31495
9.34k
        if (
31496
9.34k
            (dictcomp_var = dictcomp_rule(p))  // dictcomp
31497
9.34k
        )
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
7.94k
        p->mark = _mark;
31504
7.94k
        D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
31505
7.94k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dictcomp"));
31506
7.94k
    }
31507
0
    { // setcomp
31508
7.94k
        if (p->error_indicator) {
31509
199
            p->level--;
31510
199
            return NULL;
31511
199
        }
31512
7.74k
        D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "setcomp"));
31513
7.74k
        expr_ty setcomp_var;
31514
7.74k
        if (
31515
7.74k
            (setcomp_var = setcomp_rule(p))  // setcomp
31516
7.74k
        )
31517
516
        {
31518
516
            D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "setcomp"));
31519
516
            _res = setcomp_var;
31520
516
            goto done;
31521
516
        }
31522
7.23k
        p->mark = _mark;
31523
7.23k
        D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
31524
7.23k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "setcomp"));
31525
7.23k
    }
31526
0
    _res = NULL;
31527
15.0k
  done:
31528
15.0k
    p->level--;
31529
15.0k
    return _res;
31530
7.23k
}
31531
31532
// _tmp_69: yield_expr | named_expression
31533
static void *
31534
_tmp_69_rule(Parser *p)
31535
36.6k
{
31536
36.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31537
0
        _Pypegen_stack_overflow(p);
31538
0
    }
31539
36.6k
    if (p->error_indicator) {
31540
0
        p->level--;
31541
0
        return NULL;
31542
0
    }
31543
36.6k
    void * _res = NULL;
31544
36.6k
    int _mark = p->mark;
31545
36.6k
    { // yield_expr
31546
36.6k
        if (p->error_indicator) {
31547
0
            p->level--;
31548
0
            return NULL;
31549
0
        }
31550
36.6k
        D(fprintf(stderr, "%*c> _tmp_69[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
31551
36.6k
        expr_ty yield_expr_var;
31552
36.6k
        if (
31553
36.6k
            (yield_expr_var = yield_expr_rule(p))  // yield_expr
31554
36.6k
        )
31555
721
        {
31556
721
            D(fprintf(stderr, "%*c+ _tmp_69[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
31557
721
            _res = yield_expr_var;
31558
721
            goto done;
31559
721
        }
31560
35.9k
        p->mark = _mark;
31561
35.9k
        D(fprintf(stderr, "%*c%s _tmp_69[%d-%d]: %s failed!\n", p->level, ' ',
31562
35.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
31563
35.9k
    }
31564
0
    { // named_expression
31565
35.9k
        if (p->error_indicator) {
31566
593
            p->level--;
31567
593
            return NULL;
31568
593
        }
31569
35.3k
        D(fprintf(stderr, "%*c> _tmp_69[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
31570
35.3k
        expr_ty named_expression_var;
31571
35.3k
        if (
31572
35.3k
            (named_expression_var = named_expression_rule(p))  // named_expression
31573
35.3k
        )
31574
25.5k
        {
31575
25.5k
            D(fprintf(stderr, "%*c+ _tmp_69[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
31576
25.5k
            _res = named_expression_var;
31577
25.5k
            goto done;
31578
25.5k
        }
31579
9.75k
        p->mark = _mark;
31580
9.75k
        D(fprintf(stderr, "%*c%s _tmp_69[%d-%d]: %s failed!\n", p->level, ' ',
31581
9.75k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
31582
9.75k
    }
31583
0
    _res = NULL;
31584
36.0k
  done:
31585
36.0k
    p->level--;
31586
36.0k
    return _res;
31587
9.75k
}
31588
31589
// _loop0_70: lambda_param_no_default
31590
static asdl_seq *
31591
_loop0_70_rule(Parser *p)
31592
90.6k
{
31593
90.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31594
0
        _Pypegen_stack_overflow(p);
31595
0
    }
31596
90.6k
    if (p->error_indicator) {
31597
0
        p->level--;
31598
0
        return NULL;
31599
0
    }
31600
90.6k
    void *_res = NULL;
31601
90.6k
    int _mark = p->mark;
31602
90.6k
    void **_children = PyMem_Malloc(sizeof(void *));
31603
90.6k
    if (!_children) {
31604
0
        p->error_indicator = 1;
31605
0
        PyErr_NoMemory();
31606
0
        p->level--;
31607
0
        return NULL;
31608
0
    }
31609
90.6k
    Py_ssize_t _children_capacity = 1;
31610
90.6k
    Py_ssize_t _n = 0;
31611
90.6k
    { // lambda_param_no_default
31612
90.6k
        if (p->error_indicator) {
31613
0
            p->level--;
31614
0
            return NULL;
31615
0
        }
31616
90.6k
        D(fprintf(stderr, "%*c> _loop0_70[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
31617
90.6k
        arg_ty lambda_param_no_default_var;
31618
90.6k
        while (
31619
143k
            (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
31620
90.6k
        )
31621
52.5k
        {
31622
52.5k
            _res = lambda_param_no_default_var;
31623
52.5k
            if (_n == _children_capacity) {
31624
3.22k
                _children_capacity *= 2;
31625
3.22k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31626
3.22k
                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.22k
                _children = _new_children;
31634
3.22k
            }
31635
52.5k
            _children[_n++] = _res;
31636
52.5k
            _mark = p->mark;
31637
52.5k
        }
31638
90.6k
        p->mark = _mark;
31639
90.6k
        D(fprintf(stderr, "%*c%s _loop0_70[%d-%d]: %s failed!\n", p->level, ' ',
31640
90.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
31641
90.6k
    }
31642
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31643
90.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
143k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31651
90.6k
    PyMem_Free(_children);
31652
90.6k
    p->level--;
31653
90.6k
    return _seq;
31654
90.6k
}
31655
31656
// _loop0_71: lambda_param_with_default
31657
static asdl_seq *
31658
_loop0_71_rule(Parser *p)
31659
3.93k
{
31660
3.93k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31661
0
        _Pypegen_stack_overflow(p);
31662
0
    }
31663
3.93k
    if (p->error_indicator) {
31664
1
        p->level--;
31665
1
        return NULL;
31666
1
    }
31667
3.92k
    void *_res = NULL;
31668
3.92k
    int _mark = p->mark;
31669
3.92k
    void **_children = PyMem_Malloc(sizeof(void *));
31670
3.92k
    if (!_children) {
31671
0
        p->error_indicator = 1;
31672
0
        PyErr_NoMemory();
31673
0
        p->level--;
31674
0
        return NULL;
31675
0
    }
31676
3.92k
    Py_ssize_t _children_capacity = 1;
31677
3.92k
    Py_ssize_t _n = 0;
31678
3.92k
    { // lambda_param_with_default
31679
3.92k
        if (p->error_indicator) {
31680
0
            p->level--;
31681
0
            return NULL;
31682
0
        }
31683
3.92k
        D(fprintf(stderr, "%*c> _loop0_71[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
31684
3.92k
        NameDefaultPair* lambda_param_with_default_var;
31685
3.92k
        while (
31686
5.50k
            (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
31687
3.92k
        )
31688
1.57k
        {
31689
1.57k
            _res = lambda_param_with_default_var;
31690
1.57k
            if (_n == _children_capacity) {
31691
458
                _children_capacity *= 2;
31692
458
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31693
458
                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
458
                _children = _new_children;
31701
458
            }
31702
1.57k
            _children[_n++] = _res;
31703
1.57k
            _mark = p->mark;
31704
1.57k
        }
31705
3.92k
        p->mark = _mark;
31706
3.92k
        D(fprintf(stderr, "%*c%s _loop0_71[%d-%d]: %s failed!\n", p->level, ' ',
31707
3.92k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
31708
3.92k
    }
31709
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31710
3.92k
    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.50k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31718
3.92k
    PyMem_Free(_children);
31719
3.92k
    p->level--;
31720
3.92k
    return _seq;
31721
3.92k
}
31722
31723
// _loop1_72: lambda_param_no_default
31724
static asdl_seq *
31725
_loop1_72_rule(Parser *p)
31726
90.3k
{
31727
90.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31728
0
        _Pypegen_stack_overflow(p);
31729
0
    }
31730
90.3k
    if (p->error_indicator) {
31731
0
        p->level--;
31732
0
        return NULL;
31733
0
    }
31734
90.3k
    void *_res = NULL;
31735
90.3k
    int _mark = p->mark;
31736
90.3k
    void **_children = PyMem_Malloc(sizeof(void *));
31737
90.3k
    if (!_children) {
31738
0
        p->error_indicator = 1;
31739
0
        PyErr_NoMemory();
31740
0
        p->level--;
31741
0
        return NULL;
31742
0
    }
31743
90.3k
    Py_ssize_t _children_capacity = 1;
31744
90.3k
    Py_ssize_t _n = 0;
31745
90.3k
    { // lambda_param_no_default
31746
90.3k
        if (p->error_indicator) {
31747
0
            p->level--;
31748
0
            return NULL;
31749
0
        }
31750
90.3k
        D(fprintf(stderr, "%*c> _loop1_72[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
31751
90.3k
        arg_ty lambda_param_no_default_var;
31752
90.3k
        while (
31753
159k
            (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
31754
90.3k
        )
31755
69.3k
        {
31756
69.3k
            _res = lambda_param_no_default_var;
31757
69.3k
            if (_n == _children_capacity) {
31758
5.59k
                _children_capacity *= 2;
31759
5.59k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31760
5.59k
                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.59k
                _children = _new_children;
31768
5.59k
            }
31769
69.3k
            _children[_n++] = _res;
31770
69.3k
            _mark = p->mark;
31771
69.3k
        }
31772
90.3k
        p->mark = _mark;
31773
90.3k
        D(fprintf(stderr, "%*c%s _loop1_72[%d-%d]: %s failed!\n", p->level, ' ',
31774
90.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
31775
90.3k
    }
31776
90.3k
    if (_n == 0 || p->error_indicator) {
31777
76.4k
        PyMem_Free(_children);
31778
76.4k
        p->level--;
31779
76.4k
        return NULL;
31780
76.4k
    }
31781
13.9k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31782
13.9k
    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
83.2k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31790
13.9k
    PyMem_Free(_children);
31791
13.9k
    p->level--;
31792
13.9k
    return _seq;
31793
13.9k
}
31794
31795
// _loop1_73: lambda_param_with_default
31796
static asdl_seq *
31797
_loop1_73_rule(Parser *p)
31798
90.3k
{
31799
90.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31800
0
        _Pypegen_stack_overflow(p);
31801
0
    }
31802
90.3k
    if (p->error_indicator) {
31803
0
        p->level--;
31804
0
        return NULL;
31805
0
    }
31806
90.3k
    void *_res = NULL;
31807
90.3k
    int _mark = p->mark;
31808
90.3k
    void **_children = PyMem_Malloc(sizeof(void *));
31809
90.3k
    if (!_children) {
31810
0
        p->error_indicator = 1;
31811
0
        PyErr_NoMemory();
31812
0
        p->level--;
31813
0
        return NULL;
31814
0
    }
31815
90.3k
    Py_ssize_t _children_capacity = 1;
31816
90.3k
    Py_ssize_t _n = 0;
31817
90.3k
    { // lambda_param_with_default
31818
90.3k
        if (p->error_indicator) {
31819
0
            p->level--;
31820
0
            return NULL;
31821
0
        }
31822
90.3k
        D(fprintf(stderr, "%*c> _loop1_73[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
31823
90.3k
        NameDefaultPair* lambda_param_with_default_var;
31824
90.3k
        while (
31825
120k
            (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
31826
90.3k
        )
31827
30.5k
        {
31828
30.5k
            _res = lambda_param_with_default_var;
31829
30.5k
            if (_n == _children_capacity) {
31830
3.45k
                _children_capacity *= 2;
31831
3.45k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31832
3.45k
                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.45k
                _children = _new_children;
31840
3.45k
            }
31841
30.5k
            _children[_n++] = _res;
31842
30.5k
            _mark = p->mark;
31843
30.5k
        }
31844
90.3k
        p->mark = _mark;
31845
90.3k
        D(fprintf(stderr, "%*c%s _loop1_73[%d-%d]: %s failed!\n", p->level, ' ',
31846
90.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
31847
90.3k
    }
31848
90.3k
    if (_n == 0 || p->error_indicator) {
31849
65.5k
        PyMem_Free(_children);
31850
65.5k
        p->level--;
31851
65.5k
        return NULL;
31852
65.5k
    }
31853
24.8k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31854
24.8k
    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
55.1k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31862
24.8k
    PyMem_Free(_children);
31863
24.8k
    p->level--;
31864
24.8k
    return _seq;
31865
24.8k
}
31866
31867
// _loop0_74: lambda_param_maybe_default
31868
static asdl_seq *
31869
_loop0_74_rule(Parser *p)
31870
15.5k
{
31871
15.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31872
0
        _Pypegen_stack_overflow(p);
31873
0
    }
31874
15.5k
    if (p->error_indicator) {
31875
0
        p->level--;
31876
0
        return NULL;
31877
0
    }
31878
15.5k
    void *_res = NULL;
31879
15.5k
    int _mark = p->mark;
31880
15.5k
    void **_children = PyMem_Malloc(sizeof(void *));
31881
15.5k
    if (!_children) {
31882
0
        p->error_indicator = 1;
31883
0
        PyErr_NoMemory();
31884
0
        p->level--;
31885
0
        return NULL;
31886
0
    }
31887
15.5k
    Py_ssize_t _children_capacity = 1;
31888
15.5k
    Py_ssize_t _n = 0;
31889
15.5k
    { // lambda_param_maybe_default
31890
15.5k
        if (p->error_indicator) {
31891
0
            p->level--;
31892
0
            return NULL;
31893
0
        }
31894
15.5k
        D(fprintf(stderr, "%*c> _loop0_74[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
31895
15.5k
        NameDefaultPair* lambda_param_maybe_default_var;
31896
15.5k
        while (
31897
26.4k
            (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p))  // lambda_param_maybe_default
31898
15.5k
        )
31899
10.9k
        {
31900
10.9k
            _res = lambda_param_maybe_default_var;
31901
10.9k
            if (_n == _children_capacity) {
31902
1.50k
                _children_capacity *= 2;
31903
1.50k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31904
1.50k
                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.50k
                _children = _new_children;
31912
1.50k
            }
31913
10.9k
            _children[_n++] = _res;
31914
10.9k
            _mark = p->mark;
31915
10.9k
        }
31916
15.5k
        p->mark = _mark;
31917
15.5k
        D(fprintf(stderr, "%*c%s _loop0_74[%d-%d]: %s failed!\n", p->level, ' ',
31918
15.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
31919
15.5k
    }
31920
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31921
15.5k
    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
26.4k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31929
15.5k
    PyMem_Free(_children);
31930
15.5k
    p->level--;
31931
15.5k
    return _seq;
31932
15.5k
}
31933
31934
// _loop1_75: lambda_param_maybe_default
31935
static asdl_seq *
31936
_loop1_75_rule(Parser *p)
31937
10.4k
{
31938
10.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31939
0
        _Pypegen_stack_overflow(p);
31940
0
    }
31941
10.4k
    if (p->error_indicator) {
31942
0
        p->level--;
31943
0
        return NULL;
31944
0
    }
31945
10.4k
    void *_res = NULL;
31946
10.4k
    int _mark = p->mark;
31947
10.4k
    void **_children = PyMem_Malloc(sizeof(void *));
31948
10.4k
    if (!_children) {
31949
0
        p->error_indicator = 1;
31950
0
        PyErr_NoMemory();
31951
0
        p->level--;
31952
0
        return NULL;
31953
0
    }
31954
10.4k
    Py_ssize_t _children_capacity = 1;
31955
10.4k
    Py_ssize_t _n = 0;
31956
10.4k
    { // lambda_param_maybe_default
31957
10.4k
        if (p->error_indicator) {
31958
0
            p->level--;
31959
0
            return NULL;
31960
0
        }
31961
10.4k
        D(fprintf(stderr, "%*c> _loop1_75[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
31962
10.4k
        NameDefaultPair* lambda_param_maybe_default_var;
31963
10.4k
        while (
31964
20.6k
            (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p))  // lambda_param_maybe_default
31965
10.4k
        )
31966
10.2k
        {
31967
10.2k
            _res = lambda_param_maybe_default_var;
31968
10.2k
            if (_n == _children_capacity) {
31969
1.38k
                _children_capacity *= 2;
31970
1.38k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31971
1.38k
                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.38k
                _children = _new_children;
31979
1.38k
            }
31980
10.2k
            _children[_n++] = _res;
31981
10.2k
            _mark = p->mark;
31982
10.2k
        }
31983
10.4k
        p->mark = _mark;
31984
10.4k
        D(fprintf(stderr, "%*c%s _loop1_75[%d-%d]: %s failed!\n", p->level, ' ',
31985
10.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
31986
10.4k
    }
31987
10.4k
    if (_n == 0 || p->error_indicator) {
31988
6.31k
        PyMem_Free(_children);
31989
6.31k
        p->level--;
31990
6.31k
        return NULL;
31991
6.31k
    }
31992
4.09k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31993
4.09k
    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
13.8k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32001
4.09k
    PyMem_Free(_children);
32002
4.09k
    p->level--;
32003
4.09k
    return _seq;
32004
4.09k
}
32005
32006
// _loop0_76: fstring_format_spec
32007
static asdl_seq *
32008
_loop0_76_rule(Parser *p)
32009
3.93k
{
32010
3.93k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32011
0
        _Pypegen_stack_overflow(p);
32012
0
    }
32013
3.93k
    if (p->error_indicator) {
32014
0
        p->level--;
32015
0
        return NULL;
32016
0
    }
32017
3.93k
    void *_res = NULL;
32018
3.93k
    int _mark = p->mark;
32019
3.93k
    void **_children = PyMem_Malloc(sizeof(void *));
32020
3.93k
    if (!_children) {
32021
0
        p->error_indicator = 1;
32022
0
        PyErr_NoMemory();
32023
0
        p->level--;
32024
0
        return NULL;
32025
0
    }
32026
3.93k
    Py_ssize_t _children_capacity = 1;
32027
3.93k
    Py_ssize_t _n = 0;
32028
3.93k
    { // fstring_format_spec
32029
3.93k
        if (p->error_indicator) {
32030
0
            p->level--;
32031
0
            return NULL;
32032
0
        }
32033
3.93k
        D(fprintf(stderr, "%*c> _loop0_76[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_format_spec"));
32034
3.93k
        expr_ty fstring_format_spec_var;
32035
3.93k
        while (
32036
14.4k
            (fstring_format_spec_var = fstring_format_spec_rule(p))  // fstring_format_spec
32037
3.93k
        )
32038
10.4k
        {
32039
10.4k
            _res = fstring_format_spec_var;
32040
10.4k
            if (_n == _children_capacity) {
32041
2.10k
                _children_capacity *= 2;
32042
2.10k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32043
2.10k
                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.10k
                _children = _new_children;
32051
2.10k
            }
32052
10.4k
            _children[_n++] = _res;
32053
10.4k
            _mark = p->mark;
32054
10.4k
        }
32055
3.93k
        p->mark = _mark;
32056
3.93k
        D(fprintf(stderr, "%*c%s _loop0_76[%d-%d]: %s failed!\n", p->level, ' ',
32057
3.93k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_format_spec"));
32058
3.93k
    }
32059
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32060
3.93k
    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.4k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32068
3.93k
    PyMem_Free(_children);
32069
3.93k
    p->level--;
32070
3.93k
    return _seq;
32071
3.93k
}
32072
32073
// _loop0_77: fstring_middle
32074
static asdl_seq *
32075
_loop0_77_rule(Parser *p)
32076
17.2k
{
32077
17.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32078
1
        _Pypegen_stack_overflow(p);
32079
1
    }
32080
17.2k
    if (p->error_indicator) {
32081
1
        p->level--;
32082
1
        return NULL;
32083
1
    }
32084
17.2k
    void *_res = NULL;
32085
17.2k
    int _mark = p->mark;
32086
17.2k
    void **_children = PyMem_Malloc(sizeof(void *));
32087
17.2k
    if (!_children) {
32088
0
        p->error_indicator = 1;
32089
0
        PyErr_NoMemory();
32090
0
        p->level--;
32091
0
        return NULL;
32092
0
    }
32093
17.2k
    Py_ssize_t _children_capacity = 1;
32094
17.2k
    Py_ssize_t _n = 0;
32095
17.2k
    { // fstring_middle
32096
17.2k
        if (p->error_indicator) {
32097
0
            p->level--;
32098
0
            return NULL;
32099
0
        }
32100
17.2k
        D(fprintf(stderr, "%*c> _loop0_77[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_middle"));
32101
17.2k
        expr_ty fstring_middle_var;
32102
17.2k
        while (
32103
57.9k
            (fstring_middle_var = fstring_middle_rule(p))  // fstring_middle
32104
17.2k
        )
32105
40.7k
        {
32106
40.7k
            _res = fstring_middle_var;
32107
40.7k
            if (_n == _children_capacity) {
32108
6.33k
                _children_capacity *= 2;
32109
6.33k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32110
6.33k
                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.33k
                _children = _new_children;
32118
6.33k
            }
32119
40.7k
            _children[_n++] = _res;
32120
40.7k
            _mark = p->mark;
32121
40.7k
        }
32122
17.2k
        p->mark = _mark;
32123
17.2k
        D(fprintf(stderr, "%*c%s _loop0_77[%d-%d]: %s failed!\n", p->level, ' ',
32124
17.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_middle"));
32125
17.2k
    }
32126
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32127
17.2k
    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
57.9k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32135
17.2k
    PyMem_Free(_children);
32136
17.2k
    p->level--;
32137
17.2k
    return _seq;
32138
17.2k
}
32139
32140
// _loop0_78: tstring_format_spec
32141
static asdl_seq *
32142
_loop0_78_rule(Parser *p)
32143
2.48k
{
32144
2.48k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32145
0
        _Pypegen_stack_overflow(p);
32146
0
    }
32147
2.48k
    if (p->error_indicator) {
32148
0
        p->level--;
32149
0
        return NULL;
32150
0
    }
32151
2.48k
    void *_res = NULL;
32152
2.48k
    int _mark = p->mark;
32153
2.48k
    void **_children = PyMem_Malloc(sizeof(void *));
32154
2.48k
    if (!_children) {
32155
0
        p->error_indicator = 1;
32156
0
        PyErr_NoMemory();
32157
0
        p->level--;
32158
0
        return NULL;
32159
0
    }
32160
2.48k
    Py_ssize_t _children_capacity = 1;
32161
2.48k
    Py_ssize_t _n = 0;
32162
2.48k
    { // tstring_format_spec
32163
2.48k
        if (p->error_indicator) {
32164
0
            p->level--;
32165
0
            return NULL;
32166
0
        }
32167
2.48k
        D(fprintf(stderr, "%*c> _loop0_78[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring_format_spec"));
32168
2.48k
        expr_ty tstring_format_spec_var;
32169
2.48k
        while (
32170
6.28k
            (tstring_format_spec_var = tstring_format_spec_rule(p))  // tstring_format_spec
32171
2.48k
        )
32172
3.79k
        {
32173
3.79k
            _res = tstring_format_spec_var;
32174
3.79k
            if (_n == _children_capacity) {
32175
734
                _children_capacity *= 2;
32176
734
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32177
734
                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
734
                _children = _new_children;
32185
734
            }
32186
3.79k
            _children[_n++] = _res;
32187
3.79k
            _mark = p->mark;
32188
3.79k
        }
32189
2.48k
        p->mark = _mark;
32190
2.48k
        D(fprintf(stderr, "%*c%s _loop0_78[%d-%d]: %s failed!\n", p->level, ' ',
32191
2.48k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring_format_spec"));
32192
2.48k
    }
32193
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32194
2.48k
    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.28k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32202
2.48k
    PyMem_Free(_children);
32203
2.48k
    p->level--;
32204
2.48k
    return _seq;
32205
2.48k
}
32206
32207
// _loop0_79: tstring_middle
32208
static asdl_seq *
32209
_loop0_79_rule(Parser *p)
32210
4.73k
{
32211
4.73k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32212
1
        _Pypegen_stack_overflow(p);
32213
1
    }
32214
4.73k
    if (p->error_indicator) {
32215
1
        p->level--;
32216
1
        return NULL;
32217
1
    }
32218
4.73k
    void *_res = NULL;
32219
4.73k
    int _mark = p->mark;
32220
4.73k
    void **_children = PyMem_Malloc(sizeof(void *));
32221
4.73k
    if (!_children) {
32222
0
        p->error_indicator = 1;
32223
0
        PyErr_NoMemory();
32224
0
        p->level--;
32225
0
        return NULL;
32226
0
    }
32227
4.73k
    Py_ssize_t _children_capacity = 1;
32228
4.73k
    Py_ssize_t _n = 0;
32229
4.73k
    { // tstring_middle
32230
4.73k
        if (p->error_indicator) {
32231
0
            p->level--;
32232
0
            return NULL;
32233
0
        }
32234
4.73k
        D(fprintf(stderr, "%*c> _loop0_79[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring_middle"));
32235
4.73k
        expr_ty tstring_middle_var;
32236
4.73k
        while (
32237
15.7k
            (tstring_middle_var = tstring_middle_rule(p))  // tstring_middle
32238
4.73k
        )
32239
11.0k
        {
32240
11.0k
            _res = tstring_middle_var;
32241
11.0k
            if (_n == _children_capacity) {
32242
1.67k
                _children_capacity *= 2;
32243
1.67k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32244
1.67k
                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.67k
                _children = _new_children;
32252
1.67k
            }
32253
11.0k
            _children[_n++] = _res;
32254
11.0k
            _mark = p->mark;
32255
11.0k
        }
32256
4.73k
        p->mark = _mark;
32257
4.73k
        D(fprintf(stderr, "%*c%s _loop0_79[%d-%d]: %s failed!\n", p->level, ' ',
32258
4.73k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring_middle"));
32259
4.73k
    }
32260
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32261
4.73k
    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
15.7k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32269
4.73k
    PyMem_Free(_children);
32270
4.73k
    p->level--;
32271
4.73k
    return _seq;
32272
4.73k
}
32273
32274
// _loop1_80: (fstring | string | tstring)
32275
static asdl_seq *
32276
_loop1_80_rule(Parser *p)
32277
104k
{
32278
104k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32279
1
        _Pypegen_stack_overflow(p);
32280
1
    }
32281
104k
    if (p->error_indicator) {
32282
1
        p->level--;
32283
1
        return NULL;
32284
1
    }
32285
104k
    void *_res = NULL;
32286
104k
    int _mark = p->mark;
32287
104k
    void **_children = PyMem_Malloc(sizeof(void *));
32288
104k
    if (!_children) {
32289
0
        p->error_indicator = 1;
32290
0
        PyErr_NoMemory();
32291
0
        p->level--;
32292
0
        return NULL;
32293
0
    }
32294
104k
    Py_ssize_t _children_capacity = 1;
32295
104k
    Py_ssize_t _n = 0;
32296
104k
    { // (fstring | string | tstring)
32297
104k
        if (p->error_indicator) {
32298
0
            p->level--;
32299
0
            return NULL;
32300
0
        }
32301
104k
        D(fprintf(stderr, "%*c> _loop1_80[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(fstring | string | tstring)"));
32302
104k
        void *_tmp_161_var;
32303
104k
        while (
32304
185k
            (_tmp_161_var = _tmp_161_rule(p))  // fstring | string | tstring
32305
104k
        )
32306
80.4k
        {
32307
80.4k
            _res = _tmp_161_var;
32308
80.4k
            if (_n == _children_capacity) {
32309
8.33k
                _children_capacity *= 2;
32310
8.33k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32311
8.33k
                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.33k
                _children = _new_children;
32319
8.33k
            }
32320
80.4k
            _children[_n++] = _res;
32321
80.4k
            _mark = p->mark;
32322
80.4k
        }
32323
104k
        p->mark = _mark;
32324
104k
        D(fprintf(stderr, "%*c%s _loop1_80[%d-%d]: %s failed!\n", p->level, ' ',
32325
104k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(fstring | string | tstring)"));
32326
104k
    }
32327
104k
    if (_n == 0 || p->error_indicator) {
32328
56.8k
        PyMem_Free(_children);
32329
56.8k
        p->level--;
32330
56.8k
        return NULL;
32331
56.8k
    }
32332
47.9k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32333
47.9k
    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
127k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32341
47.9k
    PyMem_Free(_children);
32342
47.9k
    p->level--;
32343
47.9k
    return _seq;
32344
47.9k
}
32345
32346
// _tmp_81: star_named_expression ',' star_named_expressions?
32347
static void *
32348
_tmp_81_rule(Parser *p)
32349
96.7k
{
32350
96.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32351
1
        _Pypegen_stack_overflow(p);
32352
1
    }
32353
96.7k
    if (p->error_indicator) {
32354
1
        p->level--;
32355
1
        return NULL;
32356
1
    }
32357
96.7k
    void * _res = NULL;
32358
96.7k
    int _mark = p->mark;
32359
96.7k
    { // star_named_expression ',' star_named_expressions?
32360
96.7k
        if (p->error_indicator) {
32361
0
            p->level--;
32362
0
            return NULL;
32363
0
        }
32364
96.7k
        D(fprintf(stderr, "%*c> _tmp_81[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
32365
96.7k
        Token * _literal;
32366
96.7k
        expr_ty y;
32367
96.7k
        void *z;
32368
96.7k
        if (
32369
96.7k
            (y = star_named_expression_rule(p))  // star_named_expression
32370
96.7k
            &&
32371
96.7k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
32372
96.7k
            &&
32373
96.7k
            (z = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
32374
96.7k
        )
32375
19.0k
        {
32376
19.0k
            D(fprintf(stderr, "%*c+ _tmp_81[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
32377
19.0k
            _res = _PyPegen_seq_insert_in_front ( p , y , z );
32378
19.0k
            if (_res == NULL && PyErr_Occurred()) {
32379
0
                p->error_indicator = 1;
32380
0
                p->level--;
32381
0
                return NULL;
32382
0
            }
32383
19.0k
            goto done;
32384
19.0k
        }
32385
77.7k
        p->mark = _mark;
32386
77.7k
        D(fprintf(stderr, "%*c%s _tmp_81[%d-%d]: %s failed!\n", p->level, ' ',
32387
77.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
32388
77.7k
    }
32389
0
    _res = NULL;
32390
96.7k
  done:
32391
96.7k
    p->level--;
32392
96.7k
    return _res;
32393
77.7k
}
32394
32395
// _loop0_82: ',' double_starred_kvpair
32396
static asdl_seq *
32397
_loop0_82_rule(Parser *p)
32398
8.82k
{
32399
8.82k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32400
0
        _Pypegen_stack_overflow(p);
32401
0
    }
32402
8.82k
    if (p->error_indicator) {
32403
0
        p->level--;
32404
0
        return NULL;
32405
0
    }
32406
8.82k
    void *_res = NULL;
32407
8.82k
    int _mark = p->mark;
32408
8.82k
    void **_children = PyMem_Malloc(sizeof(void *));
32409
8.82k
    if (!_children) {
32410
0
        p->error_indicator = 1;
32411
0
        PyErr_NoMemory();
32412
0
        p->level--;
32413
0
        return NULL;
32414
0
    }
32415
8.82k
    Py_ssize_t _children_capacity = 1;
32416
8.82k
    Py_ssize_t _n = 0;
32417
8.82k
    { // ',' double_starred_kvpair
32418
8.82k
        if (p->error_indicator) {
32419
0
            p->level--;
32420
0
            return NULL;
32421
0
        }
32422
8.82k
        D(fprintf(stderr, "%*c> _loop0_82[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair"));
32423
8.82k
        Token * _literal;
32424
8.82k
        KeyValuePair* elem;
32425
8.82k
        while (
32426
42.9k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
32427
42.9k
            &&
32428
42.9k
            (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
32429
8.82k
        )
32430
34.1k
        {
32431
34.1k
            _res = elem;
32432
34.1k
            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
34.1k
            if (_n == _children_capacity) {
32439
1.81k
                _children_capacity *= 2;
32440
1.81k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32441
1.81k
                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.81k
                _children = _new_children;
32449
1.81k
            }
32450
34.1k
            _children[_n++] = _res;
32451
34.1k
            _mark = p->mark;
32452
34.1k
        }
32453
8.82k
        p->mark = _mark;
32454
8.82k
        D(fprintf(stderr, "%*c%s _loop0_82[%d-%d]: %s failed!\n", p->level, ' ',
32455
8.82k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair"));
32456
8.82k
    }
32457
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32458
8.82k
    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
42.9k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32466
8.82k
    PyMem_Free(_children);
32467
8.82k
    p->level--;
32468
8.82k
    return _seq;
32469
8.82k
}
32470
32471
// _gather_83: double_starred_kvpair _loop0_82
32472
static asdl_seq *
32473
_gather_83_rule(Parser *p)
32474
34.6k
{
32475
34.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32476
1
        _Pypegen_stack_overflow(p);
32477
1
    }
32478
34.6k
    if (p->error_indicator) {
32479
1
        p->level--;
32480
1
        return NULL;
32481
1
    }
32482
34.6k
    asdl_seq * _res = NULL;
32483
34.6k
    int _mark = p->mark;
32484
34.6k
    { // double_starred_kvpair _loop0_82
32485
34.6k
        if (p->error_indicator) {
32486
0
            p->level--;
32487
0
            return NULL;
32488
0
        }
32489
34.6k
        D(fprintf(stderr, "%*c> _gather_83[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_82"));
32490
34.6k
        KeyValuePair* elem;
32491
34.6k
        asdl_seq * seq;
32492
34.6k
        if (
32493
34.6k
            (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
32494
34.6k
            &&
32495
34.6k
            (seq = _loop0_82_rule(p))  // _loop0_82
32496
34.6k
        )
32497
8.82k
        {
32498
8.82k
            D(fprintf(stderr, "%*c+ _gather_83[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_82"));
32499
8.82k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
32500
8.82k
            goto done;
32501
8.82k
        }
32502
25.8k
        p->mark = _mark;
32503
25.8k
        D(fprintf(stderr, "%*c%s _gather_83[%d-%d]: %s failed!\n", p->level, ' ',
32504
25.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_82"));
32505
25.8k
    }
32506
0
    _res = NULL;
32507
34.6k
  done:
32508
34.6k
    p->level--;
32509
34.6k
    return _res;
32510
25.8k
}
32511
32512
// _loop1_84: for_if_clause
32513
static asdl_seq *
32514
_loop1_84_rule(Parser *p)
32515
95.1k
{
32516
95.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32517
0
        _Pypegen_stack_overflow(p);
32518
0
    }
32519
95.1k
    if (p->error_indicator) {
32520
0
        p->level--;
32521
0
        return NULL;
32522
0
    }
32523
95.1k
    void *_res = NULL;
32524
95.1k
    int _mark = p->mark;
32525
95.1k
    void **_children = PyMem_Malloc(sizeof(void *));
32526
95.1k
    if (!_children) {
32527
0
        p->error_indicator = 1;
32528
0
        PyErr_NoMemory();
32529
0
        p->level--;
32530
0
        return NULL;
32531
0
    }
32532
95.1k
    Py_ssize_t _children_capacity = 1;
32533
95.1k
    Py_ssize_t _n = 0;
32534
95.1k
    { // for_if_clause
32535
95.1k
        if (p->error_indicator) {
32536
0
            p->level--;
32537
0
            return NULL;
32538
0
        }
32539
95.1k
        D(fprintf(stderr, "%*c> _loop1_84[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause"));
32540
95.1k
        comprehension_ty for_if_clause_var;
32541
95.1k
        while (
32542
106k
            (for_if_clause_var = for_if_clause_rule(p))  // for_if_clause
32543
95.1k
        )
32544
11.1k
        {
32545
11.1k
            _res = for_if_clause_var;
32546
11.1k
            if (_n == _children_capacity) {
32547
766
                _children_capacity *= 2;
32548
766
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32549
766
                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
766
                _children = _new_children;
32557
766
            }
32558
11.1k
            _children[_n++] = _res;
32559
11.1k
            _mark = p->mark;
32560
11.1k
        }
32561
95.1k
        p->mark = _mark;
32562
95.1k
        D(fprintf(stderr, "%*c%s _loop1_84[%d-%d]: %s failed!\n", p->level, ' ',
32563
95.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause"));
32564
95.1k
    }
32565
95.1k
    if (_n == 0 || p->error_indicator) {
32566
85.1k
        PyMem_Free(_children);
32567
85.1k
        p->level--;
32568
85.1k
        return NULL;
32569
85.1k
    }
32570
10.0k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32571
10.0k
    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
21.0k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32579
10.0k
    PyMem_Free(_children);
32580
10.0k
    p->level--;
32581
10.0k
    return _seq;
32582
10.0k
}
32583
32584
// _loop0_85: ('if' disjunction)
32585
static asdl_seq *
32586
_loop0_85_rule(Parser *p)
32587
11.1k
{
32588
11.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32589
0
        _Pypegen_stack_overflow(p);
32590
0
    }
32591
11.1k
    if (p->error_indicator) {
32592
0
        p->level--;
32593
0
        return NULL;
32594
0
    }
32595
11.1k
    void *_res = NULL;
32596
11.1k
    int _mark = p->mark;
32597
11.1k
    void **_children = PyMem_Malloc(sizeof(void *));
32598
11.1k
    if (!_children) {
32599
0
        p->error_indicator = 1;
32600
0
        PyErr_NoMemory();
32601
0
        p->level--;
32602
0
        return NULL;
32603
0
    }
32604
11.1k
    Py_ssize_t _children_capacity = 1;
32605
11.1k
    Py_ssize_t _n = 0;
32606
11.1k
    { // ('if' disjunction)
32607
11.1k
        if (p->error_indicator) {
32608
0
            p->level--;
32609
0
            return NULL;
32610
0
        }
32611
11.1k
        D(fprintf(stderr, "%*c> _loop0_85[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)"));
32612
11.1k
        void *_tmp_162_var;
32613
11.1k
        while (
32614
16.7k
            (_tmp_162_var = _tmp_162_rule(p))  // 'if' disjunction
32615
11.1k
        )
32616
5.65k
        {
32617
5.65k
            _res = _tmp_162_var;
32618
5.65k
            if (_n == _children_capacity) {
32619
2.32k
                _children_capacity *= 2;
32620
2.32k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32621
2.32k
                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.32k
                _children = _new_children;
32629
2.32k
            }
32630
5.65k
            _children[_n++] = _res;
32631
5.65k
            _mark = p->mark;
32632
5.65k
        }
32633
11.1k
        p->mark = _mark;
32634
11.1k
        D(fprintf(stderr, "%*c%s _loop0_85[%d-%d]: %s failed!\n", p->level, ' ',
32635
11.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('if' disjunction)"));
32636
11.1k
    }
32637
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32638
11.1k
    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.7k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32646
11.1k
    PyMem_Free(_children);
32647
11.1k
    p->level--;
32648
11.1k
    return _seq;
32649
11.1k
}
32650
32651
// _tmp_86: assignment_expression | expression !':='
32652
static void *
32653
_tmp_86_rule(Parser *p)
32654
183k
{
32655
183k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32656
1
        _Pypegen_stack_overflow(p);
32657
1
    }
32658
183k
    if (p->error_indicator) {
32659
1
        p->level--;
32660
1
        return NULL;
32661
1
    }
32662
183k
    void * _res = NULL;
32663
183k
    int _mark = p->mark;
32664
183k
    { // assignment_expression
32665
183k
        if (p->error_indicator) {
32666
0
            p->level--;
32667
0
            return NULL;
32668
0
        }
32669
183k
        D(fprintf(stderr, "%*c> _tmp_86[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
32670
183k
        expr_ty assignment_expression_var;
32671
183k
        if (
32672
183k
            (assignment_expression_var = assignment_expression_rule(p))  // assignment_expression
32673
183k
        )
32674
465
        {
32675
465
            D(fprintf(stderr, "%*c+ _tmp_86[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
32676
465
            _res = assignment_expression_var;
32677
465
            goto done;
32678
465
        }
32679
182k
        p->mark = _mark;
32680
182k
        D(fprintf(stderr, "%*c%s _tmp_86[%d-%d]: %s failed!\n", p->level, ' ',
32681
182k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression"));
32682
182k
    }
32683
0
    { // expression !':='
32684
182k
        if (p->error_indicator) {
32685
146
            p->level--;
32686
146
            return NULL;
32687
146
        }
32688
182k
        D(fprintf(stderr, "%*c> _tmp_86[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
32689
182k
        expr_ty expression_var;
32690
182k
        if (
32691
182k
            (expression_var = expression_rule(p))  // expression
32692
182k
            &&
32693
182k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53)  // token=':='
32694
182k
        )
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
80.8k
        p->mark = _mark;
32701
80.8k
        D(fprintf(stderr, "%*c%s _tmp_86[%d-%d]: %s failed!\n", p->level, ' ',
32702
80.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
32703
80.8k
    }
32704
0
    _res = NULL;
32705
183k
  done:
32706
183k
    p->level--;
32707
183k
    return _res;
32708
80.8k
}
32709
32710
// _loop0_87: ',' (starred_expression | (assignment_expression | expression !':=') !'=')
32711
static asdl_seq *
32712
_loop0_87_rule(Parser *p)
32713
37.0k
{
32714
37.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32715
0
        _Pypegen_stack_overflow(p);
32716
0
    }
32717
37.0k
    if (p->error_indicator) {
32718
0
        p->level--;
32719
0
        return NULL;
32720
0
    }
32721
37.0k
    void *_res = NULL;
32722
37.0k
    int _mark = p->mark;
32723
37.0k
    void **_children = PyMem_Malloc(sizeof(void *));
32724
37.0k
    if (!_children) {
32725
0
        p->error_indicator = 1;
32726
0
        PyErr_NoMemory();
32727
0
        p->level--;
32728
0
        return NULL;
32729
0
    }
32730
37.0k
    Py_ssize_t _children_capacity = 1;
32731
37.0k
    Py_ssize_t _n = 0;
32732
37.0k
    { // ',' (starred_expression | (assignment_expression | expression !':=') !'=')
32733
37.0k
        if (p->error_indicator) {
32734
0
            p->level--;
32735
0
            return NULL;
32736
0
        }
32737
37.0k
        D(fprintf(stderr, "%*c> _loop0_87[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (starred_expression | (assignment_expression | expression !':=') !'=')"));
32738
37.0k
        Token * _literal;
32739
37.0k
        void *elem;
32740
37.0k
        while (
32741
49.2k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
32742
49.2k
            &&
32743
49.2k
            (elem = _tmp_163_rule(p))  // starred_expression | (assignment_expression | expression !':=') !'='
32744
37.0k
        )
32745
12.2k
        {
32746
12.2k
            _res = elem;
32747
12.2k
            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.2k
            if (_n == _children_capacity) {
32754
3.05k
                _children_capacity *= 2;
32755
3.05k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32756
3.05k
                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.05k
                _children = _new_children;
32764
3.05k
            }
32765
12.2k
            _children[_n++] = _res;
32766
12.2k
            _mark = p->mark;
32767
12.2k
        }
32768
37.0k
        p->mark = _mark;
32769
37.0k
        D(fprintf(stderr, "%*c%s _loop0_87[%d-%d]: %s failed!\n", p->level, ' ',
32770
37.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (starred_expression | (assignment_expression | expression !':=') !'=')"));
32771
37.0k
    }
32772
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32773
37.0k
    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
49.2k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32781
37.0k
    PyMem_Free(_children);
32782
37.0k
    p->level--;
32783
37.0k
    return _seq;
32784
37.0k
}
32785
32786
// _gather_88:
32787
//     | (starred_expression | (assignment_expression | expression !':=') !'=') _loop0_87
32788
static asdl_seq *
32789
_gather_88_rule(Parser *p)
32790
81.6k
{
32791
81.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32792
0
        _Pypegen_stack_overflow(p);
32793
0
    }
32794
81.6k
    if (p->error_indicator) {
32795
0
        p->level--;
32796
0
        return NULL;
32797
0
    }
32798
81.6k
    asdl_seq * _res = NULL;
32799
81.6k
    int _mark = p->mark;
32800
81.6k
    { // (starred_expression | (assignment_expression | expression !':=') !'=') _loop0_87
32801
81.6k
        if (p->error_indicator) {
32802
0
            p->level--;
32803
0
            return NULL;
32804
0
        }
32805
81.6k
        D(fprintf(stderr, "%*c> _gather_88[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_87"));
32806
81.6k
        void *elem;
32807
81.6k
        asdl_seq * seq;
32808
81.6k
        if (
32809
81.6k
            (elem = _tmp_163_rule(p))  // starred_expression | (assignment_expression | expression !':=') !'='
32810
81.6k
            &&
32811
81.6k
            (seq = _loop0_87_rule(p))  // _loop0_87
32812
81.6k
        )
32813
37.0k
        {
32814
37.0k
            D(fprintf(stderr, "%*c+ _gather_88[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_87"));
32815
37.0k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
32816
37.0k
            goto done;
32817
37.0k
        }
32818
44.5k
        p->mark = _mark;
32819
44.5k
        D(fprintf(stderr, "%*c%s _gather_88[%d-%d]: %s failed!\n", p->level, ' ',
32820
44.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_87"));
32821
44.5k
    }
32822
0
    _res = NULL;
32823
81.6k
  done:
32824
81.6k
    p->level--;
32825
81.6k
    return _res;
32826
44.5k
}
32827
32828
// _tmp_89: ',' kwargs
32829
static void *
32830
_tmp_89_rule(Parser *p)
32831
34.2k
{
32832
34.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32833
0
        _Pypegen_stack_overflow(p);
32834
0
    }
32835
34.2k
    if (p->error_indicator) {
32836
593
        p->level--;
32837
593
        return NULL;
32838
593
    }
32839
33.6k
    void * _res = NULL;
32840
33.6k
    int _mark = p->mark;
32841
33.6k
    { // ',' kwargs
32842
33.6k
        if (p->error_indicator) {
32843
0
            p->level--;
32844
0
            return NULL;
32845
0
        }
32846
33.6k
        D(fprintf(stderr, "%*c> _tmp_89[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwargs"));
32847
33.6k
        Token * _literal;
32848
33.6k
        asdl_seq* k;
32849
33.6k
        if (
32850
33.6k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
32851
33.6k
            &&
32852
33.6k
            (k = kwargs_rule(p))  // kwargs
32853
33.6k
        )
32854
2.38k
        {
32855
2.38k
            D(fprintf(stderr, "%*c+ _tmp_89[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' kwargs"));
32856
2.38k
            _res = k;
32857
2.38k
            if (_res == NULL && PyErr_Occurred()) {
32858
0
                p->error_indicator = 1;
32859
0
                p->level--;
32860
0
                return NULL;
32861
0
            }
32862
2.38k
            goto done;
32863
2.38k
        }
32864
31.2k
        p->mark = _mark;
32865
31.2k
        D(fprintf(stderr, "%*c%s _tmp_89[%d-%d]: %s failed!\n", p->level, ' ',
32866
31.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwargs"));
32867
31.2k
    }
32868
0
    _res = NULL;
32869
33.6k
  done:
32870
33.6k
    p->level--;
32871
33.6k
    return _res;
32872
31.2k
}
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.1k
        {
32910
11.1k
            _res = elem;
32911
11.1k
            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.1k
            if (_n == _children_capacity) {
32918
2.78k
                _children_capacity *= 2;
32919
2.78k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32920
2.78k
                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.78k
                _children = _new_children;
32928
2.78k
            }
32929
11.1k
            _children[_n++] = _res;
32930
11.1k
            _mark = p->mark;
32931
11.1k
        }
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
101k
{
32954
101k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32955
0
        _Pypegen_stack_overflow(p);
32956
0
    }
32957
101k
    if (p->error_indicator) {
32958
0
        p->level--;
32959
0
        return NULL;
32960
0
    }
32961
101k
    asdl_seq * _res = NULL;
32962
101k
    int _mark = p->mark;
32963
101k
    { // kwarg_or_starred _loop0_90
32964
101k
        if (p->error_indicator) {
32965
0
            p->level--;
32966
0
            return NULL;
32967
0
        }
32968
101k
        D(fprintf(stderr, "%*c> _gather_91[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_90"));
32969
101k
        KeywordOrStarred* elem;
32970
101k
        asdl_seq * seq;
32971
101k
        if (
32972
101k
            (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
32973
101k
            &&
32974
101k
            (seq = _loop0_90_rule(p))  // _loop0_90
32975
101k
        )
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
85.6k
        p->mark = _mark;
32982
85.6k
        D(fprintf(stderr, "%*c%s _gather_91[%d-%d]: %s failed!\n", p->level, ' ',
32983
85.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_starred _loop0_90"));
32984
85.6k
    }
32985
0
    _res = NULL;
32986
101k
  done:
32987
101k
    p->level--;
32988
101k
    return _res;
32989
85.6k
}
32990
32991
// _loop0_92: ',' kwarg_or_double_starred
32992
static asdl_seq *
32993
_loop0_92_rule(Parser *p)
32994
4.41k
{
32995
4.41k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32996
0
        _Pypegen_stack_overflow(p);
32997
0
    }
32998
4.41k
    if (p->error_indicator) {
32999
0
        p->level--;
33000
0
        return NULL;
33001
0
    }
33002
4.41k
    void *_res = NULL;
33003
4.41k
    int _mark = p->mark;
33004
4.41k
    void **_children = PyMem_Malloc(sizeof(void *));
33005
4.41k
    if (!_children) {
33006
0
        p->error_indicator = 1;
33007
0
        PyErr_NoMemory();
33008
0
        p->level--;
33009
0
        return NULL;
33010
0
    }
33011
4.41k
    Py_ssize_t _children_capacity = 1;
33012
4.41k
    Py_ssize_t _n = 0;
33013
4.41k
    { // ',' kwarg_or_double_starred
33014
4.41k
        if (p->error_indicator) {
33015
0
            p->level--;
33016
0
            return NULL;
33017
0
        }
33018
4.41k
        D(fprintf(stderr, "%*c> _loop0_92[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_double_starred"));
33019
4.41k
        Token * _literal;
33020
4.41k
        KeywordOrStarred* elem;
33021
4.41k
        while (
33022
9.83k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33023
9.83k
            &&
33024
9.83k
            (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
33025
4.41k
        )
33026
5.42k
        {
33027
5.42k
            _res = elem;
33028
5.42k
            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.42k
            if (_n == _children_capacity) {
33035
893
                _children_capacity *= 2;
33036
893
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33037
893
                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
893
                _children = _new_children;
33045
893
            }
33046
5.42k
            _children[_n++] = _res;
33047
5.42k
            _mark = p->mark;
33048
5.42k
        }
33049
4.41k
        p->mark = _mark;
33050
4.41k
        D(fprintf(stderr, "%*c%s _loop0_92[%d-%d]: %s failed!\n", p->level, ' ',
33051
4.41k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_double_starred"));
33052
4.41k
    }
33053
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33054
4.41k
    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
9.83k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33062
4.41k
    PyMem_Free(_children);
33063
4.41k
    p->level--;
33064
4.41k
    return _seq;
33065
4.41k
}
33066
33067
// _gather_93: kwarg_or_double_starred _loop0_92
33068
static asdl_seq *
33069
_gather_93_rule(Parser *p)
33070
45.6k
{
33071
45.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33072
0
        _Pypegen_stack_overflow(p);
33073
0
    }
33074
45.6k
    if (p->error_indicator) {
33075
237
        p->level--;
33076
237
        return NULL;
33077
237
    }
33078
45.4k
    asdl_seq * _res = NULL;
33079
45.4k
    int _mark = p->mark;
33080
45.4k
    { // kwarg_or_double_starred _loop0_92
33081
45.4k
        if (p->error_indicator) {
33082
0
            p->level--;
33083
0
            return NULL;
33084
0
        }
33085
45.4k
        D(fprintf(stderr, "%*c> _gather_93[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_92"));
33086
45.4k
        KeywordOrStarred* elem;
33087
45.4k
        asdl_seq * seq;
33088
45.4k
        if (
33089
45.4k
            (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
33090
45.4k
            &&
33091
45.4k
            (seq = _loop0_92_rule(p))  // _loop0_92
33092
45.4k
        )
33093
4.41k
        {
33094
4.41k
            D(fprintf(stderr, "%*c+ _gather_93[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_92"));
33095
4.41k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
33096
4.41k
            goto done;
33097
4.41k
        }
33098
41.0k
        p->mark = _mark;
33099
41.0k
        D(fprintf(stderr, "%*c%s _gather_93[%d-%d]: %s failed!\n", p->level, ' ',
33100
41.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_double_starred _loop0_92"));
33101
41.0k
    }
33102
0
    _res = NULL;
33103
45.4k
  done:
33104
45.4k
    p->level--;
33105
45.4k
    return _res;
33106
41.0k
}
33107
33108
// _loop0_94: (',' star_target)
33109
static asdl_seq *
33110
_loop0_94_rule(Parser *p)
33111
13.6k
{
33112
13.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33113
0
        _Pypegen_stack_overflow(p);
33114
0
    }
33115
13.6k
    if (p->error_indicator) {
33116
0
        p->level--;
33117
0
        return NULL;
33118
0
    }
33119
13.6k
    void *_res = NULL;
33120
13.6k
    int _mark = p->mark;
33121
13.6k
    void **_children = PyMem_Malloc(sizeof(void *));
33122
13.6k
    if (!_children) {
33123
0
        p->error_indicator = 1;
33124
0
        PyErr_NoMemory();
33125
0
        p->level--;
33126
0
        return NULL;
33127
0
    }
33128
13.6k
    Py_ssize_t _children_capacity = 1;
33129
13.6k
    Py_ssize_t _n = 0;
33130
13.6k
    { // (',' star_target)
33131
13.6k
        if (p->error_indicator) {
33132
0
            p->level--;
33133
0
            return NULL;
33134
0
        }
33135
13.6k
        D(fprintf(stderr, "%*c> _loop0_94[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)"));
33136
13.6k
        void *_tmp_164_var;
33137
13.6k
        while (
33138
22.1k
            (_tmp_164_var = _tmp_164_rule(p))  // ',' star_target
33139
13.6k
        )
33140
8.46k
        {
33141
8.46k
            _res = _tmp_164_var;
33142
8.46k
            if (_n == _children_capacity) {
33143
1.52k
                _children_capacity *= 2;
33144
1.52k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33145
1.52k
                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.52k
                _children = _new_children;
33153
1.52k
            }
33154
8.46k
            _children[_n++] = _res;
33155
8.46k
            _mark = p->mark;
33156
8.46k
        }
33157
13.6k
        p->mark = _mark;
33158
13.6k
        D(fprintf(stderr, "%*c%s _loop0_94[%d-%d]: %s failed!\n", p->level, ' ',
33159
13.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_target)"));
33160
13.6k
    }
33161
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33162
13.6k
    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
22.1k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33170
13.6k
    PyMem_Free(_children);
33171
13.6k
    p->level--;
33172
13.6k
    return _seq;
33173
13.6k
}
33174
33175
// _loop0_95: ',' star_target
33176
static asdl_seq *
33177
_loop0_95_rule(Parser *p)
33178
2.78k
{
33179
2.78k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33180
0
        _Pypegen_stack_overflow(p);
33181
0
    }
33182
2.78k
    if (p->error_indicator) {
33183
0
        p->level--;
33184
0
        return NULL;
33185
0
    }
33186
2.78k
    void *_res = NULL;
33187
2.78k
    int _mark = p->mark;
33188
2.78k
    void **_children = PyMem_Malloc(sizeof(void *));
33189
2.78k
    if (!_children) {
33190
0
        p->error_indicator = 1;
33191
0
        PyErr_NoMemory();
33192
0
        p->level--;
33193
0
        return NULL;
33194
0
    }
33195
2.78k
    Py_ssize_t _children_capacity = 1;
33196
2.78k
    Py_ssize_t _n = 0;
33197
2.78k
    { // ',' star_target
33198
2.78k
        if (p->error_indicator) {
33199
0
            p->level--;
33200
0
            return NULL;
33201
0
        }
33202
2.78k
        D(fprintf(stderr, "%*c> _loop0_95[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
33203
2.78k
        Token * _literal;
33204
2.78k
        expr_ty elem;
33205
2.78k
        while (
33206
6.35k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33207
6.35k
            &&
33208
6.35k
            (elem = star_target_rule(p))  // star_target
33209
2.78k
        )
33210
3.56k
        {
33211
3.56k
            _res = elem;
33212
3.56k
            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.56k
            if (_n == _children_capacity) {
33219
1.04k
                _children_capacity *= 2;
33220
1.04k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33221
1.04k
                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.04k
                _children = _new_children;
33229
1.04k
            }
33230
3.56k
            _children[_n++] = _res;
33231
3.56k
            _mark = p->mark;
33232
3.56k
        }
33233
2.78k
        p->mark = _mark;
33234
2.78k
        D(fprintf(stderr, "%*c%s _loop0_95[%d-%d]: %s failed!\n", p->level, ' ',
33235
2.78k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
33236
2.78k
    }
33237
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33238
2.78k
    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.35k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33246
2.78k
    PyMem_Free(_children);
33247
2.78k
    p->level--;
33248
2.78k
    return _seq;
33249
2.78k
}
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.78k
        {
33278
2.78k
            D(fprintf(stderr, "%*c+ _gather_96[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target _loop0_95"));
33279
2.78k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
33280
2.78k
            goto done;
33281
2.78k
        }
33282
7.30k
        p->mark = _mark;
33283
7.30k
        D(fprintf(stderr, "%*c%s _gather_96[%d-%d]: %s failed!\n", p->level, ' ',
33284
7.30k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target _loop0_95"));
33285
7.30k
    }
33286
0
    _res = NULL;
33287
10.0k
  done:
33288
10.0k
    p->level--;
33289
10.0k
    return _res;
33290
7.30k
}
33291
33292
// _loop1_97: (',' star_target)
33293
static asdl_seq *
33294
_loop1_97_rule(Parser *p)
33295
4.46k
{
33296
4.46k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33297
0
        _Pypegen_stack_overflow(p);
33298
0
    }
33299
4.46k
    if (p->error_indicator) {
33300
0
        p->level--;
33301
0
        return NULL;
33302
0
    }
33303
4.46k
    void *_res = NULL;
33304
4.46k
    int _mark = p->mark;
33305
4.46k
    void **_children = PyMem_Malloc(sizeof(void *));
33306
4.46k
    if (!_children) {
33307
0
        p->error_indicator = 1;
33308
0
        PyErr_NoMemory();
33309
0
        p->level--;
33310
0
        return NULL;
33311
0
    }
33312
4.46k
    Py_ssize_t _children_capacity = 1;
33313
4.46k
    Py_ssize_t _n = 0;
33314
4.46k
    { // (',' star_target)
33315
4.46k
        if (p->error_indicator) {
33316
0
            p->level--;
33317
0
            return NULL;
33318
0
        }
33319
4.46k
        D(fprintf(stderr, "%*c> _loop1_97[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)"));
33320
4.46k
        void *_tmp_164_var;
33321
4.46k
        while (
33322
6.33k
            (_tmp_164_var = _tmp_164_rule(p))  // ',' star_target
33323
4.46k
        )
33324
1.86k
        {
33325
1.86k
            _res = _tmp_164_var;
33326
1.86k
            if (_n == _children_capacity) {
33327
653
                _children_capacity *= 2;
33328
653
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33329
653
                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
653
                _children = _new_children;
33337
653
            }
33338
1.86k
            _children[_n++] = _res;
33339
1.86k
            _mark = p->mark;
33340
1.86k
        }
33341
4.46k
        p->mark = _mark;
33342
4.46k
        D(fprintf(stderr, "%*c%s _loop1_97[%d-%d]: %s failed!\n", p->level, ' ',
33343
4.46k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_target)"));
33344
4.46k
    }
33345
4.46k
    if (_n == 0 || p->error_indicator) {
33346
3.77k
        PyMem_Free(_children);
33347
3.77k
        p->level--;
33348
3.77k
        return NULL;
33349
3.77k
    }
33350
691
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33351
691
    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.55k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33359
691
    PyMem_Free(_children);
33360
691
    p->level--;
33361
691
    return _seq;
33362
691
}
33363
33364
// _tmp_98: !'*' star_target
33365
static void *
33366
_tmp_98_rule(Parser *p)
33367
3.29k
{
33368
3.29k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33369
0
        _Pypegen_stack_overflow(p);
33370
0
    }
33371
3.29k
    if (p->error_indicator) {
33372
0
        p->level--;
33373
0
        return NULL;
33374
0
    }
33375
3.29k
    void * _res = NULL;
33376
3.29k
    int _mark = p->mark;
33377
3.29k
    { // !'*' star_target
33378
3.29k
        if (p->error_indicator) {
33379
0
            p->level--;
33380
0
            return NULL;
33381
0
        }
33382
3.29k
        D(fprintf(stderr, "%*c> _tmp_98[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!'*' star_target"));
33383
3.29k
        expr_ty star_target_var;
33384
3.29k
        if (
33385
3.29k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 16)  // token='*'
33386
3.29k
            &&
33387
3.29k
            (star_target_var = star_target_rule(p))  // star_target
33388
3.29k
        )
33389
2.01k
        {
33390
2.01k
            D(fprintf(stderr, "%*c+ _tmp_98[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!'*' star_target"));
33391
2.01k
            _res = star_target_var;
33392
2.01k
            goto done;
33393
2.01k
        }
33394
1.28k
        p->mark = _mark;
33395
1.28k
        D(fprintf(stderr, "%*c%s _tmp_98[%d-%d]: %s failed!\n", p->level, ' ',
33396
1.28k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!'*' star_target"));
33397
1.28k
    }
33398
0
    _res = NULL;
33399
3.29k
  done:
33400
3.29k
    p->level--;
33401
3.29k
    return _res;
33402
1.28k
}
33403
33404
// _loop0_99: ',' del_target
33405
static asdl_seq *
33406
_loop0_99_rule(Parser *p)
33407
2.85k
{
33408
2.85k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33409
0
        _Pypegen_stack_overflow(p);
33410
0
    }
33411
2.85k
    if (p->error_indicator) {
33412
0
        p->level--;
33413
0
        return NULL;
33414
0
    }
33415
2.85k
    void *_res = NULL;
33416
2.85k
    int _mark = p->mark;
33417
2.85k
    void **_children = PyMem_Malloc(sizeof(void *));
33418
2.85k
    if (!_children) {
33419
0
        p->error_indicator = 1;
33420
0
        PyErr_NoMemory();
33421
0
        p->level--;
33422
0
        return NULL;
33423
0
    }
33424
2.85k
    Py_ssize_t _children_capacity = 1;
33425
2.85k
    Py_ssize_t _n = 0;
33426
2.85k
    { // ',' del_target
33427
2.85k
        if (p->error_indicator) {
33428
0
            p->level--;
33429
0
            return NULL;
33430
0
        }
33431
2.85k
        D(fprintf(stderr, "%*c> _loop0_99[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' del_target"));
33432
2.85k
        Token * _literal;
33433
2.85k
        expr_ty elem;
33434
2.85k
        while (
33435
7.63k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33436
7.63k
            &&
33437
7.63k
            (elem = del_target_rule(p))  // del_target
33438
2.85k
        )
33439
4.78k
        {
33440
4.78k
            _res = elem;
33441
4.78k
            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
4.78k
            if (_n == _children_capacity) {
33448
1.24k
                _children_capacity *= 2;
33449
1.24k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33450
1.24k
                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.24k
                _children = _new_children;
33458
1.24k
            }
33459
4.78k
            _children[_n++] = _res;
33460
4.78k
            _mark = p->mark;
33461
4.78k
        }
33462
2.85k
        p->mark = _mark;
33463
2.85k
        D(fprintf(stderr, "%*c%s _loop0_99[%d-%d]: %s failed!\n", p->level, ' ',
33464
2.85k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' del_target"));
33465
2.85k
    }
33466
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33467
2.85k
    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
7.63k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33475
2.85k
    PyMem_Free(_children);
33476
2.85k
    p->level--;
33477
2.85k
    return _seq;
33478
2.85k
}
33479
33480
// _gather_100: del_target _loop0_99
33481
static asdl_seq *
33482
_gather_100_rule(Parser *p)
33483
5.62k
{
33484
5.62k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33485
0
        _Pypegen_stack_overflow(p);
33486
0
    }
33487
5.62k
    if (p->error_indicator) {
33488
0
        p->level--;
33489
0
        return NULL;
33490
0
    }
33491
5.62k
    asdl_seq * _res = NULL;
33492
5.62k
    int _mark = p->mark;
33493
5.62k
    { // del_target _loop0_99
33494
5.62k
        if (p->error_indicator) {
33495
0
            p->level--;
33496
0
            return NULL;
33497
0
        }
33498
5.62k
        D(fprintf(stderr, "%*c> _gather_100[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "del_target _loop0_99"));
33499
5.62k
        expr_ty elem;
33500
5.62k
        asdl_seq * seq;
33501
5.62k
        if (
33502
5.62k
            (elem = del_target_rule(p))  // del_target
33503
5.62k
            &&
33504
5.62k
            (seq = _loop0_99_rule(p))  // _loop0_99
33505
5.62k
        )
33506
2.85k
        {
33507
2.85k
            D(fprintf(stderr, "%*c+ _gather_100[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "del_target _loop0_99"));
33508
2.85k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
33509
2.85k
            goto done;
33510
2.85k
        }
33511
2.76k
        p->mark = _mark;
33512
2.76k
        D(fprintf(stderr, "%*c%s _gather_100[%d-%d]: %s failed!\n", p->level, ' ',
33513
2.76k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_target _loop0_99"));
33514
2.76k
    }
33515
0
    _res = NULL;
33516
5.62k
  done:
33517
5.62k
    p->level--;
33518
5.62k
    return _res;
33519
2.76k
}
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
7.93k
{
33685
7.93k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33686
0
        _Pypegen_stack_overflow(p);
33687
0
    }
33688
7.93k
    if (p->error_indicator) {
33689
0
        p->level--;
33690
0
        return NULL;
33691
0
    }
33692
7.93k
    void * _res = NULL;
33693
7.93k
    int _mark = p->mark;
33694
7.93k
    { // (','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs)
33695
7.93k
        if (p->error_indicator) {
33696
0
            p->level--;
33697
0
            return NULL;
33698
0
        }
33699
7.93k
        D(fprintf(stderr, "%*c> _tmp_104[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs)"));
33700
7.93k
        void *_tmp_165_var;
33701
7.93k
        if (
33702
7.93k
            (_tmp_165_var = _tmp_165_rule(p))  // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs
33703
7.93k
        )
33704
331
        {
33705
331
            D(fprintf(stderr, "%*c+ _tmp_104[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs)"));
33706
331
            _res = _tmp_165_var;
33707
331
            goto done;
33708
331
        }
33709
7.60k
        p->mark = _mark;
33710
7.60k
        D(fprintf(stderr, "%*c%s _tmp_104[%d-%d]: %s failed!\n", p->level, ' ',
33711
7.60k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs)"));
33712
7.60k
    }
33713
0
    { // kwargs
33714
7.60k
        if (p->error_indicator) {
33715
0
            p->level--;
33716
0
            return NULL;
33717
0
        }
33718
7.60k
        D(fprintf(stderr, "%*c> _tmp_104[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwargs"));
33719
7.60k
        asdl_seq* kwargs_var;
33720
7.60k
        if (
33721
7.60k
            (kwargs_var = kwargs_rule(p))  // kwargs
33722
7.60k
        )
33723
2.44k
        {
33724
2.44k
            D(fprintf(stderr, "%*c+ _tmp_104[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwargs"));
33725
2.44k
            _res = kwargs_var;
33726
2.44k
            goto done;
33727
2.44k
        }
33728
5.16k
        p->mark = _mark;
33729
5.16k
        D(fprintf(stderr, "%*c%s _tmp_104[%d-%d]: %s failed!\n", p->level, ' ',
33730
5.16k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwargs"));
33731
5.16k
    }
33732
0
    _res = NULL;
33733
7.93k
  done:
33734
7.93k
    p->level--;
33735
7.93k
    return _res;
33736
5.16k
}
33737
33738
// _loop0_105: ',' (starred_expression !'=')
33739
static asdl_seq *
33740
_loop0_105_rule(Parser *p)
33741
586
{
33742
586
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33743
0
        _Pypegen_stack_overflow(p);
33744
0
    }
33745
586
    if (p->error_indicator) {
33746
0
        p->level--;
33747
0
        return NULL;
33748
0
    }
33749
586
    void *_res = NULL;
33750
586
    int _mark = p->mark;
33751
586
    void **_children = PyMem_Malloc(sizeof(void *));
33752
586
    if (!_children) {
33753
0
        p->error_indicator = 1;
33754
0
        PyErr_NoMemory();
33755
0
        p->level--;
33756
0
        return NULL;
33757
0
    }
33758
586
    Py_ssize_t _children_capacity = 1;
33759
586
    Py_ssize_t _n = 0;
33760
586
    { // ',' (starred_expression !'=')
33761
586
        if (p->error_indicator) {
33762
0
            p->level--;
33763
0
            return NULL;
33764
0
        }
33765
586
        D(fprintf(stderr, "%*c> _loop0_105[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (starred_expression !'=')"));
33766
586
        Token * _literal;
33767
586
        void *elem;
33768
586
        while (
33769
1.68k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33770
1.68k
            &&
33771
1.68k
            (elem = _tmp_166_rule(p))  // starred_expression !'='
33772
586
        )
33773
1.09k
        {
33774
1.09k
            _res = elem;
33775
1.09k
            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
1.09k
            if (_n == _children_capacity) {
33782
263
                _children_capacity *= 2;
33783
263
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33784
263
                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
263
                _children = _new_children;
33792
263
            }
33793
1.09k
            _children[_n++] = _res;
33794
1.09k
            _mark = p->mark;
33795
1.09k
        }
33796
586
        p->mark = _mark;
33797
586
        D(fprintf(stderr, "%*c%s _loop0_105[%d-%d]: %s failed!\n", p->level, ' ',
33798
586
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (starred_expression !'=')"));
33799
586
    }
33800
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33801
586
    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.68k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33809
586
    PyMem_Free(_children);
33810
586
    p->level--;
33811
586
    return _seq;
33812
586
}
33813
33814
// _gather_106: (starred_expression !'=') _loop0_105
33815
static asdl_seq *
33816
_gather_106_rule(Parser *p)
33817
1.46k
{
33818
1.46k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33819
0
        _Pypegen_stack_overflow(p);
33820
0
    }
33821
1.46k
    if (p->error_indicator) {
33822
0
        p->level--;
33823
0
        return NULL;
33824
0
    }
33825
1.46k
    asdl_seq * _res = NULL;
33826
1.46k
    int _mark = p->mark;
33827
1.46k
    { // (starred_expression !'=') _loop0_105
33828
1.46k
        if (p->error_indicator) {
33829
0
            p->level--;
33830
0
            return NULL;
33831
0
        }
33832
1.46k
        D(fprintf(stderr, "%*c> _gather_106[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(starred_expression !'=') _loop0_105"));
33833
1.46k
        void *elem;
33834
1.46k
        asdl_seq * seq;
33835
1.46k
        if (
33836
1.46k
            (elem = _tmp_166_rule(p))  // starred_expression !'='
33837
1.46k
            &&
33838
1.46k
            (seq = _loop0_105_rule(p))  // _loop0_105
33839
1.46k
        )
33840
586
        {
33841
586
            D(fprintf(stderr, "%*c+ _gather_106[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(starred_expression !'=') _loop0_105"));
33842
586
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
33843
586
            goto done;
33844
586
        }
33845
875
        p->mark = _mark;
33846
875
        D(fprintf(stderr, "%*c%s _gather_106[%d-%d]: %s failed!\n", p->level, ' ',
33847
875
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(starred_expression !'=') _loop0_105"));
33848
875
    }
33849
0
    _res = NULL;
33850
1.46k
  done:
33851
1.46k
    p->level--;
33852
1.46k
    return _res;
33853
875
}
33854
33855
// _tmp_107: args | expression for_if_clauses
33856
static void *
33857
_tmp_107_rule(Parser *p)
33858
52
{
33859
52
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33860
0
        _Pypegen_stack_overflow(p);
33861
0
    }
33862
52
    if (p->error_indicator) {
33863
0
        p->level--;
33864
0
        return NULL;
33865
0
    }
33866
52
    void * _res = NULL;
33867
52
    int _mark = p->mark;
33868
52
    { // args
33869
52
        if (p->error_indicator) {
33870
0
            p->level--;
33871
0
            return NULL;
33872
0
        }
33873
52
        D(fprintf(stderr, "%*c> _tmp_107[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args"));
33874
52
        expr_ty args_var;
33875
52
        if (
33876
52
            (args_var = args_rule(p))  // args
33877
52
        )
33878
11
        {
33879
11
            D(fprintf(stderr, "%*c+ _tmp_107[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args"));
33880
11
            _res = args_var;
33881
11
            goto done;
33882
11
        }
33883
41
        p->mark = _mark;
33884
41
        D(fprintf(stderr, "%*c%s _tmp_107[%d-%d]: %s failed!\n", p->level, ' ',
33885
41
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args"));
33886
41
    }
33887
0
    { // expression for_if_clauses
33888
41
        if (p->error_indicator) {
33889
38
            p->level--;
33890
38
            return NULL;
33891
38
        }
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
14
  done:
33911
14
    p->level--;
33912
14
    return _res;
33913
3
}
33914
33915
// _tmp_108: args ','
33916
static void *
33917
_tmp_108_rule(Parser *p)
33918
7.22k
{
33919
7.22k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33920
0
        _Pypegen_stack_overflow(p);
33921
0
    }
33922
7.22k
    if (p->error_indicator) {
33923
0
        p->level--;
33924
0
        return NULL;
33925
0
    }
33926
7.22k
    void * _res = NULL;
33927
7.22k
    int _mark = p->mark;
33928
7.22k
    { // args ','
33929
7.22k
        if (p->error_indicator) {
33930
0
            p->level--;
33931
0
            return NULL;
33932
0
        }
33933
7.22k
        D(fprintf(stderr, "%*c> _tmp_108[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ','"));
33934
7.22k
        Token * _literal;
33935
7.22k
        expr_ty args_var;
33936
7.22k
        if (
33937
7.22k
            (args_var = args_rule(p))  // args
33938
7.22k
            &&
33939
7.22k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33940
7.22k
        )
33941
687
        {
33942
687
            D(fprintf(stderr, "%*c+ _tmp_108[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ','"));
33943
687
            _res = _PyPegen_dummy_name(p, args_var, _literal);
33944
687
            goto done;
33945
687
        }
33946
6.53k
        p->mark = _mark;
33947
6.53k
        D(fprintf(stderr, "%*c%s _tmp_108[%d-%d]: %s failed!\n", p->level, ' ',
33948
6.53k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ','"));
33949
6.53k
    }
33950
0
    _res = NULL;
33951
7.22k
  done:
33952
7.22k
    p->level--;
33953
7.22k
    return _res;
33954
6.53k
}
33955
33956
// _tmp_109: ',' | ')'
33957
static void *
33958
_tmp_109_rule(Parser *p)
33959
511
{
33960
511
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33961
0
        _Pypegen_stack_overflow(p);
33962
0
    }
33963
511
    if (p->error_indicator) {
33964
0
        p->level--;
33965
0
        return NULL;
33966
0
    }
33967
511
    void * _res = NULL;
33968
511
    int _mark = p->mark;
33969
511
    { // ','
33970
511
        if (p->error_indicator) {
33971
0
            p->level--;
33972
0
            return NULL;
33973
0
        }
33974
511
        D(fprintf(stderr, "%*c> _tmp_109[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
33975
511
        Token * _literal;
33976
511
        if (
33977
511
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33978
511
        )
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
499
        p->mark = _mark;
33985
499
        D(fprintf(stderr, "%*c%s _tmp_109[%d-%d]: %s failed!\n", p->level, ' ',
33986
499
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
33987
499
    }
33988
0
    { // ')'
33989
499
        if (p->error_indicator) {
33990
0
            p->level--;
33991
0
            return NULL;
33992
0
        }
33993
499
        D(fprintf(stderr, "%*c> _tmp_109[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
33994
499
        Token * _literal;
33995
499
        if (
33996
499
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
33997
499
        )
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
496
        p->mark = _mark;
34004
496
        D(fprintf(stderr, "%*c%s _tmp_109[%d-%d]: %s failed!\n", p->level, ' ',
34005
496
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
34006
496
    }
34007
0
    _res = NULL;
34008
511
  done:
34009
511
    p->level--;
34010
511
    return _res;
34011
496
}
34012
34013
// _tmp_110: 'True' | 'False' | 'None'
34014
static void *
34015
_tmp_110_rule(Parser *p)
34016
118k
{
34017
118k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34018
0
        _Pypegen_stack_overflow(p);
34019
0
    }
34020
118k
    if (p->error_indicator) {
34021
0
        p->level--;
34022
0
        return NULL;
34023
0
    }
34024
118k
    void * _res = NULL;
34025
118k
    int _mark = p->mark;
34026
118k
    { // 'True'
34027
118k
        if (p->error_indicator) {
34028
0
            p->level--;
34029
0
            return NULL;
34030
0
        }
34031
118k
        D(fprintf(stderr, "%*c> _tmp_110[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
34032
118k
        Token * _keyword;
34033
118k
        if (
34034
118k
            (_keyword = _PyPegen_expect_token(p, 623))  // token='True'
34035
118k
        )
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
118k
        p->mark = _mark;
34042
118k
        D(fprintf(stderr, "%*c%s _tmp_110[%d-%d]: %s failed!\n", p->level, ' ',
34043
118k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
34044
118k
    }
34045
0
    { // 'False'
34046
118k
        if (p->error_indicator) {
34047
0
            p->level--;
34048
0
            return NULL;
34049
0
        }
34050
118k
        D(fprintf(stderr, "%*c> _tmp_110[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
34051
118k
        Token * _keyword;
34052
118k
        if (
34053
118k
            (_keyword = _PyPegen_expect_token(p, 625))  // token='False'
34054
118k
        )
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
118k
        p->mark = _mark;
34061
118k
        D(fprintf(stderr, "%*c%s _tmp_110[%d-%d]: %s failed!\n", p->level, ' ',
34062
118k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
34063
118k
    }
34064
0
    { // 'None'
34065
118k
        if (p->error_indicator) {
34066
0
            p->level--;
34067
0
            return NULL;
34068
0
        }
34069
118k
        D(fprintf(stderr, "%*c> _tmp_110[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
34070
118k
        Token * _keyword;
34071
118k
        if (
34072
118k
            (_keyword = _PyPegen_expect_token(p, 624))  // token='None'
34073
118k
        )
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
118k
        p->mark = _mark;
34080
118k
        D(fprintf(stderr, "%*c%s _tmp_110[%d-%d]: %s failed!\n", p->level, ' ',
34081
118k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
34082
118k
    }
34083
0
    _res = NULL;
34084
118k
  done:
34085
118k
    p->level--;
34086
118k
    return _res;
34087
118k
}
34088
34089
// _tmp_111: NAME '='
34090
static void *
34091
_tmp_111_rule(Parser *p)
34092
118k
{
34093
118k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34094
0
        _Pypegen_stack_overflow(p);
34095
0
    }
34096
118k
    if (p->error_indicator) {
34097
0
        p->level--;
34098
0
        return NULL;
34099
0
    }
34100
118k
    void * _res = NULL;
34101
118k
    int _mark = p->mark;
34102
118k
    { // NAME '='
34103
118k
        if (p->error_indicator) {
34104
0
            p->level--;
34105
0
            return NULL;
34106
0
        }
34107
118k
        D(fprintf(stderr, "%*c> _tmp_111[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '='"));
34108
118k
        Token * _literal;
34109
118k
        expr_ty name_var;
34110
118k
        if (
34111
118k
            (name_var = _PyPegen_name_token(p))  // NAME
34112
118k
            &&
34113
118k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
34114
118k
        )
34115
20.6k
        {
34116
20.6k
            D(fprintf(stderr, "%*c+ _tmp_111[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '='"));
34117
20.6k
            _res = _PyPegen_dummy_name(p, name_var, _literal);
34118
20.6k
            goto done;
34119
20.6k
        }
34120
98.0k
        p->mark = _mark;
34121
98.0k
        D(fprintf(stderr, "%*c%s _tmp_111[%d-%d]: %s failed!\n", p->level, ' ',
34122
98.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '='"));
34123
98.0k
    }
34124
0
    _res = NULL;
34125
118k
  done:
34126
118k
    p->level--;
34127
118k
    return _res;
34128
98.0k
}
34129
34130
// _loop1_112: (!STRING expression_without_invalid)
34131
static asdl_seq *
34132
_loop1_112_rule(Parser *p)
34133
3.55k
{
34134
3.55k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34135
1
        _Pypegen_stack_overflow(p);
34136
1
    }
34137
3.55k
    if (p->error_indicator) {
34138
1
        p->level--;
34139
1
        return NULL;
34140
1
    }
34141
3.55k
    void *_res = NULL;
34142
3.55k
    int _mark = p->mark;
34143
3.55k
    void **_children = PyMem_Malloc(sizeof(void *));
34144
3.55k
    if (!_children) {
34145
0
        p->error_indicator = 1;
34146
0
        PyErr_NoMemory();
34147
0
        p->level--;
34148
0
        return NULL;
34149
0
    }
34150
3.55k
    Py_ssize_t _children_capacity = 1;
34151
3.55k
    Py_ssize_t _n = 0;
34152
3.55k
    { // (!STRING expression_without_invalid)
34153
3.55k
        if (p->error_indicator) {
34154
0
            p->level--;
34155
0
            return NULL;
34156
0
        }
34157
3.55k
        D(fprintf(stderr, "%*c> _loop1_112[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(!STRING expression_without_invalid)"));
34158
3.55k
        void *_tmp_167_var;
34159
3.55k
        while (
34160
5.54k
            (_tmp_167_var = _tmp_167_rule(p))  // !STRING expression_without_invalid
34161
3.55k
        )
34162
1.98k
        {
34163
1.98k
            _res = _tmp_167_var;
34164
1.98k
            if (_n == _children_capacity) {
34165
380
                _children_capacity *= 2;
34166
380
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
34167
380
                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
380
                _children = _new_children;
34175
380
            }
34176
1.98k
            _children[_n++] = _res;
34177
1.98k
            _mark = p->mark;
34178
1.98k
        }
34179
3.55k
        p->mark = _mark;
34180
3.55k
        D(fprintf(stderr, "%*c%s _loop1_112[%d-%d]: %s failed!\n", p->level, ' ',
34181
3.55k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(!STRING expression_without_invalid)"));
34182
3.55k
    }
34183
3.55k
    if (_n == 0 || p->error_indicator) {
34184
2.48k
        PyMem_Free(_children);
34185
2.48k
        p->level--;
34186
2.48k
        return NULL;
34187
2.48k
    }
34188
1.07k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
34189
1.07k
    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.07k
    PyMem_Free(_children);
34198
1.07k
    p->level--;
34199
1.07k
    return _seq;
34200
1.07k
}
34201
34202
// _tmp_113: NAME STRING | SOFT_KEYWORD
34203
static void *
34204
_tmp_113_rule(Parser *p)
34205
233k
{
34206
233k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34207
1
        _Pypegen_stack_overflow(p);
34208
1
    }
34209
233k
    if (p->error_indicator) {
34210
1
        p->level--;
34211
1
        return NULL;
34212
1
    }
34213
233k
    void * _res = NULL;
34214
233k
    int _mark = p->mark;
34215
233k
    { // NAME STRING
34216
233k
        if (p->error_indicator) {
34217
0
            p->level--;
34218
0
            return NULL;
34219
0
        }
34220
233k
        D(fprintf(stderr, "%*c> _tmp_113[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME STRING"));
34221
233k
        expr_ty name_var;
34222
233k
        expr_ty string_var;
34223
233k
        if (
34224
233k
            (name_var = _PyPegen_name_token(p))  // NAME
34225
233k
            &&
34226
233k
            (string_var = _PyPegen_string_token(p))  // STRING
34227
233k
        )
34228
349
        {
34229
349
            D(fprintf(stderr, "%*c+ _tmp_113[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME STRING"));
34230
349
            _res = _PyPegen_dummy_name(p, name_var, string_var);
34231
349
            goto done;
34232
349
        }
34233
233k
        p->mark = _mark;
34234
233k
        D(fprintf(stderr, "%*c%s _tmp_113[%d-%d]: %s failed!\n", p->level, ' ',
34235
233k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME STRING"));
34236
233k
    }
34237
0
    { // SOFT_KEYWORD
34238
233k
        if (p->error_indicator) {
34239
25
            p->level--;
34240
25
            return NULL;
34241
25
        }
34242
233k
        D(fprintf(stderr, "%*c> _tmp_113[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD"));
34243
233k
        expr_ty soft_keyword_var;
34244
233k
        if (
34245
233k
            (soft_keyword_var = _PyPegen_soft_keyword_token(p))  // SOFT_KEYWORD
34246
233k
        )
34247
4.42k
        {
34248
4.42k
            D(fprintf(stderr, "%*c+ _tmp_113[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD"));
34249
4.42k
            _res = soft_keyword_var;
34250
4.42k
            goto done;
34251
4.42k
        }
34252
229k
        p->mark = _mark;
34253
229k
        D(fprintf(stderr, "%*c%s _tmp_113[%d-%d]: %s failed!\n", p->level, ' ',
34254
229k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "SOFT_KEYWORD"));
34255
229k
    }
34256
0
    _res = NULL;
34257
233k
  done:
34258
233k
    p->level--;
34259
233k
    return _res;
34260
229k
}
34261
34262
// _tmp_114: 'else' | ':'
34263
static void *
34264
_tmp_114_rule(Parser *p)
34265
679
{
34266
679
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34267
0
        _Pypegen_stack_overflow(p);
34268
0
    }
34269
679
    if (p->error_indicator) {
34270
0
        p->level--;
34271
0
        return NULL;
34272
0
    }
34273
679
    void * _res = NULL;
34274
679
    int _mark = p->mark;
34275
679
    { // 'else'
34276
679
        if (p->error_indicator) {
34277
0
            p->level--;
34278
0
            return NULL;
34279
0
        }
34280
679
        D(fprintf(stderr, "%*c> _tmp_114[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else'"));
34281
679
        Token * _keyword;
34282
679
        if (
34283
679
            (_keyword = _PyPegen_expect_token(p, 691))  // token='else'
34284
679
        )
34285
653
        {
34286
653
            D(fprintf(stderr, "%*c+ _tmp_114[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else'"));
34287
653
            _res = _keyword;
34288
653
            goto done;
34289
653
        }
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
679
  done:
34315
679
    p->level--;
34316
679
    return _res;
34317
18
}
34318
34319
// _tmp_115: pass_stmt | break_stmt | continue_stmt
34320
static void *
34321
_tmp_115_rule(Parser *p)
34322
201k
{
34323
201k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34324
0
        _Pypegen_stack_overflow(p);
34325
0
    }
34326
201k
    if (p->error_indicator) {
34327
0
        p->level--;
34328
0
        return NULL;
34329
0
    }
34330
201k
    void * _res = NULL;
34331
201k
    int _mark = p->mark;
34332
201k
    { // pass_stmt
34333
201k
        if (p->error_indicator) {
34334
0
            p->level--;
34335
0
            return NULL;
34336
0
        }
34337
201k
        D(fprintf(stderr, "%*c> _tmp_115[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pass_stmt"));
34338
201k
        stmt_ty pass_stmt_var;
34339
201k
        if (
34340
201k
            (pass_stmt_var = pass_stmt_rule(p))  // pass_stmt
34341
201k
        )
34342
622
        {
34343
622
            D(fprintf(stderr, "%*c+ _tmp_115[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pass_stmt"));
34344
622
            _res = pass_stmt_var;
34345
622
            goto done;
34346
622
        }
34347
201k
        p->mark = _mark;
34348
201k
        D(fprintf(stderr, "%*c%s _tmp_115[%d-%d]: %s failed!\n", p->level, ' ',
34349
201k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pass_stmt"));
34350
201k
    }
34351
0
    { // break_stmt
34352
201k
        if (p->error_indicator) {
34353
0
            p->level--;
34354
0
            return NULL;
34355
0
        }
34356
201k
        D(fprintf(stderr, "%*c> _tmp_115[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "break_stmt"));
34357
201k
        stmt_ty break_stmt_var;
34358
201k
        if (
34359
201k
            (break_stmt_var = break_stmt_rule(p))  // break_stmt
34360
201k
        )
34361
318
        {
34362
318
            D(fprintf(stderr, "%*c+ _tmp_115[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "break_stmt"));
34363
318
            _res = break_stmt_var;
34364
318
            goto done;
34365
318
        }
34366
201k
        p->mark = _mark;
34367
201k
        D(fprintf(stderr, "%*c%s _tmp_115[%d-%d]: %s failed!\n", p->level, ' ',
34368
201k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "break_stmt"));
34369
201k
    }
34370
0
    { // continue_stmt
34371
201k
        if (p->error_indicator) {
34372
0
            p->level--;
34373
0
            return NULL;
34374
0
        }
34375
201k
        D(fprintf(stderr, "%*c> _tmp_115[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "continue_stmt"));
34376
201k
        stmt_ty continue_stmt_var;
34377
201k
        if (
34378
201k
            (continue_stmt_var = continue_stmt_rule(p))  // continue_stmt
34379
201k
        )
34380
1.65k
        {
34381
1.65k
            D(fprintf(stderr, "%*c+ _tmp_115[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "continue_stmt"));
34382
1.65k
            _res = continue_stmt_var;
34383
1.65k
            goto done;
34384
1.65k
        }
34385
199k
        p->mark = _mark;
34386
199k
        D(fprintf(stderr, "%*c%s _tmp_115[%d-%d]: %s failed!\n", p->level, ' ',
34387
199k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "continue_stmt"));
34388
199k
    }
34389
0
    _res = NULL;
34390
201k
  done:
34391
201k
    p->level--;
34392
201k
    return _res;
34393
199k
}
34394
34395
// _tmp_116: '=' | ':='
34396
static void *
34397
_tmp_116_rule(Parser *p)
34398
93
{
34399
93
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34400
0
        _Pypegen_stack_overflow(p);
34401
0
    }
34402
93
    if (p->error_indicator) {
34403
0
        p->level--;
34404
0
        return NULL;
34405
0
    }
34406
93
    void * _res = NULL;
34407
93
    int _mark = p->mark;
34408
93
    { // '='
34409
93
        if (p->error_indicator) {
34410
0
            p->level--;
34411
0
            return NULL;
34412
0
        }
34413
93
        D(fprintf(stderr, "%*c> _tmp_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
34414
93
        Token * _literal;
34415
93
        if (
34416
93
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
34417
93
        )
34418
60
        {
34419
60
            D(fprintf(stderr, "%*c+ _tmp_116[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
34420
60
            _res = _literal;
34421
60
            goto done;
34422
60
        }
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
93
  done:
34448
93
    p->level--;
34449
93
    return _res;
34450
28
}
34451
34452
// _tmp_117: list | tuple | genexp | 'True' | 'None' | 'False'
34453
static void *
34454
_tmp_117_rule(Parser *p)
34455
88.9k
{
34456
88.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34457
0
        _Pypegen_stack_overflow(p);
34458
0
    }
34459
88.9k
    if (p->error_indicator) {
34460
0
        p->level--;
34461
0
        return NULL;
34462
0
    }
34463
88.9k
    void * _res = NULL;
34464
88.9k
    int _mark = p->mark;
34465
88.9k
    { // list
34466
88.9k
        if (p->error_indicator) {
34467
0
            p->level--;
34468
0
            return NULL;
34469
0
        }
34470
88.9k
        D(fprintf(stderr, "%*c> _tmp_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
34471
88.9k
        expr_ty list_var;
34472
88.9k
        if (
34473
88.9k
            (list_var = list_rule(p))  // list
34474
88.9k
        )
34475
869
        {
34476
869
            D(fprintf(stderr, "%*c+ _tmp_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
34477
869
            _res = list_var;
34478
869
            goto done;
34479
869
        }
34480
88.1k
        p->mark = _mark;
34481
88.1k
        D(fprintf(stderr, "%*c%s _tmp_117[%d-%d]: %s failed!\n", p->level, ' ',
34482
88.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
34483
88.1k
    }
34484
0
    { // tuple
34485
88.1k
        if (p->error_indicator) {
34486
196
            p->level--;
34487
196
            return NULL;
34488
196
        }
34489
87.9k
        D(fprintf(stderr, "%*c> _tmp_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
34490
87.9k
        expr_ty tuple_var;
34491
87.9k
        if (
34492
87.9k
            (tuple_var = tuple_rule(p))  // tuple
34493
87.9k
        )
34494
4.03k
        {
34495
4.03k
            D(fprintf(stderr, "%*c+ _tmp_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
34496
4.03k
            _res = tuple_var;
34497
4.03k
            goto done;
34498
4.03k
        }
34499
83.8k
        p->mark = _mark;
34500
83.8k
        D(fprintf(stderr, "%*c%s _tmp_117[%d-%d]: %s failed!\n", p->level, ' ',
34501
83.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
34502
83.8k
    }
34503
0
    { // genexp
34504
83.8k
        if (p->error_indicator) {
34505
195
            p->level--;
34506
195
            return NULL;
34507
195
        }
34508
83.7k
        D(fprintf(stderr, "%*c> _tmp_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp"));
34509
83.7k
        expr_ty genexp_var;
34510
83.7k
        if (
34511
83.7k
            (genexp_var = genexp_rule(p))  // genexp
34512
83.7k
        )
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
83.3k
        p->mark = _mark;
34519
83.3k
        D(fprintf(stderr, "%*c%s _tmp_117[%d-%d]: %s failed!\n", p->level, ' ',
34520
83.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "genexp"));
34521
83.3k
    }
34522
0
    { // 'True'
34523
83.3k
        if (p->error_indicator) {
34524
83
            p->level--;
34525
83
            return NULL;
34526
83
        }
34527
83.2k
        D(fprintf(stderr, "%*c> _tmp_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
34528
83.2k
        Token * _keyword;
34529
83.2k
        if (
34530
83.2k
            (_keyword = _PyPegen_expect_token(p, 623))  // token='True'
34531
83.2k
        )
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
83.0k
        p->mark = _mark;
34538
83.0k
        D(fprintf(stderr, "%*c%s _tmp_117[%d-%d]: %s failed!\n", p->level, ' ',
34539
83.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
34540
83.0k
    }
34541
0
    { // 'None'
34542
83.0k
        if (p->error_indicator) {
34543
0
            p->level--;
34544
0
            return NULL;
34545
0
        }
34546
83.0k
        D(fprintf(stderr, "%*c> _tmp_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
34547
83.0k
        Token * _keyword;
34548
83.0k
        if (
34549
83.0k
            (_keyword = _PyPegen_expect_token(p, 624))  // token='None'
34550
83.0k
        )
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
82.8k
        p->mark = _mark;
34557
82.8k
        D(fprintf(stderr, "%*c%s _tmp_117[%d-%d]: %s failed!\n", p->level, ' ',
34558
82.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
34559
82.8k
    }
34560
0
    { // 'False'
34561
82.8k
        if (p->error_indicator) {
34562
0
            p->level--;
34563
0
            return NULL;
34564
0
        }
34565
82.8k
        D(fprintf(stderr, "%*c> _tmp_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
34566
82.8k
        Token * _keyword;
34567
82.8k
        if (
34568
82.8k
            (_keyword = _PyPegen_expect_token(p, 625))  // token='False'
34569
82.8k
        )
34570
195
        {
34571
195
            D(fprintf(stderr, "%*c+ _tmp_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
34572
195
            _res = _keyword;
34573
195
            goto done;
34574
195
        }
34575
82.6k
        p->mark = _mark;
34576
82.6k
        D(fprintf(stderr, "%*c%s _tmp_117[%d-%d]: %s failed!\n", p->level, ' ',
34577
82.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
34578
82.6k
    }
34579
0
    _res = NULL;
34580
88.5k
  done:
34581
88.5k
    p->level--;
34582
88.5k
    return _res;
34583
82.6k
}
34584
34585
// _loop0_118: star_named_expressions
34586
static asdl_seq *
34587
_loop0_118_rule(Parser *p)
34588
1.86k
{
34589
1.86k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34590
0
        _Pypegen_stack_overflow(p);
34591
0
    }
34592
1.86k
    if (p->error_indicator) {
34593
0
        p->level--;
34594
0
        return NULL;
34595
0
    }
34596
1.86k
    void *_res = NULL;
34597
1.86k
    int _mark = p->mark;
34598
1.86k
    void **_children = PyMem_Malloc(sizeof(void *));
34599
1.86k
    if (!_children) {
34600
0
        p->error_indicator = 1;
34601
0
        PyErr_NoMemory();
34602
0
        p->level--;
34603
0
        return NULL;
34604
0
    }
34605
1.86k
    Py_ssize_t _children_capacity = 1;
34606
1.86k
    Py_ssize_t _n = 0;
34607
1.86k
    { // star_named_expressions
34608
1.86k
        if (p->error_indicator) {
34609
0
            p->level--;
34610
0
            return NULL;
34611
0
        }
34612
1.86k
        D(fprintf(stderr, "%*c> _loop0_118[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expressions"));
34613
1.86k
        asdl_expr_seq* star_named_expressions_var;
34614
1.86k
        while (
34615
4.64k
            (star_named_expressions_var = star_named_expressions_rule(p))  // star_named_expressions
34616
1.86k
        )
34617
2.77k
        {
34618
2.77k
            _res = star_named_expressions_var;
34619
2.77k
            if (_n == _children_capacity) {
34620
290
                _children_capacity *= 2;
34621
290
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
34622
290
                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
290
                _children = _new_children;
34630
290
            }
34631
2.77k
            _children[_n++] = _res;
34632
2.77k
            _mark = p->mark;
34633
2.77k
        }
34634
1.86k
        p->mark = _mark;
34635
1.86k
        D(fprintf(stderr, "%*c%s _loop0_118[%d-%d]: %s failed!\n", p->level, ' ',
34636
1.86k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expressions"));
34637
1.86k
    }
34638
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
34639
1.86k
    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.64k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
34647
1.86k
    PyMem_Free(_children);
34648
1.86k
    p->level--;
34649
1.86k
    return _seq;
34650
1.86k
}
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
145
                _children_capacity *= 2;
34688
145
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
34689
145
                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
145
                _children = _new_children;
34697
145
            }
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
231k
{
34723
231k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34724
1
        _Pypegen_stack_overflow(p);
34725
1
    }
34726
231k
    if (p->error_indicator) {
34727
1
        p->level--;
34728
1
        return NULL;
34729
1
    }
34730
231k
    void * _res = NULL;
34731
231k
    int _mark = p->mark;
34732
231k
    { // '['
34733
231k
        if (p->error_indicator) {
34734
0
            p->level--;
34735
0
            return NULL;
34736
0
        }
34737
231k
        D(fprintf(stderr, "%*c> _tmp_120[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
34738
231k
        Token * _literal;
34739
231k
        if (
34740
231k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
34741
231k
        )
34742
17.9k
        {
34743
17.9k
            D(fprintf(stderr, "%*c+ _tmp_120[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
34744
17.9k
            _res = _literal;
34745
17.9k
            goto done;
34746
17.9k
        }
34747
213k
        p->mark = _mark;
34748
213k
        D(fprintf(stderr, "%*c%s _tmp_120[%d-%d]: %s failed!\n", p->level, ' ',
34749
213k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
34750
213k
    }
34751
0
    { // '('
34752
213k
        if (p->error_indicator) {
34753
0
            p->level--;
34754
0
            return NULL;
34755
0
        }
34756
213k
        D(fprintf(stderr, "%*c> _tmp_120[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
34757
213k
        Token * _literal;
34758
213k
        if (
34759
213k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
34760
213k
        )
34761
22.0k
        {
34762
22.0k
            D(fprintf(stderr, "%*c+ _tmp_120[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
34763
22.0k
            _res = _literal;
34764
22.0k
            goto done;
34765
22.0k
        }
34766
191k
        p->mark = _mark;
34767
191k
        D(fprintf(stderr, "%*c%s _tmp_120[%d-%d]: %s failed!\n", p->level, ' ',
34768
191k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
34769
191k
    }
34770
0
    { // '{'
34771
191k
        if (p->error_indicator) {
34772
0
            p->level--;
34773
0
            return NULL;
34774
0
        }
34775
191k
        D(fprintf(stderr, "%*c> _tmp_120[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'"));
34776
191k
        Token * _literal;
34777
191k
        if (
34778
191k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
34779
191k
        )
34780
5.12k
        {
34781
5.12k
            D(fprintf(stderr, "%*c+ _tmp_120[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'"));
34782
5.12k
            _res = _literal;
34783
5.12k
            goto done;
34784
5.12k
        }
34785
186k
        p->mark = _mark;
34786
186k
        D(fprintf(stderr, "%*c%s _tmp_120[%d-%d]: %s failed!\n", p->level, ' ',
34787
186k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'"));
34788
186k
    }
34789
0
    _res = NULL;
34790
231k
  done:
34791
231k
    p->level--;
34792
231k
    return _res;
34793
186k
}
34794
34795
// _tmp_121: '[' | '{'
34796
static void *
34797
_tmp_121_rule(Parser *p)
34798
459k
{
34799
459k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34800
0
        _Pypegen_stack_overflow(p);
34801
0
    }
34802
459k
    if (p->error_indicator) {
34803
0
        p->level--;
34804
0
        return NULL;
34805
0
    }
34806
459k
    void * _res = NULL;
34807
459k
    int _mark = p->mark;
34808
459k
    { // '['
34809
459k
        if (p->error_indicator) {
34810
0
            p->level--;
34811
0
            return NULL;
34812
0
        }
34813
459k
        D(fprintf(stderr, "%*c> _tmp_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
34814
459k
        Token * _literal;
34815
459k
        if (
34816
459k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
34817
459k
        )
34818
34.8k
        {
34819
34.8k
            D(fprintf(stderr, "%*c+ _tmp_121[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
34820
34.8k
            _res = _literal;
34821
34.8k
            goto done;
34822
34.8k
        }
34823
425k
        p->mark = _mark;
34824
425k
        D(fprintf(stderr, "%*c%s _tmp_121[%d-%d]: %s failed!\n", p->level, ' ',
34825
425k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
34826
425k
    }
34827
0
    { // '{'
34828
425k
        if (p->error_indicator) {
34829
0
            p->level--;
34830
0
            return NULL;
34831
0
        }
34832
425k
        D(fprintf(stderr, "%*c> _tmp_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'"));
34833
425k
        Token * _literal;
34834
425k
        if (
34835
425k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
34836
425k
        )
34837
9.13k
        {
34838
9.13k
            D(fprintf(stderr, "%*c+ _tmp_121[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'"));
34839
9.13k
            _res = _literal;
34840
9.13k
            goto done;
34841
9.13k
        }
34842
415k
        p->mark = _mark;
34843
415k
        D(fprintf(stderr, "%*c%s _tmp_121[%d-%d]: %s failed!\n", p->level, ' ',
34844
415k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'"));
34845
415k
    }
34846
0
    _res = NULL;
34847
459k
  done:
34848
459k
    p->level--;
34849
459k
    return _res;
34850
415k
}
34851
34852
// _tmp_122: slash_no_default | slash_with_default
34853
static void *
34854
_tmp_122_rule(Parser *p)
34855
9.86k
{
34856
9.86k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34857
0
        _Pypegen_stack_overflow(p);
34858
0
    }
34859
9.86k
    if (p->error_indicator) {
34860
0
        p->level--;
34861
0
        return NULL;
34862
0
    }
34863
9.86k
    void * _res = NULL;
34864
9.86k
    int _mark = p->mark;
34865
9.86k
    { // slash_no_default
34866
9.86k
        if (p->error_indicator) {
34867
0
            p->level--;
34868
0
            return NULL;
34869
0
        }
34870
9.86k
        D(fprintf(stderr, "%*c> _tmp_122[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_no_default"));
34871
9.86k
        asdl_arg_seq* slash_no_default_var;
34872
9.86k
        if (
34873
9.86k
            (slash_no_default_var = slash_no_default_rule(p))  // slash_no_default
34874
9.86k
        )
34875
1.06k
        {
34876
1.06k
            D(fprintf(stderr, "%*c+ _tmp_122[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_no_default"));
34877
1.06k
            _res = slash_no_default_var;
34878
1.06k
            goto done;
34879
1.06k
        }
34880
8.79k
        p->mark = _mark;
34881
8.79k
        D(fprintf(stderr, "%*c%s _tmp_122[%d-%d]: %s failed!\n", p->level, ' ',
34882
8.79k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_no_default"));
34883
8.79k
    }
34884
0
    { // slash_with_default
34885
8.79k
        if (p->error_indicator) {
34886
2
            p->level--;
34887
2
            return NULL;
34888
2
        }
34889
8.79k
        D(fprintf(stderr, "%*c> _tmp_122[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
34890
8.79k
        SlashWithDefault* slash_with_default_var;
34891
8.79k
        if (
34892
8.79k
            (slash_with_default_var = slash_with_default_rule(p))  // slash_with_default
34893
8.79k
        )
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.92k
        p->mark = _mark;
34900
7.92k
        D(fprintf(stderr, "%*c%s _tmp_122[%d-%d]: %s failed!\n", p->level, ' ',
34901
7.92k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default"));
34902
7.92k
    }
34903
0
    _res = NULL;
34904
9.85k
  done:
34905
9.85k
    p->level--;
34906
9.85k
    return _res;
34907
7.92k
}
34908
34909
// _tmp_123: ',' | param_no_default
34910
static void *
34911
_tmp_123_rule(Parser *p)
34912
1.48k
{
34913
1.48k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34914
0
        _Pypegen_stack_overflow(p);
34915
0
    }
34916
1.48k
    if (p->error_indicator) {
34917
0
        p->level--;
34918
0
        return NULL;
34919
0
    }
34920
1.48k
    void * _res = NULL;
34921
1.48k
    int _mark = p->mark;
34922
1.48k
    { // ','
34923
1.48k
        if (p->error_indicator) {
34924
0
            p->level--;
34925
0
            return NULL;
34926
0
        }
34927
1.48k
        D(fprintf(stderr, "%*c> _tmp_123[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
34928
1.48k
        Token * _literal;
34929
1.48k
        if (
34930
1.48k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
34931
1.48k
        )
34932
566
        {
34933
566
            D(fprintf(stderr, "%*c+ _tmp_123[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
34934
566
            _res = _literal;
34935
566
            goto done;
34936
566
        }
34937
916
        p->mark = _mark;
34938
916
        D(fprintf(stderr, "%*c%s _tmp_123[%d-%d]: %s failed!\n", p->level, ' ',
34939
916
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
34940
916
    }
34941
0
    { // param_no_default
34942
916
        if (p->error_indicator) {
34943
0
            p->level--;
34944
0
            return NULL;
34945
0
        }
34946
916
        D(fprintf(stderr, "%*c> _tmp_123[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
34947
916
        arg_ty param_no_default_var;
34948
916
        if (
34949
916
            (param_no_default_var = param_no_default_rule(p))  // param_no_default
34950
916
        )
34951
452
        {
34952
452
            D(fprintf(stderr, "%*c+ _tmp_123[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default"));
34953
452
            _res = param_no_default_var;
34954
452
            goto done;
34955
452
        }
34956
464
        p->mark = _mark;
34957
464
        D(fprintf(stderr, "%*c%s _tmp_123[%d-%d]: %s failed!\n", p->level, ' ',
34958
464
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
34959
464
    }
34960
0
    _res = NULL;
34961
1.48k
  done:
34962
1.48k
    p->level--;
34963
1.48k
    return _res;
34964
464
}
34965
34966
// _tmp_124: ')' | ','
34967
static void *
34968
_tmp_124_rule(Parser *p)
34969
30.5k
{
34970
30.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34971
0
        _Pypegen_stack_overflow(p);
34972
0
    }
34973
30.5k
    if (p->error_indicator) {
34974
0
        p->level--;
34975
0
        return NULL;
34976
0
    }
34977
30.5k
    void * _res = NULL;
34978
30.5k
    int _mark = p->mark;
34979
30.5k
    { // ')'
34980
30.5k
        if (p->error_indicator) {
34981
0
            p->level--;
34982
0
            return NULL;
34983
0
        }
34984
30.5k
        D(fprintf(stderr, "%*c> _tmp_124[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
34985
30.5k
        Token * _literal;
34986
30.5k
        if (
34987
30.5k
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
34988
30.5k
        )
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
30.5k
        p->mark = _mark;
34995
30.5k
        D(fprintf(stderr, "%*c%s _tmp_124[%d-%d]: %s failed!\n", p->level, ' ',
34996
30.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
34997
30.5k
    }
34998
0
    { // ','
34999
30.5k
        if (p->error_indicator) {
35000
0
            p->level--;
35001
0
            return NULL;
35002
0
        }
35003
30.5k
        D(fprintf(stderr, "%*c> _tmp_124[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
35004
30.5k
        Token * _literal;
35005
30.5k
        if (
35006
30.5k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35007
30.5k
        )
35008
14
        {
35009
14
            D(fprintf(stderr, "%*c+ _tmp_124[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
35010
14
            _res = _literal;
35011
14
            goto done;
35012
14
        }
35013
30.5k
        p->mark = _mark;
35014
30.5k
        D(fprintf(stderr, "%*c%s _tmp_124[%d-%d]: %s failed!\n", p->level, ' ',
35015
30.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
35016
30.5k
    }
35017
0
    _res = NULL;
35018
30.5k
  done:
35019
30.5k
    p->level--;
35020
30.5k
    return _res;
35021
30.5k
}
35022
35023
// _tmp_125: ')' | ',' (')' | '**')
35024
static void *
35025
_tmp_125_rule(Parser *p)
35026
1.47k
{
35027
1.47k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35028
0
        _Pypegen_stack_overflow(p);
35029
0
    }
35030
1.47k
    if (p->error_indicator) {
35031
0
        p->level--;
35032
0
        return NULL;
35033
0
    }
35034
1.47k
    void * _res = NULL;
35035
1.47k
    int _mark = p->mark;
35036
1.47k
    { // ')'
35037
1.47k
        if (p->error_indicator) {
35038
0
            p->level--;
35039
0
            return NULL;
35040
0
        }
35041
1.47k
        D(fprintf(stderr, "%*c> _tmp_125[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
35042
1.47k
        Token * _literal;
35043
1.47k
        if (
35044
1.47k
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
35045
1.47k
        )
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.47k
        p->mark = _mark;
35052
1.47k
        D(fprintf(stderr, "%*c%s _tmp_125[%d-%d]: %s failed!\n", p->level, ' ',
35053
1.47k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
35054
1.47k
    }
35055
0
    { // ',' (')' | '**')
35056
1.47k
        if (p->error_indicator) {
35057
0
            p->level--;
35058
0
            return NULL;
35059
0
        }
35060
1.47k
        D(fprintf(stderr, "%*c> _tmp_125[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')"));
35061
1.47k
        Token * _literal;
35062
1.47k
        void *_tmp_168_var;
35063
1.47k
        if (
35064
1.47k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35065
1.47k
            &&
35066
1.47k
            (_tmp_168_var = _tmp_168_rule(p))  // ')' | '**'
35067
1.47k
        )
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.47k
        p->mark = _mark;
35074
1.47k
        D(fprintf(stderr, "%*c%s _tmp_125[%d-%d]: %s failed!\n", p->level, ' ',
35075
1.47k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (')' | '**')"));
35076
1.47k
    }
35077
0
    _res = NULL;
35078
1.47k
  done:
35079
1.47k
    p->level--;
35080
1.47k
    return _res;
35081
1.47k
}
35082
35083
// _tmp_126: param_no_default | ','
35084
static void *
35085
_tmp_126_rule(Parser *p)
35086
1.48k
{
35087
1.48k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35088
0
        _Pypegen_stack_overflow(p);
35089
0
    }
35090
1.48k
    if (p->error_indicator) {
35091
0
        p->level--;
35092
0
        return NULL;
35093
0
    }
35094
1.48k
    void * _res = NULL;
35095
1.48k
    int _mark = p->mark;
35096
1.48k
    { // param_no_default
35097
1.48k
        if (p->error_indicator) {
35098
0
            p->level--;
35099
0
            return NULL;
35100
0
        }
35101
1.48k
        D(fprintf(stderr, "%*c> _tmp_126[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
35102
1.48k
        arg_ty param_no_default_var;
35103
1.48k
        if (
35104
1.48k
            (param_no_default_var = param_no_default_rule(p))  // param_no_default
35105
1.48k
        )
35106
451
        {
35107
451
            D(fprintf(stderr, "%*c+ _tmp_126[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default"));
35108
451
            _res = param_no_default_var;
35109
451
            goto done;
35110
451
        }
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.03k
        D(fprintf(stderr, "%*c> _tmp_126[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
35121
1.03k
        Token * _literal;
35122
1.03k
        if (
35123
1.03k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35124
1.03k
        )
35125
564
        {
35126
564
            D(fprintf(stderr, "%*c+ _tmp_126[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
35127
564
            _res = _literal;
35128
564
            goto done;
35129
564
        }
35130
466
        p->mark = _mark;
35131
466
        D(fprintf(stderr, "%*c%s _tmp_126[%d-%d]: %s failed!\n", p->level, ' ',
35132
466
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
35133
466
    }
35134
0
    _res = NULL;
35135
1.48k
  done:
35136
1.48k
    p->level--;
35137
1.48k
    return _res;
35138
466
}
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
17.2k
{
35220
17.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35221
0
        _Pypegen_stack_overflow(p);
35222
0
    }
35223
17.2k
    if (p->error_indicator) {
35224
0
        p->level--;
35225
0
        return NULL;
35226
0
    }
35227
17.2k
    void * _res = NULL;
35228
17.2k
    int _mark = p->mark;
35229
17.2k
    { // lambda_slash_no_default
35230
17.2k
        if (p->error_indicator) {
35231
0
            p->level--;
35232
0
            return NULL;
35233
0
        }
35234
17.2k
        D(fprintf(stderr, "%*c> _tmp_128[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default"));
35235
17.2k
        asdl_arg_seq* lambda_slash_no_default_var;
35236
17.2k
        if (
35237
17.2k
            (lambda_slash_no_default_var = lambda_slash_no_default_rule(p))  // lambda_slash_no_default
35238
17.2k
        )
35239
777
        {
35240
777
            D(fprintf(stderr, "%*c+ _tmp_128[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default"));
35241
777
            _res = lambda_slash_no_default_var;
35242
777
            goto done;
35243
777
        }
35244
16.5k
        p->mark = _mark;
35245
16.5k
        D(fprintf(stderr, "%*c%s _tmp_128[%d-%d]: %s failed!\n", p->level, ' ',
35246
16.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_no_default"));
35247
16.5k
    }
35248
0
    { // lambda_slash_with_default
35249
16.5k
        if (p->error_indicator) {
35250
2
            p->level--;
35251
2
            return NULL;
35252
2
        }
35253
16.5k
        D(fprintf(stderr, "%*c> _tmp_128[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
35254
16.5k
        SlashWithDefault* lambda_slash_with_default_var;
35255
16.5k
        if (
35256
16.5k
            (lambda_slash_with_default_var = lambda_slash_with_default_rule(p))  // lambda_slash_with_default
35257
16.5k
        )
35258
1.89k
        {
35259
1.89k
            D(fprintf(stderr, "%*c+ _tmp_128[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
35260
1.89k
            _res = lambda_slash_with_default_var;
35261
1.89k
            goto done;
35262
1.89k
        }
35263
14.6k
        p->mark = _mark;
35264
14.6k
        D(fprintf(stderr, "%*c%s _tmp_128[%d-%d]: %s failed!\n", p->level, ' ',
35265
14.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default"));
35266
14.6k
    }
35267
0
    _res = NULL;
35268
17.2k
  done:
35269
17.2k
    p->level--;
35270
17.2k
    return _res;
35271
14.6k
}
35272
35273
// _loop0_129: ',' lambda_param
35274
static asdl_seq *
35275
_loop0_129_rule(Parser *p)
35276
61
{
35277
61
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35278
0
        _Pypegen_stack_overflow(p);
35279
0
    }
35280
61
    if (p->error_indicator) {
35281
0
        p->level--;
35282
0
        return NULL;
35283
0
    }
35284
61
    void *_res = NULL;
35285
61
    int _mark = p->mark;
35286
61
    void **_children = PyMem_Malloc(sizeof(void *));
35287
61
    if (!_children) {
35288
0
        p->error_indicator = 1;
35289
0
        PyErr_NoMemory();
35290
0
        p->level--;
35291
0
        return NULL;
35292
0
    }
35293
61
    Py_ssize_t _children_capacity = 1;
35294
61
    Py_ssize_t _n = 0;
35295
61
    { // ',' lambda_param
35296
61
        if (p->error_indicator) {
35297
0
            p->level--;
35298
0
            return NULL;
35299
0
        }
35300
61
        D(fprintf(stderr, "%*c> _loop0_129[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' lambda_param"));
35301
61
        Token * _literal;
35302
61
        arg_ty elem;
35303
61
        while (
35304
3.72k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35305
3.72k
            &&
35306
3.72k
            (elem = lambda_param_rule(p))  // lambda_param
35307
61
        )
35308
3.66k
        {
35309
3.66k
            _res = elem;
35310
3.66k
            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.66k
            if (_n == _children_capacity) {
35317
170
                _children_capacity *= 2;
35318
170
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
35319
170
                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
170
                _children = _new_children;
35327
170
            }
35328
3.66k
            _children[_n++] = _res;
35329
3.66k
            _mark = p->mark;
35330
3.66k
        }
35331
61
        p->mark = _mark;
35332
61
        D(fprintf(stderr, "%*c%s _loop0_129[%d-%d]: %s failed!\n", p->level, ' ',
35333
61
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' lambda_param"));
35334
61
    }
35335
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
35336
61
    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.72k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
35344
61
    PyMem_Free(_children);
35345
61
    p->level--;
35346
61
    return _seq;
35347
61
}
35348
35349
// _gather_130: lambda_param _loop0_129
35350
static asdl_seq *
35351
_gather_130_rule(Parser *p)
35352
68
{
35353
68
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35354
0
        _Pypegen_stack_overflow(p);
35355
0
    }
35356
68
    if (p->error_indicator) {
35357
0
        p->level--;
35358
0
        return NULL;
35359
0
    }
35360
68
    asdl_seq * _res = NULL;
35361
68
    int _mark = p->mark;
35362
68
    { // lambda_param _loop0_129
35363
68
        if (p->error_indicator) {
35364
0
            p->level--;
35365
0
            return NULL;
35366
0
        }
35367
68
        D(fprintf(stderr, "%*c> _gather_130[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param _loop0_129"));
35368
68
        arg_ty elem;
35369
68
        asdl_seq * seq;
35370
68
        if (
35371
68
            (elem = lambda_param_rule(p))  // lambda_param
35372
68
            &&
35373
68
            (seq = _loop0_129_rule(p))  // _loop0_129
35374
68
        )
35375
61
        {
35376
61
            D(fprintf(stderr, "%*c+ _gather_130[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param _loop0_129"));
35377
61
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
35378
61
            goto done;
35379
61
        }
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
68
  done:
35386
68
    p->level--;
35387
68
    return _res;
35388
7
}
35389
35390
// _tmp_131: ',' | lambda_param_no_default
35391
static void *
35392
_tmp_131_rule(Parser *p)
35393
2.51k
{
35394
2.51k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35395
0
        _Pypegen_stack_overflow(p);
35396
0
    }
35397
2.51k
    if (p->error_indicator) {
35398
0
        p->level--;
35399
0
        return NULL;
35400
0
    }
35401
2.51k
    void * _res = NULL;
35402
2.51k
    int _mark = p->mark;
35403
2.51k
    { // ','
35404
2.51k
        if (p->error_indicator) {
35405
0
            p->level--;
35406
0
            return NULL;
35407
0
        }
35408
2.51k
        D(fprintf(stderr, "%*c> _tmp_131[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
35409
2.51k
        Token * _literal;
35410
2.51k
        if (
35411
2.51k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35412
2.51k
        )
35413
1.15k
        {
35414
1.15k
            D(fprintf(stderr, "%*c+ _tmp_131[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
35415
1.15k
            _res = _literal;
35416
1.15k
            goto done;
35417
1.15k
        }
35418
1.36k
        p->mark = _mark;
35419
1.36k
        D(fprintf(stderr, "%*c%s _tmp_131[%d-%d]: %s failed!\n", p->level, ' ',
35420
1.36k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
35421
1.36k
    }
35422
0
    { // lambda_param_no_default
35423
1.36k
        if (p->error_indicator) {
35424
2
            p->level--;
35425
2
            return NULL;
35426
2
        }
35427
1.36k
        D(fprintf(stderr, "%*c> _tmp_131[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
35428
1.36k
        arg_ty lambda_param_no_default_var;
35429
1.36k
        if (
35430
1.36k
            (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
35431
1.36k
        )
35432
963
        {
35433
963
            D(fprintf(stderr, "%*c+ _tmp_131[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
35434
963
            _res = lambda_param_no_default_var;
35435
963
            goto done;
35436
963
        }
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.51k
  done:
35443
2.51k
    p->level--;
35444
2.51k
    return _res;
35445
398
}
35446
35447
// _tmp_132: ':' | ',' (':' | '**')
35448
static void *
35449
_tmp_132_rule(Parser *p)
35450
2.28k
{
35451
2.28k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35452
0
        _Pypegen_stack_overflow(p);
35453
0
    }
35454
2.28k
    if (p->error_indicator) {
35455
0
        p->level--;
35456
0
        return NULL;
35457
0
    }
35458
2.28k
    void * _res = NULL;
35459
2.28k
    int _mark = p->mark;
35460
2.28k
    { // ':'
35461
2.28k
        if (p->error_indicator) {
35462
0
            p->level--;
35463
0
            return NULL;
35464
0
        }
35465
2.28k
        D(fprintf(stderr, "%*c> _tmp_132[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
35466
2.28k
        Token * _literal;
35467
2.28k
        if (
35468
2.28k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
35469
2.28k
        )
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.28k
  done:
35503
2.28k
    p->level--;
35504
2.28k
    return _res;
35505
2.28k
}
35506
35507
// _tmp_133: lambda_param_no_default | ','
35508
static void *
35509
_tmp_133_rule(Parser *p)
35510
2.45k
{
35511
2.45k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35512
0
        _Pypegen_stack_overflow(p);
35513
0
    }
35514
2.45k
    if (p->error_indicator) {
35515
0
        p->level--;
35516
0
        return NULL;
35517
0
    }
35518
2.45k
    void * _res = NULL;
35519
2.45k
    int _mark = p->mark;
35520
2.45k
    { // lambda_param_no_default
35521
2.45k
        if (p->error_indicator) {
35522
0
            p->level--;
35523
0
            return NULL;
35524
0
        }
35525
2.45k
        D(fprintf(stderr, "%*c> _tmp_133[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
35526
2.45k
        arg_ty lambda_param_no_default_var;
35527
2.45k
        if (
35528
2.45k
            (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
35529
2.45k
        )
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.49k
        p->mark = _mark;
35536
1.49k
        D(fprintf(stderr, "%*c%s _tmp_133[%d-%d]: %s failed!\n", p->level, ' ',
35537
1.49k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
35538
1.49k
    }
35539
0
    { // ','
35540
1.49k
        if (p->error_indicator) {
35541
1
            p->level--;
35542
1
            return NULL;
35543
1
        }
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
933
        {
35550
933
            D(fprintf(stderr, "%*c+ _tmp_133[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
35551
933
            _res = _literal;
35552
933
            goto done;
35553
933
        }
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.77k
{
35568
2.77k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35569
0
        _Pypegen_stack_overflow(p);
35570
0
    }
35571
2.77k
    if (p->error_indicator) {
35572
0
        p->level--;
35573
0
        return NULL;
35574
0
    }
35575
2.77k
    void * _res = NULL;
35576
2.77k
    int _mark = p->mark;
35577
2.77k
    { // bitwise_or ((',' bitwise_or))* ','?
35578
2.77k
        if (p->error_indicator) {
35579
0
            p->level--;
35580
0
            return NULL;
35581
0
        }
35582
2.77k
        D(fprintf(stderr, "%*c> _tmp_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or ((',' bitwise_or))* ','?"));
35583
2.77k
        asdl_seq * _loop0_170_var;
35584
2.77k
        void *_opt_var;
35585
2.77k
        UNUSED(_opt_var); // Silence compiler warnings
35586
2.77k
        expr_ty bitwise_or_var;
35587
2.77k
        if (
35588
2.77k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
35589
2.77k
            &&
35590
2.77k
            (_loop0_170_var = _loop0_170_rule(p))  // ((',' bitwise_or))*
35591
2.77k
            &&
35592
2.77k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
35593
2.77k
        )
35594
123
        {
35595
123
            D(fprintf(stderr, "%*c+ _tmp_134[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or ((',' bitwise_or))* ','?"));
35596
123
            _res = _PyPegen_dummy_name(p, bitwise_or_var, _loop0_170_var, _opt_var);
35597
123
            goto done;
35598
123
        }
35599
2.65k
        p->mark = _mark;
35600
2.65k
        D(fprintf(stderr, "%*c%s _tmp_134[%d-%d]: %s failed!\n", p->level, ' ',
35601
2.65k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or ((',' bitwise_or))* ','?"));
35602
2.65k
    }
35603
0
    _res = NULL;
35604
2.77k
  done:
35605
2.77k
    p->level--;
35606
2.77k
    return _res;
35607
2.65k
}
35608
35609
// _loop0_135: ',' dotted_name
35610
static asdl_seq *
35611
_loop0_135_rule(Parser *p)
35612
839
{
35613
839
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35614
0
        _Pypegen_stack_overflow(p);
35615
0
    }
35616
839
    if (p->error_indicator) {
35617
0
        p->level--;
35618
0
        return NULL;
35619
0
    }
35620
839
    void *_res = NULL;
35621
839
    int _mark = p->mark;
35622
839
    void **_children = PyMem_Malloc(sizeof(void *));
35623
839
    if (!_children) {
35624
0
        p->error_indicator = 1;
35625
0
        PyErr_NoMemory();
35626
0
        p->level--;
35627
0
        return NULL;
35628
0
    }
35629
839
    Py_ssize_t _children_capacity = 1;
35630
839
    Py_ssize_t _n = 0;
35631
839
    { // ',' dotted_name
35632
839
        if (p->error_indicator) {
35633
0
            p->level--;
35634
0
            return NULL;
35635
0
        }
35636
839
        D(fprintf(stderr, "%*c> _loop0_135[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' dotted_name"));
35637
839
        Token * _literal;
35638
839
        expr_ty elem;
35639
839
        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
839
        )
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
542
                _children_capacity *= 2;
35654
542
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
35655
542
                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
542
                _children = _new_children;
35663
542
            }
35664
1.83k
            _children[_n++] = _res;
35665
1.83k
            _mark = p->mark;
35666
1.83k
        }
35667
839
        p->mark = _mark;
35668
839
        D(fprintf(stderr, "%*c%s _loop0_135[%d-%d]: %s failed!\n", p->level, ' ',
35669
839
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' dotted_name"));
35670
839
    }
35671
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
35672
839
    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
839
    PyMem_Free(_children);
35681
839
    p->level--;
35682
839
    return _seq;
35683
839
}
35684
35685
// _gather_136: dotted_name _loop0_135
35686
static asdl_seq *
35687
_gather_136_rule(Parser *p)
35688
849
{
35689
849
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35690
0
        _Pypegen_stack_overflow(p);
35691
0
    }
35692
849
    if (p->error_indicator) {
35693
0
        p->level--;
35694
0
        return NULL;
35695
0
    }
35696
849
    asdl_seq * _res = NULL;
35697
849
    int _mark = p->mark;
35698
849
    { // dotted_name _loop0_135
35699
849
        if (p->error_indicator) {
35700
0
            p->level--;
35701
0
            return NULL;
35702
0
        }
35703
849
        D(fprintf(stderr, "%*c> _gather_136[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name _loop0_135"));
35704
849
        expr_ty elem;
35705
849
        asdl_seq * seq;
35706
849
        if (
35707
849
            (elem = dotted_name_rule(p))  // dotted_name
35708
849
            &&
35709
849
            (seq = _loop0_135_rule(p))  // _loop0_135
35710
849
        )
35711
839
        {
35712
839
            D(fprintf(stderr, "%*c+ _gather_136[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name _loop0_135"));
35713
839
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
35714
839
            goto done;
35715
839
        }
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
849
  done:
35722
849
    p->level--;
35723
849
    return _res;
35724
10
}
35725
35726
// _tmp_137: NAME (',' | ')' | NEWLINE)
35727
static void *
35728
_tmp_137_rule(Parser *p)
35729
457
{
35730
457
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35731
0
        _Pypegen_stack_overflow(p);
35732
0
    }
35733
457
    if (p->error_indicator) {
35734
0
        p->level--;
35735
0
        return NULL;
35736
0
    }
35737
457
    void * _res = NULL;
35738
457
    int _mark = p->mark;
35739
457
    { // NAME (',' | ')' | NEWLINE)
35740
457
        if (p->error_indicator) {
35741
0
            p->level--;
35742
0
            return NULL;
35743
0
        }
35744
457
        D(fprintf(stderr, "%*c> _tmp_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME (',' | ')' | NEWLINE)"));
35745
457
        void *_tmp_171_var;
35746
457
        expr_ty name_var;
35747
457
        if (
35748
457
            (name_var = _PyPegen_name_token(p))  // NAME
35749
457
            &&
35750
457
            (_tmp_171_var = _tmp_171_rule(p))  // ',' | ')' | NEWLINE
35751
457
        )
35752
420
        {
35753
420
            D(fprintf(stderr, "%*c+ _tmp_137[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME (',' | ')' | NEWLINE)"));
35754
420
            _res = _PyPegen_dummy_name(p, name_var, _tmp_171_var);
35755
420
            goto done;
35756
420
        }
35757
37
        p->mark = _mark;
35758
37
        D(fprintf(stderr, "%*c%s _tmp_137[%d-%d]: %s failed!\n", p->level, ' ',
35759
37
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME (',' | ')' | NEWLINE)"));
35760
37
    }
35761
0
    _res = NULL;
35762
457
  done:
35763
457
    p->level--;
35764
457
    return _res;
35765
37
}
35766
35767
// _loop0_138: ',' (expression ['as' star_target])
35768
static asdl_seq *
35769
_loop0_138_rule(Parser *p)
35770
1.97k
{
35771
1.97k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35772
0
        _Pypegen_stack_overflow(p);
35773
0
    }
35774
1.97k
    if (p->error_indicator) {
35775
0
        p->level--;
35776
0
        return NULL;
35777
0
    }
35778
1.97k
    void *_res = NULL;
35779
1.97k
    int _mark = p->mark;
35780
1.97k
    void **_children = PyMem_Malloc(sizeof(void *));
35781
1.97k
    if (!_children) {
35782
0
        p->error_indicator = 1;
35783
0
        PyErr_NoMemory();
35784
0
        p->level--;
35785
0
        return NULL;
35786
0
    }
35787
1.97k
    Py_ssize_t _children_capacity = 1;
35788
1.97k
    Py_ssize_t _n = 0;
35789
1.97k
    { // ',' (expression ['as' star_target])
35790
1.97k
        if (p->error_indicator) {
35791
0
            p->level--;
35792
0
            return NULL;
35793
0
        }
35794
1.97k
        D(fprintf(stderr, "%*c> _loop0_138[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expression ['as' star_target])"));
35795
1.97k
        Token * _literal;
35796
1.97k
        void *elem;
35797
1.97k
        while (
35798
4.50k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35799
4.50k
            &&
35800
4.50k
            (elem = _tmp_172_rule(p))  // expression ['as' star_target]
35801
1.97k
        )
35802
2.53k
        {
35803
2.53k
            _res = elem;
35804
2.53k
            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.53k
            if (_n == _children_capacity) {
35811
957
                _children_capacity *= 2;
35812
957
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
35813
957
                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
957
                _children = _new_children;
35821
957
            }
35822
2.53k
            _children[_n++] = _res;
35823
2.53k
            _mark = p->mark;
35824
2.53k
        }
35825
1.97k
        p->mark = _mark;
35826
1.97k
        D(fprintf(stderr, "%*c%s _loop0_138[%d-%d]: %s failed!\n", p->level, ' ',
35827
1.97k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expression ['as' star_target])"));
35828
1.97k
    }
35829
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
35830
1.97k
    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.50k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
35838
1.97k
    PyMem_Free(_children);
35839
1.97k
    p->level--;
35840
1.97k
    return _seq;
35841
1.97k
}
35842
35843
// _gather_139: (expression ['as' star_target]) _loop0_138
35844
static asdl_seq *
35845
_gather_139_rule(Parser *p)
35846
2.38k
{
35847
2.38k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35848
0
        _Pypegen_stack_overflow(p);
35849
0
    }
35850
2.38k
    if (p->error_indicator) {
35851
0
        p->level--;
35852
0
        return NULL;
35853
0
    }
35854
2.38k
    asdl_seq * _res = NULL;
35855
2.38k
    int _mark = p->mark;
35856
2.38k
    { // (expression ['as' star_target]) _loop0_138
35857
2.38k
        if (p->error_indicator) {
35858
0
            p->level--;
35859
0
            return NULL;
35860
0
        }
35861
2.38k
        D(fprintf(stderr, "%*c> _gather_139[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_138"));
35862
2.38k
        void *elem;
35863
2.38k
        asdl_seq * seq;
35864
2.38k
        if (
35865
2.38k
            (elem = _tmp_172_rule(p))  // expression ['as' star_target]
35866
2.38k
            &&
35867
2.38k
            (seq = _loop0_138_rule(p))  // _loop0_138
35868
2.38k
        )
35869
1.97k
        {
35870
1.97k
            D(fprintf(stderr, "%*c+ _gather_139[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_138"));
35871
1.97k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
35872
1.97k
            goto done;
35873
1.97k
        }
35874
410
        p->mark = _mark;
35875
410
        D(fprintf(stderr, "%*c%s _gather_139[%d-%d]: %s failed!\n", p->level, ' ',
35876
410
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expression ['as' star_target]) _loop0_138"));
35877
410
    }
35878
0
    _res = NULL;
35879
2.38k
  done:
35880
2.38k
    p->level--;
35881
2.38k
    return _res;
35882
410
}
35883
35884
// _loop0_140: ',' (expressions ['as' star_target])
35885
static asdl_seq *
35886
_loop0_140_rule(Parser *p)
35887
1.26k
{
35888
1.26k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35889
0
        _Pypegen_stack_overflow(p);
35890
0
    }
35891
1.26k
    if (p->error_indicator) {
35892
0
        p->level--;
35893
0
        return NULL;
35894
0
    }
35895
1.26k
    void *_res = NULL;
35896
1.26k
    int _mark = p->mark;
35897
1.26k
    void **_children = PyMem_Malloc(sizeof(void *));
35898
1.26k
    if (!_children) {
35899
0
        p->error_indicator = 1;
35900
0
        PyErr_NoMemory();
35901
0
        p->level--;
35902
0
        return NULL;
35903
0
    }
35904
1.26k
    Py_ssize_t _children_capacity = 1;
35905
1.26k
    Py_ssize_t _n = 0;
35906
1.26k
    { // ',' (expressions ['as' star_target])
35907
1.26k
        if (p->error_indicator) {
35908
0
            p->level--;
35909
0
            return NULL;
35910
0
        }
35911
1.26k
        D(fprintf(stderr, "%*c> _loop0_140[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expressions ['as' star_target])"));
35912
1.26k
        Token * _literal;
35913
1.26k
        void *elem;
35914
1.26k
        while (
35915
2.71k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35916
2.71k
            &&
35917
2.71k
            (elem = _tmp_173_rule(p))  // expressions ['as' star_target]
35918
1.26k
        )
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.26k
        p->mark = _mark;
35943
1.26k
        D(fprintf(stderr, "%*c%s _loop0_140[%d-%d]: %s failed!\n", p->level, ' ',
35944
1.26k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expressions ['as' star_target])"));
35945
1.26k
    }
35946
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
35947
1.26k
    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.71k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
35955
1.26k
    PyMem_Free(_children);
35956
1.26k
    p->level--;
35957
1.26k
    return _seq;
35958
1.26k
}
35959
35960
// _gather_141: (expressions ['as' star_target]) _loop0_140
35961
static asdl_seq *
35962
_gather_141_rule(Parser *p)
35963
1.80k
{
35964
1.80k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35965
0
        _Pypegen_stack_overflow(p);
35966
0
    }
35967
1.80k
    if (p->error_indicator) {
35968
0
        p->level--;
35969
0
        return NULL;
35970
0
    }
35971
1.80k
    asdl_seq * _res = NULL;
35972
1.80k
    int _mark = p->mark;
35973
1.80k
    { // (expressions ['as' star_target]) _loop0_140
35974
1.80k
        if (p->error_indicator) {
35975
0
            p->level--;
35976
0
            return NULL;
35977
0
        }
35978
1.80k
        D(fprintf(stderr, "%*c> _gather_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_140"));
35979
1.80k
        void *elem;
35980
1.80k
        asdl_seq * seq;
35981
1.80k
        if (
35982
1.80k
            (elem = _tmp_173_rule(p))  // expressions ['as' star_target]
35983
1.80k
            &&
35984
1.80k
            (seq = _loop0_140_rule(p))  // _loop0_140
35985
1.80k
        )
35986
1.26k
        {
35987
1.26k
            D(fprintf(stderr, "%*c+ _gather_141[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_140"));
35988
1.26k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
35989
1.26k
            goto done;
35990
1.26k
        }
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.80k
  done:
35997
1.80k
    p->level--;
35998
1.80k
    return _res;
35999
540
}
36000
36001
// _tmp_142: 'except' | 'finally'
36002
static void *
36003
_tmp_142_rule(Parser *p)
36004
1.82k
{
36005
1.82k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36006
0
        _Pypegen_stack_overflow(p);
36007
0
    }
36008
1.82k
    if (p->error_indicator) {
36009
0
        p->level--;
36010
0
        return NULL;
36011
0
    }
36012
1.82k
    void * _res = NULL;
36013
1.82k
    int _mark = p->mark;
36014
1.82k
    { // 'except'
36015
1.82k
        if (p->error_indicator) {
36016
0
            p->level--;
36017
0
            return NULL;
36018
0
        }
36019
1.82k
        D(fprintf(stderr, "%*c> _tmp_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except'"));
36020
1.82k
        Token * _keyword;
36021
1.82k
        if (
36022
1.82k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
36023
1.82k
        )
36024
1.56k
        {
36025
1.56k
            D(fprintf(stderr, "%*c+ _tmp_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except'"));
36026
1.56k
            _res = _keyword;
36027
1.56k
            goto done;
36028
1.56k
        }
36029
256
        p->mark = _mark;
36030
256
        D(fprintf(stderr, "%*c%s _tmp_142[%d-%d]: %s failed!\n", p->level, ' ',
36031
256
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except'"));
36032
256
    }
36033
0
    { // 'finally'
36034
256
        if (p->error_indicator) {
36035
1
            p->level--;
36036
1
            return NULL;
36037
1
        }
36038
255
        D(fprintf(stderr, "%*c> _tmp_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally'"));
36039
255
        Token * _keyword;
36040
255
        if (
36041
255
            (_keyword = _PyPegen_expect_token(p, 678))  // token='finally'
36042
255
        )
36043
217
        {
36044
217
            D(fprintf(stderr, "%*c+ _tmp_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally'"));
36045
217
            _res = _keyword;
36046
217
            goto done;
36047
217
        }
36048
38
        p->mark = _mark;
36049
38
        D(fprintf(stderr, "%*c%s _tmp_142[%d-%d]: %s failed!\n", p->level, ' ',
36050
38
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally'"));
36051
38
    }
36052
0
    _res = NULL;
36053
1.82k
  done:
36054
1.82k
    p->level--;
36055
1.82k
    return _res;
36056
38
}
36057
36058
// _loop0_143: block
36059
static asdl_seq *
36060
_loop0_143_rule(Parser *p)
36061
3.73k
{
36062
3.73k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36063
0
        _Pypegen_stack_overflow(p);
36064
0
    }
36065
3.73k
    if (p->error_indicator) {
36066
0
        p->level--;
36067
0
        return NULL;
36068
0
    }
36069
3.73k
    void *_res = NULL;
36070
3.73k
    int _mark = p->mark;
36071
3.73k
    void **_children = PyMem_Malloc(sizeof(void *));
36072
3.73k
    if (!_children) {
36073
0
        p->error_indicator = 1;
36074
0
        PyErr_NoMemory();
36075
0
        p->level--;
36076
0
        return NULL;
36077
0
    }
36078
3.73k
    Py_ssize_t _children_capacity = 1;
36079
3.73k
    Py_ssize_t _n = 0;
36080
3.73k
    { // block
36081
3.73k
        if (p->error_indicator) {
36082
0
            p->level--;
36083
0
            return NULL;
36084
0
        }
36085
3.73k
        D(fprintf(stderr, "%*c> _loop0_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "block"));
36086
3.73k
        asdl_stmt_seq* block_var;
36087
3.73k
        while (
36088
7.28k
            (block_var = block_rule(p))  // block
36089
3.73k
        )
36090
3.54k
        {
36091
3.54k
            _res = block_var;
36092
3.54k
            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.54k
            _children[_n++] = _res;
36105
3.54k
            _mark = p->mark;
36106
3.54k
        }
36107
3.73k
        p->mark = _mark;
36108
3.73k
        D(fprintf(stderr, "%*c%s _loop0_143[%d-%d]: %s failed!\n", p->level, ' ',
36109
3.73k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "block"));
36110
3.73k
    }
36111
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
36112
3.73k
    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.28k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
36120
3.73k
    PyMem_Free(_children);
36121
3.73k
    p->level--;
36122
3.73k
    return _seq;
36123
3.73k
}
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.47k
{
36228
3.47k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36229
0
        _Pypegen_stack_overflow(p);
36230
0
    }
36231
3.47k
    if (p->error_indicator) {
36232
0
        p->level--;
36233
0
        return NULL;
36234
0
    }
36235
3.47k
    void * _res = NULL;
36236
3.47k
    int _mark = p->mark;
36237
3.47k
    { // positional_patterns ','
36238
3.47k
        if (p->error_indicator) {
36239
0
            p->level--;
36240
0
            return NULL;
36241
0
        }
36242
3.47k
        D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "positional_patterns ','"));
36243
3.47k
        Token * _literal;
36244
3.47k
        asdl_pattern_seq* positional_patterns_var;
36245
3.47k
        if (
36246
3.47k
            (positional_patterns_var = positional_patterns_rule(p))  // positional_patterns
36247
3.47k
            &&
36248
3.47k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
36249
3.47k
        )
36250
794
        {
36251
794
            D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "positional_patterns ','"));
36252
794
            _res = _PyPegen_dummy_name(p, positional_patterns_var, _literal);
36253
794
            goto done;
36254
794
        }
36255
2.68k
        p->mark = _mark;
36256
2.68k
        D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ',
36257
2.68k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "positional_patterns ','"));
36258
2.68k
    }
36259
0
    _res = NULL;
36260
3.47k
  done:
36261
3.47k
    p->level--;
36262
3.47k
    return _res;
36263
2.68k
}
36264
36265
// _tmp_147: '}' | ','
36266
static void *
36267
_tmp_147_rule(Parser *p)
36268
3.56k
{
36269
3.56k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36270
0
        _Pypegen_stack_overflow(p);
36271
0
    }
36272
3.56k
    if (p->error_indicator) {
36273
0
        p->level--;
36274
0
        return NULL;
36275
0
    }
36276
3.56k
    void * _res = NULL;
36277
3.56k
    int _mark = p->mark;
36278
3.56k
    { // '}'
36279
3.56k
        if (p->error_indicator) {
36280
0
            p->level--;
36281
0
            return NULL;
36282
0
        }
36283
3.56k
        D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'"));
36284
3.56k
        Token * _literal;
36285
3.56k
        if (
36286
3.56k
            (_literal = _PyPegen_expect_token(p, 26))  // token='}'
36287
3.56k
        )
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.56k
        p->mark = _mark;
36294
3.56k
        D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
36295
3.56k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'"));
36296
3.56k
    }
36297
0
    { // ','
36298
3.56k
        if (p->error_indicator) {
36299
0
            p->level--;
36300
0
            return NULL;
36301
0
        }
36302
3.56k
        D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
36303
3.56k
        Token * _literal;
36304
3.56k
        if (
36305
3.56k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
36306
3.56k
        )
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.55k
        p->mark = _mark;
36313
3.55k
        D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
36314
3.55k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
36315
3.55k
    }
36316
0
    _res = NULL;
36317
3.56k
  done:
36318
3.56k
    p->level--;
36319
3.56k
    return _res;
36320
3.55k
}
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
20
        {
36346
20
            D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
36347
20
            _res = _literal;
36348
20
            goto done;
36349
20
        }
36350
271
        p->mark = _mark;
36351
271
        D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ',
36352
271
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
36353
271
    }
36354
0
    { // '!'
36355
271
        if (p->error_indicator) {
36356
0
            p->level--;
36357
0
            return NULL;
36358
0
        }
36359
271
        D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!'"));
36360
271
        Token * _literal;
36361
271
        if (
36362
271
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
36363
271
        )
36364
21
        {
36365
21
            D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!'"));
36366
21
            _res = _literal;
36367
21
            goto done;
36368
21
        }
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
203
        {
36384
203
            D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
36385
203
            _res = _literal;
36386
203
            goto done;
36387
203
        }
36388
47
        p->mark = _mark;
36389
47
        D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ',
36390
47
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
36391
47
    }
36392
0
    { // '}'
36393
47
        if (p->error_indicator) {
36394
0
            p->level--;
36395
0
            return NULL;
36396
0
        }
36397
47
        D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'"));
36398
47
        Token * _literal;
36399
47
        if (
36400
47
            (_literal = _PyPegen_expect_token(p, 26))  // token='}'
36401
47
        )
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
47
        p->mark = _mark;
36408
47
        D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ',
36409
47
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'"));
36410
47
    }
36411
0
    _res = NULL;
36412
291
  done:
36413
291
    p->level--;
36414
291
    return _res;
36415
47
}
36416
36417
// _tmp_149: '!' | ':' | '}'
36418
static void *
36419
_tmp_149_rule(Parser *p)
36420
20
{
36421
20
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36422
0
        _Pypegen_stack_overflow(p);
36423
0
    }
36424
20
    if (p->error_indicator) {
36425
0
        p->level--;
36426
0
        return NULL;
36427
0
    }
36428
20
    void * _res = NULL;
36429
20
    int _mark = p->mark;
36430
20
    { // '!'
36431
20
        if (p->error_indicator) {
36432
0
            p->level--;
36433
0
            return NULL;
36434
0
        }
36435
20
        D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!'"));
36436
20
        Token * _literal;
36437
20
        if (
36438
20
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
36439
20
        )
36440
11
        {
36441
11
            D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!'"));
36442
11
            _res = _literal;
36443
11
            goto done;
36444
11
        }
36445
9
        p->mark = _mark;
36446
9
        D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ',
36447
9
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!'"));
36448
9
    }
36449
0
    { // ':'
36450
9
        if (p->error_indicator) {
36451
0
            p->level--;
36452
0
            return NULL;
36453
0
        }
36454
9
        D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
36455
9
        Token * _literal;
36456
9
        if (
36457
9
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
36458
9
        )
36459
3
        {
36460
3
            D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
36461
3
            _res = _literal;
36462
3
            goto done;
36463
3
        }
36464
6
        p->mark = _mark;
36465
6
        D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ',
36466
6
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
36467
6
    }
36468
0
    { // '}'
36469
6
        if (p->error_indicator) {
36470
0
            p->level--;
36471
0
            return NULL;
36472
0
        }
36473
6
        D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'"));
36474
6
        Token * _literal;
36475
6
        if (
36476
6
            (_literal = _PyPegen_expect_token(p, 26))  // token='}'
36477
6
        )
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
6
        p->mark = _mark;
36484
6
        D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ',
36485
6
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'"));
36486
6
    }
36487
0
    _res = NULL;
36488
20
  done:
36489
20
    p->level--;
36490
20
    return _res;
36491
6
}
36492
36493
// _tmp_150: '!' NAME
36494
static void *
36495
_tmp_150_rule(Parser *p)
36496
424
{
36497
424
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36498
0
        _Pypegen_stack_overflow(p);
36499
0
    }
36500
424
    if (p->error_indicator) {
36501
0
        p->level--;
36502
0
        return NULL;
36503
0
    }
36504
424
    void * _res = NULL;
36505
424
    int _mark = p->mark;
36506
424
    { // '!' NAME
36507
424
        if (p->error_indicator) {
36508
0
            p->level--;
36509
0
            return NULL;
36510
0
        }
36511
424
        D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' NAME"));
36512
424
        Token * _literal;
36513
424
        expr_ty name_var;
36514
424
        if (
36515
424
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
36516
424
            &&
36517
424
            (name_var = _PyPegen_name_token(p))  // NAME
36518
424
        )
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
412
        p->mark = _mark;
36525
412
        D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ',
36526
412
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' NAME"));
36527
412
    }
36528
0
    _res = NULL;
36529
424
  done:
36530
424
    p->level--;
36531
424
    return _res;
36532
412
}
36533
36534
// _tmp_151: ':' | '}'
36535
static void *
36536
_tmp_151_rule(Parser *p)
36537
249
{
36538
249
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36539
0
        _Pypegen_stack_overflow(p);
36540
0
    }
36541
249
    if (p->error_indicator) {
36542
0
        p->level--;
36543
0
        return NULL;
36544
0
    }
36545
249
    void * _res = NULL;
36546
249
    int _mark = p->mark;
36547
249
    { // ':'
36548
249
        if (p->error_indicator) {
36549
0
            p->level--;
36550
0
            return NULL;
36551
0
        }
36552
249
        D(fprintf(stderr, "%*c> _tmp_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
36553
249
        Token * _literal;
36554
249
        if (
36555
249
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
36556
249
        )
36557
211
        {
36558
211
            D(fprintf(stderr, "%*c+ _tmp_151[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
36559
211
            _res = _literal;
36560
211
            goto done;
36561
211
        }
36562
38
        p->mark = _mark;
36563
38
        D(fprintf(stderr, "%*c%s _tmp_151[%d-%d]: %s failed!\n", p->level, ' ',
36564
38
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
36565
38
    }
36566
0
    { // '}'
36567
38
        if (p->error_indicator) {
36568
0
            p->level--;
36569
0
            return NULL;
36570
0
        }
36571
38
        D(fprintf(stderr, "%*c> _tmp_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'"));
36572
38
        Token * _literal;
36573
38
        if (
36574
38
            (_literal = _PyPegen_expect_token(p, 26))  // token='}'
36575
38
        )
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
35
        p->mark = _mark;
36582
35
        D(fprintf(stderr, "%*c%s _tmp_151[%d-%d]: %s failed!\n", p->level, ' ',
36583
35
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'"));
36584
35
    }
36585
0
    _res = NULL;
36586
249
  done:
36587
249
    p->level--;
36588
249
    return _res;
36589
35
}
36590
36591
// _tmp_152: '+' | '-' | '*' | '/' | '%' | '//' | '@'
36592
static void *
36593
_tmp_152_rule(Parser *p)
36594
217k
{
36595
217k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36596
0
        _Pypegen_stack_overflow(p);
36597
0
    }
36598
217k
    if (p->error_indicator) {
36599
0
        p->level--;
36600
0
        return NULL;
36601
0
    }
36602
217k
    void * _res = NULL;
36603
217k
    int _mark = p->mark;
36604
217k
    { // '+'
36605
217k
        if (p->error_indicator) {
36606
0
            p->level--;
36607
0
            return NULL;
36608
0
        }
36609
217k
        D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+'"));
36610
217k
        Token * _literal;
36611
217k
        if (
36612
217k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
36613
217k
        )
36614
963
        {
36615
963
            D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+'"));
36616
963
            _res = _literal;
36617
963
            goto done;
36618
963
        }
36619
216k
        p->mark = _mark;
36620
216k
        D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
36621
216k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+'"));
36622
216k
    }
36623
0
    { // '-'
36624
216k
        if (p->error_indicator) {
36625
0
            p->level--;
36626
0
            return NULL;
36627
0
        }
36628
216k
        D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-'"));
36629
216k
        Token * _literal;
36630
216k
        if (
36631
216k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
36632
216k
        )
36633
717
        {
36634
717
            D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-'"));
36635
717
            _res = _literal;
36636
717
            goto done;
36637
717
        }
36638
216k
        p->mark = _mark;
36639
216k
        D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
36640
216k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-'"));
36641
216k
    }
36642
0
    { // '*'
36643
216k
        if (p->error_indicator) {
36644
0
            p->level--;
36645
0
            return NULL;
36646
0
        }
36647
216k
        D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
36648
216k
        Token * _literal;
36649
216k
        if (
36650
216k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
36651
216k
        )
36652
618
        {
36653
618
            D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
36654
618
            _res = _literal;
36655
618
            goto done;
36656
618
        }
36657
215k
        p->mark = _mark;
36658
215k
        D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
36659
215k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
36660
215k
    }
36661
0
    { // '/'
36662
215k
        if (p->error_indicator) {
36663
0
            p->level--;
36664
0
            return NULL;
36665
0
        }
36666
215k
        D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/'"));
36667
215k
        Token * _literal;
36668
215k
        if (
36669
215k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
36670
215k
        )
36671
334
        {
36672
334
            D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'/'"));
36673
334
            _res = _literal;
36674
334
            goto done;
36675
334
        }
36676
215k
        p->mark = _mark;
36677
215k
        D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
36678
215k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'/'"));
36679
215k
    }
36680
0
    { // '%'
36681
215k
        if (p->error_indicator) {
36682
0
            p->level--;
36683
0
            return NULL;
36684
0
        }
36685
215k
        D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'%'"));
36686
215k
        Token * _literal;
36687
215k
        if (
36688
215k
            (_literal = _PyPegen_expect_token(p, 24))  // token='%'
36689
215k
        )
36690
354
        {
36691
354
            D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'%'"));
36692
354
            _res = _literal;
36693
354
            goto done;
36694
354
        }
36695
214k
        p->mark = _mark;
36696
214k
        D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
36697
214k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'%'"));
36698
214k
    }
36699
0
    { // '//'
36700
214k
        if (p->error_indicator) {
36701
0
            p->level--;
36702
0
            return NULL;
36703
0
        }
36704
214k
        D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'//'"));
36705
214k
        Token * _literal;
36706
214k
        if (
36707
214k
            (_literal = _PyPegen_expect_token(p, 47))  // token='//'
36708
214k
        )
36709
200
        {
36710
200
            D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'//'"));
36711
200
            _res = _literal;
36712
200
            goto done;
36713
200
        }
36714
214k
        p->mark = _mark;
36715
214k
        D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
36716
214k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'//'"));
36717
214k
    }
36718
0
    { // '@'
36719
214k
        if (p->error_indicator) {
36720
0
            p->level--;
36721
0
            return NULL;
36722
0
        }
36723
214k
        D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
36724
214k
        Token * _literal;
36725
214k
        if (
36726
214k
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
36727
214k
        )
36728
322
        {
36729
322
            D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
36730
322
            _res = _literal;
36731
322
            goto done;
36732
322
        }
36733
214k
        p->mark = _mark;
36734
214k
        D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
36735
214k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
36736
214k
    }
36737
0
    _res = NULL;
36738
217k
  done:
36739
217k
    p->level--;
36740
217k
    return _res;
36741
214k
}
36742
36743
// _tmp_153: '+' | '-' | '~'
36744
static void *
36745
_tmp_153_rule(Parser *p)
36746
312k
{
36747
312k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36748
1
        _Pypegen_stack_overflow(p);
36749
1
    }
36750
312k
    if (p->error_indicator) {
36751
1
        p->level--;
36752
1
        return NULL;
36753
1
    }
36754
312k
    void * _res = NULL;
36755
312k
    int _mark = p->mark;
36756
312k
    { // '+'
36757
312k
        if (p->error_indicator) {
36758
0
            p->level--;
36759
0
            return NULL;
36760
0
        }
36761
312k
        D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+'"));
36762
312k
        Token * _literal;
36763
312k
        if (
36764
312k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
36765
312k
        )
36766
3.86k
        {
36767
3.86k
            D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+'"));
36768
3.86k
            _res = _literal;
36769
3.86k
            goto done;
36770
3.86k
        }
36771
308k
        p->mark = _mark;
36772
308k
        D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ',
36773
308k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+'"));
36774
308k
    }
36775
0
    { // '-'
36776
308k
        if (p->error_indicator) {
36777
0
            p->level--;
36778
0
            return NULL;
36779
0
        }
36780
308k
        D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-'"));
36781
308k
        Token * _literal;
36782
308k
        if (
36783
308k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
36784
308k
        )
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
304k
        p->mark = _mark;
36791
304k
        D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ',
36792
304k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-'"));
36793
304k
    }
36794
0
    { // '~'
36795
304k
        if (p->error_indicator) {
36796
0
            p->level--;
36797
0
            return NULL;
36798
0
        }
36799
304k
        D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'~'"));
36800
304k
        Token * _literal;
36801
304k
        if (
36802
304k
            (_literal = _PyPegen_expect_token(p, 31))  // token='~'
36803
304k
        )
36804
1.06k
        {
36805
1.06k
            D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'~'"));
36806
1.06k
            _res = _literal;
36807
1.06k
            goto done;
36808
1.06k
        }
36809
303k
        p->mark = _mark;
36810
303k
        D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ',
36811
303k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'~'"));
36812
303k
    }
36813
0
    _res = NULL;
36814
312k
  done:
36815
312k
    p->level--;
36816
312k
    return _res;
36817
303k
}
36818
36819
// _tmp_154: star_targets '='
36820
static void *
36821
_tmp_154_rule(Parser *p)
36822
272k
{
36823
272k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36824
0
        _Pypegen_stack_overflow(p);
36825
0
    }
36826
272k
    if (p->error_indicator) {
36827
0
        p->level--;
36828
0
        return NULL;
36829
0
    }
36830
272k
    void * _res = NULL;
36831
272k
    int _mark = p->mark;
36832
272k
    { // star_targets '='
36833
272k
        if (p->error_indicator) {
36834
0
            p->level--;
36835
0
            return NULL;
36836
0
        }
36837
272k
        D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
36838
272k
        Token * _literal;
36839
272k
        expr_ty z;
36840
272k
        if (
36841
272k
            (z = star_targets_rule(p))  // star_targets
36842
272k
            &&
36843
272k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
36844
272k
        )
36845
16.0k
        {
36846
16.0k
            D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
36847
16.0k
            _res = z;
36848
16.0k
            if (_res == NULL && PyErr_Occurred()) {
36849
0
                p->error_indicator = 1;
36850
0
                p->level--;
36851
0
                return NULL;
36852
0
            }
36853
16.0k
            goto done;
36854
16.0k
        }
36855
256k
        p->mark = _mark;
36856
256k
        D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
36857
256k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='"));
36858
256k
    }
36859
0
    _res = NULL;
36860
272k
  done:
36861
272k
    p->level--;
36862
272k
    return _res;
36863
256k
}
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.96k
        {
36889
3.96k
            D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
36890
3.96k
            _res = _literal;
36891
3.96k
            goto done;
36892
3.96k
        }
36893
8.86k
        p->mark = _mark;
36894
8.86k
        D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ',
36895
8.86k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
36896
8.86k
    }
36897
0
    { // '...'
36898
8.86k
        if (p->error_indicator) {
36899
11
            p->level--;
36900
11
            return NULL;
36901
11
        }
36902
8.85k
        D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
36903
8.85k
        Token * _literal;
36904
8.85k
        if (
36905
8.85k
            (_literal = _PyPegen_expect_token(p, 52))  // token='...'
36906
8.85k
        )
36907
4.61k
        {
36908
4.61k
            D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
36909
4.61k
            _res = _literal;
36910
4.61k
            goto done;
36911
4.61k
        }
36912
4.23k
        p->mark = _mark;
36913
4.23k
        D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ',
36914
4.23k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
36915
4.23k
    }
36916
0
    _res = NULL;
36917
12.8k
  done:
36918
12.8k
    p->level--;
36919
12.8k
    return _res;
36920
4.23k
}
36921
36922
// _tmp_156: '@' named_expression NEWLINE
36923
static void *
36924
_tmp_156_rule(Parser *p)
36925
22.9k
{
36926
22.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36927
0
        _Pypegen_stack_overflow(p);
36928
0
    }
36929
22.9k
    if (p->error_indicator) {
36930
0
        p->level--;
36931
0
        return NULL;
36932
0
    }
36933
22.9k
    void * _res = NULL;
36934
22.9k
    int _mark = p->mark;
36935
22.9k
    { // '@' named_expression NEWLINE
36936
22.9k
        if (p->error_indicator) {
36937
0
            p->level--;
36938
0
            return NULL;
36939
0
        }
36940
22.9k
        D(fprintf(stderr, "%*c> _tmp_156[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE"));
36941
22.9k
        Token * _literal;
36942
22.9k
        expr_ty f;
36943
22.9k
        Token * newline_var;
36944
22.9k
        if (
36945
22.9k
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
36946
22.9k
            &&
36947
22.9k
            (f = named_expression_rule(p))  // named_expression
36948
22.9k
            &&
36949
22.9k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
36950
22.9k
        )
36951
4.50k
        {
36952
4.50k
            D(fprintf(stderr, "%*c+ _tmp_156[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE"));
36953
4.50k
            _res = f;
36954
4.50k
            if (_res == NULL && PyErr_Occurred()) {
36955
0
                p->error_indicator = 1;
36956
0
                p->level--;
36957
0
                return NULL;
36958
0
            }
36959
4.50k
            goto done;
36960
4.50k
        }
36961
18.4k
        p->mark = _mark;
36962
18.4k
        D(fprintf(stderr, "%*c%s _tmp_156[%d-%d]: %s failed!\n", p->level, ' ',
36963
18.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@' named_expression NEWLINE"));
36964
18.4k
    }
36965
0
    _res = NULL;
36966
22.9k
  done:
36967
22.9k
    p->level--;
36968
22.9k
    return _res;
36969
18.4k
}
36970
36971
// _tmp_157: ',' star_expression
36972
static void *
36973
_tmp_157_rule(Parser *p)
36974
230k
{
36975
230k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36976
0
        _Pypegen_stack_overflow(p);
36977
0
    }
36978
230k
    if (p->error_indicator) {
36979
0
        p->level--;
36980
0
        return NULL;
36981
0
    }
36982
230k
    void * _res = NULL;
36983
230k
    int _mark = p->mark;
36984
230k
    { // ',' star_expression
36985
230k
        if (p->error_indicator) {
36986
0
            p->level--;
36987
0
            return NULL;
36988
0
        }
36989
230k
        D(fprintf(stderr, "%*c> _tmp_157[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression"));
36990
230k
        Token * _literal;
36991
230k
        expr_ty c;
36992
230k
        if (
36993
230k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
36994
230k
            &&
36995
230k
            (c = star_expression_rule(p))  // star_expression
36996
230k
        )
36997
17.1k
        {
36998
17.1k
            D(fprintf(stderr, "%*c+ _tmp_157[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression"));
36999
17.1k
            _res = c;
37000
17.1k
            if (_res == NULL && PyErr_Occurred()) {
37001
0
                p->error_indicator = 1;
37002
0
                p->level--;
37003
0
                return NULL;
37004
0
            }
37005
17.1k
            goto done;
37006
17.1k
        }
37007
213k
        p->mark = _mark;
37008
213k
        D(fprintf(stderr, "%*c%s _tmp_157[%d-%d]: %s failed!\n", p->level, ' ',
37009
213k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_expression"));
37010
213k
    }
37011
0
    _res = NULL;
37012
230k
  done:
37013
230k
    p->level--;
37014
230k
    return _res;
37015
213k
}
37016
37017
// _tmp_158: 'or' conjunction
37018
static void *
37019
_tmp_158_rule(Parser *p)
37020
388k
{
37021
388k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37022
0
        _Pypegen_stack_overflow(p);
37023
0
    }
37024
388k
    if (p->error_indicator) {
37025
0
        p->level--;
37026
0
        return NULL;
37027
0
    }
37028
388k
    void * _res = NULL;
37029
388k
    int _mark = p->mark;
37030
388k
    { // 'or' conjunction
37031
388k
        if (p->error_indicator) {
37032
0
            p->level--;
37033
0
            return NULL;
37034
0
        }
37035
388k
        D(fprintf(stderr, "%*c> _tmp_158[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction"));
37036
388k
        Token * _keyword;
37037
388k
        expr_ty c;
37038
388k
        if (
37039
388k
            (_keyword = _PyPegen_expect_token(p, 589))  // token='or'
37040
388k
            &&
37041
388k
            (c = conjunction_rule(p))  // conjunction
37042
388k
        )
37043
4.66k
        {
37044
4.66k
            D(fprintf(stderr, "%*c+ _tmp_158[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction"));
37045
4.66k
            _res = c;
37046
4.66k
            if (_res == NULL && PyErr_Occurred()) {
37047
0
                p->error_indicator = 1;
37048
0
                p->level--;
37049
0
                return NULL;
37050
0
            }
37051
4.66k
            goto done;
37052
4.66k
        }
37053
383k
        p->mark = _mark;
37054
383k
        D(fprintf(stderr, "%*c%s _tmp_158[%d-%d]: %s failed!\n", p->level, ' ',
37055
383k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'or' conjunction"));
37056
383k
    }
37057
0
    _res = NULL;
37058
388k
  done:
37059
388k
    p->level--;
37060
388k
    return _res;
37061
383k
}
37062
37063
// _tmp_159: 'and' inversion
37064
static void *
37065
_tmp_159_rule(Parser *p)
37066
390k
{
37067
390k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37068
0
        _Pypegen_stack_overflow(p);
37069
0
    }
37070
390k
    if (p->error_indicator) {
37071
0
        p->level--;
37072
0
        return NULL;
37073
0
    }
37074
390k
    void * _res = NULL;
37075
390k
    int _mark = p->mark;
37076
390k
    { // 'and' inversion
37077
390k
        if (p->error_indicator) {
37078
0
            p->level--;
37079
0
            return NULL;
37080
0
        }
37081
390k
        D(fprintf(stderr, "%*c> _tmp_159[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion"));
37082
390k
        Token * _keyword;
37083
390k
        expr_ty c;
37084
390k
        if (
37085
390k
            (_keyword = _PyPegen_expect_token(p, 590))  // token='and'
37086
390k
            &&
37087
390k
            (c = inversion_rule(p))  // inversion
37088
390k
        )
37089
2.83k
        {
37090
2.83k
            D(fprintf(stderr, "%*c+ _tmp_159[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion"));
37091
2.83k
            _res = c;
37092
2.83k
            if (_res == NULL && PyErr_Occurred()) {
37093
0
                p->error_indicator = 1;
37094
0
                p->level--;
37095
0
                return NULL;
37096
0
            }
37097
2.83k
            goto done;
37098
2.83k
        }
37099
388k
        p->mark = _mark;
37100
388k
        D(fprintf(stderr, "%*c%s _tmp_159[%d-%d]: %s failed!\n", p->level, ' ',
37101
388k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'and' inversion"));
37102
388k
    }
37103
0
    _res = NULL;
37104
390k
  done:
37105
390k
    p->level--;
37106
390k
    return _res;
37107
388k
}
37108
37109
// _tmp_160: slice | starred_expression
37110
static void *
37111
_tmp_160_rule(Parser *p)
37112
26.8k
{
37113
26.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37114
0
        _Pypegen_stack_overflow(p);
37115
0
    }
37116
26.8k
    if (p->error_indicator) {
37117
0
        p->level--;
37118
0
        return NULL;
37119
0
    }
37120
26.8k
    void * _res = NULL;
37121
26.8k
    int _mark = p->mark;
37122
26.8k
    { // slice
37123
26.8k
        if (p->error_indicator) {
37124
0
            p->level--;
37125
0
            return NULL;
37126
0
        }
37127
26.8k
        D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice"));
37128
26.8k
        expr_ty slice_var;
37129
26.8k
        if (
37130
26.8k
            (slice_var = slice_rule(p))  // slice
37131
26.8k
        )
37132
22.8k
        {
37133
22.8k
            D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice"));
37134
22.8k
            _res = slice_var;
37135
22.8k
            goto done;
37136
22.8k
        }
37137
3.95k
        p->mark = _mark;
37138
3.95k
        D(fprintf(stderr, "%*c%s _tmp_160[%d-%d]: %s failed!\n", p->level, ' ',
37139
3.95k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice"));
37140
3.95k
    }
37141
0
    { // starred_expression
37142
3.95k
        if (p->error_indicator) {
37143
211
            p->level--;
37144
211
            return NULL;
37145
211
        }
37146
3.73k
        D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
37147
3.73k
        expr_ty starred_expression_var;
37148
3.73k
        if (
37149
3.73k
            (starred_expression_var = starred_expression_rule(p))  // starred_expression
37150
3.73k
        )
37151
550
        {
37152
550
            D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
37153
550
            _res = starred_expression_var;
37154
550
            goto done;
37155
550
        }
37156
3.18k
        p->mark = _mark;
37157
3.18k
        D(fprintf(stderr, "%*c%s _tmp_160[%d-%d]: %s failed!\n", p->level, ' ',
37158
3.18k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
37159
3.18k
    }
37160
0
    _res = NULL;
37161
26.6k
  done:
37162
26.6k
    p->level--;
37163
26.6k
    return _res;
37164
3.18k
}
37165
37166
// _tmp_161: fstring | string | tstring
37167
static void *
37168
_tmp_161_rule(Parser *p)
37169
185k
{
37170
185k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37171
1
        _Pypegen_stack_overflow(p);
37172
1
    }
37173
185k
    if (p->error_indicator) {
37174
8
        p->level--;
37175
8
        return NULL;
37176
8
    }
37177
185k
    void * _res = NULL;
37178
185k
    int _mark = p->mark;
37179
185k
    { // fstring
37180
185k
        if (p->error_indicator) {
37181
0
            p->level--;
37182
0
            return NULL;
37183
0
        }
37184
185k
        D(fprintf(stderr, "%*c> _tmp_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring"));
37185
185k
        expr_ty fstring_var;
37186
185k
        if (
37187
185k
            (fstring_var = fstring_rule(p))  // fstring
37188
185k
        )
37189
13.1k
        {
37190
13.1k
            D(fprintf(stderr, "%*c+ _tmp_161[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "fstring"));
37191
13.1k
            _res = fstring_var;
37192
13.1k
            goto done;
37193
13.1k
        }
37194
172k
        p->mark = _mark;
37195
172k
        D(fprintf(stderr, "%*c%s _tmp_161[%d-%d]: %s failed!\n", p->level, ' ',
37196
172k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring"));
37197
172k
    }
37198
0
    { // string
37199
172k
        if (p->error_indicator) {
37200
2.51k
            p->level--;
37201
2.51k
            return NULL;
37202
2.51k
        }
37203
169k
        D(fprintf(stderr, "%*c> _tmp_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "string"));
37204
169k
        expr_ty string_var;
37205
169k
        if (
37206
169k
            (string_var = string_rule(p))  // string
37207
169k
        )
37208
64.5k
        {
37209
64.5k
            D(fprintf(stderr, "%*c+ _tmp_161[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "string"));
37210
64.5k
            _res = string_var;
37211
64.5k
            goto done;
37212
64.5k
        }
37213
104k
        p->mark = _mark;
37214
104k
        D(fprintf(stderr, "%*c%s _tmp_161[%d-%d]: %s failed!\n", p->level, ' ',
37215
104k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "string"));
37216
104k
    }
37217
0
    { // tstring
37218
104k
        if (p->error_indicator) {
37219
373
            p->level--;
37220
373
            return NULL;
37221
373
        }
37222
104k
        D(fprintf(stderr, "%*c> _tmp_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring"));
37223
104k
        expr_ty tstring_var;
37224
104k
        if (
37225
104k
            (tstring_var = tstring_rule(p))  // tstring
37226
104k
        )
37227
2.70k
        {
37228
2.70k
            D(fprintf(stderr, "%*c+ _tmp_161[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tstring"));
37229
2.70k
            _res = tstring_var;
37230
2.70k
            goto done;
37231
2.70k
        }
37232
101k
        p->mark = _mark;
37233
101k
        D(fprintf(stderr, "%*c%s _tmp_161[%d-%d]: %s failed!\n", p->level, ' ',
37234
101k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring"));
37235
101k
    }
37236
0
    _res = NULL;
37237
182k
  done:
37238
182k
    p->level--;
37239
182k
    return _res;
37240
101k
}
37241
37242
// _tmp_162: 'if' disjunction
37243
static void *
37244
_tmp_162_rule(Parser *p)
37245
16.7k
{
37246
16.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37247
0
        _Pypegen_stack_overflow(p);
37248
0
    }
37249
16.7k
    if (p->error_indicator) {
37250
0
        p->level--;
37251
0
        return NULL;
37252
0
    }
37253
16.7k
    void * _res = NULL;
37254
16.7k
    int _mark = p->mark;
37255
16.7k
    { // 'if' disjunction
37256
16.7k
        if (p->error_indicator) {
37257
0
            p->level--;
37258
0
            return NULL;
37259
0
        }
37260
16.7k
        D(fprintf(stderr, "%*c> _tmp_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
37261
16.7k
        Token * _keyword;
37262
16.7k
        expr_ty z;
37263
16.7k
        if (
37264
16.7k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
37265
16.7k
            &&
37266
16.7k
            (z = disjunction_rule(p))  // disjunction
37267
16.7k
        )
37268
5.65k
        {
37269
5.65k
            D(fprintf(stderr, "%*c+ _tmp_162[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
37270
5.65k
            _res = z;
37271
5.65k
            if (_res == NULL && PyErr_Occurred()) {
37272
0
                p->error_indicator = 1;
37273
0
                p->level--;
37274
0
                return NULL;
37275
0
            }
37276
5.65k
            goto done;
37277
5.65k
        }
37278
11.1k
        p->mark = _mark;
37279
11.1k
        D(fprintf(stderr, "%*c%s _tmp_162[%d-%d]: %s failed!\n", p->level, ' ',
37280
11.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction"));
37281
11.1k
    }
37282
0
    _res = NULL;
37283
16.7k
  done:
37284
16.7k
    p->level--;
37285
16.7k
    return _res;
37286
11.1k
}
37287
37288
// _tmp_163: starred_expression | (assignment_expression | expression !':=') !'='
37289
static void *
37290
_tmp_163_rule(Parser *p)
37291
99.1k
{
37292
99.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37293
0
        _Pypegen_stack_overflow(p);
37294
0
    }
37295
99.1k
    if (p->error_indicator) {
37296
0
        p->level--;
37297
0
        return NULL;
37298
0
    }
37299
99.1k
    void * _res = NULL;
37300
99.1k
    int _mark = p->mark;
37301
99.1k
    { // starred_expression
37302
99.1k
        if (p->error_indicator) {
37303
0
            p->level--;
37304
0
            return NULL;
37305
0
        }
37306
99.1k
        D(fprintf(stderr, "%*c> _tmp_163[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
37307
99.1k
        expr_ty starred_expression_var;
37308
99.1k
        if (
37309
99.1k
            (starred_expression_var = starred_expression_rule(p))  // starred_expression
37310
99.1k
        )
37311
6.04k
        {
37312
6.04k
            D(fprintf(stderr, "%*c+ _tmp_163[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
37313
6.04k
            _res = starred_expression_var;
37314
6.04k
            goto done;
37315
6.04k
        }
37316
93.1k
        p->mark = _mark;
37317
93.1k
        D(fprintf(stderr, "%*c%s _tmp_163[%d-%d]: %s failed!\n", p->level, ' ',
37318
93.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
37319
93.1k
    }
37320
0
    { // (assignment_expression | expression !':=') !'='
37321
93.1k
        if (p->error_indicator) {
37322
298
            p->level--;
37323
298
            return NULL;
37324
298
        }
37325
92.8k
        D(fprintf(stderr, "%*c> _tmp_163[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
37326
92.8k
        void *_tmp_86_var;
37327
92.8k
        if (
37328
92.8k
            (_tmp_86_var = _tmp_86_rule(p))  // assignment_expression | expression !':='
37329
92.8k
            &&
37330
92.8k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22)  // token='='
37331
92.8k
        )
37332
43.2k
        {
37333
43.2k
            D(fprintf(stderr, "%*c+ _tmp_163[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
37334
43.2k
            _res = _tmp_86_var;
37335
43.2k
            goto done;
37336
43.2k
        }
37337
49.6k
        p->mark = _mark;
37338
49.6k
        D(fprintf(stderr, "%*c%s _tmp_163[%d-%d]: %s failed!\n", p->level, ' ',
37339
49.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
37340
49.6k
    }
37341
0
    _res = NULL;
37342
98.8k
  done:
37343
98.8k
    p->level--;
37344
98.8k
    return _res;
37345
49.6k
}
37346
37347
// _tmp_164: ',' star_target
37348
static void *
37349
_tmp_164_rule(Parser *p)
37350
28.4k
{
37351
28.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37352
0
        _Pypegen_stack_overflow(p);
37353
0
    }
37354
28.4k
    if (p->error_indicator) {
37355
0
        p->level--;
37356
0
        return NULL;
37357
0
    }
37358
28.4k
    void * _res = NULL;
37359
28.4k
    int _mark = p->mark;
37360
28.4k
    { // ',' star_target
37361
28.4k
        if (p->error_indicator) {
37362
0
            p->level--;
37363
0
            return NULL;
37364
0
        }
37365
28.4k
        D(fprintf(stderr, "%*c> _tmp_164[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
37366
28.4k
        Token * _literal;
37367
28.4k
        expr_ty c;
37368
28.4k
        if (
37369
28.4k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
37370
28.4k
            &&
37371
28.4k
            (c = star_target_rule(p))  // star_target
37372
28.4k
        )
37373
10.3k
        {
37374
10.3k
            D(fprintf(stderr, "%*c+ _tmp_164[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target"));
37375
10.3k
            _res = c;
37376
10.3k
            if (_res == NULL && PyErr_Occurred()) {
37377
0
                p->error_indicator = 1;
37378
0
                p->level--;
37379
0
                return NULL;
37380
0
            }
37381
10.3k
            goto done;
37382
10.3k
        }
37383
18.1k
        p->mark = _mark;
37384
18.1k
        D(fprintf(stderr, "%*c%s _tmp_164[%d-%d]: %s failed!\n", p->level, ' ',
37385
18.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
37386
18.1k
    }
37387
0
    _res = NULL;
37388
28.4k
  done:
37389
28.4k
    p->level--;
37390
28.4k
    return _res;
37391
18.1k
}
37392
37393
// _tmp_165:
37394
//     | ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs
37395
static void *
37396
_tmp_165_rule(Parser *p)
37397
7.93k
{
37398
7.93k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37399
0
        _Pypegen_stack_overflow(p);
37400
0
    }
37401
7.93k
    if (p->error_indicator) {
37402
0
        p->level--;
37403
0
        return NULL;
37404
0
    }
37405
7.93k
    void * _res = NULL;
37406
7.93k
    int _mark = p->mark;
37407
7.93k
    { // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs
37408
7.93k
        if (p->error_indicator) {
37409
0
            p->level--;
37410
0
            return NULL;
37411
0
        }
37412
7.93k
        D(fprintf(stderr, "%*c> _tmp_165[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs"));
37413
7.93k
        asdl_seq * _gather_88_var;
37414
7.93k
        Token * _literal;
37415
7.93k
        asdl_seq* kwargs_var;
37416
7.93k
        if (
37417
7.93k
            (_gather_88_var = _gather_88_rule(p))  // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+
37418
7.93k
            &&
37419
7.93k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
37420
7.93k
            &&
37421
7.93k
            (kwargs_var = kwargs_rule(p))  // kwargs
37422
7.93k
        )
37423
331
        {
37424
331
            D(fprintf(stderr, "%*c+ _tmp_165[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs"));
37425
331
            _res = _PyPegen_dummy_name(p, _gather_88_var, _literal, kwargs_var);
37426
331
            goto done;
37427
331
        }
37428
7.60k
        p->mark = _mark;
37429
7.60k
        D(fprintf(stderr, "%*c%s _tmp_165[%d-%d]: %s failed!\n", p->level, ' ',
37430
7.60k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs"));
37431
7.60k
    }
37432
0
    _res = NULL;
37433
7.93k
  done:
37434
7.93k
    p->level--;
37435
7.93k
    return _res;
37436
7.60k
}
37437
37438
// _tmp_166: starred_expression !'='
37439
static void *
37440
_tmp_166_rule(Parser *p)
37441
3.14k
{
37442
3.14k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37443
0
        _Pypegen_stack_overflow(p);
37444
0
    }
37445
3.14k
    if (p->error_indicator) {
37446
0
        p->level--;
37447
0
        return NULL;
37448
0
    }
37449
3.14k
    void * _res = NULL;
37450
3.14k
    int _mark = p->mark;
37451
3.14k
    { // starred_expression !'='
37452
3.14k
        if (p->error_indicator) {
37453
0
            p->level--;
37454
0
            return NULL;
37455
0
        }
37456
3.14k
        D(fprintf(stderr, "%*c> _tmp_166[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression !'='"));
37457
3.14k
        expr_ty starred_expression_var;
37458
3.14k
        if (
37459
3.14k
            (starred_expression_var = starred_expression_rule(p))  // starred_expression
37460
3.14k
            &&
37461
3.14k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22)  // token='='
37462
3.14k
        )
37463
1.68k
        {
37464
1.68k
            D(fprintf(stderr, "%*c+ _tmp_166[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression !'='"));
37465
1.68k
            _res = starred_expression_var;
37466
1.68k
            goto done;
37467
1.68k
        }
37468
1.45k
        p->mark = _mark;
37469
1.45k
        D(fprintf(stderr, "%*c%s _tmp_166[%d-%d]: %s failed!\n", p->level, ' ',
37470
1.45k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression !'='"));
37471
1.45k
    }
37472
0
    _res = NULL;
37473
3.14k
  done:
37474
3.14k
    p->level--;
37475
3.14k
    return _res;
37476
1.45k
}
37477
37478
// _tmp_167: !STRING expression_without_invalid
37479
static void *
37480
_tmp_167_rule(Parser *p)
37481
5.54k
{
37482
5.54k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37483
1
        _Pypegen_stack_overflow(p);
37484
1
    }
37485
5.54k
    if (p->error_indicator) {
37486
1
        p->level--;
37487
1
        return NULL;
37488
1
    }
37489
5.54k
    void * _res = NULL;
37490
5.54k
    int _mark = p->mark;
37491
5.54k
    { // !STRING expression_without_invalid
37492
5.54k
        if (p->error_indicator) {
37493
0
            p->level--;
37494
0
            return NULL;
37495
0
        }
37496
5.54k
        D(fprintf(stderr, "%*c> _tmp_167[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!STRING expression_without_invalid"));
37497
5.54k
        expr_ty expression_without_invalid_var;
37498
5.54k
        if (
37499
5.54k
            _PyPegen_lookahead(0, _PyPegen_string_token, p)
37500
5.54k
            &&
37501
5.54k
            (expression_without_invalid_var = expression_without_invalid_rule(p))  // expression_without_invalid
37502
5.54k
        )
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.55k
        p->mark = _mark;
37509
3.55k
        D(fprintf(stderr, "%*c%s _tmp_167[%d-%d]: %s failed!\n", p->level, ' ',
37510
3.55k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!STRING expression_without_invalid"));
37511
3.55k
    }
37512
0
    _res = NULL;
37513
5.54k
  done:
37514
5.54k
    p->level--;
37515
5.54k
    return _res;
37516
3.55k
}
37517
37518
// _tmp_168: ')' | '**'
37519
static void *
37520
_tmp_168_rule(Parser *p)
37521
564
{
37522
564
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37523
0
        _Pypegen_stack_overflow(p);
37524
0
    }
37525
564
    if (p->error_indicator) {
37526
0
        p->level--;
37527
0
        return NULL;
37528
0
    }
37529
564
    void * _res = NULL;
37530
564
    int _mark = p->mark;
37531
564
    { // ')'
37532
564
        if (p->error_indicator) {
37533
0
            p->level--;
37534
0
            return NULL;
37535
0
        }
37536
564
        D(fprintf(stderr, "%*c> _tmp_168[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
37537
564
        Token * _literal;
37538
564
        if (
37539
564
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
37540
564
        )
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
563
        p->mark = _mark;
37547
563
        D(fprintf(stderr, "%*c%s _tmp_168[%d-%d]: %s failed!\n", p->level, ' ',
37548
563
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
37549
563
    }
37550
0
    { // '**'
37551
563
        if (p->error_indicator) {
37552
0
            p->level--;
37553
0
            return NULL;
37554
0
        }
37555
563
        D(fprintf(stderr, "%*c> _tmp_168[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
37556
563
        Token * _literal;
37557
563
        if (
37558
563
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
37559
563
        )
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
562
        p->mark = _mark;
37566
562
        D(fprintf(stderr, "%*c%s _tmp_168[%d-%d]: %s failed!\n", p->level, ' ',
37567
562
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
37568
562
    }
37569
0
    _res = NULL;
37570
564
  done:
37571
564
    p->level--;
37572
564
    return _res;
37573
562
}
37574
37575
// _tmp_169: ':' | '**'
37576
static void *
37577
_tmp_169_rule(Parser *p)
37578
932
{
37579
932
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37580
0
        _Pypegen_stack_overflow(p);
37581
0
    }
37582
932
    if (p->error_indicator) {
37583
0
        p->level--;
37584
0
        return NULL;
37585
0
    }
37586
932
    void * _res = NULL;
37587
932
    int _mark = p->mark;
37588
932
    { // ':'
37589
932
        if (p->error_indicator) {
37590
0
            p->level--;
37591
0
            return NULL;
37592
0
        }
37593
932
        D(fprintf(stderr, "%*c> _tmp_169[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
37594
932
        Token * _literal;
37595
932
        if (
37596
932
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
37597
932
        )
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
931
        p->mark = _mark;
37604
931
        D(fprintf(stderr, "%*c%s _tmp_169[%d-%d]: %s failed!\n", p->level, ' ',
37605
931
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
37606
931
    }
37607
0
    { // '**'
37608
931
        if (p->error_indicator) {
37609
0
            p->level--;
37610
0
            return NULL;
37611
0
        }
37612
931
        D(fprintf(stderr, "%*c> _tmp_169[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
37613
931
        Token * _literal;
37614
931
        if (
37615
931
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
37616
931
        )
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
930
        p->mark = _mark;
37623
930
        D(fprintf(stderr, "%*c%s _tmp_169[%d-%d]: %s failed!\n", p->level, ' ',
37624
930
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
37625
930
    }
37626
0
    _res = NULL;
37627
932
  done:
37628
932
    p->level--;
37629
932
    return _res;
37630
930
}
37631
37632
// _loop0_170: (',' bitwise_or)
37633
static asdl_seq *
37634
_loop0_170_rule(Parser *p)
37635
477
{
37636
477
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37637
0
        _Pypegen_stack_overflow(p);
37638
0
    }
37639
477
    if (p->error_indicator) {
37640
0
        p->level--;
37641
0
        return NULL;
37642
0
    }
37643
477
    void *_res = NULL;
37644
477
    int _mark = p->mark;
37645
477
    void **_children = PyMem_Malloc(sizeof(void *));
37646
477
    if (!_children) {
37647
0
        p->error_indicator = 1;
37648
0
        PyErr_NoMemory();
37649
0
        p->level--;
37650
0
        return NULL;
37651
0
    }
37652
477
    Py_ssize_t _children_capacity = 1;
37653
477
    Py_ssize_t _n = 0;
37654
477
    { // (',' bitwise_or)
37655
477
        if (p->error_indicator) {
37656
0
            p->level--;
37657
0
            return NULL;
37658
0
        }
37659
477
        D(fprintf(stderr, "%*c> _loop0_170[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' bitwise_or)"));
37660
477
        void *_tmp_174_var;
37661
477
        while (
37662
1.48k
            (_tmp_174_var = _tmp_174_rule(p))  // ',' bitwise_or
37663
477
        )
37664
1.00k
        {
37665
1.00k
            _res = _tmp_174_var;
37666
1.00k
            if (_n == _children_capacity) {
37667
357
                _children_capacity *= 2;
37668
357
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
37669
357
                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
357
                _children = _new_children;
37677
357
            }
37678
1.00k
            _children[_n++] = _res;
37679
1.00k
            _mark = p->mark;
37680
1.00k
        }
37681
477
        p->mark = _mark;
37682
477
        D(fprintf(stderr, "%*c%s _loop0_170[%d-%d]: %s failed!\n", p->level, ' ',
37683
477
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' bitwise_or)"));
37684
477
    }
37685
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
37686
477
    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.48k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
37694
477
    PyMem_Free(_children);
37695
477
    p->level--;
37696
477
    return _seq;
37697
477
}
37698
37699
// _tmp_171: ',' | ')' | NEWLINE
37700
static void *
37701
_tmp_171_rule(Parser *p)
37702
440
{
37703
440
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37704
0
        _Pypegen_stack_overflow(p);
37705
0
    }
37706
440
    if (p->error_indicator) {
37707
0
        p->level--;
37708
0
        return NULL;
37709
0
    }
37710
440
    void * _res = NULL;
37711
440
    int _mark = p->mark;
37712
440
    { // ','
37713
440
        if (p->error_indicator) {
37714
0
            p->level--;
37715
0
            return NULL;
37716
0
        }
37717
440
        D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
37718
440
        Token * _literal;
37719
440
        if (
37720
440
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
37721
440
        )
37722
97
        {
37723
97
            D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
37724
97
            _res = _literal;
37725
97
            goto done;
37726
97
        }
37727
343
        p->mark = _mark;
37728
343
        D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ',
37729
343
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
37730
343
    }
37731
0
    { // ')'
37732
343
        if (p->error_indicator) {
37733
1
            p->level--;
37734
1
            return NULL;
37735
1
        }
37736
342
        D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
37737
342
        Token * _literal;
37738
342
        if (
37739
342
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
37740
342
        )
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
332
        p->mark = _mark;
37747
332
        D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ',
37748
332
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
37749
332
    }
37750
0
    { // NEWLINE
37751
332
        if (p->error_indicator) {
37752
0
            p->level--;
37753
0
            return NULL;
37754
0
        }
37755
332
        D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
37756
332
        Token * newline_var;
37757
332
        if (
37758
332
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
37759
332
        )
37760
313
        {
37761
313
            D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
37762
313
            _res = newline_var;
37763
313
            goto done;
37764
313
        }
37765
19
        p->mark = _mark;
37766
19
        D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ',
37767
19
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
37768
19
    }
37769
0
    _res = NULL;
37770
439
  done:
37771
439
    p->level--;
37772
439
    return _res;
37773
19
}
37774
37775
// _tmp_172: expression ['as' star_target]
37776
static void *
37777
_tmp_172_rule(Parser *p)
37778
4.93k
{
37779
4.93k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37780
0
        _Pypegen_stack_overflow(p);
37781
0
    }
37782
4.93k
    if (p->error_indicator) {
37783
0
        p->level--;
37784
0
        return NULL;
37785
0
    }
37786
4.93k
    void * _res = NULL;
37787
4.93k
    int _mark = p->mark;
37788
4.93k
    { // expression ['as' star_target]
37789
4.93k
        if (p->error_indicator) {
37790
0
            p->level--;
37791
0
            return NULL;
37792
0
        }
37793
4.93k
        D(fprintf(stderr, "%*c> _tmp_172[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
37794
4.93k
        void *_opt_var;
37795
4.93k
        UNUSED(_opt_var); // Silence compiler warnings
37796
4.93k
        expr_ty expression_var;
37797
4.93k
        if (
37798
4.93k
            (expression_var = expression_rule(p))  // expression
37799
4.93k
            &&
37800
4.93k
            (_opt_var = _tmp_175_rule(p), !p->error_indicator)  // ['as' star_target]
37801
4.93k
        )
37802
4.50k
        {
37803
4.50k
            D(fprintf(stderr, "%*c+ _tmp_172[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
37804
4.50k
            _res = _PyPegen_dummy_name(p, expression_var, _opt_var);
37805
4.50k
            goto done;
37806
4.50k
        }
37807
427
        p->mark = _mark;
37808
427
        D(fprintf(stderr, "%*c%s _tmp_172[%d-%d]: %s failed!\n", p->level, ' ',
37809
427
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]"));
37810
427
    }
37811
0
    _res = NULL;
37812
4.93k
  done:
37813
4.93k
    p->level--;
37814
4.93k
    return _res;
37815
427
}
37816
37817
// _tmp_173: expressions ['as' star_target]
37818
static void *
37819
_tmp_173_rule(Parser *p)
37820
3.29k
{
37821
3.29k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37822
0
        _Pypegen_stack_overflow(p);
37823
0
    }
37824
3.29k
    if (p->error_indicator) {
37825
0
        p->level--;
37826
0
        return NULL;
37827
0
    }
37828
3.29k
    void * _res = NULL;
37829
3.29k
    int _mark = p->mark;
37830
3.29k
    { // expressions ['as' star_target]
37831
3.29k
        if (p->error_indicator) {
37832
0
            p->level--;
37833
0
            return NULL;
37834
0
        }
37835
3.29k
        D(fprintf(stderr, "%*c> _tmp_173[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
37836
3.29k
        void *_opt_var;
37837
3.29k
        UNUSED(_opt_var); // Silence compiler warnings
37838
3.29k
        expr_ty expressions_var;
37839
3.29k
        if (
37840
3.29k
            (expressions_var = expressions_rule(p))  // expressions
37841
3.29k
            &&
37842
3.29k
            (_opt_var = _tmp_175_rule(p), !p->error_indicator)  // ['as' star_target]
37843
3.29k
        )
37844
2.71k
        {
37845
2.71k
            D(fprintf(stderr, "%*c+ _tmp_173[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
37846
2.71k
            _res = _PyPegen_dummy_name(p, expressions_var, _opt_var);
37847
2.71k
            goto done;
37848
2.71k
        }
37849
580
        p->mark = _mark;
37850
580
        D(fprintf(stderr, "%*c%s _tmp_173[%d-%d]: %s failed!\n", p->level, ' ',
37851
580
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]"));
37852
580
    }
37853
0
    _res = NULL;
37854
3.29k
  done:
37855
3.29k
    p->level--;
37856
3.29k
    return _res;
37857
580
}
37858
37859
// _tmp_174: ',' bitwise_or
37860
static void *
37861
_tmp_174_rule(Parser *p)
37862
1.48k
{
37863
1.48k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37864
0
        _Pypegen_stack_overflow(p);
37865
0
    }
37866
1.48k
    if (p->error_indicator) {
37867
0
        p->level--;
37868
0
        return NULL;
37869
0
    }
37870
1.48k
    void * _res = NULL;
37871
1.48k
    int _mark = p->mark;
37872
1.48k
    { // ',' bitwise_or
37873
1.48k
        if (p->error_indicator) {
37874
0
            p->level--;
37875
0
            return NULL;
37876
0
        }
37877
1.48k
        D(fprintf(stderr, "%*c> _tmp_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' bitwise_or"));
37878
1.48k
        Token * _literal;
37879
1.48k
        expr_ty bitwise_or_var;
37880
1.48k
        if (
37881
1.48k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
37882
1.48k
            &&
37883
1.48k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
37884
1.48k
        )
37885
1.00k
        {
37886
1.00k
            D(fprintf(stderr, "%*c+ _tmp_174[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' bitwise_or"));
37887
1.00k
            _res = _PyPegen_dummy_name(p, _literal, bitwise_or_var);
37888
1.00k
            goto done;
37889
1.00k
        }
37890
477
        p->mark = _mark;
37891
477
        D(fprintf(stderr, "%*c%s _tmp_174[%d-%d]: %s failed!\n", p->level, ' ',
37892
477
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' bitwise_or"));
37893
477
    }
37894
0
    _res = NULL;
37895
1.48k
  done:
37896
1.48k
    p->level--;
37897
1.48k
    return _res;
37898
477
}
37899
37900
// _tmp_175: 'as' star_target
37901
static void *
37902
_tmp_175_rule(Parser *p)
37903
7.22k
{
37904
7.22k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37905
0
        _Pypegen_stack_overflow(p);
37906
0
    }
37907
7.22k
    if (p->error_indicator) {
37908
0
        p->level--;
37909
0
        return NULL;
37910
0
    }
37911
7.22k
    void * _res = NULL;
37912
7.22k
    int _mark = p->mark;
37913
7.22k
    { // 'as' star_target
37914
7.22k
        if (p->error_indicator) {
37915
0
            p->level--;
37916
0
            return NULL;
37917
0
        }
37918
7.22k
        D(fprintf(stderr, "%*c> _tmp_175[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
37919
7.22k
        Token * _keyword;
37920
7.22k
        expr_ty star_target_var;
37921
7.22k
        if (
37922
7.22k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
37923
7.22k
            &&
37924
7.22k
            (star_target_var = star_target_rule(p))  // star_target
37925
7.22k
        )
37926
814
        {
37927
814
            D(fprintf(stderr, "%*c+ _tmp_175[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
37928
814
            _res = _PyPegen_dummy_name(p, _keyword, star_target_var);
37929
814
            goto done;
37930
814
        }
37931
6.41k
        p->mark = _mark;
37932
6.41k
        D(fprintf(stderr, "%*c%s _tmp_175[%d-%d]: %s failed!\n", p->level, ' ',
37933
6.41k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target"));
37934
6.41k
    }
37935
0
    _res = NULL;
37936
7.22k
  done:
37937
7.22k
    p->level--;
37938
7.22k
    return _res;
37939
6.41k
}
37940
37941
void *
37942
_PyPegen_parse(Parser *p)
37943
34.5k
{
37944
    // Initialize keywords
37945
34.5k
    p->keywords = reserved_keywords;
37946
34.5k
    p->n_keyword_lists = n_keyword_lists;
37947
34.5k
    p->soft_keywords = soft_keywords;
37948
37949
    // Run parser
37950
34.5k
    void *result = NULL;
37951
34.5k
    if (p->start_rule == Py_file_input) {
37952
34.5k
        result = file_rule(p);
37953
34.5k
    } 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
34.5k
    return result;
37962
34.5k
}