Coverage Report

Created: 2025-07-18 06:10

/src/cpython3/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
381M
#  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
737k
#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
150k
#define dotted_name_type 1032  // Left-recursive
120
195k
#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
384k
#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
164k
#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
125k
#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
53.1k
#define type_param_type 1104
192
#define type_param_bound_type 1105
193
#define type_param_default_type 1106
194
#define type_param_starred_default_type 1107
195
#define expressions_type 1108
196
4.28M
#define expression_type 1109
197
#define yield_expr_type 1110
198
#define star_expressions_type 1111
199
2.76M
#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
5.10M
#define disjunction_type 1117
205
4.04M
#define conjunction_type 1118
206
4.11M
#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
8.04M
#define bitwise_or_type 1132  // Left-recursive
220
7.73M
#define bitwise_xor_type 1133  // Left-recursive
221
7.87M
#define bitwise_and_type 1134  // Left-recursive
222
10.7M
#define shift_expr_type 1135  // Left-recursive
223
11.9M
#define sum_type 1136  // Left-recursive
224
23.6M
#define term_type 1137  // Left-recursive
225
7.50M
#define factor_type 1138
226
#define power_type 1139
227
7.06M
#define await_primary_type 1140
228
24.1M
#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
255k
#define tstring_type 1168
256
#define string_type 1169
257
332k
#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
148k
#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
1.59M
#define star_target_type 1193
281
1.20M
#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
5.79M
#define t_primary_type 1198  // Left-recursive
286
#define t_lookahead_type 1199
287
#define del_targets_type 1200
288
53.7k
#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
427k
#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
20.6k
{
980
20.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
981
0
        _Pypegen_stack_overflow(p);
982
0
    }
983
20.6k
    if (p->error_indicator) {
984
1.30k
        p->level--;
985
1.30k
        return NULL;
986
1.30k
    }
987
19.3k
    mod_ty _res = NULL;
988
19.3k
    int _mark = p->mark;
989
19.3k
    { // statements? $
990
19.3k
        if (p->error_indicator) {
991
0
            p->level--;
992
0
            return NULL;
993
0
        }
994
19.3k
        D(fprintf(stderr, "%*c> file[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statements? $"));
995
19.3k
        void *a;
996
19.3k
        Token * endmarker_var;
997
19.3k
        if (
998
19.3k
            (a = statements_rule(p), !p->error_indicator)  // statements?
999
19.3k
            &&
1000
19.3k
            (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1001
19.3k
        )
1002
9.33k
        {
1003
9.33k
            D(fprintf(stderr, "%*c+ file[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statements? $"));
1004
9.33k
            _res = _PyPegen_make_module ( p , a );
1005
9.33k
            if (_res == NULL && PyErr_Occurred()) {
1006
0
                p->error_indicator = 1;
1007
0
                p->level--;
1008
0
                return NULL;
1009
0
            }
1010
9.33k
            goto done;
1011
9.33k
        }
1012
9.99k
        p->mark = _mark;
1013
9.99k
        D(fprintf(stderr, "%*c%s file[%d-%d]: %s failed!\n", p->level, ' ',
1014
9.99k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statements? $"));
1015
9.99k
    }
1016
0
    _res = NULL;
1017
19.3k
  done:
1018
19.3k
    p->level--;
1019
19.3k
    return _res;
1020
9.99k
}
1021
1022
// interactive: statement_newline
1023
static mod_ty
1024
interactive_rule(Parser *p)
1025
10.9k
{
1026
10.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1027
0
        _Pypegen_stack_overflow(p);
1028
0
    }
1029
10.9k
    if (p->error_indicator) {
1030
881
        p->level--;
1031
881
        return NULL;
1032
881
    }
1033
10.0k
    mod_ty _res = NULL;
1034
10.0k
    int _mark = p->mark;
1035
10.0k
    { // statement_newline
1036
10.0k
        if (p->error_indicator) {
1037
0
            p->level--;
1038
0
            return NULL;
1039
0
        }
1040
10.0k
        D(fprintf(stderr, "%*c> interactive[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement_newline"));
1041
10.0k
        asdl_stmt_seq* a;
1042
10.0k
        if (
1043
10.0k
            (a = statement_newline_rule(p))  // statement_newline
1044
10.0k
        )
1045
3.84k
        {
1046
3.84k
            D(fprintf(stderr, "%*c+ interactive[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statement_newline"));
1047
3.84k
            _res = _PyAST_Interactive ( a , p -> arena );
1048
3.84k
            if (_res == NULL && PyErr_Occurred()) {
1049
0
                p->error_indicator = 1;
1050
0
                p->level--;
1051
0
                return NULL;
1052
0
            }
1053
3.84k
            goto done;
1054
3.84k
        }
1055
6.23k
        p->mark = _mark;
1056
6.23k
        D(fprintf(stderr, "%*c%s interactive[%d-%d]: %s failed!\n", p->level, ' ',
1057
6.23k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement_newline"));
1058
6.23k
    }
1059
0
    _res = NULL;
1060
10.0k
  done:
1061
10.0k
    p->level--;
1062
10.0k
    return _res;
1063
6.23k
}
1064
1065
// eval: expressions NEWLINE* $
1066
static mod_ty
1067
eval_rule(Parser *p)
1068
5.99k
{
1069
5.99k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1070
0
        _Pypegen_stack_overflow(p);
1071
0
    }
1072
5.99k
    if (p->error_indicator) {
1073
636
        p->level--;
1074
636
        return NULL;
1075
636
    }
1076
5.36k
    mod_ty _res = NULL;
1077
5.36k
    int _mark = p->mark;
1078
5.36k
    { // expressions NEWLINE* $
1079
5.36k
        if (p->error_indicator) {
1080
0
            p->level--;
1081
0
            return NULL;
1082
0
        }
1083
5.36k
        D(fprintf(stderr, "%*c> eval[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions NEWLINE* $"));
1084
5.36k
        asdl_seq * _loop0_1_var;
1085
5.36k
        expr_ty a;
1086
5.36k
        Token * endmarker_var;
1087
5.36k
        if (
1088
5.36k
            (a = expressions_rule(p))  // expressions
1089
5.36k
            &&
1090
5.36k
            (_loop0_1_var = _loop0_1_rule(p))  // NEWLINE*
1091
5.36k
            &&
1092
5.36k
            (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1093
5.36k
        )
1094
2.05k
        {
1095
2.05k
            D(fprintf(stderr, "%*c+ eval[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions NEWLINE* $"));
1096
2.05k
            _res = _PyAST_Expression ( a , p -> arena );
1097
2.05k
            if (_res == NULL && PyErr_Occurred()) {
1098
0
                p->error_indicator = 1;
1099
0
                p->level--;
1100
0
                return NULL;
1101
0
            }
1102
2.05k
            goto done;
1103
2.05k
        }
1104
3.30k
        p->mark = _mark;
1105
3.30k
        D(fprintf(stderr, "%*c%s eval[%d-%d]: %s failed!\n", p->level, ' ',
1106
3.30k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions NEWLINE* $"));
1107
3.30k
    }
1108
0
    _res = NULL;
1109
5.36k
  done:
1110
5.36k
    p->level--;
1111
5.36k
    return _res;
1112
3.30k
}
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
43.8k
{
1179
43.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1180
0
        _Pypegen_stack_overflow(p);
1181
0
    }
1182
43.8k
    if (p->error_indicator) {
1183
0
        p->level--;
1184
0
        return NULL;
1185
0
    }
1186
43.8k
    asdl_stmt_seq* _res = NULL;
1187
43.8k
    int _mark = p->mark;
1188
43.8k
    { // statement+
1189
43.8k
        if (p->error_indicator) {
1190
0
            p->level--;
1191
0
            return NULL;
1192
0
        }
1193
43.8k
        D(fprintf(stderr, "%*c> statements[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement+"));
1194
43.8k
        asdl_seq * a;
1195
43.8k
        if (
1196
43.8k
            (a = _loop1_2_rule(p))  // statement+
1197
43.8k
        )
1198
34.6k
        {
1199
34.6k
            D(fprintf(stderr, "%*c+ statements[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statement+"));
1200
34.6k
            _res = _PyPegen_register_stmts ( p , ( asdl_stmt_seq* ) _PyPegen_seq_flatten ( p , a ) );
1201
34.6k
            if (_res == NULL && PyErr_Occurred()) {
1202
0
                p->error_indicator = 1;
1203
0
                p->level--;
1204
0
                return NULL;
1205
0
            }
1206
34.6k
            goto done;
1207
34.6k
        }
1208
9.22k
        p->mark = _mark;
1209
9.22k
        D(fprintf(stderr, "%*c%s statements[%d-%d]: %s failed!\n", p->level, ' ',
1210
9.22k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement+"));
1211
9.22k
    }
1212
0
    _res = NULL;
1213
43.8k
  done:
1214
43.8k
    p->level--;
1215
43.8k
    return _res;
1216
9.22k
}
1217
1218
// statement: compound_stmt | simple_stmts
1219
static asdl_stmt_seq*
1220
statement_rule(Parser *p)
1221
226k
{
1222
226k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1223
0
        _Pypegen_stack_overflow(p);
1224
0
    }
1225
226k
    if (p->error_indicator) {
1226
0
        p->level--;
1227
0
        return NULL;
1228
0
    }
1229
226k
    asdl_stmt_seq* _res = NULL;
1230
226k
    int _mark = p->mark;
1231
226k
    { // compound_stmt
1232
226k
        if (p->error_indicator) {
1233
0
            p->level--;
1234
0
            return NULL;
1235
0
        }
1236
226k
        D(fprintf(stderr, "%*c> statement[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1237
226k
        stmt_ty a;
1238
226k
        if (
1239
226k
            (a = compound_stmt_rule(p))  // compound_stmt
1240
226k
        )
1241
58.5k
        {
1242
58.5k
            D(fprintf(stderr, "%*c+ statement[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1243
58.5k
            _res = ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , a );
1244
58.5k
            if (_res == NULL && PyErr_Occurred()) {
1245
0
                p->error_indicator = 1;
1246
0
                p->level--;
1247
0
                return NULL;
1248
0
            }
1249
58.5k
            goto done;
1250
58.5k
        }
1251
167k
        p->mark = _mark;
1252
167k
        D(fprintf(stderr, "%*c%s statement[%d-%d]: %s failed!\n", p->level, ' ',
1253
167k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compound_stmt"));
1254
167k
    }
1255
0
    { // simple_stmts
1256
167k
        if (p->error_indicator) {
1257
1.23k
            p->level--;
1258
1.23k
            return NULL;
1259
1.23k
        }
1260
166k
        D(fprintf(stderr, "%*c> statement[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1261
166k
        asdl_stmt_seq* a;
1262
166k
        if (
1263
166k
            (a = (asdl_stmt_seq*)simple_stmts_rule(p))  // simple_stmts
1264
166k
        )
1265
124k
        {
1266
124k
            D(fprintf(stderr, "%*c+ statement[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1267
124k
            _res = a;
1268
124k
            if (_res == NULL && PyErr_Occurred()) {
1269
0
                p->error_indicator = 1;
1270
0
                p->level--;
1271
0
                return NULL;
1272
0
            }
1273
124k
            goto done;
1274
124k
        }
1275
42.6k
        p->mark = _mark;
1276
42.6k
        D(fprintf(stderr, "%*c%s statement[%d-%d]: %s failed!\n", p->level, ' ',
1277
42.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
1278
42.6k
    }
1279
0
    _res = NULL;
1280
225k
  done:
1281
225k
    p->level--;
1282
225k
    return _res;
1283
42.6k
}
1284
1285
// single_compound_stmt: compound_stmt
1286
static asdl_stmt_seq*
1287
single_compound_stmt_rule(Parser *p)
1288
9.86k
{
1289
9.86k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1290
0
        _Pypegen_stack_overflow(p);
1291
0
    }
1292
9.86k
    if (p->error_indicator) {
1293
0
        p->level--;
1294
0
        return NULL;
1295
0
    }
1296
9.86k
    asdl_stmt_seq* _res = NULL;
1297
9.86k
    int _mark = p->mark;
1298
9.86k
    { // compound_stmt
1299
9.86k
        if (p->error_indicator) {
1300
0
            p->level--;
1301
0
            return NULL;
1302
0
        }
1303
9.86k
        D(fprintf(stderr, "%*c> single_compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1304
9.86k
        stmt_ty a;
1305
9.86k
        if (
1306
9.86k
            (a = compound_stmt_rule(p))  // compound_stmt
1307
9.86k
        )
1308
746
        {
1309
746
            D(fprintf(stderr, "%*c+ single_compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1310
746
            _res = _PyPegen_register_stmts ( p , ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , a ) );
1311
746
            if (_res == NULL && PyErr_Occurred()) {
1312
0
                p->error_indicator = 1;
1313
0
                p->level--;
1314
0
                return NULL;
1315
0
            }
1316
746
            goto done;
1317
746
        }
1318
9.11k
        p->mark = _mark;
1319
9.11k
        D(fprintf(stderr, "%*c%s single_compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1320
9.11k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compound_stmt"));
1321
9.11k
    }
1322
0
    _res = NULL;
1323
9.86k
  done:
1324
9.86k
    p->level--;
1325
9.86k
    return _res;
1326
9.11k
}
1327
1328
// statement_newline: single_compound_stmt NEWLINE | simple_stmts | NEWLINE | $
1329
static asdl_stmt_seq*
1330
statement_newline_rule(Parser *p)
1331
10.0k
{
1332
10.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1333
0
        _Pypegen_stack_overflow(p);
1334
0
    }
1335
10.0k
    if (p->error_indicator) {
1336
0
        p->level--;
1337
0
        return NULL;
1338
0
    }
1339
10.0k
    asdl_stmt_seq* _res = NULL;
1340
10.0k
    int _mark = p->mark;
1341
10.0k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1342
222
        p->error_indicator = 1;
1343
222
        p->level--;
1344
222
        return NULL;
1345
222
    }
1346
9.86k
    int _start_lineno = p->tokens[_mark]->lineno;
1347
9.86k
    UNUSED(_start_lineno); // Only used by EXTRA macro
1348
9.86k
    int _start_col_offset = p->tokens[_mark]->col_offset;
1349
9.86k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
1350
9.86k
    { // single_compound_stmt NEWLINE
1351
9.86k
        if (p->error_indicator) {
1352
0
            p->level--;
1353
0
            return NULL;
1354
0
        }
1355
9.86k
        D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_compound_stmt NEWLINE"));
1356
9.86k
        asdl_stmt_seq* a;
1357
9.86k
        Token * newline_var;
1358
9.86k
        if (
1359
9.86k
            (a = single_compound_stmt_rule(p))  // single_compound_stmt
1360
9.86k
            &&
1361
9.86k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1362
9.86k
        )
1363
683
        {
1364
683
            D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_compound_stmt NEWLINE"));
1365
683
            _res = a;
1366
683
            if (_res == NULL && PyErr_Occurred()) {
1367
0
                p->error_indicator = 1;
1368
0
                p->level--;
1369
0
                return NULL;
1370
0
            }
1371
683
            goto done;
1372
683
        }
1373
9.17k
        p->mark = _mark;
1374
9.17k
        D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1375
9.17k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_compound_stmt NEWLINE"));
1376
9.17k
    }
1377
0
    { // simple_stmts
1378
9.17k
        if (p->error_indicator) {
1379
205
            p->level--;
1380
205
            return NULL;
1381
205
        }
1382
8.97k
        D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1383
8.97k
        asdl_stmt_seq* simple_stmts_var;
1384
8.97k
        if (
1385
8.97k
            (simple_stmts_var = simple_stmts_rule(p))  // simple_stmts
1386
8.97k
        )
1387
3.16k
        {
1388
3.16k
            D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1389
3.16k
            _res = simple_stmts_var;
1390
3.16k
            goto done;
1391
3.16k
        }
1392
5.80k
        p->mark = _mark;
1393
5.80k
        D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1394
5.80k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
1395
5.80k
    }
1396
0
    { // NEWLINE
1397
5.80k
        if (p->error_indicator) {
1398
1.38k
            p->level--;
1399
1.38k
            return NULL;
1400
1.38k
        }
1401
4.42k
        D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
1402
4.42k
        Token * newline_var;
1403
4.42k
        if (
1404
4.42k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1405
4.42k
        )
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
4.42k
        p->mark = _mark;
1426
4.42k
        D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1427
4.42k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
1428
4.42k
    }
1429
0
    { // $
1430
4.42k
        if (p->error_indicator) {
1431
0
            p->level--;
1432
0
            return NULL;
1433
0
        }
1434
4.42k
        D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "$"));
1435
4.42k
        Token * endmarker_var;
1436
4.42k
        if (
1437
4.42k
            (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1438
4.42k
        )
1439
50
        {
1440
50
            D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "$"));
1441
50
            _res = _PyPegen_interactive_exit ( p );
1442
50
            if (_res == NULL && PyErr_Occurred()) {
1443
0
                p->error_indicator = 1;
1444
0
                p->level--;
1445
0
                return NULL;
1446
0
            }
1447
50
            goto done;
1448
50
        }
1449
4.37k
        p->mark = _mark;
1450
4.37k
        D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1451
4.37k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "$"));
1452
4.37k
    }
1453
0
    _res = NULL;
1454
8.27k
  done:
1455
8.27k
    p->level--;
1456
8.27k
    return _res;
1457
4.37k
}
1458
1459
// simple_stmts: simple_stmt !';' NEWLINE | ';'.simple_stmt+ ';'? NEWLINE
1460
static asdl_stmt_seq*
1461
simple_stmts_rule(Parser *p)
1462
236k
{
1463
236k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1464
0
        _Pypegen_stack_overflow(p);
1465
0
    }
1466
236k
    if (p->error_indicator) {
1467
0
        p->level--;
1468
0
        return NULL;
1469
0
    }
1470
236k
    asdl_stmt_seq* _res = NULL;
1471
236k
    int _mark = p->mark;
1472
236k
    { // simple_stmt !';' NEWLINE
1473
236k
        if (p->error_indicator) {
1474
0
            p->level--;
1475
0
            return NULL;
1476
0
        }
1477
236k
        D(fprintf(stderr, "%*c> simple_stmts[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt !';' NEWLINE"));
1478
236k
        stmt_ty a;
1479
236k
        Token * newline_var;
1480
236k
        if (
1481
236k
            (a = simple_stmt_rule(p))  // simple_stmt
1482
236k
            &&
1483
236k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 13)  // token=';'
1484
236k
            &&
1485
236k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1486
236k
        )
1487
161k
        {
1488
161k
            D(fprintf(stderr, "%*c+ simple_stmts[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt !';' NEWLINE"));
1489
161k
            _res = ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , a );
1490
161k
            if (_res == NULL && PyErr_Occurred()) {
1491
0
                p->error_indicator = 1;
1492
0
                p->level--;
1493
0
                return NULL;
1494
0
            }
1495
161k
            goto done;
1496
161k
        }
1497
74.9k
        p->mark = _mark;
1498
74.9k
        D(fprintf(stderr, "%*c%s simple_stmts[%d-%d]: %s failed!\n", p->level, ' ',
1499
74.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt !';' NEWLINE"));
1500
74.9k
    }
1501
0
    { // ';'.simple_stmt+ ';'? NEWLINE
1502
74.9k
        if (p->error_indicator) {
1503
3.05k
            p->level--;
1504
3.05k
            return NULL;
1505
3.05k
        }
1506
71.8k
        D(fprintf(stderr, "%*c> simple_stmts[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1507
71.8k
        void *_opt_var;
1508
71.8k
        UNUSED(_opt_var); // Silence compiler warnings
1509
71.8k
        asdl_stmt_seq* a;
1510
71.8k
        Token * newline_var;
1511
71.8k
        if (
1512
71.8k
            (a = (asdl_stmt_seq*)_gather_4_rule(p))  // ';'.simple_stmt+
1513
71.8k
            &&
1514
71.8k
            (_opt_var = _PyPegen_expect_token(p, 13), !p->error_indicator)  // ';'?
1515
71.8k
            &&
1516
71.8k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1517
71.8k
        )
1518
23.2k
        {
1519
23.2k
            D(fprintf(stderr, "%*c+ simple_stmts[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1520
23.2k
            _res = a;
1521
23.2k
            if (_res == NULL && PyErr_Occurred()) {
1522
0
                p->error_indicator = 1;
1523
0
                p->level--;
1524
0
                return NULL;
1525
0
            }
1526
23.2k
            goto done;
1527
23.2k
        }
1528
48.6k
        p->mark = _mark;
1529
48.6k
        D(fprintf(stderr, "%*c%s simple_stmts[%d-%d]: %s failed!\n", p->level, ' ',
1530
48.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1531
48.6k
    }
1532
0
    _res = NULL;
1533
233k
  done:
1534
233k
    p->level--;
1535
233k
    return _res;
1536
48.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
406k
{
1556
406k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1557
0
        _Pypegen_stack_overflow(p);
1558
0
    }
1559
406k
    if (p->error_indicator) {
1560
0
        p->level--;
1561
0
        return NULL;
1562
0
    }
1563
406k
    stmt_ty _res = NULL;
1564
406k
    if (_PyPegen_is_memoized(p, simple_stmt_type, &_res)) {
1565
71.8k
        p->level--;
1566
71.8k
        return _res;
1567
71.8k
    }
1568
334k
    int _mark = p->mark;
1569
334k
    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
334k
    int _start_lineno = p->tokens[_mark]->lineno;
1575
334k
    UNUSED(_start_lineno); // Only used by EXTRA macro
1576
334k
    int _start_col_offset = p->tokens[_mark]->col_offset;
1577
334k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
1578
334k
    { // assignment
1579
334k
        if (p->error_indicator) {
1580
0
            p->level--;
1581
0
            return NULL;
1582
0
        }
1583
334k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment"));
1584
334k
        stmt_ty assignment_var;
1585
334k
        if (
1586
334k
            (assignment_var = assignment_rule(p))  // assignment
1587
334k
        )
1588
41.1k
        {
1589
41.1k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment"));
1590
41.1k
            _res = assignment_var;
1591
41.1k
            goto done;
1592
41.1k
        }
1593
293k
        p->mark = _mark;
1594
293k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1595
293k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment"));
1596
293k
    }
1597
0
    { // &"type" type_alias
1598
293k
        if (p->error_indicator) {
1599
2.70k
            p->level--;
1600
2.70k
            return NULL;
1601
2.70k
        }
1602
290k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&\"type\" type_alias"));
1603
290k
        stmt_ty type_alias_var;
1604
290k
        if (
1605
290k
            _PyPegen_lookahead_with_string(1, _PyPegen_expect_soft_keyword, p, "type")
1606
290k
            &&
1607
290k
            (type_alias_var = type_alias_rule(p))  // type_alias
1608
290k
        )
1609
662
        {
1610
662
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&\"type\" type_alias"));
1611
662
            _res = type_alias_var;
1612
662
            goto done;
1613
662
        }
1614
289k
        p->mark = _mark;
1615
289k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1616
289k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&\"type\" type_alias"));
1617
289k
    }
1618
0
    { // star_expressions
1619
289k
        if (p->error_indicator) {
1620
7
            p->level--;
1621
7
            return NULL;
1622
7
        }
1623
289k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1624
289k
        expr_ty e;
1625
289k
        if (
1626
289k
            (e = star_expressions_rule(p))  // star_expressions
1627
289k
        )
1628
211k
        {
1629
211k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1630
211k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1631
211k
            if (_token == NULL) {
1632
0
                p->level--;
1633
0
                return NULL;
1634
0
            }
1635
211k
            int _end_lineno = _token->end_lineno;
1636
211k
            UNUSED(_end_lineno); // Only used by EXTRA macro
1637
211k
            int _end_col_offset = _token->end_col_offset;
1638
211k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
1639
211k
            _res = _PyAST_Expr ( e , EXTRA );
1640
211k
            if (_res == NULL && PyErr_Occurred()) {
1641
0
                p->error_indicator = 1;
1642
0
                p->level--;
1643
0
                return NULL;
1644
0
            }
1645
211k
            goto done;
1646
211k
        }
1647
78.5k
        p->mark = _mark;
1648
78.5k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1649
78.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
1650
78.5k
    }
1651
0
    { // &'return' return_stmt
1652
78.5k
        if (p->error_indicator) {
1653
318
            p->level--;
1654
318
            return NULL;
1655
318
        }
1656
78.2k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'return' return_stmt"));
1657
78.2k
        stmt_ty return_stmt_var;
1658
78.2k
        if (
1659
78.2k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 522)  // token='return'
1660
78.2k
            &&
1661
78.2k
            (return_stmt_var = return_stmt_rule(p))  // return_stmt
1662
78.2k
        )
1663
1.75k
        {
1664
1.75k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'return' return_stmt"));
1665
1.75k
            _res = return_stmt_var;
1666
1.75k
            goto done;
1667
1.75k
        }
1668
76.5k
        p->mark = _mark;
1669
76.5k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1670
76.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'return' return_stmt"));
1671
76.5k
    }
1672
0
    { // &('import' | 'from') import_stmt
1673
76.5k
        if (p->error_indicator) {
1674
2
            p->level--;
1675
2
            return NULL;
1676
2
        }
1677
76.5k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('import' | 'from') import_stmt"));
1678
76.5k
        stmt_ty import_stmt_var;
1679
76.5k
        if (
1680
76.5k
            _PyPegen_lookahead(1, _tmp_5_rule, p)
1681
76.5k
            &&
1682
76.5k
            (import_stmt_var = import_stmt_rule(p))  // import_stmt
1683
76.5k
        )
1684
11.3k
        {
1685
11.3k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('import' | 'from') import_stmt"));
1686
11.3k
            _res = import_stmt_var;
1687
11.3k
            goto done;
1688
11.3k
        }
1689
65.1k
        p->mark = _mark;
1690
65.1k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1691
65.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('import' | 'from') import_stmt"));
1692
65.1k
    }
1693
0
    { // &'raise' raise_stmt
1694
65.1k
        if (p->error_indicator) {
1695
42
            p->level--;
1696
42
            return NULL;
1697
42
        }
1698
65.1k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'raise' raise_stmt"));
1699
65.1k
        stmt_ty raise_stmt_var;
1700
65.1k
        if (
1701
65.1k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 628)  // token='raise'
1702
65.1k
            &&
1703
65.1k
            (raise_stmt_var = raise_stmt_rule(p))  // raise_stmt
1704
65.1k
        )
1705
1.91k
        {
1706
1.91k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'raise' raise_stmt"));
1707
1.91k
            _res = raise_stmt_var;
1708
1.91k
            goto done;
1709
1.91k
        }
1710
63.1k
        p->mark = _mark;
1711
63.1k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1712
63.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'raise' raise_stmt"));
1713
63.1k
    }
1714
0
    { // &'pass' pass_stmt
1715
63.1k
        if (p->error_indicator) {
1716
6
            p->level--;
1717
6
            return NULL;
1718
6
        }
1719
63.1k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'pass' pass_stmt"));
1720
63.1k
        stmt_ty pass_stmt_var;
1721
63.1k
        if (
1722
63.1k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 527)  // token='pass'
1723
63.1k
            &&
1724
63.1k
            (pass_stmt_var = pass_stmt_rule(p))  // pass_stmt
1725
63.1k
        )
1726
943
        {
1727
943
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'pass' pass_stmt"));
1728
943
            _res = pass_stmt_var;
1729
943
            goto done;
1730
943
        }
1731
62.2k
        p->mark = _mark;
1732
62.2k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1733
62.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'pass' pass_stmt"));
1734
62.2k
    }
1735
0
    { // &'del' del_stmt
1736
62.2k
        if (p->error_indicator) {
1737
0
            p->level--;
1738
0
            return NULL;
1739
0
        }
1740
62.2k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'del' del_stmt"));
1741
62.2k
        stmt_ty del_stmt_var;
1742
62.2k
        if (
1743
62.2k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 630)  // token='del'
1744
62.2k
            &&
1745
62.2k
            (del_stmt_var = del_stmt_rule(p))  // del_stmt
1746
62.2k
        )
1747
2.91k
        {
1748
2.91k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'del' del_stmt"));
1749
2.91k
            _res = del_stmt_var;
1750
2.91k
            goto done;
1751
2.91k
        }
1752
59.3k
        p->mark = _mark;
1753
59.3k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1754
59.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'del' del_stmt"));
1755
59.3k
    }
1756
0
    { // &'yield' yield_stmt
1757
59.3k
        if (p->error_indicator) {
1758
36
            p->level--;
1759
36
            return NULL;
1760
36
        }
1761
59.2k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'yield' yield_stmt"));
1762
59.2k
        stmt_ty yield_stmt_var;
1763
59.2k
        if (
1764
59.2k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 588)  // token='yield'
1765
59.2k
            &&
1766
59.2k
            (yield_stmt_var = yield_stmt_rule(p))  // yield_stmt
1767
59.2k
        )
1768
1.27k
        {
1769
1.27k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'yield' yield_stmt"));
1770
1.27k
            _res = yield_stmt_var;
1771
1.27k
            goto done;
1772
1.27k
        }
1773
58.0k
        p->mark = _mark;
1774
58.0k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1775
58.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'yield' yield_stmt"));
1776
58.0k
    }
1777
0
    { // &'assert' assert_stmt
1778
58.0k
        if (p->error_indicator) {
1779
4
            p->level--;
1780
4
            return NULL;
1781
4
        }
1782
58.0k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'assert' assert_stmt"));
1783
58.0k
        stmt_ty assert_stmt_var;
1784
58.0k
        if (
1785
58.0k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 533)  // token='assert'
1786
58.0k
            &&
1787
58.0k
            (assert_stmt_var = assert_stmt_rule(p))  // assert_stmt
1788
58.0k
        )
1789
3.95k
        {
1790
3.95k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'assert' assert_stmt"));
1791
3.95k
            _res = assert_stmt_var;
1792
3.95k
            goto done;
1793
3.95k
        }
1794
54.0k
        p->mark = _mark;
1795
54.0k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1796
54.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'assert' assert_stmt"));
1797
54.0k
    }
1798
0
    { // &'break' break_stmt
1799
54.0k
        if (p->error_indicator) {
1800
7
            p->level--;
1801
7
            return NULL;
1802
7
        }
1803
54.0k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'break' break_stmt"));
1804
54.0k
        stmt_ty break_stmt_var;
1805
54.0k
        if (
1806
54.0k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 528)  // token='break'
1807
54.0k
            &&
1808
54.0k
            (break_stmt_var = break_stmt_rule(p))  // break_stmt
1809
54.0k
        )
1810
1.69k
        {
1811
1.69k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'break' break_stmt"));
1812
1.69k
            _res = break_stmt_var;
1813
1.69k
            goto done;
1814
1.69k
        }
1815
52.3k
        p->mark = _mark;
1816
52.3k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1817
52.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'break' break_stmt"));
1818
52.3k
    }
1819
0
    { // &'continue' continue_stmt
1820
52.3k
        if (p->error_indicator) {
1821
0
            p->level--;
1822
0
            return NULL;
1823
0
        }
1824
52.3k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'continue' continue_stmt"));
1825
52.3k
        stmt_ty continue_stmt_var;
1826
52.3k
        if (
1827
52.3k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 529)  // token='continue'
1828
52.3k
            &&
1829
52.3k
            (continue_stmt_var = continue_stmt_rule(p))  // continue_stmt
1830
52.3k
        )
1831
909
        {
1832
909
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'continue' continue_stmt"));
1833
909
            _res = continue_stmt_var;
1834
909
            goto done;
1835
909
        }
1836
51.4k
        p->mark = _mark;
1837
51.4k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1838
51.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'continue' continue_stmt"));
1839
51.4k
    }
1840
0
    { // &'global' global_stmt
1841
51.4k
        if (p->error_indicator) {
1842
0
            p->level--;
1843
0
            return NULL;
1844
0
        }
1845
51.4k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'global' global_stmt"));
1846
51.4k
        stmt_ty global_stmt_var;
1847
51.4k
        if (
1848
51.4k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 530)  // token='global'
1849
51.4k
            &&
1850
51.4k
            (global_stmt_var = global_stmt_rule(p))  // global_stmt
1851
51.4k
        )
1852
1.68k
        {
1853
1.68k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'global' global_stmt"));
1854
1.68k
            _res = global_stmt_var;
1855
1.68k
            goto done;
1856
1.68k
        }
1857
49.7k
        p->mark = _mark;
1858
49.7k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1859
49.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'global' global_stmt"));
1860
49.7k
    }
1861
0
    { // &'nonlocal' nonlocal_stmt
1862
49.7k
        if (p->error_indicator) {
1863
1
            p->level--;
1864
1
            return NULL;
1865
1
        }
1866
49.7k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
1867
49.7k
        stmt_ty nonlocal_stmt_var;
1868
49.7k
        if (
1869
49.7k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 531)  // token='nonlocal'
1870
49.7k
            &&
1871
49.7k
            (nonlocal_stmt_var = nonlocal_stmt_rule(p))  // nonlocal_stmt
1872
49.7k
        )
1873
317
        {
1874
317
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
1875
317
            _res = nonlocal_stmt_var;
1876
317
            goto done;
1877
317
        }
1878
49.4k
        p->mark = _mark;
1879
49.4k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1880
49.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
1881
49.4k
    }
1882
0
    _res = NULL;
1883
331k
  done:
1884
331k
    _PyPegen_insert_memo(p, _mark, simple_stmt_type, _res);
1885
331k
    p->level--;
1886
331k
    return _res;
1887
49.4k
}
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
236k
{
1901
236k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1902
0
        _Pypegen_stack_overflow(p);
1903
0
    }
1904
236k
    if (p->error_indicator) {
1905
0
        p->level--;
1906
0
        return NULL;
1907
0
    }
1908
236k
    stmt_ty _res = NULL;
1909
236k
    int _mark = p->mark;
1910
236k
    { // &('def' | '@' | 'async') function_def
1911
236k
        if (p->error_indicator) {
1912
0
            p->level--;
1913
0
            return NULL;
1914
0
        }
1915
236k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('def' | '@' | 'async') function_def"));
1916
236k
        stmt_ty function_def_var;
1917
236k
        if (
1918
236k
            _PyPegen_lookahead(1, _tmp_6_rule, p)
1919
236k
            &&
1920
236k
            (function_def_var = function_def_rule(p))  // function_def
1921
236k
        )
1922
16.4k
        {
1923
16.4k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('def' | '@' | 'async') function_def"));
1924
16.4k
            _res = function_def_var;
1925
16.4k
            goto done;
1926
16.4k
        }
1927
219k
        p->mark = _mark;
1928
219k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1929
219k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('def' | '@' | 'async') function_def"));
1930
219k
    }
1931
0
    { // &'if' if_stmt
1932
219k
        if (p->error_indicator) {
1933
678
            p->level--;
1934
678
            return NULL;
1935
678
        }
1936
219k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'if' if_stmt"));
1937
219k
        stmt_ty if_stmt_var;
1938
219k
        if (
1939
219k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 687)  // token='if'
1940
219k
            &&
1941
219k
            (if_stmt_var = if_stmt_rule(p))  // if_stmt
1942
219k
        )
1943
2.72k
        {
1944
2.72k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'if' if_stmt"));
1945
2.72k
            _res = if_stmt_var;
1946
2.72k
            goto done;
1947
2.72k
        }
1948
216k
        p->mark = _mark;
1949
216k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1950
216k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'if' if_stmt"));
1951
216k
    }
1952
0
    { // &('class' | '@') class_def
1953
216k
        if (p->error_indicator) {
1954
60
            p->level--;
1955
60
            return NULL;
1956
60
        }
1957
216k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('class' | '@') class_def"));
1958
216k
        stmt_ty class_def_var;
1959
216k
        if (
1960
216k
            _PyPegen_lookahead(1, _tmp_7_rule, p)
1961
216k
            &&
1962
216k
            (class_def_var = class_def_rule(p))  // class_def
1963
216k
        )
1964
17.1k
        {
1965
17.1k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('class' | '@') class_def"));
1966
17.1k
            _res = class_def_var;
1967
17.1k
            goto done;
1968
17.1k
        }
1969
199k
        p->mark = _mark;
1970
199k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1971
199k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('class' | '@') class_def"));
1972
199k
    }
1973
0
    { // &('with' | 'async') with_stmt
1974
199k
        if (p->error_indicator) {
1975
62
            p->level--;
1976
62
            return NULL;
1977
62
        }
1978
199k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('with' | 'async') with_stmt"));
1979
199k
        stmt_ty with_stmt_var;
1980
199k
        if (
1981
199k
            _PyPegen_lookahead(1, _tmp_8_rule, p)
1982
199k
            &&
1983
199k
            (with_stmt_var = with_stmt_rule(p))  // with_stmt
1984
199k
        )
1985
8.91k
        {
1986
8.91k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('with' | 'async') with_stmt"));
1987
8.91k
            _res = with_stmt_var;
1988
8.91k
            goto done;
1989
8.91k
        }
1990
190k
        p->mark = _mark;
1991
190k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1992
190k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('with' | 'async') with_stmt"));
1993
190k
    }
1994
0
    { // &('for' | 'async') for_stmt
1995
190k
        if (p->error_indicator) {
1996
136
            p->level--;
1997
136
            return NULL;
1998
136
        }
1999
190k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('for' | 'async') for_stmt"));
2000
190k
        stmt_ty for_stmt_var;
2001
190k
        if (
2002
190k
            _PyPegen_lookahead(1, _tmp_9_rule, p)
2003
190k
            &&
2004
190k
            (for_stmt_var = for_stmt_rule(p))  // for_stmt
2005
190k
        )
2006
1.93k
        {
2007
1.93k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('for' | 'async') for_stmt"));
2008
1.93k
            _res = for_stmt_var;
2009
1.93k
            goto done;
2010
1.93k
        }
2011
188k
        p->mark = _mark;
2012
188k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2013
188k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('for' | 'async') for_stmt"));
2014
188k
    }
2015
0
    { // &'try' try_stmt
2016
188k
        if (p->error_indicator) {
2017
37
            p->level--;
2018
37
            return NULL;
2019
37
        }
2020
188k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'try' try_stmt"));
2021
188k
        stmt_ty try_stmt_var;
2022
188k
        if (
2023
188k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 661)  // token='try'
2024
188k
            &&
2025
188k
            (try_stmt_var = try_stmt_rule(p))  // try_stmt
2026
188k
        )
2027
8.09k
        {
2028
8.09k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'try' try_stmt"));
2029
8.09k
            _res = try_stmt_var;
2030
8.09k
            goto done;
2031
8.09k
        }
2032
180k
        p->mark = _mark;
2033
180k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2034
180k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'try' try_stmt"));
2035
180k
    }
2036
0
    { // &'while' while_stmt
2037
180k
        if (p->error_indicator) {
2038
172
            p->level--;
2039
172
            return NULL;
2040
172
        }
2041
179k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'while' while_stmt"));
2042
179k
        stmt_ty while_stmt_var;
2043
179k
        if (
2044
179k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 694)  // token='while'
2045
179k
            &&
2046
179k
            (while_stmt_var = while_stmt_rule(p))  // while_stmt
2047
179k
        )
2048
2.69k
        {
2049
2.69k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'while' while_stmt"));
2050
2.69k
            _res = while_stmt_var;
2051
2.69k
            goto done;
2052
2.69k
        }
2053
177k
        p->mark = _mark;
2054
177k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2055
177k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'while' while_stmt"));
2056
177k
    }
2057
0
    { // match_stmt
2058
177k
        if (p->error_indicator) {
2059
25
            p->level--;
2060
25
            return NULL;
2061
25
        }
2062
177k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "match_stmt"));
2063
177k
        stmt_ty match_stmt_var;
2064
177k
        if (
2065
177k
            (match_stmt_var = match_stmt_rule(p))  // match_stmt
2066
177k
        )
2067
1.36k
        {
2068
1.36k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "match_stmt"));
2069
1.36k
            _res = match_stmt_var;
2070
1.36k
            goto done;
2071
1.36k
        }
2072
175k
        p->mark = _mark;
2073
175k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2074
175k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "match_stmt"));
2075
175k
    }
2076
0
    _res = NULL;
2077
235k
  done:
2078
235k
    p->level--;
2079
235k
    return _res;
2080
175k
}
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
334k
{
2091
334k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2092
0
        _Pypegen_stack_overflow(p);
2093
0
    }
2094
334k
    if (p->error_indicator) {
2095
0
        p->level--;
2096
0
        return NULL;
2097
0
    }
2098
334k
    stmt_ty _res = NULL;
2099
334k
    int _mark = p->mark;
2100
334k
    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
334k
    int _start_lineno = p->tokens[_mark]->lineno;
2106
334k
    UNUSED(_start_lineno); // Only used by EXTRA macro
2107
334k
    int _start_col_offset = p->tokens[_mark]->col_offset;
2108
334k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
2109
334k
    { // NAME ':' expression ['=' annotated_rhs]
2110
334k
        if (p->error_indicator) {
2111
0
            p->level--;
2112
0
            return NULL;
2113
0
        }
2114
334k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2115
334k
        Token * _literal;
2116
334k
        expr_ty a;
2117
334k
        expr_ty b;
2118
334k
        void *c;
2119
334k
        if (
2120
334k
            (a = _PyPegen_name_token(p))  // NAME
2121
334k
            &&
2122
334k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
2123
334k
            &&
2124
334k
            (b = expression_rule(p))  // expression
2125
334k
            &&
2126
334k
            (c = _tmp_10_rule(p), !p->error_indicator)  // ['=' annotated_rhs]
2127
334k
        )
2128
16.0k
        {
2129
16.0k
            D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2130
16.0k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2131
16.0k
            if (_token == NULL) {
2132
0
                p->level--;
2133
0
                return NULL;
2134
0
            }
2135
16.0k
            int _end_lineno = _token->end_lineno;
2136
16.0k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2137
16.0k
            int _end_col_offset = _token->end_col_offset;
2138
16.0k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2139
16.0k
            _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
16.0k
            if (_res == NULL && PyErr_Occurred()) {
2141
0
                p->error_indicator = 1;
2142
0
                p->level--;
2143
0
                return NULL;
2144
0
            }
2145
16.0k
            goto done;
2146
16.0k
        }
2147
318k
        p->mark = _mark;
2148
318k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2149
318k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2150
318k
    }
2151
0
    { // ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
2152
318k
        if (p->error_indicator) {
2153
179
            p->level--;
2154
179
            return NULL;
2155
179
        }
2156
318k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
2157
318k
        Token * _literal;
2158
318k
        void *a;
2159
318k
        expr_ty b;
2160
318k
        void *c;
2161
318k
        if (
2162
318k
            (a = _tmp_11_rule(p))  // '(' single_target ')' | single_subscript_attribute_target
2163
318k
            &&
2164
318k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
2165
318k
            &&
2166
318k
            (b = expression_rule(p))  // expression
2167
318k
            &&
2168
318k
            (c = _tmp_10_rule(p), !p->error_indicator)  // ['=' annotated_rhs]
2169
318k
        )
2170
1.81k
        {
2171
1.81k
            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
1.81k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2173
1.81k
            if (_token == NULL) {
2174
0
                p->level--;
2175
0
                return NULL;
2176
0
            }
2177
1.81k
            int _end_lineno = _token->end_lineno;
2178
1.81k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2179
1.81k
            int _end_col_offset = _token->end_col_offset;
2180
1.81k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2181
1.81k
            _res = CHECK_VERSION ( stmt_ty , 6 , "Variable annotations syntax is" , _PyAST_AnnAssign ( a , b , c , 0 , EXTRA ) );
2182
1.81k
            if (_res == NULL && PyErr_Occurred()) {
2183
0
                p->error_indicator = 1;
2184
0
                p->level--;
2185
0
                return NULL;
2186
0
            }
2187
1.81k
            goto done;
2188
1.81k
        }
2189
316k
        p->mark = _mark;
2190
316k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2191
316k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
2192
316k
    }
2193
0
    { // ((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?
2194
316k
        if (p->error_indicator) {
2195
1.46k
            p->level--;
2196
1.46k
            return NULL;
2197
1.46k
        }
2198
314k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?"));
2199
314k
        asdl_expr_seq* a;
2200
314k
        expr_ty b;
2201
314k
        void *tc;
2202
314k
        if (
2203
314k
            (a = (asdl_expr_seq*)_loop1_12_rule(p))  // ((star_targets '='))+
2204
314k
            &&
2205
314k
            (b = annotated_rhs_rule(p))  // annotated_rhs
2206
314k
            &&
2207
314k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22)  // token='='
2208
314k
            &&
2209
314k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
2210
314k
        )
2211
16.2k
        {
2212
16.2k
            D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?"));
2213
16.2k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2214
16.2k
            if (_token == NULL) {
2215
0
                p->level--;
2216
0
                return NULL;
2217
0
            }
2218
16.2k
            int _end_lineno = _token->end_lineno;
2219
16.2k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2220
16.2k
            int _end_col_offset = _token->end_col_offset;
2221
16.2k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2222
16.2k
            _res = _PyAST_Assign ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
2223
16.2k
            if (_res == NULL && PyErr_Occurred()) {
2224
0
                p->error_indicator = 1;
2225
0
                p->level--;
2226
0
                return NULL;
2227
0
            }
2228
16.2k
            goto done;
2229
16.2k
        }
2230
298k
        p->mark = _mark;
2231
298k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2232
298k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?"));
2233
298k
    }
2234
0
    { // single_target augassign ~ annotated_rhs
2235
298k
        if (p->error_indicator) {
2236
127
            p->level--;
2237
127
            return NULL;
2238
127
        }
2239
298k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_target augassign ~ annotated_rhs"));
2240
298k
        int _cut_var = 0;
2241
298k
        expr_ty a;
2242
298k
        AugOperator* b;
2243
298k
        expr_ty c;
2244
298k
        if (
2245
298k
            (a = single_target_rule(p))  // single_target
2246
298k
            &&
2247
298k
            (b = augassign_rule(p))  // augassign
2248
298k
            &&
2249
298k
            (_cut_var = 1)
2250
298k
            &&
2251
298k
            (c = annotated_rhs_rule(p))  // annotated_rhs
2252
298k
        )
2253
7.03k
        {
2254
7.03k
            D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_target augassign ~ annotated_rhs"));
2255
7.03k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2256
7.03k
            if (_token == NULL) {
2257
0
                p->level--;
2258
0
                return NULL;
2259
0
            }
2260
7.03k
            int _end_lineno = _token->end_lineno;
2261
7.03k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2262
7.03k
            int _end_col_offset = _token->end_col_offset;
2263
7.03k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2264
7.03k
            _res = _PyAST_AugAssign ( a , b -> kind , c , EXTRA );
2265
7.03k
            if (_res == NULL && PyErr_Occurred()) {
2266
0
                p->error_indicator = 1;
2267
0
                p->level--;
2268
0
                return NULL;
2269
0
            }
2270
7.03k
            goto done;
2271
7.03k
        }
2272
291k
        p->mark = _mark;
2273
291k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2274
291k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_target augassign ~ annotated_rhs"));
2275
291k
        if (_cut_var) {
2276
73
            p->level--;
2277
73
            return NULL;
2278
73
        }
2279
291k
    }
2280
291k
    if (p->call_invalid_rules) { // invalid_assignment
2281
56.2k
        if (p->error_indicator) {
2282
0
            p->level--;
2283
0
            return NULL;
2284
0
        }
2285
56.2k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_assignment"));
2286
56.2k
        void *invalid_assignment_var;
2287
56.2k
        if (
2288
56.2k
            (invalid_assignment_var = invalid_assignment_rule(p))  // invalid_assignment
2289
56.2k
        )
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
56.2k
        p->mark = _mark;
2296
56.2k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2297
56.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_assignment"));
2298
56.2k
    }
2299
291k
    _res = NULL;
2300
332k
  done:
2301
332k
    p->level--;
2302
332k
    return _res;
2303
291k
}
2304
2305
// annotated_rhs: yield_expr | star_expressions
2306
static expr_ty
2307
annotated_rhs_rule(Parser *p)
2308
62.5k
{
2309
62.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2310
1
        _Pypegen_stack_overflow(p);
2311
1
    }
2312
62.5k
    if (p->error_indicator) {
2313
1
        p->level--;
2314
1
        return NULL;
2315
1
    }
2316
62.5k
    expr_ty _res = NULL;
2317
62.5k
    int _mark = p->mark;
2318
62.5k
    { // yield_expr
2319
62.5k
        if (p->error_indicator) {
2320
0
            p->level--;
2321
0
            return NULL;
2322
0
        }
2323
62.5k
        D(fprintf(stderr, "%*c> annotated_rhs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
2324
62.5k
        expr_ty yield_expr_var;
2325
62.5k
        if (
2326
62.5k
            (yield_expr_var = yield_expr_rule(p))  // yield_expr
2327
62.5k
        )
2328
798
        {
2329
798
            D(fprintf(stderr, "%*c+ annotated_rhs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
2330
798
            _res = yield_expr_var;
2331
798
            goto done;
2332
798
        }
2333
61.7k
        p->mark = _mark;
2334
61.7k
        D(fprintf(stderr, "%*c%s annotated_rhs[%d-%d]: %s failed!\n", p->level, ' ',
2335
61.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
2336
61.7k
    }
2337
0
    { // star_expressions
2338
61.7k
        if (p->error_indicator) {
2339
266
            p->level--;
2340
266
            return NULL;
2341
266
        }
2342
61.4k
        D(fprintf(stderr, "%*c> annotated_rhs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
2343
61.4k
        expr_ty star_expressions_var;
2344
61.4k
        if (
2345
61.4k
            (star_expressions_var = star_expressions_rule(p))  // star_expressions
2346
61.4k
        )
2347
57.2k
        {
2348
57.2k
            D(fprintf(stderr, "%*c+ annotated_rhs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
2349
57.2k
            _res = star_expressions_var;
2350
57.2k
            goto done;
2351
57.2k
        }
2352
4.19k
        p->mark = _mark;
2353
4.19k
        D(fprintf(stderr, "%*c%s annotated_rhs[%d-%d]: %s failed!\n", p->level, ' ',
2354
4.19k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
2355
4.19k
    }
2356
0
    _res = NULL;
2357
62.2k
  done:
2358
62.2k
    p->level--;
2359
62.2k
    return _res;
2360
4.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
205k
{
2379
205k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2380
0
        _Pypegen_stack_overflow(p);
2381
0
    }
2382
205k
    if (p->error_indicator) {
2383
0
        p->level--;
2384
0
        return NULL;
2385
0
    }
2386
205k
    AugOperator* _res = NULL;
2387
205k
    int _mark = p->mark;
2388
205k
    { // '+='
2389
205k
        if (p->error_indicator) {
2390
0
            p->level--;
2391
0
            return NULL;
2392
0
        }
2393
205k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+='"));
2394
205k
        Token * _literal;
2395
205k
        if (
2396
205k
            (_literal = _PyPegen_expect_token(p, 36))  // token='+='
2397
205k
        )
2398
386
        {
2399
386
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+='"));
2400
386
            _res = _PyPegen_augoperator ( p , Add );
2401
386
            if (_res == NULL && PyErr_Occurred()) {
2402
0
                p->error_indicator = 1;
2403
0
                p->level--;
2404
0
                return NULL;
2405
0
            }
2406
386
            goto done;
2407
386
        }
2408
205k
        p->mark = _mark;
2409
205k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2410
205k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+='"));
2411
205k
    }
2412
0
    { // '-='
2413
205k
        if (p->error_indicator) {
2414
0
            p->level--;
2415
0
            return NULL;
2416
0
        }
2417
205k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-='"));
2418
205k
        Token * _literal;
2419
205k
        if (
2420
205k
            (_literal = _PyPegen_expect_token(p, 37))  // token='-='
2421
205k
        )
2422
207
        {
2423
207
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-='"));
2424
207
            _res = _PyPegen_augoperator ( p , Sub );
2425
207
            if (_res == NULL && PyErr_Occurred()) {
2426
0
                p->error_indicator = 1;
2427
0
                p->level--;
2428
0
                return NULL;
2429
0
            }
2430
207
            goto done;
2431
207
        }
2432
205k
        p->mark = _mark;
2433
205k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2434
205k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-='"));
2435
205k
    }
2436
0
    { // '*='
2437
205k
        if (p->error_indicator) {
2438
0
            p->level--;
2439
0
            return NULL;
2440
0
        }
2441
205k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*='"));
2442
205k
        Token * _literal;
2443
205k
        if (
2444
205k
            (_literal = _PyPegen_expect_token(p, 38))  // token='*='
2445
205k
        )
2446
1.40k
        {
2447
1.40k
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*='"));
2448
1.40k
            _res = _PyPegen_augoperator ( p , Mult );
2449
1.40k
            if (_res == NULL && PyErr_Occurred()) {
2450
0
                p->error_indicator = 1;
2451
0
                p->level--;
2452
0
                return NULL;
2453
0
            }
2454
1.40k
            goto done;
2455
1.40k
        }
2456
203k
        p->mark = _mark;
2457
203k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2458
203k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*='"));
2459
203k
    }
2460
0
    { // '@='
2461
203k
        if (p->error_indicator) {
2462
0
            p->level--;
2463
0
            return NULL;
2464
0
        }
2465
203k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@='"));
2466
203k
        Token * _literal;
2467
203k
        if (
2468
203k
            (_literal = _PyPegen_expect_token(p, 50))  // token='@='
2469
203k
        )
2470
1.00k
        {
2471
1.00k
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@='"));
2472
1.00k
            _res = CHECK_VERSION ( AugOperator* , 5 , "The '@' operator is" , _PyPegen_augoperator ( p , MatMult ) );
2473
1.00k
            if (_res == NULL && PyErr_Occurred()) {
2474
0
                p->error_indicator = 1;
2475
0
                p->level--;
2476
0
                return NULL;
2477
0
            }
2478
1.00k
            goto done;
2479
1.00k
        }
2480
202k
        p->mark = _mark;
2481
202k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2482
202k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@='"));
2483
202k
    }
2484
0
    { // '/='
2485
202k
        if (p->error_indicator) {
2486
0
            p->level--;
2487
0
            return NULL;
2488
0
        }
2489
202k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/='"));
2490
202k
        Token * _literal;
2491
202k
        if (
2492
202k
            (_literal = _PyPegen_expect_token(p, 39))  // token='/='
2493
202k
        )
2494
151
        {
2495
151
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'/='"));
2496
151
            _res = _PyPegen_augoperator ( p , Div );
2497
151
            if (_res == NULL && PyErr_Occurred()) {
2498
0
                p->error_indicator = 1;
2499
0
                p->level--;
2500
0
                return NULL;
2501
0
            }
2502
151
            goto done;
2503
151
        }
2504
202k
        p->mark = _mark;
2505
202k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2506
202k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'/='"));
2507
202k
    }
2508
0
    { // '%='
2509
202k
        if (p->error_indicator) {
2510
0
            p->level--;
2511
0
            return NULL;
2512
0
        }
2513
202k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'%='"));
2514
202k
        Token * _literal;
2515
202k
        if (
2516
202k
            (_literal = _PyPegen_expect_token(p, 40))  // token='%='
2517
202k
        )
2518
532
        {
2519
532
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'%='"));
2520
532
            _res = _PyPegen_augoperator ( p , Mod );
2521
532
            if (_res == NULL && PyErr_Occurred()) {
2522
0
                p->error_indicator = 1;
2523
0
                p->level--;
2524
0
                return NULL;
2525
0
            }
2526
532
            goto done;
2527
532
        }
2528
202k
        p->mark = _mark;
2529
202k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2530
202k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'%='"));
2531
202k
    }
2532
0
    { // '&='
2533
202k
        if (p->error_indicator) {
2534
0
            p->level--;
2535
0
            return NULL;
2536
0
        }
2537
202k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'&='"));
2538
202k
        Token * _literal;
2539
202k
        if (
2540
202k
            (_literal = _PyPegen_expect_token(p, 41))  // token='&='
2541
202k
        )
2542
93
        {
2543
93
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'&='"));
2544
93
            _res = _PyPegen_augoperator ( p , BitAnd );
2545
93
            if (_res == NULL && PyErr_Occurred()) {
2546
0
                p->error_indicator = 1;
2547
0
                p->level--;
2548
0
                return NULL;
2549
0
            }
2550
93
            goto done;
2551
93
        }
2552
201k
        p->mark = _mark;
2553
201k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2554
201k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'&='"));
2555
201k
    }
2556
0
    { // '|='
2557
201k
        if (p->error_indicator) {
2558
0
            p->level--;
2559
0
            return NULL;
2560
0
        }
2561
201k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|='"));
2562
201k
        Token * _literal;
2563
201k
        if (
2564
201k
            (_literal = _PyPegen_expect_token(p, 42))  // token='|='
2565
201k
        )
2566
438
        {
2567
438
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'|='"));
2568
438
            _res = _PyPegen_augoperator ( p , BitOr );
2569
438
            if (_res == NULL && PyErr_Occurred()) {
2570
0
                p->error_indicator = 1;
2571
0
                p->level--;
2572
0
                return NULL;
2573
0
            }
2574
438
            goto done;
2575
438
        }
2576
201k
        p->mark = _mark;
2577
201k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2578
201k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|='"));
2579
201k
    }
2580
0
    { // '^='
2581
201k
        if (p->error_indicator) {
2582
0
            p->level--;
2583
0
            return NULL;
2584
0
        }
2585
201k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'^='"));
2586
201k
        Token * _literal;
2587
201k
        if (
2588
201k
            (_literal = _PyPegen_expect_token(p, 43))  // token='^='
2589
201k
        )
2590
1.47k
        {
2591
1.47k
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'^='"));
2592
1.47k
            _res = _PyPegen_augoperator ( p , BitXor );
2593
1.47k
            if (_res == NULL && PyErr_Occurred()) {
2594
0
                p->error_indicator = 1;
2595
0
                p->level--;
2596
0
                return NULL;
2597
0
            }
2598
1.47k
            goto done;
2599
1.47k
        }
2600
200k
        p->mark = _mark;
2601
200k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2602
200k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'^='"));
2603
200k
    }
2604
0
    { // '<<='
2605
200k
        if (p->error_indicator) {
2606
0
            p->level--;
2607
0
            return NULL;
2608
0
        }
2609
200k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<<='"));
2610
200k
        Token * _literal;
2611
200k
        if (
2612
200k
            (_literal = _PyPegen_expect_token(p, 44))  // token='<<='
2613
200k
        )
2614
350
        {
2615
350
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<<='"));
2616
350
            _res = _PyPegen_augoperator ( p , LShift );
2617
350
            if (_res == NULL && PyErr_Occurred()) {
2618
0
                p->error_indicator = 1;
2619
0
                p->level--;
2620
0
                return NULL;
2621
0
            }
2622
350
            goto done;
2623
350
        }
2624
199k
        p->mark = _mark;
2625
199k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2626
199k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<<='"));
2627
199k
    }
2628
0
    { // '>>='
2629
199k
        if (p->error_indicator) {
2630
0
            p->level--;
2631
0
            return NULL;
2632
0
        }
2633
199k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>>='"));
2634
199k
        Token * _literal;
2635
199k
        if (
2636
199k
            (_literal = _PyPegen_expect_token(p, 45))  // token='>>='
2637
199k
        )
2638
150
        {
2639
150
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>>='"));
2640
150
            _res = _PyPegen_augoperator ( p , RShift );
2641
150
            if (_res == NULL && PyErr_Occurred()) {
2642
0
                p->error_indicator = 1;
2643
0
                p->level--;
2644
0
                return NULL;
2645
0
            }
2646
150
            goto done;
2647
150
        }
2648
199k
        p->mark = _mark;
2649
199k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2650
199k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>>='"));
2651
199k
    }
2652
0
    { // '**='
2653
199k
        if (p->error_indicator) {
2654
0
            p->level--;
2655
0
            return NULL;
2656
0
        }
2657
199k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**='"));
2658
199k
        Token * _literal;
2659
199k
        if (
2660
199k
            (_literal = _PyPegen_expect_token(p, 46))  // token='**='
2661
199k
        )
2662
144
        {
2663
144
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**='"));
2664
144
            _res = _PyPegen_augoperator ( p , Pow );
2665
144
            if (_res == NULL && PyErr_Occurred()) {
2666
0
                p->error_indicator = 1;
2667
0
                p->level--;
2668
0
                return NULL;
2669
0
            }
2670
144
            goto done;
2671
144
        }
2672
199k
        p->mark = _mark;
2673
199k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2674
199k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**='"));
2675
199k
    }
2676
0
    { // '//='
2677
199k
        if (p->error_indicator) {
2678
0
            p->level--;
2679
0
            return NULL;
2680
0
        }
2681
199k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'//='"));
2682
199k
        Token * _literal;
2683
199k
        if (
2684
199k
            (_literal = _PyPegen_expect_token(p, 48))  // token='//='
2685
199k
        )
2686
826
        {
2687
826
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'//='"));
2688
826
            _res = _PyPegen_augoperator ( p , FloorDiv );
2689
826
            if (_res == NULL && PyErr_Occurred()) {
2690
0
                p->error_indicator = 1;
2691
0
                p->level--;
2692
0
                return NULL;
2693
0
            }
2694
826
            goto done;
2695
826
        }
2696
198k
        p->mark = _mark;
2697
198k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2698
198k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'//='"));
2699
198k
    }
2700
0
    _res = NULL;
2701
205k
  done:
2702
205k
    p->level--;
2703
205k
    return _res;
2704
198k
}
2705
2706
// return_stmt: 'return' star_expressions?
2707
static stmt_ty
2708
return_stmt_rule(Parser *p)
2709
1.75k
{
2710
1.75k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2711
0
        _Pypegen_stack_overflow(p);
2712
0
    }
2713
1.75k
    if (p->error_indicator) {
2714
0
        p->level--;
2715
0
        return NULL;
2716
0
    }
2717
1.75k
    stmt_ty _res = NULL;
2718
1.75k
    int _mark = p->mark;
2719
1.75k
    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
1.75k
    int _start_lineno = p->tokens[_mark]->lineno;
2725
1.75k
    UNUSED(_start_lineno); // Only used by EXTRA macro
2726
1.75k
    int _start_col_offset = p->tokens[_mark]->col_offset;
2727
1.75k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
2728
1.75k
    { // 'return' star_expressions?
2729
1.75k
        if (p->error_indicator) {
2730
0
            p->level--;
2731
0
            return NULL;
2732
0
        }
2733
1.75k
        D(fprintf(stderr, "%*c> return_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'return' star_expressions?"));
2734
1.75k
        Token * _keyword;
2735
1.75k
        void *a;
2736
1.75k
        if (
2737
1.75k
            (_keyword = _PyPegen_expect_token(p, 522))  // token='return'
2738
1.75k
            &&
2739
1.75k
            (a = star_expressions_rule(p), !p->error_indicator)  // star_expressions?
2740
1.75k
        )
2741
1.75k
        {
2742
1.75k
            D(fprintf(stderr, "%*c+ return_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'return' star_expressions?"));
2743
1.75k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2744
1.75k
            if (_token == NULL) {
2745
0
                p->level--;
2746
0
                return NULL;
2747
0
            }
2748
1.75k
            int _end_lineno = _token->end_lineno;
2749
1.75k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2750
1.75k
            int _end_col_offset = _token->end_col_offset;
2751
1.75k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2752
1.75k
            _res = _PyAST_Return ( a , EXTRA );
2753
1.75k
            if (_res == NULL && PyErr_Occurred()) {
2754
0
                p->error_indicator = 1;
2755
0
                p->level--;
2756
0
                return NULL;
2757
0
            }
2758
1.75k
            goto done;
2759
1.75k
        }
2760
2
        p->mark = _mark;
2761
2
        D(fprintf(stderr, "%*c%s return_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2762
2
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'return' star_expressions?"));
2763
2
    }
2764
0
    _res = NULL;
2765
1.75k
  done:
2766
1.75k
    p->level--;
2767
1.75k
    return _res;
2768
2
}
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
1.92k
{
2778
1.92k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2779
0
        _Pypegen_stack_overflow(p);
2780
0
    }
2781
1.92k
    if (p->error_indicator) {
2782
0
        p->level--;
2783
0
        return NULL;
2784
0
    }
2785
1.92k
    stmt_ty _res = NULL;
2786
1.92k
    int _mark = p->mark;
2787
1.92k
    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
1.92k
    int _start_lineno = p->tokens[_mark]->lineno;
2793
1.92k
    UNUSED(_start_lineno); // Only used by EXTRA macro
2794
1.92k
    int _start_col_offset = p->tokens[_mark]->col_offset;
2795
1.92k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
2796
1.92k
    { // 'raise' expression 'from' expression
2797
1.92k
        if (p->error_indicator) {
2798
0
            p->level--;
2799
0
            return NULL;
2800
0
        }
2801
1.92k
        D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' expression 'from' expression"));
2802
1.92k
        Token * _keyword;
2803
1.92k
        Token * _keyword_1;
2804
1.92k
        expr_ty a;
2805
1.92k
        expr_ty b;
2806
1.92k
        if (
2807
1.92k
            (_keyword = _PyPegen_expect_token(p, 628))  // token='raise'
2808
1.92k
            &&
2809
1.92k
            (a = expression_rule(p))  // expression
2810
1.92k
            &&
2811
1.92k
            (_keyword_1 = _PyPegen_expect_token(p, 638))  // token='from'
2812
1.92k
            &&
2813
1.92k
            (b = expression_rule(p))  // expression
2814
1.92k
        )
2815
66
        {
2816
66
            D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' expression 'from' expression"));
2817
66
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2818
66
            if (_token == NULL) {
2819
0
                p->level--;
2820
0
                return NULL;
2821
0
            }
2822
66
            int _end_lineno = _token->end_lineno;
2823
66
            UNUSED(_end_lineno); // Only used by EXTRA macro
2824
66
            int _end_col_offset = _token->end_col_offset;
2825
66
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2826
66
            _res = _PyAST_Raise ( a , b , EXTRA );
2827
66
            if (_res == NULL && PyErr_Occurred()) {
2828
0
                p->error_indicator = 1;
2829
0
                p->level--;
2830
0
                return NULL;
2831
0
            }
2832
66
            goto done;
2833
66
        }
2834
1.85k
        p->mark = _mark;
2835
1.85k
        D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2836
1.85k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' expression 'from' expression"));
2837
1.85k
    }
2838
1.85k
    if (p->call_invalid_rules) { // invalid_raise_stmt
2839
455
        if (p->error_indicator) {
2840
1
            p->level--;
2841
1
            return NULL;
2842
1
        }
2843
454
        D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_raise_stmt"));
2844
454
        void *invalid_raise_stmt_var;
2845
454
        if (
2846
454
            (invalid_raise_stmt_var = invalid_raise_stmt_rule(p))  // invalid_raise_stmt
2847
454
        )
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
454
        p->mark = _mark;
2854
454
        D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2855
454
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_raise_stmt"));
2856
454
    }
2857
1.85k
    { // 'raise' expression
2858
1.85k
        if (p->error_indicator) {
2859
5
            p->level--;
2860
5
            return NULL;
2861
5
        }
2862
1.85k
        D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' expression"));
2863
1.85k
        Token * _keyword;
2864
1.85k
        expr_ty a;
2865
1.85k
        if (
2866
1.85k
            (_keyword = _PyPegen_expect_token(p, 628))  // token='raise'
2867
1.85k
            &&
2868
1.85k
            (a = expression_rule(p))  // expression
2869
1.85k
        )
2870
839
        {
2871
839
            D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' expression"));
2872
839
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2873
839
            if (_token == NULL) {
2874
0
                p->level--;
2875
0
                return NULL;
2876
0
            }
2877
839
            int _end_lineno = _token->end_lineno;
2878
839
            UNUSED(_end_lineno); // Only used by EXTRA macro
2879
839
            int _end_col_offset = _token->end_col_offset;
2880
839
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2881
839
            _res = _PyAST_Raise ( a , NULL , EXTRA );
2882
839
            if (_res == NULL && PyErr_Occurred()) {
2883
0
                p->error_indicator = 1;
2884
0
                p->level--;
2885
0
                return NULL;
2886
0
            }
2887
839
            goto done;
2888
839
        }
2889
1.01k
        p->mark = _mark;
2890
1.01k
        D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2891
1.01k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' expression"));
2892
1.01k
    }
2893
0
    { // 'raise'
2894
1.01k
        if (p->error_indicator) {
2895
0
            p->level--;
2896
0
            return NULL;
2897
0
        }
2898
1.01k
        D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise'"));
2899
1.01k
        Token * _keyword;
2900
1.01k
        if (
2901
1.01k
            (_keyword = _PyPegen_expect_token(p, 628))  // token='raise'
2902
1.01k
        )
2903
1.01k
        {
2904
1.01k
            D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise'"));
2905
1.01k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2906
1.01k
            if (_token == NULL) {
2907
0
                p->level--;
2908
0
                return NULL;
2909
0
            }
2910
1.01k
            int _end_lineno = _token->end_lineno;
2911
1.01k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2912
1.01k
            int _end_col_offset = _token->end_col_offset;
2913
1.01k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2914
1.01k
            _res = _PyAST_Raise ( NULL , NULL , EXTRA );
2915
1.01k
            if (_res == NULL && PyErr_Occurred()) {
2916
0
                p->error_indicator = 1;
2917
0
                p->level--;
2918
0
                return NULL;
2919
0
            }
2920
1.01k
            goto done;
2921
1.01k
        }
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
1.91k
  done:
2928
1.91k
    p->level--;
2929
1.91k
    return _res;
2930
0
}
2931
2932
// pass_stmt: 'pass'
2933
static stmt_ty
2934
pass_stmt_rule(Parser *p)
2935
295k
{
2936
295k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2937
0
        _Pypegen_stack_overflow(p);
2938
0
    }
2939
295k
    if (p->error_indicator) {
2940
0
        p->level--;
2941
0
        return NULL;
2942
0
    }
2943
295k
    stmt_ty _res = NULL;
2944
295k
    int _mark = p->mark;
2945
295k
    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
295k
    int _start_lineno = p->tokens[_mark]->lineno;
2951
295k
    UNUSED(_start_lineno); // Only used by EXTRA macro
2952
295k
    int _start_col_offset = p->tokens[_mark]->col_offset;
2953
295k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
2954
295k
    { // 'pass'
2955
295k
        if (p->error_indicator) {
2956
0
            p->level--;
2957
0
            return NULL;
2958
0
        }
2959
295k
        D(fprintf(stderr, "%*c> pass_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'pass'"));
2960
295k
        Token * _keyword;
2961
295k
        if (
2962
295k
            (_keyword = _PyPegen_expect_token(p, 527))  // token='pass'
2963
295k
        )
2964
1.32k
        {
2965
1.32k
            D(fprintf(stderr, "%*c+ pass_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'pass'"));
2966
1.32k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2967
1.32k
            if (_token == NULL) {
2968
0
                p->level--;
2969
0
                return NULL;
2970
0
            }
2971
1.32k
            int _end_lineno = _token->end_lineno;
2972
1.32k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2973
1.32k
            int _end_col_offset = _token->end_col_offset;
2974
1.32k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2975
1.32k
            _res = _PyAST_Pass ( EXTRA );
2976
1.32k
            if (_res == NULL && PyErr_Occurred()) {
2977
0
                p->error_indicator = 1;
2978
0
                p->level--;
2979
0
                return NULL;
2980
0
            }
2981
1.32k
            goto done;
2982
1.32k
        }
2983
294k
        p->mark = _mark;
2984
294k
        D(fprintf(stderr, "%*c%s pass_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2985
294k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'pass'"));
2986
294k
    }
2987
0
    _res = NULL;
2988
295k
  done:
2989
295k
    p->level--;
2990
295k
    return _res;
2991
294k
}
2992
2993
// break_stmt: 'break'
2994
static stmt_ty
2995
break_stmt_rule(Parser *p)
2996
295k
{
2997
295k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2998
0
        _Pypegen_stack_overflow(p);
2999
0
    }
3000
295k
    if (p->error_indicator) {
3001
0
        p->level--;
3002
0
        return NULL;
3003
0
    }
3004
295k
    stmt_ty _res = NULL;
3005
295k
    int _mark = p->mark;
3006
295k
    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
295k
    int _start_lineno = p->tokens[_mark]->lineno;
3012
295k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3013
295k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3014
295k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3015
295k
    { // 'break'
3016
295k
        if (p->error_indicator) {
3017
0
            p->level--;
3018
0
            return NULL;
3019
0
        }
3020
295k
        D(fprintf(stderr, "%*c> break_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'break'"));
3021
295k
        Token * _keyword;
3022
295k
        if (
3023
295k
            (_keyword = _PyPegen_expect_token(p, 528))  // token='break'
3024
295k
        )
3025
2.25k
        {
3026
2.25k
            D(fprintf(stderr, "%*c+ break_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'break'"));
3027
2.25k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3028
2.25k
            if (_token == NULL) {
3029
0
                p->level--;
3030
0
                return NULL;
3031
0
            }
3032
2.25k
            int _end_lineno = _token->end_lineno;
3033
2.25k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3034
2.25k
            int _end_col_offset = _token->end_col_offset;
3035
2.25k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3036
2.25k
            _res = _PyAST_Break ( EXTRA );
3037
2.25k
            if (_res == NULL && PyErr_Occurred()) {
3038
0
                p->error_indicator = 1;
3039
0
                p->level--;
3040
0
                return NULL;
3041
0
            }
3042
2.25k
            goto done;
3043
2.25k
        }
3044
293k
        p->mark = _mark;
3045
293k
        D(fprintf(stderr, "%*c%s break_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3046
293k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'break'"));
3047
293k
    }
3048
0
    _res = NULL;
3049
295k
  done:
3050
295k
    p->level--;
3051
295k
    return _res;
3052
293k
}
3053
3054
// continue_stmt: 'continue'
3055
static stmt_ty
3056
continue_stmt_rule(Parser *p)
3057
294k
{
3058
294k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3059
0
        _Pypegen_stack_overflow(p);
3060
0
    }
3061
294k
    if (p->error_indicator) {
3062
0
        p->level--;
3063
0
        return NULL;
3064
0
    }
3065
294k
    stmt_ty _res = NULL;
3066
294k
    int _mark = p->mark;
3067
294k
    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
294k
    int _start_lineno = p->tokens[_mark]->lineno;
3073
294k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3074
294k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3075
294k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3076
294k
    { // 'continue'
3077
294k
        if (p->error_indicator) {
3078
0
            p->level--;
3079
0
            return NULL;
3080
0
        }
3081
294k
        D(fprintf(stderr, "%*c> continue_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'continue'"));
3082
294k
        Token * _keyword;
3083
294k
        if (
3084
294k
            (_keyword = _PyPegen_expect_token(p, 529))  // token='continue'
3085
294k
        )
3086
1.29k
        {
3087
1.29k
            D(fprintf(stderr, "%*c+ continue_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'continue'"));
3088
1.29k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3089
1.29k
            if (_token == NULL) {
3090
0
                p->level--;
3091
0
                return NULL;
3092
0
            }
3093
1.29k
            int _end_lineno = _token->end_lineno;
3094
1.29k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3095
1.29k
            int _end_col_offset = _token->end_col_offset;
3096
1.29k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3097
1.29k
            _res = _PyAST_Continue ( EXTRA );
3098
1.29k
            if (_res == NULL && PyErr_Occurred()) {
3099
0
                p->error_indicator = 1;
3100
0
                p->level--;
3101
0
                return NULL;
3102
0
            }
3103
1.29k
            goto done;
3104
1.29k
        }
3105
293k
        p->mark = _mark;
3106
293k
        D(fprintf(stderr, "%*c%s continue_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3107
293k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'continue'"));
3108
293k
    }
3109
0
    _res = NULL;
3110
294k
  done:
3111
294k
    p->level--;
3112
294k
    return _res;
3113
293k
}
3114
3115
// global_stmt: 'global' ','.NAME+
3116
static stmt_ty
3117
global_stmt_rule(Parser *p)
3118
1.68k
{
3119
1.68k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3120
0
        _Pypegen_stack_overflow(p);
3121
0
    }
3122
1.68k
    if (p->error_indicator) {
3123
0
        p->level--;
3124
0
        return NULL;
3125
0
    }
3126
1.68k
    stmt_ty _res = NULL;
3127
1.68k
    int _mark = p->mark;
3128
1.68k
    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
1.68k
    int _start_lineno = p->tokens[_mark]->lineno;
3134
1.68k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3135
1.68k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3136
1.68k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3137
1.68k
    { // 'global' ','.NAME+
3138
1.68k
        if (p->error_indicator) {
3139
0
            p->level--;
3140
0
            return NULL;
3141
0
        }
3142
1.68k
        D(fprintf(stderr, "%*c> global_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'global' ','.NAME+"));
3143
1.68k
        Token * _keyword;
3144
1.68k
        asdl_expr_seq* a;
3145
1.68k
        if (
3146
1.68k
            (_keyword = _PyPegen_expect_token(p, 530))  // token='global'
3147
1.68k
            &&
3148
1.68k
            (a = (asdl_expr_seq*)_gather_14_rule(p))  // ','.NAME+
3149
1.68k
        )
3150
1.68k
        {
3151
1.68k
            D(fprintf(stderr, "%*c+ global_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'global' ','.NAME+"));
3152
1.68k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3153
1.68k
            if (_token == NULL) {
3154
0
                p->level--;
3155
0
                return NULL;
3156
0
            }
3157
1.68k
            int _end_lineno = _token->end_lineno;
3158
1.68k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3159
1.68k
            int _end_col_offset = _token->end_col_offset;
3160
1.68k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3161
1.68k
            _res = _PyAST_Global ( CHECK ( asdl_identifier_seq* , _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
3162
1.68k
            if (_res == NULL && PyErr_Occurred()) {
3163
0
                p->error_indicator = 1;
3164
0
                p->level--;
3165
0
                return NULL;
3166
0
            }
3167
1.68k
            goto done;
3168
1.68k
        }
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
1.68k
  done:
3175
1.68k
    p->level--;
3176
1.68k
    return _res;
3177
5
}
3178
3179
// nonlocal_stmt: 'nonlocal' ','.NAME+
3180
static stmt_ty
3181
nonlocal_stmt_rule(Parser *p)
3182
326
{
3183
326
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3184
0
        _Pypegen_stack_overflow(p);
3185
0
    }
3186
326
    if (p->error_indicator) {
3187
0
        p->level--;
3188
0
        return NULL;
3189
0
    }
3190
326
    stmt_ty _res = NULL;
3191
326
    int _mark = p->mark;
3192
326
    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
326
    int _start_lineno = p->tokens[_mark]->lineno;
3198
326
    UNUSED(_start_lineno); // Only used by EXTRA macro
3199
326
    int _start_col_offset = p->tokens[_mark]->col_offset;
3200
326
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3201
326
    { // 'nonlocal' ','.NAME+
3202
326
        if (p->error_indicator) {
3203
0
            p->level--;
3204
0
            return NULL;
3205
0
        }
3206
326
        D(fprintf(stderr, "%*c> nonlocal_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'nonlocal' ','.NAME+"));
3207
326
        Token * _keyword;
3208
326
        asdl_expr_seq* a;
3209
326
        if (
3210
326
            (_keyword = _PyPegen_expect_token(p, 531))  // token='nonlocal'
3211
326
            &&
3212
326
            (a = (asdl_expr_seq*)_gather_14_rule(p))  // ','.NAME+
3213
326
        )
3214
317
        {
3215
317
            D(fprintf(stderr, "%*c+ nonlocal_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'nonlocal' ','.NAME+"));
3216
317
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3217
317
            if (_token == NULL) {
3218
0
                p->level--;
3219
0
                return NULL;
3220
0
            }
3221
317
            int _end_lineno = _token->end_lineno;
3222
317
            UNUSED(_end_lineno); // Only used by EXTRA macro
3223
317
            int _end_col_offset = _token->end_col_offset;
3224
317
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3225
317
            _res = _PyAST_Nonlocal ( CHECK ( asdl_identifier_seq* , _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
3226
317
            if (_res == NULL && PyErr_Occurred()) {
3227
0
                p->error_indicator = 1;
3228
0
                p->level--;
3229
0
                return NULL;
3230
0
            }
3231
317
            goto done;
3232
317
        }
3233
9
        p->mark = _mark;
3234
9
        D(fprintf(stderr, "%*c%s nonlocal_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3235
9
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'nonlocal' ','.NAME+"));
3236
9
    }
3237
0
    _res = NULL;
3238
326
  done:
3239
326
    p->level--;
3240
326
    return _res;
3241
9
}
3242
3243
// del_stmt: 'del' del_targets &(';' | NEWLINE) | invalid_del_stmt
3244
static stmt_ty
3245
del_stmt_rule(Parser *p)
3246
3.16k
{
3247
3.16k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3248
0
        _Pypegen_stack_overflow(p);
3249
0
    }
3250
3.16k
    if (p->error_indicator) {
3251
0
        p->level--;
3252
0
        return NULL;
3253
0
    }
3254
3.16k
    stmt_ty _res = NULL;
3255
3.16k
    int _mark = p->mark;
3256
3.16k
    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
3.16k
    int _start_lineno = p->tokens[_mark]->lineno;
3262
3.16k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3263
3.16k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3264
3.16k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3265
3.16k
    { // 'del' del_targets &(';' | NEWLINE)
3266
3.16k
        if (p->error_indicator) {
3267
0
            p->level--;
3268
0
            return NULL;
3269
0
        }
3270
3.16k
        D(fprintf(stderr, "%*c> del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3271
3.16k
        Token * _keyword;
3272
3.16k
        asdl_expr_seq* a;
3273
3.16k
        if (
3274
3.16k
            (_keyword = _PyPegen_expect_token(p, 630))  // token='del'
3275
3.16k
            &&
3276
3.16k
            (a = del_targets_rule(p))  // del_targets
3277
3.16k
            &&
3278
3.16k
            _PyPegen_lookahead(1, _tmp_15_rule, p)
3279
3.16k
        )
3280
2.91k
        {
3281
2.91k
            D(fprintf(stderr, "%*c+ del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3282
2.91k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3283
2.91k
            if (_token == NULL) {
3284
0
                p->level--;
3285
0
                return NULL;
3286
0
            }
3287
2.91k
            int _end_lineno = _token->end_lineno;
3288
2.91k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3289
2.91k
            int _end_col_offset = _token->end_col_offset;
3290
2.91k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3291
2.91k
            _res = _PyAST_Delete ( a , EXTRA );
3292
2.91k
            if (_res == NULL && PyErr_Occurred()) {
3293
0
                p->error_indicator = 1;
3294
0
                p->level--;
3295
0
                return NULL;
3296
0
            }
3297
2.91k
            goto done;
3298
2.91k
        }
3299
252
        p->mark = _mark;
3300
252
        D(fprintf(stderr, "%*c%s del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3301
252
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3302
252
    }
3303
252
    if (p->call_invalid_rules) { // invalid_del_stmt
3304
124
        if (p->error_indicator) {
3305
12
            p->level--;
3306
12
            return NULL;
3307
12
        }
3308
112
        D(fprintf(stderr, "%*c> del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_del_stmt"));
3309
112
        void *invalid_del_stmt_var;
3310
112
        if (
3311
112
            (invalid_del_stmt_var = invalid_del_stmt_rule(p))  // invalid_del_stmt
3312
112
        )
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
112
        p->mark = _mark;
3319
112
        D(fprintf(stderr, "%*c%s del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3320
112
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_del_stmt"));
3321
112
    }
3322
240
    _res = NULL;
3323
3.15k
  done:
3324
3.15k
    p->level--;
3325
3.15k
    return _res;
3326
240
}
3327
3328
// yield_stmt: yield_expr
3329
static stmt_ty
3330
yield_stmt_rule(Parser *p)
3331
1.27k
{
3332
1.27k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3333
0
        _Pypegen_stack_overflow(p);
3334
0
    }
3335
1.27k
    if (p->error_indicator) {
3336
0
        p->level--;
3337
0
        return NULL;
3338
0
    }
3339
1.27k
    stmt_ty _res = NULL;
3340
1.27k
    int _mark = p->mark;
3341
1.27k
    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.27k
    int _start_lineno = p->tokens[_mark]->lineno;
3347
1.27k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3348
1.27k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3349
1.27k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3350
1.27k
    { // yield_expr
3351
1.27k
        if (p->error_indicator) {
3352
0
            p->level--;
3353
0
            return NULL;
3354
0
        }
3355
1.27k
        D(fprintf(stderr, "%*c> yield_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
3356
1.27k
        expr_ty y;
3357
1.27k
        if (
3358
1.27k
            (y = yield_expr_rule(p))  // yield_expr
3359
1.27k
        )
3360
1.27k
        {
3361
1.27k
            D(fprintf(stderr, "%*c+ yield_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
3362
1.27k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3363
1.27k
            if (_token == NULL) {
3364
0
                p->level--;
3365
0
                return NULL;
3366
0
            }
3367
1.27k
            int _end_lineno = _token->end_lineno;
3368
1.27k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3369
1.27k
            int _end_col_offset = _token->end_col_offset;
3370
1.27k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3371
1.27k
            _res = _PyAST_Expr ( y , EXTRA );
3372
1.27k
            if (_res == NULL && PyErr_Occurred()) {
3373
0
                p->error_indicator = 1;
3374
0
                p->level--;
3375
0
                return NULL;
3376
0
            }
3377
1.27k
            goto done;
3378
1.27k
        }
3379
4
        p->mark = _mark;
3380
4
        D(fprintf(stderr, "%*c%s yield_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3381
4
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
3382
4
    }
3383
0
    _res = NULL;
3384
1.27k
  done:
3385
1.27k
    p->level--;
3386
1.27k
    return _res;
3387
4
}
3388
3389
// assert_stmt: 'assert' expression [',' expression]
3390
static stmt_ty
3391
assert_stmt_rule(Parser *p)
3392
3.96k
{
3393
3.96k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3394
0
        _Pypegen_stack_overflow(p);
3395
0
    }
3396
3.96k
    if (p->error_indicator) {
3397
0
        p->level--;
3398
0
        return NULL;
3399
0
    }
3400
3.96k
    stmt_ty _res = NULL;
3401
3.96k
    int _mark = p->mark;
3402
3.96k
    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
3.96k
    int _start_lineno = p->tokens[_mark]->lineno;
3408
3.96k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3409
3.96k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3410
3.96k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3411
3.96k
    { // 'assert' expression [',' expression]
3412
3.96k
        if (p->error_indicator) {
3413
0
            p->level--;
3414
0
            return NULL;
3415
0
        }
3416
3.96k
        D(fprintf(stderr, "%*c> assert_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'assert' expression [',' expression]"));
3417
3.96k
        Token * _keyword;
3418
3.96k
        expr_ty a;
3419
3.96k
        void *b;
3420
3.96k
        if (
3421
3.96k
            (_keyword = _PyPegen_expect_token(p, 533))  // token='assert'
3422
3.96k
            &&
3423
3.96k
            (a = expression_rule(p))  // expression
3424
3.96k
            &&
3425
3.96k
            (b = _tmp_16_rule(p), !p->error_indicator)  // [',' expression]
3426
3.96k
        )
3427
3.95k
        {
3428
3.95k
            D(fprintf(stderr, "%*c+ assert_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'assert' expression [',' expression]"));
3429
3.95k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3430
3.95k
            if (_token == NULL) {
3431
0
                p->level--;
3432
0
                return NULL;
3433
0
            }
3434
3.95k
            int _end_lineno = _token->end_lineno;
3435
3.95k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3436
3.95k
            int _end_col_offset = _token->end_col_offset;
3437
3.95k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3438
3.95k
            _res = _PyAST_Assert ( a , b , EXTRA );
3439
3.95k
            if (_res == NULL && PyErr_Occurred()) {
3440
0
                p->error_indicator = 1;
3441
0
                p->level--;
3442
0
                return NULL;
3443
0
            }
3444
3.95k
            goto done;
3445
3.95k
        }
3446
11
        p->mark = _mark;
3447
11
        D(fprintf(stderr, "%*c%s assert_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3448
11
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'assert' expression [',' expression]"));
3449
11
    }
3450
0
    _res = NULL;
3451
3.96k
  done:
3452
3.96k
    p->level--;
3453
3.96k
    return _res;
3454
11
}
3455
3456
// import_stmt: invalid_import | import_name | import_from
3457
static stmt_ty
3458
import_stmt_rule(Parser *p)
3459
11.5k
{
3460
11.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3461
0
        _Pypegen_stack_overflow(p);
3462
0
    }
3463
11.5k
    if (p->error_indicator) {
3464
0
        p->level--;
3465
0
        return NULL;
3466
0
    }
3467
11.5k
    stmt_ty _res = NULL;
3468
11.5k
    int _mark = p->mark;
3469
11.5k
    if (p->call_invalid_rules) { // invalid_import
3470
3.21k
        if (p->error_indicator) {
3471
0
            p->level--;
3472
0
            return NULL;
3473
0
        }
3474
3.21k
        D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_import"));
3475
3.21k
        void *invalid_import_var;
3476
3.21k
        if (
3477
3.21k
            (invalid_import_var = invalid_import_rule(p))  // invalid_import
3478
3.21k
        )
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
3.21k
        p->mark = _mark;
3485
3.21k
        D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3486
3.21k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_import"));
3487
3.21k
    }
3488
11.5k
    { // import_name
3489
11.5k
        if (p->error_indicator) {
3490
4
            p->level--;
3491
4
            return NULL;
3492
4
        }
3493
11.5k
        D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_name"));
3494
11.5k
        stmt_ty import_name_var;
3495
11.5k
        if (
3496
11.5k
            (import_name_var = import_name_rule(p))  // import_name
3497
11.5k
        )
3498
5.06k
        {
3499
5.06k
            D(fprintf(stderr, "%*c+ import_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_name"));
3500
5.06k
            _res = import_name_var;
3501
5.06k
            goto done;
3502
5.06k
        }
3503
6.46k
        p->mark = _mark;
3504
6.46k
        D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3505
6.46k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_name"));
3506
6.46k
    }
3507
0
    { // import_from
3508
6.46k
        if (p->error_indicator) {
3509
5
            p->level--;
3510
5
            return NULL;
3511
5
        }
3512
6.46k
        D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from"));
3513
6.46k
        stmt_ty import_from_var;
3514
6.46k
        if (
3515
6.46k
            (import_from_var = import_from_rule(p))  // import_from
3516
6.46k
        )
3517
6.29k
        {
3518
6.29k
            D(fprintf(stderr, "%*c+ import_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from"));
3519
6.29k
            _res = import_from_var;
3520
6.29k
            goto done;
3521
6.29k
        }
3522
165
        p->mark = _mark;
3523
165
        D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3524
165
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from"));
3525
165
    }
3526
0
    _res = NULL;
3527
11.5k
  done:
3528
11.5k
    p->level--;
3529
11.5k
    return _res;
3530
165
}
3531
3532
// import_name: 'import' dotted_as_names
3533
static stmt_ty
3534
import_name_rule(Parser *p)
3535
11.5k
{
3536
11.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3537
0
        _Pypegen_stack_overflow(p);
3538
0
    }
3539
11.5k
    if (p->error_indicator) {
3540
0
        p->level--;
3541
0
        return NULL;
3542
0
    }
3543
11.5k
    stmt_ty _res = NULL;
3544
11.5k
    int _mark = p->mark;
3545
11.5k
    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
11.5k
    int _start_lineno = p->tokens[_mark]->lineno;
3551
11.5k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3552
11.5k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3553
11.5k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3554
11.5k
    { // 'import' dotted_as_names
3555
11.5k
        if (p->error_indicator) {
3556
0
            p->level--;
3557
0
            return NULL;
3558
0
        }
3559
11.5k
        D(fprintf(stderr, "%*c> import_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import' dotted_as_names"));
3560
11.5k
        Token * _keyword;
3561
11.5k
        asdl_alias_seq* a;
3562
11.5k
        if (
3563
11.5k
            (_keyword = _PyPegen_expect_token(p, 639))  // token='import'
3564
11.5k
            &&
3565
11.5k
            (a = dotted_as_names_rule(p))  // dotted_as_names
3566
11.5k
        )
3567
5.06k
        {
3568
5.06k
            D(fprintf(stderr, "%*c+ import_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import' dotted_as_names"));
3569
5.06k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3570
5.06k
            if (_token == NULL) {
3571
0
                p->level--;
3572
0
                return NULL;
3573
0
            }
3574
5.06k
            int _end_lineno = _token->end_lineno;
3575
5.06k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3576
5.06k
            int _end_col_offset = _token->end_col_offset;
3577
5.06k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3578
5.06k
            _res = _PyAST_Import ( a , EXTRA );
3579
5.06k
            if (_res == NULL && PyErr_Occurred()) {
3580
0
                p->error_indicator = 1;
3581
0
                p->level--;
3582
0
                return NULL;
3583
0
            }
3584
5.06k
            goto done;
3585
5.06k
        }
3586
6.46k
        p->mark = _mark;
3587
6.46k
        D(fprintf(stderr, "%*c%s import_name[%d-%d]: %s failed!\n", p->level, ' ',
3588
6.46k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import' dotted_as_names"));
3589
6.46k
    }
3590
0
    _res = NULL;
3591
11.5k
  done:
3592
11.5k
    p->level--;
3593
11.5k
    return _res;
3594
6.46k
}
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
6.46k
{
3602
6.46k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3603
0
        _Pypegen_stack_overflow(p);
3604
0
    }
3605
6.46k
    if (p->error_indicator) {
3606
0
        p->level--;
3607
0
        return NULL;
3608
0
    }
3609
6.46k
    stmt_ty _res = NULL;
3610
6.46k
    int _mark = p->mark;
3611
6.46k
    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
6.46k
    int _start_lineno = p->tokens[_mark]->lineno;
3617
6.46k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3618
6.46k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3619
6.46k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3620
6.46k
    { // 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
3621
6.46k
        if (p->error_indicator) {
3622
0
            p->level--;
3623
0
            return NULL;
3624
0
        }
3625
6.46k
        D(fprintf(stderr, "%*c> import_from[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3626
6.46k
        Token * _keyword;
3627
6.46k
        Token * _keyword_1;
3628
6.46k
        asdl_seq * a;
3629
6.46k
        expr_ty b;
3630
6.46k
        asdl_alias_seq* c;
3631
6.46k
        if (
3632
6.46k
            (_keyword = _PyPegen_expect_token(p, 638))  // token='from'
3633
6.46k
            &&
3634
6.46k
            (a = _loop0_17_rule(p))  // (('.' | '...'))*
3635
6.46k
            &&
3636
6.46k
            (b = dotted_name_rule(p))  // dotted_name
3637
6.46k
            &&
3638
6.46k
            (_keyword_1 = _PyPegen_expect_token(p, 639))  // token='import'
3639
6.46k
            &&
3640
6.46k
            (c = import_from_targets_rule(p))  // import_from_targets
3641
6.46k
        )
3642
6.03k
        {
3643
6.03k
            D(fprintf(stderr, "%*c+ import_from[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3644
6.03k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3645
6.03k
            if (_token == NULL) {
3646
0
                p->level--;
3647
0
                return NULL;
3648
0
            }
3649
6.03k
            int _end_lineno = _token->end_lineno;
3650
6.03k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3651
6.03k
            int _end_col_offset = _token->end_col_offset;
3652
6.03k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3653
6.03k
            _res = _PyPegen_checked_future_import ( p , b -> v . Name . id , c , _PyPegen_seq_count_dots ( a ) , EXTRA );
3654
6.03k
            if (_res == NULL && PyErr_Occurred()) {
3655
0
                p->error_indicator = 1;
3656
0
                p->level--;
3657
0
                return NULL;
3658
0
            }
3659
6.03k
            goto done;
3660
6.03k
        }
3661
424
        p->mark = _mark;
3662
424
        D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3663
424
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3664
424
    }
3665
0
    { // 'from' (('.' | '...'))+ 'import' import_from_targets
3666
424
        if (p->error_indicator) {
3667
27
            p->level--;
3668
27
            return NULL;
3669
27
        }
3670
397
        D(fprintf(stderr, "%*c> import_from[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3671
397
        Token * _keyword;
3672
397
        Token * _keyword_1;
3673
397
        asdl_seq * a;
3674
397
        asdl_alias_seq* b;
3675
397
        if (
3676
397
            (_keyword = _PyPegen_expect_token(p, 638))  // token='from'
3677
397
            &&
3678
397
            (a = _loop1_18_rule(p))  // (('.' | '...'))+
3679
397
            &&
3680
397
            (_keyword_1 = _PyPegen_expect_token(p, 639))  // token='import'
3681
397
            &&
3682
397
            (b = import_from_targets_rule(p))  // import_from_targets
3683
397
        )
3684
259
        {
3685
259
            D(fprintf(stderr, "%*c+ import_from[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3686
259
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3687
259
            if (_token == NULL) {
3688
0
                p->level--;
3689
0
                return NULL;
3690
0
            }
3691
259
            int _end_lineno = _token->end_lineno;
3692
259
            UNUSED(_end_lineno); // Only used by EXTRA macro
3693
259
            int _end_col_offset = _token->end_col_offset;
3694
259
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3695
259
            _res = _PyAST_ImportFrom ( NULL , b , _PyPegen_seq_count_dots ( a ) , EXTRA );
3696
259
            if (_res == NULL && PyErr_Occurred()) {
3697
0
                p->error_indicator = 1;
3698
0
                p->level--;
3699
0
                return NULL;
3700
0
            }
3701
259
            goto done;
3702
259
        }
3703
138
        p->mark = _mark;
3704
138
        D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3705
138
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3706
138
    }
3707
0
    _res = NULL;
3708
6.43k
  done:
3709
6.43k
    p->level--;
3710
6.43k
    return _res;
3711
138
}
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
6.34k
{
3721
6.34k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3722
0
        _Pypegen_stack_overflow(p);
3723
0
    }
3724
6.34k
    if (p->error_indicator) {
3725
0
        p->level--;
3726
0
        return NULL;
3727
0
    }
3728
6.34k
    asdl_alias_seq* _res = NULL;
3729
6.34k
    int _mark = p->mark;
3730
6.34k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3731
4
        p->error_indicator = 1;
3732
4
        p->level--;
3733
4
        return NULL;
3734
4
    }
3735
6.34k
    int _start_lineno = p->tokens[_mark]->lineno;
3736
6.34k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3737
6.34k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3738
6.34k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3739
6.34k
    { // '(' import_from_as_names ','? ')'
3740
6.34k
        if (p->error_indicator) {
3741
0
            p->level--;
3742
0
            return NULL;
3743
0
        }
3744
6.34k
        D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3745
6.34k
        Token * _literal;
3746
6.34k
        Token * _literal_1;
3747
6.34k
        void *_opt_var;
3748
6.34k
        UNUSED(_opt_var); // Silence compiler warnings
3749
6.34k
        asdl_alias_seq* a;
3750
6.34k
        if (
3751
6.34k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
3752
6.34k
            &&
3753
6.34k
            (a = import_from_as_names_rule(p))  // import_from_as_names
3754
6.34k
            &&
3755
6.34k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
3756
6.34k
            &&
3757
6.34k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
3758
6.34k
        )
3759
1
        {
3760
1
            D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3761
1
            _res = a;
3762
1
            if (_res == NULL && PyErr_Occurred()) {
3763
0
                p->error_indicator = 1;
3764
0
                p->level--;
3765
0
                return NULL;
3766
0
            }
3767
1
            goto done;
3768
1
        }
3769
6.33k
        p->mark = _mark;
3770
6.33k
        D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3771
6.33k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3772
6.33k
    }
3773
0
    { // import_from_as_names !','
3774
6.33k
        if (p->error_indicator) {
3775
4
            p->level--;
3776
4
            return NULL;
3777
4
        }
3778
6.33k
        D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_names !','"));
3779
6.33k
        asdl_alias_seq* import_from_as_names_var;
3780
6.33k
        if (
3781
6.33k
            (import_from_as_names_var = import_from_as_names_rule(p))  // import_from_as_names
3782
6.33k
            &&
3783
6.33k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
3784
6.33k
        )
3785
5.77k
        {
3786
5.77k
            D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_names !','"));
3787
5.77k
            _res = import_from_as_names_var;
3788
5.77k
            goto done;
3789
5.77k
        }
3790
558
        p->mark = _mark;
3791
558
        D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3792
558
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_names !','"));
3793
558
    }
3794
0
    { // '*'
3795
558
        if (p->error_indicator) {
3796
4
            p->level--;
3797
4
            return NULL;
3798
4
        }
3799
554
        D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
3800
554
        Token * _literal;
3801
554
        if (
3802
554
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
3803
554
        )
3804
517
        {
3805
517
            D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
3806
517
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3807
517
            if (_token == NULL) {
3808
0
                p->level--;
3809
0
                return NULL;
3810
0
            }
3811
517
            int _end_lineno = _token->end_lineno;
3812
517
            UNUSED(_end_lineno); // Only used by EXTRA macro
3813
517
            int _end_col_offset = _token->end_col_offset;
3814
517
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3815
517
            _res = ( asdl_alias_seq* ) _PyPegen_singleton_seq ( p , CHECK ( alias_ty , _PyPegen_alias_for_star ( p , EXTRA ) ) );
3816
517
            if (_res == NULL && PyErr_Occurred()) {
3817
0
                p->error_indicator = 1;
3818
0
                p->level--;
3819
0
                return NULL;
3820
0
            }
3821
517
            goto done;
3822
517
        }
3823
37
        p->mark = _mark;
3824
37
        D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3825
37
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
3826
37
    }
3827
37
    if (p->call_invalid_rules) { // invalid_import_from_targets
3828
18
        if (p->error_indicator) {
3829
0
            p->level--;
3830
0
            return NULL;
3831
0
        }
3832
18
        D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_import_from_targets"));
3833
18
        void *invalid_import_from_targets_var;
3834
18
        if (
3835
18
            (invalid_import_from_targets_var = invalid_import_from_targets_rule(p))  // invalid_import_from_targets
3836
18
        )
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
18
        p->mark = _mark;
3843
18
        D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3844
18
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_import_from_targets"));
3845
18
    }
3846
37
    _res = NULL;
3847
6.33k
  done:
3848
6.33k
    p->level--;
3849
6.33k
    return _res;
3850
37
}
3851
3852
// import_from_as_names: ','.import_from_as_name+
3853
static asdl_alias_seq*
3854
import_from_as_names_rule(Parser *p)
3855
6.36k
{
3856
6.36k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3857
0
        _Pypegen_stack_overflow(p);
3858
0
    }
3859
6.36k
    if (p->error_indicator) {
3860
0
        p->level--;
3861
0
        return NULL;
3862
0
    }
3863
6.36k
    asdl_alias_seq* _res = NULL;
3864
6.36k
    int _mark = p->mark;
3865
6.36k
    { // ','.import_from_as_name+
3866
6.36k
        if (p->error_indicator) {
3867
0
            p->level--;
3868
0
            return NULL;
3869
0
        }
3870
6.36k
        D(fprintf(stderr, "%*c> import_from_as_names[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.import_from_as_name+"));
3871
6.36k
        asdl_alias_seq* a;
3872
6.36k
        if (
3873
6.36k
            (a = (asdl_alias_seq*)_gather_20_rule(p))  // ','.import_from_as_name+
3874
6.36k
        )
3875
5.81k
        {
3876
5.81k
            D(fprintf(stderr, "%*c+ import_from_as_names[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.import_from_as_name+"));
3877
5.81k
            _res = a;
3878
5.81k
            if (_res == NULL && PyErr_Occurred()) {
3879
0
                p->error_indicator = 1;
3880
0
                p->level--;
3881
0
                return NULL;
3882
0
            }
3883
5.81k
            goto done;
3884
5.81k
        }
3885
548
        p->mark = _mark;
3886
548
        D(fprintf(stderr, "%*c%s import_from_as_names[%d-%d]: %s failed!\n", p->level, ' ',
3887
548
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.import_from_as_name+"));
3888
548
    }
3889
0
    _res = NULL;
3890
6.36k
  done:
3891
6.36k
    p->level--;
3892
6.36k
    return _res;
3893
548
}
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
9.70k
{
3899
9.70k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3900
0
        _Pypegen_stack_overflow(p);
3901
0
    }
3902
9.70k
    if (p->error_indicator) {
3903
0
        p->level--;
3904
0
        return NULL;
3905
0
    }
3906
9.70k
    alias_ty _res = NULL;
3907
9.70k
    int _mark = p->mark;
3908
9.70k
    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
9.70k
    int _start_lineno = p->tokens[_mark]->lineno;
3914
9.70k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3915
9.70k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3916
9.70k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3917
9.70k
    if (p->call_invalid_rules) { // invalid_import_from_as_name
3918
2.45k
        if (p->error_indicator) {
3919
0
            p->level--;
3920
0
            return NULL;
3921
0
        }
3922
2.45k
        D(fprintf(stderr, "%*c> import_from_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_import_from_as_name"));
3923
2.45k
        void *invalid_import_from_as_name_var;
3924
2.45k
        if (
3925
2.45k
            (invalid_import_from_as_name_var = invalid_import_from_as_name_rule(p))  // invalid_import_from_as_name
3926
2.45k
        )
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.45k
        p->mark = _mark;
3933
2.45k
        D(fprintf(stderr, "%*c%s import_from_as_name[%d-%d]: %s failed!\n", p->level, ' ',
3934
2.45k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_import_from_as_name"));
3935
2.45k
    }
3936
9.70k
    { // NAME ['as' NAME]
3937
9.70k
        if (p->error_indicator) {
3938
3
            p->level--;
3939
3
            return NULL;
3940
3
        }
3941
9.69k
        D(fprintf(stderr, "%*c> import_from_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ['as' NAME]"));
3942
9.69k
        expr_ty a;
3943
9.69k
        void *b;
3944
9.69k
        if (
3945
9.69k
            (a = _PyPegen_name_token(p))  // NAME
3946
9.69k
            &&
3947
9.69k
            (b = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
3948
9.69k
        )
3949
9.11k
        {
3950
9.11k
            D(fprintf(stderr, "%*c+ import_from_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ['as' NAME]"));
3951
9.11k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3952
9.11k
            if (_token == NULL) {
3953
0
                p->level--;
3954
0
                return NULL;
3955
0
            }
3956
9.11k
            int _end_lineno = _token->end_lineno;
3957
9.11k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3958
9.11k
            int _end_col_offset = _token->end_col_offset;
3959
9.11k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3960
9.11k
            _res = _PyAST_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , EXTRA );
3961
9.11k
            if (_res == NULL && PyErr_Occurred()) {
3962
0
                p->error_indicator = 1;
3963
0
                p->level--;
3964
0
                return NULL;
3965
0
            }
3966
9.11k
            goto done;
3967
9.11k
        }
3968
578
        p->mark = _mark;
3969
578
        D(fprintf(stderr, "%*c%s import_from_as_name[%d-%d]: %s failed!\n", p->level, ' ',
3970
578
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ['as' NAME]"));
3971
578
    }
3972
0
    _res = NULL;
3973
9.69k
  done:
3974
9.69k
    p->level--;
3975
9.69k
    return _res;
3976
578
}
3977
3978
// dotted_as_names: ','.dotted_as_name+
3979
static asdl_alias_seq*
3980
dotted_as_names_rule(Parser *p)
3981
5.07k
{
3982
5.07k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3983
0
        _Pypegen_stack_overflow(p);
3984
0
    }
3985
5.07k
    if (p->error_indicator) {
3986
0
        p->level--;
3987
0
        return NULL;
3988
0
    }
3989
5.07k
    asdl_alias_seq* _res = NULL;
3990
5.07k
    int _mark = p->mark;
3991
5.07k
    { // ','.dotted_as_name+
3992
5.07k
        if (p->error_indicator) {
3993
0
            p->level--;
3994
0
            return NULL;
3995
0
        }
3996
5.07k
        D(fprintf(stderr, "%*c> dotted_as_names[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.dotted_as_name+"));
3997
5.07k
        asdl_alias_seq* a;
3998
5.07k
        if (
3999
5.07k
            (a = (asdl_alias_seq*)_gather_23_rule(p))  // ','.dotted_as_name+
4000
5.07k
        )
4001
5.06k
        {
4002
5.06k
            D(fprintf(stderr, "%*c+ dotted_as_names[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.dotted_as_name+"));
4003
5.06k
            _res = a;
4004
5.06k
            if (_res == NULL && PyErr_Occurred()) {
4005
0
                p->error_indicator = 1;
4006
0
                p->level--;
4007
0
                return NULL;
4008
0
            }
4009
5.06k
            goto done;
4010
5.06k
        }
4011
15
        p->mark = _mark;
4012
15
        D(fprintf(stderr, "%*c%s dotted_as_names[%d-%d]: %s failed!\n", p->level, ' ',
4013
15
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.dotted_as_name+"));
4014
15
    }
4015
0
    _res = NULL;
4016
5.07k
  done:
4017
5.07k
    p->level--;
4018
5.07k
    return _res;
4019
15
}
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
16.8k
{
4025
16.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4026
0
        _Pypegen_stack_overflow(p);
4027
0
    }
4028
16.8k
    if (p->error_indicator) {
4029
0
        p->level--;
4030
0
        return NULL;
4031
0
    }
4032
16.8k
    alias_ty _res = NULL;
4033
16.8k
    int _mark = p->mark;
4034
16.8k
    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
16.8k
    int _start_lineno = p->tokens[_mark]->lineno;
4040
16.8k
    UNUSED(_start_lineno); // Only used by EXTRA macro
4041
16.8k
    int _start_col_offset = p->tokens[_mark]->col_offset;
4042
16.8k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
4043
16.8k
    if (p->call_invalid_rules) { // invalid_dotted_as_name
4044
6.05k
        if (p->error_indicator) {
4045
0
            p->level--;
4046
0
            return NULL;
4047
0
        }
4048
6.05k
        D(fprintf(stderr, "%*c> dotted_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_dotted_as_name"));
4049
6.05k
        void *invalid_dotted_as_name_var;
4050
6.05k
        if (
4051
6.05k
            (invalid_dotted_as_name_var = invalid_dotted_as_name_rule(p))  // invalid_dotted_as_name
4052
6.05k
        )
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
6.05k
        p->mark = _mark;
4059
6.05k
        D(fprintf(stderr, "%*c%s dotted_as_name[%d-%d]: %s failed!\n", p->level, ' ',
4060
6.05k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_dotted_as_name"));
4061
6.05k
    }
4062
16.8k
    { // dotted_name ['as' NAME]
4063
16.8k
        if (p->error_indicator) {
4064
5
            p->level--;
4065
5
            return NULL;
4066
5
        }
4067
16.8k
        D(fprintf(stderr, "%*c> dotted_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name ['as' NAME]"));
4068
16.8k
        expr_ty a;
4069
16.8k
        void *b;
4070
16.8k
        if (
4071
16.8k
            (a = dotted_name_rule(p))  // dotted_name
4072
16.8k
            &&
4073
16.8k
            (b = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
4074
16.8k
        )
4075
16.7k
        {
4076
16.7k
            D(fprintf(stderr, "%*c+ dotted_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name ['as' NAME]"));
4077
16.7k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4078
16.7k
            if (_token == NULL) {
4079
0
                p->level--;
4080
0
                return NULL;
4081
0
            }
4082
16.7k
            int _end_lineno = _token->end_lineno;
4083
16.7k
            UNUSED(_end_lineno); // Only used by EXTRA macro
4084
16.7k
            int _end_col_offset = _token->end_col_offset;
4085
16.7k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
4086
16.7k
            _res = _PyAST_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , EXTRA );
4087
16.7k
            if (_res == NULL && PyErr_Occurred()) {
4088
0
                p->error_indicator = 1;
4089
0
                p->level--;
4090
0
                return NULL;
4091
0
            }
4092
16.7k
            goto done;
4093
16.7k
        }
4094
41
        p->mark = _mark;
4095
41
        D(fprintf(stderr, "%*c%s dotted_as_name[%d-%d]: %s failed!\n", p->level, ' ',
4096
41
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name ['as' NAME]"));
4097
41
    }
4098
0
    _res = NULL;
4099
16.8k
  done:
4100
16.8k
    p->level--;
4101
16.8k
    return _res;
4102
41
}
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
92.5k
{
4110
92.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4111
0
        _Pypegen_stack_overflow(p);
4112
0
    }
4113
92.5k
    expr_ty _res = NULL;
4114
92.5k
    if (_PyPegen_is_memoized(p, dotted_name_type, &_res)) {
4115
69.2k
        p->level--;
4116
69.2k
        return _res;
4117
69.2k
    }
4118
23.2k
    int _mark = p->mark;
4119
23.2k
    int _resmark = p->mark;
4120
57.5k
    while (1) {
4121
57.5k
        int tmpvar_0 = _PyPegen_update_memo(p, _mark, dotted_name_type, _res);
4122
57.5k
        if (tmpvar_0) {
4123
0
            p->level--;
4124
0
            return _res;
4125
0
        }
4126
57.5k
        p->mark = _mark;
4127
57.5k
        void *_raw = dotted_name_raw(p);
4128
57.5k
        if (p->error_indicator) {
4129
17
            p->level--;
4130
17
            return NULL;
4131
17
        }
4132
57.5k
        if (_raw == NULL || p->mark <= _resmark)
4133
23.2k
            break;
4134
34.2k
        _resmark = p->mark;
4135
34.2k
        _res = _raw;
4136
34.2k
    }
4137
23.2k
    p->mark = _resmark;
4138
23.2k
    p->level--;
4139
23.2k
    return _res;
4140
23.2k
}
4141
static expr_ty
4142
dotted_name_raw(Parser *p)
4143
57.5k
{
4144
57.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4145
0
        _Pypegen_stack_overflow(p);
4146
0
    }
4147
57.5k
    if (p->error_indicator) {
4148
11
        p->level--;
4149
11
        return NULL;
4150
11
    }
4151
57.5k
    expr_ty _res = NULL;
4152
57.5k
    int _mark = p->mark;
4153
57.5k
    { // dotted_name '.' NAME
4154
57.5k
        if (p->error_indicator) {
4155
0
            p->level--;
4156
0
            return NULL;
4157
0
        }
4158
57.5k
        D(fprintf(stderr, "%*c> dotted_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name '.' NAME"));
4159
57.5k
        Token * _literal;
4160
57.5k
        expr_ty a;
4161
57.5k
        expr_ty b;
4162
57.5k
        if (
4163
57.5k
            (a = dotted_name_rule(p))  // dotted_name
4164
57.5k
            &&
4165
57.5k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
4166
57.5k
            &&
4167
57.5k
            (b = _PyPegen_name_token(p))  // NAME
4168
57.5k
        )
4169
11.3k
        {
4170
11.3k
            D(fprintf(stderr, "%*c+ dotted_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name '.' NAME"));
4171
11.3k
            _res = _PyPegen_join_names_with_dot ( p , a , b );
4172
11.3k
            if (_res == NULL && PyErr_Occurred()) {
4173
0
                p->error_indicator = 1;
4174
0
                p->level--;
4175
0
                return NULL;
4176
0
            }
4177
11.3k
            goto done;
4178
11.3k
        }
4179
46.2k
        p->mark = _mark;
4180
46.2k
        D(fprintf(stderr, "%*c%s dotted_name[%d-%d]: %s failed!\n", p->level, ' ',
4181
46.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name '.' NAME"));
4182
46.2k
    }
4183
0
    { // NAME
4184
46.2k
        if (p->error_indicator) {
4185
6
            p->level--;
4186
6
            return NULL;
4187
6
        }
4188
46.2k
        D(fprintf(stderr, "%*c> dotted_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
4189
46.2k
        expr_ty name_var;
4190
46.2k
        if (
4191
46.2k
            (name_var = _PyPegen_name_token(p))  // NAME
4192
46.2k
        )
4193
45.8k
        {
4194
45.8k
            D(fprintf(stderr, "%*c+ dotted_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
4195
45.8k
            _res = name_var;
4196
45.8k
            goto done;
4197
45.8k
        }
4198
347
        p->mark = _mark;
4199
347
        D(fprintf(stderr, "%*c%s dotted_name[%d-%d]: %s failed!\n", p->level, ' ',
4200
347
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
4201
347
    }
4202
0
    _res = NULL;
4203
57.5k
  done:
4204
57.5k
    p->level--;
4205
57.5k
    return _res;
4206
347
}
4207
4208
// block: NEWLINE INDENT statements DEDENT | simple_stmts | invalid_block
4209
static asdl_stmt_seq*
4210
block_rule(Parser *p)
4211
110k
{
4212
110k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4213
0
        _Pypegen_stack_overflow(p);
4214
0
    }
4215
110k
    if (p->error_indicator) {
4216
0
        p->level--;
4217
0
        return NULL;
4218
0
    }
4219
110k
    asdl_stmt_seq* _res = NULL;
4220
110k
    if (_PyPegen_is_memoized(p, block_type, &_res)) {
4221
25.7k
        p->level--;
4222
25.7k
        return _res;
4223
25.7k
    }
4224
85.0k
    int _mark = p->mark;
4225
85.0k
    { // NEWLINE INDENT statements DEDENT
4226
85.0k
        if (p->error_indicator) {
4227
0
            p->level--;
4228
0
            return NULL;
4229
0
        }
4230
85.0k
        D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
4231
85.0k
        asdl_stmt_seq* a;
4232
85.0k
        Token * dedent_var;
4233
85.0k
        Token * indent_var;
4234
85.0k
        Token * newline_var;
4235
85.0k
        if (
4236
85.0k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
4237
85.0k
            &&
4238
85.0k
            (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
4239
85.0k
            &&
4240
85.0k
            (a = statements_rule(p))  // statements
4241
85.0k
            &&
4242
85.0k
            (dedent_var = _PyPegen_expect_token(p, DEDENT))  // token='DEDENT'
4243
85.0k
        )
4244
23.7k
        {
4245
23.7k
            D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
4246
23.7k
            _res = a;
4247
23.7k
            if (_res == NULL && PyErr_Occurred()) {
4248
0
                p->error_indicator = 1;
4249
0
                p->level--;
4250
0
                return NULL;
4251
0
            }
4252
23.7k
            goto done;
4253
23.7k
        }
4254
61.3k
        p->mark = _mark;
4255
61.3k
        D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
4256
61.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
4257
61.3k
    }
4258
0
    { // simple_stmts
4259
61.3k
        if (p->error_indicator) {
4260
192
            p->level--;
4261
192
            return NULL;
4262
192
        }
4263
61.1k
        D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
4264
61.1k
        asdl_stmt_seq* simple_stmts_var;
4265
61.1k
        if (
4266
61.1k
            (simple_stmts_var = simple_stmts_rule(p))  // simple_stmts
4267
61.1k
        )
4268
57.8k
        {
4269
57.8k
            D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
4270
57.8k
            _res = simple_stmts_var;
4271
57.8k
            goto done;
4272
57.8k
        }
4273
3.28k
        p->mark = _mark;
4274
3.28k
        D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
4275
3.28k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
4276
3.28k
    }
4277
3.28k
    if (p->call_invalid_rules) { // invalid_block
4278
2.65k
        if (p->error_indicator) {
4279
29
            p->level--;
4280
29
            return NULL;
4281
29
        }
4282
2.62k
        D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_block"));
4283
2.62k
        void *invalid_block_var;
4284
2.62k
        if (
4285
2.62k
            (invalid_block_var = invalid_block_rule(p))  // invalid_block
4286
2.62k
        )
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.62k
        p->mark = _mark;
4293
2.62k
        D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
4294
2.62k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_block"));
4295
2.62k
    }
4296
3.25k
    _res = NULL;
4297
84.8k
  done:
4298
84.8k
    _PyPegen_insert_memo(p, _mark, block_type, _res);
4299
84.8k
    p->level--;
4300
84.8k
    return _res;
4301
3.25k
}
4302
4303
// decorators: (('@' named_expression NEWLINE))+
4304
static asdl_expr_seq*
4305
decorators_rule(Parser *p)
4306
40.9k
{
4307
40.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4308
0
        _Pypegen_stack_overflow(p);
4309
0
    }
4310
40.9k
    if (p->error_indicator) {
4311
0
        p->level--;
4312
0
        return NULL;
4313
0
    }
4314
40.9k
    asdl_expr_seq* _res = NULL;
4315
40.9k
    int _mark = p->mark;
4316
40.9k
    { // (('@' named_expression NEWLINE))+
4317
40.9k
        if (p->error_indicator) {
4318
0
            p->level--;
4319
0
            return NULL;
4320
0
        }
4321
40.9k
        D(fprintf(stderr, "%*c> decorators[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(('@' named_expression NEWLINE))+"));
4322
40.9k
        asdl_expr_seq* a;
4323
40.9k
        if (
4324
40.9k
            (a = (asdl_expr_seq*)_loop1_24_rule(p))  // (('@' named_expression NEWLINE))+
4325
40.9k
        )
4326
4.14k
        {
4327
4.14k
            D(fprintf(stderr, "%*c+ decorators[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(('@' named_expression NEWLINE))+"));
4328
4.14k
            _res = a;
4329
4.14k
            if (_res == NULL && PyErr_Occurred()) {
4330
0
                p->error_indicator = 1;
4331
0
                p->level--;
4332
0
                return NULL;
4333
0
            }
4334
4.14k
            goto done;
4335
4.14k
        }
4336
36.7k
        p->mark = _mark;
4337
36.7k
        D(fprintf(stderr, "%*c%s decorators[%d-%d]: %s failed!\n", p->level, ' ',
4338
36.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(('@' named_expression NEWLINE))+"));
4339
36.7k
    }
4340
0
    _res = NULL;
4341
40.9k
  done:
4342
40.9k
    p->level--;
4343
40.9k
    return _res;
4344
36.7k
}
4345
4346
// class_def: decorators class_def_raw | class_def_raw
4347
static stmt_ty
4348
class_def_rule(Parser *p)
4349
17.5k
{
4350
17.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4351
0
        _Pypegen_stack_overflow(p);
4352
0
    }
4353
17.5k
    if (p->error_indicator) {
4354
0
        p->level--;
4355
0
        return NULL;
4356
0
    }
4357
17.5k
    stmt_ty _res = NULL;
4358
17.5k
    int _mark = p->mark;
4359
17.5k
    { // decorators class_def_raw
4360
17.5k
        if (p->error_indicator) {
4361
0
            p->level--;
4362
0
            return NULL;
4363
0
        }
4364
17.5k
        D(fprintf(stderr, "%*c> class_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "decorators class_def_raw"));
4365
17.5k
        asdl_expr_seq* a;
4366
17.5k
        stmt_ty b;
4367
17.5k
        if (
4368
17.5k
            (a = decorators_rule(p))  // decorators
4369
17.5k
            &&
4370
17.5k
            (b = class_def_raw_rule(p))  // class_def_raw
4371
17.5k
        )
4372
1.11k
        {
4373
1.11k
            D(fprintf(stderr, "%*c+ class_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "decorators class_def_raw"));
4374
1.11k
            _res = _PyPegen_class_def_decorators ( p , a , b );
4375
1.11k
            if (_res == NULL && PyErr_Occurred()) {
4376
0
                p->error_indicator = 1;
4377
0
                p->level--;
4378
0
                return NULL;
4379
0
            }
4380
1.11k
            goto done;
4381
1.11k
        }
4382
16.3k
        p->mark = _mark;
4383
16.3k
        D(fprintf(stderr, "%*c%s class_def[%d-%d]: %s failed!\n", p->level, ' ',
4384
16.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "decorators class_def_raw"));
4385
16.3k
    }
4386
0
    { // class_def_raw
4387
16.3k
        if (p->error_indicator) {
4388
3
            p->level--;
4389
3
            return NULL;
4390
3
        }
4391
16.3k
        D(fprintf(stderr, "%*c> class_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "class_def_raw"));
4392
16.3k
        stmt_ty class_def_raw_var;
4393
16.3k
        if (
4394
16.3k
            (class_def_raw_var = class_def_raw_rule(p))  // class_def_raw
4395
16.3k
        )
4396
15.9k
        {
4397
15.9k
            D(fprintf(stderr, "%*c+ class_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "class_def_raw"));
4398
15.9k
            _res = class_def_raw_var;
4399
15.9k
            goto done;
4400
15.9k
        }
4401
402
        p->mark = _mark;
4402
402
        D(fprintf(stderr, "%*c%s class_def[%d-%d]: %s failed!\n", p->level, ' ',
4403
402
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "class_def_raw"));
4404
402
    }
4405
0
    _res = NULL;
4406
17.5k
  done:
4407
17.5k
    p->level--;
4408
17.5k
    return _res;
4409
402
}
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
17.6k
{
4417
17.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4418
0
        _Pypegen_stack_overflow(p);
4419
0
    }
4420
17.6k
    if (p->error_indicator) {
4421
0
        p->level--;
4422
0
        return NULL;
4423
0
    }
4424
17.6k
    stmt_ty _res = NULL;
4425
17.6k
    int _mark = p->mark;
4426
17.6k
    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
17.6k
    int _start_lineno = p->tokens[_mark]->lineno;
4432
17.6k
    UNUSED(_start_lineno); // Only used by EXTRA macro
4433
17.6k
    int _start_col_offset = p->tokens[_mark]->col_offset;
4434
17.6k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
4435
17.6k
    if (p->call_invalid_rules) { // invalid_class_def_raw
4436
2.34k
        if (p->error_indicator) {
4437
0
            p->level--;
4438
0
            return NULL;
4439
0
        }
4440
2.34k
        D(fprintf(stderr, "%*c> class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_class_def_raw"));
4441
2.34k
        void *invalid_class_def_raw_var;
4442
2.34k
        if (
4443
2.34k
            (invalid_class_def_raw_var = invalid_class_def_raw_rule(p))  // invalid_class_def_raw
4444
2.34k
        )
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
2.34k
        p->mark = _mark;
4451
2.34k
        D(fprintf(stderr, "%*c%s class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4452
2.34k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_class_def_raw"));
4453
2.34k
    }
4454
17.6k
    { // 'class' NAME type_params? ['(' arguments? ')'] ':' block
4455
17.6k
        if (p->error_indicator) {
4456
27
            p->level--;
4457
27
            return NULL;
4458
27
        }
4459
17.5k
        D(fprintf(stderr, "%*c> class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] ':' block"));
4460
17.5k
        Token * _keyword;
4461
17.5k
        Token * _literal;
4462
17.5k
        expr_ty a;
4463
17.5k
        void *b;
4464
17.5k
        asdl_stmt_seq* c;
4465
17.5k
        void *t;
4466
17.5k
        if (
4467
17.5k
            (_keyword = _PyPegen_expect_token(p, 706))  // token='class'
4468
17.5k
            &&
4469
17.5k
            (a = _PyPegen_name_token(p))  // NAME
4470
17.5k
            &&
4471
17.5k
            (t = type_params_rule(p), !p->error_indicator)  // type_params?
4472
17.5k
            &&
4473
17.5k
            (b = _tmp_25_rule(p), !p->error_indicator)  // ['(' arguments? ')']
4474
17.5k
            &&
4475
17.5k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
4476
17.5k
            &&
4477
17.5k
            (c = block_rule(p))  // block
4478
17.5k
        )
4479
17.1k
        {
4480
17.1k
            D(fprintf(stderr, "%*c+ class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] ':' block"));
4481
17.1k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4482
17.1k
            if (_token == NULL) {
4483
0
                p->level--;
4484
0
                return NULL;
4485
0
            }
4486
17.1k
            int _end_lineno = _token->end_lineno;
4487
17.1k
            UNUSED(_end_lineno); // Only used by EXTRA macro
4488
17.1k
            int _end_col_offset = _token->end_col_offset;
4489
17.1k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
4490
17.1k
            _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
17.1k
            if (_res == NULL && PyErr_Occurred()) {
4492
0
                p->error_indicator = 1;
4493
0
                p->level--;
4494
0
                return NULL;
4495
0
            }
4496
17.1k
            goto done;
4497
17.1k
        }
4498
475
        p->mark = _mark;
4499
475
        D(fprintf(stderr, "%*c%s class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4500
475
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] ':' block"));
4501
475
    }
4502
0
    _res = NULL;
4503
17.5k
  done:
4504
17.5k
    p->level--;
4505
17.5k
    return _res;
4506
475
}
4507
4508
// function_def: decorators function_def_raw | function_def_raw
4509
static stmt_ty
4510
function_def_rule(Parser *p)
4511
23.4k
{
4512
23.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4513
0
        _Pypegen_stack_overflow(p);
4514
0
    }
4515
23.4k
    if (p->error_indicator) {
4516
0
        p->level--;
4517
0
        return NULL;
4518
0
    }
4519
23.4k
    stmt_ty _res = NULL;
4520
23.4k
    int _mark = p->mark;
4521
23.4k
    { // decorators function_def_raw
4522
23.4k
        if (p->error_indicator) {
4523
0
            p->level--;
4524
0
            return NULL;
4525
0
        }
4526
23.4k
        D(fprintf(stderr, "%*c> function_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "decorators function_def_raw"));
4527
23.4k
        asdl_expr_seq* d;
4528
23.4k
        stmt_ty f;
4529
23.4k
        if (
4530
23.4k
            (d = decorators_rule(p))  // decorators
4531
23.4k
            &&
4532
23.4k
            (f = function_def_raw_rule(p))  // function_def_raw
4533
23.4k
        )
4534
1.70k
        {
4535
1.70k
            D(fprintf(stderr, "%*c+ function_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "decorators function_def_raw"));
4536
1.70k
            _res = _PyPegen_function_def_decorators ( p , d , f );
4537
1.70k
            if (_res == NULL && PyErr_Occurred()) {
4538
0
                p->error_indicator = 1;
4539
0
                p->level--;
4540
0
                return NULL;
4541
0
            }
4542
1.70k
            goto done;
4543
1.70k
        }
4544
21.6k
        p->mark = _mark;
4545
21.6k
        D(fprintf(stderr, "%*c%s function_def[%d-%d]: %s failed!\n", p->level, ' ',
4546
21.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "decorators function_def_raw"));
4547
21.6k
    }
4548
0
    { // function_def_raw
4549
21.6k
        if (p->error_indicator) {
4550
30
            p->level--;
4551
30
            return NULL;
4552
30
        }
4553
21.6k
        D(fprintf(stderr, "%*c> function_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "function_def_raw"));
4554
21.6k
        stmt_ty function_def_raw_var;
4555
21.6k
        if (
4556
21.6k
            (function_def_raw_var = function_def_raw_rule(p))  // function_def_raw
4557
21.6k
        )
4558
14.7k
        {
4559
14.7k
            D(fprintf(stderr, "%*c+ function_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "function_def_raw"));
4560
14.7k
            _res = function_def_raw_var;
4561
14.7k
            goto done;
4562
14.7k
        }
4563
6.92k
        p->mark = _mark;
4564
6.92k
        D(fprintf(stderr, "%*c%s function_def[%d-%d]: %s failed!\n", p->level, ' ',
4565
6.92k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "function_def_raw"));
4566
6.92k
    }
4567
0
    _res = NULL;
4568
23.3k
  done:
4569
23.3k
    p->level--;
4570
23.3k
    return _res;
4571
6.92k
}
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
24.5k
{
4580
24.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4581
0
        _Pypegen_stack_overflow(p);
4582
0
    }
4583
24.5k
    if (p->error_indicator) {
4584
0
        p->level--;
4585
0
        return NULL;
4586
0
    }
4587
24.5k
    stmt_ty _res = NULL;
4588
24.5k
    int _mark = p->mark;
4589
24.5k
    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
24.5k
    int _start_lineno = p->tokens[_mark]->lineno;
4595
24.5k
    UNUSED(_start_lineno); // Only used by EXTRA macro
4596
24.5k
    int _start_col_offset = p->tokens[_mark]->col_offset;
4597
24.5k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
4598
24.5k
    if (p->call_invalid_rules) { // invalid_def_raw
4599
5.05k
        if (p->error_indicator) {
4600
0
            p->level--;
4601
0
            return NULL;
4602
0
        }
4603
5.05k
        D(fprintf(stderr, "%*c> function_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_def_raw"));
4604
5.05k
        void *invalid_def_raw_var;
4605
5.05k
        if (
4606
5.05k
            (invalid_def_raw_var = invalid_def_raw_rule(p))  // invalid_def_raw
4607
5.05k
        )
4608
3.04k
        {
4609
3.04k
            D(fprintf(stderr, "%*c+ function_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_def_raw"));
4610
3.04k
            _res = invalid_def_raw_var;
4611
3.04k
            goto done;
4612
3.04k
        }
4613
2.00k
        p->mark = _mark;
4614
2.00k
        D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4615
2.00k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_def_raw"));
4616
2.00k
    }
4617
21.5k
    { // 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block
4618
21.5k
        if (p->error_indicator) {
4619
203
            p->level--;
4620
203
            return NULL;
4621
203
        }
4622
21.3k
        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
21.3k
        Token * _keyword;
4624
21.3k
        Token * _literal;
4625
21.3k
        Token * _literal_1;
4626
21.3k
        Token * _literal_2;
4627
21.3k
        void *a;
4628
21.3k
        asdl_stmt_seq* b;
4629
21.3k
        expr_ty n;
4630
21.3k
        void *params;
4631
21.3k
        void *t;
4632
21.3k
        void *tc;
4633
21.3k
        if (
4634
21.3k
            (_keyword = _PyPegen_expect_token(p, 704))  // token='def'
4635
21.3k
            &&
4636
21.3k
            (n = _PyPegen_name_token(p))  // NAME
4637
21.3k
            &&
4638
21.3k
            (t = type_params_rule(p), !p->error_indicator)  // type_params?
4639
21.3k
            &&
4640
21.3k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
4641
21.3k
            &&
4642
21.3k
            (params = params_rule(p), !p->error_indicator)  // params?
4643
21.3k
            &&
4644
21.3k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
4645
21.3k
            &&
4646
21.3k
            (a = _tmp_26_rule(p), !p->error_indicator)  // ['->' expression]
4647
21.3k
            &&
4648
21.3k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
4649
21.3k
            &&
4650
21.3k
            (tc = func_type_comment_rule(p), !p->error_indicator)  // func_type_comment?
4651
21.3k
            &&
4652
21.3k
            (b = block_rule(p))  // block
4653
21.3k
        )
4654
8.95k
        {
4655
8.95k
            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
8.95k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4657
8.95k
            if (_token == NULL) {
4658
0
                p->level--;
4659
0
                return NULL;
4660
0
            }
4661
8.95k
            int _end_lineno = _token->end_lineno;
4662
8.95k
            UNUSED(_end_lineno); // Only used by EXTRA macro
4663
8.95k
            int _end_col_offset = _token->end_col_offset;
4664
8.95k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
4665
8.95k
            _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
8.95k
            if (_res == NULL && PyErr_Occurred()) {
4667
0
                p->error_indicator = 1;
4668
0
                p->level--;
4669
0
                return NULL;
4670
0
            }
4671
8.95k
            goto done;
4672
8.95k
        }
4673
12.3k
        p->mark = _mark;
4674
12.3k
        D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4675
12.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block"));
4676
12.3k
    }
4677
0
    { // 'async' 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block
4678
12.3k
        if (p->error_indicator) {
4679
68
            p->level--;
4680
68
            return NULL;
4681
68
        }
4682
12.3k
        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
12.3k
        Token * _keyword;
4684
12.3k
        Token * _keyword_1;
4685
12.3k
        Token * _literal;
4686
12.3k
        Token * _literal_1;
4687
12.3k
        Token * _literal_2;
4688
12.3k
        void *a;
4689
12.3k
        asdl_stmt_seq* b;
4690
12.3k
        expr_ty n;
4691
12.3k
        void *params;
4692
12.3k
        void *t;
4693
12.3k
        void *tc;
4694
12.3k
        if (
4695
12.3k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
4696
12.3k
            &&
4697
12.3k
            (_keyword_1 = _PyPegen_expect_token(p, 704))  // token='def'
4698
12.3k
            &&
4699
12.3k
            (n = _PyPegen_name_token(p))  // NAME
4700
12.3k
            &&
4701
12.3k
            (t = type_params_rule(p), !p->error_indicator)  // type_params?
4702
12.3k
            &&
4703
12.3k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
4704
12.3k
            &&
4705
12.3k
            (params = params_rule(p), !p->error_indicator)  // params?
4706
12.3k
            &&
4707
12.3k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
4708
12.3k
            &&
4709
12.3k
            (a = _tmp_26_rule(p), !p->error_indicator)  // ['->' expression]
4710
12.3k
            &&
4711
12.3k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
4712
12.3k
            &&
4713
12.3k
            (tc = func_type_comment_rule(p), !p->error_indicator)  // func_type_comment?
4714
12.3k
            &&
4715
12.3k
            (b = block_rule(p))  // block
4716
12.3k
        )
4717
4.45k
        {
4718
4.45k
            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
4.45k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4720
4.45k
            if (_token == NULL) {
4721
0
                p->level--;
4722
0
                return NULL;
4723
0
            }
4724
4.45k
            int _end_lineno = _token->end_lineno;
4725
4.45k
            UNUSED(_end_lineno); // Only used by EXTRA macro
4726
4.45k
            int _end_col_offset = _token->end_col_offset;
4727
4.45k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
4728
4.45k
            _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
4.45k
            if (_res == NULL && PyErr_Occurred()) {
4730
0
                p->error_indicator = 1;
4731
0
                p->level--;
4732
0
                return NULL;
4733
0
            }
4734
4.45k
            goto done;
4735
4.45k
        }
4736
7.88k
        p->mark = _mark;
4737
7.88k
        D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4738
7.88k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block"));
4739
7.88k
    }
4740
0
    _res = NULL;
4741
24.3k
  done:
4742
24.3k
    p->level--;
4743
24.3k
    return _res;
4744
7.88k
}
4745
4746
// params: invalid_parameters | parameters
4747
static arguments_ty
4748
params_rule(Parser *p)
4749
20.7k
{
4750
20.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4751
0
        _Pypegen_stack_overflow(p);
4752
0
    }
4753
20.7k
    if (p->error_indicator) {
4754
0
        p->level--;
4755
0
        return NULL;
4756
0
    }
4757
20.7k
    arguments_ty _res = NULL;
4758
20.7k
    int _mark = p->mark;
4759
20.7k
    if (p->call_invalid_rules) { // invalid_parameters
4760
6.96k
        if (p->error_indicator) {
4761
0
            p->level--;
4762
0
            return NULL;
4763
0
        }
4764
6.96k
        D(fprintf(stderr, "%*c> params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_parameters"));
4765
6.96k
        void *invalid_parameters_var;
4766
6.96k
        if (
4767
6.96k
            (invalid_parameters_var = invalid_parameters_rule(p))  // invalid_parameters
4768
6.96k
        )
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
6.96k
        p->mark = _mark;
4775
6.96k
        D(fprintf(stderr, "%*c%s params[%d-%d]: %s failed!\n", p->level, ' ',
4776
6.96k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_parameters"));
4777
6.96k
    }
4778
20.7k
    { // parameters
4779
20.7k
        if (p->error_indicator) {
4780
26
            p->level--;
4781
26
            return NULL;
4782
26
        }
4783
20.7k
        D(fprintf(stderr, "%*c> params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "parameters"));
4784
20.7k
        arguments_ty parameters_var;
4785
20.7k
        if (
4786
20.7k
            (parameters_var = parameters_rule(p))  // parameters
4787
20.7k
        )
4788
14.2k
        {
4789
14.2k
            D(fprintf(stderr, "%*c+ params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "parameters"));
4790
14.2k
            _res = parameters_var;
4791
14.2k
            goto done;
4792
14.2k
        }
4793
6.49k
        p->mark = _mark;
4794
6.49k
        D(fprintf(stderr, "%*c%s params[%d-%d]: %s failed!\n", p->level, ' ',
4795
6.49k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "parameters"));
4796
6.49k
    }
4797
0
    _res = NULL;
4798
20.7k
  done:
4799
20.7k
    p->level--;
4800
20.7k
    return _res;
4801
6.49k
}
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
20.7k
{
4812
20.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4813
0
        _Pypegen_stack_overflow(p);
4814
0
    }
4815
20.7k
    if (p->error_indicator) {
4816
0
        p->level--;
4817
0
        return NULL;
4818
0
    }
4819
20.7k
    arguments_ty _res = NULL;
4820
20.7k
    int _mark = p->mark;
4821
20.7k
    { // slash_no_default param_no_default* param_with_default* star_etc?
4822
20.7k
        if (p->error_indicator) {
4823
0
            p->level--;
4824
0
            return NULL;
4825
0
        }
4826
20.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
20.7k
        asdl_arg_seq* a;
4828
20.7k
        asdl_arg_seq* b;
4829
20.7k
        asdl_seq * c;
4830
20.7k
        void *d;
4831
20.7k
        if (
4832
20.7k
            (a = slash_no_default_rule(p))  // slash_no_default
4833
20.7k
            &&
4834
20.7k
            (b = (asdl_arg_seq*)_loop0_27_rule(p))  // param_no_default*
4835
20.7k
            &&
4836
20.7k
            (c = _loop0_28_rule(p))  // param_with_default*
4837
20.7k
            &&
4838
20.7k
            (d = star_etc_rule(p), !p->error_indicator)  // star_etc?
4839
20.7k
        )
4840
479
        {
4841
479
            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
479
            _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , a , NULL , b , c , d ) );
4843
479
            if (_res == NULL && PyErr_Occurred()) {
4844
0
                p->error_indicator = 1;
4845
0
                p->level--;
4846
0
                return NULL;
4847
0
            }
4848
479
            goto done;
4849
479
        }
4850
20.2k
        p->mark = _mark;
4851
20.2k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4852
20.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_no_default param_no_default* param_with_default* star_etc?"));
4853
20.2k
    }
4854
0
    { // slash_with_default param_with_default* star_etc?
4855
20.2k
        if (p->error_indicator) {
4856
10
            p->level--;
4857
10
            return NULL;
4858
10
        }
4859
20.2k
        D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
4860
20.2k
        SlashWithDefault* a;
4861
20.2k
        asdl_seq * b;
4862
20.2k
        void *c;
4863
20.2k
        if (
4864
20.2k
            (a = slash_with_default_rule(p))  // slash_with_default
4865
20.2k
            &&
4866
20.2k
            (b = _loop0_28_rule(p))  // param_with_default*
4867
20.2k
            &&
4868
20.2k
            (c = star_etc_rule(p), !p->error_indicator)  // star_etc?
4869
20.2k
        )
4870
1.79k
        {
4871
1.79k
            D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
4872
1.79k
            _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , NULL , a , NULL , b , c ) );
4873
1.79k
            if (_res == NULL && PyErr_Occurred()) {
4874
0
                p->error_indicator = 1;
4875
0
                p->level--;
4876
0
                return NULL;
4877
0
            }
4878
1.79k
            goto done;
4879
1.79k
        }
4880
18.4k
        p->mark = _mark;
4881
18.4k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4882
18.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
4883
18.4k
    }
4884
0
    { // param_no_default+ param_with_default* star_etc?
4885
18.4k
        if (p->error_indicator) {
4886
8
            p->level--;
4887
8
            return NULL;
4888
8
        }
4889
18.4k
        D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
4890
18.4k
        asdl_arg_seq* a;
4891
18.4k
        asdl_seq * b;
4892
18.4k
        void *c;
4893
18.4k
        if (
4894
18.4k
            (a = (asdl_arg_seq*)_loop1_29_rule(p))  // param_no_default+
4895
18.4k
            &&
4896
18.4k
            (b = _loop0_28_rule(p))  // param_with_default*
4897
18.4k
            &&
4898
18.4k
            (c = star_etc_rule(p), !p->error_indicator)  // star_etc?
4899
18.4k
        )
4900
5.90k
        {
4901
5.90k
            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.90k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
4903
5.90k
            if (_res == NULL && PyErr_Occurred()) {
4904
0
                p->error_indicator = 1;
4905
0
                p->level--;
4906
0
                return NULL;
4907
0
            }
4908
5.90k
            goto done;
4909
5.90k
        }
4910
12.5k
        p->mark = _mark;
4911
12.5k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4912
12.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
4913
12.5k
    }
4914
0
    { // param_with_default+ star_etc?
4915
12.5k
        if (p->error_indicator) {
4916
3
            p->level--;
4917
3
            return NULL;
4918
3
        }
4919
12.5k
        D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+ star_etc?"));
4920
12.5k
        asdl_seq * a;
4921
12.5k
        void *b;
4922
12.5k
        if (
4923
12.5k
            (a = _loop1_30_rule(p))  // param_with_default+
4924
12.5k
            &&
4925
12.5k
            (b = star_etc_rule(p), !p->error_indicator)  // star_etc?
4926
12.5k
        )
4927
966
        {
4928
966
            D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+ star_etc?"));
4929
966
            _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
4930
966
            if (_res == NULL && PyErr_Occurred()) {
4931
0
                p->error_indicator = 1;
4932
0
                p->level--;
4933
0
                return NULL;
4934
0
            }
4935
966
            goto done;
4936
966
        }
4937
11.5k
        p->mark = _mark;
4938
11.5k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4939
11.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default+ star_etc?"));
4940
11.5k
    }
4941
0
    { // star_etc
4942
11.5k
        if (p->error_indicator) {
4943
1
            p->level--;
4944
1
            return NULL;
4945
1
        }
4946
11.5k
        D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_etc"));
4947
11.5k
        StarEtc* a;
4948
11.5k
        if (
4949
11.5k
            (a = star_etc_rule(p))  // star_etc
4950
11.5k
        )
4951
5.10k
        {
4952
5.10k
            D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_etc"));
4953
5.10k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
4954
5.10k
            if (_res == NULL && PyErr_Occurred()) {
4955
0
                p->error_indicator = 1;
4956
0
                p->level--;
4957
0
                return NULL;
4958
0
            }
4959
5.10k
            goto done;
4960
5.10k
        }
4961
6.47k
        p->mark = _mark;
4962
6.47k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4963
6.47k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_etc"));
4964
6.47k
    }
4965
0
    _res = NULL;
4966
20.7k
  done:
4967
20.7k
    p->level--;
4968
20.7k
    return _res;
4969
6.47k
}
4970
4971
// slash_no_default: param_no_default+ '/' ',' | param_no_default+ '/' &')'
4972
static asdl_arg_seq*
4973
slash_no_default_rule(Parser *p)
4974
41.6k
{
4975
41.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4976
0
        _Pypegen_stack_overflow(p);
4977
0
    }
4978
41.6k
    if (p->error_indicator) {
4979
0
        p->level--;
4980
0
        return NULL;
4981
0
    }
4982
41.6k
    asdl_arg_seq* _res = NULL;
4983
41.6k
    int _mark = p->mark;
4984
41.6k
    { // param_no_default+ '/' ','
4985
41.6k
        if (p->error_indicator) {
4986
0
            p->level--;
4987
0
            return NULL;
4988
0
        }
4989
41.6k
        D(fprintf(stderr, "%*c> slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' ','"));
4990
41.6k
        Token * _literal;
4991
41.6k
        Token * _literal_1;
4992
41.6k
        asdl_arg_seq* a;
4993
41.6k
        if (
4994
41.6k
            (a = (asdl_arg_seq*)_loop1_29_rule(p))  // param_no_default+
4995
41.6k
            &&
4996
41.6k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
4997
41.6k
            &&
4998
41.6k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
4999
41.6k
        )
5000
98
        {
5001
98
            D(fprintf(stderr, "%*c+ slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' ','"));
5002
98
            _res = a;
5003
98
            if (_res == NULL && PyErr_Occurred()) {
5004
0
                p->error_indicator = 1;
5005
0
                p->level--;
5006
0
                return NULL;
5007
0
            }
5008
98
            goto done;
5009
98
        }
5010
41.5k
        p->mark = _mark;
5011
41.5k
        D(fprintf(stderr, "%*c%s slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5012
41.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ '/' ','"));
5013
41.5k
    }
5014
0
    { // param_no_default+ '/' &')'
5015
41.5k
        if (p->error_indicator) {
5016
10
            p->level--;
5017
10
            return NULL;
5018
10
        }
5019
41.4k
        D(fprintf(stderr, "%*c> slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' &')'"));
5020
41.4k
        Token * _literal;
5021
41.4k
        asdl_arg_seq* a;
5022
41.4k
        if (
5023
41.4k
            (a = (asdl_arg_seq*)_loop1_29_rule(p))  // param_no_default+
5024
41.4k
            &&
5025
41.4k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
5026
41.4k
            &&
5027
41.4k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5028
41.4k
        )
5029
1.27k
        {
5030
1.27k
            D(fprintf(stderr, "%*c+ slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' &')'"));
5031
1.27k
            _res = a;
5032
1.27k
            if (_res == NULL && PyErr_Occurred()) {
5033
0
                p->error_indicator = 1;
5034
0
                p->level--;
5035
0
                return NULL;
5036
0
            }
5037
1.27k
            goto done;
5038
1.27k
        }
5039
40.2k
        p->mark = _mark;
5040
40.2k
        D(fprintf(stderr, "%*c%s slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5041
40.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ '/' &')'"));
5042
40.2k
    }
5043
0
    _res = NULL;
5044
41.5k
  done:
5045
41.5k
    p->level--;
5046
41.5k
    return _res;
5047
40.2k
}
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
40.5k
{
5055
40.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5056
0
        _Pypegen_stack_overflow(p);
5057
0
    }
5058
40.5k
    if (p->error_indicator) {
5059
0
        p->level--;
5060
0
        return NULL;
5061
0
    }
5062
40.5k
    SlashWithDefault* _res = NULL;
5063
40.5k
    int _mark = p->mark;
5064
40.5k
    { // param_no_default* param_with_default+ '/' ','
5065
40.5k
        if (p->error_indicator) {
5066
0
            p->level--;
5067
0
            return NULL;
5068
0
        }
5069
40.5k
        D(fprintf(stderr, "%*c> slash_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
5070
40.5k
        Token * _literal;
5071
40.5k
        Token * _literal_1;
5072
40.5k
        asdl_seq * a;
5073
40.5k
        asdl_seq * b;
5074
40.5k
        if (
5075
40.5k
            (a = _loop0_27_rule(p))  // param_no_default*
5076
40.5k
            &&
5077
40.5k
            (b = _loop1_30_rule(p))  // param_with_default+
5078
40.5k
            &&
5079
40.5k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
5080
40.5k
            &&
5081
40.5k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
5082
40.5k
        )
5083
315
        {
5084
315
            D(fprintf(stderr, "%*c+ slash_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
5085
315
            _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
5086
315
            if (_res == NULL && PyErr_Occurred()) {
5087
0
                p->error_indicator = 1;
5088
0
                p->level--;
5089
0
                return NULL;
5090
0
            }
5091
315
            goto done;
5092
315
        }
5093
40.2k
        p->mark = _mark;
5094
40.2k
        D(fprintf(stderr, "%*c%s slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5095
40.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
5096
40.2k
    }
5097
0
    { // param_no_default* param_with_default+ '/' &')'
5098
40.2k
        if (p->error_indicator) {
5099
12
            p->level--;
5100
12
            return NULL;
5101
12
        }
5102
40.1k
        D(fprintf(stderr, "%*c> slash_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
5103
40.1k
        Token * _literal;
5104
40.1k
        asdl_seq * a;
5105
40.1k
        asdl_seq * b;
5106
40.1k
        if (
5107
40.1k
            (a = _loop0_27_rule(p))  // param_no_default*
5108
40.1k
            &&
5109
40.1k
            (b = _loop1_30_rule(p))  // param_with_default+
5110
40.1k
            &&
5111
40.1k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
5112
40.1k
            &&
5113
40.1k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5114
40.1k
        )
5115
3.50k
        {
5116
3.50k
            D(fprintf(stderr, "%*c+ slash_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
5117
3.50k
            _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
5118
3.50k
            if (_res == NULL && PyErr_Occurred()) {
5119
0
                p->error_indicator = 1;
5120
0
                p->level--;
5121
0
                return NULL;
5122
0
            }
5123
3.50k
            goto done;
5124
3.50k
        }
5125
36.6k
        p->mark = _mark;
5126
36.6k
        D(fprintf(stderr, "%*c%s slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5127
36.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
5128
36.6k
    }
5129
0
    _res = NULL;
5130
40.5k
  done:
5131
40.5k
    p->level--;
5132
40.5k
    return _res;
5133
36.6k
}
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
20.7k
{
5144
20.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5145
0
        _Pypegen_stack_overflow(p);
5146
0
    }
5147
20.7k
    if (p->error_indicator) {
5148
1
        p->level--;
5149
1
        return NULL;
5150
1
    }
5151
20.7k
    StarEtc* _res = NULL;
5152
20.7k
    int _mark = p->mark;
5153
20.7k
    if (p->call_invalid_rules) { // invalid_star_etc
5154
6.93k
        if (p->error_indicator) {
5155
0
            p->level--;
5156
0
            return NULL;
5157
0
        }
5158
6.93k
        D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_star_etc"));
5159
6.93k
        void *invalid_star_etc_var;
5160
6.93k
        if (
5161
6.93k
            (invalid_star_etc_var = invalid_star_etc_rule(p))  // invalid_star_etc
5162
6.93k
        )
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
6.93k
        p->mark = _mark;
5169
6.93k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5170
6.93k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_star_etc"));
5171
6.93k
    }
5172
20.7k
    { // '*' param_no_default param_maybe_default* kwds?
5173
20.7k
        if (p->error_indicator) {
5174
11
            p->level--;
5175
11
            return NULL;
5176
11
        }
5177
20.7k
        D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
5178
20.7k
        Token * _literal;
5179
20.7k
        arg_ty a;
5180
20.7k
        asdl_seq * b;
5181
20.7k
        void *c;
5182
20.7k
        if (
5183
20.7k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
5184
20.7k
            &&
5185
20.7k
            (a = param_no_default_rule(p))  // param_no_default
5186
20.7k
            &&
5187
20.7k
            (b = _loop0_31_rule(p))  // param_maybe_default*
5188
20.7k
            &&
5189
20.7k
            (c = kwds_rule(p), !p->error_indicator)  // kwds?
5190
20.7k
        )
5191
1.35k
        {
5192
1.35k
            D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
5193
1.35k
            _res = _PyPegen_star_etc ( p , a , b , c );
5194
1.35k
            if (_res == NULL && PyErr_Occurred()) {
5195
0
                p->error_indicator = 1;
5196
0
                p->level--;
5197
0
                return NULL;
5198
0
            }
5199
1.35k
            goto done;
5200
1.35k
        }
5201
19.3k
        p->mark = _mark;
5202
19.3k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5203
19.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
5204
19.3k
    }
5205
0
    { // '*' param_no_default_star_annotation param_maybe_default* kwds?
5206
19.3k
        if (p->error_indicator) {
5207
4
            p->level--;
5208
4
            return NULL;
5209
4
        }
5210
19.3k
        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
19.3k
        Token * _literal;
5212
19.3k
        arg_ty a;
5213
19.3k
        asdl_seq * b;
5214
19.3k
        void *c;
5215
19.3k
        if (
5216
19.3k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
5217
19.3k
            &&
5218
19.3k
            (a = param_no_default_star_annotation_rule(p))  // param_no_default_star_annotation
5219
19.3k
            &&
5220
19.3k
            (b = _loop0_31_rule(p))  // param_maybe_default*
5221
19.3k
            &&
5222
19.3k
            (c = kwds_rule(p), !p->error_indicator)  // kwds?
5223
19.3k
        )
5224
1.94k
        {
5225
1.94k
            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
1.94k
            _res = _PyPegen_star_etc ( p , a , b , c );
5227
1.94k
            if (_res == NULL && PyErr_Occurred()) {
5228
0
                p->error_indicator = 1;
5229
0
                p->level--;
5230
0
                return NULL;
5231
0
            }
5232
1.94k
            goto done;
5233
1.94k
        }
5234
17.4k
        p->mark = _mark;
5235
17.4k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5236
17.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' param_no_default_star_annotation param_maybe_default* kwds?"));
5237
17.4k
    }
5238
0
    { // '*' ',' param_maybe_default+ kwds?
5239
17.4k
        if (p->error_indicator) {
5240
5
            p->level--;
5241
5
            return NULL;
5242
5
        }
5243
17.4k
        D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
5244
17.4k
        Token * _literal;
5245
17.4k
        Token * _literal_1;
5246
17.4k
        asdl_seq * b;
5247
17.4k
        void *c;
5248
17.4k
        if (
5249
17.4k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
5250
17.4k
            &&
5251
17.4k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
5252
17.4k
            &&
5253
17.4k
            (b = _loop1_32_rule(p))  // param_maybe_default+
5254
17.4k
            &&
5255
17.4k
            (c = kwds_rule(p), !p->error_indicator)  // kwds?
5256
17.4k
        )
5257
980
        {
5258
980
            D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
5259
980
            _res = _PyPegen_star_etc ( p , NULL , b , c );
5260
980
            if (_res == NULL && PyErr_Occurred()) {
5261
0
                p->error_indicator = 1;
5262
0
                p->level--;
5263
0
                return NULL;
5264
0
            }
5265
980
            goto done;
5266
980
        }
5267
16.4k
        p->mark = _mark;
5268
16.4k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5269
16.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
5270
16.4k
    }
5271
0
    { // kwds
5272
16.4k
        if (p->error_indicator) {
5273
4
            p->level--;
5274
4
            return NULL;
5275
4
        }
5276
16.4k
        D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwds"));
5277
16.4k
        arg_ty a;
5278
16.4k
        if (
5279
16.4k
            (a = kwds_rule(p))  // kwds
5280
16.4k
        )
5281
1.39k
        {
5282
1.39k
            D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwds"));
5283
1.39k
            _res = _PyPegen_star_etc ( p , NULL , NULL , a );
5284
1.39k
            if (_res == NULL && PyErr_Occurred()) {
5285
0
                p->error_indicator = 1;
5286
0
                p->level--;
5287
0
                return NULL;
5288
0
            }
5289
1.39k
            goto done;
5290
1.39k
        }
5291
15.0k
        p->mark = _mark;
5292
15.0k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5293
15.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwds"));
5294
15.0k
    }
5295
0
    _res = NULL;
5296
20.7k
  done:
5297
20.7k
    p->level--;
5298
20.7k
    return _res;
5299
15.0k
}
5300
5301
// kwds: invalid_kwds | '**' param_no_default
5302
static arg_ty
5303
kwds_rule(Parser *p)
5304
20.7k
{
5305
20.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5306
0
        _Pypegen_stack_overflow(p);
5307
0
    }
5308
20.7k
    if (p->error_indicator) {
5309
3
        p->level--;
5310
3
        return NULL;
5311
3
    }
5312
20.7k
    arg_ty _res = NULL;
5313
20.7k
    int _mark = p->mark;
5314
20.7k
    if (p->call_invalid_rules) { // invalid_kwds
5315
6.92k
        if (p->error_indicator) {
5316
0
            p->level--;
5317
0
            return NULL;
5318
0
        }
5319
6.92k
        D(fprintf(stderr, "%*c> kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwds"));
5320
6.92k
        void *invalid_kwds_var;
5321
6.92k
        if (
5322
6.92k
            (invalid_kwds_var = invalid_kwds_rule(p))  // invalid_kwds
5323
6.92k
        )
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
6.92k
        p->mark = _mark;
5330
6.92k
        D(fprintf(stderr, "%*c%s kwds[%d-%d]: %s failed!\n", p->level, ' ',
5331
6.92k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwds"));
5332
6.92k
    }
5333
20.7k
    { // '**' param_no_default
5334
20.7k
        if (p->error_indicator) {
5335
6
            p->level--;
5336
6
            return NULL;
5337
6
        }
5338
20.7k
        D(fprintf(stderr, "%*c> kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param_no_default"));
5339
20.7k
        Token * _literal;
5340
20.7k
        arg_ty a;
5341
20.7k
        if (
5342
20.7k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
5343
20.7k
            &&
5344
20.7k
            (a = param_no_default_rule(p))  // param_no_default
5345
20.7k
        )
5346
2.21k
        {
5347
2.21k
            D(fprintf(stderr, "%*c+ kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' param_no_default"));
5348
2.21k
            _res = a;
5349
2.21k
            if (_res == NULL && PyErr_Occurred()) {
5350
0
                p->error_indicator = 1;
5351
0
                p->level--;
5352
0
                return NULL;
5353
0
            }
5354
2.21k
            goto done;
5355
2.21k
        }
5356
18.5k
        p->mark = _mark;
5357
18.5k
        D(fprintf(stderr, "%*c%s kwds[%d-%d]: %s failed!\n", p->level, ' ',
5358
18.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param_no_default"));
5359
18.5k
    }
5360
0
    _res = NULL;
5361
20.7k
  done:
5362
20.7k
    p->level--;
5363
20.7k
    return _res;
5364
18.5k
}
5365
5366
// param_no_default: param ',' TYPE_COMMENT? | param TYPE_COMMENT? &')'
5367
static arg_ty
5368
param_no_default_rule(Parser *p)
5369
303k
{
5370
303k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5371
0
        _Pypegen_stack_overflow(p);
5372
0
    }
5373
303k
    if (p->error_indicator) {
5374
0
        p->level--;
5375
0
        return NULL;
5376
0
    }
5377
303k
    arg_ty _res = NULL;
5378
303k
    int _mark = p->mark;
5379
303k
    { // param ',' TYPE_COMMENT?
5380
303k
        if (p->error_indicator) {
5381
0
            p->level--;
5382
0
            return NULL;
5383
0
        }
5384
303k
        D(fprintf(stderr, "%*c> param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param ',' TYPE_COMMENT?"));
5385
303k
        Token * _literal;
5386
303k
        arg_ty a;
5387
303k
        void *tc;
5388
303k
        if (
5389
303k
            (a = param_rule(p))  // param
5390
303k
            &&
5391
303k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
5392
303k
            &&
5393
303k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5394
303k
        )
5395
67.0k
        {
5396
67.0k
            D(fprintf(stderr, "%*c+ param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param ',' TYPE_COMMENT?"));
5397
67.0k
            _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5398
67.0k
            if (_res == NULL && PyErr_Occurred()) {
5399
0
                p->error_indicator = 1;
5400
0
                p->level--;
5401
0
                return NULL;
5402
0
            }
5403
67.0k
            goto done;
5404
67.0k
        }
5405
236k
        p->mark = _mark;
5406
236k
        D(fprintf(stderr, "%*c%s param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5407
236k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param ',' TYPE_COMMENT?"));
5408
236k
    }
5409
0
    { // param TYPE_COMMENT? &')'
5410
236k
        if (p->error_indicator) {
5411
22
            p->level--;
5412
22
            return NULL;
5413
22
        }
5414
236k
        D(fprintf(stderr, "%*c> param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param TYPE_COMMENT? &')'"));
5415
236k
        arg_ty a;
5416
236k
        void *tc;
5417
236k
        if (
5418
236k
            (a = param_rule(p))  // param
5419
236k
            &&
5420
236k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5421
236k
            &&
5422
236k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5423
236k
        )
5424
32.5k
        {
5425
32.5k
            D(fprintf(stderr, "%*c+ param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param TYPE_COMMENT? &')'"));
5426
32.5k
            _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5427
32.5k
            if (_res == NULL && PyErr_Occurred()) {
5428
0
                p->error_indicator = 1;
5429
0
                p->level--;
5430
0
                return NULL;
5431
0
            }
5432
32.5k
            goto done;
5433
32.5k
        }
5434
203k
        p->mark = _mark;
5435
203k
        D(fprintf(stderr, "%*c%s param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5436
203k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param TYPE_COMMENT? &')'"));
5437
203k
    }
5438
0
    _res = NULL;
5439
303k
  done:
5440
303k
    p->level--;
5441
303k
    return _res;
5442
203k
}
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
3.05k
{
5450
3.05k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5451
0
        _Pypegen_stack_overflow(p);
5452
0
    }
5453
3.05k
    if (p->error_indicator) {
5454
0
        p->level--;
5455
0
        return NULL;
5456
0
    }
5457
3.05k
    arg_ty _res = NULL;
5458
3.05k
    int _mark = p->mark;
5459
3.05k
    { // param_star_annotation ',' TYPE_COMMENT?
5460
3.05k
        if (p->error_indicator) {
5461
0
            p->level--;
5462
0
            return NULL;
5463
0
        }
5464
3.05k
        D(fprintf(stderr, "%*c> param_no_default_star_annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_star_annotation ',' TYPE_COMMENT?"));
5465
3.05k
        Token * _literal;
5466
3.05k
        arg_ty a;
5467
3.05k
        void *tc;
5468
3.05k
        if (
5469
3.05k
            (a = param_star_annotation_rule(p))  // param_star_annotation
5470
3.05k
            &&
5471
3.05k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
5472
3.05k
            &&
5473
3.05k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5474
3.05k
        )
5475
681
        {
5476
681
            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
681
            _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5478
681
            if (_res == NULL && PyErr_Occurred()) {
5479
0
                p->error_indicator = 1;
5480
0
                p->level--;
5481
0
                return NULL;
5482
0
            }
5483
681
            goto done;
5484
681
        }
5485
2.37k
        p->mark = _mark;
5486
2.37k
        D(fprintf(stderr, "%*c%s param_no_default_star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
5487
2.37k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_star_annotation ',' TYPE_COMMENT?"));
5488
2.37k
    }
5489
0
    { // param_star_annotation TYPE_COMMENT? &')'
5490
2.37k
        if (p->error_indicator) {
5491
3
            p->level--;
5492
3
            return NULL;
5493
3
        }
5494
2.36k
        D(fprintf(stderr, "%*c> param_no_default_star_annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_star_annotation TYPE_COMMENT? &')'"));
5495
2.36k
        arg_ty a;
5496
2.36k
        void *tc;
5497
2.36k
        if (
5498
2.36k
            (a = param_star_annotation_rule(p))  // param_star_annotation
5499
2.36k
            &&
5500
2.36k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5501
2.36k
            &&
5502
2.36k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5503
2.36k
        )
5504
1.26k
        {
5505
1.26k
            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
1.26k
            _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5507
1.26k
            if (_res == NULL && PyErr_Occurred()) {
5508
0
                p->error_indicator = 1;
5509
0
                p->level--;
5510
0
                return NULL;
5511
0
            }
5512
1.26k
            goto done;
5513
1.26k
        }
5514
1.10k
        p->mark = _mark;
5515
1.10k
        D(fprintf(stderr, "%*c%s param_no_default_star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
5516
1.10k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_star_annotation TYPE_COMMENT? &')'"));
5517
1.10k
    }
5518
0
    _res = NULL;
5519
3.05k
  done:
5520
3.05k
    p->level--;
5521
3.05k
    return _res;
5522
1.10k
}
5523
5524
// param_with_default: param default ',' TYPE_COMMENT? | param default TYPE_COMMENT? &')'
5525
static NameDefaultPair*
5526
param_with_default_rule(Parser *p)
5527
130k
{
5528
130k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5529
0
        _Pypegen_stack_overflow(p);
5530
0
    }
5531
130k
    if (p->error_indicator) {
5532
0
        p->level--;
5533
0
        return NULL;
5534
0
    }
5535
130k
    NameDefaultPair* _res = NULL;
5536
130k
    int _mark = p->mark;
5537
130k
    { // param default ',' TYPE_COMMENT?
5538
130k
        if (p->error_indicator) {
5539
0
            p->level--;
5540
0
            return NULL;
5541
0
        }
5542
130k
        D(fprintf(stderr, "%*c> param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default ',' TYPE_COMMENT?"));
5543
130k
        Token * _literal;
5544
130k
        arg_ty a;
5545
130k
        expr_ty c;
5546
130k
        void *tc;
5547
130k
        if (
5548
130k
            (a = param_rule(p))  // param
5549
130k
            &&
5550
130k
            (c = default_rule(p))  // default
5551
130k
            &&
5552
130k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
5553
130k
            &&
5554
130k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5555
130k
        )
5556
10.3k
        {
5557
10.3k
            D(fprintf(stderr, "%*c+ param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default ',' TYPE_COMMENT?"));
5558
10.3k
            _res = _PyPegen_name_default_pair ( p , a , c , tc );
5559
10.3k
            if (_res == NULL && PyErr_Occurred()) {
5560
0
                p->error_indicator = 1;
5561
0
                p->level--;
5562
0
                return NULL;
5563
0
            }
5564
10.3k
            goto done;
5565
10.3k
        }
5566
120k
        p->mark = _mark;
5567
120k
        D(fprintf(stderr, "%*c%s param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5568
120k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default ',' TYPE_COMMENT?"));
5569
120k
    }
5570
0
    { // param default TYPE_COMMENT? &')'
5571
120k
        if (p->error_indicator) {
5572
13
            p->level--;
5573
13
            return NULL;
5574
13
        }
5575
120k
        D(fprintf(stderr, "%*c> param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default TYPE_COMMENT? &')'"));
5576
120k
        arg_ty a;
5577
120k
        expr_ty c;
5578
120k
        void *tc;
5579
120k
        if (
5580
120k
            (a = param_rule(p))  // param
5581
120k
            &&
5582
120k
            (c = default_rule(p))  // default
5583
120k
            &&
5584
120k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5585
120k
            &&
5586
120k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5587
120k
        )
5588
12.6k
        {
5589
12.6k
            D(fprintf(stderr, "%*c+ param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default TYPE_COMMENT? &')'"));
5590
12.6k
            _res = _PyPegen_name_default_pair ( p , a , c , tc );
5591
12.6k
            if (_res == NULL && PyErr_Occurred()) {
5592
0
                p->error_indicator = 1;
5593
0
                p->level--;
5594
0
                return NULL;
5595
0
            }
5596
12.6k
            goto done;
5597
12.6k
        }
5598
107k
        p->mark = _mark;
5599
107k
        D(fprintf(stderr, "%*c%s param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5600
107k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default TYPE_COMMENT? &')'"));
5601
107k
    }
5602
0
    _res = NULL;
5603
130k
  done:
5604
130k
    p->level--;
5605
130k
    return _res;
5606
107k
}
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
33.7k
{
5614
33.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5615
0
        _Pypegen_stack_overflow(p);
5616
0
    }
5617
33.7k
    if (p->error_indicator) {
5618
0
        p->level--;
5619
0
        return NULL;
5620
0
    }
5621
33.7k
    NameDefaultPair* _res = NULL;
5622
33.7k
    int _mark = p->mark;
5623
33.7k
    { // param default? ',' TYPE_COMMENT?
5624
33.7k
        if (p->error_indicator) {
5625
0
            p->level--;
5626
0
            return NULL;
5627
0
        }
5628
33.7k
        D(fprintf(stderr, "%*c> param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
5629
33.7k
        Token * _literal;
5630
33.7k
        arg_ty a;
5631
33.7k
        void *c;
5632
33.7k
        void *tc;
5633
33.7k
        if (
5634
33.7k
            (a = param_rule(p))  // param
5635
33.7k
            &&
5636
33.7k
            (c = default_rule(p), !p->error_indicator)  // default?
5637
33.7k
            &&
5638
33.7k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
5639
33.7k
            &&
5640
33.7k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5641
33.7k
        )
5642
6.77k
        {
5643
6.77k
            D(fprintf(stderr, "%*c+ param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
5644
6.77k
            _res = _PyPegen_name_default_pair ( p , a , c , tc );
5645
6.77k
            if (_res == NULL && PyErr_Occurred()) {
5646
0
                p->error_indicator = 1;
5647
0
                p->level--;
5648
0
                return NULL;
5649
0
            }
5650
6.77k
            goto done;
5651
6.77k
        }
5652
27.0k
        p->mark = _mark;
5653
27.0k
        D(fprintf(stderr, "%*c%s param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
5654
27.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
5655
27.0k
    }
5656
0
    { // param default? TYPE_COMMENT? &')'
5657
27.0k
        if (p->error_indicator) {
5658
7
            p->level--;
5659
7
            return NULL;
5660
7
        }
5661
27.0k
        D(fprintf(stderr, "%*c> param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
5662
27.0k
        arg_ty a;
5663
27.0k
        void *c;
5664
27.0k
        void *tc;
5665
27.0k
        if (
5666
27.0k
            (a = param_rule(p))  // param
5667
27.0k
            &&
5668
27.0k
            (c = default_rule(p), !p->error_indicator)  // default?
5669
27.0k
            &&
5670
27.0k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5671
27.0k
            &&
5672
27.0k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5673
27.0k
        )
5674
6.07k
        {
5675
6.07k
            D(fprintf(stderr, "%*c+ param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
5676
6.07k
            _res = _PyPegen_name_default_pair ( p , a , c , tc );
5677
6.07k
            if (_res == NULL && PyErr_Occurred()) {
5678
0
                p->error_indicator = 1;
5679
0
                p->level--;
5680
0
                return NULL;
5681
0
            }
5682
6.07k
            goto done;
5683
6.07k
        }
5684
20.9k
        p->mark = _mark;
5685
20.9k
        D(fprintf(stderr, "%*c%s param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
5686
20.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
5687
20.9k
    }
5688
0
    _res = NULL;
5689
33.7k
  done:
5690
33.7k
    p->level--;
5691
33.7k
    return _res;
5692
20.9k
}
5693
5694
// param: NAME annotation?
5695
static arg_ty
5696
param_rule(Parser *p)
5697
857k
{
5698
857k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5699
0
        _Pypegen_stack_overflow(p);
5700
0
    }
5701
857k
    if (p->error_indicator) {
5702
0
        p->level--;
5703
0
        return NULL;
5704
0
    }
5705
857k
    arg_ty _res = NULL;
5706
857k
    int _mark = p->mark;
5707
857k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5708
9
        p->error_indicator = 1;
5709
9
        p->level--;
5710
9
        return NULL;
5711
9
    }
5712
857k
    int _start_lineno = p->tokens[_mark]->lineno;
5713
857k
    UNUSED(_start_lineno); // Only used by EXTRA macro
5714
857k
    int _start_col_offset = p->tokens[_mark]->col_offset;
5715
857k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
5716
857k
    { // NAME annotation?
5717
857k
        if (p->error_indicator) {
5718
0
            p->level--;
5719
0
            return NULL;
5720
0
        }
5721
857k
        D(fprintf(stderr, "%*c> param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME annotation?"));
5722
857k
        expr_ty a;
5723
857k
        void *b;
5724
857k
        if (
5725
857k
            (a = _PyPegen_name_token(p))  // NAME
5726
857k
            &&
5727
857k
            (b = annotation_rule(p), !p->error_indicator)  // annotation?
5728
857k
        )
5729
284k
        {
5730
284k
            D(fprintf(stderr, "%*c+ param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME annotation?"));
5731
284k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5732
284k
            if (_token == NULL) {
5733
0
                p->level--;
5734
0
                return NULL;
5735
0
            }
5736
284k
            int _end_lineno = _token->end_lineno;
5737
284k
            UNUSED(_end_lineno); // Only used by EXTRA macro
5738
284k
            int _end_col_offset = _token->end_col_offset;
5739
284k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
5740
284k
            _res = _PyAST_arg ( a -> v . Name . id , b , NULL , EXTRA );
5741
284k
            if (_res == NULL && PyErr_Occurred()) {
5742
0
                p->error_indicator = 1;
5743
0
                p->level--;
5744
0
                return NULL;
5745
0
            }
5746
284k
            goto done;
5747
284k
        }
5748
572k
        p->mark = _mark;
5749
572k
        D(fprintf(stderr, "%*c%s param[%d-%d]: %s failed!\n", p->level, ' ',
5750
572k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME annotation?"));
5751
572k
    }
5752
0
    _res = NULL;
5753
857k
  done:
5754
857k
    p->level--;
5755
857k
    return _res;
5756
572k
}
5757
5758
// param_star_annotation: NAME star_annotation
5759
static arg_ty
5760
param_star_annotation_rule(Parser *p)
5761
5.42k
{
5762
5.42k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5763
0
        _Pypegen_stack_overflow(p);
5764
0
    }
5765
5.42k
    if (p->error_indicator) {
5766
0
        p->level--;
5767
0
        return NULL;
5768
0
    }
5769
5.42k
    arg_ty _res = NULL;
5770
5.42k
    int _mark = p->mark;
5771
5.42k
    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
5.42k
    int _start_lineno = p->tokens[_mark]->lineno;
5777
5.42k
    UNUSED(_start_lineno); // Only used by EXTRA macro
5778
5.42k
    int _start_col_offset = p->tokens[_mark]->col_offset;
5779
5.42k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
5780
5.42k
    { // NAME star_annotation
5781
5.42k
        if (p->error_indicator) {
5782
0
            p->level--;
5783
0
            return NULL;
5784
0
        }
5785
5.42k
        D(fprintf(stderr, "%*c> param_star_annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME star_annotation"));
5786
5.42k
        expr_ty a;
5787
5.42k
        expr_ty b;
5788
5.42k
        if (
5789
5.42k
            (a = _PyPegen_name_token(p))  // NAME
5790
5.42k
            &&
5791
5.42k
            (b = star_annotation_rule(p))  // star_annotation
5792
5.42k
        )
5793
3.26k
        {
5794
3.26k
            D(fprintf(stderr, "%*c+ param_star_annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME star_annotation"));
5795
3.26k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5796
3.26k
            if (_token == NULL) {
5797
0
                p->level--;
5798
0
                return NULL;
5799
0
            }
5800
3.26k
            int _end_lineno = _token->end_lineno;
5801
3.26k
            UNUSED(_end_lineno); // Only used by EXTRA macro
5802
3.26k
            int _end_col_offset = _token->end_col_offset;
5803
3.26k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
5804
3.26k
            _res = _PyAST_arg ( a -> v . Name . id , b , NULL , EXTRA );
5805
3.26k
            if (_res == NULL && PyErr_Occurred()) {
5806
0
                p->error_indicator = 1;
5807
0
                p->level--;
5808
0
                return NULL;
5809
0
            }
5810
3.26k
            goto done;
5811
3.26k
        }
5812
2.15k
        p->mark = _mark;
5813
2.15k
        D(fprintf(stderr, "%*c%s param_star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
5814
2.15k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME star_annotation"));
5815
2.15k
    }
5816
0
    _res = NULL;
5817
5.42k
  done:
5818
5.42k
    p->level--;
5819
5.42k
    return _res;
5820
2.15k
}
5821
5822
// annotation: ':' expression
5823
static expr_ty
5824
annotation_rule(Parser *p)
5825
284k
{
5826
284k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5827
0
        _Pypegen_stack_overflow(p);
5828
0
    }
5829
284k
    if (p->error_indicator) {
5830
0
        p->level--;
5831
0
        return NULL;
5832
0
    }
5833
284k
    expr_ty _res = NULL;
5834
284k
    int _mark = p->mark;
5835
284k
    { // ':' expression
5836
284k
        if (p->error_indicator) {
5837
0
            p->level--;
5838
0
            return NULL;
5839
0
        }
5840
284k
        D(fprintf(stderr, "%*c> annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression"));
5841
284k
        Token * _literal;
5842
284k
        expr_ty a;
5843
284k
        if (
5844
284k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5845
284k
            &&
5846
284k
            (a = expression_rule(p))  // expression
5847
284k
        )
5848
19.8k
        {
5849
19.8k
            D(fprintf(stderr, "%*c+ annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression"));
5850
19.8k
            _res = a;
5851
19.8k
            if (_res == NULL && PyErr_Occurred()) {
5852
0
                p->error_indicator = 1;
5853
0
                p->level--;
5854
0
                return NULL;
5855
0
            }
5856
19.8k
            goto done;
5857
19.8k
        }
5858
264k
        p->mark = _mark;
5859
264k
        D(fprintf(stderr, "%*c%s annotation[%d-%d]: %s failed!\n", p->level, ' ',
5860
264k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression"));
5861
264k
    }
5862
0
    _res = NULL;
5863
284k
  done:
5864
284k
    p->level--;
5865
284k
    return _res;
5866
264k
}
5867
5868
// star_annotation: ':' star_expression
5869
static expr_ty
5870
star_annotation_rule(Parser *p)
5871
3.32k
{
5872
3.32k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5873
0
        _Pypegen_stack_overflow(p);
5874
0
    }
5875
3.32k
    if (p->error_indicator) {
5876
0
        p->level--;
5877
0
        return NULL;
5878
0
    }
5879
3.32k
    expr_ty _res = NULL;
5880
3.32k
    int _mark = p->mark;
5881
3.32k
    { // ':' star_expression
5882
3.32k
        if (p->error_indicator) {
5883
0
            p->level--;
5884
0
            return NULL;
5885
0
        }
5886
3.32k
        D(fprintf(stderr, "%*c> star_annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' star_expression"));
5887
3.32k
        Token * _literal;
5888
3.32k
        expr_ty a;
5889
3.32k
        if (
5890
3.32k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5891
3.32k
            &&
5892
3.32k
            (a = star_expression_rule(p))  // star_expression
5893
3.32k
        )
5894
3.26k
        {
5895
3.26k
            D(fprintf(stderr, "%*c+ star_annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' star_expression"));
5896
3.26k
            _res = a;
5897
3.26k
            if (_res == NULL && PyErr_Occurred()) {
5898
0
                p->error_indicator = 1;
5899
0
                p->level--;
5900
0
                return NULL;
5901
0
            }
5902
3.26k
            goto done;
5903
3.26k
        }
5904
58
        p->mark = _mark;
5905
58
        D(fprintf(stderr, "%*c%s star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
5906
58
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' star_expression"));
5907
58
    }
5908
0
    _res = NULL;
5909
3.32k
  done:
5910
3.32k
    p->level--;
5911
3.32k
    return _res;
5912
58
}
5913
5914
// default: '=' expression | invalid_default
5915
static expr_ty
5916
default_rule(Parser *p)
5917
213k
{
5918
213k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5919
0
        _Pypegen_stack_overflow(p);
5920
0
    }
5921
213k
    if (p->error_indicator) {
5922
0
        p->level--;
5923
0
        return NULL;
5924
0
    }
5925
213k
    expr_ty _res = NULL;
5926
213k
    int _mark = p->mark;
5927
213k
    { // '=' expression
5928
213k
        if (p->error_indicator) {
5929
0
            p->level--;
5930
0
            return NULL;
5931
0
        }
5932
213k
        D(fprintf(stderr, "%*c> default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' expression"));
5933
213k
        Token * _literal;
5934
213k
        expr_ty a;
5935
213k
        if (
5936
213k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
5937
213k
            &&
5938
213k
            (a = expression_rule(p))  // expression
5939
213k
        )
5940
122k
        {
5941
122k
            D(fprintf(stderr, "%*c+ default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' expression"));
5942
122k
            _res = a;
5943
122k
            if (_res == NULL && PyErr_Occurred()) {
5944
0
                p->error_indicator = 1;
5945
0
                p->level--;
5946
0
                return NULL;
5947
0
            }
5948
122k
            goto done;
5949
122k
        }
5950
90.5k
        p->mark = _mark;
5951
90.5k
        D(fprintf(stderr, "%*c%s default[%d-%d]: %s failed!\n", p->level, ' ',
5952
90.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' expression"));
5953
90.5k
    }
5954
90.5k
    if (p->call_invalid_rules) { // invalid_default
5955
76.6k
        if (p->error_indicator) {
5956
492
            p->level--;
5957
492
            return NULL;
5958
492
        }
5959
76.2k
        D(fprintf(stderr, "%*c> default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_default"));
5960
76.2k
        void *invalid_default_var;
5961
76.2k
        if (
5962
76.2k
            (invalid_default_var = invalid_default_rule(p))  // invalid_default
5963
76.2k
        )
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
76.2k
        p->mark = _mark;
5970
76.2k
        D(fprintf(stderr, "%*c%s default[%d-%d]: %s failed!\n", p->level, ' ',
5971
76.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_default"));
5972
76.2k
    }
5973
90.0k
    _res = NULL;
5974
212k
  done:
5975
212k
    p->level--;
5976
212k
    return _res;
5977
90.0k
}
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
2.87k
{
5986
2.87k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5987
0
        _Pypegen_stack_overflow(p);
5988
0
    }
5989
2.87k
    if (p->error_indicator) {
5990
0
        p->level--;
5991
0
        return NULL;
5992
0
    }
5993
2.87k
    stmt_ty _res = NULL;
5994
2.87k
    int _mark = p->mark;
5995
2.87k
    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
2.87k
    int _start_lineno = p->tokens[_mark]->lineno;
6001
2.87k
    UNUSED(_start_lineno); // Only used by EXTRA macro
6002
2.87k
    int _start_col_offset = p->tokens[_mark]->col_offset;
6003
2.87k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
6004
2.87k
    if (p->call_invalid_rules) { // invalid_if_stmt
6005
617
        if (p->error_indicator) {
6006
0
            p->level--;
6007
0
            return NULL;
6008
0
        }
6009
617
        D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_if_stmt"));
6010
617
        void *invalid_if_stmt_var;
6011
617
        if (
6012
617
            (invalid_if_stmt_var = invalid_if_stmt_rule(p))  // invalid_if_stmt
6013
617
        )
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
617
        p->mark = _mark;
6020
617
        D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6021
617
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_if_stmt"));
6022
617
    }
6023
2.87k
    { // 'if' named_expression ':' block elif_stmt
6024
2.87k
        if (p->error_indicator) {
6025
19
            p->level--;
6026
19
            return NULL;
6027
19
        }
6028
2.85k
        D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
6029
2.85k
        Token * _keyword;
6030
2.85k
        Token * _literal;
6031
2.85k
        expr_ty a;
6032
2.85k
        asdl_stmt_seq* b;
6033
2.85k
        stmt_ty c;
6034
2.85k
        if (
6035
2.85k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
6036
2.85k
            &&
6037
2.85k
            (a = named_expression_rule(p))  // named_expression
6038
2.85k
            &&
6039
2.85k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6040
2.85k
            &&
6041
2.85k
            (b = block_rule(p))  // block
6042
2.85k
            &&
6043
2.85k
            (c = elif_stmt_rule(p))  // elif_stmt
6044
2.85k
        )
6045
348
        {
6046
348
            D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
6047
348
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6048
348
            if (_token == NULL) {
6049
0
                p->level--;
6050
0
                return NULL;
6051
0
            }
6052
348
            int _end_lineno = _token->end_lineno;
6053
348
            UNUSED(_end_lineno); // Only used by EXTRA macro
6054
348
            int _end_col_offset = _token->end_col_offset;
6055
348
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6056
348
            _res = _PyAST_If ( a , b , CHECK ( asdl_stmt_seq* , _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
6057
348
            if (_res == NULL && PyErr_Occurred()) {
6058
0
                p->error_indicator = 1;
6059
0
                p->level--;
6060
0
                return NULL;
6061
0
            }
6062
348
            goto done;
6063
348
        }
6064
2.50k
        p->mark = _mark;
6065
2.50k
        D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6066
2.50k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
6067
2.50k
    }
6068
0
    { // 'if' named_expression ':' block else_block?
6069
2.50k
        if (p->error_indicator) {
6070
40
            p->level--;
6071
40
            return NULL;
6072
40
        }
6073
2.46k
        D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block else_block?"));
6074
2.46k
        Token * _keyword;
6075
2.46k
        Token * _literal;
6076
2.46k
        expr_ty a;
6077
2.46k
        asdl_stmt_seq* b;
6078
2.46k
        void *c;
6079
2.46k
        if (
6080
2.46k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
6081
2.46k
            &&
6082
2.46k
            (a = named_expression_rule(p))  // named_expression
6083
2.46k
            &&
6084
2.46k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6085
2.46k
            &&
6086
2.46k
            (b = block_rule(p))  // block
6087
2.46k
            &&
6088
2.46k
            (c = else_block_rule(p), !p->error_indicator)  // else_block?
6089
2.46k
        )
6090
2.37k
        {
6091
2.37k
            D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block else_block?"));
6092
2.37k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6093
2.37k
            if (_token == NULL) {
6094
0
                p->level--;
6095
0
                return NULL;
6096
0
            }
6097
2.37k
            int _end_lineno = _token->end_lineno;
6098
2.37k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6099
2.37k
            int _end_col_offset = _token->end_col_offset;
6100
2.37k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6101
2.37k
            _res = _PyAST_If ( a , b , c , EXTRA );
6102
2.37k
            if (_res == NULL && PyErr_Occurred()) {
6103
0
                p->error_indicator = 1;
6104
0
                p->level--;
6105
0
                return NULL;
6106
0
            }
6107
2.37k
            goto done;
6108
2.37k
        }
6109
93
        p->mark = _mark;
6110
93
        D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6111
93
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' block else_block?"));
6112
93
    }
6113
0
    _res = NULL;
6114
2.81k
  done:
6115
2.81k
    p->level--;
6116
2.81k
    return _res;
6117
93
}
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
4.02k
{
6126
4.02k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6127
0
        _Pypegen_stack_overflow(p);
6128
0
    }
6129
4.02k
    if (p->error_indicator) {
6130
0
        p->level--;
6131
0
        return NULL;
6132
0
    }
6133
4.02k
    stmt_ty _res = NULL;
6134
4.02k
    int _mark = p->mark;
6135
4.02k
    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
4.02k
    int _start_lineno = p->tokens[_mark]->lineno;
6141
4.02k
    UNUSED(_start_lineno); // Only used by EXTRA macro
6142
4.02k
    int _start_col_offset = p->tokens[_mark]->col_offset;
6143
4.02k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
6144
4.02k
    if (p->call_invalid_rules) { // invalid_elif_stmt
6145
927
        if (p->error_indicator) {
6146
0
            p->level--;
6147
0
            return NULL;
6148
0
        }
6149
927
        D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_elif_stmt"));
6150
927
        void *invalid_elif_stmt_var;
6151
927
        if (
6152
927
            (invalid_elif_stmt_var = invalid_elif_stmt_rule(p))  // invalid_elif_stmt
6153
927
        )
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
927
        p->mark = _mark;
6160
927
        D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6161
927
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_elif_stmt"));
6162
927
    }
6163
4.02k
    { // 'elif' named_expression ':' block elif_stmt
6164
4.02k
        if (p->error_indicator) {
6165
9
            p->level--;
6166
9
            return NULL;
6167
9
        }
6168
4.01k
        D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
6169
4.01k
        Token * _keyword;
6170
4.01k
        Token * _literal;
6171
4.01k
        expr_ty a;
6172
4.01k
        asdl_stmt_seq* b;
6173
4.01k
        stmt_ty c;
6174
4.01k
        if (
6175
4.01k
            (_keyword = _PyPegen_expect_token(p, 692))  // token='elif'
6176
4.01k
            &&
6177
4.01k
            (a = named_expression_rule(p))  // named_expression
6178
4.01k
            &&
6179
4.01k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6180
4.01k
            &&
6181
4.01k
            (b = block_rule(p))  // block
6182
4.01k
            &&
6183
4.01k
            (c = elif_stmt_rule(p))  // elif_stmt
6184
4.01k
        )
6185
760
        {
6186
760
            D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
6187
760
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6188
760
            if (_token == NULL) {
6189
0
                p->level--;
6190
0
                return NULL;
6191
0
            }
6192
760
            int _end_lineno = _token->end_lineno;
6193
760
            UNUSED(_end_lineno); // Only used by EXTRA macro
6194
760
            int _end_col_offset = _token->end_col_offset;
6195
760
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6196
760
            _res = _PyAST_If ( a , b , CHECK ( asdl_stmt_seq* , _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
6197
760
            if (_res == NULL && PyErr_Occurred()) {
6198
0
                p->error_indicator = 1;
6199
0
                p->level--;
6200
0
                return NULL;
6201
0
            }
6202
760
            goto done;
6203
760
        }
6204
3.25k
        p->mark = _mark;
6205
3.25k
        D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6206
3.25k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
6207
3.25k
    }
6208
0
    { // 'elif' named_expression ':' block else_block?
6209
3.25k
        if (p->error_indicator) {
6210
183
            p->level--;
6211
183
            return NULL;
6212
183
        }
6213
3.07k
        D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block else_block?"));
6214
3.07k
        Token * _keyword;
6215
3.07k
        Token * _literal;
6216
3.07k
        expr_ty a;
6217
3.07k
        asdl_stmt_seq* b;
6218
3.07k
        void *c;
6219
3.07k
        if (
6220
3.07k
            (_keyword = _PyPegen_expect_token(p, 692))  // token='elif'
6221
3.07k
            &&
6222
3.07k
            (a = named_expression_rule(p))  // named_expression
6223
3.07k
            &&
6224
3.07k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6225
3.07k
            &&
6226
3.07k
            (b = block_rule(p))  // block
6227
3.07k
            &&
6228
3.07k
            (c = else_block_rule(p), !p->error_indicator)  // else_block?
6229
3.07k
        )
6230
348
        {
6231
348
            D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block else_block?"));
6232
348
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6233
348
            if (_token == NULL) {
6234
0
                p->level--;
6235
0
                return NULL;
6236
0
            }
6237
348
            int _end_lineno = _token->end_lineno;
6238
348
            UNUSED(_end_lineno); // Only used by EXTRA macro
6239
348
            int _end_col_offset = _token->end_col_offset;
6240
348
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6241
348
            _res = _PyAST_If ( a , b , c , EXTRA );
6242
348
            if (_res == NULL && PyErr_Occurred()) {
6243
0
                p->error_indicator = 1;
6244
0
                p->level--;
6245
0
                return NULL;
6246
0
            }
6247
348
            goto done;
6248
348
        }
6249
2.72k
        p->mark = _mark;
6250
2.72k
        D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6251
2.72k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' block else_block?"));
6252
2.72k
    }
6253
0
    _res = NULL;
6254
3.83k
  done:
6255
3.83k
    p->level--;
6256
3.83k
    return _res;
6257
2.72k
}
6258
6259
// else_block: invalid_else_stmt | 'else' &&':' block
6260
static asdl_stmt_seq*
6261
else_block_rule(Parser *p)
6262
13.7k
{
6263
13.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6264
0
        _Pypegen_stack_overflow(p);
6265
0
    }
6266
13.7k
    if (p->error_indicator) {
6267
0
        p->level--;
6268
0
        return NULL;
6269
0
    }
6270
13.7k
    asdl_stmt_seq* _res = NULL;
6271
13.7k
    int _mark = p->mark;
6272
13.7k
    if (p->call_invalid_rules) { // invalid_else_stmt
6273
3.50k
        if (p->error_indicator) {
6274
0
            p->level--;
6275
0
            return NULL;
6276
0
        }
6277
3.50k
        D(fprintf(stderr, "%*c> else_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_else_stmt"));
6278
3.50k
        void *invalid_else_stmt_var;
6279
3.50k
        if (
6280
3.50k
            (invalid_else_stmt_var = invalid_else_stmt_rule(p))  // invalid_else_stmt
6281
3.50k
        )
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.50k
        p->mark = _mark;
6288
3.50k
        D(fprintf(stderr, "%*c%s else_block[%d-%d]: %s failed!\n", p->level, ' ',
6289
3.50k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_else_stmt"));
6290
3.50k
    }
6291
13.7k
    { // 'else' &&':' block
6292
13.7k
        if (p->error_indicator) {
6293
2
            p->level--;
6294
2
            return NULL;
6295
2
        }
6296
13.7k
        D(fprintf(stderr, "%*c> else_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else' &&':' block"));
6297
13.7k
        Token * _keyword;
6298
13.7k
        Token * _literal;
6299
13.7k
        asdl_stmt_seq* b;
6300
13.7k
        if (
6301
13.7k
            (_keyword = _PyPegen_expect_token(p, 691))  // token='else'
6302
13.7k
            &&
6303
13.7k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
6304
13.7k
            &&
6305
13.7k
            (b = block_rule(p))  // block
6306
13.7k
        )
6307
2.34k
        {
6308
2.34k
            D(fprintf(stderr, "%*c+ else_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else' &&':' block"));
6309
2.34k
            _res = b;
6310
2.34k
            if (_res == NULL && PyErr_Occurred()) {
6311
0
                p->error_indicator = 1;
6312
0
                p->level--;
6313
0
                return NULL;
6314
0
            }
6315
2.34k
            goto done;
6316
2.34k
        }
6317
11.3k
        p->mark = _mark;
6318
11.3k
        D(fprintf(stderr, "%*c%s else_block[%d-%d]: %s failed!\n", p->level, ' ',
6319
11.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else' &&':' block"));
6320
11.3k
    }
6321
0
    _res = NULL;
6322
13.7k
  done:
6323
13.7k
    p->level--;
6324
13.7k
    return _res;
6325
11.3k
}
6326
6327
// while_stmt: invalid_while_stmt | 'while' named_expression ':' block else_block?
6328
static stmt_ty
6329
while_stmt_rule(Parser *p)
6330
2.79k
{
6331
2.79k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6332
0
        _Pypegen_stack_overflow(p);
6333
0
    }
6334
2.79k
    if (p->error_indicator) {
6335
0
        p->level--;
6336
0
        return NULL;
6337
0
    }
6338
2.79k
    stmt_ty _res = NULL;
6339
2.79k
    int _mark = p->mark;
6340
2.79k
    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
2.79k
    int _start_lineno = p->tokens[_mark]->lineno;
6346
2.79k
    UNUSED(_start_lineno); // Only used by EXTRA macro
6347
2.79k
    int _start_col_offset = p->tokens[_mark]->col_offset;
6348
2.79k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
6349
2.79k
    if (p->call_invalid_rules) { // invalid_while_stmt
6350
721
        if (p->error_indicator) {
6351
0
            p->level--;
6352
0
            return NULL;
6353
0
        }
6354
721
        D(fprintf(stderr, "%*c> while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_while_stmt"));
6355
721
        void *invalid_while_stmt_var;
6356
721
        if (
6357
721
            (invalid_while_stmt_var = invalid_while_stmt_rule(p))  // invalid_while_stmt
6358
721
        )
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
721
        p->mark = _mark;
6365
721
        D(fprintf(stderr, "%*c%s while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6366
721
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_while_stmt"));
6367
721
    }
6368
2.79k
    { // 'while' named_expression ':' block else_block?
6369
2.79k
        if (p->error_indicator) {
6370
8
            p->level--;
6371
8
            return NULL;
6372
8
        }
6373
2.78k
        D(fprintf(stderr, "%*c> while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' block else_block?"));
6374
2.78k
        Token * _keyword;
6375
2.78k
        Token * _literal;
6376
2.78k
        expr_ty a;
6377
2.78k
        asdl_stmt_seq* b;
6378
2.78k
        void *c;
6379
2.78k
        if (
6380
2.78k
            (_keyword = _PyPegen_expect_token(p, 694))  // token='while'
6381
2.78k
            &&
6382
2.78k
            (a = named_expression_rule(p))  // named_expression
6383
2.78k
            &&
6384
2.78k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6385
2.78k
            &&
6386
2.78k
            (b = block_rule(p))  // block
6387
2.78k
            &&
6388
2.78k
            (c = else_block_rule(p), !p->error_indicator)  // else_block?
6389
2.78k
        )
6390
2.69k
        {
6391
2.69k
            D(fprintf(stderr, "%*c+ while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' block else_block?"));
6392
2.69k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6393
2.69k
            if (_token == NULL) {
6394
0
                p->level--;
6395
0
                return NULL;
6396
0
            }
6397
2.69k
            int _end_lineno = _token->end_lineno;
6398
2.69k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6399
2.69k
            int _end_col_offset = _token->end_col_offset;
6400
2.69k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6401
2.69k
            _res = _PyAST_While ( a , b , c , EXTRA );
6402
2.69k
            if (_res == NULL && PyErr_Occurred()) {
6403
0
                p->error_indicator = 1;
6404
0
                p->level--;
6405
0
                return NULL;
6406
0
            }
6407
2.69k
            goto done;
6408
2.69k
        }
6409
97
        p->mark = _mark;
6410
97
        D(fprintf(stderr, "%*c%s while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6411
97
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression ':' block else_block?"));
6412
97
    }
6413
0
    _res = NULL;
6414
2.78k
  done:
6415
2.78k
    p->level--;
6416
2.78k
    return _res;
6417
97
}
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.30k
{
6427
2.30k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6428
0
        _Pypegen_stack_overflow(p);
6429
0
    }
6430
2.30k
    if (p->error_indicator) {
6431
0
        p->level--;
6432
0
        return NULL;
6433
0
    }
6434
2.30k
    stmt_ty _res = NULL;
6435
2.30k
    int _mark = p->mark;
6436
2.30k
    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.30k
    int _start_lineno = p->tokens[_mark]->lineno;
6442
2.30k
    UNUSED(_start_lineno); // Only used by EXTRA macro
6443
2.30k
    int _start_col_offset = p->tokens[_mark]->col_offset;
6444
2.30k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
6445
2.30k
    if (p->call_invalid_rules) { // invalid_for_stmt
6446
734
        if (p->error_indicator) {
6447
0
            p->level--;
6448
0
            return NULL;
6449
0
        }
6450
734
        D(fprintf(stderr, "%*c> for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_stmt"));
6451
734
        void *invalid_for_stmt_var;
6452
734
        if (
6453
734
            (invalid_for_stmt_var = invalid_for_stmt_rule(p))  // invalid_for_stmt
6454
734
        )
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
734
        p->mark = _mark;
6461
734
        D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6462
734
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_stmt"));
6463
734
    }
6464
2.30k
    { // 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?
6465
2.30k
        if (p->error_indicator) {
6466
15
            p->level--;
6467
15
            return NULL;
6468
15
        }
6469
2.29k
        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.29k
        int _cut_var = 0;
6471
2.29k
        Token * _keyword;
6472
2.29k
        Token * _keyword_1;
6473
2.29k
        Token * _literal;
6474
2.29k
        asdl_stmt_seq* b;
6475
2.29k
        void *el;
6476
2.29k
        expr_ty ex;
6477
2.29k
        expr_ty t;
6478
2.29k
        void *tc;
6479
2.29k
        if (
6480
2.29k
            (_keyword = _PyPegen_expect_token(p, 699))  // token='for'
6481
2.29k
            &&
6482
2.29k
            (t = star_targets_rule(p))  // star_targets
6483
2.29k
            &&
6484
2.29k
            (_keyword_1 = _PyPegen_expect_token(p, 700))  // token='in'
6485
2.29k
            &&
6486
2.29k
            (_cut_var = 1)
6487
2.29k
            &&
6488
2.29k
            (ex = star_expressions_rule(p))  // star_expressions
6489
2.29k
            &&
6490
2.29k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6491
2.29k
            &&
6492
2.29k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6493
2.29k
            &&
6494
2.29k
            (b = block_rule(p))  // block
6495
2.29k
            &&
6496
2.29k
            (el = else_block_rule(p), !p->error_indicator)  // else_block?
6497
2.29k
        )
6498
263
        {
6499
263
            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
263
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6501
263
            if (_token == NULL) {
6502
0
                p->level--;
6503
0
                return NULL;
6504
0
            }
6505
263
            int _end_lineno = _token->end_lineno;
6506
263
            UNUSED(_end_lineno); // Only used by EXTRA macro
6507
263
            int _end_col_offset = _token->end_col_offset;
6508
263
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6509
263
            _res = _PyAST_For ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
6510
263
            if (_res == NULL && PyErr_Occurred()) {
6511
0
                p->error_indicator = 1;
6512
0
                p->level--;
6513
0
                return NULL;
6514
0
            }
6515
263
            goto done;
6516
263
        }
6517
2.03k
        p->mark = _mark;
6518
2.03k
        D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6519
2.03k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?"));
6520
2.03k
        if (_cut_var) {
6521
39
            p->level--;
6522
39
            return NULL;
6523
39
        }
6524
2.03k
    }
6525
1.99k
    { // 'async' 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?
6526
1.99k
        if (p->error_indicator) {
6527
4
            p->level--;
6528
4
            return NULL;
6529
4
        }
6530
1.98k
        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
1.98k
        int _cut_var = 0;
6532
1.98k
        Token * _keyword;
6533
1.98k
        Token * _keyword_1;
6534
1.98k
        Token * _keyword_2;
6535
1.98k
        Token * _literal;
6536
1.98k
        asdl_stmt_seq* b;
6537
1.98k
        void *el;
6538
1.98k
        expr_ty ex;
6539
1.98k
        expr_ty t;
6540
1.98k
        void *tc;
6541
1.98k
        if (
6542
1.98k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
6543
1.98k
            &&
6544
1.98k
            (_keyword_1 = _PyPegen_expect_token(p, 699))  // token='for'
6545
1.98k
            &&
6546
1.98k
            (t = star_targets_rule(p))  // star_targets
6547
1.98k
            &&
6548
1.98k
            (_keyword_2 = _PyPegen_expect_token(p, 700))  // token='in'
6549
1.98k
            &&
6550
1.98k
            (_cut_var = 1)
6551
1.98k
            &&
6552
1.98k
            (ex = star_expressions_rule(p))  // star_expressions
6553
1.98k
            &&
6554
1.98k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6555
1.98k
            &&
6556
1.98k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6557
1.98k
            &&
6558
1.98k
            (b = block_rule(p))  // block
6559
1.98k
            &&
6560
1.98k
            (el = else_block_rule(p), !p->error_indicator)  // else_block?
6561
1.98k
        )
6562
1.67k
        {
6563
1.67k
            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
1.67k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6565
1.67k
            if (_token == NULL) {
6566
0
                p->level--;
6567
0
                return NULL;
6568
0
            }
6569
1.67k
            int _end_lineno = _token->end_lineno;
6570
1.67k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6571
1.67k
            int _end_col_offset = _token->end_col_offset;
6572
1.67k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6573
1.67k
            _res = CHECK_VERSION ( stmt_ty , 5 , "Async for loops are" , _PyAST_AsyncFor ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
6574
1.67k
            if (_res == NULL && PyErr_Occurred()) {
6575
0
                p->error_indicator = 1;
6576
0
                p->level--;
6577
0
                return NULL;
6578
0
            }
6579
1.67k
            goto done;
6580
1.67k
        }
6581
318
        p->mark = _mark;
6582
318
        D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6583
318
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?"));
6584
318
        if (_cut_var) {
6585
18
            p->level--;
6586
18
            return NULL;
6587
18
        }
6588
318
    }
6589
300
    if (p->call_invalid_rules) { // invalid_for_target
6590
119
        if (p->error_indicator) {
6591
0
            p->level--;
6592
0
            return NULL;
6593
0
        }
6594
119
        D(fprintf(stderr, "%*c> for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
6595
119
        void *invalid_for_target_var;
6596
119
        if (
6597
119
            (invalid_for_target_var = invalid_for_target_rule(p))  // invalid_for_target
6598
119
        )
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
119
        p->mark = _mark;
6605
119
        D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6606
119
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_target"));
6607
119
    }
6608
300
    _res = NULL;
6609
2.23k
  done:
6610
2.23k
    p->level--;
6611
2.23k
    return _res;
6612
300
}
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
11.3k
{
6624
11.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6625
0
        _Pypegen_stack_overflow(p);
6626
0
    }
6627
11.3k
    if (p->error_indicator) {
6628
0
        p->level--;
6629
0
        return NULL;
6630
0
    }
6631
11.3k
    stmt_ty _res = NULL;
6632
11.3k
    int _mark = p->mark;
6633
11.3k
    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
11.3k
    int _start_lineno = p->tokens[_mark]->lineno;
6639
11.3k
    UNUSED(_start_lineno); // Only used by EXTRA macro
6640
11.3k
    int _start_col_offset = p->tokens[_mark]->col_offset;
6641
11.3k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
6642
11.3k
    if (p->call_invalid_rules) { // invalid_with_stmt_indent
6643
3.55k
        if (p->error_indicator) {
6644
0
            p->level--;
6645
0
            return NULL;
6646
0
        }
6647
3.55k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt_indent"));
6648
3.55k
        void *invalid_with_stmt_indent_var;
6649
3.55k
        if (
6650
3.55k
            (invalid_with_stmt_indent_var = invalid_with_stmt_indent_rule(p))  // invalid_with_stmt_indent
6651
3.55k
        )
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
3.55k
        p->mark = _mark;
6658
3.55k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6659
3.55k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_stmt_indent"));
6660
3.55k
    }
6661
11.3k
    { // 'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block
6662
11.3k
        if (p->error_indicator) {
6663
40
            p->level--;
6664
40
            return NULL;
6665
40
        }
6666
11.2k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block"));
6667
11.2k
        Token * _keyword;
6668
11.2k
        Token * _literal;
6669
11.2k
        Token * _literal_1;
6670
11.2k
        Token * _literal_2;
6671
11.2k
        void *_opt_var;
6672
11.2k
        UNUSED(_opt_var); // Silence compiler warnings
6673
11.2k
        asdl_withitem_seq* a;
6674
11.2k
        asdl_stmt_seq* b;
6675
11.2k
        void *tc;
6676
11.2k
        if (
6677
11.2k
            (_keyword = _PyPegen_expect_token(p, 652))  // token='with'
6678
11.2k
            &&
6679
11.2k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
6680
11.2k
            &&
6681
11.2k
            (a = (asdl_withitem_seq*)_gather_34_rule(p))  // ','.with_item+
6682
11.2k
            &&
6683
11.2k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
6684
11.2k
            &&
6685
11.2k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
6686
11.2k
            &&
6687
11.2k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
6688
11.2k
            &&
6689
11.2k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6690
11.2k
            &&
6691
11.2k
            (b = block_rule(p))  // block
6692
11.2k
        )
6693
3.73k
        {
6694
3.73k
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block"));
6695
3.73k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6696
3.73k
            if (_token == NULL) {
6697
0
                p->level--;
6698
0
                return NULL;
6699
0
            }
6700
3.73k
            int _end_lineno = _token->end_lineno;
6701
3.73k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6702
3.73k
            int _end_col_offset = _token->end_col_offset;
6703
3.73k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6704
3.73k
            _res = _PyAST_With ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
6705
3.73k
            if (_res == NULL && PyErr_Occurred()) {
6706
0
                p->error_indicator = 1;
6707
0
                p->level--;
6708
0
                return NULL;
6709
0
            }
6710
3.73k
            goto done;
6711
3.73k
        }
6712
7.55k
        p->mark = _mark;
6713
7.55k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6714
7.55k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block"));
6715
7.55k
    }
6716
0
    { // 'with' ','.with_item+ ':' TYPE_COMMENT? block
6717
7.55k
        if (p->error_indicator) {
6718
17
            p->level--;
6719
17
            return NULL;
6720
17
        }
6721
7.54k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6722
7.54k
        Token * _keyword;
6723
7.54k
        Token * _literal;
6724
7.54k
        asdl_withitem_seq* a;
6725
7.54k
        asdl_stmt_seq* b;
6726
7.54k
        void *tc;
6727
7.54k
        if (
6728
7.54k
            (_keyword = _PyPegen_expect_token(p, 652))  // token='with'
6729
7.54k
            &&
6730
7.54k
            (a = (asdl_withitem_seq*)_gather_34_rule(p))  // ','.with_item+
6731
7.54k
            &&
6732
7.54k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6733
7.54k
            &&
6734
7.54k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6735
7.54k
            &&
6736
7.54k
            (b = block_rule(p))  // block
6737
7.54k
        )
6738
2.24k
        {
6739
2.24k
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6740
2.24k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6741
2.24k
            if (_token == NULL) {
6742
0
                p->level--;
6743
0
                return NULL;
6744
0
            }
6745
2.24k
            int _end_lineno = _token->end_lineno;
6746
2.24k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6747
2.24k
            int _end_col_offset = _token->end_col_offset;
6748
2.24k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6749
2.24k
            _res = _PyAST_With ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
6750
2.24k
            if (_res == NULL && PyErr_Occurred()) {
6751
0
                p->error_indicator = 1;
6752
0
                p->level--;
6753
0
                return NULL;
6754
0
            }
6755
2.24k
            goto done;
6756
2.24k
        }
6757
5.29k
        p->mark = _mark;
6758
5.29k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6759
5.29k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6760
5.29k
    }
6761
0
    { // 'async' 'with' '(' ','.with_item+ ','? ')' ':' block
6762
5.29k
        if (p->error_indicator) {
6763
40
            p->level--;
6764
40
            return NULL;
6765
40
        }
6766
5.25k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async' 'with' '(' ','.with_item+ ','? ')' ':' block"));
6767
5.25k
        Token * _keyword;
6768
5.25k
        Token * _keyword_1;
6769
5.25k
        Token * _literal;
6770
5.25k
        Token * _literal_1;
6771
5.25k
        Token * _literal_2;
6772
5.25k
        void *_opt_var;
6773
5.25k
        UNUSED(_opt_var); // Silence compiler warnings
6774
5.25k
        asdl_withitem_seq* a;
6775
5.25k
        asdl_stmt_seq* b;
6776
5.25k
        if (
6777
5.25k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
6778
5.25k
            &&
6779
5.25k
            (_keyword_1 = _PyPegen_expect_token(p, 652))  // token='with'
6780
5.25k
            &&
6781
5.25k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
6782
5.25k
            &&
6783
5.25k
            (a = (asdl_withitem_seq*)_gather_34_rule(p))  // ','.with_item+
6784
5.25k
            &&
6785
5.25k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
6786
5.25k
            &&
6787
5.25k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
6788
5.25k
            &&
6789
5.25k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
6790
5.25k
            &&
6791
5.25k
            (b = block_rule(p))  // block
6792
5.25k
        )
6793
21
        {
6794
21
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async' 'with' '(' ','.with_item+ ','? ')' ':' block"));
6795
21
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6796
21
            if (_token == NULL) {
6797
0
                p->level--;
6798
0
                return NULL;
6799
0
            }
6800
21
            int _end_lineno = _token->end_lineno;
6801
21
            UNUSED(_end_lineno); // Only used by EXTRA macro
6802
21
            int _end_col_offset = _token->end_col_offset;
6803
21
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6804
21
            _res = CHECK_VERSION ( stmt_ty , 5 , "Async with statements are" , _PyAST_AsyncWith ( a , b , NULL , EXTRA ) );
6805
21
            if (_res == NULL && PyErr_Occurred()) {
6806
0
                p->error_indicator = 1;
6807
0
                p->level--;
6808
0
                return NULL;
6809
0
            }
6810
21
            goto done;
6811
21
        }
6812
5.23k
        p->mark = _mark;
6813
5.23k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6814
5.23k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'with' '(' ','.with_item+ ','? ')' ':' block"));
6815
5.23k
    }
6816
0
    { // 'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block
6817
5.23k
        if (p->error_indicator) {
6818
6
            p->level--;
6819
6
            return NULL;
6820
6
        }
6821
5.22k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6822
5.22k
        Token * _keyword;
6823
5.22k
        Token * _keyword_1;
6824
5.22k
        Token * _literal;
6825
5.22k
        asdl_withitem_seq* a;
6826
5.22k
        asdl_stmt_seq* b;
6827
5.22k
        void *tc;
6828
5.22k
        if (
6829
5.22k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
6830
5.22k
            &&
6831
5.22k
            (_keyword_1 = _PyPegen_expect_token(p, 652))  // token='with'
6832
5.22k
            &&
6833
5.22k
            (a = (asdl_withitem_seq*)_gather_34_rule(p))  // ','.with_item+
6834
5.22k
            &&
6835
5.22k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6836
5.22k
            &&
6837
5.22k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6838
5.22k
            &&
6839
5.22k
            (b = block_rule(p))  // block
6840
5.22k
        )
6841
2.91k
        {
6842
2.91k
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6843
2.91k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6844
2.91k
            if (_token == NULL) {
6845
0
                p->level--;
6846
0
                return NULL;
6847
0
            }
6848
2.91k
            int _end_lineno = _token->end_lineno;
6849
2.91k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6850
2.91k
            int _end_col_offset = _token->end_col_offset;
6851
2.91k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6852
2.91k
            _res = CHECK_VERSION ( stmt_ty , 5 , "Async with statements are" , _PyAST_AsyncWith ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
6853
2.91k
            if (_res == NULL && PyErr_Occurred()) {
6854
0
                p->error_indicator = 1;
6855
0
                p->level--;
6856
0
                return NULL;
6857
0
            }
6858
2.91k
            goto done;
6859
2.91k
        }
6860
2.31k
        p->mark = _mark;
6861
2.31k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6862
2.31k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6863
2.31k
    }
6864
2.31k
    if (p->call_invalid_rules) { // invalid_with_stmt
6865
758
        if (p->error_indicator) {
6866
4
            p->level--;
6867
4
            return NULL;
6868
4
        }
6869
754
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt"));
6870
754
        void *invalid_with_stmt_var;
6871
754
        if (
6872
754
            (invalid_with_stmt_var = invalid_with_stmt_rule(p))  // invalid_with_stmt
6873
754
        )
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
754
        p->mark = _mark;
6880
754
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6881
754
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_stmt"));
6882
754
    }
6883
2.30k
    _res = NULL;
6884
11.2k
  done:
6885
11.2k
    p->level--;
6886
11.2k
    return _res;
6887
2.30k
}
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
41.4k
{
6896
41.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6897
0
        _Pypegen_stack_overflow(p);
6898
0
    }
6899
41.4k
    if (p->error_indicator) {
6900
0
        p->level--;
6901
0
        return NULL;
6902
0
    }
6903
41.4k
    withitem_ty _res = NULL;
6904
41.4k
    int _mark = p->mark;
6905
41.4k
    { // expression 'as' star_target &(',' | ')' | ':')
6906
41.4k
        if (p->error_indicator) {
6907
0
            p->level--;
6908
0
            return NULL;
6909
0
        }
6910
41.4k
        D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
6911
41.4k
        Token * _keyword;
6912
41.4k
        expr_ty e;
6913
41.4k
        expr_ty t;
6914
41.4k
        if (
6915
41.4k
            (e = expression_rule(p))  // expression
6916
41.4k
            &&
6917
41.4k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
6918
41.4k
            &&
6919
41.4k
            (t = star_target_rule(p))  // star_target
6920
41.4k
            &&
6921
41.4k
            _PyPegen_lookahead(1, _tmp_35_rule, p)
6922
41.4k
        )
6923
3.15k
        {
6924
3.15k
            D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
6925
3.15k
            _res = _PyAST_withitem ( e , t , p -> arena );
6926
3.15k
            if (_res == NULL && PyErr_Occurred()) {
6927
0
                p->error_indicator = 1;
6928
0
                p->level--;
6929
0
                return NULL;
6930
0
            }
6931
3.15k
            goto done;
6932
3.15k
        }
6933
38.2k
        p->mark = _mark;
6934
38.2k
        D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
6935
38.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
6936
38.2k
    }
6937
38.2k
    if (p->call_invalid_rules) { // invalid_with_item
6938
12.9k
        if (p->error_indicator) {
6939
0
            p->level--;
6940
0
            return NULL;
6941
0
        }
6942
12.9k
        D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_item"));
6943
12.9k
        void *invalid_with_item_var;
6944
12.9k
        if (
6945
12.9k
            (invalid_with_item_var = invalid_with_item_rule(p))  // invalid_with_item
6946
12.9k
        )
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
12.9k
        p->mark = _mark;
6953
12.9k
        D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
6954
12.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_item"));
6955
12.9k
    }
6956
38.2k
    { // expression
6957
38.2k
        if (p->error_indicator) {
6958
17
            p->level--;
6959
17
            return NULL;
6960
17
        }
6961
38.2k
        D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
6962
38.2k
        expr_ty e;
6963
38.2k
        if (
6964
38.2k
            (e = expression_rule(p))  // expression
6965
38.2k
        )
6966
36.1k
        {
6967
36.1k
            D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
6968
36.1k
            _res = _PyAST_withitem ( e , NULL , p -> arena );
6969
36.1k
            if (_res == NULL && PyErr_Occurred()) {
6970
0
                p->error_indicator = 1;
6971
0
                p->level--;
6972
0
                return NULL;
6973
0
            }
6974
36.1k
            goto done;
6975
36.1k
        }
6976
2.11k
        p->mark = _mark;
6977
2.11k
        D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
6978
2.11k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
6979
2.11k
    }
6980
0
    _res = NULL;
6981
41.3k
  done:
6982
41.3k
    p->level--;
6983
41.3k
    return _res;
6984
2.11k
}
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
8.55k
{
6994
8.55k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6995
0
        _Pypegen_stack_overflow(p);
6996
0
    }
6997
8.55k
    if (p->error_indicator) {
6998
0
        p->level--;
6999
0
        return NULL;
7000
0
    }
7001
8.55k
    stmt_ty _res = NULL;
7002
8.55k
    int _mark = p->mark;
7003
8.55k
    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
8.55k
    int _start_lineno = p->tokens[_mark]->lineno;
7009
8.55k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7010
8.55k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7011
8.55k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7012
8.55k
    if (p->call_invalid_rules) { // invalid_try_stmt
7013
2.36k
        if (p->error_indicator) {
7014
0
            p->level--;
7015
0
            return NULL;
7016
0
        }
7017
2.36k
        D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_try_stmt"));
7018
2.36k
        void *invalid_try_stmt_var;
7019
2.36k
        if (
7020
2.36k
            (invalid_try_stmt_var = invalid_try_stmt_rule(p))  // invalid_try_stmt
7021
2.36k
        )
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
2.36k
        p->mark = _mark;
7028
2.36k
        D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7029
2.36k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_try_stmt"));
7030
2.36k
    }
7031
8.55k
    { // 'try' &&':' block finally_block
7032
8.55k
        if (p->error_indicator) {
7033
134
            p->level--;
7034
134
            return NULL;
7035
134
        }
7036
8.42k
        D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block finally_block"));
7037
8.42k
        Token * _keyword;
7038
8.42k
        Token * _literal;
7039
8.42k
        asdl_stmt_seq* b;
7040
8.42k
        asdl_stmt_seq* f;
7041
8.42k
        if (
7042
8.42k
            (_keyword = _PyPegen_expect_token(p, 661))  // token='try'
7043
8.42k
            &&
7044
8.42k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
7045
8.42k
            &&
7046
8.42k
            (b = block_rule(p))  // block
7047
8.42k
            &&
7048
8.42k
            (f = finally_block_rule(p))  // finally_block
7049
8.42k
        )
7050
1.73k
        {
7051
1.73k
            D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' &&':' block finally_block"));
7052
1.73k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7053
1.73k
            if (_token == NULL) {
7054
0
                p->level--;
7055
0
                return NULL;
7056
0
            }
7057
1.73k
            int _end_lineno = _token->end_lineno;
7058
1.73k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7059
1.73k
            int _end_col_offset = _token->end_col_offset;
7060
1.73k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7061
1.73k
            _res = _PyAST_Try ( b , NULL , NULL , f , EXTRA );
7062
1.73k
            if (_res == NULL && PyErr_Occurred()) {
7063
0
                p->error_indicator = 1;
7064
0
                p->level--;
7065
0
                return NULL;
7066
0
            }
7067
1.73k
            goto done;
7068
1.73k
        }
7069
6.68k
        p->mark = _mark;
7070
6.68k
        D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7071
6.68k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block finally_block"));
7072
6.68k
    }
7073
0
    { // 'try' &&':' block except_block+ else_block? finally_block?
7074
6.68k
        if (p->error_indicator) {
7075
24
            p->level--;
7076
24
            return NULL;
7077
24
        }
7078
6.66k
        D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
7079
6.66k
        Token * _keyword;
7080
6.66k
        Token * _literal;
7081
6.66k
        asdl_stmt_seq* b;
7082
6.66k
        void *el;
7083
6.66k
        asdl_excepthandler_seq* ex;
7084
6.66k
        void *f;
7085
6.66k
        if (
7086
6.66k
            (_keyword = _PyPegen_expect_token(p, 661))  // token='try'
7087
6.66k
            &&
7088
6.66k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
7089
6.66k
            &&
7090
6.66k
            (b = block_rule(p))  // block
7091
6.66k
            &&
7092
6.66k
            (ex = (asdl_excepthandler_seq*)_loop1_36_rule(p))  // except_block+
7093
6.66k
            &&
7094
6.66k
            (el = else_block_rule(p), !p->error_indicator)  // else_block?
7095
6.66k
            &&
7096
6.66k
            (f = finally_block_rule(p), !p->error_indicator)  // finally_block?
7097
6.66k
        )
7098
2.90k
        {
7099
2.90k
            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.90k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7101
2.90k
            if (_token == NULL) {
7102
0
                p->level--;
7103
0
                return NULL;
7104
0
            }
7105
2.90k
            int _end_lineno = _token->end_lineno;
7106
2.90k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7107
2.90k
            int _end_col_offset = _token->end_col_offset;
7108
2.90k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7109
2.90k
            _res = _PyAST_Try ( b , ex , el , f , EXTRA );
7110
2.90k
            if (_res == NULL && PyErr_Occurred()) {
7111
0
                p->error_indicator = 1;
7112
0
                p->level--;
7113
0
                return NULL;
7114
0
            }
7115
2.90k
            goto done;
7116
2.90k
        }
7117
3.75k
        p->mark = _mark;
7118
3.75k
        D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7119
3.75k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
7120
3.75k
    }
7121
0
    { // 'try' &&':' block except_star_block+ else_block? finally_block?
7122
3.75k
        if (p->error_indicator) {
7123
9
            p->level--;
7124
9
            return NULL;
7125
9
        }
7126
3.74k
        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
3.74k
        Token * _keyword;
7128
3.74k
        Token * _literal;
7129
3.74k
        asdl_stmt_seq* b;
7130
3.74k
        void *el;
7131
3.74k
        asdl_excepthandler_seq* ex;
7132
3.74k
        void *f;
7133
3.74k
        if (
7134
3.74k
            (_keyword = _PyPegen_expect_token(p, 661))  // token='try'
7135
3.74k
            &&
7136
3.74k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
7137
3.74k
            &&
7138
3.74k
            (b = block_rule(p))  // block
7139
3.74k
            &&
7140
3.74k
            (ex = (asdl_excepthandler_seq*)_loop1_37_rule(p))  // except_star_block+
7141
3.74k
            &&
7142
3.74k
            (el = else_block_rule(p), !p->error_indicator)  // else_block?
7143
3.74k
            &&
7144
3.74k
            (f = finally_block_rule(p), !p->error_indicator)  // finally_block?
7145
3.74k
        )
7146
3.45k
        {
7147
3.45k
            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
3.45k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7149
3.45k
            if (_token == NULL) {
7150
0
                p->level--;
7151
0
                return NULL;
7152
0
            }
7153
3.45k
            int _end_lineno = _token->end_lineno;
7154
3.45k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7155
3.45k
            int _end_col_offset = _token->end_col_offset;
7156
3.45k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7157
3.45k
            _res = CHECK_VERSION ( stmt_ty , 11 , "Exception groups are" , _PyAST_TryStar ( b , ex , el , f , EXTRA ) );
7158
3.45k
            if (_res == NULL && PyErr_Occurred()) {
7159
0
                p->error_indicator = 1;
7160
0
                p->level--;
7161
0
                return NULL;
7162
0
            }
7163
3.45k
            goto done;
7164
3.45k
        }
7165
296
        p->mark = _mark;
7166
296
        D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7167
296
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block except_star_block+ else_block? finally_block?"));
7168
296
    }
7169
0
    _res = NULL;
7170
8.38k
  done:
7171
8.38k
    p->level--;
7172
8.38k
    return _res;
7173
296
}
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
14.6k
{
7185
14.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7186
0
        _Pypegen_stack_overflow(p);
7187
0
    }
7188
14.6k
    if (p->error_indicator) {
7189
0
        p->level--;
7190
0
        return NULL;
7191
0
    }
7192
14.6k
    excepthandler_ty _res = NULL;
7193
14.6k
    int _mark = p->mark;
7194
14.6k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7195
1
        p->error_indicator = 1;
7196
1
        p->level--;
7197
1
        return NULL;
7198
1
    }
7199
14.6k
    int _start_lineno = p->tokens[_mark]->lineno;
7200
14.6k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7201
14.6k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7202
14.6k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7203
14.6k
    if (p->call_invalid_rules) { // invalid_except_stmt_indent
7204
6.50k
        if (p->error_indicator) {
7205
0
            p->level--;
7206
0
            return NULL;
7207
0
        }
7208
6.50k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt_indent"));
7209
6.50k
        void *invalid_except_stmt_indent_var;
7210
6.50k
        if (
7211
6.50k
            (invalid_except_stmt_indent_var = invalid_except_stmt_indent_rule(p))  // invalid_except_stmt_indent
7212
6.50k
        )
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.50k
        p->mark = _mark;
7219
6.50k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7220
6.50k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_stmt_indent"));
7221
6.50k
    }
7222
14.6k
    { // 'except' expression ':' block
7223
14.6k
        if (p->error_indicator) {
7224
8
            p->level--;
7225
8
            return NULL;
7226
8
        }
7227
14.6k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ':' block"));
7228
14.6k
        Token * _keyword;
7229
14.6k
        Token * _literal;
7230
14.6k
        asdl_stmt_seq* b;
7231
14.6k
        expr_ty e;
7232
14.6k
        if (
7233
14.6k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7234
14.6k
            &&
7235
14.6k
            (e = expression_rule(p))  // expression
7236
14.6k
            &&
7237
14.6k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7238
14.6k
            &&
7239
14.6k
            (b = block_rule(p))  // block
7240
14.6k
        )
7241
1.31k
        {
7242
1.31k
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ':' block"));
7243
1.31k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7244
1.31k
            if (_token == NULL) {
7245
0
                p->level--;
7246
0
                return NULL;
7247
0
            }
7248
1.31k
            int _end_lineno = _token->end_lineno;
7249
1.31k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7250
1.31k
            int _end_col_offset = _token->end_col_offset;
7251
1.31k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7252
1.31k
            _res = _PyAST_ExceptHandler ( e , NULL , b , EXTRA );
7253
1.31k
            if (_res == NULL && PyErr_Occurred()) {
7254
0
                p->error_indicator = 1;
7255
0
                p->level--;
7256
0
                return NULL;
7257
0
            }
7258
1.31k
            goto done;
7259
1.31k
        }
7260
13.3k
        p->mark = _mark;
7261
13.3k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7262
13.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ':' block"));
7263
13.3k
    }
7264
0
    { // 'except' expression 'as' NAME ':' block
7265
13.3k
        if (p->error_indicator) {
7266
9
            p->level--;
7267
9
            return NULL;
7268
9
        }
7269
13.3k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression 'as' NAME ':' block"));
7270
13.3k
        Token * _keyword;
7271
13.3k
        Token * _keyword_1;
7272
13.3k
        Token * _literal;
7273
13.3k
        asdl_stmt_seq* b;
7274
13.3k
        expr_ty e;
7275
13.3k
        expr_ty t;
7276
13.3k
        if (
7277
13.3k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7278
13.3k
            &&
7279
13.3k
            (e = expression_rule(p))  // expression
7280
13.3k
            &&
7281
13.3k
            (_keyword_1 = _PyPegen_expect_token(p, 685))  // token='as'
7282
13.3k
            &&
7283
13.3k
            (t = _PyPegen_name_token(p))  // NAME
7284
13.3k
            &&
7285
13.3k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7286
13.3k
            &&
7287
13.3k
            (b = block_rule(p))  // block
7288
13.3k
        )
7289
671
        {
7290
671
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression 'as' NAME ':' block"));
7291
671
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7292
671
            if (_token == NULL) {
7293
0
                p->level--;
7294
0
                return NULL;
7295
0
            }
7296
671
            int _end_lineno = _token->end_lineno;
7297
671
            UNUSED(_end_lineno); // Only used by EXTRA macro
7298
671
            int _end_col_offset = _token->end_col_offset;
7299
671
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7300
671
            _res = _PyAST_ExceptHandler ( e , ( ( expr_ty ) t ) -> v . Name . id , b , EXTRA );
7301
671
            if (_res == NULL && PyErr_Occurred()) {
7302
0
                p->error_indicator = 1;
7303
0
                p->level--;
7304
0
                return NULL;
7305
0
            }
7306
671
            goto done;
7307
671
        }
7308
12.6k
        p->mark = _mark;
7309
12.6k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7310
12.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression 'as' NAME ':' block"));
7311
12.6k
    }
7312
0
    { // 'except' expressions ':' block
7313
12.6k
        if (p->error_indicator) {
7314
2
            p->level--;
7315
2
            return NULL;
7316
2
        }
7317
12.6k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expressions ':' block"));
7318
12.6k
        Token * _keyword;
7319
12.6k
        Token * _literal;
7320
12.6k
        asdl_stmt_seq* b;
7321
12.6k
        expr_ty e;
7322
12.6k
        if (
7323
12.6k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7324
12.6k
            &&
7325
12.6k
            (e = expressions_rule(p))  // expressions
7326
12.6k
            &&
7327
12.6k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7328
12.6k
            &&
7329
12.6k
            (b = block_rule(p))  // block
7330
12.6k
        )
7331
527
        {
7332
527
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expressions ':' block"));
7333
527
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7334
527
            if (_token == NULL) {
7335
0
                p->level--;
7336
0
                return NULL;
7337
0
            }
7338
527
            int _end_lineno = _token->end_lineno;
7339
527
            UNUSED(_end_lineno); // Only used by EXTRA macro
7340
527
            int _end_col_offset = _token->end_col_offset;
7341
527
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7342
527
            _res = CHECK_VERSION ( excepthandler_ty , 14 , "except expressions without parentheses are" , _PyAST_ExceptHandler ( e , NULL , b , EXTRA ) );
7343
527
            if (_res == NULL && PyErr_Occurred()) {
7344
0
                p->error_indicator = 1;
7345
0
                p->level--;
7346
0
                return NULL;
7347
0
            }
7348
527
            goto done;
7349
527
        }
7350
12.1k
        p->mark = _mark;
7351
12.1k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7352
12.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expressions ':' block"));
7353
12.1k
    }
7354
0
    { // 'except' ':' block
7355
12.1k
        if (p->error_indicator) {
7356
9
            p->level--;
7357
9
            return NULL;
7358
9
        }
7359
12.1k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' ':' block"));
7360
12.1k
        Token * _keyword;
7361
12.1k
        Token * _literal;
7362
12.1k
        asdl_stmt_seq* b;
7363
12.1k
        if (
7364
12.1k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7365
12.1k
            &&
7366
12.1k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7367
12.1k
            &&
7368
12.1k
            (b = block_rule(p))  // block
7369
12.1k
        )
7370
3.31k
        {
7371
3.31k
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' ':' block"));
7372
3.31k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7373
3.31k
            if (_token == NULL) {
7374
0
                p->level--;
7375
0
                return NULL;
7376
0
            }
7377
3.31k
            int _end_lineno = _token->end_lineno;
7378
3.31k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7379
3.31k
            int _end_col_offset = _token->end_col_offset;
7380
3.31k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7381
3.31k
            _res = _PyAST_ExceptHandler ( NULL , NULL , b , EXTRA );
7382
3.31k
            if (_res == NULL && PyErr_Occurred()) {
7383
0
                p->error_indicator = 1;
7384
0
                p->level--;
7385
0
                return NULL;
7386
0
            }
7387
3.31k
            goto done;
7388
3.31k
        }
7389
8.78k
        p->mark = _mark;
7390
8.78k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7391
8.78k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' ':' block"));
7392
8.78k
    }
7393
8.78k
    if (p->call_invalid_rules) { // invalid_except_stmt
7394
4.02k
        if (p->error_indicator) {
7395
5
            p->level--;
7396
5
            return NULL;
7397
5
        }
7398
4.02k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt"));
7399
4.02k
        void *invalid_except_stmt_var;
7400
4.02k
        if (
7401
4.02k
            (invalid_except_stmt_var = invalid_except_stmt_rule(p))  // invalid_except_stmt
7402
4.02k
        )
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
4.02k
        p->mark = _mark;
7409
4.02k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7410
4.02k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_stmt"));
7411
4.02k
    }
7412
8.78k
    _res = NULL;
7413
14.6k
  done:
7414
14.6k
    p->level--;
7415
14.6k
    return _res;
7416
8.78k
}
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
12.5k
{
7427
12.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7428
0
        _Pypegen_stack_overflow(p);
7429
0
    }
7430
12.5k
    if (p->error_indicator) {
7431
0
        p->level--;
7432
0
        return NULL;
7433
0
    }
7434
12.5k
    excepthandler_ty _res = NULL;
7435
12.5k
    int _mark = p->mark;
7436
12.5k
    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
12.5k
    int _start_lineno = p->tokens[_mark]->lineno;
7442
12.5k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7443
12.5k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7444
12.5k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7445
12.5k
    if (p->call_invalid_rules) { // invalid_except_star_stmt_indent
7446
6.42k
        if (p->error_indicator) {
7447
0
            p->level--;
7448
0
            return NULL;
7449
0
        }
7450
6.42k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_star_stmt_indent"));
7451
6.42k
        void *invalid_except_star_stmt_indent_var;
7452
6.42k
        if (
7453
6.42k
            (invalid_except_star_stmt_indent_var = invalid_except_star_stmt_indent_rule(p))  // invalid_except_star_stmt_indent
7454
6.42k
        )
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
6.42k
        p->mark = _mark;
7461
6.42k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7462
6.42k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_star_stmt_indent"));
7463
6.42k
    }
7464
12.5k
    { // 'except' '*' expression ':' block
7465
12.5k
        if (p->error_indicator) {
7466
3
            p->level--;
7467
3
            return NULL;
7468
3
        }
7469
12.5k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ':' block"));
7470
12.5k
        Token * _keyword;
7471
12.5k
        Token * _literal;
7472
12.5k
        Token * _literal_1;
7473
12.5k
        asdl_stmt_seq* b;
7474
12.5k
        expr_ty e;
7475
12.5k
        if (
7476
12.5k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7477
12.5k
            &&
7478
12.5k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
7479
12.5k
            &&
7480
12.5k
            (e = expression_rule(p))  // expression
7481
12.5k
            &&
7482
12.5k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
7483
12.5k
            &&
7484
12.5k
            (b = block_rule(p))  // block
7485
12.5k
        )
7486
6.17k
        {
7487
6.17k
            D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ':' block"));
7488
6.17k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7489
6.17k
            if (_token == NULL) {
7490
0
                p->level--;
7491
0
                return NULL;
7492
0
            }
7493
6.17k
            int _end_lineno = _token->end_lineno;
7494
6.17k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7495
6.17k
            int _end_col_offset = _token->end_col_offset;
7496
6.17k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7497
6.17k
            _res = _PyAST_ExceptHandler ( e , NULL , b , EXTRA );
7498
6.17k
            if (_res == NULL && PyErr_Occurred()) {
7499
0
                p->error_indicator = 1;
7500
0
                p->level--;
7501
0
                return NULL;
7502
0
            }
7503
6.17k
            goto done;
7504
6.17k
        }
7505
6.35k
        p->mark = _mark;
7506
6.35k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7507
6.35k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression ':' block"));
7508
6.35k
    }
7509
0
    { // 'except' '*' expression 'as' NAME ':' block
7510
6.35k
        if (p->error_indicator) {
7511
2
            p->level--;
7512
2
            return NULL;
7513
2
        }
7514
6.35k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression 'as' NAME ':' block"));
7515
6.35k
        Token * _keyword;
7516
6.35k
        Token * _keyword_1;
7517
6.35k
        Token * _literal;
7518
6.35k
        Token * _literal_1;
7519
6.35k
        asdl_stmt_seq* b;
7520
6.35k
        expr_ty e;
7521
6.35k
        expr_ty t;
7522
6.35k
        if (
7523
6.35k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7524
6.35k
            &&
7525
6.35k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
7526
6.35k
            &&
7527
6.35k
            (e = expression_rule(p))  // expression
7528
6.35k
            &&
7529
6.35k
            (_keyword_1 = _PyPegen_expect_token(p, 685))  // token='as'
7530
6.35k
            &&
7531
6.35k
            (t = _PyPegen_name_token(p))  // NAME
7532
6.35k
            &&
7533
6.35k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
7534
6.35k
            &&
7535
6.35k
            (b = block_rule(p))  // block
7536
6.35k
        )
7537
319
        {
7538
319
            D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expression 'as' NAME ':' block"));
7539
319
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7540
319
            if (_token == NULL) {
7541
0
                p->level--;
7542
0
                return NULL;
7543
0
            }
7544
319
            int _end_lineno = _token->end_lineno;
7545
319
            UNUSED(_end_lineno); // Only used by EXTRA macro
7546
319
            int _end_col_offset = _token->end_col_offset;
7547
319
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7548
319
            _res = _PyAST_ExceptHandler ( e , ( ( expr_ty ) t ) -> v . Name . id , b , EXTRA );
7549
319
            if (_res == NULL && PyErr_Occurred()) {
7550
0
                p->error_indicator = 1;
7551
0
                p->level--;
7552
0
                return NULL;
7553
0
            }
7554
319
            goto done;
7555
319
        }
7556
6.03k
        p->mark = _mark;
7557
6.03k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7558
6.03k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression 'as' NAME ':' block"));
7559
6.03k
    }
7560
0
    { // 'except' '*' expressions ':' block
7561
6.03k
        if (p->error_indicator) {
7562
3
            p->level--;
7563
3
            return NULL;
7564
3
        }
7565
6.03k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expressions ':' block"));
7566
6.03k
        Token * _keyword;
7567
6.03k
        Token * _literal;
7568
6.03k
        Token * _literal_1;
7569
6.03k
        asdl_stmt_seq* b;
7570
6.03k
        expr_ty e;
7571
6.03k
        if (
7572
6.03k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7573
6.03k
            &&
7574
6.03k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
7575
6.03k
            &&
7576
6.03k
            (e = expressions_rule(p))  // expressions
7577
6.03k
            &&
7578
6.03k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
7579
6.03k
            &&
7580
6.03k
            (b = block_rule(p))  // block
7581
6.03k
        )
7582
183
        {
7583
183
            D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expressions ':' block"));
7584
183
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7585
183
            if (_token == NULL) {
7586
0
                p->level--;
7587
0
                return NULL;
7588
0
            }
7589
183
            int _end_lineno = _token->end_lineno;
7590
183
            UNUSED(_end_lineno); // Only used by EXTRA macro
7591
183
            int _end_col_offset = _token->end_col_offset;
7592
183
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7593
183
            _res = CHECK_VERSION ( excepthandler_ty , 14 , "except expressions without parentheses are" , _PyAST_ExceptHandler ( e , NULL , b , EXTRA ) );
7594
183
            if (_res == NULL && PyErr_Occurred()) {
7595
0
                p->error_indicator = 1;
7596
0
                p->level--;
7597
0
                return NULL;
7598
0
            }
7599
183
            goto done;
7600
183
        }
7601
5.84k
        p->mark = _mark;
7602
5.84k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7603
5.84k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expressions ':' block"));
7604
5.84k
    }
7605
5.84k
    if (p->call_invalid_rules) { // invalid_except_star_stmt
7606
3.37k
        if (p->error_indicator) {
7607
3
            p->level--;
7608
3
            return NULL;
7609
3
        }
7610
3.37k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_star_stmt"));
7611
3.37k
        void *invalid_except_star_stmt_var;
7612
3.37k
        if (
7613
3.37k
            (invalid_except_star_stmt_var = invalid_except_star_stmt_rule(p))  // invalid_except_star_stmt
7614
3.37k
        )
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
3.37k
        p->mark = _mark;
7621
3.37k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7622
3.37k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_star_stmt"));
7623
3.37k
    }
7624
5.84k
    _res = NULL;
7625
12.5k
  done:
7626
12.5k
    p->level--;
7627
12.5k
    return _res;
7628
5.84k
}
7629
7630
// finally_block: invalid_finally_stmt | 'finally' &&':' block
7631
static asdl_stmt_seq*
7632
finally_block_rule(Parser *p)
7633
14.6k
{
7634
14.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7635
0
        _Pypegen_stack_overflow(p);
7636
0
    }
7637
14.6k
    if (p->error_indicator) {
7638
0
        p->level--;
7639
0
        return NULL;
7640
0
    }
7641
14.6k
    asdl_stmt_seq* _res = NULL;
7642
14.6k
    int _mark = p->mark;
7643
14.6k
    if (p->call_invalid_rules) { // invalid_finally_stmt
7644
3.89k
        if (p->error_indicator) {
7645
0
            p->level--;
7646
0
            return NULL;
7647
0
        }
7648
3.89k
        D(fprintf(stderr, "%*c> finally_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_finally_stmt"));
7649
3.89k
        void *invalid_finally_stmt_var;
7650
3.89k
        if (
7651
3.89k
            (invalid_finally_stmt_var = invalid_finally_stmt_rule(p))  // invalid_finally_stmt
7652
3.89k
        )
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.89k
        p->mark = _mark;
7659
3.89k
        D(fprintf(stderr, "%*c%s finally_block[%d-%d]: %s failed!\n", p->level, ' ',
7660
3.89k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_finally_stmt"));
7661
3.89k
    }
7662
14.6k
    { // 'finally' &&':' block
7663
14.6k
        if (p->error_indicator) {
7664
2
            p->level--;
7665
2
            return NULL;
7666
2
        }
7667
14.6k
        D(fprintf(stderr, "%*c> finally_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally' &&':' block"));
7668
14.6k
        Token * _keyword;
7669
14.6k
        Token * _literal;
7670
14.6k
        asdl_stmt_seq* a;
7671
14.6k
        if (
7672
14.6k
            (_keyword = _PyPegen_expect_token(p, 678))  // token='finally'
7673
14.6k
            &&
7674
14.6k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
7675
14.6k
            &&
7676
14.6k
            (a = block_rule(p))  // block
7677
14.6k
        )
7678
2.75k
        {
7679
2.75k
            D(fprintf(stderr, "%*c+ finally_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally' &&':' block"));
7680
2.75k
            _res = a;
7681
2.75k
            if (_res == NULL && PyErr_Occurred()) {
7682
0
                p->error_indicator = 1;
7683
0
                p->level--;
7684
0
                return NULL;
7685
0
            }
7686
2.75k
            goto done;
7687
2.75k
        }
7688
11.8k
        p->mark = _mark;
7689
11.8k
        D(fprintf(stderr, "%*c%s finally_block[%d-%d]: %s failed!\n", p->level, ' ',
7690
11.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally' &&':' block"));
7691
11.8k
    }
7692
0
    _res = NULL;
7693
14.6k
  done:
7694
14.6k
    p->level--;
7695
14.6k
    return _res;
7696
11.8k
}
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
177k
{
7704
177k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7705
0
        _Pypegen_stack_overflow(p);
7706
0
    }
7707
177k
    if (p->error_indicator) {
7708
0
        p->level--;
7709
0
        return NULL;
7710
0
    }
7711
177k
    stmt_ty _res = NULL;
7712
177k
    int _mark = p->mark;
7713
177k
    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
177k
    int _start_lineno = p->tokens[_mark]->lineno;
7719
177k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7720
177k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7721
177k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7722
177k
    { // "match" subject_expr ':' NEWLINE INDENT case_block+ DEDENT
7723
177k
        if (p->error_indicator) {
7724
0
            p->level--;
7725
0
            return NULL;
7726
0
        }
7727
177k
        D(fprintf(stderr, "%*c> match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
7728
177k
        expr_ty _keyword;
7729
177k
        Token * _literal;
7730
177k
        asdl_match_case_seq* cases;
7731
177k
        Token * dedent_var;
7732
177k
        Token * indent_var;
7733
177k
        Token * newline_var;
7734
177k
        expr_ty subject;
7735
177k
        if (
7736
177k
            (_keyword = _PyPegen_expect_soft_keyword(p, "match"))  // soft_keyword='"match"'
7737
177k
            &&
7738
177k
            (subject = subject_expr_rule(p))  // subject_expr
7739
177k
            &&
7740
177k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7741
177k
            &&
7742
177k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
7743
177k
            &&
7744
177k
            (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
7745
177k
            &&
7746
177k
            (cases = (asdl_match_case_seq*)_loop1_38_rule(p))  // case_block+
7747
177k
            &&
7748
177k
            (dedent_var = _PyPegen_expect_token(p, DEDENT))  // token='DEDENT'
7749
177k
        )
7750
1.36k
        {
7751
1.36k
            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
1.36k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7753
1.36k
            if (_token == NULL) {
7754
0
                p->level--;
7755
0
                return NULL;
7756
0
            }
7757
1.36k
            int _end_lineno = _token->end_lineno;
7758
1.36k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7759
1.36k
            int _end_col_offset = _token->end_col_offset;
7760
1.36k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7761
1.36k
            _res = CHECK_VERSION ( stmt_ty , 10 , "Pattern matching is" , _PyAST_Match ( subject , cases , EXTRA ) );
7762
1.36k
            if (_res == NULL && PyErr_Occurred()) {
7763
0
                p->error_indicator = 1;
7764
0
                p->level--;
7765
0
                return NULL;
7766
0
            }
7767
1.36k
            goto done;
7768
1.36k
        }
7769
175k
        p->mark = _mark;
7770
175k
        D(fprintf(stderr, "%*c%s match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7771
175k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
7772
175k
    }
7773
175k
    if (p->call_invalid_rules) { // invalid_match_stmt
7774
34.9k
        if (p->error_indicator) {
7775
95
            p->level--;
7776
95
            return NULL;
7777
95
        }
7778
34.8k
        D(fprintf(stderr, "%*c> match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_match_stmt"));
7779
34.8k
        void *invalid_match_stmt_var;
7780
34.8k
        if (
7781
34.8k
            (invalid_match_stmt_var = invalid_match_stmt_rule(p))  // invalid_match_stmt
7782
34.8k
        )
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
34.8k
        p->mark = _mark;
7789
34.8k
        D(fprintf(stderr, "%*c%s match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7790
34.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_match_stmt"));
7791
34.8k
    }
7792
175k
    _res = NULL;
7793
177k
  done:
7794
177k
    p->level--;
7795
177k
    return _res;
7796
175k
}
7797
7798
// subject_expr: star_named_expression ',' star_named_expressions? | named_expression
7799
static expr_ty
7800
subject_expr_rule(Parser *p)
7801
6.63k
{
7802
6.63k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7803
0
        _Pypegen_stack_overflow(p);
7804
0
    }
7805
6.63k
    if (p->error_indicator) {
7806
0
        p->level--;
7807
0
        return NULL;
7808
0
    }
7809
6.63k
    expr_ty _res = NULL;
7810
6.63k
    int _mark = p->mark;
7811
6.63k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7812
2
        p->error_indicator = 1;
7813
2
        p->level--;
7814
2
        return NULL;
7815
2
    }
7816
6.63k
    int _start_lineno = p->tokens[_mark]->lineno;
7817
6.63k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7818
6.63k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7819
6.63k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7820
6.63k
    { // star_named_expression ',' star_named_expressions?
7821
6.63k
        if (p->error_indicator) {
7822
0
            p->level--;
7823
0
            return NULL;
7824
0
        }
7825
6.63k
        D(fprintf(stderr, "%*c> subject_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
7826
6.63k
        Token * _literal;
7827
6.63k
        expr_ty value;
7828
6.63k
        void *values;
7829
6.63k
        if (
7830
6.63k
            (value = star_named_expression_rule(p))  // star_named_expression
7831
6.63k
            &&
7832
6.63k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
7833
6.63k
            &&
7834
6.63k
            (values = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
7835
6.63k
        )
7836
647
        {
7837
647
            D(fprintf(stderr, "%*c+ subject_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
7838
647
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7839
647
            if (_token == NULL) {
7840
0
                p->level--;
7841
0
                return NULL;
7842
0
            }
7843
647
            int _end_lineno = _token->end_lineno;
7844
647
            UNUSED(_end_lineno); // Only used by EXTRA macro
7845
647
            int _end_col_offset = _token->end_col_offset;
7846
647
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7847
647
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , value , values ) ) , Load , EXTRA );
7848
647
            if (_res == NULL && PyErr_Occurred()) {
7849
0
                p->error_indicator = 1;
7850
0
                p->level--;
7851
0
                return NULL;
7852
0
            }
7853
647
            goto done;
7854
647
        }
7855
5.98k
        p->mark = _mark;
7856
5.98k
        D(fprintf(stderr, "%*c%s subject_expr[%d-%d]: %s failed!\n", p->level, ' ',
7857
5.98k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
7858
5.98k
    }
7859
0
    { // named_expression
7860
5.98k
        if (p->error_indicator) {
7861
5
            p->level--;
7862
5
            return NULL;
7863
5
        }
7864
5.98k
        D(fprintf(stderr, "%*c> subject_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
7865
5.98k
        expr_ty named_expression_var;
7866
5.98k
        if (
7867
5.98k
            (named_expression_var = named_expression_rule(p))  // named_expression
7868
5.98k
        )
7869
5.17k
        {
7870
5.17k
            D(fprintf(stderr, "%*c+ subject_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
7871
5.17k
            _res = named_expression_var;
7872
5.17k
            goto done;
7873
5.17k
        }
7874
808
        p->mark = _mark;
7875
808
        D(fprintf(stderr, "%*c%s subject_expr[%d-%d]: %s failed!\n", p->level, ' ',
7876
808
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
7877
808
    }
7878
0
    _res = NULL;
7879
6.63k
  done:
7880
6.63k
    p->level--;
7881
6.63k
    return _res;
7882
808
}
7883
7884
// case_block: invalid_case_block | "case" patterns guard? ':' block
7885
static match_case_ty
7886
case_block_rule(Parser *p)
7887
9.48k
{
7888
9.48k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7889
0
        _Pypegen_stack_overflow(p);
7890
0
    }
7891
9.48k
    if (p->error_indicator) {
7892
0
        p->level--;
7893
0
        return NULL;
7894
0
    }
7895
9.48k
    match_case_ty _res = NULL;
7896
9.48k
    int _mark = p->mark;
7897
9.48k
    if (p->call_invalid_rules) { // invalid_case_block
7898
2.13k
        if (p->error_indicator) {
7899
0
            p->level--;
7900
0
            return NULL;
7901
0
        }
7902
2.13k
        D(fprintf(stderr, "%*c> case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_case_block"));
7903
2.13k
        void *invalid_case_block_var;
7904
2.13k
        if (
7905
2.13k
            (invalid_case_block_var = invalid_case_block_rule(p))  // invalid_case_block
7906
2.13k
        )
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.13k
        p->mark = _mark;
7913
2.13k
        D(fprintf(stderr, "%*c%s case_block[%d-%d]: %s failed!\n", p->level, ' ',
7914
2.13k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_case_block"));
7915
2.13k
    }
7916
9.48k
    { // "case" patterns guard? ':' block
7917
9.48k
        if (p->error_indicator) {
7918
90
            p->level--;
7919
90
            return NULL;
7920
90
        }
7921
9.39k
        D(fprintf(stderr, "%*c> case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' block"));
7922
9.39k
        expr_ty _keyword;
7923
9.39k
        Token * _literal;
7924
9.39k
        asdl_stmt_seq* body;
7925
9.39k
        void *guard;
7926
9.39k
        pattern_ty pattern;
7927
9.39k
        if (
7928
9.39k
            (_keyword = _PyPegen_expect_soft_keyword(p, "case"))  // soft_keyword='"case"'
7929
9.39k
            &&
7930
9.39k
            (pattern = patterns_rule(p))  // patterns
7931
9.39k
            &&
7932
9.39k
            (guard = guard_rule(p), !p->error_indicator)  // guard?
7933
9.39k
            &&
7934
9.39k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7935
9.39k
            &&
7936
9.39k
            (body = block_rule(p))  // block
7937
9.39k
        )
7938
7.14k
        {
7939
7.14k
            D(fprintf(stderr, "%*c+ case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' block"));
7940
7.14k
            _res = _PyAST_match_case ( pattern , guard , body , p -> arena );
7941
7.14k
            if (_res == NULL && PyErr_Occurred()) {
7942
0
                p->error_indicator = 1;
7943
0
                p->level--;
7944
0
                return NULL;
7945
0
            }
7946
7.14k
            goto done;
7947
7.14k
        }
7948
2.24k
        p->mark = _mark;
7949
2.24k
        D(fprintf(stderr, "%*c%s case_block[%d-%d]: %s failed!\n", p->level, ' ',
7950
2.24k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"case\" patterns guard? ':' block"));
7951
2.24k
    }
7952
0
    _res = NULL;
7953
9.39k
  done:
7954
9.39k
    p->level--;
7955
9.39k
    return _res;
7956
2.24k
}
7957
7958
// guard: 'if' named_expression
7959
static expr_ty
7960
guard_rule(Parser *p)
7961
10.4k
{
7962
10.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7963
0
        _Pypegen_stack_overflow(p);
7964
0
    }
7965
10.4k
    if (p->error_indicator) {
7966
0
        p->level--;
7967
0
        return NULL;
7968
0
    }
7969
10.4k
    expr_ty _res = NULL;
7970
10.4k
    int _mark = p->mark;
7971
10.4k
    { // 'if' named_expression
7972
10.4k
        if (p->error_indicator) {
7973
0
            p->level--;
7974
0
            return NULL;
7975
0
        }
7976
10.4k
        D(fprintf(stderr, "%*c> guard[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression"));
7977
10.4k
        Token * _keyword;
7978
10.4k
        expr_ty guard;
7979
10.4k
        if (
7980
10.4k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
7981
10.4k
            &&
7982
10.4k
            (guard = named_expression_rule(p))  // named_expression
7983
10.4k
        )
7984
594
        {
7985
594
            D(fprintf(stderr, "%*c+ guard[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression"));
7986
594
            _res = guard;
7987
594
            if (_res == NULL && PyErr_Occurred()) {
7988
0
                p->error_indicator = 1;
7989
0
                p->level--;
7990
0
                return NULL;
7991
0
            }
7992
594
            goto done;
7993
594
        }
7994
9.81k
        p->mark = _mark;
7995
9.81k
        D(fprintf(stderr, "%*c%s guard[%d-%d]: %s failed!\n", p->level, ' ',
7996
9.81k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression"));
7997
9.81k
    }
7998
0
    _res = NULL;
7999
10.4k
  done:
8000
10.4k
    p->level--;
8001
10.4k
    return _res;
8002
9.81k
}
8003
8004
// patterns: open_sequence_pattern | pattern
8005
static pattern_ty
8006
patterns_rule(Parser *p)
8007
11.4k
{
8008
11.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8009
0
        _Pypegen_stack_overflow(p);
8010
0
    }
8011
11.4k
    if (p->error_indicator) {
8012
0
        p->level--;
8013
0
        return NULL;
8014
0
    }
8015
11.4k
    pattern_ty _res = NULL;
8016
11.4k
    int _mark = p->mark;
8017
11.4k
    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
11.4k
    int _start_lineno = p->tokens[_mark]->lineno;
8023
11.4k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8024
11.4k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8025
11.4k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8026
11.4k
    { // open_sequence_pattern
8027
11.4k
        if (p->error_indicator) {
8028
0
            p->level--;
8029
0
            return NULL;
8030
0
        }
8031
11.4k
        D(fprintf(stderr, "%*c> patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "open_sequence_pattern"));
8032
11.4k
        asdl_pattern_seq* patterns;
8033
11.4k
        if (
8034
11.4k
            (patterns = (asdl_pattern_seq*)open_sequence_pattern_rule(p))  // open_sequence_pattern
8035
11.4k
        )
8036
8.26k
        {
8037
8.26k
            D(fprintf(stderr, "%*c+ patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "open_sequence_pattern"));
8038
8.26k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8039
8.26k
            if (_token == NULL) {
8040
0
                p->level--;
8041
0
                return NULL;
8042
0
            }
8043
8.26k
            int _end_lineno = _token->end_lineno;
8044
8.26k
            UNUSED(_end_lineno); // Only used by EXTRA macro
8045
8.26k
            int _end_col_offset = _token->end_col_offset;
8046
8.26k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8047
8.26k
            _res = _PyAST_MatchSequence ( patterns , EXTRA );
8048
8.26k
            if (_res == NULL && PyErr_Occurred()) {
8049
0
                p->error_indicator = 1;
8050
0
                p->level--;
8051
0
                return NULL;
8052
0
            }
8053
8.26k
            goto done;
8054
8.26k
        }
8055
3.22k
        p->mark = _mark;
8056
3.22k
        D(fprintf(stderr, "%*c%s patterns[%d-%d]: %s failed!\n", p->level, ' ',
8057
3.22k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "open_sequence_pattern"));
8058
3.22k
    }
8059
0
    { // pattern
8060
3.22k
        if (p->error_indicator) {
8061
204
            p->level--;
8062
204
            return NULL;
8063
204
        }
8064
3.02k
        D(fprintf(stderr, "%*c> patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern"));
8065
3.02k
        pattern_ty pattern_var;
8066
3.02k
        if (
8067
3.02k
            (pattern_var = pattern_rule(p))  // pattern
8068
3.02k
        )
8069
2.14k
        {
8070
2.14k
            D(fprintf(stderr, "%*c+ patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern"));
8071
2.14k
            _res = pattern_var;
8072
2.14k
            goto done;
8073
2.14k
        }
8074
878
        p->mark = _mark;
8075
878
        D(fprintf(stderr, "%*c%s patterns[%d-%d]: %s failed!\n", p->level, ' ',
8076
878
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern"));
8077
878
    }
8078
0
    _res = NULL;
8079
11.2k
  done:
8080
11.2k
    p->level--;
8081
11.2k
    return _res;
8082
878
}
8083
8084
// pattern: as_pattern | or_pattern
8085
static pattern_ty
8086
pattern_rule(Parser *p)
8087
109k
{
8088
109k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8089
0
        _Pypegen_stack_overflow(p);
8090
0
    }
8091
109k
    if (p->error_indicator) {
8092
0
        p->level--;
8093
0
        return NULL;
8094
0
    }
8095
109k
    pattern_ty _res = NULL;
8096
109k
    int _mark = p->mark;
8097
109k
    { // as_pattern
8098
109k
        if (p->error_indicator) {
8099
0
            p->level--;
8100
0
            return NULL;
8101
0
        }
8102
109k
        D(fprintf(stderr, "%*c> pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "as_pattern"));
8103
109k
        pattern_ty as_pattern_var;
8104
109k
        if (
8105
109k
            (as_pattern_var = as_pattern_rule(p))  // as_pattern
8106
109k
        )
8107
781
        {
8108
781
            D(fprintf(stderr, "%*c+ pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "as_pattern"));
8109
781
            _res = as_pattern_var;
8110
781
            goto done;
8111
781
        }
8112
108k
        p->mark = _mark;
8113
108k
        D(fprintf(stderr, "%*c%s pattern[%d-%d]: %s failed!\n", p->level, ' ',
8114
108k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "as_pattern"));
8115
108k
    }
8116
0
    { // or_pattern
8117
108k
        if (p->error_indicator) {
8118
3.25k
            p->level--;
8119
3.25k
            return NULL;
8120
3.25k
        }
8121
105k
        D(fprintf(stderr, "%*c> pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern"));
8122
105k
        pattern_ty or_pattern_var;
8123
105k
        if (
8124
105k
            (or_pattern_var = or_pattern_rule(p))  // or_pattern
8125
105k
        )
8126
75.6k
        {
8127
75.6k
            D(fprintf(stderr, "%*c+ pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern"));
8128
75.6k
            _res = or_pattern_var;
8129
75.6k
            goto done;
8130
75.6k
        }
8131
29.5k
        p->mark = _mark;
8132
29.5k
        D(fprintf(stderr, "%*c%s pattern[%d-%d]: %s failed!\n", p->level, ' ',
8133
29.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern"));
8134
29.5k
    }
8135
0
    _res = NULL;
8136
105k
  done:
8137
105k
    p->level--;
8138
105k
    return _res;
8139
29.5k
}
8140
8141
// as_pattern: or_pattern 'as' pattern_capture_target | invalid_as_pattern
8142
static pattern_ty
8143
as_pattern_rule(Parser *p)
8144
109k
{
8145
109k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8146
0
        _Pypegen_stack_overflow(p);
8147
0
    }
8148
109k
    if (p->error_indicator) {
8149
0
        p->level--;
8150
0
        return NULL;
8151
0
    }
8152
109k
    pattern_ty _res = NULL;
8153
109k
    int _mark = p->mark;
8154
109k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8155
48
        p->error_indicator = 1;
8156
48
        p->level--;
8157
48
        return NULL;
8158
48
    }
8159
109k
    int _start_lineno = p->tokens[_mark]->lineno;
8160
109k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8161
109k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8162
109k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8163
109k
    { // or_pattern 'as' pattern_capture_target
8164
109k
        if (p->error_indicator) {
8165
0
            p->level--;
8166
0
            return NULL;
8167
0
        }
8168
109k
        D(fprintf(stderr, "%*c> as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
8169
109k
        Token * _keyword;
8170
109k
        pattern_ty pattern;
8171
109k
        expr_ty target;
8172
109k
        if (
8173
109k
            (pattern = or_pattern_rule(p))  // or_pattern
8174
109k
            &&
8175
109k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
8176
109k
            &&
8177
109k
            (target = pattern_capture_target_rule(p))  // pattern_capture_target
8178
109k
        )
8179
781
        {
8180
781
            D(fprintf(stderr, "%*c+ as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
8181
781
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8182
781
            if (_token == NULL) {
8183
0
                p->level--;
8184
0
                return NULL;
8185
0
            }
8186
781
            int _end_lineno = _token->end_lineno;
8187
781
            UNUSED(_end_lineno); // Only used by EXTRA macro
8188
781
            int _end_col_offset = _token->end_col_offset;
8189
781
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8190
781
            _res = _PyAST_MatchAs ( pattern , target -> v . Name . id , EXTRA );
8191
781
            if (_res == NULL && PyErr_Occurred()) {
8192
0
                p->error_indicator = 1;
8193
0
                p->level--;
8194
0
                return NULL;
8195
0
            }
8196
781
            goto done;
8197
781
        }
8198
108k
        p->mark = _mark;
8199
108k
        D(fprintf(stderr, "%*c%s as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8200
108k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
8201
108k
    }
8202
108k
    if (p->call_invalid_rules) { // invalid_as_pattern
8203
40.1k
        if (p->error_indicator) {
8204
1.28k
            p->level--;
8205
1.28k
            return NULL;
8206
1.28k
        }
8207
38.8k
        D(fprintf(stderr, "%*c> as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_as_pattern"));
8208
38.8k
        void *invalid_as_pattern_var;
8209
38.8k
        if (
8210
38.8k
            (invalid_as_pattern_var = invalid_as_pattern_rule(p))  // invalid_as_pattern
8211
38.8k
        )
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
38.8k
        p->mark = _mark;
8218
38.8k
        D(fprintf(stderr, "%*c%s as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8219
38.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_as_pattern"));
8220
38.8k
    }
8221
107k
    _res = NULL;
8222
107k
  done:
8223
107k
    p->level--;
8224
107k
    return _res;
8225
107k
}
8226
8227
// or_pattern: '|'.closed_pattern+
8228
static pattern_ty
8229
or_pattern_rule(Parser *p)
8230
292k
{
8231
292k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8232
0
        _Pypegen_stack_overflow(p);
8233
0
    }
8234
292k
    if (p->error_indicator) {
8235
0
        p->level--;
8236
0
        return NULL;
8237
0
    }
8238
292k
    pattern_ty _res = NULL;
8239
292k
    int _mark = p->mark;
8240
292k
    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
292k
    int _start_lineno = p->tokens[_mark]->lineno;
8246
292k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8247
292k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8248
292k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8249
292k
    { // '|'.closed_pattern+
8250
292k
        if (p->error_indicator) {
8251
0
            p->level--;
8252
0
            return NULL;
8253
0
        }
8254
292k
        D(fprintf(stderr, "%*c> or_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|'.closed_pattern+"));
8255
292k
        asdl_pattern_seq* patterns;
8256
292k
        if (
8257
292k
            (patterns = (asdl_pattern_seq*)_gather_40_rule(p))  // '|'.closed_pattern+
8258
292k
        )
8259
194k
        {
8260
194k
            D(fprintf(stderr, "%*c+ or_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'|'.closed_pattern+"));
8261
194k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8262
194k
            if (_token == NULL) {
8263
0
                p->level--;
8264
0
                return NULL;
8265
0
            }
8266
194k
            int _end_lineno = _token->end_lineno;
8267
194k
            UNUSED(_end_lineno); // Only used by EXTRA macro
8268
194k
            int _end_col_offset = _token->end_col_offset;
8269
194k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8270
194k
            _res = asdl_seq_LEN ( patterns ) == 1 ? asdl_seq_GET ( patterns , 0 ) : _PyAST_MatchOr ( patterns , EXTRA );
8271
194k
            if (_res == NULL && PyErr_Occurred()) {
8272
0
                p->error_indicator = 1;
8273
0
                p->level--;
8274
0
                return NULL;
8275
0
            }
8276
194k
            goto done;
8277
194k
        }
8278
97.2k
        p->mark = _mark;
8279
97.2k
        D(fprintf(stderr, "%*c%s or_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8280
97.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|'.closed_pattern+"));
8281
97.2k
    }
8282
0
    _res = NULL;
8283
292k
  done:
8284
292k
    p->level--;
8285
292k
    return _res;
8286
97.2k
}
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
305k
{
8300
305k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8301
0
        _Pypegen_stack_overflow(p);
8302
0
    }
8303
305k
    if (p->error_indicator) {
8304
0
        p->level--;
8305
0
        return NULL;
8306
0
    }
8307
305k
    pattern_ty _res = NULL;
8308
305k
    if (_PyPegen_is_memoized(p, closed_pattern_type, &_res)) {
8309
223k
        p->level--;
8310
223k
        return _res;
8311
223k
    }
8312
81.2k
    int _mark = p->mark;
8313
81.2k
    { // literal_pattern
8314
81.2k
        if (p->error_indicator) {
8315
0
            p->level--;
8316
0
            return NULL;
8317
0
        }
8318
81.2k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "literal_pattern"));
8319
81.2k
        pattern_ty literal_pattern_var;
8320
81.2k
        if (
8321
81.2k
            (literal_pattern_var = literal_pattern_rule(p))  // literal_pattern
8322
81.2k
        )
8323
36.1k
        {
8324
36.1k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "literal_pattern"));
8325
36.1k
            _res = literal_pattern_var;
8326
36.1k
            goto done;
8327
36.1k
        }
8328
45.1k
        p->mark = _mark;
8329
45.1k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8330
45.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "literal_pattern"));
8331
45.1k
    }
8332
0
    { // capture_pattern
8333
45.1k
        if (p->error_indicator) {
8334
14
            p->level--;
8335
14
            return NULL;
8336
14
        }
8337
45.1k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "capture_pattern"));
8338
45.1k
        pattern_ty capture_pattern_var;
8339
45.1k
        if (
8340
45.1k
            (capture_pattern_var = capture_pattern_rule(p))  // capture_pattern
8341
45.1k
        )
8342
17.2k
        {
8343
17.2k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "capture_pattern"));
8344
17.2k
            _res = capture_pattern_var;
8345
17.2k
            goto done;
8346
17.2k
        }
8347
27.8k
        p->mark = _mark;
8348
27.8k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8349
27.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "capture_pattern"));
8350
27.8k
    }
8351
0
    { // wildcard_pattern
8352
27.8k
        if (p->error_indicator) {
8353
0
            p->level--;
8354
0
            return NULL;
8355
0
        }
8356
27.8k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "wildcard_pattern"));
8357
27.8k
        pattern_ty wildcard_pattern_var;
8358
27.8k
        if (
8359
27.8k
            (wildcard_pattern_var = wildcard_pattern_rule(p))  // wildcard_pattern
8360
27.8k
        )
8361
2.04k
        {
8362
2.04k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "wildcard_pattern"));
8363
2.04k
            _res = wildcard_pattern_var;
8364
2.04k
            goto done;
8365
2.04k
        }
8366
25.8k
        p->mark = _mark;
8367
25.8k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8368
25.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "wildcard_pattern"));
8369
25.8k
    }
8370
0
    { // value_pattern
8371
25.8k
        if (p->error_indicator) {
8372
0
            p->level--;
8373
0
            return NULL;
8374
0
        }
8375
25.8k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "value_pattern"));
8376
25.8k
        pattern_ty value_pattern_var;
8377
25.8k
        if (
8378
25.8k
            (value_pattern_var = value_pattern_rule(p))  // value_pattern
8379
25.8k
        )
8380
2.88k
        {
8381
2.88k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "value_pattern"));
8382
2.88k
            _res = value_pattern_var;
8383
2.88k
            goto done;
8384
2.88k
        }
8385
22.9k
        p->mark = _mark;
8386
22.9k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8387
22.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "value_pattern"));
8388
22.9k
    }
8389
0
    { // group_pattern
8390
22.9k
        if (p->error_indicator) {
8391
2
            p->level--;
8392
2
            return NULL;
8393
2
        }
8394
22.9k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "group_pattern"));
8395
22.9k
        pattern_ty group_pattern_var;
8396
22.9k
        if (
8397
22.9k
            (group_pattern_var = group_pattern_rule(p))  // group_pattern
8398
22.9k
        )
8399
137
        {
8400
137
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "group_pattern"));
8401
137
            _res = group_pattern_var;
8402
137
            goto done;
8403
137
        }
8404
22.8k
        p->mark = _mark;
8405
22.8k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8406
22.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "group_pattern"));
8407
22.8k
    }
8408
0
    { // sequence_pattern
8409
22.8k
        if (p->error_indicator) {
8410
560
            p->level--;
8411
560
            return NULL;
8412
560
        }
8413
22.2k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sequence_pattern"));
8414
22.2k
        pattern_ty sequence_pattern_var;
8415
22.2k
        if (
8416
22.2k
            (sequence_pattern_var = sequence_pattern_rule(p))  // sequence_pattern
8417
22.2k
        )
8418
877
        {
8419
877
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sequence_pattern"));
8420
877
            _res = sequence_pattern_var;
8421
877
            goto done;
8422
877
        }
8423
21.3k
        p->mark = _mark;
8424
21.3k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8425
21.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sequence_pattern"));
8426
21.3k
    }
8427
0
    { // mapping_pattern
8428
21.3k
        if (p->error_indicator) {
8429
591
            p->level--;
8430
591
            return NULL;
8431
591
        }
8432
20.7k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "mapping_pattern"));
8433
20.7k
        pattern_ty mapping_pattern_var;
8434
20.7k
        if (
8435
20.7k
            (mapping_pattern_var = mapping_pattern_rule(p))  // mapping_pattern
8436
20.7k
        )
8437
1.13k
        {
8438
1.13k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "mapping_pattern"));
8439
1.13k
            _res = mapping_pattern_var;
8440
1.13k
            goto done;
8441
1.13k
        }
8442
19.6k
        p->mark = _mark;
8443
19.6k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8444
19.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "mapping_pattern"));
8445
19.6k
    }
8446
0
    { // class_pattern
8447
19.6k
        if (p->error_indicator) {
8448
322
            p->level--;
8449
322
            return NULL;
8450
322
        }
8451
19.3k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "class_pattern"));
8452
19.3k
        pattern_ty class_pattern_var;
8453
19.3k
        if (
8454
19.3k
            (class_pattern_var = class_pattern_rule(p))  // class_pattern
8455
19.3k
        )
8456
2.49k
        {
8457
2.49k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "class_pattern"));
8458
2.49k
            _res = class_pattern_var;
8459
2.49k
            goto done;
8460
2.49k
        }
8461
16.8k
        p->mark = _mark;
8462
16.8k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8463
16.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "class_pattern"));
8464
16.8k
    }
8465
0
    _res = NULL;
8466
79.7k
  done:
8467
79.7k
    _PyPegen_insert_memo(p, _mark, closed_pattern_type, _res);
8468
79.7k
    p->level--;
8469
79.7k
    return _res;
8470
16.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
81.2k
{
8482
81.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8483
0
        _Pypegen_stack_overflow(p);
8484
0
    }
8485
81.2k
    if (p->error_indicator) {
8486
0
        p->level--;
8487
0
        return NULL;
8488
0
    }
8489
81.2k
    pattern_ty _res = NULL;
8490
81.2k
    int _mark = p->mark;
8491
81.2k
    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
81.2k
    int _start_lineno = p->tokens[_mark]->lineno;
8497
81.2k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8498
81.2k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8499
81.2k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8500
81.2k
    { // signed_number !('+' | '-')
8501
81.2k
        if (p->error_indicator) {
8502
0
            p->level--;
8503
0
            return NULL;
8504
0
        }
8505
81.2k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8506
81.2k
        expr_ty value;
8507
81.2k
        if (
8508
81.2k
            (value = signed_number_rule(p))  // signed_number
8509
81.2k
            &&
8510
81.2k
            _PyPegen_lookahead(0, _tmp_41_rule, p)
8511
81.2k
        )
8512
33.1k
        {
8513
33.1k
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8514
33.1k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8515
33.1k
            if (_token == NULL) {
8516
0
                p->level--;
8517
0
                return NULL;
8518
0
            }
8519
33.1k
            int _end_lineno = _token->end_lineno;
8520
33.1k
            UNUSED(_end_lineno); // Only used by EXTRA macro
8521
33.1k
            int _end_col_offset = _token->end_col_offset;
8522
33.1k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8523
33.1k
            _res = _PyAST_MatchValue ( value , EXTRA );
8524
33.1k
            if (_res == NULL && PyErr_Occurred()) {
8525
0
                p->error_indicator = 1;
8526
0
                p->level--;
8527
0
                return NULL;
8528
0
            }
8529
33.1k
            goto done;
8530
33.1k
        }
8531
48.1k
        p->mark = _mark;
8532
48.1k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8533
48.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_number !('+' | '-')"));
8534
48.1k
    }
8535
0
    { // complex_number
8536
48.1k
        if (p->error_indicator) {
8537
3
            p->level--;
8538
3
            return NULL;
8539
3
        }
8540
48.1k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "complex_number"));
8541
48.1k
        expr_ty value;
8542
48.1k
        if (
8543
48.1k
            (value = complex_number_rule(p))  // complex_number
8544
48.1k
        )
8545
164
        {
8546
164
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "complex_number"));
8547
164
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8548
164
            if (_token == NULL) {
8549
0
                p->level--;
8550
0
                return NULL;
8551
0
            }
8552
164
            int _end_lineno = _token->end_lineno;
8553
164
            UNUSED(_end_lineno); // Only used by EXTRA macro
8554
164
            int _end_col_offset = _token->end_col_offset;
8555
164
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8556
164
            _res = _PyAST_MatchValue ( value , EXTRA );
8557
164
            if (_res == NULL && PyErr_Occurred()) {
8558
0
                p->error_indicator = 1;
8559
0
                p->level--;
8560
0
                return NULL;
8561
0
            }
8562
164
            goto done;
8563
164
        }
8564
48.0k
        p->mark = _mark;
8565
48.0k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8566
48.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "complex_number"));
8567
48.0k
    }
8568
0
    { // strings
8569
48.0k
        if (p->error_indicator) {
8570
9
            p->level--;
8571
9
            return NULL;
8572
9
        }
8573
48.0k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "strings"));
8574
48.0k
        expr_ty value;
8575
48.0k
        if (
8576
48.0k
            (value = strings_rule(p))  // strings
8577
48.0k
        )
8578
1.05k
        {
8579
1.05k
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "strings"));
8580
1.05k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8581
1.05k
            if (_token == NULL) {
8582
0
                p->level--;
8583
0
                return NULL;
8584
0
            }
8585
1.05k
            int _end_lineno = _token->end_lineno;
8586
1.05k
            UNUSED(_end_lineno); // Only used by EXTRA macro
8587
1.05k
            int _end_col_offset = _token->end_col_offset;
8588
1.05k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8589
1.05k
            _res = _PyAST_MatchValue ( value , EXTRA );
8590
1.05k
            if (_res == NULL && PyErr_Occurred()) {
8591
0
                p->error_indicator = 1;
8592
0
                p->level--;
8593
0
                return NULL;
8594
0
            }
8595
1.05k
            goto done;
8596
1.05k
        }
8597
46.9k
        p->mark = _mark;
8598
46.9k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8599
46.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "strings"));
8600
46.9k
    }
8601
0
    { // 'None'
8602
46.9k
        if (p->error_indicator) {
8603
2
            p->level--;
8604
2
            return NULL;
8605
2
        }
8606
46.9k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
8607
46.9k
        Token * _keyword;
8608
46.9k
        if (
8609
46.9k
            (_keyword = _PyPegen_expect_token(p, 624))  // token='None'
8610
46.9k
        )
8611
1.68k
        {
8612
1.68k
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
8613
1.68k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8614
1.68k
            if (_token == NULL) {
8615
0
                p->level--;
8616
0
                return NULL;
8617
0
            }
8618
1.68k
            int _end_lineno = _token->end_lineno;
8619
1.68k
            UNUSED(_end_lineno); // Only used by EXTRA macro
8620
1.68k
            int _end_col_offset = _token->end_col_offset;
8621
1.68k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8622
1.68k
            _res = _PyAST_MatchSingleton ( Py_None , EXTRA );
8623
1.68k
            if (_res == NULL && PyErr_Occurred()) {
8624
0
                p->error_indicator = 1;
8625
0
                p->level--;
8626
0
                return NULL;
8627
0
            }
8628
1.68k
            goto done;
8629
1.68k
        }
8630
45.2k
        p->mark = _mark;
8631
45.2k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8632
45.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
8633
45.2k
    }
8634
0
    { // 'True'
8635
45.2k
        if (p->error_indicator) {
8636
0
            p->level--;
8637
0
            return NULL;
8638
0
        }
8639
45.2k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
8640
45.2k
        Token * _keyword;
8641
45.2k
        if (
8642
45.2k
            (_keyword = _PyPegen_expect_token(p, 623))  // token='True'
8643
45.2k
        )
8644
125
        {
8645
125
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
8646
125
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8647
125
            if (_token == NULL) {
8648
0
                p->level--;
8649
0
                return NULL;
8650
0
            }
8651
125
            int _end_lineno = _token->end_lineno;
8652
125
            UNUSED(_end_lineno); // Only used by EXTRA macro
8653
125
            int _end_col_offset = _token->end_col_offset;
8654
125
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8655
125
            _res = _PyAST_MatchSingleton ( Py_True , EXTRA );
8656
125
            if (_res == NULL && PyErr_Occurred()) {
8657
0
                p->error_indicator = 1;
8658
0
                p->level--;
8659
0
                return NULL;
8660
0
            }
8661
125
            goto done;
8662
125
        }
8663
45.1k
        p->mark = _mark;
8664
45.1k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8665
45.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
8666
45.1k
    }
8667
0
    { // 'False'
8668
45.1k
        if (p->error_indicator) {
8669
0
            p->level--;
8670
0
            return NULL;
8671
0
        }
8672
45.1k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
8673
45.1k
        Token * _keyword;
8674
45.1k
        if (
8675
45.1k
            (_keyword = _PyPegen_expect_token(p, 625))  // token='False'
8676
45.1k
        )
8677
33
        {
8678
33
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
8679
33
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8680
33
            if (_token == NULL) {
8681
0
                p->level--;
8682
0
                return NULL;
8683
0
            }
8684
33
            int _end_lineno = _token->end_lineno;
8685
33
            UNUSED(_end_lineno); // Only used by EXTRA macro
8686
33
            int _end_col_offset = _token->end_col_offset;
8687
33
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8688
33
            _res = _PyAST_MatchSingleton ( Py_False , EXTRA );
8689
33
            if (_res == NULL && PyErr_Occurred()) {
8690
0
                p->error_indicator = 1;
8691
0
                p->level--;
8692
0
                return NULL;
8693
0
            }
8694
33
            goto done;
8695
33
        }
8696
45.1k
        p->mark = _mark;
8697
45.1k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8698
45.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
8699
45.1k
    }
8700
0
    _res = NULL;
8701
81.2k
  done:
8702
81.2k
    p->level--;
8703
81.2k
    return _res;
8704
45.1k
}
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
6.54k
{
8716
6.54k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8717
0
        _Pypegen_stack_overflow(p);
8718
0
    }
8719
6.54k
    if (p->error_indicator) {
8720
0
        p->level--;
8721
0
        return NULL;
8722
0
    }
8723
6.54k
    expr_ty _res = NULL;
8724
6.54k
    int _mark = p->mark;
8725
6.54k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8726
4
        p->error_indicator = 1;
8727
4
        p->level--;
8728
4
        return NULL;
8729
4
    }
8730
6.53k
    int _start_lineno = p->tokens[_mark]->lineno;
8731
6.53k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8732
6.53k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8733
6.53k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8734
6.53k
    { // signed_number !('+' | '-')
8735
6.53k
        if (p->error_indicator) {
8736
0
            p->level--;
8737
0
            return NULL;
8738
0
        }
8739
6.53k
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8740
6.53k
        expr_ty signed_number_var;
8741
6.53k
        if (
8742
6.53k
            (signed_number_var = signed_number_rule(p))  // signed_number
8743
6.53k
            &&
8744
6.53k
            _PyPegen_lookahead(0, _tmp_41_rule, p)
8745
6.53k
        )
8746
2.98k
        {
8747
2.98k
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8748
2.98k
            _res = signed_number_var;
8749
2.98k
            goto done;
8750
2.98k
        }
8751
3.55k
        p->mark = _mark;
8752
3.55k
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8753
3.55k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_number !('+' | '-')"));
8754
3.55k
    }
8755
0
    { // complex_number
8756
3.55k
        if (p->error_indicator) {
8757
5
            p->level--;
8758
5
            return NULL;
8759
5
        }
8760
3.54k
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "complex_number"));
8761
3.54k
        expr_ty complex_number_var;
8762
3.54k
        if (
8763
3.54k
            (complex_number_var = complex_number_rule(p))  // complex_number
8764
3.54k
        )
8765
5
        {
8766
5
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "complex_number"));
8767
5
            _res = complex_number_var;
8768
5
            goto done;
8769
5
        }
8770
3.54k
        p->mark = _mark;
8771
3.54k
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8772
3.54k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "complex_number"));
8773
3.54k
    }
8774
0
    { // &(STRING | FSTRING_START | TSTRING_START) strings
8775
3.54k
        if (p->error_indicator) {
8776
1
            p->level--;
8777
1
            return NULL;
8778
1
        }
8779
3.54k
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
8780
3.54k
        expr_ty strings_var;
8781
3.54k
        if (
8782
3.54k
            _PyPegen_lookahead(1, _tmp_42_rule, p)
8783
3.54k
            &&
8784
3.54k
            (strings_var = strings_rule(p))  // strings
8785
3.54k
        )
8786
2.17k
        {
8787
2.17k
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
8788
2.17k
            _res = strings_var;
8789
2.17k
            goto done;
8790
2.17k
        }
8791
1.36k
        p->mark = _mark;
8792
1.36k
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8793
1.36k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
8794
1.36k
    }
8795
0
    { // 'None'
8796
1.36k
        if (p->error_indicator) {
8797
3
            p->level--;
8798
3
            return NULL;
8799
3
        }
8800
1.36k
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
8801
1.36k
        Token * _keyword;
8802
1.36k
        if (
8803
1.36k
            (_keyword = _PyPegen_expect_token(p, 624))  // token='None'
8804
1.36k
        )
8805
997
        {
8806
997
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
8807
997
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8808
997
            if (_token == NULL) {
8809
0
                p->level--;
8810
0
                return NULL;
8811
0
            }
8812
997
            int _end_lineno = _token->end_lineno;
8813
997
            UNUSED(_end_lineno); // Only used by EXTRA macro
8814
997
            int _end_col_offset = _token->end_col_offset;
8815
997
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8816
997
            _res = _PyAST_Constant ( Py_None , NULL , EXTRA );
8817
997
            if (_res == NULL && PyErr_Occurred()) {
8818
0
                p->error_indicator = 1;
8819
0
                p->level--;
8820
0
                return NULL;
8821
0
            }
8822
997
            goto done;
8823
997
        }
8824
363
        p->mark = _mark;
8825
363
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8826
363
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
8827
363
    }
8828
0
    { // 'True'
8829
363
        if (p->error_indicator) {
8830
0
            p->level--;
8831
0
            return NULL;
8832
0
        }
8833
363
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
8834
363
        Token * _keyword;
8835
363
        if (
8836
363
            (_keyword = _PyPegen_expect_token(p, 623))  // token='True'
8837
363
        )
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
297
        p->mark = _mark;
8858
297
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8859
297
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
8860
297
    }
8861
0
    { // 'False'
8862
297
        if (p->error_indicator) {
8863
0
            p->level--;
8864
0
            return NULL;
8865
0
        }
8866
297
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
8867
297
        Token * _keyword;
8868
297
        if (
8869
297
            (_keyword = _PyPegen_expect_token(p, 625))  // token='False'
8870
297
        )
8871
71
        {
8872
71
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
8873
71
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8874
71
            if (_token == NULL) {
8875
0
                p->level--;
8876
0
                return NULL;
8877
0
            }
8878
71
            int _end_lineno = _token->end_lineno;
8879
71
            UNUSED(_end_lineno); // Only used by EXTRA macro
8880
71
            int _end_col_offset = _token->end_col_offset;
8881
71
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8882
71
            _res = _PyAST_Constant ( Py_False , NULL , EXTRA );
8883
71
            if (_res == NULL && PyErr_Occurred()) {
8884
0
                p->error_indicator = 1;
8885
0
                p->level--;
8886
0
                return NULL;
8887
0
            }
8888
71
            goto done;
8889
71
        }
8890
226
        p->mark = _mark;
8891
226
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8892
226
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
8893
226
    }
8894
0
    _res = NULL;
8895
6.53k
  done:
8896
6.53k
    p->level--;
8897
6.53k
    return _res;
8898
226
}
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
51.7k
{
8906
51.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8907
0
        _Pypegen_stack_overflow(p);
8908
0
    }
8909
51.7k
    if (p->error_indicator) {
8910
0
        p->level--;
8911
0
        return NULL;
8912
0
    }
8913
51.7k
    expr_ty _res = NULL;
8914
51.7k
    int _mark = p->mark;
8915
51.7k
    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
51.7k
    int _start_lineno = p->tokens[_mark]->lineno;
8921
51.7k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8922
51.7k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8923
51.7k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8924
51.7k
    { // signed_real_number '+' imaginary_number
8925
51.7k
        if (p->error_indicator) {
8926
0
            p->level--;
8927
0
            return NULL;
8928
0
        }
8929
51.7k
        D(fprintf(stderr, "%*c> complex_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_real_number '+' imaginary_number"));
8930
51.7k
        Token * _literal;
8931
51.7k
        expr_ty imag;
8932
51.7k
        expr_ty real;
8933
51.7k
        if (
8934
51.7k
            (real = signed_real_number_rule(p))  // signed_real_number
8935
51.7k
            &&
8936
51.7k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
8937
51.7k
            &&
8938
51.7k
            (imag = imaginary_number_rule(p))  // imaginary_number
8939
51.7k
        )
8940
7
        {
8941
7
            D(fprintf(stderr, "%*c+ complex_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_real_number '+' imaginary_number"));
8942
7
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8943
7
            if (_token == NULL) {
8944
0
                p->level--;
8945
0
                return NULL;
8946
0
            }
8947
7
            int _end_lineno = _token->end_lineno;
8948
7
            UNUSED(_end_lineno); // Only used by EXTRA macro
8949
7
            int _end_col_offset = _token->end_col_offset;
8950
7
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8951
7
            _res = _PyAST_BinOp ( real , Add , imag , EXTRA );
8952
7
            if (_res == NULL && PyErr_Occurred()) {
8953
0
                p->error_indicator = 1;
8954
0
                p->level--;
8955
0
                return NULL;
8956
0
            }
8957
7
            goto done;
8958
7
        }
8959
51.7k
        p->mark = _mark;
8960
51.7k
        D(fprintf(stderr, "%*c%s complex_number[%d-%d]: %s failed!\n", p->level, ' ',
8961
51.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_real_number '+' imaginary_number"));
8962
51.7k
    }
8963
0
    { // signed_real_number '-' imaginary_number
8964
51.7k
        if (p->error_indicator) {
8965
7
            p->level--;
8966
7
            return NULL;
8967
7
        }
8968
51.7k
        D(fprintf(stderr, "%*c> complex_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_real_number '-' imaginary_number"));
8969
51.7k
        Token * _literal;
8970
51.7k
        expr_ty imag;
8971
51.7k
        expr_ty real;
8972
51.7k
        if (
8973
51.7k
            (real = signed_real_number_rule(p))  // signed_real_number
8974
51.7k
            &&
8975
51.7k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
8976
51.7k
            &&
8977
51.7k
            (imag = imaginary_number_rule(p))  // imaginary_number
8978
51.7k
        )
8979
162
        {
8980
162
            D(fprintf(stderr, "%*c+ complex_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_real_number '-' imaginary_number"));
8981
162
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8982
162
            if (_token == NULL) {
8983
0
                p->level--;
8984
0
                return NULL;
8985
0
            }
8986
162
            int _end_lineno = _token->end_lineno;
8987
162
            UNUSED(_end_lineno); // Only used by EXTRA macro
8988
162
            int _end_col_offset = _token->end_col_offset;
8989
162
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8990
162
            _res = _PyAST_BinOp ( real , Sub , imag , EXTRA );
8991
162
            if (_res == NULL && PyErr_Occurred()) {
8992
0
                p->error_indicator = 1;
8993
0
                p->level--;
8994
0
                return NULL;
8995
0
            }
8996
162
            goto done;
8997
162
        }
8998
51.5k
        p->mark = _mark;
8999
51.5k
        D(fprintf(stderr, "%*c%s complex_number[%d-%d]: %s failed!\n", p->level, ' ',
9000
51.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_real_number '-' imaginary_number"));
9001
51.5k
    }
9002
0
    _res = NULL;
9003
51.7k
  done:
9004
51.7k
    p->level--;
9005
51.7k
    return _res;
9006
51.5k
}
9007
9008
// signed_number: NUMBER | '-' NUMBER
9009
static expr_ty
9010
signed_number_rule(Parser *p)
9011
87.8k
{
9012
87.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9013
0
        _Pypegen_stack_overflow(p);
9014
0
    }
9015
87.8k
    if (p->error_indicator) {
9016
0
        p->level--;
9017
0
        return NULL;
9018
0
    }
9019
87.8k
    expr_ty _res = NULL;
9020
87.8k
    int _mark = p->mark;
9021
87.8k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9022
0
        p->error_indicator = 1;
9023
0
        p->level--;
9024
0
        return NULL;
9025
0
    }
9026
87.8k
    int _start_lineno = p->tokens[_mark]->lineno;
9027
87.8k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9028
87.8k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9029
87.8k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9030
87.8k
    { // NUMBER
9031
87.8k
        if (p->error_indicator) {
9032
0
            p->level--;
9033
0
            return NULL;
9034
0
        }
9035
87.8k
        D(fprintf(stderr, "%*c> signed_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9036
87.8k
        expr_ty number_var;
9037
87.8k
        if (
9038
87.8k
            (number_var = _PyPegen_number_token(p))  // NUMBER
9039
87.8k
        )
9040
34.4k
        {
9041
34.4k
            D(fprintf(stderr, "%*c+ signed_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9042
34.4k
            _res = number_var;
9043
34.4k
            goto done;
9044
34.4k
        }
9045
53.4k
        p->mark = _mark;
9046
53.4k
        D(fprintf(stderr, "%*c%s signed_number[%d-%d]: %s failed!\n", p->level, ' ',
9047
53.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
9048
53.4k
    }
9049
0
    { // '-' NUMBER
9050
53.4k
        if (p->error_indicator) {
9051
1
            p->level--;
9052
1
            return NULL;
9053
1
        }
9054
53.4k
        D(fprintf(stderr, "%*c> signed_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' NUMBER"));
9055
53.4k
        Token * _literal;
9056
53.4k
        expr_ty number;
9057
53.4k
        if (
9058
53.4k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
9059
53.4k
            &&
9060
53.4k
            (number = _PyPegen_number_token(p))  // NUMBER
9061
53.4k
        )
9062
1.87k
        {
9063
1.87k
            D(fprintf(stderr, "%*c+ signed_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' NUMBER"));
9064
1.87k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9065
1.87k
            if (_token == NULL) {
9066
0
                p->level--;
9067
0
                return NULL;
9068
0
            }
9069
1.87k
            int _end_lineno = _token->end_lineno;
9070
1.87k
            UNUSED(_end_lineno); // Only used by EXTRA macro
9071
1.87k
            int _end_col_offset = _token->end_col_offset;
9072
1.87k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9073
1.87k
            _res = _PyAST_UnaryOp ( USub , number , EXTRA );
9074
1.87k
            if (_res == NULL && PyErr_Occurred()) {
9075
0
                p->error_indicator = 1;
9076
0
                p->level--;
9077
0
                return NULL;
9078
0
            }
9079
1.87k
            goto done;
9080
1.87k
        }
9081
51.5k
        p->mark = _mark;
9082
51.5k
        D(fprintf(stderr, "%*c%s signed_number[%d-%d]: %s failed!\n", p->level, ' ',
9083
51.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' NUMBER"));
9084
51.5k
    }
9085
0
    _res = NULL;
9086
87.8k
  done:
9087
87.8k
    p->level--;
9088
87.8k
    return _res;
9089
51.5k
}
9090
9091
// signed_real_number: real_number | '-' real_number
9092
static expr_ty
9093
signed_real_number_rule(Parser *p)
9094
103k
{
9095
103k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9096
0
        _Pypegen_stack_overflow(p);
9097
0
    }
9098
103k
    if (p->error_indicator) {
9099
0
        p->level--;
9100
0
        return NULL;
9101
0
    }
9102
103k
    expr_ty _res = NULL;
9103
103k
    int _mark = p->mark;
9104
103k
    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
103k
    int _start_lineno = p->tokens[_mark]->lineno;
9110
103k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9111
103k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9112
103k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9113
103k
    { // real_number
9114
103k
        if (p->error_indicator) {
9115
0
            p->level--;
9116
0
            return NULL;
9117
0
        }
9118
103k
        D(fprintf(stderr, "%*c> signed_real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "real_number"));
9119
103k
        expr_ty real_number_var;
9120
103k
        if (
9121
103k
            (real_number_var = real_number_rule(p))  // real_number
9122
103k
        )
9123
353
        {
9124
353
            D(fprintf(stderr, "%*c+ signed_real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "real_number"));
9125
353
            _res = real_number_var;
9126
353
            goto done;
9127
353
        }
9128
103k
        p->mark = _mark;
9129
103k
        D(fprintf(stderr, "%*c%s signed_real_number[%d-%d]: %s failed!\n", p->level, ' ',
9130
103k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "real_number"));
9131
103k
    }
9132
0
    { // '-' real_number
9133
103k
        if (p->error_indicator) {
9134
1
            p->level--;
9135
1
            return NULL;
9136
1
        }
9137
103k
        D(fprintf(stderr, "%*c> signed_real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' real_number"));
9138
103k
        Token * _literal;
9139
103k
        expr_ty real;
9140
103k
        if (
9141
103k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
9142
103k
            &&
9143
103k
            (real = real_number_rule(p))  // real_number
9144
103k
        )
9145
27
        {
9146
27
            D(fprintf(stderr, "%*c+ signed_real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' real_number"));
9147
27
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9148
27
            if (_token == NULL) {
9149
0
                p->level--;
9150
0
                return NULL;
9151
0
            }
9152
27
            int _end_lineno = _token->end_lineno;
9153
27
            UNUSED(_end_lineno); // Only used by EXTRA macro
9154
27
            int _end_col_offset = _token->end_col_offset;
9155
27
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9156
27
            _res = _PyAST_UnaryOp ( USub , real , EXTRA );
9157
27
            if (_res == NULL && PyErr_Occurred()) {
9158
0
                p->error_indicator = 1;
9159
0
                p->level--;
9160
0
                return NULL;
9161
0
            }
9162
27
            goto done;
9163
27
        }
9164
103k
        p->mark = _mark;
9165
103k
        D(fprintf(stderr, "%*c%s signed_real_number[%d-%d]: %s failed!\n", p->level, ' ',
9166
103k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' real_number"));
9167
103k
    }
9168
0
    _res = NULL;
9169
103k
  done:
9170
103k
    p->level--;
9171
103k
    return _res;
9172
103k
}
9173
9174
// real_number: NUMBER
9175
static expr_ty
9176
real_number_rule(Parser *p)
9177
103k
{
9178
103k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9179
0
        _Pypegen_stack_overflow(p);
9180
0
    }
9181
103k
    if (p->error_indicator) {
9182
0
        p->level--;
9183
0
        return NULL;
9184
0
    }
9185
103k
    expr_ty _res = NULL;
9186
103k
    int _mark = p->mark;
9187
103k
    { // NUMBER
9188
103k
        if (p->error_indicator) {
9189
0
            p->level--;
9190
0
            return NULL;
9191
0
        }
9192
103k
        D(fprintf(stderr, "%*c> real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9193
103k
        expr_ty real;
9194
103k
        if (
9195
103k
            (real = _PyPegen_number_token(p))  // NUMBER
9196
103k
        )
9197
382
        {
9198
382
            D(fprintf(stderr, "%*c+ real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9199
382
            _res = _PyPegen_ensure_real ( p , real );
9200
382
            if (_res == NULL && PyErr_Occurred()) {
9201
2
                p->error_indicator = 1;
9202
2
                p->level--;
9203
2
                return NULL;
9204
2
            }
9205
380
            goto done;
9206
382
        }
9207
103k
        p->mark = _mark;
9208
103k
        D(fprintf(stderr, "%*c%s real_number[%d-%d]: %s failed!\n", p->level, ' ',
9209
103k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
9210
103k
    }
9211
0
    _res = NULL;
9212
103k
  done:
9213
103k
    p->level--;
9214
103k
    return _res;
9215
103k
}
9216
9217
// imaginary_number: NUMBER
9218
static expr_ty
9219
imaginary_number_rule(Parser *p)
9220
196
{
9221
196
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9222
0
        _Pypegen_stack_overflow(p);
9223
0
    }
9224
196
    if (p->error_indicator) {
9225
0
        p->level--;
9226
0
        return NULL;
9227
0
    }
9228
196
    expr_ty _res = NULL;
9229
196
    int _mark = p->mark;
9230
196
    { // NUMBER
9231
196
        if (p->error_indicator) {
9232
0
            p->level--;
9233
0
            return NULL;
9234
0
        }
9235
196
        D(fprintf(stderr, "%*c> imaginary_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9236
196
        expr_ty imag;
9237
196
        if (
9238
196
            (imag = _PyPegen_number_token(p))  // NUMBER
9239
196
        )
9240
173
        {
9241
173
            D(fprintf(stderr, "%*c+ imaginary_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9242
173
            _res = _PyPegen_ensure_imaginary ( p , imag );
9243
173
            if (_res == NULL && PyErr_Occurred()) {
9244
4
                p->error_indicator = 1;
9245
4
                p->level--;
9246
4
                return NULL;
9247
4
            }
9248
169
            goto done;
9249
173
        }
9250
23
        p->mark = _mark;
9251
23
        D(fprintf(stderr, "%*c%s imaginary_number[%d-%d]: %s failed!\n", p->level, ' ',
9252
23
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
9253
23
    }
9254
0
    _res = NULL;
9255
192
  done:
9256
192
    p->level--;
9257
192
    return _res;
9258
23
}
9259
9260
// capture_pattern: pattern_capture_target
9261
static pattern_ty
9262
capture_pattern_rule(Parser *p)
9263
45.1k
{
9264
45.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9265
0
        _Pypegen_stack_overflow(p);
9266
0
    }
9267
45.1k
    if (p->error_indicator) {
9268
0
        p->level--;
9269
0
        return NULL;
9270
0
    }
9271
45.1k
    pattern_ty _res = NULL;
9272
45.1k
    int _mark = p->mark;
9273
45.1k
    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
45.1k
    int _start_lineno = p->tokens[_mark]->lineno;
9279
45.1k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9280
45.1k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9281
45.1k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9282
45.1k
    { // pattern_capture_target
9283
45.1k
        if (p->error_indicator) {
9284
0
            p->level--;
9285
0
            return NULL;
9286
0
        }
9287
45.1k
        D(fprintf(stderr, "%*c> capture_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern_capture_target"));
9288
45.1k
        expr_ty target;
9289
45.1k
        if (
9290
45.1k
            (target = pattern_capture_target_rule(p))  // pattern_capture_target
9291
45.1k
        )
9292
17.2k
        {
9293
17.2k
            D(fprintf(stderr, "%*c+ capture_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern_capture_target"));
9294
17.2k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9295
17.2k
            if (_token == NULL) {
9296
0
                p->level--;
9297
0
                return NULL;
9298
0
            }
9299
17.2k
            int _end_lineno = _token->end_lineno;
9300
17.2k
            UNUSED(_end_lineno); // Only used by EXTRA macro
9301
17.2k
            int _end_col_offset = _token->end_col_offset;
9302
17.2k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9303
17.2k
            _res = _PyAST_MatchAs ( NULL , target -> v . Name . id , EXTRA );
9304
17.2k
            if (_res == NULL && PyErr_Occurred()) {
9305
0
                p->error_indicator = 1;
9306
0
                p->level--;
9307
0
                return NULL;
9308
0
            }
9309
17.2k
            goto done;
9310
17.2k
        }
9311
27.8k
        p->mark = _mark;
9312
27.8k
        D(fprintf(stderr, "%*c%s capture_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9313
27.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern_capture_target"));
9314
27.8k
    }
9315
0
    _res = NULL;
9316
45.1k
  done:
9317
45.1k
    p->level--;
9318
45.1k
    return _res;
9319
27.8k
}
9320
9321
// pattern_capture_target: !"_" NAME !('.' | '(' | '=')
9322
static expr_ty
9323
pattern_capture_target_rule(Parser *p)
9324
49.6k
{
9325
49.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9326
0
        _Pypegen_stack_overflow(p);
9327
0
    }
9328
49.6k
    if (p->error_indicator) {
9329
0
        p->level--;
9330
0
        return NULL;
9331
0
    }
9332
49.6k
    expr_ty _res = NULL;
9333
49.6k
    int _mark = p->mark;
9334
49.6k
    { // !"_" NAME !('.' | '(' | '=')
9335
49.6k
        if (p->error_indicator) {
9336
0
            p->level--;
9337
0
            return NULL;
9338
0
        }
9339
49.6k
        D(fprintf(stderr, "%*c> pattern_capture_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
9340
49.6k
        expr_ty name;
9341
49.6k
        if (
9342
49.6k
            _PyPegen_lookahead_with_string(0, _PyPegen_expect_soft_keyword, p, "_")
9343
49.6k
            &&
9344
49.6k
            (name = _PyPegen_name_token(p))  // NAME
9345
49.6k
            &&
9346
49.6k
            _PyPegen_lookahead(0, _tmp_43_rule, p)
9347
49.6k
        )
9348
19.9k
        {
9349
19.9k
            D(fprintf(stderr, "%*c+ pattern_capture_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
9350
19.9k
            _res = _PyPegen_set_expr_context ( p , name , Store );
9351
19.9k
            if (_res == NULL && PyErr_Occurred()) {
9352
0
                p->error_indicator = 1;
9353
0
                p->level--;
9354
0
                return NULL;
9355
0
            }
9356
19.9k
            goto done;
9357
19.9k
        }
9358
29.6k
        p->mark = _mark;
9359
29.6k
        D(fprintf(stderr, "%*c%s pattern_capture_target[%d-%d]: %s failed!\n", p->level, ' ',
9360
29.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
9361
29.6k
    }
9362
0
    _res = NULL;
9363
49.6k
  done:
9364
49.6k
    p->level--;
9365
49.6k
    return _res;
9366
29.6k
}
9367
9368
// wildcard_pattern: "_"
9369
static pattern_ty
9370
wildcard_pattern_rule(Parser *p)
9371
29.6k
{
9372
29.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9373
0
        _Pypegen_stack_overflow(p);
9374
0
    }
9375
29.6k
    if (p->error_indicator) {
9376
0
        p->level--;
9377
0
        return NULL;
9378
0
    }
9379
29.6k
    pattern_ty _res = NULL;
9380
29.6k
    int _mark = p->mark;
9381
29.6k
    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
29.6k
    int _start_lineno = p->tokens[_mark]->lineno;
9387
29.6k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9388
29.6k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9389
29.6k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9390
29.6k
    { // "_"
9391
29.6k
        if (p->error_indicator) {
9392
0
            p->level--;
9393
0
            return NULL;
9394
0
        }
9395
29.6k
        D(fprintf(stderr, "%*c> wildcard_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"_\""));
9396
29.6k
        expr_ty _keyword;
9397
29.6k
        if (
9398
29.6k
            (_keyword = _PyPegen_expect_soft_keyword(p, "_"))  // soft_keyword='"_"'
9399
29.6k
        )
9400
3.80k
        {
9401
3.80k
            D(fprintf(stderr, "%*c+ wildcard_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"_\""));
9402
3.80k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9403
3.80k
            if (_token == NULL) {
9404
0
                p->level--;
9405
0
                return NULL;
9406
0
            }
9407
3.80k
            int _end_lineno = _token->end_lineno;
9408
3.80k
            UNUSED(_end_lineno); // Only used by EXTRA macro
9409
3.80k
            int _end_col_offset = _token->end_col_offset;
9410
3.80k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9411
3.80k
            _res = _PyAST_MatchAs ( NULL , NULL , EXTRA );
9412
3.80k
            if (_res == NULL && PyErr_Occurred()) {
9413
0
                p->error_indicator = 1;
9414
0
                p->level--;
9415
0
                return NULL;
9416
0
            }
9417
3.80k
            goto done;
9418
3.80k
        }
9419
25.8k
        p->mark = _mark;
9420
25.8k
        D(fprintf(stderr, "%*c%s wildcard_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9421
25.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"_\""));
9422
25.8k
    }
9423
0
    _res = NULL;
9424
29.6k
  done:
9425
29.6k
    p->level--;
9426
29.6k
    return _res;
9427
25.8k
}
9428
9429
// value_pattern: attr !('.' | '(' | '=')
9430
static pattern_ty
9431
value_pattern_rule(Parser *p)
9432
25.8k
{
9433
25.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9434
0
        _Pypegen_stack_overflow(p);
9435
0
    }
9436
25.8k
    if (p->error_indicator) {
9437
0
        p->level--;
9438
0
        return NULL;
9439
0
    }
9440
25.8k
    pattern_ty _res = NULL;
9441
25.8k
    int _mark = p->mark;
9442
25.8k
    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
25.8k
    int _start_lineno = p->tokens[_mark]->lineno;
9448
25.8k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9449
25.8k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9450
25.8k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9451
25.8k
    { // attr !('.' | '(' | '=')
9452
25.8k
        if (p->error_indicator) {
9453
0
            p->level--;
9454
0
            return NULL;
9455
0
        }
9456
25.8k
        D(fprintf(stderr, "%*c> value_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr !('.' | '(' | '=')"));
9457
25.8k
        expr_ty attr;
9458
25.8k
        if (
9459
25.8k
            (attr = attr_rule(p))  // attr
9460
25.8k
            &&
9461
25.8k
            _PyPegen_lookahead(0, _tmp_43_rule, p)
9462
25.8k
        )
9463
2.88k
        {
9464
2.88k
            D(fprintf(stderr, "%*c+ value_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr !('.' | '(' | '=')"));
9465
2.88k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9466
2.88k
            if (_token == NULL) {
9467
0
                p->level--;
9468
0
                return NULL;
9469
0
            }
9470
2.88k
            int _end_lineno = _token->end_lineno;
9471
2.88k
            UNUSED(_end_lineno); // Only used by EXTRA macro
9472
2.88k
            int _end_col_offset = _token->end_col_offset;
9473
2.88k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9474
2.88k
            _res = _PyAST_MatchValue ( attr , EXTRA );
9475
2.88k
            if (_res == NULL && PyErr_Occurred()) {
9476
0
                p->error_indicator = 1;
9477
0
                p->level--;
9478
0
                return NULL;
9479
0
            }
9480
2.88k
            goto done;
9481
2.88k
        }
9482
22.9k
        p->mark = _mark;
9483
22.9k
        D(fprintf(stderr, "%*c%s value_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9484
22.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr !('.' | '(' | '=')"));
9485
22.9k
    }
9486
0
    _res = NULL;
9487
25.8k
  done:
9488
25.8k
    p->level--;
9489
25.8k
    return _res;
9490
22.9k
}
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
134k
{
9498
134k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9499
0
        _Pypegen_stack_overflow(p);
9500
0
    }
9501
134k
    expr_ty _res = NULL;
9502
134k
    if (_PyPegen_is_memoized(p, attr_type, &_res)) {
9503
108k
        p->level--;
9504
108k
        return _res;
9505
108k
    }
9506
25.9k
    int _mark = p->mark;
9507
25.9k
    int _resmark = p->mark;
9508
30.3k
    while (1) {
9509
30.3k
        int tmpvar_1 = _PyPegen_update_memo(p, _mark, attr_type, _res);
9510
30.3k
        if (tmpvar_1) {
9511
0
            p->level--;
9512
0
            return _res;
9513
0
        }
9514
30.3k
        p->mark = _mark;
9515
30.3k
        void *_raw = attr_raw(p);
9516
30.3k
        if (p->error_indicator) {
9517
5
            p->level--;
9518
5
            return NULL;
9519
5
        }
9520
30.3k
        if (_raw == NULL || p->mark <= _resmark)
9521
25.9k
            break;
9522
4.39k
        _resmark = p->mark;
9523
4.39k
        _res = _raw;
9524
4.39k
    }
9525
25.9k
    p->mark = _resmark;
9526
25.9k
    p->level--;
9527
25.9k
    return _res;
9528
25.9k
}
9529
static expr_ty
9530
attr_raw(Parser *p)
9531
30.3k
{
9532
30.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9533
0
        _Pypegen_stack_overflow(p);
9534
0
    }
9535
30.3k
    if (p->error_indicator) {
9536
0
        p->level--;
9537
0
        return NULL;
9538
0
    }
9539
30.3k
    expr_ty _res = NULL;
9540
30.3k
    int _mark = p->mark;
9541
30.3k
    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.3k
    int _start_lineno = p->tokens[_mark]->lineno;
9547
30.3k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9548
30.3k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9549
30.3k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9550
30.3k
    { // name_or_attr '.' NAME
9551
30.3k
        if (p->error_indicator) {
9552
0
            p->level--;
9553
0
            return NULL;
9554
0
        }
9555
30.3k
        D(fprintf(stderr, "%*c> attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '.' NAME"));
9556
30.3k
        Token * _literal;
9557
30.3k
        expr_ty attr;
9558
30.3k
        expr_ty value;
9559
30.3k
        if (
9560
30.3k
            (value = name_or_attr_rule(p))  // name_or_attr
9561
30.3k
            &&
9562
30.3k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
9563
30.3k
            &&
9564
30.3k
            (attr = _PyPegen_name_token(p))  // NAME
9565
30.3k
        )
9566
4.39k
        {
9567
4.39k
            D(fprintf(stderr, "%*c+ attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '.' NAME"));
9568
4.39k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9569
4.39k
            if (_token == NULL) {
9570
0
                p->level--;
9571
0
                return NULL;
9572
0
            }
9573
4.39k
            int _end_lineno = _token->end_lineno;
9574
4.39k
            UNUSED(_end_lineno); // Only used by EXTRA macro
9575
4.39k
            int _end_col_offset = _token->end_col_offset;
9576
4.39k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9577
4.39k
            _res = _PyAST_Attribute ( value , attr -> v . Name . id , Load , EXTRA );
9578
4.39k
            if (_res == NULL && PyErr_Occurred()) {
9579
0
                p->error_indicator = 1;
9580
0
                p->level--;
9581
0
                return NULL;
9582
0
            }
9583
4.39k
            goto done;
9584
4.39k
        }
9585
25.9k
        p->mark = _mark;
9586
25.9k
        D(fprintf(stderr, "%*c%s attr[%d-%d]: %s failed!\n", p->level, ' ',
9587
25.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '.' NAME"));
9588
25.9k
    }
9589
0
    _res = NULL;
9590
30.3k
  done:
9591
30.3k
    p->level--;
9592
30.3k
    return _res;
9593
25.9k
}
9594
9595
// Left-recursive
9596
// name_or_attr: attr | NAME
9597
static expr_ty
9598
name_or_attr_rule(Parser *p)
9599
108k
{
9600
108k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9601
0
        _Pypegen_stack_overflow(p);
9602
0
    }
9603
108k
    if (p->error_indicator) {
9604
0
        p->level--;
9605
0
        return NULL;
9606
0
    }
9607
108k
    expr_ty _res = NULL;
9608
108k
    int _mark = p->mark;
9609
108k
    { // attr
9610
108k
        if (p->error_indicator) {
9611
0
            p->level--;
9612
0
            return NULL;
9613
0
        }
9614
108k
        D(fprintf(stderr, "%*c> name_or_attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr"));
9615
108k
        expr_ty attr_var;
9616
108k
        if (
9617
108k
            (attr_var = attr_rule(p))  // attr
9618
108k
        )
9619
5.16k
        {
9620
5.16k
            D(fprintf(stderr, "%*c+ name_or_attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr"));
9621
5.16k
            _res = attr_var;
9622
5.16k
            goto done;
9623
5.16k
        }
9624
103k
        p->mark = _mark;
9625
103k
        D(fprintf(stderr, "%*c%s name_or_attr[%d-%d]: %s failed!\n", p->level, ' ',
9626
103k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr"));
9627
103k
    }
9628
0
    { // NAME
9629
103k
        if (p->error_indicator) {
9630
0
            p->level--;
9631
0
            return NULL;
9632
0
        }
9633
103k
        D(fprintf(stderr, "%*c> name_or_attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
9634
103k
        expr_ty name_var;
9635
103k
        if (
9636
103k
            (name_var = _PyPegen_name_token(p))  // NAME
9637
103k
        )
9638
63.0k
        {
9639
63.0k
            D(fprintf(stderr, "%*c+ name_or_attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
9640
63.0k
            _res = name_var;
9641
63.0k
            goto done;
9642
63.0k
        }
9643
40.2k
        p->mark = _mark;
9644
40.2k
        D(fprintf(stderr, "%*c%s name_or_attr[%d-%d]: %s failed!\n", p->level, ' ',
9645
40.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
9646
40.2k
    }
9647
0
    _res = NULL;
9648
108k
  done:
9649
108k
    p->level--;
9650
108k
    return _res;
9651
40.2k
}
9652
9653
// group_pattern: '(' pattern ')'
9654
static pattern_ty
9655
group_pattern_rule(Parser *p)
9656
22.9k
{
9657
22.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9658
0
        _Pypegen_stack_overflow(p);
9659
0
    }
9660
22.9k
    if (p->error_indicator) {
9661
0
        p->level--;
9662
0
        return NULL;
9663
0
    }
9664
22.9k
    pattern_ty _res = NULL;
9665
22.9k
    int _mark = p->mark;
9666
22.9k
    { // '(' pattern ')'
9667
22.9k
        if (p->error_indicator) {
9668
0
            p->level--;
9669
0
            return NULL;
9670
0
        }
9671
22.9k
        D(fprintf(stderr, "%*c> group_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' pattern ')'"));
9672
22.9k
        Token * _literal;
9673
22.9k
        Token * _literal_1;
9674
22.9k
        pattern_ty pattern;
9675
22.9k
        if (
9676
22.9k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
9677
22.9k
            &&
9678
22.9k
            (pattern = pattern_rule(p))  // pattern
9679
22.9k
            &&
9680
22.9k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
9681
22.9k
        )
9682
137
        {
9683
137
            D(fprintf(stderr, "%*c+ group_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' pattern ')'"));
9684
137
            _res = pattern;
9685
137
            if (_res == NULL && PyErr_Occurred()) {
9686
0
                p->error_indicator = 1;
9687
0
                p->level--;
9688
0
                return NULL;
9689
0
            }
9690
137
            goto done;
9691
137
        }
9692
22.8k
        p->mark = _mark;
9693
22.8k
        D(fprintf(stderr, "%*c%s group_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9694
22.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' pattern ')'"));
9695
22.8k
    }
9696
0
    _res = NULL;
9697
22.9k
  done:
9698
22.9k
    p->level--;
9699
22.9k
    return _res;
9700
22.8k
}
9701
9702
// sequence_pattern: '[' maybe_sequence_pattern? ']' | '(' open_sequence_pattern? ')'
9703
static pattern_ty
9704
sequence_pattern_rule(Parser *p)
9705
22.2k
{
9706
22.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9707
0
        _Pypegen_stack_overflow(p);
9708
0
    }
9709
22.2k
    if (p->error_indicator) {
9710
0
        p->level--;
9711
0
        return NULL;
9712
0
    }
9713
22.2k
    pattern_ty _res = NULL;
9714
22.2k
    int _mark = p->mark;
9715
22.2k
    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
22.2k
    int _start_lineno = p->tokens[_mark]->lineno;
9721
22.2k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9722
22.2k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9723
22.2k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9724
22.2k
    { // '[' maybe_sequence_pattern? ']'
9725
22.2k
        if (p->error_indicator) {
9726
0
            p->level--;
9727
0
            return NULL;
9728
0
        }
9729
22.2k
        D(fprintf(stderr, "%*c> sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
9730
22.2k
        Token * _literal;
9731
22.2k
        Token * _literal_1;
9732
22.2k
        void *patterns;
9733
22.2k
        if (
9734
22.2k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
9735
22.2k
            &&
9736
22.2k
            (patterns = maybe_sequence_pattern_rule(p), !p->error_indicator)  // maybe_sequence_pattern?
9737
22.2k
            &&
9738
22.2k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
9739
22.2k
        )
9740
218
        {
9741
218
            D(fprintf(stderr, "%*c+ sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
9742
218
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9743
218
            if (_token == NULL) {
9744
0
                p->level--;
9745
0
                return NULL;
9746
0
            }
9747
218
            int _end_lineno = _token->end_lineno;
9748
218
            UNUSED(_end_lineno); // Only used by EXTRA macro
9749
218
            int _end_col_offset = _token->end_col_offset;
9750
218
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9751
218
            _res = _PyAST_MatchSequence ( patterns , EXTRA );
9752
218
            if (_res == NULL && PyErr_Occurred()) {
9753
0
                p->error_indicator = 1;
9754
0
                p->level--;
9755
0
                return NULL;
9756
0
            }
9757
218
            goto done;
9758
218
        }
9759
22.0k
        p->mark = _mark;
9760
22.0k
        D(fprintf(stderr, "%*c%s sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9761
22.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
9762
22.0k
    }
9763
0
    { // '(' open_sequence_pattern? ')'
9764
22.0k
        if (p->error_indicator) {
9765
489
            p->level--;
9766
489
            return NULL;
9767
489
        }
9768
21.5k
        D(fprintf(stderr, "%*c> sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' open_sequence_pattern? ')'"));
9769
21.5k
        Token * _literal;
9770
21.5k
        Token * _literal_1;
9771
21.5k
        void *patterns;
9772
21.5k
        if (
9773
21.5k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
9774
21.5k
            &&
9775
21.5k
            (patterns = open_sequence_pattern_rule(p), !p->error_indicator)  // open_sequence_pattern?
9776
21.5k
            &&
9777
21.5k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
9778
21.5k
        )
9779
659
        {
9780
659
            D(fprintf(stderr, "%*c+ sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' open_sequence_pattern? ')'"));
9781
659
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9782
659
            if (_token == NULL) {
9783
0
                p->level--;
9784
0
                return NULL;
9785
0
            }
9786
659
            int _end_lineno = _token->end_lineno;
9787
659
            UNUSED(_end_lineno); // Only used by EXTRA macro
9788
659
            int _end_col_offset = _token->end_col_offset;
9789
659
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9790
659
            _res = _PyAST_MatchSequence ( patterns , EXTRA );
9791
659
            if (_res == NULL && PyErr_Occurred()) {
9792
0
                p->error_indicator = 1;
9793
0
                p->level--;
9794
0
                return NULL;
9795
0
            }
9796
659
            goto done;
9797
659
        }
9798
20.8k
        p->mark = _mark;
9799
20.8k
        D(fprintf(stderr, "%*c%s sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9800
20.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' open_sequence_pattern? ')'"));
9801
20.8k
    }
9802
0
    _res = NULL;
9803
21.7k
  done:
9804
21.7k
    p->level--;
9805
21.7k
    return _res;
9806
20.8k
}
9807
9808
// open_sequence_pattern: maybe_star_pattern ',' maybe_sequence_pattern?
9809
static asdl_seq*
9810
open_sequence_pattern_rule(Parser *p)
9811
15.2k
{
9812
15.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9813
0
        _Pypegen_stack_overflow(p);
9814
0
    }
9815
15.2k
    if (p->error_indicator) {
9816
0
        p->level--;
9817
0
        return NULL;
9818
0
    }
9819
15.2k
    asdl_seq* _res = NULL;
9820
15.2k
    int _mark = p->mark;
9821
15.2k
    { // maybe_star_pattern ',' maybe_sequence_pattern?
9822
15.2k
        if (p->error_indicator) {
9823
0
            p->level--;
9824
0
            return NULL;
9825
0
        }
9826
15.2k
        D(fprintf(stderr, "%*c> open_sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
9827
15.2k
        Token * _literal;
9828
15.2k
        pattern_ty pattern;
9829
15.2k
        void *patterns;
9830
15.2k
        if (
9831
15.2k
            (pattern = maybe_star_pattern_rule(p))  // maybe_star_pattern
9832
15.2k
            &&
9833
15.2k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
9834
15.2k
            &&
9835
15.2k
            (patterns = maybe_sequence_pattern_rule(p), !p->error_indicator)  // maybe_sequence_pattern?
9836
15.2k
        )
9837
8.85k
        {
9838
8.85k
            D(fprintf(stderr, "%*c+ open_sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
9839
8.85k
            _res = _PyPegen_seq_insert_in_front ( p , pattern , patterns );
9840
8.85k
            if (_res == NULL && PyErr_Occurred()) {
9841
0
                p->error_indicator = 1;
9842
0
                p->level--;
9843
0
                return NULL;
9844
0
            }
9845
8.85k
            goto done;
9846
8.85k
        }
9847
6.34k
        p->mark = _mark;
9848
6.34k
        D(fprintf(stderr, "%*c%s open_sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9849
6.34k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
9850
6.34k
    }
9851
0
    _res = NULL;
9852
15.2k
  done:
9853
15.2k
    p->level--;
9854
15.2k
    return _res;
9855
6.34k
}
9856
9857
// maybe_sequence_pattern: ','.maybe_star_pattern+ ','?
9858
static asdl_seq*
9859
maybe_sequence_pattern_rule(Parser *p)
9860
10.1k
{
9861
10.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9862
0
        _Pypegen_stack_overflow(p);
9863
0
    }
9864
10.1k
    if (p->error_indicator) {
9865
0
        p->level--;
9866
0
        return NULL;
9867
0
    }
9868
10.1k
    asdl_seq* _res = NULL;
9869
10.1k
    int _mark = p->mark;
9870
10.1k
    { // ','.maybe_star_pattern+ ','?
9871
10.1k
        if (p->error_indicator) {
9872
0
            p->level--;
9873
0
            return NULL;
9874
0
        }
9875
10.1k
        D(fprintf(stderr, "%*c> maybe_sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.maybe_star_pattern+ ','?"));
9876
10.1k
        void *_opt_var;
9877
10.1k
        UNUSED(_opt_var); // Silence compiler warnings
9878
10.1k
        asdl_seq * patterns;
9879
10.1k
        if (
9880
10.1k
            (patterns = _gather_45_rule(p))  // ','.maybe_star_pattern+
9881
10.1k
            &&
9882
10.1k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
9883
10.1k
        )
9884
7.44k
        {
9885
7.44k
            D(fprintf(stderr, "%*c+ maybe_sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.maybe_star_pattern+ ','?"));
9886
7.44k
            _res = patterns;
9887
7.44k
            if (_res == NULL && PyErr_Occurred()) {
9888
0
                p->error_indicator = 1;
9889
0
                p->level--;
9890
0
                return NULL;
9891
0
            }
9892
7.44k
            goto done;
9893
7.44k
        }
9894
2.72k
        p->mark = _mark;
9895
2.72k
        D(fprintf(stderr, "%*c%s maybe_sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9896
2.72k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.maybe_star_pattern+ ','?"));
9897
2.72k
    }
9898
0
    _res = NULL;
9899
10.1k
  done:
9900
10.1k
    p->level--;
9901
10.1k
    return _res;
9902
2.72k
}
9903
9904
// maybe_star_pattern: star_pattern | pattern
9905
static pattern_ty
9906
maybe_star_pattern_rule(Parser *p)
9907
66.8k
{
9908
66.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9909
0
        _Pypegen_stack_overflow(p);
9910
0
    }
9911
66.8k
    if (p->error_indicator) {
9912
0
        p->level--;
9913
0
        return NULL;
9914
0
    }
9915
66.8k
    pattern_ty _res = NULL;
9916
66.8k
    int _mark = p->mark;
9917
66.8k
    { // star_pattern
9918
66.8k
        if (p->error_indicator) {
9919
0
            p->level--;
9920
0
            return NULL;
9921
0
        }
9922
66.8k
        D(fprintf(stderr, "%*c> maybe_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_pattern"));
9923
66.8k
        pattern_ty star_pattern_var;
9924
66.8k
        if (
9925
66.8k
            (star_pattern_var = star_pattern_rule(p))  // star_pattern
9926
66.8k
        )
9927
4.77k
        {
9928
4.77k
            D(fprintf(stderr, "%*c+ maybe_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_pattern"));
9929
4.77k
            _res = star_pattern_var;
9930
4.77k
            goto done;
9931
4.77k
        }
9932
62.0k
        p->mark = _mark;
9933
62.0k
        D(fprintf(stderr, "%*c%s maybe_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9934
62.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_pattern"));
9935
62.0k
    }
9936
0
    { // pattern
9937
62.0k
        if (p->error_indicator) {
9938
16
            p->level--;
9939
16
            return NULL;
9940
16
        }
9941
62.0k
        D(fprintf(stderr, "%*c> maybe_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern"));
9942
62.0k
        pattern_ty pattern_var;
9943
62.0k
        if (
9944
62.0k
            (pattern_var = pattern_rule(p))  // pattern
9945
62.0k
        )
9946
55.0k
        {
9947
55.0k
            D(fprintf(stderr, "%*c+ maybe_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern"));
9948
55.0k
            _res = pattern_var;
9949
55.0k
            goto done;
9950
55.0k
        }
9951
7.02k
        p->mark = _mark;
9952
7.02k
        D(fprintf(stderr, "%*c%s maybe_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9953
7.02k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern"));
9954
7.02k
    }
9955
0
    _res = NULL;
9956
66.8k
  done:
9957
66.8k
    p->level--;
9958
66.8k
    return _res;
9959
7.02k
}
9960
9961
// star_pattern: '*' pattern_capture_target | '*' wildcard_pattern
9962
static pattern_ty
9963
star_pattern_rule(Parser *p)
9964
66.8k
{
9965
66.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9966
0
        _Pypegen_stack_overflow(p);
9967
0
    }
9968
66.8k
    if (p->error_indicator) {
9969
0
        p->level--;
9970
0
        return NULL;
9971
0
    }
9972
66.8k
    pattern_ty _res = NULL;
9973
66.8k
    if (_PyPegen_is_memoized(p, star_pattern_type, &_res)) {
9974
8.01k
        p->level--;
9975
8.01k
        return _res;
9976
8.01k
    }
9977
58.8k
    int _mark = p->mark;
9978
58.8k
    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
58.8k
    int _start_lineno = p->tokens[_mark]->lineno;
9984
58.8k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9985
58.8k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9986
58.8k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9987
58.8k
    { // '*' pattern_capture_target
9988
58.8k
        if (p->error_indicator) {
9989
0
            p->level--;
9990
0
            return NULL;
9991
0
        }
9992
58.8k
        D(fprintf(stderr, "%*c> star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' pattern_capture_target"));
9993
58.8k
        Token * _literal;
9994
58.8k
        expr_ty target;
9995
58.8k
        if (
9996
58.8k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
9997
58.8k
            &&
9998
58.8k
            (target = pattern_capture_target_rule(p))  // pattern_capture_target
9999
58.8k
        )
10000
1.93k
        {
10001
1.93k
            D(fprintf(stderr, "%*c+ star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' pattern_capture_target"));
10002
1.93k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10003
1.93k
            if (_token == NULL) {
10004
0
                p->level--;
10005
0
                return NULL;
10006
0
            }
10007
1.93k
            int _end_lineno = _token->end_lineno;
10008
1.93k
            UNUSED(_end_lineno); // Only used by EXTRA macro
10009
1.93k
            int _end_col_offset = _token->end_col_offset;
10010
1.93k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10011
1.93k
            _res = _PyAST_MatchStar ( target -> v . Name . id , EXTRA );
10012
1.93k
            if (_res == NULL && PyErr_Occurred()) {
10013
0
                p->error_indicator = 1;
10014
0
                p->level--;
10015
0
                return NULL;
10016
0
            }
10017
1.93k
            goto done;
10018
1.93k
        }
10019
56.8k
        p->mark = _mark;
10020
56.8k
        D(fprintf(stderr, "%*c%s star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10021
56.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' pattern_capture_target"));
10022
56.8k
    }
10023
0
    { // '*' wildcard_pattern
10024
56.8k
        if (p->error_indicator) {
10025
2
            p->level--;
10026
2
            return NULL;
10027
2
        }
10028
56.8k
        D(fprintf(stderr, "%*c> star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' wildcard_pattern"));
10029
56.8k
        Token * _literal;
10030
56.8k
        pattern_ty wildcard_pattern_var;
10031
56.8k
        if (
10032
56.8k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
10033
56.8k
            &&
10034
56.8k
            (wildcard_pattern_var = wildcard_pattern_rule(p))  // wildcard_pattern
10035
56.8k
        )
10036
1.76k
        {
10037
1.76k
            D(fprintf(stderr, "%*c+ star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' wildcard_pattern"));
10038
1.76k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10039
1.76k
            if (_token == NULL) {
10040
0
                p->level--;
10041
0
                return NULL;
10042
0
            }
10043
1.76k
            int _end_lineno = _token->end_lineno;
10044
1.76k
            UNUSED(_end_lineno); // Only used by EXTRA macro
10045
1.76k
            int _end_col_offset = _token->end_col_offset;
10046
1.76k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10047
1.76k
            _res = _PyAST_MatchStar ( NULL , EXTRA );
10048
1.76k
            if (_res == NULL && PyErr_Occurred()) {
10049
0
                p->error_indicator = 1;
10050
0
                p->level--;
10051
0
                return NULL;
10052
0
            }
10053
1.76k
            goto done;
10054
1.76k
        }
10055
55.1k
        p->mark = _mark;
10056
55.1k
        D(fprintf(stderr, "%*c%s star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10057
55.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' wildcard_pattern"));
10058
55.1k
    }
10059
0
    _res = NULL;
10060
58.8k
  done:
10061
58.8k
    _PyPegen_insert_memo(p, _mark, star_pattern_type, _res);
10062
58.8k
    p->level--;
10063
58.8k
    return _res;
10064
55.1k
}
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
20.7k
{
10074
20.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10075
0
        _Pypegen_stack_overflow(p);
10076
0
    }
10077
20.7k
    if (p->error_indicator) {
10078
0
        p->level--;
10079
0
        return NULL;
10080
0
    }
10081
20.7k
    pattern_ty _res = NULL;
10082
20.7k
    int _mark = p->mark;
10083
20.7k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10084
0
        p->error_indicator = 1;
10085
0
        p->level--;
10086
0
        return NULL;
10087
0
    }
10088
20.7k
    int _start_lineno = p->tokens[_mark]->lineno;
10089
20.7k
    UNUSED(_start_lineno); // Only used by EXTRA macro
10090
20.7k
    int _start_col_offset = p->tokens[_mark]->col_offset;
10091
20.7k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
10092
20.7k
    { // '{' '}'
10093
20.7k
        if (p->error_indicator) {
10094
0
            p->level--;
10095
0
            return NULL;
10096
0
        }
10097
20.7k
        D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
10098
20.7k
        Token * _literal;
10099
20.7k
        Token * _literal_1;
10100
20.7k
        if (
10101
20.7k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
10102
20.7k
            &&
10103
20.7k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
10104
20.7k
        )
10105
1.10k
        {
10106
1.10k
            D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
10107
1.10k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10108
1.10k
            if (_token == NULL) {
10109
0
                p->level--;
10110
0
                return NULL;
10111
0
            }
10112
1.10k
            int _end_lineno = _token->end_lineno;
10113
1.10k
            UNUSED(_end_lineno); // Only used by EXTRA macro
10114
1.10k
            int _end_col_offset = _token->end_col_offset;
10115
1.10k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10116
1.10k
            _res = _PyAST_MatchMapping ( NULL , NULL , NULL , EXTRA );
10117
1.10k
            if (_res == NULL && PyErr_Occurred()) {
10118
0
                p->error_indicator = 1;
10119
0
                p->level--;
10120
0
                return NULL;
10121
0
            }
10122
1.10k
            goto done;
10123
1.10k
        }
10124
19.6k
        p->mark = _mark;
10125
19.6k
        D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10126
19.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '}'"));
10127
19.6k
    }
10128
0
    { // '{' double_star_pattern ','? '}'
10129
19.6k
        if (p->error_indicator) {
10130
4
            p->level--;
10131
4
            return NULL;
10132
4
        }
10133
19.6k
        D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' double_star_pattern ','? '}'"));
10134
19.6k
        Token * _literal;
10135
19.6k
        Token * _literal_1;
10136
19.6k
        void *_opt_var;
10137
19.6k
        UNUSED(_opt_var); // Silence compiler warnings
10138
19.6k
        expr_ty rest;
10139
19.6k
        if (
10140
19.6k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
10141
19.6k
            &&
10142
19.6k
            (rest = double_star_pattern_rule(p))  // double_star_pattern
10143
19.6k
            &&
10144
19.6k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10145
19.6k
            &&
10146
19.6k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
10147
19.6k
        )
10148
3
        {
10149
3
            D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' double_star_pattern ','? '}'"));
10150
3
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10151
3
            if (_token == NULL) {
10152
0
                p->level--;
10153
0
                return NULL;
10154
0
            }
10155
3
            int _end_lineno = _token->end_lineno;
10156
3
            UNUSED(_end_lineno); // Only used by EXTRA macro
10157
3
            int _end_col_offset = _token->end_col_offset;
10158
3
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10159
3
            _res = _PyAST_MatchMapping ( NULL , NULL , rest -> v . Name . id , EXTRA );
10160
3
            if (_res == NULL && PyErr_Occurred()) {
10161
0
                p->error_indicator = 1;
10162
0
                p->level--;
10163
0
                return NULL;
10164
0
            }
10165
3
            goto done;
10166
3
        }
10167
19.6k
        p->mark = _mark;
10168
19.6k
        D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10169
19.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' double_star_pattern ','? '}'"));
10170
19.6k
    }
10171
0
    { // '{' items_pattern ',' double_star_pattern ','? '}'
10172
19.6k
        if (p->error_indicator) {
10173
2
            p->level--;
10174
2
            return NULL;
10175
2
        }
10176
19.6k
        D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
10177
19.6k
        Token * _literal;
10178
19.6k
        Token * _literal_1;
10179
19.6k
        Token * _literal_2;
10180
19.6k
        void *_opt_var;
10181
19.6k
        UNUSED(_opt_var); // Silence compiler warnings
10182
19.6k
        asdl_seq* items;
10183
19.6k
        expr_ty rest;
10184
19.6k
        if (
10185
19.6k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
10186
19.6k
            &&
10187
19.6k
            (items = items_pattern_rule(p))  // items_pattern
10188
19.6k
            &&
10189
19.6k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
10190
19.6k
            &&
10191
19.6k
            (rest = double_star_pattern_rule(p))  // double_star_pattern
10192
19.6k
            &&
10193
19.6k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10194
19.6k
            &&
10195
19.6k
            (_literal_2 = _PyPegen_expect_token(p, 26))  // token='}'
10196
19.6k
        )
10197
3
        {
10198
3
            D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
10199
3
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10200
3
            if (_token == NULL) {
10201
0
                p->level--;
10202
0
                return NULL;
10203
0
            }
10204
3
            int _end_lineno = _token->end_lineno;
10205
3
            UNUSED(_end_lineno); // Only used by EXTRA macro
10206
3
            int _end_col_offset = _token->end_col_offset;
10207
3
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10208
3
            _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
3
            if (_res == NULL && PyErr_Occurred()) {
10210
0
                p->error_indicator = 1;
10211
0
                p->level--;
10212
0
                return NULL;
10213
0
            }
10214
3
            goto done;
10215
3
        }
10216
19.6k
        p->mark = _mark;
10217
19.6k
        D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10218
19.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
10219
19.6k
    }
10220
0
    { // '{' items_pattern ','? '}'
10221
19.6k
        if (p->error_indicator) {
10222
316
            p->level--;
10223
316
            return NULL;
10224
316
        }
10225
19.3k
        D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ','? '}'"));
10226
19.3k
        Token * _literal;
10227
19.3k
        Token * _literal_1;
10228
19.3k
        void *_opt_var;
10229
19.3k
        UNUSED(_opt_var); // Silence compiler warnings
10230
19.3k
        asdl_seq* items;
10231
19.3k
        if (
10232
19.3k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
10233
19.3k
            &&
10234
19.3k
            (items = items_pattern_rule(p))  // items_pattern
10235
19.3k
            &&
10236
19.3k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10237
19.3k
            &&
10238
19.3k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
10239
19.3k
        )
10240
24
        {
10241
24
            D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ','? '}'"));
10242
24
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10243
24
            if (_token == NULL) {
10244
0
                p->level--;
10245
0
                return NULL;
10246
0
            }
10247
24
            int _end_lineno = _token->end_lineno;
10248
24
            UNUSED(_end_lineno); // Only used by EXTRA macro
10249
24
            int _end_col_offset = _token->end_col_offset;
10250
24
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10251
24
            _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
24
            if (_res == NULL && PyErr_Occurred()) {
10253
0
                p->error_indicator = 1;
10254
0
                p->level--;
10255
0
                return NULL;
10256
0
            }
10257
24
            goto done;
10258
24
        }
10259
19.3k
        p->mark = _mark;
10260
19.3k
        D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10261
19.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' items_pattern ','? '}'"));
10262
19.3k
    }
10263
0
    _res = NULL;
10264
20.4k
  done:
10265
20.4k
    p->level--;
10266
20.4k
    return _res;
10267
19.3k
}
10268
10269
// items_pattern: ','.key_value_pattern+
10270
static asdl_seq*
10271
items_pattern_rule(Parser *p)
10272
2.95k
{
10273
2.95k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10274
0
        _Pypegen_stack_overflow(p);
10275
0
    }
10276
2.95k
    if (p->error_indicator) {
10277
0
        p->level--;
10278
0
        return NULL;
10279
0
    }
10280
2.95k
    asdl_seq* _res = NULL;
10281
2.95k
    int _mark = p->mark;
10282
2.95k
    { // ','.key_value_pattern+
10283
2.95k
        if (p->error_indicator) {
10284
0
            p->level--;
10285
0
            return NULL;
10286
0
        }
10287
2.95k
        D(fprintf(stderr, "%*c> items_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.key_value_pattern+"));
10288
2.95k
        asdl_seq * _gather_47_var;
10289
2.95k
        if (
10290
2.95k
            (_gather_47_var = _gather_47_rule(p))  // ','.key_value_pattern+
10291
2.95k
        )
10292
1.58k
        {
10293
1.58k
            D(fprintf(stderr, "%*c+ items_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.key_value_pattern+"));
10294
1.58k
            _res = _gather_47_var;
10295
1.58k
            goto done;
10296
1.58k
        }
10297
1.37k
        p->mark = _mark;
10298
1.37k
        D(fprintf(stderr, "%*c%s items_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10299
1.37k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.key_value_pattern+"));
10300
1.37k
    }
10301
0
    _res = NULL;
10302
2.95k
  done:
10303
2.95k
    p->level--;
10304
2.95k
    return _res;
10305
1.37k
}
10306
10307
// key_value_pattern: (literal_expr | attr) ':' pattern
10308
static KeyPatternPair*
10309
key_value_pattern_rule(Parser *p)
10310
6.54k
{
10311
6.54k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10312
0
        _Pypegen_stack_overflow(p);
10313
0
    }
10314
6.54k
    if (p->error_indicator) {
10315
0
        p->level--;
10316
0
        return NULL;
10317
0
    }
10318
6.54k
    KeyPatternPair* _res = NULL;
10319
6.54k
    int _mark = p->mark;
10320
6.54k
    { // (literal_expr | attr) ':' pattern
10321
6.54k
        if (p->error_indicator) {
10322
0
            p->level--;
10323
0
            return NULL;
10324
0
        }
10325
6.54k
        D(fprintf(stderr, "%*c> key_value_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(literal_expr | attr) ':' pattern"));
10326
6.54k
        Token * _literal;
10327
6.54k
        void *key;
10328
6.54k
        pattern_ty pattern;
10329
6.54k
        if (
10330
6.54k
            (key = _tmp_48_rule(p))  // literal_expr | attr
10331
6.54k
            &&
10332
6.54k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
10333
6.54k
            &&
10334
6.54k
            (pattern = pattern_rule(p))  // pattern
10335
6.54k
        )
10336
3.64k
        {
10337
3.64k
            D(fprintf(stderr, "%*c+ key_value_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(literal_expr | attr) ':' pattern"));
10338
3.64k
            _res = _PyPegen_key_pattern_pair ( p , key , pattern );
10339
3.64k
            if (_res == NULL && PyErr_Occurred()) {
10340
0
                p->error_indicator = 1;
10341
0
                p->level--;
10342
0
                return NULL;
10343
0
            }
10344
3.64k
            goto done;
10345
3.64k
        }
10346
2.89k
        p->mark = _mark;
10347
2.89k
        D(fprintf(stderr, "%*c%s key_value_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10348
2.89k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(literal_expr | attr) ':' pattern"));
10349
2.89k
    }
10350
0
    _res = NULL;
10351
6.54k
  done:
10352
6.54k
    p->level--;
10353
6.54k
    return _res;
10354
2.89k
}
10355
10356
// double_star_pattern: '**' pattern_capture_target
10357
static expr_ty
10358
double_star_pattern_rule(Parser *p)
10359
2.47k
{
10360
2.47k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10361
0
        _Pypegen_stack_overflow(p);
10362
0
    }
10363
2.47k
    if (p->error_indicator) {
10364
127
        p->level--;
10365
127
        return NULL;
10366
127
    }
10367
2.34k
    expr_ty _res = NULL;
10368
2.34k
    int _mark = p->mark;
10369
2.34k
    { // '**' pattern_capture_target
10370
2.34k
        if (p->error_indicator) {
10371
0
            p->level--;
10372
0
            return NULL;
10373
0
        }
10374
2.34k
        D(fprintf(stderr, "%*c> double_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' pattern_capture_target"));
10375
2.34k
        Token * _literal;
10376
2.34k
        expr_ty target;
10377
2.34k
        if (
10378
2.34k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
10379
2.34k
            &&
10380
2.34k
            (target = pattern_capture_target_rule(p))  // pattern_capture_target
10381
2.34k
        )
10382
15
        {
10383
15
            D(fprintf(stderr, "%*c+ double_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' pattern_capture_target"));
10384
15
            _res = target;
10385
15
            if (_res == NULL && PyErr_Occurred()) {
10386
0
                p->error_indicator = 1;
10387
0
                p->level--;
10388
0
                return NULL;
10389
0
            }
10390
15
            goto done;
10391
15
        }
10392
2.32k
        p->mark = _mark;
10393
2.32k
        D(fprintf(stderr, "%*c%s double_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10394
2.32k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' pattern_capture_target"));
10395
2.32k
    }
10396
0
    _res = NULL;
10397
2.34k
  done:
10398
2.34k
    p->level--;
10399
2.34k
    return _res;
10400
2.32k
}
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
19.3k
{
10411
19.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10412
0
        _Pypegen_stack_overflow(p);
10413
0
    }
10414
19.3k
    if (p->error_indicator) {
10415
0
        p->level--;
10416
0
        return NULL;
10417
0
    }
10418
19.3k
    pattern_ty _res = NULL;
10419
19.3k
    int _mark = p->mark;
10420
19.3k
    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
19.3k
    int _start_lineno = p->tokens[_mark]->lineno;
10426
19.3k
    UNUSED(_start_lineno); // Only used by EXTRA macro
10427
19.3k
    int _start_col_offset = p->tokens[_mark]->col_offset;
10428
19.3k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
10429
19.3k
    { // name_or_attr '(' ')'
10430
19.3k
        if (p->error_indicator) {
10431
0
            p->level--;
10432
0
            return NULL;
10433
0
        }
10434
19.3k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' ')'"));
10435
19.3k
        Token * _literal;
10436
19.3k
        Token * _literal_1;
10437
19.3k
        expr_ty cls;
10438
19.3k
        if (
10439
19.3k
            (cls = name_or_attr_rule(p))  // name_or_attr
10440
19.3k
            &&
10441
19.3k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
10442
19.3k
            &&
10443
19.3k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
10444
19.3k
        )
10445
621
        {
10446
621
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' ')'"));
10447
621
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10448
621
            if (_token == NULL) {
10449
0
                p->level--;
10450
0
                return NULL;
10451
0
            }
10452
621
            int _end_lineno = _token->end_lineno;
10453
621
            UNUSED(_end_lineno); // Only used by EXTRA macro
10454
621
            int _end_col_offset = _token->end_col_offset;
10455
621
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10456
621
            _res = _PyAST_MatchClass ( cls , NULL , NULL , NULL , EXTRA );
10457
621
            if (_res == NULL && PyErr_Occurred()) {
10458
0
                p->error_indicator = 1;
10459
0
                p->level--;
10460
0
                return NULL;
10461
0
            }
10462
621
            goto done;
10463
621
        }
10464
18.7k
        p->mark = _mark;
10465
18.7k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10466
18.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' ')'"));
10467
18.7k
    }
10468
0
    { // name_or_attr '(' positional_patterns ','? ')'
10469
18.7k
        if (p->error_indicator) {
10470
12
            p->level--;
10471
12
            return NULL;
10472
12
        }
10473
18.6k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
10474
18.6k
        Token * _literal;
10475
18.6k
        Token * _literal_1;
10476
18.6k
        void *_opt_var;
10477
18.6k
        UNUSED(_opt_var); // Silence compiler warnings
10478
18.6k
        expr_ty cls;
10479
18.6k
        asdl_pattern_seq* patterns;
10480
18.6k
        if (
10481
18.6k
            (cls = name_or_attr_rule(p))  // name_or_attr
10482
18.6k
            &&
10483
18.6k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
10484
18.6k
            &&
10485
18.6k
            (patterns = positional_patterns_rule(p))  // positional_patterns
10486
18.6k
            &&
10487
18.6k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10488
18.6k
            &&
10489
18.6k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
10490
18.6k
        )
10491
1.39k
        {
10492
1.39k
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
10493
1.39k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10494
1.39k
            if (_token == NULL) {
10495
0
                p->level--;
10496
0
                return NULL;
10497
0
            }
10498
1.39k
            int _end_lineno = _token->end_lineno;
10499
1.39k
            UNUSED(_end_lineno); // Only used by EXTRA macro
10500
1.39k
            int _end_col_offset = _token->end_col_offset;
10501
1.39k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10502
1.39k
            _res = _PyAST_MatchClass ( cls , patterns , NULL , NULL , EXTRA );
10503
1.39k
            if (_res == NULL && PyErr_Occurred()) {
10504
0
                p->error_indicator = 1;
10505
0
                p->level--;
10506
0
                return NULL;
10507
0
            }
10508
1.39k
            goto done;
10509
1.39k
        }
10510
17.2k
        p->mark = _mark;
10511
17.2k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10512
17.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
10513
17.2k
    }
10514
0
    { // name_or_attr '(' keyword_patterns ','? ')'
10515
17.2k
        if (p->error_indicator) {
10516
948
            p->level--;
10517
948
            return NULL;
10518
948
        }
10519
16.3k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
10520
16.3k
        Token * _literal;
10521
16.3k
        Token * _literal_1;
10522
16.3k
        void *_opt_var;
10523
16.3k
        UNUSED(_opt_var); // Silence compiler warnings
10524
16.3k
        expr_ty cls;
10525
16.3k
        asdl_seq* keywords;
10526
16.3k
        if (
10527
16.3k
            (cls = name_or_attr_rule(p))  // name_or_attr
10528
16.3k
            &&
10529
16.3k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
10530
16.3k
            &&
10531
16.3k
            (keywords = keyword_patterns_rule(p))  // keyword_patterns
10532
16.3k
            &&
10533
16.3k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10534
16.3k
            &&
10535
16.3k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
10536
16.3k
        )
10537
287
        {
10538
287
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
10539
287
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10540
287
            if (_token == NULL) {
10541
0
                p->level--;
10542
0
                return NULL;
10543
0
            }
10544
287
            int _end_lineno = _token->end_lineno;
10545
287
            UNUSED(_end_lineno); // Only used by EXTRA macro
10546
287
            int _end_col_offset = _token->end_col_offset;
10547
287
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10548
287
            _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
287
            if (_res == NULL && PyErr_Occurred()) {
10550
0
                p->error_indicator = 1;
10551
0
                p->level--;
10552
0
                return NULL;
10553
0
            }
10554
287
            goto done;
10555
287
        }
10556
16.0k
        p->mark = _mark;
10557
16.0k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10558
16.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
10559
16.0k
    }
10560
0
    { // name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'
10561
16.0k
        if (p->error_indicator) {
10562
231
            p->level--;
10563
231
            return NULL;
10564
231
        }
10565
15.8k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
10566
15.8k
        Token * _literal;
10567
15.8k
        Token * _literal_1;
10568
15.8k
        Token * _literal_2;
10569
15.8k
        void *_opt_var;
10570
15.8k
        UNUSED(_opt_var); // Silence compiler warnings
10571
15.8k
        expr_ty cls;
10572
15.8k
        asdl_seq* keywords;
10573
15.8k
        asdl_pattern_seq* patterns;
10574
15.8k
        if (
10575
15.8k
            (cls = name_or_attr_rule(p))  // name_or_attr
10576
15.8k
            &&
10577
15.8k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
10578
15.8k
            &&
10579
15.8k
            (patterns = positional_patterns_rule(p))  // positional_patterns
10580
15.8k
            &&
10581
15.8k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
10582
15.8k
            &&
10583
15.8k
            (keywords = keyword_patterns_rule(p))  // keyword_patterns
10584
15.8k
            &&
10585
15.8k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10586
15.8k
            &&
10587
15.8k
            (_literal_2 = _PyPegen_expect_token(p, 8))  // token=')'
10588
15.8k
        )
10589
187
        {
10590
187
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
10591
187
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10592
187
            if (_token == NULL) {
10593
0
                p->level--;
10594
0
                return NULL;
10595
0
            }
10596
187
            int _end_lineno = _token->end_lineno;
10597
187
            UNUSED(_end_lineno); // Only used by EXTRA macro
10598
187
            int _end_col_offset = _token->end_col_offset;
10599
187
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10600
187
            _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
187
            if (_res == NULL && PyErr_Occurred()) {
10602
0
                p->error_indicator = 1;
10603
0
                p->level--;
10604
0
                return NULL;
10605
0
            }
10606
187
            goto done;
10607
187
        }
10608
15.6k
        p->mark = _mark;
10609
15.6k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10610
15.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
10611
15.6k
    }
10612
15.6k
    if (p->call_invalid_rules) { // invalid_class_pattern
10613
8.05k
        if (p->error_indicator) {
10614
123
            p->level--;
10615
123
            return NULL;
10616
123
        }
10617
7.93k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_class_pattern"));
10618
7.93k
        void *invalid_class_pattern_var;
10619
7.93k
        if (
10620
7.93k
            (invalid_class_pattern_var = invalid_class_pattern_rule(p))  // invalid_class_pattern
10621
7.93k
        )
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
7.93k
        p->mark = _mark;
10628
7.93k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10629
7.93k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_class_pattern"));
10630
7.93k
    }
10631
15.5k
    _res = NULL;
10632
18.0k
  done:
10633
18.0k
    p->level--;
10634
18.0k
    return _res;
10635
15.5k
}
10636
10637
// positional_patterns: ','.pattern+
10638
static asdl_pattern_seq*
10639
positional_patterns_rule(Parser *p)
10640
19.2k
{
10641
19.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10642
0
        _Pypegen_stack_overflow(p);
10643
0
    }
10644
19.2k
    if (p->error_indicator) {
10645
0
        p->level--;
10646
0
        return NULL;
10647
0
    }
10648
19.2k
    asdl_pattern_seq* _res = NULL;
10649
19.2k
    int _mark = p->mark;
10650
19.2k
    { // ','.pattern+
10651
19.2k
        if (p->error_indicator) {
10652
0
            p->level--;
10653
0
            return NULL;
10654
0
        }
10655
19.2k
        D(fprintf(stderr, "%*c> positional_patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.pattern+"));
10656
19.2k
        asdl_pattern_seq* args;
10657
19.2k
        if (
10658
19.2k
            (args = (asdl_pattern_seq*)_gather_50_rule(p))  // ','.pattern+
10659
19.2k
        )
10660
7.00k
        {
10661
7.00k
            D(fprintf(stderr, "%*c+ positional_patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.pattern+"));
10662
7.00k
            _res = args;
10663
7.00k
            if (_res == NULL && PyErr_Occurred()) {
10664
0
                p->error_indicator = 1;
10665
0
                p->level--;
10666
0
                return NULL;
10667
0
            }
10668
7.00k
            goto done;
10669
7.00k
        }
10670
12.2k
        p->mark = _mark;
10671
12.2k
        D(fprintf(stderr, "%*c%s positional_patterns[%d-%d]: %s failed!\n", p->level, ' ',
10672
12.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.pattern+"));
10673
12.2k
    }
10674
0
    _res = NULL;
10675
19.2k
  done:
10676
19.2k
    p->level--;
10677
19.2k
    return _res;
10678
12.2k
}
10679
10680
// keyword_patterns: ','.keyword_pattern+
10681
static asdl_seq*
10682
keyword_patterns_rule(Parser *p)
10683
11.8k
{
10684
11.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10685
0
        _Pypegen_stack_overflow(p);
10686
0
    }
10687
11.8k
    if (p->error_indicator) {
10688
0
        p->level--;
10689
0
        return NULL;
10690
0
    }
10691
11.8k
    asdl_seq* _res = NULL;
10692
11.8k
    int _mark = p->mark;
10693
11.8k
    { // ','.keyword_pattern+
10694
11.8k
        if (p->error_indicator) {
10695
0
            p->level--;
10696
0
            return NULL;
10697
0
        }
10698
11.8k
        D(fprintf(stderr, "%*c> keyword_patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.keyword_pattern+"));
10699
11.8k
        asdl_seq * _gather_52_var;
10700
11.8k
        if (
10701
11.8k
            (_gather_52_var = _gather_52_rule(p))  // ','.keyword_pattern+
10702
11.8k
        )
10703
2.86k
        {
10704
2.86k
            D(fprintf(stderr, "%*c+ keyword_patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.keyword_pattern+"));
10705
2.86k
            _res = _gather_52_var;
10706
2.86k
            goto done;
10707
2.86k
        }
10708
8.99k
        p->mark = _mark;
10709
8.99k
        D(fprintf(stderr, "%*c%s keyword_patterns[%d-%d]: %s failed!\n", p->level, ' ',
10710
8.99k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.keyword_pattern+"));
10711
8.99k
    }
10712
0
    _res = NULL;
10713
11.8k
  done:
10714
11.8k
    p->level--;
10715
11.8k
    return _res;
10716
8.99k
}
10717
10718
// keyword_pattern: NAME '=' pattern
10719
static KeyPatternPair*
10720
keyword_pattern_rule(Parser *p)
10721
14.7k
{
10722
14.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10723
0
        _Pypegen_stack_overflow(p);
10724
0
    }
10725
14.7k
    if (p->error_indicator) {
10726
0
        p->level--;
10727
0
        return NULL;
10728
0
    }
10729
14.7k
    KeyPatternPair* _res = NULL;
10730
14.7k
    int _mark = p->mark;
10731
14.7k
    { // NAME '=' pattern
10732
14.7k
        if (p->error_indicator) {
10733
0
            p->level--;
10734
0
            return NULL;
10735
0
        }
10736
14.7k
        D(fprintf(stderr, "%*c> keyword_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' pattern"));
10737
14.7k
        Token * _literal;
10738
14.7k
        expr_ty arg;
10739
14.7k
        pattern_ty value;
10740
14.7k
        if (
10741
14.7k
            (arg = _PyPegen_name_token(p))  // NAME
10742
14.7k
            &&
10743
14.7k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
10744
14.7k
            &&
10745
14.7k
            (value = pattern_rule(p))  // pattern
10746
14.7k
        )
10747
4.18k
        {
10748
4.18k
            D(fprintf(stderr, "%*c+ keyword_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' pattern"));
10749
4.18k
            _res = _PyPegen_key_pattern_pair ( p , arg , value );
10750
4.18k
            if (_res == NULL && PyErr_Occurred()) {
10751
0
                p->error_indicator = 1;
10752
0
                p->level--;
10753
0
                return NULL;
10754
0
            }
10755
4.18k
            goto done;
10756
4.18k
        }
10757
10.5k
        p->mark = _mark;
10758
10.5k
        D(fprintf(stderr, "%*c%s keyword_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10759
10.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' pattern"));
10760
10.5k
    }
10761
0
    _res = NULL;
10762
14.7k
  done:
10763
14.7k
    p->level--;
10764
14.7k
    return _res;
10765
10.5k
}
10766
10767
// type_alias: "type" NAME type_params? '=' expression
10768
static stmt_ty
10769
type_alias_rule(Parser *p)
10770
832
{
10771
832
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10772
0
        _Pypegen_stack_overflow(p);
10773
0
    }
10774
832
    if (p->error_indicator) {
10775
0
        p->level--;
10776
0
        return NULL;
10777
0
    }
10778
832
    stmt_ty _res = NULL;
10779
832
    int _mark = p->mark;
10780
832
    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
832
    int _start_lineno = p->tokens[_mark]->lineno;
10786
832
    UNUSED(_start_lineno); // Only used by EXTRA macro
10787
832
    int _start_col_offset = p->tokens[_mark]->col_offset;
10788
832
    UNUSED(_start_col_offset); // Only used by EXTRA macro
10789
832
    { // "type" NAME type_params? '=' expression
10790
832
        if (p->error_indicator) {
10791
0
            p->level--;
10792
0
            return NULL;
10793
0
        }
10794
832
        D(fprintf(stderr, "%*c> type_alias[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"type\" NAME type_params? '=' expression"));
10795
832
        expr_ty _keyword;
10796
832
        Token * _literal;
10797
832
        expr_ty b;
10798
832
        expr_ty n;
10799
832
        void *t;
10800
832
        if (
10801
832
            (_keyword = _PyPegen_expect_soft_keyword(p, "type"))  // soft_keyword='"type"'
10802
832
            &&
10803
832
            (n = _PyPegen_name_token(p))  // NAME
10804
832
            &&
10805
832
            (t = type_params_rule(p), !p->error_indicator)  // type_params?
10806
832
            &&
10807
832
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
10808
832
            &&
10809
832
            (b = expression_rule(p))  // expression
10810
832
        )
10811
662
        {
10812
662
            D(fprintf(stderr, "%*c+ type_alias[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"type\" NAME type_params? '=' expression"));
10813
662
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10814
662
            if (_token == NULL) {
10815
0
                p->level--;
10816
0
                return NULL;
10817
0
            }
10818
662
            int _end_lineno = _token->end_lineno;
10819
662
            UNUSED(_end_lineno); // Only used by EXTRA macro
10820
662
            int _end_col_offset = _token->end_col_offset;
10821
662
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10822
662
            _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
662
            if (_res == NULL && PyErr_Occurred()) {
10824
0
                p->error_indicator = 1;
10825
0
                p->level--;
10826
0
                return NULL;
10827
0
            }
10828
662
            goto done;
10829
662
        }
10830
170
        p->mark = _mark;
10831
170
        D(fprintf(stderr, "%*c%s type_alias[%d-%d]: %s failed!\n", p->level, ' ',
10832
170
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"type\" NAME type_params? '=' expression"));
10833
170
    }
10834
0
    _res = NULL;
10835
832
  done:
10836
832
    p->level--;
10837
832
    return _res;
10838
170
}
10839
10840
// type_params: invalid_type_params | '[' type_param_seq ']'
10841
static asdl_type_param_seq*
10842
type_params_rule(Parser *p)
10843
43.4k
{
10844
43.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10845
0
        _Pypegen_stack_overflow(p);
10846
0
    }
10847
43.4k
    if (p->error_indicator) {
10848
0
        p->level--;
10849
0
        return NULL;
10850
0
    }
10851
43.4k
    asdl_type_param_seq* _res = NULL;
10852
43.4k
    int _mark = p->mark;
10853
43.4k
    if (p->call_invalid_rules) { // invalid_type_params
10854
13.8k
        if (p->error_indicator) {
10855
0
            p->level--;
10856
0
            return NULL;
10857
0
        }
10858
13.8k
        D(fprintf(stderr, "%*c> type_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_type_params"));
10859
13.8k
        void *invalid_type_params_var;
10860
13.8k
        if (
10861
13.8k
            (invalid_type_params_var = invalid_type_params_rule(p))  // invalid_type_params
10862
13.8k
        )
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
13.8k
        p->mark = _mark;
10869
13.8k
        D(fprintf(stderr, "%*c%s type_params[%d-%d]: %s failed!\n", p->level, ' ',
10870
13.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_type_params"));
10871
13.8k
    }
10872
43.4k
    { // '[' type_param_seq ']'
10873
43.4k
        if (p->error_indicator) {
10874
5
            p->level--;
10875
5
            return NULL;
10876
5
        }
10877
43.4k
        D(fprintf(stderr, "%*c> type_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' type_param_seq ']'"));
10878
43.4k
        Token * _literal;
10879
43.4k
        Token * _literal_1;
10880
43.4k
        asdl_type_param_seq* t;
10881
43.4k
        if (
10882
43.4k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
10883
43.4k
            &&
10884
43.4k
            (t = type_param_seq_rule(p))  // type_param_seq
10885
43.4k
            &&
10886
43.4k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
10887
43.4k
        )
10888
12.9k
        {
10889
12.9k
            D(fprintf(stderr, "%*c+ type_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' type_param_seq ']'"));
10890
12.9k
            _res = CHECK_VERSION ( asdl_type_param_seq* , 12 , "Type parameter lists are" , t );
10891
12.9k
            if (_res == NULL && PyErr_Occurred()) {
10892
0
                p->error_indicator = 1;
10893
0
                p->level--;
10894
0
                return NULL;
10895
0
            }
10896
12.9k
            goto done;
10897
12.9k
        }
10898
30.5k
        p->mark = _mark;
10899
30.5k
        D(fprintf(stderr, "%*c%s type_params[%d-%d]: %s failed!\n", p->level, ' ',
10900
30.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' type_param_seq ']'"));
10901
30.5k
    }
10902
0
    _res = NULL;
10903
43.4k
  done:
10904
43.4k
    p->level--;
10905
43.4k
    return _res;
10906
30.5k
}
10907
10908
// type_param_seq: ','.type_param+ ','?
10909
static asdl_type_param_seq*
10910
type_param_seq_rule(Parser *p)
10911
13.1k
{
10912
13.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10913
0
        _Pypegen_stack_overflow(p);
10914
0
    }
10915
13.1k
    if (p->error_indicator) {
10916
0
        p->level--;
10917
0
        return NULL;
10918
0
    }
10919
13.1k
    asdl_type_param_seq* _res = NULL;
10920
13.1k
    int _mark = p->mark;
10921
13.1k
    { // ','.type_param+ ','?
10922
13.1k
        if (p->error_indicator) {
10923
0
            p->level--;
10924
0
            return NULL;
10925
0
        }
10926
13.1k
        D(fprintf(stderr, "%*c> type_param_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.type_param+ ','?"));
10927
13.1k
        void *_opt_var;
10928
13.1k
        UNUSED(_opt_var); // Silence compiler warnings
10929
13.1k
        asdl_type_param_seq* a;
10930
13.1k
        if (
10931
13.1k
            (a = (asdl_type_param_seq*)_gather_54_rule(p))  // ','.type_param+
10932
13.1k
            &&
10933
13.1k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10934
13.1k
        )
10935
13.0k
        {
10936
13.0k
            D(fprintf(stderr, "%*c+ type_param_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.type_param+ ','?"));
10937
13.0k
            _res = a;
10938
13.0k
            if (_res == NULL && PyErr_Occurred()) {
10939
0
                p->error_indicator = 1;
10940
0
                p->level--;
10941
0
                return NULL;
10942
0
            }
10943
13.0k
            goto done;
10944
13.0k
        }
10945
44
        p->mark = _mark;
10946
44
        D(fprintf(stderr, "%*c%s type_param_seq[%d-%d]: %s failed!\n", p->level, ' ',
10947
44
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.type_param+ ','?"));
10948
44
    }
10949
0
    _res = NULL;
10950
13.1k
  done:
10951
13.1k
    p->level--;
10952
13.1k
    return _res;
10953
44
}
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
29.6k
{
10963
29.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10964
0
        _Pypegen_stack_overflow(p);
10965
0
    }
10966
29.6k
    if (p->error_indicator) {
10967
0
        p->level--;
10968
0
        return NULL;
10969
0
    }
10970
29.6k
    type_param_ty _res = NULL;
10971
29.6k
    if (_PyPegen_is_memoized(p, type_param_type, &_res)) {
10972
6.09k
        p->level--;
10973
6.09k
        return _res;
10974
6.09k
    }
10975
23.5k
    int _mark = p->mark;
10976
23.5k
    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
23.5k
    int _start_lineno = p->tokens[_mark]->lineno;
10982
23.5k
    UNUSED(_start_lineno); // Only used by EXTRA macro
10983
23.5k
    int _start_col_offset = p->tokens[_mark]->col_offset;
10984
23.5k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
10985
23.5k
    { // NAME type_param_bound? type_param_default?
10986
23.5k
        if (p->error_indicator) {
10987
0
            p->level--;
10988
0
            return NULL;
10989
0
        }
10990
23.5k
        D(fprintf(stderr, "%*c> type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME type_param_bound? type_param_default?"));
10991
23.5k
        expr_ty a;
10992
23.5k
        void *b;
10993
23.5k
        void *c;
10994
23.5k
        if (
10995
23.5k
            (a = _PyPegen_name_token(p))  // NAME
10996
23.5k
            &&
10997
23.5k
            (b = type_param_bound_rule(p), !p->error_indicator)  // type_param_bound?
10998
23.5k
            &&
10999
23.5k
            (c = type_param_default_rule(p), !p->error_indicator)  // type_param_default?
11000
23.5k
        )
11001
16.9k
        {
11002
16.9k
            D(fprintf(stderr, "%*c+ type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME type_param_bound? type_param_default?"));
11003
16.9k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11004
16.9k
            if (_token == NULL) {
11005
0
                p->level--;
11006
0
                return NULL;
11007
0
            }
11008
16.9k
            int _end_lineno = _token->end_lineno;
11009
16.9k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11010
16.9k
            int _end_col_offset = _token->end_col_offset;
11011
16.9k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11012
16.9k
            _res = _PyAST_TypeVar ( a -> v . Name . id , b , c , EXTRA );
11013
16.9k
            if (_res == NULL && PyErr_Occurred()) {
11014
0
                p->error_indicator = 1;
11015
0
                p->level--;
11016
0
                return NULL;
11017
0
            }
11018
16.9k
            goto done;
11019
16.9k
        }
11020
6.60k
        p->mark = _mark;
11021
6.60k
        D(fprintf(stderr, "%*c%s type_param[%d-%d]: %s failed!\n", p->level, ' ',
11022
6.60k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME type_param_bound? type_param_default?"));
11023
6.60k
    }
11024
6.60k
    if (p->call_invalid_rules) { // invalid_type_param
11025
1.40k
        if (p->error_indicator) {
11026
3
            p->level--;
11027
3
            return NULL;
11028
3
        }
11029
1.39k
        D(fprintf(stderr, "%*c> type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_type_param"));
11030
1.39k
        void *invalid_type_param_var;
11031
1.39k
        if (
11032
1.39k
            (invalid_type_param_var = invalid_type_param_rule(p))  // invalid_type_param
11033
1.39k
        )
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
1.39k
        p->mark = _mark;
11040
1.39k
        D(fprintf(stderr, "%*c%s type_param[%d-%d]: %s failed!\n", p->level, ' ',
11041
1.39k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_type_param"));
11042
1.39k
    }
11043
6.59k
    { // '*' NAME type_param_starred_default?
11044
6.59k
        if (p->error_indicator) {
11045
12
            p->level--;
11046
12
            return NULL;
11047
12
        }
11048
6.58k
        D(fprintf(stderr, "%*c> type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' NAME type_param_starred_default?"));
11049
6.58k
        Token * _literal;
11050
6.58k
        expr_ty a;
11051
6.58k
        void *b;
11052
6.58k
        if (
11053
6.58k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
11054
6.58k
            &&
11055
6.58k
            (a = _PyPegen_name_token(p))  // NAME
11056
6.58k
            &&
11057
6.58k
            (b = type_param_starred_default_rule(p), !p->error_indicator)  // type_param_starred_default?
11058
6.58k
        )
11059
2.50k
        {
11060
2.50k
            D(fprintf(stderr, "%*c+ type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' NAME type_param_starred_default?"));
11061
2.50k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11062
2.50k
            if (_token == NULL) {
11063
0
                p->level--;
11064
0
                return NULL;
11065
0
            }
11066
2.50k
            int _end_lineno = _token->end_lineno;
11067
2.50k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11068
2.50k
            int _end_col_offset = _token->end_col_offset;
11069
2.50k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11070
2.50k
            _res = _PyAST_TypeVarTuple ( a -> v . Name . id , b , EXTRA );
11071
2.50k
            if (_res == NULL && PyErr_Occurred()) {
11072
0
                p->error_indicator = 1;
11073
0
                p->level--;
11074
0
                return NULL;
11075
0
            }
11076
2.50k
            goto done;
11077
2.50k
        }
11078
4.08k
        p->mark = _mark;
11079
4.08k
        D(fprintf(stderr, "%*c%s type_param[%d-%d]: %s failed!\n", p->level, ' ',
11080
4.08k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' NAME type_param_starred_default?"));
11081
4.08k
    }
11082
0
    { // '**' NAME type_param_default?
11083
4.08k
        if (p->error_indicator) {
11084
6
            p->level--;
11085
6
            return NULL;
11086
6
        }
11087
4.08k
        D(fprintf(stderr, "%*c> type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' NAME type_param_default?"));
11088
4.08k
        Token * _literal;
11089
4.08k
        expr_ty a;
11090
4.08k
        void *b;
11091
4.08k
        if (
11092
4.08k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
11093
4.08k
            &&
11094
4.08k
            (a = _PyPegen_name_token(p))  // NAME
11095
4.08k
            &&
11096
4.08k
            (b = type_param_default_rule(p), !p->error_indicator)  // type_param_default?
11097
4.08k
        )
11098
1.02k
        {
11099
1.02k
            D(fprintf(stderr, "%*c+ type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' NAME type_param_default?"));
11100
1.02k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11101
1.02k
            if (_token == NULL) {
11102
0
                p->level--;
11103
0
                return NULL;
11104
0
            }
11105
1.02k
            int _end_lineno = _token->end_lineno;
11106
1.02k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11107
1.02k
            int _end_col_offset = _token->end_col_offset;
11108
1.02k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11109
1.02k
            _res = _PyAST_ParamSpec ( a -> v . Name . id , b , EXTRA );
11110
1.02k
            if (_res == NULL && PyErr_Occurred()) {
11111
0
                p->error_indicator = 1;
11112
0
                p->level--;
11113
0
                return NULL;
11114
0
            }
11115
1.02k
            goto done;
11116
1.02k
        }
11117
3.05k
        p->mark = _mark;
11118
3.05k
        D(fprintf(stderr, "%*c%s type_param[%d-%d]: %s failed!\n", p->level, ' ',
11119
3.05k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' NAME type_param_default?"));
11120
3.05k
    }
11121
0
    _res = NULL;
11122
23.5k
  done:
11123
23.5k
    _PyPegen_insert_memo(p, _mark, type_param_type, _res);
11124
23.5k
    p->level--;
11125
23.5k
    return _res;
11126
3.05k
}
11127
11128
// type_param_bound: ':' expression
11129
static expr_ty
11130
type_param_bound_rule(Parser *p)
11131
16.9k
{
11132
16.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11133
0
        _Pypegen_stack_overflow(p);
11134
0
    }
11135
16.9k
    if (p->error_indicator) {
11136
0
        p->level--;
11137
0
        return NULL;
11138
0
    }
11139
16.9k
    expr_ty _res = NULL;
11140
16.9k
    int _mark = p->mark;
11141
16.9k
    { // ':' expression
11142
16.9k
        if (p->error_indicator) {
11143
0
            p->level--;
11144
0
            return NULL;
11145
0
        }
11146
16.9k
        D(fprintf(stderr, "%*c> type_param_bound[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression"));
11147
16.9k
        Token * _literal;
11148
16.9k
        expr_ty e;
11149
16.9k
        if (
11150
16.9k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
11151
16.9k
            &&
11152
16.9k
            (e = expression_rule(p))  // expression
11153
16.9k
        )
11154
6.15k
        {
11155
6.15k
            D(fprintf(stderr, "%*c+ type_param_bound[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression"));
11156
6.15k
            _res = e;
11157
6.15k
            if (_res == NULL && PyErr_Occurred()) {
11158
0
                p->error_indicator = 1;
11159
0
                p->level--;
11160
0
                return NULL;
11161
0
            }
11162
6.15k
            goto done;
11163
6.15k
        }
11164
10.8k
        p->mark = _mark;
11165
10.8k
        D(fprintf(stderr, "%*c%s type_param_bound[%d-%d]: %s failed!\n", p->level, ' ',
11166
10.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression"));
11167
10.8k
    }
11168
0
    _res = NULL;
11169
16.9k
  done:
11170
16.9k
    p->level--;
11171
16.9k
    return _res;
11172
10.8k
}
11173
11174
// type_param_default: '=' expression
11175
static expr_ty
11176
type_param_default_rule(Parser *p)
11177
17.9k
{
11178
17.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11179
0
        _Pypegen_stack_overflow(p);
11180
0
    }
11181
17.9k
    if (p->error_indicator) {
11182
0
        p->level--;
11183
0
        return NULL;
11184
0
    }
11185
17.9k
    expr_ty _res = NULL;
11186
17.9k
    int _mark = p->mark;
11187
17.9k
    { // '=' expression
11188
17.9k
        if (p->error_indicator) {
11189
0
            p->level--;
11190
0
            return NULL;
11191
0
        }
11192
17.9k
        D(fprintf(stderr, "%*c> type_param_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' expression"));
11193
17.9k
        Token * _literal;
11194
17.9k
        expr_ty e;
11195
17.9k
        if (
11196
17.9k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
11197
17.9k
            &&
11198
17.9k
            (e = expression_rule(p))  // expression
11199
17.9k
        )
11200
1.37k
        {
11201
1.37k
            D(fprintf(stderr, "%*c+ type_param_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' expression"));
11202
1.37k
            _res = CHECK_VERSION ( expr_ty , 13 , "Type parameter defaults are" , e );
11203
1.37k
            if (_res == NULL && PyErr_Occurred()) {
11204
0
                p->error_indicator = 1;
11205
0
                p->level--;
11206
0
                return NULL;
11207
0
            }
11208
1.37k
            goto done;
11209
1.37k
        }
11210
16.6k
        p->mark = _mark;
11211
16.6k
        D(fprintf(stderr, "%*c%s type_param_default[%d-%d]: %s failed!\n", p->level, ' ',
11212
16.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' expression"));
11213
16.6k
    }
11214
0
    _res = NULL;
11215
17.9k
  done:
11216
17.9k
    p->level--;
11217
17.9k
    return _res;
11218
16.6k
}
11219
11220
// type_param_starred_default: '=' star_expression
11221
static expr_ty
11222
type_param_starred_default_rule(Parser *p)
11223
2.50k
{
11224
2.50k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11225
0
        _Pypegen_stack_overflow(p);
11226
0
    }
11227
2.50k
    if (p->error_indicator) {
11228
0
        p->level--;
11229
0
        return NULL;
11230
0
    }
11231
2.50k
    expr_ty _res = NULL;
11232
2.50k
    int _mark = p->mark;
11233
2.50k
    { // '=' star_expression
11234
2.50k
        if (p->error_indicator) {
11235
0
            p->level--;
11236
0
            return NULL;
11237
0
        }
11238
2.50k
        D(fprintf(stderr, "%*c> type_param_starred_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' star_expression"));
11239
2.50k
        Token * _literal;
11240
2.50k
        expr_ty e;
11241
2.50k
        if (
11242
2.50k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
11243
2.50k
            &&
11244
2.50k
            (e = star_expression_rule(p))  // star_expression
11245
2.50k
        )
11246
471
        {
11247
471
            D(fprintf(stderr, "%*c+ type_param_starred_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' star_expression"));
11248
471
            _res = CHECK_VERSION ( expr_ty , 13 , "Type parameter defaults are" , e );
11249
471
            if (_res == NULL && PyErr_Occurred()) {
11250
0
                p->error_indicator = 1;
11251
0
                p->level--;
11252
0
                return NULL;
11253
0
            }
11254
471
            goto done;
11255
471
        }
11256
2.03k
        p->mark = _mark;
11257
2.03k
        D(fprintf(stderr, "%*c%s type_param_starred_default[%d-%d]: %s failed!\n", p->level, ' ',
11258
2.03k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' star_expression"));
11259
2.03k
    }
11260
0
    _res = NULL;
11261
2.50k
  done:
11262
2.50k
    p->level--;
11263
2.50k
    return _res;
11264
2.03k
}
11265
11266
// expressions: expression ((',' expression))+ ','? | expression ',' | expression
11267
static expr_ty
11268
expressions_rule(Parser *p)
11269
17.6k
{
11270
17.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11271
0
        _Pypegen_stack_overflow(p);
11272
0
    }
11273
17.6k
    if (p->error_indicator) {
11274
0
        p->level--;
11275
0
        return NULL;
11276
0
    }
11277
17.6k
    expr_ty _res = NULL;
11278
17.6k
    int _mark = p->mark;
11279
17.6k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11280
232
        p->error_indicator = 1;
11281
232
        p->level--;
11282
232
        return NULL;
11283
232
    }
11284
17.4k
    int _start_lineno = p->tokens[_mark]->lineno;
11285
17.4k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11286
17.4k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11287
17.4k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11288
17.4k
    { // expression ((',' expression))+ ','?
11289
17.4k
        if (p->error_indicator) {
11290
0
            p->level--;
11291
0
            return NULL;
11292
0
        }
11293
17.4k
        D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ((',' expression))+ ','?"));
11294
17.4k
        void *_opt_var;
11295
17.4k
        UNUSED(_opt_var); // Silence compiler warnings
11296
17.4k
        expr_ty a;
11297
17.4k
        asdl_seq * b;
11298
17.4k
        if (
11299
17.4k
            (a = expression_rule(p))  // expression
11300
17.4k
            &&
11301
17.4k
            (b = _loop1_55_rule(p))  // ((',' expression))+
11302
17.4k
            &&
11303
17.4k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
11304
17.4k
        )
11305
2.57k
        {
11306
2.57k
            D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ((',' expression))+ ','?"));
11307
2.57k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11308
2.57k
            if (_token == NULL) {
11309
0
                p->level--;
11310
0
                return NULL;
11311
0
            }
11312
2.57k
            int _end_lineno = _token->end_lineno;
11313
2.57k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11314
2.57k
            int _end_col_offset = _token->end_col_offset;
11315
2.57k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11316
2.57k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
11317
2.57k
            if (_res == NULL && PyErr_Occurred()) {
11318
0
                p->error_indicator = 1;
11319
0
                p->level--;
11320
0
                return NULL;
11321
0
            }
11322
2.57k
            goto done;
11323
2.57k
        }
11324
14.8k
        p->mark = _mark;
11325
14.8k
        D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
11326
14.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ((',' expression))+ ','?"));
11327
14.8k
    }
11328
0
    { // expression ','
11329
14.8k
        if (p->error_indicator) {
11330
898
            p->level--;
11331
898
            return NULL;
11332
898
        }
11333
13.9k
        D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ','"));
11334
13.9k
        Token * _literal;
11335
13.9k
        expr_ty a;
11336
13.9k
        if (
11337
13.9k
            (a = expression_rule(p))  // expression
11338
13.9k
            &&
11339
13.9k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
11340
13.9k
        )
11341
831
        {
11342
831
            D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ','"));
11343
831
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11344
831
            if (_token == NULL) {
11345
0
                p->level--;
11346
0
                return NULL;
11347
0
            }
11348
831
            int _end_lineno = _token->end_lineno;
11349
831
            UNUSED(_end_lineno); // Only used by EXTRA macro
11350
831
            int _end_col_offset = _token->end_col_offset;
11351
831
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11352
831
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
11353
831
            if (_res == NULL && PyErr_Occurred()) {
11354
0
                p->error_indicator = 1;
11355
0
                p->level--;
11356
0
                return NULL;
11357
0
            }
11358
831
            goto done;
11359
831
        }
11360
13.1k
        p->mark = _mark;
11361
13.1k
        D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
11362
13.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ','"));
11363
13.1k
    }
11364
0
    { // expression
11365
13.1k
        if (p->error_indicator) {
11366
0
            p->level--;
11367
0
            return NULL;
11368
0
        }
11369
13.1k
        D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
11370
13.1k
        expr_ty expression_var;
11371
13.1k
        if (
11372
13.1k
            (expression_var = expression_rule(p))  // expression
11373
13.1k
        )
11374
3.87k
        {
11375
3.87k
            D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
11376
3.87k
            _res = expression_var;
11377
3.87k
            goto done;
11378
3.87k
        }
11379
9.25k
        p->mark = _mark;
11380
9.25k
        D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
11381
9.25k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
11382
9.25k
    }
11383
0
    _res = NULL;
11384
16.5k
  done:
11385
16.5k
    p->level--;
11386
16.5k
    return _res;
11387
9.25k
}
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
3.03M
{
11398
3.03M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11399
2
        _Pypegen_stack_overflow(p);
11400
2
    }
11401
3.03M
    if (p->error_indicator) {
11402
2
        p->level--;
11403
2
        return NULL;
11404
2
    }
11405
3.03M
    expr_ty _res = NULL;
11406
3.03M
    if (_PyPegen_is_memoized(p, expression_type, &_res)) {
11407
1.73M
        p->level--;
11408
1.73M
        return _res;
11409
1.73M
    }
11410
1.29M
    int _mark = p->mark;
11411
1.29M
    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
1.29M
    int _start_lineno = p->tokens[_mark]->lineno;
11417
1.29M
    UNUSED(_start_lineno); // Only used by EXTRA macro
11418
1.29M
    int _start_col_offset = p->tokens[_mark]->col_offset;
11419
1.29M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11420
1.29M
    if (p->call_invalid_rules) { // invalid_expression
11421
331k
        if (p->error_indicator) {
11422
0
            p->level--;
11423
0
            return NULL;
11424
0
        }
11425
331k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_expression"));
11426
331k
        void *invalid_expression_var;
11427
331k
        if (
11428
331k
            (invalid_expression_var = invalid_expression_rule(p))  // invalid_expression
11429
331k
        )
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
331k
        p->mark = _mark;
11436
331k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11437
331k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_expression"));
11438
331k
    }
11439
1.29M
    if (p->call_invalid_rules) { // invalid_legacy_expression
11440
331k
        if (p->error_indicator) {
11441
33.0k
            p->level--;
11442
33.0k
            return NULL;
11443
33.0k
        }
11444
298k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_legacy_expression"));
11445
298k
        void *invalid_legacy_expression_var;
11446
298k
        if (
11447
298k
            (invalid_legacy_expression_var = invalid_legacy_expression_rule(p))  // invalid_legacy_expression
11448
298k
        )
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
298k
        p->mark = _mark;
11455
298k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11456
298k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_legacy_expression"));
11457
298k
    }
11458
1.26M
    { // disjunction 'if' disjunction 'else' expression
11459
1.26M
        if (p->error_indicator) {
11460
1.77k
            p->level--;
11461
1.77k
            return NULL;
11462
1.77k
        }
11463
1.26M
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
11464
1.26M
        Token * _keyword;
11465
1.26M
        Token * _keyword_1;
11466
1.26M
        expr_ty a;
11467
1.26M
        expr_ty b;
11468
1.26M
        expr_ty c;
11469
1.26M
        if (
11470
1.26M
            (a = disjunction_rule(p))  // disjunction
11471
1.26M
            &&
11472
1.26M
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
11473
1.26M
            &&
11474
1.26M
            (b = disjunction_rule(p))  // disjunction
11475
1.26M
            &&
11476
1.26M
            (_keyword_1 = _PyPegen_expect_token(p, 691))  // token='else'
11477
1.26M
            &&
11478
1.26M
            (c = expression_rule(p))  // expression
11479
1.26M
        )
11480
1.78k
        {
11481
1.78k
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
11482
1.78k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11483
1.78k
            if (_token == NULL) {
11484
0
                p->level--;
11485
0
                return NULL;
11486
0
            }
11487
1.78k
            int _end_lineno = _token->end_lineno;
11488
1.78k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11489
1.78k
            int _end_col_offset = _token->end_col_offset;
11490
1.78k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11491
1.78k
            _res = _PyAST_IfExp ( b , a , c , EXTRA );
11492
1.78k
            if (_res == NULL && PyErr_Occurred()) {
11493
0
                p->error_indicator = 1;
11494
0
                p->level--;
11495
0
                return NULL;
11496
0
            }
11497
1.78k
            goto done;
11498
1.78k
        }
11499
1.26M
        p->mark = _mark;
11500
1.26M
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11501
1.26M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
11502
1.26M
    }
11503
0
    { // disjunction
11504
1.26M
        if (p->error_indicator) {
11505
10.1k
            p->level--;
11506
10.1k
            return NULL;
11507
10.1k
        }
11508
1.25M
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction"));
11509
1.25M
        expr_ty disjunction_var;
11510
1.25M
        if (
11511
1.25M
            (disjunction_var = disjunction_rule(p))  // disjunction
11512
1.25M
        )
11513
878k
        {
11514
878k
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction"));
11515
878k
            _res = disjunction_var;
11516
878k
            goto done;
11517
878k
        }
11518
372k
        p->mark = _mark;
11519
372k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11520
372k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction"));
11521
372k
    }
11522
0
    { // lambdef
11523
372k
        if (p->error_indicator) {
11524
0
            p->level--;
11525
0
            return NULL;
11526
0
        }
11527
372k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambdef"));
11528
372k
        expr_ty lambdef_var;
11529
372k
        if (
11530
372k
            (lambdef_var = lambdef_rule(p))  // lambdef
11531
372k
        )
11532
14.2k
        {
11533
14.2k
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambdef"));
11534
14.2k
            _res = lambdef_var;
11535
14.2k
            goto done;
11536
14.2k
        }
11537
357k
        p->mark = _mark;
11538
357k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11539
357k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambdef"));
11540
357k
    }
11541
0
    _res = NULL;
11542
1.25M
  done:
11543
1.25M
    _PyPegen_insert_memo(p, _mark, expression_type, _res);
11544
1.25M
    p->level--;
11545
1.25M
    return _res;
11546
357k
}
11547
11548
// yield_expr: 'yield' 'from' expression | 'yield' star_expressions?
11549
static expr_ty
11550
yield_expr_rule(Parser *p)
11551
166k
{
11552
166k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11553
1
        _Pypegen_stack_overflow(p);
11554
1
    }
11555
166k
    if (p->error_indicator) {
11556
1
        p->level--;
11557
1
        return NULL;
11558
1
    }
11559
166k
    expr_ty _res = NULL;
11560
166k
    int _mark = p->mark;
11561
166k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11562
50
        p->error_indicator = 1;
11563
50
        p->level--;
11564
50
        return NULL;
11565
50
    }
11566
166k
    int _start_lineno = p->tokens[_mark]->lineno;
11567
166k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11568
166k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11569
166k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11570
166k
    { // 'yield' 'from' expression
11571
166k
        if (p->error_indicator) {
11572
0
            p->level--;
11573
0
            return NULL;
11574
0
        }
11575
166k
        D(fprintf(stderr, "%*c> yield_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'yield' 'from' expression"));
11576
166k
        Token * _keyword;
11577
166k
        Token * _keyword_1;
11578
166k
        expr_ty a;
11579
166k
        if (
11580
166k
            (_keyword = _PyPegen_expect_token(p, 588))  // token='yield'
11581
166k
            &&
11582
166k
            (_keyword_1 = _PyPegen_expect_token(p, 638))  // token='from'
11583
166k
            &&
11584
166k
            (a = expression_rule(p))  // expression
11585
166k
        )
11586
68
        {
11587
68
            D(fprintf(stderr, "%*c+ yield_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'yield' 'from' expression"));
11588
68
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11589
68
            if (_token == NULL) {
11590
0
                p->level--;
11591
0
                return NULL;
11592
0
            }
11593
68
            int _end_lineno = _token->end_lineno;
11594
68
            UNUSED(_end_lineno); // Only used by EXTRA macro
11595
68
            int _end_col_offset = _token->end_col_offset;
11596
68
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11597
68
            _res = _PyAST_YieldFrom ( a , EXTRA );
11598
68
            if (_res == NULL && PyErr_Occurred()) {
11599
0
                p->error_indicator = 1;
11600
0
                p->level--;
11601
0
                return NULL;
11602
0
            }
11603
68
            goto done;
11604
68
        }
11605
166k
        p->mark = _mark;
11606
166k
        D(fprintf(stderr, "%*c%s yield_expr[%d-%d]: %s failed!\n", p->level, ' ',
11607
166k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'yield' 'from' expression"));
11608
166k
    }
11609
0
    { // 'yield' star_expressions?
11610
166k
        if (p->error_indicator) {
11611
111
            p->level--;
11612
111
            return NULL;
11613
111
        }
11614
166k
        D(fprintf(stderr, "%*c> yield_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'yield' star_expressions?"));
11615
166k
        Token * _keyword;
11616
166k
        void *a;
11617
166k
        if (
11618
166k
            (_keyword = _PyPegen_expect_token(p, 588))  // token='yield'
11619
166k
            &&
11620
166k
            (a = star_expressions_rule(p), !p->error_indicator)  // star_expressions?
11621
166k
        )
11622
2.94k
        {
11623
2.94k
            D(fprintf(stderr, "%*c+ yield_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'yield' star_expressions?"));
11624
2.94k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11625
2.94k
            if (_token == NULL) {
11626
0
                p->level--;
11627
0
                return NULL;
11628
0
            }
11629
2.94k
            int _end_lineno = _token->end_lineno;
11630
2.94k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11631
2.94k
            int _end_col_offset = _token->end_col_offset;
11632
2.94k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11633
2.94k
            _res = _PyAST_Yield ( a , EXTRA );
11634
2.94k
            if (_res == NULL && PyErr_Occurred()) {
11635
0
                p->error_indicator = 1;
11636
0
                p->level--;
11637
0
                return NULL;
11638
0
            }
11639
2.94k
            goto done;
11640
2.94k
        }
11641
163k
        p->mark = _mark;
11642
163k
        D(fprintf(stderr, "%*c%s yield_expr[%d-%d]: %s failed!\n", p->level, ' ',
11643
163k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'yield' star_expressions?"));
11644
163k
    }
11645
0
    _res = NULL;
11646
166k
  done:
11647
166k
    p->level--;
11648
166k
    return _res;
11649
163k
}
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
575k
{
11658
575k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11659
0
        _Pypegen_stack_overflow(p);
11660
0
    }
11661
575k
    if (p->error_indicator) {
11662
0
        p->level--;
11663
0
        return NULL;
11664
0
    }
11665
575k
    expr_ty _res = NULL;
11666
575k
    int _mark = p->mark;
11667
575k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11668
3
        p->error_indicator = 1;
11669
3
        p->level--;
11670
3
        return NULL;
11671
3
    }
11672
575k
    int _start_lineno = p->tokens[_mark]->lineno;
11673
575k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11674
575k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11675
575k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11676
575k
    { // star_expression ((',' star_expression))+ ','?
11677
575k
        if (p->error_indicator) {
11678
0
            p->level--;
11679
0
            return NULL;
11680
0
        }
11681
575k
        D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
11682
575k
        void *_opt_var;
11683
575k
        UNUSED(_opt_var); // Silence compiler warnings
11684
575k
        expr_ty a;
11685
575k
        asdl_seq * b;
11686
575k
        if (
11687
575k
            (a = star_expression_rule(p))  // star_expression
11688
575k
            &&
11689
575k
            (b = _loop1_56_rule(p))  // ((',' star_expression))+
11690
575k
            &&
11691
575k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
11692
575k
        )
11693
30.1k
        {
11694
30.1k
            D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
11695
30.1k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11696
30.1k
            if (_token == NULL) {
11697
0
                p->level--;
11698
0
                return NULL;
11699
0
            }
11700
30.1k
            int _end_lineno = _token->end_lineno;
11701
30.1k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11702
30.1k
            int _end_col_offset = _token->end_col_offset;
11703
30.1k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11704
30.1k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
11705
30.1k
            if (_res == NULL && PyErr_Occurred()) {
11706
0
                p->error_indicator = 1;
11707
0
                p->level--;
11708
0
                return NULL;
11709
0
            }
11710
30.1k
            goto done;
11711
30.1k
        }
11712
545k
        p->mark = _mark;
11713
545k
        D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
11714
545k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
11715
545k
    }
11716
0
    { // star_expression ','
11717
545k
        if (p->error_indicator) {
11718
5.57k
            p->level--;
11719
5.57k
            return NULL;
11720
5.57k
        }
11721
540k
        D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression ','"));
11722
540k
        Token * _literal;
11723
540k
        expr_ty a;
11724
540k
        if (
11725
540k
            (a = star_expression_rule(p))  // star_expression
11726
540k
            &&
11727
540k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
11728
540k
        )
11729
4.90k
        {
11730
4.90k
            D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression ','"));
11731
4.90k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11732
4.90k
            if (_token == NULL) {
11733
0
                p->level--;
11734
0
                return NULL;
11735
0
            }
11736
4.90k
            int _end_lineno = _token->end_lineno;
11737
4.90k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11738
4.90k
            int _end_col_offset = _token->end_col_offset;
11739
4.90k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11740
4.90k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
11741
4.90k
            if (_res == NULL && PyErr_Occurred()) {
11742
0
                p->error_indicator = 1;
11743
0
                p->level--;
11744
0
                return NULL;
11745
0
            }
11746
4.90k
            goto done;
11747
4.90k
        }
11748
535k
        p->mark = _mark;
11749
535k
        D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
11750
535k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression ','"));
11751
535k
    }
11752
0
    { // star_expression
11753
535k
        if (p->error_indicator) {
11754
0
            p->level--;
11755
0
            return NULL;
11756
0
        }
11757
535k
        D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression"));
11758
535k
        expr_ty star_expression_var;
11759
535k
        if (
11760
535k
            (star_expression_var = star_expression_rule(p))  // star_expression
11761
535k
        )
11762
325k
        {
11763
325k
            D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression"));
11764
325k
            _res = star_expression_var;
11765
325k
            goto done;
11766
325k
        }
11767
209k
        p->mark = _mark;
11768
209k
        D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
11769
209k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression"));
11770
209k
    }
11771
0
    _res = NULL;
11772
570k
  done:
11773
570k
    p->level--;
11774
570k
    return _res;
11775
209k
}
11776
11777
// star_expression: '*' bitwise_or | expression
11778
static expr_ty
11779
star_expression_rule(Parser *p)
11780
2.20M
{
11781
2.20M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11782
1
        _Pypegen_stack_overflow(p);
11783
1
    }
11784
2.20M
    if (p->error_indicator) {
11785
1
        p->level--;
11786
1
        return NULL;
11787
1
    }
11788
2.20M
    expr_ty _res = NULL;
11789
2.20M
    if (_PyPegen_is_memoized(p, star_expression_type, &_res)) {
11790
1.64M
        p->level--;
11791
1.64M
        return _res;
11792
1.64M
    }
11793
563k
    int _mark = p->mark;
11794
563k
    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
563k
    int _start_lineno = p->tokens[_mark]->lineno;
11800
563k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11801
563k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11802
563k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11803
563k
    { // '*' bitwise_or
11804
563k
        if (p->error_indicator) {
11805
0
            p->level--;
11806
0
            return NULL;
11807
0
        }
11808
563k
        D(fprintf(stderr, "%*c> star_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
11809
563k
        Token * _literal;
11810
563k
        expr_ty a;
11811
563k
        if (
11812
563k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
11813
563k
            &&
11814
563k
            (a = bitwise_or_rule(p))  // bitwise_or
11815
563k
        )
11816
10.6k
        {
11817
10.6k
            D(fprintf(stderr, "%*c+ star_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
11818
10.6k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11819
10.6k
            if (_token == NULL) {
11820
0
                p->level--;
11821
0
                return NULL;
11822
0
            }
11823
10.6k
            int _end_lineno = _token->end_lineno;
11824
10.6k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11825
10.6k
            int _end_col_offset = _token->end_col_offset;
11826
10.6k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11827
10.6k
            _res = _PyAST_Starred ( a , Load , EXTRA );
11828
10.6k
            if (_res == NULL && PyErr_Occurred()) {
11829
0
                p->error_indicator = 1;
11830
0
                p->level--;
11831
0
                return NULL;
11832
0
            }
11833
10.6k
            goto done;
11834
10.6k
        }
11835
552k
        p->mark = _mark;
11836
552k
        D(fprintf(stderr, "%*c%s star_expression[%d-%d]: %s failed!\n", p->level, ' ',
11837
552k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' bitwise_or"));
11838
552k
    }
11839
0
    { // expression
11840
552k
        if (p->error_indicator) {
11841
253
            p->level--;
11842
253
            return NULL;
11843
253
        }
11844
552k
        D(fprintf(stderr, "%*c> star_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
11845
552k
        expr_ty expression_var;
11846
552k
        if (
11847
552k
            (expression_var = expression_rule(p))  // expression
11848
552k
        )
11849
367k
        {
11850
367k
            D(fprintf(stderr, "%*c+ star_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
11851
367k
            _res = expression_var;
11852
367k
            goto done;
11853
367k
        }
11854
184k
        p->mark = _mark;
11855
184k
        D(fprintf(stderr, "%*c%s star_expression[%d-%d]: %s failed!\n", p->level, ' ',
11856
184k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
11857
184k
    }
11858
0
    _res = NULL;
11859
562k
  done:
11860
562k
    _PyPegen_insert_memo(p, _mark, star_expression_type, _res);
11861
562k
    p->level--;
11862
562k
    return _res;
11863
184k
}
11864
11865
// star_named_expressions: ','.star_named_expression+ ','?
11866
static asdl_expr_seq*
11867
star_named_expressions_rule(Parser *p)
11868
255k
{
11869
255k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11870
1
        _Pypegen_stack_overflow(p);
11871
1
    }
11872
255k
    if (p->error_indicator) {
11873
1
        p->level--;
11874
1
        return NULL;
11875
1
    }
11876
255k
    asdl_expr_seq* _res = NULL;
11877
255k
    int _mark = p->mark;
11878
255k
    { // ','.star_named_expression+ ','?
11879
255k
        if (p->error_indicator) {
11880
0
            p->level--;
11881
0
            return NULL;
11882
0
        }
11883
255k
        D(fprintf(stderr, "%*c> star_named_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.star_named_expression+ ','?"));
11884
255k
        void *_opt_var;
11885
255k
        UNUSED(_opt_var); // Silence compiler warnings
11886
255k
        asdl_expr_seq* a;
11887
255k
        if (
11888
255k
            (a = (asdl_expr_seq*)_gather_58_rule(p))  // ','.star_named_expression+
11889
255k
            &&
11890
255k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
11891
255k
        )
11892
151k
        {
11893
151k
            D(fprintf(stderr, "%*c+ star_named_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_named_expression+ ','?"));
11894
151k
            _res = a;
11895
151k
            if (_res == NULL && PyErr_Occurred()) {
11896
0
                p->error_indicator = 1;
11897
0
                p->level--;
11898
0
                return NULL;
11899
0
            }
11900
151k
            goto done;
11901
151k
        }
11902
103k
        p->mark = _mark;
11903
103k
        D(fprintf(stderr, "%*c%s star_named_expressions[%d-%d]: %s failed!\n", p->level, ' ',
11904
103k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.star_named_expression+ ','?"));
11905
103k
    }
11906
0
    _res = NULL;
11907
255k
  done:
11908
255k
    p->level--;
11909
255k
    return _res;
11910
103k
}
11911
11912
// star_named_expression: '*' bitwise_or | named_expression
11913
static expr_ty
11914
star_named_expression_rule(Parser *p)
11915
820k
{
11916
820k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11917
1
        _Pypegen_stack_overflow(p);
11918
1
    }
11919
820k
    if (p->error_indicator) {
11920
1
        p->level--;
11921
1
        return NULL;
11922
1
    }
11923
820k
    expr_ty _res = NULL;
11924
820k
    int _mark = p->mark;
11925
820k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11926
136
        p->error_indicator = 1;
11927
136
        p->level--;
11928
136
        return NULL;
11929
136
    }
11930
820k
    int _start_lineno = p->tokens[_mark]->lineno;
11931
820k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11932
820k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11933
820k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11934
820k
    { // '*' bitwise_or
11935
820k
        if (p->error_indicator) {
11936
0
            p->level--;
11937
0
            return NULL;
11938
0
        }
11939
820k
        D(fprintf(stderr, "%*c> star_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
11940
820k
        Token * _literal;
11941
820k
        expr_ty a;
11942
820k
        if (
11943
820k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
11944
820k
            &&
11945
820k
            (a = bitwise_or_rule(p))  // bitwise_or
11946
820k
        )
11947
11.6k
        {
11948
11.6k
            D(fprintf(stderr, "%*c+ star_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
11949
11.6k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11950
11.6k
            if (_token == NULL) {
11951
0
                p->level--;
11952
0
                return NULL;
11953
0
            }
11954
11.6k
            int _end_lineno = _token->end_lineno;
11955
11.6k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11956
11.6k
            int _end_col_offset = _token->end_col_offset;
11957
11.6k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11958
11.6k
            _res = _PyAST_Starred ( a , Load , EXTRA );
11959
11.6k
            if (_res == NULL && PyErr_Occurred()) {
11960
0
                p->error_indicator = 1;
11961
0
                p->level--;
11962
0
                return NULL;
11963
0
            }
11964
11.6k
            goto done;
11965
11.6k
        }
11966
808k
        p->mark = _mark;
11967
808k
        D(fprintf(stderr, "%*c%s star_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
11968
808k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' bitwise_or"));
11969
808k
    }
11970
0
    { // named_expression
11971
808k
        if (p->error_indicator) {
11972
551
            p->level--;
11973
551
            return NULL;
11974
551
        }
11975
808k
        D(fprintf(stderr, "%*c> star_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
11976
808k
        expr_ty named_expression_var;
11977
808k
        if (
11978
808k
            (named_expression_var = named_expression_rule(p))  // named_expression
11979
808k
        )
11980
583k
        {
11981
583k
            D(fprintf(stderr, "%*c+ star_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
11982
583k
            _res = named_expression_var;
11983
583k
            goto done;
11984
583k
        }
11985
224k
        p->mark = _mark;
11986
224k
        D(fprintf(stderr, "%*c%s star_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
11987
224k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
11988
224k
    }
11989
0
    _res = NULL;
11990
819k
  done:
11991
819k
    p->level--;
11992
819k
    return _res;
11993
224k
}
11994
11995
// assignment_expression: NAME ':=' ~ expression
11996
static expr_ty
11997
assignment_expression_rule(Parser *p)
11998
1.24M
{
11999
1.24M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12000
1
        _Pypegen_stack_overflow(p);
12001
1
    }
12002
1.24M
    if (p->error_indicator) {
12003
1
        p->level--;
12004
1
        return NULL;
12005
1
    }
12006
1.24M
    expr_ty _res = NULL;
12007
1.24M
    int _mark = p->mark;
12008
1.24M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12009
58
        p->error_indicator = 1;
12010
58
        p->level--;
12011
58
        return NULL;
12012
58
    }
12013
1.24M
    int _start_lineno = p->tokens[_mark]->lineno;
12014
1.24M
    UNUSED(_start_lineno); // Only used by EXTRA macro
12015
1.24M
    int _start_col_offset = p->tokens[_mark]->col_offset;
12016
1.24M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12017
1.24M
    { // NAME ':=' ~ expression
12018
1.24M
        if (p->error_indicator) {
12019
0
            p->level--;
12020
0
            return NULL;
12021
0
        }
12022
1.24M
        D(fprintf(stderr, "%*c> assignment_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ':=' ~ expression"));
12023
1.24M
        int _cut_var = 0;
12024
1.24M
        Token * _literal;
12025
1.24M
        expr_ty a;
12026
1.24M
        expr_ty b;
12027
1.24M
        if (
12028
1.24M
            (a = _PyPegen_name_token(p))  // NAME
12029
1.24M
            &&
12030
1.24M
            (_literal = _PyPegen_expect_token(p, 53))  // token=':='
12031
1.24M
            &&
12032
1.24M
            (_cut_var = 1)
12033
1.24M
            &&
12034
1.24M
            (b = expression_rule(p))  // expression
12035
1.24M
        )
12036
4.31k
        {
12037
4.31k
            D(fprintf(stderr, "%*c+ assignment_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ':=' ~ expression"));
12038
4.31k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12039
4.31k
            if (_token == NULL) {
12040
0
                p->level--;
12041
0
                return NULL;
12042
0
            }
12043
4.31k
            int _end_lineno = _token->end_lineno;
12044
4.31k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12045
4.31k
            int _end_col_offset = _token->end_col_offset;
12046
4.31k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12047
4.31k
            _res = CHECK_VERSION ( expr_ty , 8 , "Assignment expressions are" , _PyAST_NamedExpr ( CHECK ( expr_ty , _PyPegen_set_expr_context ( p , a , Store ) ) , b , EXTRA ) );
12048
4.31k
            if (_res == NULL && PyErr_Occurred()) {
12049
0
                p->error_indicator = 1;
12050
0
                p->level--;
12051
0
                return NULL;
12052
0
            }
12053
4.31k
            goto done;
12054
4.31k
        }
12055
1.23M
        p->mark = _mark;
12056
1.23M
        D(fprintf(stderr, "%*c%s assignment_expression[%d-%d]: %s failed!\n", p->level, ' ',
12057
1.23M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ':=' ~ expression"));
12058
1.23M
        if (_cut_var) {
12059
1.86k
            p->level--;
12060
1.86k
            return NULL;
12061
1.86k
        }
12062
1.23M
    }
12063
1.23M
    _res = NULL;
12064
1.24M
  done:
12065
1.24M
    p->level--;
12066
1.24M
    return _res;
12067
1.23M
}
12068
12069
// named_expression: assignment_expression | invalid_named_expression | expression !':='
12070
static expr_ty
12071
named_expression_rule(Parser *p)
12072
1.00M
{
12073
1.00M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12074
1
        _Pypegen_stack_overflow(p);
12075
1
    }
12076
1.00M
    if (p->error_indicator) {
12077
1
        p->level--;
12078
1
        return NULL;
12079
1
    }
12080
1.00M
    expr_ty _res = NULL;
12081
1.00M
    int _mark = p->mark;
12082
1.00M
    { // assignment_expression
12083
1.00M
        if (p->error_indicator) {
12084
0
            p->level--;
12085
0
            return NULL;
12086
0
        }
12087
1.00M
        D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
12088
1.00M
        expr_ty assignment_expression_var;
12089
1.00M
        if (
12090
1.00M
            (assignment_expression_var = assignment_expression_rule(p))  // assignment_expression
12091
1.00M
        )
12092
3.89k
        {
12093
3.89k
            D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
12094
3.89k
            _res = assignment_expression_var;
12095
3.89k
            goto done;
12096
3.89k
        }
12097
1.00M
        p->mark = _mark;
12098
1.00M
        D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
12099
1.00M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression"));
12100
1.00M
    }
12101
1.00M
    if (p->call_invalid_rules) { // invalid_named_expression
12102
302k
        if (p->error_indicator) {
12103
398
            p->level--;
12104
398
            return NULL;
12105
398
        }
12106
302k
        D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_named_expression"));
12107
302k
        void *invalid_named_expression_var;
12108
302k
        if (
12109
302k
            (invalid_named_expression_var = invalid_named_expression_rule(p))  // invalid_named_expression
12110
302k
        )
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
302k
        p->mark = _mark;
12117
302k
        D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
12118
302k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_named_expression"));
12119
302k
    }
12120
1.00M
    { // expression !':='
12121
1.00M
        if (p->error_indicator) {
12122
15.7k
            p->level--;
12123
15.7k
            return NULL;
12124
15.7k
        }
12125
987k
        D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
12126
987k
        expr_ty expression_var;
12127
987k
        if (
12128
987k
            (expression_var = expression_rule(p))  // expression
12129
987k
            &&
12130
987k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53)  // token=':='
12131
987k
        )
12132
722k
        {
12133
722k
            D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='"));
12134
722k
            _res = expression_var;
12135
722k
            goto done;
12136
722k
        }
12137
264k
        p->mark = _mark;
12138
264k
        D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
12139
264k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
12140
264k
    }
12141
0
    _res = NULL;
12142
990k
  done:
12143
990k
    p->level--;
12144
990k
    return _res;
12145
264k
}
12146
12147
// disjunction: conjunction (('or' conjunction))+ | conjunction
12148
static expr_ty
12149
disjunction_rule(Parser *p)
12150
3.77M
{
12151
3.77M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12152
2
        _Pypegen_stack_overflow(p);
12153
2
    }
12154
3.77M
    if (p->error_indicator) {
12155
34
        p->level--;
12156
34
        return NULL;
12157
34
    }
12158
3.77M
    expr_ty _res = NULL;
12159
3.77M
    if (_PyPegen_is_memoized(p, disjunction_type, &_res)) {
12160
2.40M
        p->level--;
12161
2.40M
        return _res;
12162
2.40M
    }
12163
1.37M
    int _mark = p->mark;
12164
1.37M
    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
1.37M
    int _start_lineno = p->tokens[_mark]->lineno;
12170
1.37M
    UNUSED(_start_lineno); // Only used by EXTRA macro
12171
1.37M
    int _start_col_offset = p->tokens[_mark]->col_offset;
12172
1.37M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12173
1.37M
    { // conjunction (('or' conjunction))+
12174
1.37M
        if (p->error_indicator) {
12175
0
            p->level--;
12176
0
            return NULL;
12177
0
        }
12178
1.37M
        D(fprintf(stderr, "%*c> disjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "conjunction (('or' conjunction))+"));
12179
1.37M
        expr_ty a;
12180
1.37M
        asdl_seq * b;
12181
1.37M
        if (
12182
1.37M
            (a = conjunction_rule(p))  // conjunction
12183
1.37M
            &&
12184
1.37M
            (b = _loop1_59_rule(p))  // (('or' conjunction))+
12185
1.37M
        )
12186
2.88k
        {
12187
2.88k
            D(fprintf(stderr, "%*c+ disjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "conjunction (('or' conjunction))+"));
12188
2.88k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12189
2.88k
            if (_token == NULL) {
12190
0
                p->level--;
12191
0
                return NULL;
12192
0
            }
12193
2.88k
            int _end_lineno = _token->end_lineno;
12194
2.88k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12195
2.88k
            int _end_col_offset = _token->end_col_offset;
12196
2.88k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12197
2.88k
            _res = _PyAST_BoolOp ( Or , CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
12198
2.88k
            if (_res == NULL && PyErr_Occurred()) {
12199
0
                p->error_indicator = 1;
12200
0
                p->level--;
12201
0
                return NULL;
12202
0
            }
12203
2.88k
            goto done;
12204
2.88k
        }
12205
1.37M
        p->mark = _mark;
12206
1.37M
        D(fprintf(stderr, "%*c%s disjunction[%d-%d]: %s failed!\n", p->level, ' ',
12207
1.37M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "conjunction (('or' conjunction))+"));
12208
1.37M
    }
12209
0
    { // conjunction
12210
1.37M
        if (p->error_indicator) {
12211
42.3k
            p->level--;
12212
42.3k
            return NULL;
12213
42.3k
        }
12214
1.32M
        D(fprintf(stderr, "%*c> disjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "conjunction"));
12215
1.32M
        expr_ty conjunction_var;
12216
1.32M
        if (
12217
1.32M
            (conjunction_var = conjunction_rule(p))  // conjunction
12218
1.32M
        )
12219
904k
        {
12220
904k
            D(fprintf(stderr, "%*c+ disjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "conjunction"));
12221
904k
            _res = conjunction_var;
12222
904k
            goto done;
12223
904k
        }
12224
423k
        p->mark = _mark;
12225
423k
        D(fprintf(stderr, "%*c%s disjunction[%d-%d]: %s failed!\n", p->level, ' ',
12226
423k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "conjunction"));
12227
423k
    }
12228
0
    _res = NULL;
12229
1.33M
  done:
12230
1.33M
    _PyPegen_insert_memo(p, _mark, disjunction_type, _res);
12231
1.33M
    p->level--;
12232
1.33M
    return _res;
12233
423k
}
12234
12235
// conjunction: inversion (('and' inversion))+ | inversion
12236
static expr_ty
12237
conjunction_rule(Parser *p)
12238
2.70M
{
12239
2.70M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12240
1
        _Pypegen_stack_overflow(p);
12241
1
    }
12242
2.70M
    if (p->error_indicator) {
12243
1
        p->level--;
12244
1
        return NULL;
12245
1
    }
12246
2.70M
    expr_ty _res = NULL;
12247
2.70M
    if (_PyPegen_is_memoized(p, conjunction_type, &_res)) {
12248
1.32M
        p->level--;
12249
1.32M
        return _res;
12250
1.32M
    }
12251
1.37M
    int _mark = p->mark;
12252
1.37M
    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
1.37M
    int _start_lineno = p->tokens[_mark]->lineno;
12258
1.37M
    UNUSED(_start_lineno); // Only used by EXTRA macro
12259
1.37M
    int _start_col_offset = p->tokens[_mark]->col_offset;
12260
1.37M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12261
1.37M
    { // inversion (('and' inversion))+
12262
1.37M
        if (p->error_indicator) {
12263
0
            p->level--;
12264
0
            return NULL;
12265
0
        }
12266
1.37M
        D(fprintf(stderr, "%*c> conjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "inversion (('and' inversion))+"));
12267
1.37M
        expr_ty a;
12268
1.37M
        asdl_seq * b;
12269
1.37M
        if (
12270
1.37M
            (a = inversion_rule(p))  // inversion
12271
1.37M
            &&
12272
1.37M
            (b = _loop1_60_rule(p))  // (('and' inversion))+
12273
1.37M
        )
12274
1.63k
        {
12275
1.63k
            D(fprintf(stderr, "%*c+ conjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "inversion (('and' inversion))+"));
12276
1.63k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12277
1.63k
            if (_token == NULL) {
12278
0
                p->level--;
12279
0
                return NULL;
12280
0
            }
12281
1.63k
            int _end_lineno = _token->end_lineno;
12282
1.63k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12283
1.63k
            int _end_col_offset = _token->end_col_offset;
12284
1.63k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12285
1.63k
            _res = _PyAST_BoolOp ( And , CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
12286
1.63k
            if (_res == NULL && PyErr_Occurred()) {
12287
0
                p->error_indicator = 1;
12288
0
                p->level--;
12289
0
                return NULL;
12290
0
            }
12291
1.63k
            goto done;
12292
1.63k
        }
12293
1.37M
        p->mark = _mark;
12294
1.37M
        D(fprintf(stderr, "%*c%s conjunction[%d-%d]: %s failed!\n", p->level, ' ',
12295
1.37M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "inversion (('and' inversion))+"));
12296
1.37M
    }
12297
0
    { // inversion
12298
1.37M
        if (p->error_indicator) {
12299
42.3k
            p->level--;
12300
42.3k
            return NULL;
12301
42.3k
        }
12302
1.33M
        D(fprintf(stderr, "%*c> conjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "inversion"));
12303
1.33M
        expr_ty inversion_var;
12304
1.33M
        if (
12305
1.33M
            (inversion_var = inversion_rule(p))  // inversion
12306
1.33M
        )
12307
912k
        {
12308
912k
            D(fprintf(stderr, "%*c+ conjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "inversion"));
12309
912k
            _res = inversion_var;
12310
912k
            goto done;
12311
912k
        }
12312
423k
        p->mark = _mark;
12313
423k
        D(fprintf(stderr, "%*c%s conjunction[%d-%d]: %s failed!\n", p->level, ' ',
12314
423k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "inversion"));
12315
423k
    }
12316
0
    _res = NULL;
12317
1.33M
  done:
12318
1.33M
    _PyPegen_insert_memo(p, _mark, conjunction_type, _res);
12319
1.33M
    p->level--;
12320
1.33M
    return _res;
12321
423k
}
12322
12323
// inversion: 'not' inversion | comparison
12324
static expr_ty
12325
inversion_rule(Parser *p)
12326
2.72M
{
12327
2.72M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12328
2
        _Pypegen_stack_overflow(p);
12329
2
    }
12330
2.72M
    if (p->error_indicator) {
12331
2
        p->level--;
12332
2
        return NULL;
12333
2
    }
12334
2.72M
    expr_ty _res = NULL;
12335
2.72M
    if (_PyPegen_is_memoized(p, inversion_type, &_res)) {
12336
1.33M
        p->level--;
12337
1.33M
        return _res;
12338
1.33M
    }
12339
1.38M
    int _mark = p->mark;
12340
1.38M
    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
1.38M
    int _start_lineno = p->tokens[_mark]->lineno;
12346
1.38M
    UNUSED(_start_lineno); // Only used by EXTRA macro
12347
1.38M
    int _start_col_offset = p->tokens[_mark]->col_offset;
12348
1.38M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12349
1.38M
    { // 'not' inversion
12350
1.38M
        if (p->error_indicator) {
12351
0
            p->level--;
12352
0
            return NULL;
12353
0
        }
12354
1.38M
        D(fprintf(stderr, "%*c> inversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'not' inversion"));
12355
1.38M
        Token * _keyword;
12356
1.38M
        expr_ty a;
12357
1.38M
        if (
12358
1.38M
            (_keyword = _PyPegen_expect_token(p, 708))  // token='not'
12359
1.38M
            &&
12360
1.38M
            (a = inversion_rule(p))  // inversion
12361
1.38M
        )
12362
2.85k
        {
12363
2.85k
            D(fprintf(stderr, "%*c+ inversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'not' inversion"));
12364
2.85k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12365
2.85k
            if (_token == NULL) {
12366
0
                p->level--;
12367
0
                return NULL;
12368
0
            }
12369
2.85k
            int _end_lineno = _token->end_lineno;
12370
2.85k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12371
2.85k
            int _end_col_offset = _token->end_col_offset;
12372
2.85k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12373
2.85k
            _res = _PyAST_UnaryOp ( Not , a , EXTRA );
12374
2.85k
            if (_res == NULL && PyErr_Occurred()) {
12375
0
                p->error_indicator = 1;
12376
0
                p->level--;
12377
0
                return NULL;
12378
0
            }
12379
2.85k
            goto done;
12380
2.85k
        }
12381
1.38M
        p->mark = _mark;
12382
1.38M
        D(fprintf(stderr, "%*c%s inversion[%d-%d]: %s failed!\n", p->level, ' ',
12383
1.38M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'not' inversion"));
12384
1.38M
    }
12385
0
    { // comparison
12386
1.38M
        if (p->error_indicator) {
12387
303
            p->level--;
12388
303
            return NULL;
12389
303
        }
12390
1.38M
        D(fprintf(stderr, "%*c> inversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "comparison"));
12391
1.38M
        expr_ty comparison_var;
12392
1.38M
        if (
12393
1.38M
            (comparison_var = comparison_rule(p))  // comparison
12394
1.38M
        )
12395
919k
        {
12396
919k
            D(fprintf(stderr, "%*c+ inversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "comparison"));
12397
919k
            _res = comparison_var;
12398
919k
            goto done;
12399
919k
        }
12400
466k
        p->mark = _mark;
12401
466k
        D(fprintf(stderr, "%*c%s inversion[%d-%d]: %s failed!\n", p->level, ' ',
12402
466k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "comparison"));
12403
466k
    }
12404
0
    _res = NULL;
12405
1.38M
  done:
12406
1.38M
    _PyPegen_insert_memo(p, _mark, inversion_type, _res);
12407
1.38M
    p->level--;
12408
1.38M
    return _res;
12409
466k
}
12410
12411
// comparison: bitwise_or compare_op_bitwise_or_pair+ | bitwise_or
12412
static expr_ty
12413
comparison_rule(Parser *p)
12414
1.38M
{
12415
1.38M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12416
1
        _Pypegen_stack_overflow(p);
12417
1
    }
12418
1.38M
    if (p->error_indicator) {
12419
1
        p->level--;
12420
1
        return NULL;
12421
1
    }
12422
1.38M
    expr_ty _res = NULL;
12423
1.38M
    int _mark = p->mark;
12424
1.38M
    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
1.38M
    int _start_lineno = p->tokens[_mark]->lineno;
12430
1.38M
    UNUSED(_start_lineno); // Only used by EXTRA macro
12431
1.38M
    int _start_col_offset = p->tokens[_mark]->col_offset;
12432
1.38M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12433
1.38M
    { // bitwise_or compare_op_bitwise_or_pair+
12434
1.38M
        if (p->error_indicator) {
12435
0
            p->level--;
12436
0
            return NULL;
12437
0
        }
12438
1.38M
        D(fprintf(stderr, "%*c> comparison[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
12439
1.38M
        expr_ty a;
12440
1.38M
        asdl_seq * b;
12441
1.38M
        if (
12442
1.38M
            (a = bitwise_or_rule(p))  // bitwise_or
12443
1.38M
            &&
12444
1.38M
            (b = _loop1_61_rule(p))  // compare_op_bitwise_or_pair+
12445
1.38M
        )
12446
33.7k
        {
12447
33.7k
            D(fprintf(stderr, "%*c+ comparison[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
12448
33.7k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12449
33.7k
            if (_token == NULL) {
12450
0
                p->level--;
12451
0
                return NULL;
12452
0
            }
12453
33.7k
            int _end_lineno = _token->end_lineno;
12454
33.7k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12455
33.7k
            int _end_col_offset = _token->end_col_offset;
12456
33.7k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12457
33.7k
            _res = _PyAST_Compare ( a , CHECK ( asdl_int_seq* , _PyPegen_get_cmpops ( p , b ) ) , CHECK ( asdl_expr_seq* , _PyPegen_get_exprs ( p , b ) ) , EXTRA );
12458
33.7k
            if (_res == NULL && PyErr_Occurred()) {
12459
0
                p->error_indicator = 1;
12460
0
                p->level--;
12461
0
                return NULL;
12462
0
            }
12463
33.7k
            goto done;
12464
33.7k
        }
12465
1.35M
        p->mark = _mark;
12466
1.35M
        D(fprintf(stderr, "%*c%s comparison[%d-%d]: %s failed!\n", p->level, ' ',
12467
1.35M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
12468
1.35M
    }
12469
0
    { // bitwise_or
12470
1.35M
        if (p->error_indicator) {
12471
42.3k
            p->level--;
12472
42.3k
            return NULL;
12473
42.3k
        }
12474
1.30M
        D(fprintf(stderr, "%*c> comparison[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or"));
12475
1.30M
        expr_ty bitwise_or_var;
12476
1.30M
        if (
12477
1.30M
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
12478
1.30M
        )
12479
886k
        {
12480
886k
            D(fprintf(stderr, "%*c+ comparison[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or"));
12481
886k
            _res = bitwise_or_var;
12482
886k
            goto done;
12483
886k
        }
12484
423k
        p->mark = _mark;
12485
423k
        D(fprintf(stderr, "%*c%s comparison[%d-%d]: %s failed!\n", p->level, ' ',
12486
423k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or"));
12487
423k
    }
12488
0
    _res = NULL;
12489
1.34M
  done:
12490
1.34M
    p->level--;
12491
1.34M
    return _res;
12492
423k
}
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
1.01M
{
12508
1.01M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12509
0
        _Pypegen_stack_overflow(p);
12510
0
    }
12511
1.01M
    if (p->error_indicator) {
12512
0
        p->level--;
12513
0
        return NULL;
12514
0
    }
12515
1.01M
    CmpopExprPair* _res = NULL;
12516
1.01M
    int _mark = p->mark;
12517
1.01M
    { // eq_bitwise_or
12518
1.01M
        if (p->error_indicator) {
12519
0
            p->level--;
12520
0
            return NULL;
12521
0
        }
12522
1.01M
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "eq_bitwise_or"));
12523
1.01M
        CmpopExprPair* eq_bitwise_or_var;
12524
1.01M
        if (
12525
1.01M
            (eq_bitwise_or_var = eq_bitwise_or_rule(p))  // eq_bitwise_or
12526
1.01M
        )
12527
3.49k
        {
12528
3.49k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "eq_bitwise_or"));
12529
3.49k
            _res = eq_bitwise_or_var;
12530
3.49k
            goto done;
12531
3.49k
        }
12532
1.01M
        p->mark = _mark;
12533
1.01M
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12534
1.01M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "eq_bitwise_or"));
12535
1.01M
    }
12536
0
    { // noteq_bitwise_or
12537
1.01M
        if (p->error_indicator) {
12538
83
            p->level--;
12539
83
            return NULL;
12540
83
        }
12541
1.01M
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "noteq_bitwise_or"));
12542
1.01M
        CmpopExprPair* noteq_bitwise_or_var;
12543
1.01M
        if (
12544
1.01M
            (noteq_bitwise_or_var = noteq_bitwise_or_rule(p))  // noteq_bitwise_or
12545
1.01M
        )
12546
1.13k
        {
12547
1.13k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "noteq_bitwise_or"));
12548
1.13k
            _res = noteq_bitwise_or_var;
12549
1.13k
            goto done;
12550
1.13k
        }
12551
1.01M
        p->mark = _mark;
12552
1.01M
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12553
1.01M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "noteq_bitwise_or"));
12554
1.01M
    }
12555
0
    { // lte_bitwise_or
12556
1.01M
        if (p->error_indicator) {
12557
215
            p->level--;
12558
215
            return NULL;
12559
215
        }
12560
1.00M
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lte_bitwise_or"));
12561
1.00M
        CmpopExprPair* lte_bitwise_or_var;
12562
1.00M
        if (
12563
1.00M
            (lte_bitwise_or_var = lte_bitwise_or_rule(p))  // lte_bitwise_or
12564
1.00M
        )
12565
2.95k
        {
12566
2.95k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lte_bitwise_or"));
12567
2.95k
            _res = lte_bitwise_or_var;
12568
2.95k
            goto done;
12569
2.95k
        }
12570
1.00M
        p->mark = _mark;
12571
1.00M
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12572
1.00M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lte_bitwise_or"));
12573
1.00M
    }
12574
0
    { // lt_bitwise_or
12575
1.00M
        if (p->error_indicator) {
12576
98
            p->level--;
12577
98
            return NULL;
12578
98
        }
12579
1.00M
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lt_bitwise_or"));
12580
1.00M
        CmpopExprPair* lt_bitwise_or_var;
12581
1.00M
        if (
12582
1.00M
            (lt_bitwise_or_var = lt_bitwise_or_rule(p))  // lt_bitwise_or
12583
1.00M
        )
12584
33.6k
        {
12585
33.6k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lt_bitwise_or"));
12586
33.6k
            _res = lt_bitwise_or_var;
12587
33.6k
            goto done;
12588
33.6k
        }
12589
973k
        p->mark = _mark;
12590
973k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12591
973k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lt_bitwise_or"));
12592
973k
    }
12593
0
    { // gte_bitwise_or
12594
973k
        if (p->error_indicator) {
12595
257
            p->level--;
12596
257
            return NULL;
12597
257
        }
12598
972k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "gte_bitwise_or"));
12599
972k
        CmpopExprPair* gte_bitwise_or_var;
12600
972k
        if (
12601
972k
            (gte_bitwise_or_var = gte_bitwise_or_rule(p))  // gte_bitwise_or
12602
972k
        )
12603
4.61k
        {
12604
4.61k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "gte_bitwise_or"));
12605
4.61k
            _res = gte_bitwise_or_var;
12606
4.61k
            goto done;
12607
4.61k
        }
12608
968k
        p->mark = _mark;
12609
968k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12610
968k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "gte_bitwise_or"));
12611
968k
    }
12612
0
    { // gt_bitwise_or
12613
968k
        if (p->error_indicator) {
12614
108
            p->level--;
12615
108
            return NULL;
12616
108
        }
12617
968k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "gt_bitwise_or"));
12618
968k
        CmpopExprPair* gt_bitwise_or_var;
12619
968k
        if (
12620
968k
            (gt_bitwise_or_var = gt_bitwise_or_rule(p))  // gt_bitwise_or
12621
968k
        )
12622
37.9k
        {
12623
37.9k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "gt_bitwise_or"));
12624
37.9k
            _res = gt_bitwise_or_var;
12625
37.9k
            goto done;
12626
37.9k
        }
12627
930k
        p->mark = _mark;
12628
930k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12629
930k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "gt_bitwise_or"));
12630
930k
    }
12631
0
    { // notin_bitwise_or
12632
930k
        if (p->error_indicator) {
12633
565
            p->level--;
12634
565
            return NULL;
12635
565
        }
12636
929k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "notin_bitwise_or"));
12637
929k
        CmpopExprPair* notin_bitwise_or_var;
12638
929k
        if (
12639
929k
            (notin_bitwise_or_var = notin_bitwise_or_rule(p))  // notin_bitwise_or
12640
929k
        )
12641
63
        {
12642
63
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "notin_bitwise_or"));
12643
63
            _res = notin_bitwise_or_var;
12644
63
            goto done;
12645
63
        }
12646
929k
        p->mark = _mark;
12647
929k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12648
929k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "notin_bitwise_or"));
12649
929k
    }
12650
0
    { // in_bitwise_or
12651
929k
        if (p->error_indicator) {
12652
43
            p->level--;
12653
43
            return NULL;
12654
43
        }
12655
929k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "in_bitwise_or"));
12656
929k
        CmpopExprPair* in_bitwise_or_var;
12657
929k
        if (
12658
929k
            (in_bitwise_or_var = in_bitwise_or_rule(p))  // in_bitwise_or
12659
929k
        )
12660
3.62k
        {
12661
3.62k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "in_bitwise_or"));
12662
3.62k
            _res = in_bitwise_or_var;
12663
3.62k
            goto done;
12664
3.62k
        }
12665
925k
        p->mark = _mark;
12666
925k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12667
925k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "in_bitwise_or"));
12668
925k
    }
12669
0
    { // isnot_bitwise_or
12670
925k
        if (p->error_indicator) {
12671
187
            p->level--;
12672
187
            return NULL;
12673
187
        }
12674
925k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "isnot_bitwise_or"));
12675
925k
        CmpopExprPair* isnot_bitwise_or_var;
12676
925k
        if (
12677
925k
            (isnot_bitwise_or_var = isnot_bitwise_or_rule(p))  // isnot_bitwise_or
12678
925k
        )
12679
56
        {
12680
56
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "isnot_bitwise_or"));
12681
56
            _res = isnot_bitwise_or_var;
12682
56
            goto done;
12683
56
        }
12684
925k
        p->mark = _mark;
12685
925k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12686
925k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "isnot_bitwise_or"));
12687
925k
    }
12688
0
    { // is_bitwise_or
12689
925k
        if (p->error_indicator) {
12690
212
            p->level--;
12691
212
            return NULL;
12692
212
        }
12693
925k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "is_bitwise_or"));
12694
925k
        CmpopExprPair* is_bitwise_or_var;
12695
925k
        if (
12696
925k
            (is_bitwise_or_var = is_bitwise_or_rule(p))  // is_bitwise_or
12697
925k
        )
12698
5.03k
        {
12699
5.03k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "is_bitwise_or"));
12700
5.03k
            _res = is_bitwise_or_var;
12701
5.03k
            goto done;
12702
5.03k
        }
12703
920k
        p->mark = _mark;
12704
920k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12705
920k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "is_bitwise_or"));
12706
920k
    }
12707
0
    _res = NULL;
12708
1.01M
  done:
12709
1.01M
    p->level--;
12710
1.01M
    return _res;
12711
920k
}
12712
12713
// eq_bitwise_or: '==' bitwise_or
12714
static CmpopExprPair*
12715
eq_bitwise_or_rule(Parser *p)
12716
1.01M
{
12717
1.01M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12718
0
        _Pypegen_stack_overflow(p);
12719
0
    }
12720
1.01M
    if (p->error_indicator) {
12721
0
        p->level--;
12722
0
        return NULL;
12723
0
    }
12724
1.01M
    CmpopExprPair* _res = NULL;
12725
1.01M
    int _mark = p->mark;
12726
1.01M
    { // '==' bitwise_or
12727
1.01M
        if (p->error_indicator) {
12728
0
            p->level--;
12729
0
            return NULL;
12730
0
        }
12731
1.01M
        D(fprintf(stderr, "%*c> eq_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'==' bitwise_or"));
12732
1.01M
        Token * _literal;
12733
1.01M
        expr_ty a;
12734
1.01M
        if (
12735
1.01M
            (_literal = _PyPegen_expect_token(p, 27))  // token='=='
12736
1.01M
            &&
12737
1.01M
            (a = bitwise_or_rule(p))  // bitwise_or
12738
1.01M
        )
12739
3.49k
        {
12740
3.49k
            D(fprintf(stderr, "%*c+ eq_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'==' bitwise_or"));
12741
3.49k
            _res = _PyPegen_cmpop_expr_pair ( p , Eq , a );
12742
3.49k
            if (_res == NULL && PyErr_Occurred()) {
12743
0
                p->error_indicator = 1;
12744
0
                p->level--;
12745
0
                return NULL;
12746
0
            }
12747
3.49k
            goto done;
12748
3.49k
        }
12749
1.01M
        p->mark = _mark;
12750
1.01M
        D(fprintf(stderr, "%*c%s eq_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12751
1.01M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'==' bitwise_or"));
12752
1.01M
    }
12753
0
    _res = NULL;
12754
1.01M
  done:
12755
1.01M
    p->level--;
12756
1.01M
    return _res;
12757
1.01M
}
12758
12759
// noteq_bitwise_or: ('!=') bitwise_or
12760
static CmpopExprPair*
12761
noteq_bitwise_or_rule(Parser *p)
12762
1.01M
{
12763
1.01M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12764
0
        _Pypegen_stack_overflow(p);
12765
0
    }
12766
1.01M
    if (p->error_indicator) {
12767
0
        p->level--;
12768
0
        return NULL;
12769
0
    }
12770
1.01M
    CmpopExprPair* _res = NULL;
12771
1.01M
    int _mark = p->mark;
12772
1.01M
    { // ('!=') bitwise_or
12773
1.01M
        if (p->error_indicator) {
12774
0
            p->level--;
12775
0
            return NULL;
12776
0
        }
12777
1.01M
        D(fprintf(stderr, "%*c> noteq_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('!=') bitwise_or"));
12778
1.01M
        void *_tmp_62_var;
12779
1.01M
        expr_ty a;
12780
1.01M
        if (
12781
1.01M
            (_tmp_62_var = _tmp_62_rule(p))  // '!='
12782
1.01M
            &&
12783
1.01M
            (a = bitwise_or_rule(p))  // bitwise_or
12784
1.01M
        )
12785
1.13k
        {
12786
1.13k
            D(fprintf(stderr, "%*c+ noteq_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('!=') bitwise_or"));
12787
1.13k
            _res = _PyPegen_cmpop_expr_pair ( p , NotEq , a );
12788
1.13k
            if (_res == NULL && PyErr_Occurred()) {
12789
0
                p->error_indicator = 1;
12790
0
                p->level--;
12791
0
                return NULL;
12792
0
            }
12793
1.13k
            goto done;
12794
1.13k
        }
12795
1.01M
        p->mark = _mark;
12796
1.01M
        D(fprintf(stderr, "%*c%s noteq_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12797
1.01M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('!=') bitwise_or"));
12798
1.01M
    }
12799
0
    _res = NULL;
12800
1.01M
  done:
12801
1.01M
    p->level--;
12802
1.01M
    return _res;
12803
1.01M
}
12804
12805
// lte_bitwise_or: '<=' bitwise_or
12806
static CmpopExprPair*
12807
lte_bitwise_or_rule(Parser *p)
12808
1.00M
{
12809
1.00M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12810
0
        _Pypegen_stack_overflow(p);
12811
0
    }
12812
1.00M
    if (p->error_indicator) {
12813
0
        p->level--;
12814
0
        return NULL;
12815
0
    }
12816
1.00M
    CmpopExprPair* _res = NULL;
12817
1.00M
    int _mark = p->mark;
12818
1.00M
    { // '<=' bitwise_or
12819
1.00M
        if (p->error_indicator) {
12820
0
            p->level--;
12821
0
            return NULL;
12822
0
        }
12823
1.00M
        D(fprintf(stderr, "%*c> lte_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<=' bitwise_or"));
12824
1.00M
        Token * _literal;
12825
1.00M
        expr_ty a;
12826
1.00M
        if (
12827
1.00M
            (_literal = _PyPegen_expect_token(p, 29))  // token='<='
12828
1.00M
            &&
12829
1.00M
            (a = bitwise_or_rule(p))  // bitwise_or
12830
1.00M
        )
12831
2.95k
        {
12832
2.95k
            D(fprintf(stderr, "%*c+ lte_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<=' bitwise_or"));
12833
2.95k
            _res = _PyPegen_cmpop_expr_pair ( p , LtE , a );
12834
2.95k
            if (_res == NULL && PyErr_Occurred()) {
12835
0
                p->error_indicator = 1;
12836
0
                p->level--;
12837
0
                return NULL;
12838
0
            }
12839
2.95k
            goto done;
12840
2.95k
        }
12841
1.00M
        p->mark = _mark;
12842
1.00M
        D(fprintf(stderr, "%*c%s lte_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12843
1.00M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<=' bitwise_or"));
12844
1.00M
    }
12845
0
    _res = NULL;
12846
1.00M
  done:
12847
1.00M
    p->level--;
12848
1.00M
    return _res;
12849
1.00M
}
12850
12851
// lt_bitwise_or: '<' bitwise_or
12852
static CmpopExprPair*
12853
lt_bitwise_or_rule(Parser *p)
12854
1.00M
{
12855
1.00M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12856
0
        _Pypegen_stack_overflow(p);
12857
0
    }
12858
1.00M
    if (p->error_indicator) {
12859
0
        p->level--;
12860
0
        return NULL;
12861
0
    }
12862
1.00M
    CmpopExprPair* _res = NULL;
12863
1.00M
    int _mark = p->mark;
12864
1.00M
    { // '<' bitwise_or
12865
1.00M
        if (p->error_indicator) {
12866
0
            p->level--;
12867
0
            return NULL;
12868
0
        }
12869
1.00M
        D(fprintf(stderr, "%*c> lt_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<' bitwise_or"));
12870
1.00M
        Token * _literal;
12871
1.00M
        expr_ty a;
12872
1.00M
        if (
12873
1.00M
            (_literal = _PyPegen_expect_token(p, 20))  // token='<'
12874
1.00M
            &&
12875
1.00M
            (a = bitwise_or_rule(p))  // bitwise_or
12876
1.00M
        )
12877
33.6k
        {
12878
33.6k
            D(fprintf(stderr, "%*c+ lt_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<' bitwise_or"));
12879
33.6k
            _res = _PyPegen_cmpop_expr_pair ( p , Lt , a );
12880
33.6k
            if (_res == NULL && PyErr_Occurred()) {
12881
0
                p->error_indicator = 1;
12882
0
                p->level--;
12883
0
                return NULL;
12884
0
            }
12885
33.6k
            goto done;
12886
33.6k
        }
12887
973k
        p->mark = _mark;
12888
973k
        D(fprintf(stderr, "%*c%s lt_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12889
973k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<' bitwise_or"));
12890
973k
    }
12891
0
    _res = NULL;
12892
1.00M
  done:
12893
1.00M
    p->level--;
12894
1.00M
    return _res;
12895
973k
}
12896
12897
// gte_bitwise_or: '>=' bitwise_or
12898
static CmpopExprPair*
12899
gte_bitwise_or_rule(Parser *p)
12900
972k
{
12901
972k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12902
0
        _Pypegen_stack_overflow(p);
12903
0
    }
12904
972k
    if (p->error_indicator) {
12905
0
        p->level--;
12906
0
        return NULL;
12907
0
    }
12908
972k
    CmpopExprPair* _res = NULL;
12909
972k
    int _mark = p->mark;
12910
972k
    { // '>=' bitwise_or
12911
972k
        if (p->error_indicator) {
12912
0
            p->level--;
12913
0
            return NULL;
12914
0
        }
12915
972k
        D(fprintf(stderr, "%*c> gte_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>=' bitwise_or"));
12916
972k
        Token * _literal;
12917
972k
        expr_ty a;
12918
972k
        if (
12919
972k
            (_literal = _PyPegen_expect_token(p, 30))  // token='>='
12920
972k
            &&
12921
972k
            (a = bitwise_or_rule(p))  // bitwise_or
12922
972k
        )
12923
4.61k
        {
12924
4.61k
            D(fprintf(stderr, "%*c+ gte_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>=' bitwise_or"));
12925
4.61k
            _res = _PyPegen_cmpop_expr_pair ( p , GtE , a );
12926
4.61k
            if (_res == NULL && PyErr_Occurred()) {
12927
0
                p->error_indicator = 1;
12928
0
                p->level--;
12929
0
                return NULL;
12930
0
            }
12931
4.61k
            goto done;
12932
4.61k
        }
12933
968k
        p->mark = _mark;
12934
968k
        D(fprintf(stderr, "%*c%s gte_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12935
968k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>=' bitwise_or"));
12936
968k
    }
12937
0
    _res = NULL;
12938
972k
  done:
12939
972k
    p->level--;
12940
972k
    return _res;
12941
968k
}
12942
12943
// gt_bitwise_or: '>' bitwise_or
12944
static CmpopExprPair*
12945
gt_bitwise_or_rule(Parser *p)
12946
968k
{
12947
968k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12948
0
        _Pypegen_stack_overflow(p);
12949
0
    }
12950
968k
    if (p->error_indicator) {
12951
0
        p->level--;
12952
0
        return NULL;
12953
0
    }
12954
968k
    CmpopExprPair* _res = NULL;
12955
968k
    int _mark = p->mark;
12956
968k
    { // '>' bitwise_or
12957
968k
        if (p->error_indicator) {
12958
0
            p->level--;
12959
0
            return NULL;
12960
0
        }
12961
968k
        D(fprintf(stderr, "%*c> gt_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>' bitwise_or"));
12962
968k
        Token * _literal;
12963
968k
        expr_ty a;
12964
968k
        if (
12965
968k
            (_literal = _PyPegen_expect_token(p, 21))  // token='>'
12966
968k
            &&
12967
968k
            (a = bitwise_or_rule(p))  // bitwise_or
12968
968k
        )
12969
37.9k
        {
12970
37.9k
            D(fprintf(stderr, "%*c+ gt_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>' bitwise_or"));
12971
37.9k
            _res = _PyPegen_cmpop_expr_pair ( p , Gt , a );
12972
37.9k
            if (_res == NULL && PyErr_Occurred()) {
12973
0
                p->error_indicator = 1;
12974
0
                p->level--;
12975
0
                return NULL;
12976
0
            }
12977
37.9k
            goto done;
12978
37.9k
        }
12979
930k
        p->mark = _mark;
12980
930k
        D(fprintf(stderr, "%*c%s gt_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12981
930k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>' bitwise_or"));
12982
930k
    }
12983
0
    _res = NULL;
12984
968k
  done:
12985
968k
    p->level--;
12986
968k
    return _res;
12987
930k
}
12988
12989
// notin_bitwise_or: 'not' 'in' bitwise_or
12990
static CmpopExprPair*
12991
notin_bitwise_or_rule(Parser *p)
12992
929k
{
12993
929k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12994
0
        _Pypegen_stack_overflow(p);
12995
0
    }
12996
929k
    if (p->error_indicator) {
12997
0
        p->level--;
12998
0
        return NULL;
12999
0
    }
13000
929k
    CmpopExprPair* _res = NULL;
13001
929k
    int _mark = p->mark;
13002
929k
    { // 'not' 'in' bitwise_or
13003
929k
        if (p->error_indicator) {
13004
0
            p->level--;
13005
0
            return NULL;
13006
0
        }
13007
929k
        D(fprintf(stderr, "%*c> notin_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'not' 'in' bitwise_or"));
13008
929k
        Token * _keyword;
13009
929k
        Token * _keyword_1;
13010
929k
        expr_ty a;
13011
929k
        if (
13012
929k
            (_keyword = _PyPegen_expect_token(p, 708))  // token='not'
13013
929k
            &&
13014
929k
            (_keyword_1 = _PyPegen_expect_token(p, 700))  // token='in'
13015
929k
            &&
13016
929k
            (a = bitwise_or_rule(p))  // bitwise_or
13017
929k
        )
13018
63
        {
13019
63
            D(fprintf(stderr, "%*c+ notin_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'not' 'in' bitwise_or"));
13020
63
            _res = _PyPegen_cmpop_expr_pair ( p , NotIn , a );
13021
63
            if (_res == NULL && PyErr_Occurred()) {
13022
0
                p->error_indicator = 1;
13023
0
                p->level--;
13024
0
                return NULL;
13025
0
            }
13026
63
            goto done;
13027
63
        }
13028
929k
        p->mark = _mark;
13029
929k
        D(fprintf(stderr, "%*c%s notin_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13030
929k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'not' 'in' bitwise_or"));
13031
929k
    }
13032
0
    _res = NULL;
13033
929k
  done:
13034
929k
    p->level--;
13035
929k
    return _res;
13036
929k
}
13037
13038
// in_bitwise_or: 'in' bitwise_or
13039
static CmpopExprPair*
13040
in_bitwise_or_rule(Parser *p)
13041
929k
{
13042
929k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13043
0
        _Pypegen_stack_overflow(p);
13044
0
    }
13045
929k
    if (p->error_indicator) {
13046
0
        p->level--;
13047
0
        return NULL;
13048
0
    }
13049
929k
    CmpopExprPair* _res = NULL;
13050
929k
    int _mark = p->mark;
13051
929k
    { // 'in' bitwise_or
13052
929k
        if (p->error_indicator) {
13053
0
            p->level--;
13054
0
            return NULL;
13055
0
        }
13056
929k
        D(fprintf(stderr, "%*c> in_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'in' bitwise_or"));
13057
929k
        Token * _keyword;
13058
929k
        expr_ty a;
13059
929k
        if (
13060
929k
            (_keyword = _PyPegen_expect_token(p, 700))  // token='in'
13061
929k
            &&
13062
929k
            (a = bitwise_or_rule(p))  // bitwise_or
13063
929k
        )
13064
3.62k
        {
13065
3.62k
            D(fprintf(stderr, "%*c+ in_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'in' bitwise_or"));
13066
3.62k
            _res = _PyPegen_cmpop_expr_pair ( p , In , a );
13067
3.62k
            if (_res == NULL && PyErr_Occurred()) {
13068
0
                p->error_indicator = 1;
13069
0
                p->level--;
13070
0
                return NULL;
13071
0
            }
13072
3.62k
            goto done;
13073
3.62k
        }
13074
925k
        p->mark = _mark;
13075
925k
        D(fprintf(stderr, "%*c%s in_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13076
925k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'in' bitwise_or"));
13077
925k
    }
13078
0
    _res = NULL;
13079
929k
  done:
13080
929k
    p->level--;
13081
929k
    return _res;
13082
925k
}
13083
13084
// isnot_bitwise_or: 'is' 'not' bitwise_or
13085
static CmpopExprPair*
13086
isnot_bitwise_or_rule(Parser *p)
13087
925k
{
13088
925k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13089
0
        _Pypegen_stack_overflow(p);
13090
0
    }
13091
925k
    if (p->error_indicator) {
13092
0
        p->level--;
13093
0
        return NULL;
13094
0
    }
13095
925k
    CmpopExprPair* _res = NULL;
13096
925k
    int _mark = p->mark;
13097
925k
    { // 'is' 'not' bitwise_or
13098
925k
        if (p->error_indicator) {
13099
0
            p->level--;
13100
0
            return NULL;
13101
0
        }
13102
925k
        D(fprintf(stderr, "%*c> isnot_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'is' 'not' bitwise_or"));
13103
925k
        Token * _keyword;
13104
925k
        Token * _keyword_1;
13105
925k
        expr_ty a;
13106
925k
        if (
13107
925k
            (_keyword = _PyPegen_expect_token(p, 597))  // token='is'
13108
925k
            &&
13109
925k
            (_keyword_1 = _PyPegen_expect_token(p, 708))  // token='not'
13110
925k
            &&
13111
925k
            (a = bitwise_or_rule(p))  // bitwise_or
13112
925k
        )
13113
56
        {
13114
56
            D(fprintf(stderr, "%*c+ isnot_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'is' 'not' bitwise_or"));
13115
56
            _res = _PyPegen_cmpop_expr_pair ( p , IsNot , a );
13116
56
            if (_res == NULL && PyErr_Occurred()) {
13117
0
                p->error_indicator = 1;
13118
0
                p->level--;
13119
0
                return NULL;
13120
0
            }
13121
56
            goto done;
13122
56
        }
13123
925k
        p->mark = _mark;
13124
925k
        D(fprintf(stderr, "%*c%s isnot_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13125
925k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'is' 'not' bitwise_or"));
13126
925k
    }
13127
0
    _res = NULL;
13128
925k
  done:
13129
925k
    p->level--;
13130
925k
    return _res;
13131
925k
}
13132
13133
// is_bitwise_or: 'is' bitwise_or
13134
static CmpopExprPair*
13135
is_bitwise_or_rule(Parser *p)
13136
925k
{
13137
925k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13138
0
        _Pypegen_stack_overflow(p);
13139
0
    }
13140
925k
    if (p->error_indicator) {
13141
0
        p->level--;
13142
0
        return NULL;
13143
0
    }
13144
925k
    CmpopExprPair* _res = NULL;
13145
925k
    int _mark = p->mark;
13146
925k
    { // 'is' bitwise_or
13147
925k
        if (p->error_indicator) {
13148
0
            p->level--;
13149
0
            return NULL;
13150
0
        }
13151
925k
        D(fprintf(stderr, "%*c> is_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'is' bitwise_or"));
13152
925k
        Token * _keyword;
13153
925k
        expr_ty a;
13154
925k
        if (
13155
925k
            (_keyword = _PyPegen_expect_token(p, 597))  // token='is'
13156
925k
            &&
13157
925k
            (a = bitwise_or_rule(p))  // bitwise_or
13158
925k
        )
13159
5.03k
        {
13160
5.03k
            D(fprintf(stderr, "%*c+ is_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'is' bitwise_or"));
13161
5.03k
            _res = _PyPegen_cmpop_expr_pair ( p , Is , a );
13162
5.03k
            if (_res == NULL && PyErr_Occurred()) {
13163
0
                p->error_indicator = 1;
13164
0
                p->level--;
13165
0
                return NULL;
13166
0
            }
13167
5.03k
            goto done;
13168
5.03k
        }
13169
920k
        p->mark = _mark;
13170
920k
        D(fprintf(stderr, "%*c%s is_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13171
920k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'is' bitwise_or"));
13172
920k
    }
13173
0
    _res = NULL;
13174
925k
  done:
13175
925k
    p->level--;
13176
925k
    return _res;
13177
920k
}
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
5.49M
{
13185
5.49M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13186
1
        _Pypegen_stack_overflow(p);
13187
1
    }
13188
5.49M
    expr_ty _res = NULL;
13189
5.49M
    if (_PyPegen_is_memoized(p, bitwise_or_type, &_res)) {
13190
3.99M
        p->level--;
13191
3.99M
        return _res;
13192
3.99M
    }
13193
1.50M
    int _mark = p->mark;
13194
1.50M
    int _resmark = p->mark;
13195
2.54M
    while (1) {
13196
2.54M
        int tmpvar_2 = _PyPegen_update_memo(p, _mark, bitwise_or_type, _res);
13197
2.54M
        if (tmpvar_2) {
13198
0
            p->level--;
13199
0
            return _res;
13200
0
        }
13201
2.54M
        p->mark = _mark;
13202
2.54M
        void *_raw = bitwise_or_raw(p);
13203
2.54M
        if (p->error_indicator) {
13204
43.9k
            p->level--;
13205
43.9k
            return NULL;
13206
43.9k
        }
13207
2.50M
        if (_raw == NULL || p->mark <= _resmark)
13208
1.45M
            break;
13209
1.04M
        _resmark = p->mark;
13210
1.04M
        _res = _raw;
13211
1.04M
    }
13212
1.45M
    p->mark = _resmark;
13213
1.45M
    p->level--;
13214
1.45M
    return _res;
13215
1.50M
}
13216
static expr_ty
13217
bitwise_or_raw(Parser *p)
13218
2.54M
{
13219
2.54M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13220
3
        _Pypegen_stack_overflow(p);
13221
3
    }
13222
2.54M
    if (p->error_indicator) {
13223
3
        p->level--;
13224
3
        return NULL;
13225
3
    }
13226
2.54M
    expr_ty _res = NULL;
13227
2.54M
    int _mark = p->mark;
13228
2.54M
    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
2.54M
    int _start_lineno = p->tokens[_mark]->lineno;
13234
2.54M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13235
2.54M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13236
2.54M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13237
2.54M
    { // bitwise_or '|' bitwise_xor
13238
2.54M
        if (p->error_indicator) {
13239
0
            p->level--;
13240
0
            return NULL;
13241
0
        }
13242
2.54M
        D(fprintf(stderr, "%*c> bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or '|' bitwise_xor"));
13243
2.54M
        Token * _literal;
13244
2.54M
        expr_ty a;
13245
2.54M
        expr_ty b;
13246
2.54M
        if (
13247
2.54M
            (a = bitwise_or_rule(p))  // bitwise_or
13248
2.54M
            &&
13249
2.54M
            (_literal = _PyPegen_expect_token(p, 18))  // token='|'
13250
2.54M
            &&
13251
2.54M
            (b = bitwise_xor_rule(p))  // bitwise_xor
13252
2.54M
        )
13253
12.7k
        {
13254
12.7k
            D(fprintf(stderr, "%*c+ bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or '|' bitwise_xor"));
13255
12.7k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13256
12.7k
            if (_token == NULL) {
13257
0
                p->level--;
13258
0
                return NULL;
13259
0
            }
13260
12.7k
            int _end_lineno = _token->end_lineno;
13261
12.7k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13262
12.7k
            int _end_col_offset = _token->end_col_offset;
13263
12.7k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13264
12.7k
            _res = _PyAST_BinOp ( a , BitOr , b , EXTRA );
13265
12.7k
            if (_res == NULL && PyErr_Occurred()) {
13266
0
                p->error_indicator = 1;
13267
0
                p->level--;
13268
0
                return NULL;
13269
0
            }
13270
12.7k
            goto done;
13271
12.7k
        }
13272
2.53M
        p->mark = _mark;
13273
2.53M
        D(fprintf(stderr, "%*c%s bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13274
2.53M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or '|' bitwise_xor"));
13275
2.53M
    }
13276
0
    { // bitwise_xor
13277
2.53M
        if (p->error_indicator) {
13278
97
            p->level--;
13279
97
            return NULL;
13280
97
        }
13281
2.53M
        D(fprintf(stderr, "%*c> bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_xor"));
13282
2.53M
        expr_ty bitwise_xor_var;
13283
2.53M
        if (
13284
2.53M
            (bitwise_xor_var = bitwise_xor_rule(p))  // bitwise_xor
13285
2.53M
        )
13286
2.06M
        {
13287
2.06M
            D(fprintf(stderr, "%*c+ bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_xor"));
13288
2.06M
            _res = bitwise_xor_var;
13289
2.06M
            goto done;
13290
2.06M
        }
13291
472k
        p->mark = _mark;
13292
472k
        D(fprintf(stderr, "%*c%s bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13293
472k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_xor"));
13294
472k
    }
13295
0
    _res = NULL;
13296
2.54M
  done:
13297
2.54M
    p->level--;
13298
2.54M
    return _res;
13299
472k
}
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
5.13M
{
13307
5.13M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13308
2
        _Pypegen_stack_overflow(p);
13309
2
    }
13310
5.13M
    expr_ty _res = NULL;
13311
5.13M
    if (_PyPegen_is_memoized(p, bitwise_xor_type, &_res)) {
13312
3.62M
        p->level--;
13313
3.62M
        return _res;
13314
3.62M
    }
13315
1.51M
    int _mark = p->mark;
13316
1.51M
    int _resmark = p->mark;
13317
2.59M
    while (1) {
13318
2.59M
        int tmpvar_3 = _PyPegen_update_memo(p, _mark, bitwise_xor_type, _res);
13319
2.59M
        if (tmpvar_3) {
13320
0
            p->level--;
13321
0
            return _res;
13322
0
        }
13323
2.59M
        p->mark = _mark;
13324
2.59M
        void *_raw = bitwise_xor_raw(p);
13325
2.59M
        if (p->error_indicator) {
13326
43.9k
            p->level--;
13327
43.9k
            return NULL;
13328
43.9k
        }
13329
2.54M
        if (_raw == NULL || p->mark <= _resmark)
13330
1.47M
            break;
13331
1.07M
        _resmark = p->mark;
13332
1.07M
        _res = _raw;
13333
1.07M
    }
13334
1.47M
    p->mark = _resmark;
13335
1.47M
    p->level--;
13336
1.47M
    return _res;
13337
1.51M
}
13338
static expr_ty
13339
bitwise_xor_raw(Parser *p)
13340
2.59M
{
13341
2.59M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13342
1
        _Pypegen_stack_overflow(p);
13343
1
    }
13344
2.59M
    if (p->error_indicator) {
13345
1
        p->level--;
13346
1
        return NULL;
13347
1
    }
13348
2.59M
    expr_ty _res = NULL;
13349
2.59M
    int _mark = p->mark;
13350
2.59M
    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
2.59M
    int _start_lineno = p->tokens[_mark]->lineno;
13356
2.59M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13357
2.59M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13358
2.59M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13359
2.59M
    { // bitwise_xor '^' bitwise_and
13360
2.59M
        if (p->error_indicator) {
13361
0
            p->level--;
13362
0
            return NULL;
13363
0
        }
13364
2.59M
        D(fprintf(stderr, "%*c> bitwise_xor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_xor '^' bitwise_and"));
13365
2.59M
        Token * _literal;
13366
2.59M
        expr_ty a;
13367
2.59M
        expr_ty b;
13368
2.59M
        if (
13369
2.59M
            (a = bitwise_xor_rule(p))  // bitwise_xor
13370
2.59M
            &&
13371
2.59M
            (_literal = _PyPegen_expect_token(p, 32))  // token='^'
13372
2.59M
            &&
13373
2.59M
            (b = bitwise_and_rule(p))  // bitwise_and
13374
2.59M
        )
13375
29.8k
        {
13376
29.8k
            D(fprintf(stderr, "%*c+ bitwise_xor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_xor '^' bitwise_and"));
13377
29.8k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13378
29.8k
            if (_token == NULL) {
13379
0
                p->level--;
13380
0
                return NULL;
13381
0
            }
13382
29.8k
            int _end_lineno = _token->end_lineno;
13383
29.8k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13384
29.8k
            int _end_col_offset = _token->end_col_offset;
13385
29.8k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13386
29.8k
            _res = _PyAST_BinOp ( a , BitXor , b , EXTRA );
13387
29.8k
            if (_res == NULL && PyErr_Occurred()) {
13388
0
                p->error_indicator = 1;
13389
0
                p->level--;
13390
0
                return NULL;
13391
0
            }
13392
29.8k
            goto done;
13393
29.8k
        }
13394
2.56M
        p->mark = _mark;
13395
2.56M
        D(fprintf(stderr, "%*c%s bitwise_xor[%d-%d]: %s failed!\n", p->level, ' ',
13396
2.56M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_xor '^' bitwise_and"));
13397
2.56M
    }
13398
0
    { // bitwise_and
13399
2.56M
        if (p->error_indicator) {
13400
127
            p->level--;
13401
127
            return NULL;
13402
127
        }
13403
2.56M
        D(fprintf(stderr, "%*c> bitwise_xor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_and"));
13404
2.56M
        expr_ty bitwise_and_var;
13405
2.56M
        if (
13406
2.56M
            (bitwise_and_var = bitwise_and_rule(p))  // bitwise_and
13407
2.56M
        )
13408
2.08M
        {
13409
2.08M
            D(fprintf(stderr, "%*c+ bitwise_xor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_and"));
13410
2.08M
            _res = bitwise_and_var;
13411
2.08M
            goto done;
13412
2.08M
        }
13413
472k
        p->mark = _mark;
13414
472k
        D(fprintf(stderr, "%*c%s bitwise_xor[%d-%d]: %s failed!\n", p->level, ' ',
13415
472k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_and"));
13416
472k
    }
13417
0
    _res = NULL;
13418
2.59M
  done:
13419
2.59M
    p->level--;
13420
2.59M
    return _res;
13421
472k
}
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
5.23M
{
13429
5.23M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13430
3
        _Pypegen_stack_overflow(p);
13431
3
    }
13432
5.23M
    expr_ty _res = NULL;
13433
5.23M
    if (_PyPegen_is_memoized(p, bitwise_and_type, &_res)) {
13434
3.68M
        p->level--;
13435
3.68M
        return _res;
13436
3.68M
    }
13437
1.54M
    int _mark = p->mark;
13438
1.54M
    int _resmark = p->mark;
13439
2.64M
    while (1) {
13440
2.64M
        int tmpvar_4 = _PyPegen_update_memo(p, _mark, bitwise_and_type, _res);
13441
2.64M
        if (tmpvar_4) {
13442
0
            p->level--;
13443
0
            return _res;
13444
0
        }
13445
2.64M
        p->mark = _mark;
13446
2.64M
        void *_raw = bitwise_and_raw(p);
13447
2.64M
        if (p->error_indicator) {
13448
43.9k
            p->level--;
13449
43.9k
            return NULL;
13450
43.9k
        }
13451
2.59M
        if (_raw == NULL || p->mark <= _resmark)
13452
1.50M
            break;
13453
1.09M
        _resmark = p->mark;
13454
1.09M
        _res = _raw;
13455
1.09M
    }
13456
1.50M
    p->mark = _resmark;
13457
1.50M
    p->level--;
13458
1.50M
    return _res;
13459
1.54M
}
13460
static expr_ty
13461
bitwise_and_raw(Parser *p)
13462
2.64M
{
13463
2.64M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13464
1
        _Pypegen_stack_overflow(p);
13465
1
    }
13466
2.64M
    if (p->error_indicator) {
13467
1
        p->level--;
13468
1
        return NULL;
13469
1
    }
13470
2.64M
    expr_ty _res = NULL;
13471
2.64M
    int _mark = p->mark;
13472
2.64M
    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
2.64M
    int _start_lineno = p->tokens[_mark]->lineno;
13478
2.64M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13479
2.64M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13480
2.64M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13481
2.64M
    { // bitwise_and '&' shift_expr
13482
2.64M
        if (p->error_indicator) {
13483
0
            p->level--;
13484
0
            return NULL;
13485
0
        }
13486
2.64M
        D(fprintf(stderr, "%*c> bitwise_and[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_and '&' shift_expr"));
13487
2.64M
        Token * _literal;
13488
2.64M
        expr_ty a;
13489
2.64M
        expr_ty b;
13490
2.64M
        if (
13491
2.64M
            (a = bitwise_and_rule(p))  // bitwise_and
13492
2.64M
            &&
13493
2.64M
            (_literal = _PyPegen_expect_token(p, 19))  // token='&'
13494
2.64M
            &&
13495
2.64M
            (b = shift_expr_rule(p))  // shift_expr
13496
2.64M
        )
13497
22.2k
        {
13498
22.2k
            D(fprintf(stderr, "%*c+ bitwise_and[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_and '&' shift_expr"));
13499
22.2k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13500
22.2k
            if (_token == NULL) {
13501
0
                p->level--;
13502
0
                return NULL;
13503
0
            }
13504
22.2k
            int _end_lineno = _token->end_lineno;
13505
22.2k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13506
22.2k
            int _end_col_offset = _token->end_col_offset;
13507
22.2k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13508
22.2k
            _res = _PyAST_BinOp ( a , BitAnd , b , EXTRA );
13509
22.2k
            if (_res == NULL && PyErr_Occurred()) {
13510
0
                p->error_indicator = 1;
13511
0
                p->level--;
13512
0
                return NULL;
13513
0
            }
13514
22.2k
            goto done;
13515
22.2k
        }
13516
2.62M
        p->mark = _mark;
13517
2.62M
        D(fprintf(stderr, "%*c%s bitwise_and[%d-%d]: %s failed!\n", p->level, ' ',
13518
2.62M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_and '&' shift_expr"));
13519
2.62M
    }
13520
0
    { // shift_expr
13521
2.62M
        if (p->error_indicator) {
13522
277
            p->level--;
13523
277
            return NULL;
13524
277
        }
13525
2.62M
        D(fprintf(stderr, "%*c> bitwise_and[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr"));
13526
2.62M
        expr_ty shift_expr_var;
13527
2.62M
        if (
13528
2.62M
            (shift_expr_var = shift_expr_rule(p))  // shift_expr
13529
2.62M
        )
13530
2.14M
        {
13531
2.14M
            D(fprintf(stderr, "%*c+ bitwise_and[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr"));
13532
2.14M
            _res = shift_expr_var;
13533
2.14M
            goto done;
13534
2.14M
        }
13535
472k
        p->mark = _mark;
13536
472k
        D(fprintf(stderr, "%*c%s bitwise_and[%d-%d]: %s failed!\n", p->level, ' ',
13537
472k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr"));
13538
472k
    }
13539
0
    _res = NULL;
13540
2.64M
  done:
13541
2.64M
    p->level--;
13542
2.64M
    return _res;
13543
472k
}
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
8.02M
{
13551
8.02M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13552
1
        _Pypegen_stack_overflow(p);
13553
1
    }
13554
8.02M
    expr_ty _res = NULL;
13555
8.02M
    if (_PyPegen_is_memoized(p, shift_expr_type, &_res)) {
13556
6.45M
        p->level--;
13557
6.45M
        return _res;
13558
6.45M
    }
13559
1.56M
    int _mark = p->mark;
13560
1.56M
    int _resmark = p->mark;
13561
2.69M
    while (1) {
13562
2.69M
        int tmpvar_5 = _PyPegen_update_memo(p, _mark, shift_expr_type, _res);
13563
2.69M
        if (tmpvar_5) {
13564
0
            p->level--;
13565
0
            return _res;
13566
0
        }
13567
2.69M
        p->mark = _mark;
13568
2.69M
        void *_raw = shift_expr_raw(p);
13569
2.69M
        if (p->error_indicator) {
13570
43.9k
            p->level--;
13571
43.9k
            return NULL;
13572
43.9k
        }
13573
2.65M
        if (_raw == NULL || p->mark <= _resmark)
13574
1.52M
            break;
13575
1.12M
        _resmark = p->mark;
13576
1.12M
        _res = _raw;
13577
1.12M
    }
13578
1.52M
    p->mark = _resmark;
13579
1.52M
    p->level--;
13580
1.52M
    return _res;
13581
1.56M
}
13582
static expr_ty
13583
shift_expr_raw(Parser *p)
13584
2.69M
{
13585
2.69M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13586
2
        _Pypegen_stack_overflow(p);
13587
2
    }
13588
2.69M
    if (p->error_indicator) {
13589
2
        p->level--;
13590
2
        return NULL;
13591
2
    }
13592
2.69M
    expr_ty _res = NULL;
13593
2.69M
    int _mark = p->mark;
13594
2.69M
    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
2.69M
    int _start_lineno = p->tokens[_mark]->lineno;
13600
2.69M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13601
2.69M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13602
2.69M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13603
2.69M
    { // shift_expr '<<' sum
13604
2.69M
        if (p->error_indicator) {
13605
0
            p->level--;
13606
0
            return NULL;
13607
0
        }
13608
2.69M
        D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr '<<' sum"));
13609
2.69M
        Token * _literal;
13610
2.69M
        expr_ty a;
13611
2.69M
        expr_ty b;
13612
2.69M
        if (
13613
2.69M
            (a = shift_expr_rule(p))  // shift_expr
13614
2.69M
            &&
13615
2.69M
            (_literal = _PyPegen_expect_token(p, 33))  // token='<<'
13616
2.69M
            &&
13617
2.69M
            (b = sum_rule(p))  // sum
13618
2.69M
        )
13619
12.9k
        {
13620
12.9k
            D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr '<<' sum"));
13621
12.9k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13622
12.9k
            if (_token == NULL) {
13623
0
                p->level--;
13624
0
                return NULL;
13625
0
            }
13626
12.9k
            int _end_lineno = _token->end_lineno;
13627
12.9k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13628
12.9k
            int _end_col_offset = _token->end_col_offset;
13629
12.9k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13630
12.9k
            _res = _PyAST_BinOp ( a , LShift , b , EXTRA );
13631
12.9k
            if (_res == NULL && PyErr_Occurred()) {
13632
0
                p->error_indicator = 1;
13633
0
                p->level--;
13634
0
                return NULL;
13635
0
            }
13636
12.9k
            goto done;
13637
12.9k
        }
13638
2.68M
        p->mark = _mark;
13639
2.68M
        D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13640
2.68M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr '<<' sum"));
13641
2.68M
    }
13642
0
    { // shift_expr '>>' sum
13643
2.68M
        if (p->error_indicator) {
13644
80
            p->level--;
13645
80
            return NULL;
13646
80
        }
13647
2.68M
        D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr '>>' sum"));
13648
2.68M
        Token * _literal;
13649
2.68M
        expr_ty a;
13650
2.68M
        expr_ty b;
13651
2.68M
        if (
13652
2.68M
            (a = shift_expr_rule(p))  // shift_expr
13653
2.68M
            &&
13654
2.68M
            (_literal = _PyPegen_expect_token(p, 34))  // token='>>'
13655
2.68M
            &&
13656
2.68M
            (b = sum_rule(p))  // sum
13657
2.68M
        )
13658
18.2k
        {
13659
18.2k
            D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr '>>' sum"));
13660
18.2k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13661
18.2k
            if (_token == NULL) {
13662
0
                p->level--;
13663
0
                return NULL;
13664
0
            }
13665
18.2k
            int _end_lineno = _token->end_lineno;
13666
18.2k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13667
18.2k
            int _end_col_offset = _token->end_col_offset;
13668
18.2k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13669
18.2k
            _res = _PyAST_BinOp ( a , RShift , b , EXTRA );
13670
18.2k
            if (_res == NULL && PyErr_Occurred()) {
13671
0
                p->error_indicator = 1;
13672
0
                p->level--;
13673
0
                return NULL;
13674
0
            }
13675
18.2k
            goto done;
13676
18.2k
        }
13677
2.66M
        p->mark = _mark;
13678
2.66M
        D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13679
2.66M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr '>>' sum"));
13680
2.66M
    }
13681
2.66M
    if (p->call_invalid_rules) { // invalid_arithmetic
13682
444k
        if (p->error_indicator) {
13683
118
            p->level--;
13684
118
            return NULL;
13685
118
        }
13686
443k
        D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_arithmetic"));
13687
443k
        void *invalid_arithmetic_var;
13688
443k
        if (
13689
443k
            (invalid_arithmetic_var = invalid_arithmetic_rule(p))  // invalid_arithmetic
13690
443k
        )
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
443k
        p->mark = _mark;
13697
443k
        D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13698
443k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_arithmetic"));
13699
443k
    }
13700
2.66M
    { // sum
13701
2.66M
        if (p->error_indicator) {
13702
32.9k
            p->level--;
13703
32.9k
            return NULL;
13704
32.9k
        }
13705
2.63M
        D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum"));
13706
2.63M
        expr_ty sum_var;
13707
2.63M
        if (
13708
2.63M
            (sum_var = sum_rule(p))  // sum
13709
2.63M
        )
13710
2.19M
        {
13711
2.19M
            D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum"));
13712
2.19M
            _res = sum_var;
13713
2.19M
            goto done;
13714
2.19M
        }
13715
439k
        p->mark = _mark;
13716
439k
        D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13717
439k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum"));
13718
439k
    }
13719
0
    _res = NULL;
13720
2.66M
  done:
13721
2.66M
    p->level--;
13722
2.66M
    return _res;
13723
439k
}
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
8.95M
{
13731
8.95M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13732
2
        _Pypegen_stack_overflow(p);
13733
2
    }
13734
8.95M
    expr_ty _res = NULL;
13735
8.95M
    if (_PyPegen_is_memoized(p, sum_type, &_res)) {
13736
7.35M
        p->level--;
13737
7.35M
        return _res;
13738
7.35M
    }
13739
1.60M
    int _mark = p->mark;
13740
1.60M
    int _resmark = p->mark;
13741
2.98M
    while (1) {
13742
2.98M
        int tmpvar_6 = _PyPegen_update_memo(p, _mark, sum_type, _res);
13743
2.98M
        if (tmpvar_6) {
13744
0
            p->level--;
13745
0
            return _res;
13746
0
        }
13747
2.98M
        p->mark = _mark;
13748
2.98M
        void *_raw = sum_raw(p);
13749
2.98M
        if (p->error_indicator) {
13750
43.8k
            p->level--;
13751
43.8k
            return NULL;
13752
43.8k
        }
13753
2.94M
        if (_raw == NULL || p->mark <= _resmark)
13754
1.55M
            break;
13755
1.38M
        _resmark = p->mark;
13756
1.38M
        _res = _raw;
13757
1.38M
    }
13758
1.55M
    p->mark = _resmark;
13759
1.55M
    p->level--;
13760
1.55M
    return _res;
13761
1.60M
}
13762
static expr_ty
13763
sum_raw(Parser *p)
13764
2.98M
{
13765
2.98M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13766
2
        _Pypegen_stack_overflow(p);
13767
2
    }
13768
2.98M
    if (p->error_indicator) {
13769
3
        p->level--;
13770
3
        return NULL;
13771
3
    }
13772
2.98M
    expr_ty _res = NULL;
13773
2.98M
    int _mark = p->mark;
13774
2.98M
    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
2.98M
    int _start_lineno = p->tokens[_mark]->lineno;
13780
2.98M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13781
2.98M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13782
2.98M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13783
2.98M
    { // sum '+' term
13784
2.98M
        if (p->error_indicator) {
13785
0
            p->level--;
13786
0
            return NULL;
13787
0
        }
13788
2.98M
        D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum '+' term"));
13789
2.98M
        Token * _literal;
13790
2.98M
        expr_ty a;
13791
2.98M
        expr_ty b;
13792
2.98M
        if (
13793
2.98M
            (a = sum_rule(p))  // sum
13794
2.98M
            &&
13795
2.98M
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
13796
2.98M
            &&
13797
2.98M
            (b = term_rule(p))  // term
13798
2.98M
        )
13799
125k
        {
13800
125k
            D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum '+' term"));
13801
125k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13802
125k
            if (_token == NULL) {
13803
0
                p->level--;
13804
0
                return NULL;
13805
0
            }
13806
125k
            int _end_lineno = _token->end_lineno;
13807
125k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13808
125k
            int _end_col_offset = _token->end_col_offset;
13809
125k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13810
125k
            _res = _PyAST_BinOp ( a , Add , b , EXTRA );
13811
125k
            if (_res == NULL && PyErr_Occurred()) {
13812
0
                p->error_indicator = 1;
13813
0
                p->level--;
13814
0
                return NULL;
13815
0
            }
13816
125k
            goto done;
13817
125k
        }
13818
2.86M
        p->mark = _mark;
13819
2.86M
        D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13820
2.86M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum '+' term"));
13821
2.86M
    }
13822
0
    { // sum '-' term
13823
2.86M
        if (p->error_indicator) {
13824
1.82k
            p->level--;
13825
1.82k
            return NULL;
13826
1.82k
        }
13827
2.85M
        D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum '-' term"));
13828
2.85M
        Token * _literal;
13829
2.85M
        expr_ty a;
13830
2.85M
        expr_ty b;
13831
2.85M
        if (
13832
2.85M
            (a = sum_rule(p))  // sum
13833
2.85M
            &&
13834
2.85M
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
13835
2.85M
            &&
13836
2.85M
            (b = term_rule(p))  // term
13837
2.85M
        )
13838
128k
        {
13839
128k
            D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum '-' term"));
13840
128k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13841
128k
            if (_token == NULL) {
13842
0
                p->level--;
13843
0
                return NULL;
13844
0
            }
13845
128k
            int _end_lineno = _token->end_lineno;
13846
128k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13847
128k
            int _end_col_offset = _token->end_col_offset;
13848
128k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13849
128k
            _res = _PyAST_BinOp ( a , Sub , b , EXTRA );
13850
128k
            if (_res == NULL && PyErr_Occurred()) {
13851
0
                p->error_indicator = 1;
13852
0
                p->level--;
13853
0
                return NULL;
13854
0
            }
13855
128k
            goto done;
13856
128k
        }
13857
2.73M
        p->mark = _mark;
13858
2.73M
        D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13859
2.73M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum '-' term"));
13860
2.73M
    }
13861
0
    { // term
13862
2.73M
        if (p->error_indicator) {
13863
825
            p->level--;
13864
825
            return NULL;
13865
825
        }
13866
2.72M
        D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term"));
13867
2.72M
        expr_ty term_var;
13868
2.72M
        if (
13869
2.72M
            (term_var = term_rule(p))  // term
13870
2.72M
        )
13871
2.25M
        {
13872
2.25M
            D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term"));
13873
2.25M
            _res = term_var;
13874
2.25M
            goto done;
13875
2.25M
        }
13876
470k
        p->mark = _mark;
13877
470k
        D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13878
470k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term"));
13879
470k
    }
13880
0
    _res = NULL;
13881
2.98M
  done:
13882
2.98M
    p->level--;
13883
2.98M
    return _res;
13884
470k
}
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
19.9M
{
13899
19.9M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13900
2
        _Pypegen_stack_overflow(p);
13901
2
    }
13902
19.9M
    expr_ty _res = NULL;
13903
19.9M
    if (_PyPegen_is_memoized(p, term_type, &_res)) {
13904
18.1M
        p->level--;
13905
18.1M
        return _res;
13906
18.1M
    }
13907
1.85M
    int _mark = p->mark;
13908
1.85M
    int _resmark = p->mark;
13909
3.64M
    while (1) {
13910
3.64M
        int tmpvar_7 = _PyPegen_update_memo(p, _mark, term_type, _res);
13911
3.64M
        if (tmpvar_7) {
13912
0
            p->level--;
13913
0
            return _res;
13914
0
        }
13915
3.64M
        p->mark = _mark;
13916
3.64M
        void *_raw = term_raw(p);
13917
3.64M
        if (p->error_indicator) {
13918
43.8k
            p->level--;
13919
43.8k
            return NULL;
13920
43.8k
        }
13921
3.60M
        if (_raw == NULL || p->mark <= _resmark)
13922
1.81M
            break;
13923
1.78M
        _resmark = p->mark;
13924
1.78M
        _res = _raw;
13925
1.78M
    }
13926
1.81M
    p->mark = _resmark;
13927
1.81M
    p->level--;
13928
1.81M
    return _res;
13929
1.85M
}
13930
static expr_ty
13931
term_raw(Parser *p)
13932
3.64M
{
13933
3.64M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13934
1
        _Pypegen_stack_overflow(p);
13935
1
    }
13936
3.64M
    if (p->error_indicator) {
13937
1
        p->level--;
13938
1
        return NULL;
13939
1
    }
13940
3.64M
    expr_ty _res = NULL;
13941
3.64M
    int _mark = p->mark;
13942
3.64M
    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
3.64M
    int _start_lineno = p->tokens[_mark]->lineno;
13948
3.64M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13949
3.64M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13950
3.64M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13951
3.64M
    { // term '*' factor
13952
3.64M
        if (p->error_indicator) {
13953
0
            p->level--;
13954
0
            return NULL;
13955
0
        }
13956
3.64M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '*' factor"));
13957
3.64M
        Token * _literal;
13958
3.64M
        expr_ty a;
13959
3.64M
        expr_ty b;
13960
3.64M
        if (
13961
3.64M
            (a = term_rule(p))  // term
13962
3.64M
            &&
13963
3.64M
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
13964
3.64M
            &&
13965
3.64M
            (b = factor_rule(p))  // factor
13966
3.64M
        )
13967
195k
        {
13968
195k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '*' factor"));
13969
195k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13970
195k
            if (_token == NULL) {
13971
0
                p->level--;
13972
0
                return NULL;
13973
0
            }
13974
195k
            int _end_lineno = _token->end_lineno;
13975
195k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13976
195k
            int _end_col_offset = _token->end_col_offset;
13977
195k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13978
195k
            _res = _PyAST_BinOp ( a , Mult , b , EXTRA );
13979
195k
            if (_res == NULL && PyErr_Occurred()) {
13980
0
                p->error_indicator = 1;
13981
0
                p->level--;
13982
0
                return NULL;
13983
0
            }
13984
195k
            goto done;
13985
195k
        }
13986
3.44M
        p->mark = _mark;
13987
3.44M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
13988
3.44M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '*' factor"));
13989
3.44M
    }
13990
0
    { // term '/' factor
13991
3.44M
        if (p->error_indicator) {
13992
993
            p->level--;
13993
993
            return NULL;
13994
993
        }
13995
3.44M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '/' factor"));
13996
3.44M
        Token * _literal;
13997
3.44M
        expr_ty a;
13998
3.44M
        expr_ty b;
13999
3.44M
        if (
14000
3.44M
            (a = term_rule(p))  // term
14001
3.44M
            &&
14002
3.44M
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
14003
3.44M
            &&
14004
3.44M
            (b = factor_rule(p))  // factor
14005
3.44M
        )
14006
107k
        {
14007
107k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '/' factor"));
14008
107k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14009
107k
            if (_token == NULL) {
14010
0
                p->level--;
14011
0
                return NULL;
14012
0
            }
14013
107k
            int _end_lineno = _token->end_lineno;
14014
107k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14015
107k
            int _end_col_offset = _token->end_col_offset;
14016
107k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14017
107k
            _res = _PyAST_BinOp ( a , Div , b , EXTRA );
14018
107k
            if (_res == NULL && PyErr_Occurred()) {
14019
0
                p->error_indicator = 1;
14020
0
                p->level--;
14021
0
                return NULL;
14022
0
            }
14023
107k
            goto done;
14024
107k
        }
14025
3.34M
        p->mark = _mark;
14026
3.34M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14027
3.34M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '/' factor"));
14028
3.34M
    }
14029
0
    { // term '//' factor
14030
3.34M
        if (p->error_indicator) {
14031
363
            p->level--;
14032
363
            return NULL;
14033
363
        }
14034
3.34M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '//' factor"));
14035
3.34M
        Token * _literal;
14036
3.34M
        expr_ty a;
14037
3.34M
        expr_ty b;
14038
3.34M
        if (
14039
3.34M
            (a = term_rule(p))  // term
14040
3.34M
            &&
14041
3.34M
            (_literal = _PyPegen_expect_token(p, 47))  // token='//'
14042
3.34M
            &&
14043
3.34M
            (b = factor_rule(p))  // factor
14044
3.34M
        )
14045
22.6k
        {
14046
22.6k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '//' factor"));
14047
22.6k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14048
22.6k
            if (_token == NULL) {
14049
0
                p->level--;
14050
0
                return NULL;
14051
0
            }
14052
22.6k
            int _end_lineno = _token->end_lineno;
14053
22.6k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14054
22.6k
            int _end_col_offset = _token->end_col_offset;
14055
22.6k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14056
22.6k
            _res = _PyAST_BinOp ( a , FloorDiv , b , EXTRA );
14057
22.6k
            if (_res == NULL && PyErr_Occurred()) {
14058
0
                p->error_indicator = 1;
14059
0
                p->level--;
14060
0
                return NULL;
14061
0
            }
14062
22.6k
            goto done;
14063
22.6k
        }
14064
3.31M
        p->mark = _mark;
14065
3.31M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14066
3.31M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '//' factor"));
14067
3.31M
    }
14068
0
    { // term '%' factor
14069
3.31M
        if (p->error_indicator) {
14070
226
            p->level--;
14071
226
            return NULL;
14072
226
        }
14073
3.31M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '%' factor"));
14074
3.31M
        Token * _literal;
14075
3.31M
        expr_ty a;
14076
3.31M
        expr_ty b;
14077
3.31M
        if (
14078
3.31M
            (a = term_rule(p))  // term
14079
3.31M
            &&
14080
3.31M
            (_literal = _PyPegen_expect_token(p, 24))  // token='%'
14081
3.31M
            &&
14082
3.31M
            (b = factor_rule(p))  // factor
14083
3.31M
        )
14084
62.2k
        {
14085
62.2k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '%' factor"));
14086
62.2k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14087
62.2k
            if (_token == NULL) {
14088
0
                p->level--;
14089
0
                return NULL;
14090
0
            }
14091
62.2k
            int _end_lineno = _token->end_lineno;
14092
62.2k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14093
62.2k
            int _end_col_offset = _token->end_col_offset;
14094
62.2k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14095
62.2k
            _res = _PyAST_BinOp ( a , Mod , b , EXTRA );
14096
62.2k
            if (_res == NULL && PyErr_Occurred()) {
14097
0
                p->error_indicator = 1;
14098
0
                p->level--;
14099
0
                return NULL;
14100
0
            }
14101
62.2k
            goto done;
14102
62.2k
        }
14103
3.25M
        p->mark = _mark;
14104
3.25M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14105
3.25M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '%' factor"));
14106
3.25M
    }
14107
0
    { // term '@' factor
14108
3.25M
        if (p->error_indicator) {
14109
394
            p->level--;
14110
394
            return NULL;
14111
394
        }
14112
3.25M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '@' factor"));
14113
3.25M
        Token * _literal;
14114
3.25M
        expr_ty a;
14115
3.25M
        expr_ty b;
14116
3.25M
        if (
14117
3.25M
            (a = term_rule(p))  // term
14118
3.25M
            &&
14119
3.25M
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
14120
3.25M
            &&
14121
3.25M
            (b = factor_rule(p))  // factor
14122
3.25M
        )
14123
11.1k
        {
14124
11.1k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '@' factor"));
14125
11.1k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14126
11.1k
            if (_token == NULL) {
14127
0
                p->level--;
14128
0
                return NULL;
14129
0
            }
14130
11.1k
            int _end_lineno = _token->end_lineno;
14131
11.1k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14132
11.1k
            int _end_col_offset = _token->end_col_offset;
14133
11.1k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14134
11.1k
            _res = CHECK_VERSION ( expr_ty , 5 , "The '@' operator is" , _PyAST_BinOp ( a , MatMult , b , EXTRA ) );
14135
11.1k
            if (_res == NULL && PyErr_Occurred()) {
14136
0
                p->error_indicator = 1;
14137
0
                p->level--;
14138
0
                return NULL;
14139
0
            }
14140
11.1k
            goto done;
14141
11.1k
        }
14142
3.24M
        p->mark = _mark;
14143
3.24M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14144
3.24M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '@' factor"));
14145
3.24M
    }
14146
3.24M
    if (p->call_invalid_rules) { // invalid_factor
14147
480k
        if (p->error_indicator) {
14148
494
            p->level--;
14149
494
            return NULL;
14150
494
        }
14151
480k
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_factor"));
14152
480k
        void *invalid_factor_var;
14153
480k
        if (
14154
480k
            (invalid_factor_var = invalid_factor_rule(p))  // invalid_factor
14155
480k
        )
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
480k
        p->mark = _mark;
14162
480k
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14163
480k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_factor"));
14164
480k
    }
14165
3.24M
    { // factor
14166
3.24M
        if (p->error_indicator) {
14167
291
            p->level--;
14168
291
            return NULL;
14169
291
        }
14170
3.24M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "factor"));
14171
3.24M
        expr_ty factor_var;
14172
3.24M
        if (
14173
3.24M
            (factor_var = factor_rule(p))  // factor
14174
3.24M
        )
14175
2.77M
        {
14176
2.77M
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "factor"));
14177
2.77M
            _res = factor_var;
14178
2.77M
            goto done;
14179
2.77M
        }
14180
472k
        p->mark = _mark;
14181
472k
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14182
472k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "factor"));
14183
472k
    }
14184
0
    _res = NULL;
14185
3.64M
  done:
14186
3.64M
    p->level--;
14187
3.64M
    return _res;
14188
472k
}
14189
14190
// factor: '+' factor | '-' factor | '~' factor | power
14191
static expr_ty
14192
factor_rule(Parser *p)
14193
4.46M
{
14194
4.46M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14195
2
        _Pypegen_stack_overflow(p);
14196
2
    }
14197
4.46M
    if (p->error_indicator) {
14198
2
        p->level--;
14199
2
        return NULL;
14200
2
    }
14201
4.46M
    expr_ty _res = NULL;
14202
4.46M
    if (_PyPegen_is_memoized(p, factor_type, &_res)) {
14203
1.39M
        p->level--;
14204
1.39M
        return _res;
14205
1.39M
    }
14206
3.07M
    int _mark = p->mark;
14207
3.07M
    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
3.07M
    int _start_lineno = p->tokens[_mark]->lineno;
14213
3.07M
    UNUSED(_start_lineno); // Only used by EXTRA macro
14214
3.07M
    int _start_col_offset = p->tokens[_mark]->col_offset;
14215
3.07M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14216
3.07M
    { // '+' factor
14217
3.07M
        if (p->error_indicator) {
14218
0
            p->level--;
14219
0
            return NULL;
14220
0
        }
14221
3.07M
        D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+' factor"));
14222
3.07M
        Token * _literal;
14223
3.07M
        expr_ty a;
14224
3.07M
        if (
14225
3.07M
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
14226
3.07M
            &&
14227
3.07M
            (a = factor_rule(p))  // factor
14228
3.07M
        )
14229
391k
        {
14230
391k
            D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+' factor"));
14231
391k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14232
391k
            if (_token == NULL) {
14233
0
                p->level--;
14234
0
                return NULL;
14235
0
            }
14236
391k
            int _end_lineno = _token->end_lineno;
14237
391k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14238
391k
            int _end_col_offset = _token->end_col_offset;
14239
391k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14240
391k
            _res = _PyAST_UnaryOp ( UAdd , a , EXTRA );
14241
391k
            if (_res == NULL && PyErr_Occurred()) {
14242
0
                p->error_indicator = 1;
14243
0
                p->level--;
14244
0
                return NULL;
14245
0
            }
14246
391k
            goto done;
14247
391k
        }
14248
2.68M
        p->mark = _mark;
14249
2.68M
        D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14250
2.68M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+' factor"));
14251
2.68M
    }
14252
0
    { // '-' factor
14253
2.68M
        if (p->error_indicator) {
14254
36.3k
            p->level--;
14255
36.3k
            return NULL;
14256
36.3k
        }
14257
2.64M
        D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' factor"));
14258
2.64M
        Token * _literal;
14259
2.64M
        expr_ty a;
14260
2.64M
        if (
14261
2.64M
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
14262
2.64M
            &&
14263
2.64M
            (a = factor_rule(p))  // factor
14264
2.64M
        )
14265
226k
        {
14266
226k
            D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' factor"));
14267
226k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14268
226k
            if (_token == NULL) {
14269
0
                p->level--;
14270
0
                return NULL;
14271
0
            }
14272
226k
            int _end_lineno = _token->end_lineno;
14273
226k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14274
226k
            int _end_col_offset = _token->end_col_offset;
14275
226k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14276
226k
            _res = _PyAST_UnaryOp ( USub , a , EXTRA );
14277
226k
            if (_res == NULL && PyErr_Occurred()) {
14278
0
                p->error_indicator = 1;
14279
0
                p->level--;
14280
0
                return NULL;
14281
0
            }
14282
226k
            goto done;
14283
226k
        }
14284
2.42M
        p->mark = _mark;
14285
2.42M
        D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14286
2.42M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' factor"));
14287
2.42M
    }
14288
0
    { // '~' factor
14289
2.42M
        if (p->error_indicator) {
14290
1.84k
            p->level--;
14291
1.84k
            return NULL;
14292
1.84k
        }
14293
2.41M
        D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'~' factor"));
14294
2.41M
        Token * _literal;
14295
2.41M
        expr_ty a;
14296
2.41M
        if (
14297
2.41M
            (_literal = _PyPegen_expect_token(p, 31))  // token='~'
14298
2.41M
            &&
14299
2.41M
            (a = factor_rule(p))  // factor
14300
2.41M
        )
14301
20.9k
        {
14302
20.9k
            D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'~' factor"));
14303
20.9k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14304
20.9k
            if (_token == NULL) {
14305
0
                p->level--;
14306
0
                return NULL;
14307
0
            }
14308
20.9k
            int _end_lineno = _token->end_lineno;
14309
20.9k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14310
20.9k
            int _end_col_offset = _token->end_col_offset;
14311
20.9k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14312
20.9k
            _res = _PyAST_UnaryOp ( Invert , a , EXTRA );
14313
20.9k
            if (_res == NULL && PyErr_Occurred()) {
14314
0
                p->error_indicator = 1;
14315
0
                p->level--;
14316
0
                return NULL;
14317
0
            }
14318
20.9k
            goto done;
14319
20.9k
        }
14320
2.39M
        p->mark = _mark;
14321
2.39M
        D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14322
2.39M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'~' factor"));
14323
2.39M
    }
14324
0
    { // power
14325
2.39M
        if (p->error_indicator) {
14326
349
            p->level--;
14327
349
            return NULL;
14328
349
        }
14329
2.39M
        D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "power"));
14330
2.39M
        expr_ty power_var;
14331
2.39M
        if (
14332
2.39M
            (power_var = power_rule(p))  // power
14333
2.39M
        )
14334
1.86M
        {
14335
1.86M
            D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "power"));
14336
1.86M
            _res = power_var;
14337
1.86M
            goto done;
14338
1.86M
        }
14339
531k
        p->mark = _mark;
14340
531k
        D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14341
531k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "power"));
14342
531k
    }
14343
0
    _res = NULL;
14344
3.03M
  done:
14345
3.03M
    _PyPegen_insert_memo(p, _mark, factor_type, _res);
14346
3.03M
    p->level--;
14347
3.03M
    return _res;
14348
531k
}
14349
14350
// power: await_primary '**' factor | await_primary
14351
static expr_ty
14352
power_rule(Parser *p)
14353
2.39M
{
14354
2.39M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14355
1
        _Pypegen_stack_overflow(p);
14356
1
    }
14357
2.39M
    if (p->error_indicator) {
14358
1
        p->level--;
14359
1
        return NULL;
14360
1
    }
14361
2.39M
    expr_ty _res = NULL;
14362
2.39M
    int _mark = p->mark;
14363
2.39M
    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
2.39M
    int _start_lineno = p->tokens[_mark]->lineno;
14369
2.39M
    UNUSED(_start_lineno); // Only used by EXTRA macro
14370
2.39M
    int _start_col_offset = p->tokens[_mark]->col_offset;
14371
2.39M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14372
2.39M
    { // await_primary '**' factor
14373
2.39M
        if (p->error_indicator) {
14374
0
            p->level--;
14375
0
            return NULL;
14376
0
        }
14377
2.39M
        D(fprintf(stderr, "%*c> power[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "await_primary '**' factor"));
14378
2.39M
        Token * _literal;
14379
2.39M
        expr_ty a;
14380
2.39M
        expr_ty b;
14381
2.39M
        if (
14382
2.39M
            (a = await_primary_rule(p))  // await_primary
14383
2.39M
            &&
14384
2.39M
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
14385
2.39M
            &&
14386
2.39M
            (b = factor_rule(p))  // factor
14387
2.39M
        )
14388
89.0k
        {
14389
89.0k
            D(fprintf(stderr, "%*c+ power[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "await_primary '**' factor"));
14390
89.0k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14391
89.0k
            if (_token == NULL) {
14392
0
                p->level--;
14393
0
                return NULL;
14394
0
            }
14395
89.0k
            int _end_lineno = _token->end_lineno;
14396
89.0k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14397
89.0k
            int _end_col_offset = _token->end_col_offset;
14398
89.0k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14399
89.0k
            _res = _PyAST_BinOp ( a , Pow , b , EXTRA );
14400
89.0k
            if (_res == NULL && PyErr_Occurred()) {
14401
0
                p->error_indicator = 1;
14402
0
                p->level--;
14403
0
                return NULL;
14404
0
            }
14405
89.0k
            goto done;
14406
89.0k
        }
14407
2.30M
        p->mark = _mark;
14408
2.30M
        D(fprintf(stderr, "%*c%s power[%d-%d]: %s failed!\n", p->level, ' ',
14409
2.30M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "await_primary '**' factor"));
14410
2.30M
    }
14411
0
    { // await_primary
14412
2.30M
        if (p->error_indicator) {
14413
44.0k
            p->level--;
14414
44.0k
            return NULL;
14415
44.0k
        }
14416
2.26M
        D(fprintf(stderr, "%*c> power[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "await_primary"));
14417
2.26M
        expr_ty await_primary_var;
14418
2.26M
        if (
14419
2.26M
            (await_primary_var = await_primary_rule(p))  // await_primary
14420
2.26M
        )
14421
1.77M
        {
14422
1.77M
            D(fprintf(stderr, "%*c+ power[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "await_primary"));
14423
1.77M
            _res = await_primary_var;
14424
1.77M
            goto done;
14425
1.77M
        }
14426
487k
        p->mark = _mark;
14427
487k
        D(fprintf(stderr, "%*c%s power[%d-%d]: %s failed!\n", p->level, ' ',
14428
487k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "await_primary"));
14429
487k
    }
14430
0
    _res = NULL;
14431
2.35M
  done:
14432
2.35M
    p->level--;
14433
2.35M
    return _res;
14434
487k
}
14435
14436
// await_primary: 'await' primary | primary
14437
static expr_ty
14438
await_primary_rule(Parser *p)
14439
4.66M
{
14440
4.66M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14441
1
        _Pypegen_stack_overflow(p);
14442
1
    }
14443
4.66M
    if (p->error_indicator) {
14444
1
        p->level--;
14445
1
        return NULL;
14446
1
    }
14447
4.66M
    expr_ty _res = NULL;
14448
4.66M
    if (_PyPegen_is_memoized(p, await_primary_type, &_res)) {
14449
2.26M
        p->level--;
14450
2.26M
        return _res;
14451
2.26M
    }
14452
2.39M
    int _mark = p->mark;
14453
2.39M
    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
2.39M
    int _start_lineno = p->tokens[_mark]->lineno;
14459
2.39M
    UNUSED(_start_lineno); // Only used by EXTRA macro
14460
2.39M
    int _start_col_offset = p->tokens[_mark]->col_offset;
14461
2.39M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14462
2.39M
    { // 'await' primary
14463
2.39M
        if (p->error_indicator) {
14464
0
            p->level--;
14465
0
            return NULL;
14466
0
        }
14467
2.39M
        D(fprintf(stderr, "%*c> await_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'await' primary"));
14468
2.39M
        Token * _keyword;
14469
2.39M
        expr_ty a;
14470
2.39M
        if (
14471
2.39M
            (_keyword = _PyPegen_expect_token(p, 598))  // token='await'
14472
2.39M
            &&
14473
2.39M
            (a = primary_rule(p))  // primary
14474
2.39M
        )
14475
933
        {
14476
933
            D(fprintf(stderr, "%*c+ await_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'await' primary"));
14477
933
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14478
933
            if (_token == NULL) {
14479
0
                p->level--;
14480
0
                return NULL;
14481
0
            }
14482
933
            int _end_lineno = _token->end_lineno;
14483
933
            UNUSED(_end_lineno); // Only used by EXTRA macro
14484
933
            int _end_col_offset = _token->end_col_offset;
14485
933
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14486
933
            _res = CHECK_VERSION ( expr_ty , 5 , "Await expressions are" , _PyAST_Await ( a , EXTRA ) );
14487
933
            if (_res == NULL && PyErr_Occurred()) {
14488
0
                p->error_indicator = 1;
14489
0
                p->level--;
14490
0
                return NULL;
14491
0
            }
14492
933
            goto done;
14493
933
        }
14494
2.39M
        p->mark = _mark;
14495
2.39M
        D(fprintf(stderr, "%*c%s await_primary[%d-%d]: %s failed!\n", p->level, ' ',
14496
2.39M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'await' primary"));
14497
2.39M
    }
14498
0
    { // primary
14499
2.39M
        if (p->error_indicator) {
14500
77
            p->level--;
14501
77
            return NULL;
14502
77
        }
14503
2.39M
        D(fprintf(stderr, "%*c> await_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary"));
14504
2.39M
        expr_ty primary_var;
14505
2.39M
        if (
14506
2.39M
            (primary_var = primary_rule(p))  // primary
14507
2.39M
        )
14508
1.86M
        {
14509
1.86M
            D(fprintf(stderr, "%*c+ await_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary"));
14510
1.86M
            _res = primary_var;
14511
1.86M
            goto done;
14512
1.86M
        }
14513
531k
        p->mark = _mark;
14514
531k
        D(fprintf(stderr, "%*c%s await_primary[%d-%d]: %s failed!\n", p->level, ' ',
14515
531k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary"));
14516
531k
    }
14517
0
    _res = NULL;
14518
2.39M
  done:
14519
2.39M
    _PyPegen_insert_memo(p, _mark, await_primary_type, _res);
14520
2.39M
    p->level--;
14521
2.39M
    return _res;
14522
531k
}
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
19.7M
{
14535
19.7M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14536
2
        _Pypegen_stack_overflow(p);
14537
2
    }
14538
19.7M
    expr_ty _res = NULL;
14539
19.7M
    if (_PyPegen_is_memoized(p, primary_type, &_res)) {
14540
17.3M
        p->level--;
14541
17.3M
        return _res;
14542
17.3M
    }
14543
2.39M
    int _mark = p->mark;
14544
2.39M
    int _resmark = p->mark;
14545
4.38M
    while (1) {
14546
4.38M
        int tmpvar_8 = _PyPegen_update_memo(p, _mark, primary_type, _res);
14547
4.38M
        if (tmpvar_8) {
14548
0
            p->level--;
14549
0
            return _res;
14550
0
        }
14551
4.38M
        p->mark = _mark;
14552
4.38M
        void *_raw = primary_raw(p);
14553
4.38M
        if (p->error_indicator) {
14554
43.6k
            p->level--;
14555
43.6k
            return NULL;
14556
43.6k
        }
14557
4.33M
        if (_raw == NULL || p->mark <= _resmark)
14558
2.35M
            break;
14559
1.98M
        _resmark = p->mark;
14560
1.98M
        _res = _raw;
14561
1.98M
    }
14562
2.35M
    p->mark = _resmark;
14563
2.35M
    p->level--;
14564
2.35M
    return _res;
14565
2.39M
}
14566
static expr_ty
14567
primary_raw(Parser *p)
14568
4.38M
{
14569
4.38M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14570
2
        _Pypegen_stack_overflow(p);
14571
2
    }
14572
4.38M
    if (p->error_indicator) {
14573
2
        p->level--;
14574
2
        return NULL;
14575
2
    }
14576
4.38M
    expr_ty _res = NULL;
14577
4.38M
    int _mark = p->mark;
14578
4.38M
    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
4.38M
    int _start_lineno = p->tokens[_mark]->lineno;
14584
4.38M
    UNUSED(_start_lineno); // Only used by EXTRA macro
14585
4.38M
    int _start_col_offset = p->tokens[_mark]->col_offset;
14586
4.38M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14587
4.38M
    { // primary '.' NAME
14588
4.38M
        if (p->error_indicator) {
14589
0
            p->level--;
14590
0
            return NULL;
14591
0
        }
14592
4.38M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '.' NAME"));
14593
4.38M
        Token * _literal;
14594
4.38M
        expr_ty a;
14595
4.38M
        expr_ty b;
14596
4.38M
        if (
14597
4.38M
            (a = primary_rule(p))  // primary
14598
4.38M
            &&
14599
4.38M
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
14600
4.38M
            &&
14601
4.38M
            (b = _PyPegen_name_token(p))  // NAME
14602
4.38M
        )
14603
26.4k
        {
14604
26.4k
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '.' NAME"));
14605
26.4k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14606
26.4k
            if (_token == NULL) {
14607
0
                p->level--;
14608
0
                return NULL;
14609
0
            }
14610
26.4k
            int _end_lineno = _token->end_lineno;
14611
26.4k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14612
26.4k
            int _end_col_offset = _token->end_col_offset;
14613
26.4k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14614
26.4k
            _res = _PyAST_Attribute ( a , b -> v . Name . id , Load , EXTRA );
14615
26.4k
            if (_res == NULL && PyErr_Occurred()) {
14616
0
                p->error_indicator = 1;
14617
0
                p->level--;
14618
0
                return NULL;
14619
0
            }
14620
26.4k
            goto done;
14621
26.4k
        }
14622
4.35M
        p->mark = _mark;
14623
4.35M
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14624
4.35M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '.' NAME"));
14625
4.35M
    }
14626
0
    { // primary genexp
14627
4.35M
        if (p->error_indicator) {
14628
735
            p->level--;
14629
735
            return NULL;
14630
735
        }
14631
4.35M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary genexp"));
14632
4.35M
        expr_ty a;
14633
4.35M
        expr_ty b;
14634
4.35M
        if (
14635
4.35M
            (a = primary_rule(p))  // primary
14636
4.35M
            &&
14637
4.35M
            (b = genexp_rule(p))  // genexp
14638
4.35M
        )
14639
1.81k
        {
14640
1.81k
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary genexp"));
14641
1.81k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14642
1.81k
            if (_token == NULL) {
14643
0
                p->level--;
14644
0
                return NULL;
14645
0
            }
14646
1.81k
            int _end_lineno = _token->end_lineno;
14647
1.81k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14648
1.81k
            int _end_col_offset = _token->end_col_offset;
14649
1.81k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14650
1.81k
            _res = _PyAST_Call ( a , CHECK ( asdl_expr_seq* , ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
14651
1.81k
            if (_res == NULL && PyErr_Occurred()) {
14652
0
                p->error_indicator = 1;
14653
0
                p->level--;
14654
0
                return NULL;
14655
0
            }
14656
1.81k
            goto done;
14657
1.81k
        }
14658
4.35M
        p->mark = _mark;
14659
4.35M
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14660
4.35M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary genexp"));
14661
4.35M
    }
14662
0
    { // primary '(' arguments? ')'
14663
4.35M
        if (p->error_indicator) {
14664
5.96k
            p->level--;
14665
5.96k
            return NULL;
14666
5.96k
        }
14667
4.34M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '(' arguments? ')'"));
14668
4.34M
        Token * _literal;
14669
4.34M
        Token * _literal_1;
14670
4.34M
        expr_ty a;
14671
4.34M
        void *b;
14672
4.34M
        if (
14673
4.34M
            (a = primary_rule(p))  // primary
14674
4.34M
            &&
14675
4.34M
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
14676
4.34M
            &&
14677
4.34M
            (b = arguments_rule(p), !p->error_indicator)  // arguments?
14678
4.34M
            &&
14679
4.34M
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
14680
4.34M
        )
14681
43.9k
        {
14682
43.9k
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '(' arguments? ')'"));
14683
43.9k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14684
43.9k
            if (_token == NULL) {
14685
0
                p->level--;
14686
0
                return NULL;
14687
0
            }
14688
43.9k
            int _end_lineno = _token->end_lineno;
14689
43.9k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14690
43.9k
            int _end_col_offset = _token->end_col_offset;
14691
43.9k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14692
43.9k
            _res = _PyAST_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
14693
43.9k
            if (_res == NULL && PyErr_Occurred()) {
14694
0
                p->error_indicator = 1;
14695
0
                p->level--;
14696
0
                return NULL;
14697
0
            }
14698
43.9k
            goto done;
14699
43.9k
        }
14700
4.30M
        p->mark = _mark;
14701
4.30M
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14702
4.30M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '(' arguments? ')'"));
14703
4.30M
    }
14704
0
    { // primary '[' slices ']'
14705
4.30M
        if (p->error_indicator) {
14706
4.86k
            p->level--;
14707
4.86k
            return NULL;
14708
4.86k
        }
14709
4.29M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '[' slices ']'"));
14710
4.29M
        Token * _literal;
14711
4.29M
        Token * _literal_1;
14712
4.29M
        expr_ty a;
14713
4.29M
        expr_ty b;
14714
4.29M
        if (
14715
4.29M
            (a = primary_rule(p))  // primary
14716
4.29M
            &&
14717
4.29M
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
14718
4.29M
            &&
14719
4.29M
            (b = slices_rule(p))  // slices
14720
4.29M
            &&
14721
4.29M
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
14722
4.29M
        )
14723
30.5k
        {
14724
30.5k
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '[' slices ']'"));
14725
30.5k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14726
30.5k
            if (_token == NULL) {
14727
0
                p->level--;
14728
0
                return NULL;
14729
0
            }
14730
30.5k
            int _end_lineno = _token->end_lineno;
14731
30.5k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14732
30.5k
            int _end_col_offset = _token->end_col_offset;
14733
30.5k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14734
30.5k
            _res = _PyAST_Subscript ( a , b , Load , EXTRA );
14735
30.5k
            if (_res == NULL && PyErr_Occurred()) {
14736
0
                p->error_indicator = 1;
14737
0
                p->level--;
14738
0
                return NULL;
14739
0
            }
14740
30.5k
            goto done;
14741
30.5k
        }
14742
4.26M
        p->mark = _mark;
14743
4.26M
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14744
4.26M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '[' slices ']'"));
14745
4.26M
    }
14746
0
    { // atom
14747
4.26M
        if (p->error_indicator) {
14748
1.95k
            p->level--;
14749
1.95k
            return NULL;
14750
1.95k
        }
14751
4.26M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "atom"));
14752
4.26M
        expr_ty atom_var;
14753
4.26M
        if (
14754
4.26M
            (atom_var = atom_rule(p))  // atom
14755
4.26M
        )
14756
3.74M
        {
14757
3.74M
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "atom"));
14758
3.74M
            _res = atom_var;
14759
3.74M
            goto done;
14760
3.74M
        }
14761
518k
        p->mark = _mark;
14762
518k
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14763
518k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "atom"));
14764
518k
    }
14765
0
    _res = NULL;
14766
4.36M
  done:
14767
4.36M
    p->level--;
14768
4.36M
    return _res;
14769
518k
}
14770
14771
// slices: slice !',' | ','.(slice | starred_expression)+ ','?
14772
static expr_ty
14773
slices_rule(Parser *p)
14774
63.6k
{
14775
63.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14776
0
        _Pypegen_stack_overflow(p);
14777
0
    }
14778
63.6k
    if (p->error_indicator) {
14779
0
        p->level--;
14780
0
        return NULL;
14781
0
    }
14782
63.6k
    expr_ty _res = NULL;
14783
63.6k
    int _mark = p->mark;
14784
63.6k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14785
22
        p->error_indicator = 1;
14786
22
        p->level--;
14787
22
        return NULL;
14788
22
    }
14789
63.5k
    int _start_lineno = p->tokens[_mark]->lineno;
14790
63.5k
    UNUSED(_start_lineno); // Only used by EXTRA macro
14791
63.5k
    int _start_col_offset = p->tokens[_mark]->col_offset;
14792
63.5k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14793
63.5k
    { // slice !','
14794
63.5k
        if (p->error_indicator) {
14795
0
            p->level--;
14796
0
            return NULL;
14797
0
        }
14798
63.5k
        D(fprintf(stderr, "%*c> slices[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice !','"));
14799
63.5k
        expr_ty a;
14800
63.5k
        if (
14801
63.5k
            (a = slice_rule(p))  // slice
14802
63.5k
            &&
14803
63.5k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
14804
63.5k
        )
14805
48.3k
        {
14806
48.3k
            D(fprintf(stderr, "%*c+ slices[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice !','"));
14807
48.3k
            _res = a;
14808
48.3k
            if (_res == NULL && PyErr_Occurred()) {
14809
0
                p->error_indicator = 1;
14810
0
                p->level--;
14811
0
                return NULL;
14812
0
            }
14813
48.3k
            goto done;
14814
48.3k
        }
14815
15.2k
        p->mark = _mark;
14816
15.2k
        D(fprintf(stderr, "%*c%s slices[%d-%d]: %s failed!\n", p->level, ' ',
14817
15.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice !','"));
14818
15.2k
    }
14819
0
    { // ','.(slice | starred_expression)+ ','?
14820
15.2k
        if (p->error_indicator) {
14821
952
            p->level--;
14822
952
            return NULL;
14823
952
        }
14824
14.2k
        D(fprintf(stderr, "%*c> slices[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.(slice | starred_expression)+ ','?"));
14825
14.2k
        void *_opt_var;
14826
14.2k
        UNUSED(_opt_var); // Silence compiler warnings
14827
14.2k
        asdl_expr_seq* a;
14828
14.2k
        if (
14829
14.2k
            (a = (asdl_expr_seq*)_gather_64_rule(p))  // ','.(slice | starred_expression)+
14830
14.2k
            &&
14831
14.2k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
14832
14.2k
        )
14833
11.2k
        {
14834
11.2k
            D(fprintf(stderr, "%*c+ slices[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.(slice | starred_expression)+ ','?"));
14835
11.2k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14836
11.2k
            if (_token == NULL) {
14837
0
                p->level--;
14838
0
                return NULL;
14839
0
            }
14840
11.2k
            int _end_lineno = _token->end_lineno;
14841
11.2k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14842
11.2k
            int _end_col_offset = _token->end_col_offset;
14843
11.2k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14844
11.2k
            _res = _PyAST_Tuple ( a , Load , EXTRA );
14845
11.2k
            if (_res == NULL && PyErr_Occurred()) {
14846
0
                p->error_indicator = 1;
14847
0
                p->level--;
14848
0
                return NULL;
14849
0
            }
14850
11.2k
            goto done;
14851
11.2k
        }
14852
2.99k
        p->mark = _mark;
14853
2.99k
        D(fprintf(stderr, "%*c%s slices[%d-%d]: %s failed!\n", p->level, ' ',
14854
2.99k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.(slice | starred_expression)+ ','?"));
14855
2.99k
    }
14856
0
    _res = NULL;
14857
62.6k
  done:
14858
62.6k
    p->level--;
14859
62.6k
    return _res;
14860
2.99k
}
14861
14862
// slice: expression? ':' expression? [':' expression?] | named_expression
14863
static expr_ty
14864
slice_rule(Parser *p)
14865
126k
{
14866
126k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14867
1
        _Pypegen_stack_overflow(p);
14868
1
    }
14869
126k
    if (p->error_indicator) {
14870
1
        p->level--;
14871
1
        return NULL;
14872
1
    }
14873
126k
    expr_ty _res = NULL;
14874
126k
    int _mark = p->mark;
14875
126k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14876
6
        p->error_indicator = 1;
14877
6
        p->level--;
14878
6
        return NULL;
14879
6
    }
14880
126k
    int _start_lineno = p->tokens[_mark]->lineno;
14881
126k
    UNUSED(_start_lineno); // Only used by EXTRA macro
14882
126k
    int _start_col_offset = p->tokens[_mark]->col_offset;
14883
126k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14884
126k
    { // expression? ':' expression? [':' expression?]
14885
126k
        if (p->error_indicator) {
14886
0
            p->level--;
14887
0
            return NULL;
14888
0
        }
14889
126k
        D(fprintf(stderr, "%*c> slice[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14890
126k
        Token * _literal;
14891
126k
        void *a;
14892
126k
        void *b;
14893
126k
        void *c;
14894
126k
        if (
14895
126k
            (a = expression_rule(p), !p->error_indicator)  // expression?
14896
126k
            &&
14897
126k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
14898
126k
            &&
14899
126k
            (b = expression_rule(p), !p->error_indicator)  // expression?
14900
126k
            &&
14901
126k
            (c = _tmp_65_rule(p), !p->error_indicator)  // [':' expression?]
14902
126k
        )
14903
46.7k
        {
14904
46.7k
            D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14905
46.7k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14906
46.7k
            if (_token == NULL) {
14907
0
                p->level--;
14908
0
                return NULL;
14909
0
            }
14910
46.7k
            int _end_lineno = _token->end_lineno;
14911
46.7k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14912
46.7k
            int _end_col_offset = _token->end_col_offset;
14913
46.7k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14914
46.7k
            _res = _PyAST_Slice ( a , b , c , EXTRA );
14915
46.7k
            if (_res == NULL && PyErr_Occurred()) {
14916
0
                p->error_indicator = 1;
14917
0
                p->level--;
14918
0
                return NULL;
14919
0
            }
14920
46.7k
            goto done;
14921
46.7k
        }
14922
80.1k
        p->mark = _mark;
14923
80.1k
        D(fprintf(stderr, "%*c%s slice[%d-%d]: %s failed!\n", p->level, ' ',
14924
80.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14925
80.1k
    }
14926
0
    { // named_expression
14927
80.1k
        if (p->error_indicator) {
14928
1.30k
            p->level--;
14929
1.30k
            return NULL;
14930
1.30k
        }
14931
78.8k
        D(fprintf(stderr, "%*c> slice[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
14932
78.8k
        expr_ty a;
14933
78.8k
        if (
14934
78.8k
            (a = named_expression_rule(p))  // named_expression
14935
78.8k
        )
14936
63.1k
        {
14937
63.1k
            D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
14938
63.1k
            _res = a;
14939
63.1k
            if (_res == NULL && PyErr_Occurred()) {
14940
0
                p->error_indicator = 1;
14941
0
                p->level--;
14942
0
                return NULL;
14943
0
            }
14944
63.1k
            goto done;
14945
63.1k
        }
14946
15.7k
        p->mark = _mark;
14947
15.7k
        D(fprintf(stderr, "%*c%s slice[%d-%d]: %s failed!\n", p->level, ' ',
14948
15.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
14949
15.7k
    }
14950
0
    _res = NULL;
14951
125k
  done:
14952
125k
    p->level--;
14953
125k
    return _res;
14954
15.7k
}
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
4.91M
{
14970
4.91M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14971
0
        _Pypegen_stack_overflow(p);
14972
0
    }
14973
4.91M
    if (p->error_indicator) {
14974
0
        p->level--;
14975
0
        return NULL;
14976
0
    }
14977
4.91M
    expr_ty _res = NULL;
14978
4.91M
    int _mark = p->mark;
14979
4.91M
    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
4.91M
    int _start_lineno = p->tokens[_mark]->lineno;
14985
4.91M
    UNUSED(_start_lineno); // Only used by EXTRA macro
14986
4.91M
    int _start_col_offset = p->tokens[_mark]->col_offset;
14987
4.91M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14988
4.91M
    { // NAME
14989
4.91M
        if (p->error_indicator) {
14990
0
            p->level--;
14991
0
            return NULL;
14992
0
        }
14993
4.91M
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
14994
4.91M
        expr_ty name_var;
14995
4.91M
        if (
14996
4.91M
            (name_var = _PyPegen_name_token(p))  // NAME
14997
4.91M
        )
14998
1.76M
        {
14999
1.76M
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
15000
1.76M
            _res = name_var;
15001
1.76M
            goto done;
15002
1.76M
        }
15003
3.14M
        p->mark = _mark;
15004
3.14M
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15005
3.14M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
15006
3.14M
    }
15007
0
    { // 'True'
15008
3.14M
        if (p->error_indicator) {
15009
1
            p->level--;
15010
1
            return NULL;
15011
1
        }
15012
3.14M
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
15013
3.14M
        Token * _keyword;
15014
3.14M
        if (
15015
3.14M
            (_keyword = _PyPegen_expect_token(p, 623))  // token='True'
15016
3.14M
        )
15017
14.2k
        {
15018
14.2k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
15019
14.2k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15020
14.2k
            if (_token == NULL) {
15021
0
                p->level--;
15022
0
                return NULL;
15023
0
            }
15024
14.2k
            int _end_lineno = _token->end_lineno;
15025
14.2k
            UNUSED(_end_lineno); // Only used by EXTRA macro
15026
14.2k
            int _end_col_offset = _token->end_col_offset;
15027
14.2k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15028
14.2k
            _res = _PyAST_Constant ( Py_True , NULL , EXTRA );
15029
14.2k
            if (_res == NULL && PyErr_Occurred()) {
15030
0
                p->error_indicator = 1;
15031
0
                p->level--;
15032
0
                return NULL;
15033
0
            }
15034
14.2k
            goto done;
15035
14.2k
        }
15036
3.13M
        p->mark = _mark;
15037
3.13M
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15038
3.13M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
15039
3.13M
    }
15040
0
    { // 'False'
15041
3.13M
        if (p->error_indicator) {
15042
0
            p->level--;
15043
0
            return NULL;
15044
0
        }
15045
3.13M
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
15046
3.13M
        Token * _keyword;
15047
3.13M
        if (
15048
3.13M
            (_keyword = _PyPegen_expect_token(p, 625))  // token='False'
15049
3.13M
        )
15050
5.71k
        {
15051
5.71k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
15052
5.71k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15053
5.71k
            if (_token == NULL) {
15054
0
                p->level--;
15055
0
                return NULL;
15056
0
            }
15057
5.71k
            int _end_lineno = _token->end_lineno;
15058
5.71k
            UNUSED(_end_lineno); // Only used by EXTRA macro
15059
5.71k
            int _end_col_offset = _token->end_col_offset;
15060
5.71k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15061
5.71k
            _res = _PyAST_Constant ( Py_False , NULL , EXTRA );
15062
5.71k
            if (_res == NULL && PyErr_Occurred()) {
15063
0
                p->error_indicator = 1;
15064
0
                p->level--;
15065
0
                return NULL;
15066
0
            }
15067
5.71k
            goto done;
15068
5.71k
        }
15069
3.12M
        p->mark = _mark;
15070
3.12M
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15071
3.12M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
15072
3.12M
    }
15073
0
    { // 'None'
15074
3.12M
        if (p->error_indicator) {
15075
0
            p->level--;
15076
0
            return NULL;
15077
0
        }
15078
3.12M
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
15079
3.12M
        Token * _keyword;
15080
3.12M
        if (
15081
3.12M
            (_keyword = _PyPegen_expect_token(p, 624))  // token='None'
15082
3.12M
        )
15083
15.5k
        {
15084
15.5k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
15085
15.5k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15086
15.5k
            if (_token == NULL) {
15087
0
                p->level--;
15088
0
                return NULL;
15089
0
            }
15090
15.5k
            int _end_lineno = _token->end_lineno;
15091
15.5k
            UNUSED(_end_lineno); // Only used by EXTRA macro
15092
15.5k
            int _end_col_offset = _token->end_col_offset;
15093
15.5k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15094
15.5k
            _res = _PyAST_Constant ( Py_None , NULL , EXTRA );
15095
15.5k
            if (_res == NULL && PyErr_Occurred()) {
15096
0
                p->error_indicator = 1;
15097
0
                p->level--;
15098
0
                return NULL;
15099
0
            }
15100
15.5k
            goto done;
15101
15.5k
        }
15102
3.11M
        p->mark = _mark;
15103
3.11M
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15104
3.11M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
15105
3.11M
    }
15106
0
    { // &(STRING | FSTRING_START | TSTRING_START) strings
15107
3.11M
        if (p->error_indicator) {
15108
0
            p->level--;
15109
0
            return NULL;
15110
0
        }
15111
3.11M
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
15112
3.11M
        expr_ty strings_var;
15113
3.11M
        if (
15114
3.11M
            _PyPegen_lookahead(1, _tmp_42_rule, p)
15115
3.11M
            &&
15116
3.11M
            (strings_var = strings_rule(p))  // strings
15117
3.11M
        )
15118
149k
        {
15119
149k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
15120
149k
            _res = strings_var;
15121
149k
            goto done;
15122
149k
        }
15123
2.96M
        p->mark = _mark;
15124
2.96M
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15125
2.96M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
15126
2.96M
    }
15127
0
    { // NUMBER
15128
2.96M
        if (p->error_indicator) {
15129
4.35k
            p->level--;
15130
4.35k
            return NULL;
15131
4.35k
        }
15132
2.95M
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
15133
2.95M
        expr_ty number_var;
15134
2.95M
        if (
15135
2.95M
            (number_var = _PyPegen_number_token(p))  // NUMBER
15136
2.95M
        )
15137
2.05M
        {
15138
2.05M
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
15139
2.05M
            _res = number_var;
15140
2.05M
            goto done;
15141
2.05M
        }
15142
905k
        p->mark = _mark;
15143
905k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15144
905k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
15145
905k
    }
15146
0
    { // &'(' (tuple | group | genexp)
15147
905k
        if (p->error_indicator) {
15148
4
            p->level--;
15149
4
            return NULL;
15150
4
        }
15151
905k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'(' (tuple | group | genexp)"));
15152
905k
        void *_tmp_66_var;
15153
905k
        if (
15154
905k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 7)  // token='('
15155
905k
            &&
15156
905k
            (_tmp_66_var = _tmp_66_rule(p))  // tuple | group | genexp
15157
905k
        )
15158
196k
        {
15159
196k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'(' (tuple | group | genexp)"));
15160
196k
            _res = _tmp_66_var;
15161
196k
            goto done;
15162
196k
        }
15163
709k
        p->mark = _mark;
15164
709k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15165
709k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'(' (tuple | group | genexp)"));
15166
709k
    }
15167
0
    { // &'[' (list | listcomp)
15168
709k
        if (p->error_indicator) {
15169
6.17k
            p->level--;
15170
6.17k
            return NULL;
15171
6.17k
        }
15172
703k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'[' (list | listcomp)"));
15173
703k
        void *_tmp_67_var;
15174
703k
        if (
15175
703k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 9)  // token='['
15176
703k
            &&
15177
703k
            (_tmp_67_var = _tmp_67_rule(p))  // list | listcomp
15178
703k
        )
15179
26.7k
        {
15180
26.7k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'[' (list | listcomp)"));
15181
26.7k
            _res = _tmp_67_var;
15182
26.7k
            goto done;
15183
26.7k
        }
15184
676k
        p->mark = _mark;
15185
676k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15186
676k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'[' (list | listcomp)"));
15187
676k
    }
15188
0
    { // &'{' (dict | set | dictcomp | setcomp)
15189
676k
        if (p->error_indicator) {
15190
11.2k
            p->level--;
15191
11.2k
            return NULL;
15192
11.2k
        }
15193
665k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
15194
665k
        void *_tmp_68_var;
15195
665k
        if (
15196
665k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 25)  // token='{'
15197
665k
            &&
15198
665k
            (_tmp_68_var = _tmp_68_rule(p))  // dict | set | dictcomp | setcomp
15199
665k
        )
15200
28.1k
        {
15201
28.1k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
15202
28.1k
            _res = _tmp_68_var;
15203
28.1k
            goto done;
15204
28.1k
        }
15205
637k
        p->mark = _mark;
15206
637k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15207
637k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
15208
637k
    }
15209
0
    { // '...'
15210
637k
        if (p->error_indicator) {
15211
10.2k
            p->level--;
15212
10.2k
            return NULL;
15213
10.2k
        }
15214
627k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
15215
627k
        Token * _literal;
15216
627k
        if (
15217
627k
            (_literal = _PyPegen_expect_token(p, 52))  // token='...'
15218
627k
        )
15219
5.29k
        {
15220
5.29k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
15221
5.29k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15222
5.29k
            if (_token == NULL) {
15223
0
                p->level--;
15224
0
                return NULL;
15225
0
            }
15226
5.29k
            int _end_lineno = _token->end_lineno;
15227
5.29k
            UNUSED(_end_lineno); // Only used by EXTRA macro
15228
5.29k
            int _end_col_offset = _token->end_col_offset;
15229
5.29k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15230
5.29k
            _res = _PyAST_Constant ( Py_Ellipsis , NULL , EXTRA );
15231
5.29k
            if (_res == NULL && PyErr_Occurred()) {
15232
0
                p->error_indicator = 1;
15233
0
                p->level--;
15234
0
                return NULL;
15235
0
            }
15236
5.29k
            goto done;
15237
5.29k
        }
15238
621k
        p->mark = _mark;
15239
621k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15240
621k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
15241
621k
    }
15242
0
    _res = NULL;
15243
4.88M
  done:
15244
4.88M
    p->level--;
15245
4.88M
    return _res;
15246
621k
}
15247
15248
// group: '(' (yield_expr | named_expression) ')' | invalid_group
15249
static expr_ty
15250
group_rule(Parser *p)
15251
47.4k
{
15252
47.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15253
0
        _Pypegen_stack_overflow(p);
15254
0
    }
15255
47.4k
    if (p->error_indicator) {
15256
0
        p->level--;
15257
0
        return NULL;
15258
0
    }
15259
47.4k
    expr_ty _res = NULL;
15260
47.4k
    int _mark = p->mark;
15261
47.4k
    { // '(' (yield_expr | named_expression) ')'
15262
47.4k
        if (p->error_indicator) {
15263
0
            p->level--;
15264
0
            return NULL;
15265
0
        }
15266
47.4k
        D(fprintf(stderr, "%*c> group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
15267
47.4k
        Token * _literal;
15268
47.4k
        Token * _literal_1;
15269
47.4k
        void *a;
15270
47.4k
        if (
15271
47.4k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
15272
47.4k
            &&
15273
47.4k
            (a = _tmp_69_rule(p))  // yield_expr | named_expression
15274
47.4k
            &&
15275
47.4k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
15276
47.4k
        )
15277
16.2k
        {
15278
16.2k
            D(fprintf(stderr, "%*c+ group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
15279
16.2k
            _res = a;
15280
16.2k
            if (_res == NULL && PyErr_Occurred()) {
15281
0
                p->error_indicator = 1;
15282
0
                p->level--;
15283
0
                return NULL;
15284
0
            }
15285
16.2k
            goto done;
15286
16.2k
        }
15287
31.2k
        p->mark = _mark;
15288
31.2k
        D(fprintf(stderr, "%*c%s group[%d-%d]: %s failed!\n", p->level, ' ',
15289
31.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
15290
31.2k
    }
15291
31.2k
    if (p->call_invalid_rules) { // invalid_group
15292
12.1k
        if (p->error_indicator) {
15293
204
            p->level--;
15294
204
            return NULL;
15295
204
        }
15296
11.9k
        D(fprintf(stderr, "%*c> group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_group"));
15297
11.9k
        void *invalid_group_var;
15298
11.9k
        if (
15299
11.9k
            (invalid_group_var = invalid_group_rule(p))  // invalid_group
15300
11.9k
        )
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
11.9k
        p->mark = _mark;
15307
11.9k
        D(fprintf(stderr, "%*c%s group[%d-%d]: %s failed!\n", p->level, ' ',
15308
11.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_group"));
15309
11.9k
    }
15310
31.0k
    _res = NULL;
15311
47.2k
  done:
15312
47.2k
    p->level--;
15313
47.2k
    return _res;
15314
31.0k
}
15315
15316
// lambdef: 'lambda' lambda_params? ':' expression
15317
static expr_ty
15318
lambdef_rule(Parser *p)
15319
513k
{
15320
513k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15321
0
        _Pypegen_stack_overflow(p);
15322
0
    }
15323
513k
    if (p->error_indicator) {
15324
0
        p->level--;
15325
0
        return NULL;
15326
0
    }
15327
513k
    expr_ty _res = NULL;
15328
513k
    int _mark = p->mark;
15329
513k
    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
513k
    int _start_lineno = p->tokens[_mark]->lineno;
15335
513k
    UNUSED(_start_lineno); // Only used by EXTRA macro
15336
513k
    int _start_col_offset = p->tokens[_mark]->col_offset;
15337
513k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
15338
513k
    { // 'lambda' lambda_params? ':' expression
15339
513k
        if (p->error_indicator) {
15340
0
            p->level--;
15341
0
            return NULL;
15342
0
        }
15343
513k
        D(fprintf(stderr, "%*c> lambdef[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' expression"));
15344
513k
        Token * _keyword;
15345
513k
        Token * _literal;
15346
513k
        void *a;
15347
513k
        expr_ty b;
15348
513k
        if (
15349
513k
            (_keyword = _PyPegen_expect_token(p, 622))  // token='lambda'
15350
513k
            &&
15351
513k
            (a = lambda_params_rule(p), !p->error_indicator)  // lambda_params?
15352
513k
            &&
15353
513k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
15354
513k
            &&
15355
513k
            (b = expression_rule(p))  // expression
15356
513k
        )
15357
14.3k
        {
15358
14.3k
            D(fprintf(stderr, "%*c+ lambdef[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' expression"));
15359
14.3k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15360
14.3k
            if (_token == NULL) {
15361
0
                p->level--;
15362
0
                return NULL;
15363
0
            }
15364
14.3k
            int _end_lineno = _token->end_lineno;
15365
14.3k
            UNUSED(_end_lineno); // Only used by EXTRA macro
15366
14.3k
            int _end_col_offset = _token->end_col_offset;
15367
14.3k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15368
14.3k
            _res = _PyAST_Lambda ( ( a ) ? a : CHECK ( arguments_ty , _PyPegen_empty_arguments ( p ) ) , b , EXTRA );
15369
14.3k
            if (_res == NULL && PyErr_Occurred()) {
15370
0
                p->error_indicator = 1;
15371
0
                p->level--;
15372
0
                return NULL;
15373
0
            }
15374
14.3k
            goto done;
15375
14.3k
        }
15376
499k
        p->mark = _mark;
15377
499k
        D(fprintf(stderr, "%*c%s lambdef[%d-%d]: %s failed!\n", p->level, ' ',
15378
499k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'lambda' lambda_params? ':' expression"));
15379
499k
    }
15380
0
    _res = NULL;
15381
513k
  done:
15382
513k
    p->level--;
15383
513k
    return _res;
15384
499k
}
15385
15386
// lambda_params: invalid_lambda_parameters | lambda_parameters
15387
static arguments_ty
15388
lambda_params_rule(Parser *p)
15389
29.3k
{
15390
29.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15391
0
        _Pypegen_stack_overflow(p);
15392
0
    }
15393
29.3k
    if (p->error_indicator) {
15394
0
        p->level--;
15395
0
        return NULL;
15396
0
    }
15397
29.3k
    arguments_ty _res = NULL;
15398
29.3k
    int _mark = p->mark;
15399
29.3k
    if (p->call_invalid_rules) { // invalid_lambda_parameters
15400
12.0k
        if (p->error_indicator) {
15401
0
            p->level--;
15402
0
            return NULL;
15403
0
        }
15404
12.0k
        D(fprintf(stderr, "%*c> lambda_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_parameters"));
15405
12.0k
        void *invalid_lambda_parameters_var;
15406
12.0k
        if (
15407
12.0k
            (invalid_lambda_parameters_var = invalid_lambda_parameters_rule(p))  // invalid_lambda_parameters
15408
12.0k
        )
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
12.0k
        p->mark = _mark;
15415
12.0k
        D(fprintf(stderr, "%*c%s lambda_params[%d-%d]: %s failed!\n", p->level, ' ',
15416
12.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_parameters"));
15417
12.0k
    }
15418
29.3k
    { // lambda_parameters
15419
29.3k
        if (p->error_indicator) {
15420
529
            p->level--;
15421
529
            return NULL;
15422
529
        }
15423
28.8k
        D(fprintf(stderr, "%*c> lambda_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_parameters"));
15424
28.8k
        arguments_ty lambda_parameters_var;
15425
28.8k
        if (
15426
28.8k
            (lambda_parameters_var = lambda_parameters_rule(p))  // lambda_parameters
15427
28.8k
        )
15428
22.4k
        {
15429
22.4k
            D(fprintf(stderr, "%*c+ lambda_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_parameters"));
15430
22.4k
            _res = lambda_parameters_var;
15431
22.4k
            goto done;
15432
22.4k
        }
15433
6.45k
        p->mark = _mark;
15434
6.45k
        D(fprintf(stderr, "%*c%s lambda_params[%d-%d]: %s failed!\n", p->level, ' ',
15435
6.45k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_parameters"));
15436
6.45k
    }
15437
0
    _res = NULL;
15438
28.8k
  done:
15439
28.8k
    p->level--;
15440
28.8k
    return _res;
15441
6.45k
}
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
28.8k
{
15452
28.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15453
0
        _Pypegen_stack_overflow(p);
15454
0
    }
15455
28.8k
    if (p->error_indicator) {
15456
0
        p->level--;
15457
0
        return NULL;
15458
0
    }
15459
28.8k
    arguments_ty _res = NULL;
15460
28.8k
    int _mark = p->mark;
15461
28.8k
    { // lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
15462
28.8k
        if (p->error_indicator) {
15463
0
            p->level--;
15464
0
            return NULL;
15465
0
        }
15466
28.8k
        D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?"));
15467
28.8k
        asdl_arg_seq* a;
15468
28.8k
        asdl_arg_seq* b;
15469
28.8k
        asdl_seq * c;
15470
28.8k
        void *d;
15471
28.8k
        if (
15472
28.8k
            (a = lambda_slash_no_default_rule(p))  // lambda_slash_no_default
15473
28.8k
            &&
15474
28.8k
            (b = (asdl_arg_seq*)_loop0_70_rule(p))  // lambda_param_no_default*
15475
28.8k
            &&
15476
28.8k
            (c = _loop0_71_rule(p))  // lambda_param_with_default*
15477
28.8k
            &&
15478
28.8k
            (d = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
15479
28.8k
        )
15480
1.09k
        {
15481
1.09k
            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
1.09k
            _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , a , NULL , b , c , d ) );
15483
1.09k
            if (_res == NULL && PyErr_Occurred()) {
15484
0
                p->error_indicator = 1;
15485
0
                p->level--;
15486
0
                return NULL;
15487
0
            }
15488
1.09k
            goto done;
15489
1.09k
        }
15490
27.7k
        p->mark = _mark;
15491
27.7k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15492
27.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?"));
15493
27.7k
    }
15494
0
    { // lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
15495
27.7k
        if (p->error_indicator) {
15496
138
            p->level--;
15497
138
            return NULL;
15498
138
        }
15499
27.6k
        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
27.6k
        SlashWithDefault* a;
15501
27.6k
        asdl_seq * b;
15502
27.6k
        void *c;
15503
27.6k
        if (
15504
27.6k
            (a = lambda_slash_with_default_rule(p))  // lambda_slash_with_default
15505
27.6k
            &&
15506
27.6k
            (b = _loop0_71_rule(p))  // lambda_param_with_default*
15507
27.6k
            &&
15508
27.6k
            (c = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
15509
27.6k
        )
15510
1.03k
        {
15511
1.03k
            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.03k
            _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , NULL , a , NULL , b , c ) );
15513
1.03k
            if (_res == NULL && PyErr_Occurred()) {
15514
0
                p->error_indicator = 1;
15515
0
                p->level--;
15516
0
                return NULL;
15517
0
            }
15518
1.03k
            goto done;
15519
1.03k
        }
15520
26.6k
        p->mark = _mark;
15521
26.6k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15522
26.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default lambda_param_with_default* lambda_star_etc?"));
15523
26.6k
    }
15524
0
    { // lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
15525
26.6k
        if (p->error_indicator) {
15526
480
            p->level--;
15527
480
            return NULL;
15528
480
        }
15529
26.1k
        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
26.1k
        asdl_arg_seq* a;
15531
26.1k
        asdl_seq * b;
15532
26.1k
        void *c;
15533
26.1k
        if (
15534
26.1k
            (a = (asdl_arg_seq*)_loop1_72_rule(p))  // lambda_param_no_default+
15535
26.1k
            &&
15536
26.1k
            (b = _loop0_71_rule(p))  // lambda_param_with_default*
15537
26.1k
            &&
15538
26.1k
            (c = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
15539
26.1k
        )
15540
8.26k
        {
15541
8.26k
            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
8.26k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
15543
8.26k
            if (_res == NULL && PyErr_Occurred()) {
15544
0
                p->error_indicator = 1;
15545
0
                p->level--;
15546
0
                return NULL;
15547
0
            }
15548
8.26k
            goto done;
15549
8.26k
        }
15550
17.8k
        p->mark = _mark;
15551
17.8k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15552
17.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?"));
15553
17.8k
    }
15554
0
    { // lambda_param_with_default+ lambda_star_etc?
15555
17.8k
        if (p->error_indicator) {
15556
78
            p->level--;
15557
78
            return NULL;
15558
78
        }
15559
17.7k
        D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
15560
17.7k
        asdl_seq * a;
15561
17.7k
        void *b;
15562
17.7k
        if (
15563
17.7k
            (a = _loop1_73_rule(p))  // lambda_param_with_default+
15564
17.7k
            &&
15565
17.7k
            (b = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
15566
17.7k
        )
15567
4.10k
        {
15568
4.10k
            D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
15569
4.10k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
15570
4.10k
            if (_res == NULL && PyErr_Occurred()) {
15571
0
                p->error_indicator = 1;
15572
0
                p->level--;
15573
0
                return NULL;
15574
0
            }
15575
4.10k
            goto done;
15576
4.10k
        }
15577
13.6k
        p->mark = _mark;
15578
13.6k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15579
13.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
15580
13.6k
    }
15581
0
    { // lambda_star_etc
15582
13.6k
        if (p->error_indicator) {
15583
34
            p->level--;
15584
34
            return NULL;
15585
34
        }
15586
13.6k
        D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_star_etc"));
15587
13.6k
        StarEtc* a;
15588
13.6k
        if (
15589
13.6k
            (a = lambda_star_etc_rule(p))  // lambda_star_etc
15590
13.6k
        )
15591
7.91k
        {
15592
7.91k
            D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_star_etc"));
15593
7.91k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
15594
7.91k
            if (_res == NULL && PyErr_Occurred()) {
15595
0
                p->error_indicator = 1;
15596
0
                p->level--;
15597
0
                return NULL;
15598
0
            }
15599
7.91k
            goto done;
15600
7.91k
        }
15601
5.72k
        p->mark = _mark;
15602
5.72k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15603
5.72k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_star_etc"));
15604
5.72k
    }
15605
0
    _res = NULL;
15606
28.1k
  done:
15607
28.1k
    p->level--;
15608
28.1k
    return _res;
15609
5.72k
}
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
64.0k
{
15617
64.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15618
0
        _Pypegen_stack_overflow(p);
15619
0
    }
15620
64.0k
    if (p->error_indicator) {
15621
0
        p->level--;
15622
0
        return NULL;
15623
0
    }
15624
64.0k
    asdl_arg_seq* _res = NULL;
15625
64.0k
    int _mark = p->mark;
15626
64.0k
    { // lambda_param_no_default+ '/' ','
15627
64.0k
        if (p->error_indicator) {
15628
0
            p->level--;
15629
0
            return NULL;
15630
0
        }
15631
64.0k
        D(fprintf(stderr, "%*c> lambda_slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' ','"));
15632
64.0k
        Token * _literal;
15633
64.0k
        Token * _literal_1;
15634
64.0k
        asdl_arg_seq* a;
15635
64.0k
        if (
15636
64.0k
            (a = (asdl_arg_seq*)_loop1_72_rule(p))  // lambda_param_no_default+
15637
64.0k
            &&
15638
64.0k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
15639
64.0k
            &&
15640
64.0k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
15641
64.0k
        )
15642
2.55k
        {
15643
2.55k
            D(fprintf(stderr, "%*c+ lambda_slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' ','"));
15644
2.55k
            _res = a;
15645
2.55k
            if (_res == NULL && PyErr_Occurred()) {
15646
0
                p->error_indicator = 1;
15647
0
                p->level--;
15648
0
                return NULL;
15649
0
            }
15650
2.55k
            goto done;
15651
2.55k
        }
15652
61.4k
        p->mark = _mark;
15653
61.4k
        D(fprintf(stderr, "%*c%s lambda_slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
15654
61.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ '/' ','"));
15655
61.4k
    }
15656
0
    { // lambda_param_no_default+ '/' &':'
15657
61.4k
        if (p->error_indicator) {
15658
17
            p->level--;
15659
17
            return NULL;
15660
17
        }
15661
61.4k
        D(fprintf(stderr, "%*c> lambda_slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
15662
61.4k
        Token * _literal;
15663
61.4k
        asdl_arg_seq* a;
15664
61.4k
        if (
15665
61.4k
            (a = (asdl_arg_seq*)_loop1_72_rule(p))  // lambda_param_no_default+
15666
61.4k
            &&
15667
61.4k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
15668
61.4k
            &&
15669
61.4k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
15670
61.4k
        )
15671
250
        {
15672
250
            D(fprintf(stderr, "%*c+ lambda_slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
15673
250
            _res = a;
15674
250
            if (_res == NULL && PyErr_Occurred()) {
15675
0
                p->error_indicator = 1;
15676
0
                p->level--;
15677
0
                return NULL;
15678
0
            }
15679
250
            goto done;
15680
250
        }
15681
61.2k
        p->mark = _mark;
15682
61.2k
        D(fprintf(stderr, "%*c%s lambda_slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
15683
61.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
15684
61.2k
    }
15685
0
    _res = NULL;
15686
64.0k
  done:
15687
64.0k
    p->level--;
15688
64.0k
    return _res;
15689
61.2k
}
15690
15691
// lambda_slash_with_default:
15692
//     | lambda_param_no_default* lambda_param_with_default+ '/' ','
15693
//     | lambda_param_no_default* lambda_param_with_default+ '/' &':'
15694
static SlashWithDefault*
15695
lambda_slash_with_default_rule(Parser *p)
15696
61.7k
{
15697
61.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15698
0
        _Pypegen_stack_overflow(p);
15699
0
    }
15700
61.7k
    if (p->error_indicator) {
15701
0
        p->level--;
15702
0
        return NULL;
15703
0
    }
15704
61.7k
    SlashWithDefault* _res = NULL;
15705
61.7k
    int _mark = p->mark;
15706
61.7k
    { // lambda_param_no_default* lambda_param_with_default+ '/' ','
15707
61.7k
        if (p->error_indicator) {
15708
0
            p->level--;
15709
0
            return NULL;
15710
0
        }
15711
61.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+ '/' ','"));
15712
61.7k
        Token * _literal;
15713
61.7k
        Token * _literal_1;
15714
61.7k
        asdl_seq * a;
15715
61.7k
        asdl_seq * b;
15716
61.7k
        if (
15717
61.7k
            (a = _loop0_70_rule(p))  // lambda_param_no_default*
15718
61.7k
            &&
15719
61.7k
            (b = _loop1_73_rule(p))  // lambda_param_with_default+
15720
61.7k
            &&
15721
61.7k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
15722
61.7k
            &&
15723
61.7k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
15724
61.7k
        )
15725
1.81k
        {
15726
1.81k
            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
1.81k
            _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
15728
1.81k
            if (_res == NULL && PyErr_Occurred()) {
15729
0
                p->error_indicator = 1;
15730
0
                p->level--;
15731
0
                return NULL;
15732
0
            }
15733
1.81k
            goto done;
15734
1.81k
        }
15735
59.9k
        p->mark = _mark;
15736
59.9k
        D(fprintf(stderr, "%*c%s lambda_slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
15737
59.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' ','"));
15738
59.9k
    }
15739
0
    { // lambda_param_no_default* lambda_param_with_default+ '/' &':'
15740
59.9k
        if (p->error_indicator) {
15741
708
            p->level--;
15742
708
            return NULL;
15743
708
        }
15744
59.2k
        D(fprintf(stderr, "%*c> lambda_slash_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' &':'"));
15745
59.2k
        Token * _literal;
15746
59.2k
        asdl_seq * a;
15747
59.2k
        asdl_seq * b;
15748
59.2k
        if (
15749
59.2k
            (a = _loop0_70_rule(p))  // lambda_param_no_default*
15750
59.2k
            &&
15751
59.2k
            (b = _loop1_73_rule(p))  // lambda_param_with_default+
15752
59.2k
            &&
15753
59.2k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
15754
59.2k
            &&
15755
59.2k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
15756
59.2k
        )
15757
1.52k
        {
15758
1.52k
            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.52k
            _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
15760
1.52k
            if (_res == NULL && PyErr_Occurred()) {
15761
0
                p->error_indicator = 1;
15762
0
                p->level--;
15763
0
                return NULL;
15764
0
            }
15765
1.52k
            goto done;
15766
1.52k
        }
15767
57.7k
        p->mark = _mark;
15768
57.7k
        D(fprintf(stderr, "%*c%s lambda_slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
15769
57.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' &':'"));
15770
57.7k
    }
15771
0
    _res = NULL;
15772
61.0k
  done:
15773
61.0k
    p->level--;
15774
61.0k
    return _res;
15775
57.7k
}
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
28.4k
{
15785
28.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15786
0
        _Pypegen_stack_overflow(p);
15787
0
    }
15788
28.4k
    if (p->error_indicator) {
15789
213
        p->level--;
15790
213
        return NULL;
15791
213
    }
15792
28.2k
    StarEtc* _res = NULL;
15793
28.2k
    int _mark = p->mark;
15794
28.2k
    if (p->call_invalid_rules) { // invalid_lambda_star_etc
15795
11.4k
        if (p->error_indicator) {
15796
0
            p->level--;
15797
0
            return NULL;
15798
0
        }
15799
11.4k
        D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_star_etc"));
15800
11.4k
        void *invalid_lambda_star_etc_var;
15801
11.4k
        if (
15802
11.4k
            (invalid_lambda_star_etc_var = invalid_lambda_star_etc_rule(p))  // invalid_lambda_star_etc
15803
11.4k
        )
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
11.4k
        p->mark = _mark;
15810
11.4k
        D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15811
11.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_star_etc"));
15812
11.4k
    }
15813
28.2k
    { // '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
15814
28.2k
        if (p->error_indicator) {
15815
14
            p->level--;
15816
14
            return NULL;
15817
14
        }
15818
28.2k
        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
28.2k
        Token * _literal;
15820
28.2k
        arg_ty a;
15821
28.2k
        asdl_seq * b;
15822
28.2k
        void *c;
15823
28.2k
        if (
15824
28.2k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
15825
28.2k
            &&
15826
28.2k
            (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
15827
28.2k
            &&
15828
28.2k
            (b = _loop0_74_rule(p))  // lambda_param_maybe_default*
15829
28.2k
            &&
15830
28.2k
            (c = lambda_kwds_rule(p), !p->error_indicator)  // lambda_kwds?
15831
28.2k
        )
15832
7.30k
        {
15833
7.30k
            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
7.30k
            _res = _PyPegen_star_etc ( p , a , b , c );
15835
7.30k
            if (_res == NULL && PyErr_Occurred()) {
15836
0
                p->error_indicator = 1;
15837
0
                p->level--;
15838
0
                return NULL;
15839
0
            }
15840
7.30k
            goto done;
15841
7.30k
        }
15842
20.9k
        p->mark = _mark;
15843
20.9k
        D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15844
20.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?"));
15845
20.9k
    }
15846
0
    { // '*' ',' lambda_param_maybe_default+ lambda_kwds?
15847
20.9k
        if (p->error_indicator) {
15848
162
            p->level--;
15849
162
            return NULL;
15850
162
        }
15851
20.7k
        D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
15852
20.7k
        Token * _literal;
15853
20.7k
        Token * _literal_1;
15854
20.7k
        asdl_seq * b;
15855
20.7k
        void *c;
15856
20.7k
        if (
15857
20.7k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
15858
20.7k
            &&
15859
20.7k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
15860
20.7k
            &&
15861
20.7k
            (b = _loop1_75_rule(p))  // lambda_param_maybe_default+
15862
20.7k
            &&
15863
20.7k
            (c = lambda_kwds_rule(p), !p->error_indicator)  // lambda_kwds?
15864
20.7k
        )
15865
1.89k
        {
15866
1.89k
            D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
15867
1.89k
            _res = _PyPegen_star_etc ( p , NULL , b , c );
15868
1.89k
            if (_res == NULL && PyErr_Occurred()) {
15869
0
                p->error_indicator = 1;
15870
0
                p->level--;
15871
0
                return NULL;
15872
0
            }
15873
1.89k
            goto done;
15874
1.89k
        }
15875
18.8k
        p->mark = _mark;
15876
18.8k
        D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15877
18.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
15878
18.8k
    }
15879
0
    { // lambda_kwds
15880
18.8k
        if (p->error_indicator) {
15881
192
            p->level--;
15882
192
            return NULL;
15883
192
        }
15884
18.6k
        D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_kwds"));
15885
18.6k
        arg_ty a;
15886
18.6k
        if (
15887
18.6k
            (a = lambda_kwds_rule(p))  // lambda_kwds
15888
18.6k
        )
15889
2.22k
        {
15890
2.22k
            D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_kwds"));
15891
2.22k
            _res = _PyPegen_star_etc ( p , NULL , NULL , a );
15892
2.22k
            if (_res == NULL && PyErr_Occurred()) {
15893
0
                p->error_indicator = 1;
15894
0
                p->level--;
15895
0
                return NULL;
15896
0
            }
15897
2.22k
            goto done;
15898
2.22k
        }
15899
16.4k
        p->mark = _mark;
15900
16.4k
        D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15901
16.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_kwds"));
15902
16.4k
    }
15903
0
    _res = NULL;
15904
27.8k
  done:
15905
27.8k
    p->level--;
15906
27.8k
    return _res;
15907
16.4k
}
15908
15909
// lambda_kwds: invalid_lambda_kwds | '**' lambda_param_no_default
15910
static arg_ty
15911
lambda_kwds_rule(Parser *p)
15912
28.0k
{
15913
28.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15914
0
        _Pypegen_stack_overflow(p);
15915
0
    }
15916
28.0k
    if (p->error_indicator) {
15917
156
        p->level--;
15918
156
        return NULL;
15919
156
    }
15920
27.8k
    arg_ty _res = NULL;
15921
27.8k
    int _mark = p->mark;
15922
27.8k
    if (p->call_invalid_rules) { // invalid_lambda_kwds
15923
11.4k
        if (p->error_indicator) {
15924
0
            p->level--;
15925
0
            return NULL;
15926
0
        }
15927
11.4k
        D(fprintf(stderr, "%*c> lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_kwds"));
15928
11.4k
        void *invalid_lambda_kwds_var;
15929
11.4k
        if (
15930
11.4k
            (invalid_lambda_kwds_var = invalid_lambda_kwds_rule(p))  // invalid_lambda_kwds
15931
11.4k
        )
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
11.4k
        p->mark = _mark;
15938
11.4k
        D(fprintf(stderr, "%*c%s lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
15939
11.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_kwds"));
15940
11.4k
    }
15941
27.8k
    { // '**' lambda_param_no_default
15942
27.8k
        if (p->error_indicator) {
15943
7
            p->level--;
15944
7
            return NULL;
15945
7
        }
15946
27.8k
        D(fprintf(stderr, "%*c> lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param_no_default"));
15947
27.8k
        Token * _literal;
15948
27.8k
        arg_ty a;
15949
27.8k
        if (
15950
27.8k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
15951
27.8k
            &&
15952
27.8k
            (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
15953
27.8k
        )
15954
3.13k
        {
15955
3.13k
            D(fprintf(stderr, "%*c+ lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' lambda_param_no_default"));
15956
3.13k
            _res = a;
15957
3.13k
            if (_res == NULL && PyErr_Occurred()) {
15958
0
                p->error_indicator = 1;
15959
0
                p->level--;
15960
0
                return NULL;
15961
0
            }
15962
3.13k
            goto done;
15963
3.13k
        }
15964
24.7k
        p->mark = _mark;
15965
24.7k
        D(fprintf(stderr, "%*c%s lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
15966
24.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param_no_default"));
15967
24.7k
    }
15968
0
    _res = NULL;
15969
27.8k
  done:
15970
27.8k
    p->level--;
15971
27.8k
    return _res;
15972
24.7k
}
15973
15974
// lambda_param_no_default: lambda_param ',' | lambda_param &':'
15975
static arg_ty
15976
lambda_param_no_default_rule(Parser *p)
15977
419k
{
15978
419k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15979
0
        _Pypegen_stack_overflow(p);
15980
0
    }
15981
419k
    if (p->error_indicator) {
15982
0
        p->level--;
15983
0
        return NULL;
15984
0
    }
15985
419k
    arg_ty _res = NULL;
15986
419k
    int _mark = p->mark;
15987
419k
    { // lambda_param ','
15988
419k
        if (p->error_indicator) {
15989
0
            p->level--;
15990
0
            return NULL;
15991
0
        }
15992
419k
        D(fprintf(stderr, "%*c> lambda_param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param ','"));
15993
419k
        Token * _literal;
15994
419k
        arg_ty a;
15995
419k
        if (
15996
419k
            (a = lambda_param_rule(p))  // lambda_param
15997
419k
            &&
15998
419k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
15999
419k
        )
16000
50.6k
        {
16001
50.6k
            D(fprintf(stderr, "%*c+ lambda_param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param ','"));
16002
50.6k
            _res = a;
16003
50.6k
            if (_res == NULL && PyErr_Occurred()) {
16004
0
                p->error_indicator = 1;
16005
0
                p->level--;
16006
0
                return NULL;
16007
0
            }
16008
50.6k
            goto done;
16009
50.6k
        }
16010
368k
        p->mark = _mark;
16011
368k
        D(fprintf(stderr, "%*c%s lambda_param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
16012
368k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param ','"));
16013
368k
    }
16014
0
    { // lambda_param &':'
16015
368k
        if (p->error_indicator) {
16016
27
            p->level--;
16017
27
            return NULL;
16018
27
        }
16019
368k
        D(fprintf(stderr, "%*c> lambda_param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param &':'"));
16020
368k
        arg_ty a;
16021
368k
        if (
16022
368k
            (a = lambda_param_rule(p))  // lambda_param
16023
368k
            &&
16024
368k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
16025
368k
        )
16026
64.9k
        {
16027
64.9k
            D(fprintf(stderr, "%*c+ lambda_param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param &':'"));
16028
64.9k
            _res = a;
16029
64.9k
            if (_res == NULL && PyErr_Occurred()) {
16030
0
                p->error_indicator = 1;
16031
0
                p->level--;
16032
0
                return NULL;
16033
0
            }
16034
64.9k
            goto done;
16035
64.9k
        }
16036
303k
        p->mark = _mark;
16037
303k
        D(fprintf(stderr, "%*c%s lambda_param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
16038
303k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param &':'"));
16039
303k
    }
16040
0
    _res = NULL;
16041
419k
  done:
16042
419k
    p->level--;
16043
419k
    return _res;
16044
303k
}
16045
16046
// lambda_param_with_default: lambda_param default ',' | lambda_param default &':'
16047
static NameDefaultPair*
16048
lambda_param_with_default_rule(Parser *p)
16049
204k
{
16050
204k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16051
0
        _Pypegen_stack_overflow(p);
16052
0
    }
16053
204k
    if (p->error_indicator) {
16054
0
        p->level--;
16055
0
        return NULL;
16056
0
    }
16057
204k
    NameDefaultPair* _res = NULL;
16058
204k
    int _mark = p->mark;
16059
204k
    { // lambda_param default ','
16060
204k
        if (p->error_indicator) {
16061
0
            p->level--;
16062
0
            return NULL;
16063
0
        }
16064
204k
        D(fprintf(stderr, "%*c> lambda_param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default ','"));
16065
204k
        Token * _literal;
16066
204k
        arg_ty a;
16067
204k
        expr_ty c;
16068
204k
        if (
16069
204k
            (a = lambda_param_rule(p))  // lambda_param
16070
204k
            &&
16071
204k
            (c = default_rule(p))  // default
16072
204k
            &&
16073
204k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
16074
204k
        )
16075
28.1k
        {
16076
28.1k
            D(fprintf(stderr, "%*c+ lambda_param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default ','"));
16077
28.1k
            _res = _PyPegen_name_default_pair ( p , a , c , NULL );
16078
28.1k
            if (_res == NULL && PyErr_Occurred()) {
16079
0
                p->error_indicator = 1;
16080
0
                p->level--;
16081
0
                return NULL;
16082
0
            }
16083
28.1k
            goto done;
16084
28.1k
        }
16085
176k
        p->mark = _mark;
16086
176k
        D(fprintf(stderr, "%*c%s lambda_param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
16087
176k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default ','"));
16088
176k
    }
16089
0
    { // lambda_param default &':'
16090
176k
        if (p->error_indicator) {
16091
919
            p->level--;
16092
919
            return NULL;
16093
919
        }
16094
175k
        D(fprintf(stderr, "%*c> lambda_param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default &':'"));
16095
175k
        arg_ty a;
16096
175k
        expr_ty c;
16097
175k
        if (
16098
175k
            (a = lambda_param_rule(p))  // lambda_param
16099
175k
            &&
16100
175k
            (c = default_rule(p))  // default
16101
175k
            &&
16102
175k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
16103
175k
        )
16104
15.8k
        {
16105
15.8k
            D(fprintf(stderr, "%*c+ lambda_param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default &':'"));
16106
15.8k
            _res = _PyPegen_name_default_pair ( p , a , c , NULL );
16107
15.8k
            if (_res == NULL && PyErr_Occurred()) {
16108
0
                p->error_indicator = 1;
16109
0
                p->level--;
16110
0
                return NULL;
16111
0
            }
16112
15.8k
            goto done;
16113
15.8k
        }
16114
159k
        p->mark = _mark;
16115
159k
        D(fprintf(stderr, "%*c%s lambda_param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
16116
159k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default &':'"));
16117
159k
    }
16118
0
    _res = NULL;
16119
203k
  done:
16120
203k
    p->level--;
16121
203k
    return _res;
16122
159k
}
16123
16124
// lambda_param_maybe_default: lambda_param default? ',' | lambda_param default? &':'
16125
static NameDefaultPair*
16126
lambda_param_maybe_default_rule(Parser *p)
16127
70.8k
{
16128
70.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16129
0
        _Pypegen_stack_overflow(p);
16130
0
    }
16131
70.8k
    if (p->error_indicator) {
16132
0
        p->level--;
16133
0
        return NULL;
16134
0
    }
16135
70.8k
    NameDefaultPair* _res = NULL;
16136
70.8k
    int _mark = p->mark;
16137
70.8k
    { // lambda_param default? ','
16138
70.8k
        if (p->error_indicator) {
16139
0
            p->level--;
16140
0
            return NULL;
16141
0
        }
16142
70.8k
        D(fprintf(stderr, "%*c> lambda_param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default? ','"));
16143
70.8k
        Token * _literal;
16144
70.8k
        arg_ty a;
16145
70.8k
        void *c;
16146
70.8k
        if (
16147
70.8k
            (a = lambda_param_rule(p))  // lambda_param
16148
70.8k
            &&
16149
70.8k
            (c = default_rule(p), !p->error_indicator)  // default?
16150
70.8k
            &&
16151
70.8k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
16152
70.8k
        )
16153
16.4k
        {
16154
16.4k
            D(fprintf(stderr, "%*c+ lambda_param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default? ','"));
16155
16.4k
            _res = _PyPegen_name_default_pair ( p , a , c , NULL );
16156
16.4k
            if (_res == NULL && PyErr_Occurred()) {
16157
0
                p->error_indicator = 1;
16158
0
                p->level--;
16159
0
                return NULL;
16160
0
            }
16161
16.4k
            goto done;
16162
16.4k
        }
16163
54.4k
        p->mark = _mark;
16164
54.4k
        D(fprintf(stderr, "%*c%s lambda_param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
16165
54.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default? ','"));
16166
54.4k
    }
16167
0
    { // lambda_param default? &':'
16168
54.4k
        if (p->error_indicator) {
16169
526
            p->level--;
16170
526
            return NULL;
16171
526
        }
16172
53.9k
        D(fprintf(stderr, "%*c> lambda_param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default? &':'"));
16173
53.9k
        arg_ty a;
16174
53.9k
        void *c;
16175
53.9k
        if (
16176
53.9k
            (a = lambda_param_rule(p))  // lambda_param
16177
53.9k
            &&
16178
53.9k
            (c = default_rule(p), !p->error_indicator)  // default?
16179
53.9k
            &&
16180
53.9k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
16181
53.9k
        )
16182
12.2k
        {
16183
12.2k
            D(fprintf(stderr, "%*c+ lambda_param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default? &':'"));
16184
12.2k
            _res = _PyPegen_name_default_pair ( p , a , c , NULL );
16185
12.2k
            if (_res == NULL && PyErr_Occurred()) {
16186
0
                p->error_indicator = 1;
16187
0
                p->level--;
16188
0
                return NULL;
16189
0
            }
16190
12.2k
            goto done;
16191
12.2k
        }
16192
41.6k
        p->mark = _mark;
16193
41.6k
        D(fprintf(stderr, "%*c%s lambda_param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
16194
41.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default? &':'"));
16195
41.6k
    }
16196
0
    _res = NULL;
16197
70.3k
  done:
16198
70.3k
    p->level--;
16199
70.3k
    return _res;
16200
41.6k
}
16201
16202
// lambda_param: NAME
16203
static arg_ty
16204
lambda_param_rule(Parser *p)
16205
1.30M
{
16206
1.30M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16207
0
        _Pypegen_stack_overflow(p);
16208
0
    }
16209
1.30M
    if (p->error_indicator) {
16210
0
        p->level--;
16211
0
        return NULL;
16212
0
    }
16213
1.30M
    arg_ty _res = NULL;
16214
1.30M
    int _mark = p->mark;
16215
1.30M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16216
43
        p->error_indicator = 1;
16217
43
        p->level--;
16218
43
        return NULL;
16219
43
    }
16220
1.30M
    int _start_lineno = p->tokens[_mark]->lineno;
16221
1.30M
    UNUSED(_start_lineno); // Only used by EXTRA macro
16222
1.30M
    int _start_col_offset = p->tokens[_mark]->col_offset;
16223
1.30M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16224
1.30M
    { // NAME
16225
1.30M
        if (p->error_indicator) {
16226
0
            p->level--;
16227
0
            return NULL;
16228
0
        }
16229
1.30M
        D(fprintf(stderr, "%*c> lambda_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
16230
1.30M
        expr_ty a;
16231
1.30M
        if (
16232
1.30M
            (a = _PyPegen_name_token(p))  // NAME
16233
1.30M
        )
16234
540k
        {
16235
540k
            D(fprintf(stderr, "%*c+ lambda_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
16236
540k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16237
540k
            if (_token == NULL) {
16238
0
                p->level--;
16239
0
                return NULL;
16240
0
            }
16241
540k
            int _end_lineno = _token->end_lineno;
16242
540k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16243
540k
            int _end_col_offset = _token->end_col_offset;
16244
540k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16245
540k
            _res = _PyAST_arg ( a -> v . Name . id , NULL , NULL , EXTRA );
16246
540k
            if (_res == NULL && PyErr_Occurred()) {
16247
0
                p->error_indicator = 1;
16248
0
                p->level--;
16249
0
                return NULL;
16250
0
            }
16251
540k
            goto done;
16252
540k
        }
16253
759k
        p->mark = _mark;
16254
759k
        D(fprintf(stderr, "%*c%s lambda_param[%d-%d]: %s failed!\n", p->level, ' ',
16255
759k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
16256
759k
    }
16257
0
    _res = NULL;
16258
1.30M
  done:
16259
1.30M
    p->level--;
16260
1.30M
    return _res;
16261
759k
}
16262
16263
// fstring_middle: fstring_replacement_field | FSTRING_MIDDLE
16264
static expr_ty
16265
fstring_middle_rule(Parser *p)
16266
70.3k
{
16267
70.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16268
1
        _Pypegen_stack_overflow(p);
16269
1
    }
16270
70.3k
    if (p->error_indicator) {
16271
1
        p->level--;
16272
1
        return NULL;
16273
1
    }
16274
70.3k
    expr_ty _res = NULL;
16275
70.3k
    int _mark = p->mark;
16276
70.3k
    { // fstring_replacement_field
16277
70.3k
        if (p->error_indicator) {
16278
0
            p->level--;
16279
0
            return NULL;
16280
0
        }
16281
70.3k
        D(fprintf(stderr, "%*c> fstring_middle[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field"));
16282
70.3k
        expr_ty fstring_replacement_field_var;
16283
70.3k
        if (
16284
70.3k
            (fstring_replacement_field_var = fstring_replacement_field_rule(p))  // fstring_replacement_field
16285
70.3k
        )
16286
14.7k
        {
16287
14.7k
            D(fprintf(stderr, "%*c+ fstring_middle[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field"));
16288
14.7k
            _res = fstring_replacement_field_var;
16289
14.7k
            goto done;
16290
14.7k
        }
16291
55.6k
        p->mark = _mark;
16292
55.6k
        D(fprintf(stderr, "%*c%s fstring_middle[%d-%d]: %s failed!\n", p->level, ' ',
16293
55.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_replacement_field"));
16294
55.6k
    }
16295
0
    { // FSTRING_MIDDLE
16296
55.6k
        if (p->error_indicator) {
16297
2.76k
            p->level--;
16298
2.76k
            return NULL;
16299
2.76k
        }
16300
52.9k
        D(fprintf(stderr, "%*c> fstring_middle[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE"));
16301
52.9k
        Token * t;
16302
52.9k
        if (
16303
52.9k
            (t = _PyPegen_expect_token(p, FSTRING_MIDDLE))  // token='FSTRING_MIDDLE'
16304
52.9k
        )
16305
35.9k
        {
16306
35.9k
            D(fprintf(stderr, "%*c+ fstring_middle[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE"));
16307
35.9k
            _res = _PyPegen_constant_from_token ( p , t );
16308
35.9k
            if (_res == NULL && PyErr_Occurred()) {
16309
4
                p->error_indicator = 1;
16310
4
                p->level--;
16311
4
                return NULL;
16312
4
            }
16313
35.9k
            goto done;
16314
35.9k
        }
16315
16.9k
        p->mark = _mark;
16316
16.9k
        D(fprintf(stderr, "%*c%s fstring_middle[%d-%d]: %s failed!\n", p->level, ' ',
16317
16.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_MIDDLE"));
16318
16.9k
    }
16319
0
    _res = NULL;
16320
67.6k
  done:
16321
67.6k
    p->level--;
16322
67.6k
    return _res;
16323
16.9k
}
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
85.0k
{
16331
85.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16332
1
        _Pypegen_stack_overflow(p);
16333
1
    }
16334
85.0k
    if (p->error_indicator) {
16335
1
        p->level--;
16336
1
        return NULL;
16337
1
    }
16338
85.0k
    expr_ty _res = NULL;
16339
85.0k
    int _mark = p->mark;
16340
85.0k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16341
81
        p->error_indicator = 1;
16342
81
        p->level--;
16343
81
        return NULL;
16344
81
    }
16345
85.0k
    int _start_lineno = p->tokens[_mark]->lineno;
16346
85.0k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16347
85.0k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16348
85.0k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16349
85.0k
    { // '{' annotated_rhs '='? fstring_conversion? fstring_full_format_spec? '}'
16350
85.0k
        if (p->error_indicator) {
16351
0
            p->level--;
16352
0
            return NULL;
16353
0
        }
16354
85.0k
        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
85.0k
        Token * _literal;
16356
85.0k
        expr_ty a;
16357
85.0k
        void *conversion;
16358
85.0k
        void *debug_expr;
16359
85.0k
        void *format;
16360
85.0k
        Token * rbrace;
16361
85.0k
        if (
16362
85.0k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
16363
85.0k
            &&
16364
85.0k
            (a = annotated_rhs_rule(p))  // annotated_rhs
16365
85.0k
            &&
16366
85.0k
            (debug_expr = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
16367
85.0k
            &&
16368
85.0k
            (conversion = fstring_conversion_rule(p), !p->error_indicator)  // fstring_conversion?
16369
85.0k
            &&
16370
85.0k
            (format = fstring_full_format_spec_rule(p), !p->error_indicator)  // fstring_full_format_spec?
16371
85.0k
            &&
16372
85.0k
            (rbrace = _PyPegen_expect_token(p, 26))  // token='}'
16373
85.0k
        )
16374
20.1k
        {
16375
20.1k
            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
20.1k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16377
20.1k
            if (_token == NULL) {
16378
0
                p->level--;
16379
0
                return NULL;
16380
0
            }
16381
20.1k
            int _end_lineno = _token->end_lineno;
16382
20.1k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16383
20.1k
            int _end_col_offset = _token->end_col_offset;
16384
20.1k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16385
20.1k
            _res = _PyPegen_formatted_value ( p , a , debug_expr , conversion , format , rbrace , EXTRA );
16386
20.1k
            if (_res == NULL && PyErr_Occurred()) {
16387
1
                p->error_indicator = 1;
16388
1
                p->level--;
16389
1
                return NULL;
16390
1
            }
16391
20.1k
            goto done;
16392
20.1k
        }
16393
64.8k
        p->mark = _mark;
16394
64.8k
        D(fprintf(stderr, "%*c%s fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16395
64.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? fstring_full_format_spec? '}'"));
16396
64.8k
    }
16397
64.8k
    if (p->call_invalid_rules) { // invalid_fstring_replacement_field
16398
12.5k
        if (p->error_indicator) {
16399
2.69k
            p->level--;
16400
2.69k
            return NULL;
16401
2.69k
        }
16402
9.82k
        D(fprintf(stderr, "%*c> fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_fstring_replacement_field"));
16403
9.82k
        void *invalid_fstring_replacement_field_var;
16404
9.82k
        if (
16405
9.82k
            (invalid_fstring_replacement_field_var = invalid_fstring_replacement_field_rule(p))  // invalid_fstring_replacement_field
16406
9.82k
        )
16407
0
        {
16408
0
            D(fprintf(stderr, "%*c+ fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_fstring_replacement_field"));
16409
0
            _res = invalid_fstring_replacement_field_var;
16410
0
            goto done;
16411
0
        }
16412
9.82k
        p->mark = _mark;
16413
9.82k
        D(fprintf(stderr, "%*c%s fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16414
9.82k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_fstring_replacement_field"));
16415
9.82k
    }
16416
62.1k
    _res = NULL;
16417
82.3k
  done:
16418
82.3k
    p->level--;
16419
82.3k
    return _res;
16420
62.1k
}
16421
16422
// fstring_conversion: "!" NAME
16423
static ResultTokenWithMetadata*
16424
fstring_conversion_rule(Parser *p)
16425
32.6k
{
16426
32.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16427
0
        _Pypegen_stack_overflow(p);
16428
0
    }
16429
32.6k
    if (p->error_indicator) {
16430
0
        p->level--;
16431
0
        return NULL;
16432
0
    }
16433
32.6k
    ResultTokenWithMetadata* _res = NULL;
16434
32.6k
    int _mark = p->mark;
16435
32.6k
    { // "!" NAME
16436
32.6k
        if (p->error_indicator) {
16437
0
            p->level--;
16438
0
            return NULL;
16439
0
        }
16440
32.6k
        D(fprintf(stderr, "%*c> fstring_conversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"!\" NAME"));
16441
32.6k
        expr_ty conv;
16442
32.6k
        Token * conv_token;
16443
32.6k
        if (
16444
32.6k
            (conv_token = _PyPegen_expect_token(p, 54))  // token='!'
16445
32.6k
            &&
16446
32.6k
            (conv = _PyPegen_name_token(p))  // NAME
16447
32.6k
        )
16448
10.3k
        {
16449
10.3k
            D(fprintf(stderr, "%*c+ fstring_conversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"!\" NAME"));
16450
10.3k
            _res = _PyPegen_check_fstring_conversion ( p , conv_token , conv );
16451
10.3k
            if (_res == NULL && PyErr_Occurred()) {
16452
33
                p->error_indicator = 1;
16453
33
                p->level--;
16454
33
                return NULL;
16455
33
            }
16456
10.3k
            goto done;
16457
10.3k
        }
16458
22.2k
        p->mark = _mark;
16459
22.2k
        D(fprintf(stderr, "%*c%s fstring_conversion[%d-%d]: %s failed!\n", p->level, ' ',
16460
22.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"!\" NAME"));
16461
22.2k
    }
16462
0
    _res = NULL;
16463
32.6k
  done:
16464
32.6k
    p->level--;
16465
32.6k
    return _res;
16466
22.2k
}
16467
16468
// fstring_full_format_spec: ':' fstring_format_spec*
16469
static ResultTokenWithMetadata*
16470
fstring_full_format_spec_rule(Parser *p)
16471
24.4k
{
16472
24.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16473
0
        _Pypegen_stack_overflow(p);
16474
0
    }
16475
24.4k
    if (p->error_indicator) {
16476
0
        p->level--;
16477
0
        return NULL;
16478
0
    }
16479
24.4k
    ResultTokenWithMetadata* _res = NULL;
16480
24.4k
    int _mark = p->mark;
16481
24.4k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16482
2
        p->error_indicator = 1;
16483
2
        p->level--;
16484
2
        return NULL;
16485
2
    }
16486
24.4k
    int _start_lineno = p->tokens[_mark]->lineno;
16487
24.4k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16488
24.4k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16489
24.4k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16490
24.4k
    { // ':' fstring_format_spec*
16491
24.4k
        if (p->error_indicator) {
16492
0
            p->level--;
16493
0
            return NULL;
16494
0
        }
16495
24.4k
        D(fprintf(stderr, "%*c> fstring_full_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' fstring_format_spec*"));
16496
24.4k
        Token * colon;
16497
24.4k
        asdl_seq * spec;
16498
24.4k
        if (
16499
24.4k
            (colon = _PyPegen_expect_token(p, 11))  // token=':'
16500
24.4k
            &&
16501
24.4k
            (spec = _loop0_76_rule(p))  // fstring_format_spec*
16502
24.4k
        )
16503
9.14k
        {
16504
9.14k
            D(fprintf(stderr, "%*c+ fstring_full_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' fstring_format_spec*"));
16505
9.14k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16506
9.14k
            if (_token == NULL) {
16507
0
                p->level--;
16508
0
                return NULL;
16509
0
            }
16510
9.14k
            int _end_lineno = _token->end_lineno;
16511
9.14k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16512
9.14k
            int _end_col_offset = _token->end_col_offset;
16513
9.14k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16514
9.14k
            _res = _PyPegen_setup_full_format_spec ( p , colon , ( asdl_expr_seq* ) spec , EXTRA );
16515
9.14k
            if (_res == NULL && PyErr_Occurred()) {
16516
0
                p->error_indicator = 1;
16517
0
                p->level--;
16518
0
                return NULL;
16519
0
            }
16520
9.14k
            goto done;
16521
9.14k
        }
16522
15.3k
        p->mark = _mark;
16523
15.3k
        D(fprintf(stderr, "%*c%s fstring_full_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16524
15.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' fstring_format_spec*"));
16525
15.3k
    }
16526
0
    _res = NULL;
16527
24.4k
  done:
16528
24.4k
    p->level--;
16529
24.4k
    return _res;
16530
15.3k
}
16531
16532
// fstring_format_spec: FSTRING_MIDDLE | fstring_replacement_field
16533
static expr_ty
16534
fstring_format_spec_rule(Parser *p)
16535
30.4k
{
16536
30.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16537
0
        _Pypegen_stack_overflow(p);
16538
0
    }
16539
30.4k
    if (p->error_indicator) {
16540
0
        p->level--;
16541
0
        return NULL;
16542
0
    }
16543
30.4k
    expr_ty _res = NULL;
16544
30.4k
    int _mark = p->mark;
16545
30.4k
    { // FSTRING_MIDDLE
16546
30.4k
        if (p->error_indicator) {
16547
0
            p->level--;
16548
0
            return NULL;
16549
0
        }
16550
30.4k
        D(fprintf(stderr, "%*c> fstring_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE"));
16551
30.4k
        Token * t;
16552
30.4k
        if (
16553
30.4k
            (t = _PyPegen_expect_token(p, FSTRING_MIDDLE))  // token='FSTRING_MIDDLE'
16554
30.4k
        )
16555
15.7k
        {
16556
15.7k
            D(fprintf(stderr, "%*c+ fstring_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE"));
16557
15.7k
            _res = _PyPegen_decoded_constant_from_token ( p , t );
16558
15.7k
            if (_res == NULL && PyErr_Occurred()) {
16559
18
                p->error_indicator = 1;
16560
18
                p->level--;
16561
18
                return NULL;
16562
18
            }
16563
15.7k
            goto done;
16564
15.7k
        }
16565
14.7k
        p->mark = _mark;
16566
14.7k
        D(fprintf(stderr, "%*c%s fstring_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16567
14.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_MIDDLE"));
16568
14.7k
    }
16569
0
    { // fstring_replacement_field
16570
14.7k
        if (p->error_indicator) {
16571
19
            p->level--;
16572
19
            return NULL;
16573
19
        }
16574
14.7k
        D(fprintf(stderr, "%*c> fstring_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field"));
16575
14.7k
        expr_ty fstring_replacement_field_var;
16576
14.7k
        if (
16577
14.7k
            (fstring_replacement_field_var = fstring_replacement_field_rule(p))  // fstring_replacement_field
16578
14.7k
        )
16579
5.47k
        {
16580
5.47k
            D(fprintf(stderr, "%*c+ fstring_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field"));
16581
5.47k
            _res = fstring_replacement_field_var;
16582
5.47k
            goto done;
16583
5.47k
        }
16584
9.23k
        p->mark = _mark;
16585
9.23k
        D(fprintf(stderr, "%*c%s fstring_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16586
9.23k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_replacement_field"));
16587
9.23k
    }
16588
0
    _res = NULL;
16589
30.4k
  done:
16590
30.4k
    p->level--;
16591
30.4k
    return _res;
16592
9.23k
}
16593
16594
// fstring: FSTRING_START fstring_middle* FSTRING_END
16595
static expr_ty
16596
fstring_rule(Parser *p)
16597
233k
{
16598
233k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16599
1
        _Pypegen_stack_overflow(p);
16600
1
    }
16601
233k
    if (p->error_indicator) {
16602
1
        p->level--;
16603
1
        return NULL;
16604
1
    }
16605
233k
    expr_ty _res = NULL;
16606
233k
    int _mark = p->mark;
16607
233k
    { // FSTRING_START fstring_middle* FSTRING_END
16608
233k
        if (p->error_indicator) {
16609
0
            p->level--;
16610
0
            return NULL;
16611
0
        }
16612
233k
        D(fprintf(stderr, "%*c> fstring[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_START fstring_middle* FSTRING_END"));
16613
233k
        Token * a;
16614
233k
        asdl_seq * b;
16615
233k
        Token * c;
16616
233k
        if (
16617
233k
            (a = _PyPegen_expect_token(p, FSTRING_START))  // token='FSTRING_START'
16618
233k
            &&
16619
233k
            (b = _loop0_77_rule(p))  // fstring_middle*
16620
233k
            &&
16621
233k
            (c = _PyPegen_expect_token(p, FSTRING_END))  // token='FSTRING_END'
16622
233k
        )
16623
15.0k
        {
16624
15.0k
            D(fprintf(stderr, "%*c+ fstring[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_START fstring_middle* FSTRING_END"));
16625
15.0k
            _res = _PyPegen_joined_str ( p , a , ( asdl_expr_seq* ) b , c );
16626
15.0k
            if (_res == NULL && PyErr_Occurred()) {
16627
0
                p->error_indicator = 1;
16628
0
                p->level--;
16629
0
                return NULL;
16630
0
            }
16631
15.0k
            goto done;
16632
15.0k
        }
16633
218k
        p->mark = _mark;
16634
218k
        D(fprintf(stderr, "%*c%s fstring[%d-%d]: %s failed!\n", p->level, ' ',
16635
218k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_START fstring_middle* FSTRING_END"));
16636
218k
    }
16637
0
    _res = NULL;
16638
233k
  done:
16639
233k
    p->level--;
16640
233k
    return _res;
16641
218k
}
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
4.28k
{
16649
4.28k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16650
0
        _Pypegen_stack_overflow(p);
16651
0
    }
16652
4.28k
    if (p->error_indicator) {
16653
0
        p->level--;
16654
0
        return NULL;
16655
0
    }
16656
4.28k
    expr_ty _res = NULL;
16657
4.28k
    int _mark = p->mark;
16658
4.28k
    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
4.28k
    int _start_lineno = p->tokens[_mark]->lineno;
16664
4.28k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16665
4.28k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16666
4.28k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16667
4.28k
    { // '{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'
16668
4.28k
        if (p->error_indicator) {
16669
0
            p->level--;
16670
0
            return NULL;
16671
0
        }
16672
4.28k
        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
4.28k
        Token * _literal;
16674
4.28k
        expr_ty a;
16675
4.28k
        void *conversion;
16676
4.28k
        void *debug_expr;
16677
4.28k
        void *format;
16678
4.28k
        Token * rbrace;
16679
4.28k
        if (
16680
4.28k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
16681
4.28k
            &&
16682
4.28k
            (a = annotated_rhs_rule(p))  // annotated_rhs
16683
4.28k
            &&
16684
4.28k
            (debug_expr = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
16685
4.28k
            &&
16686
4.28k
            (conversion = fstring_conversion_rule(p), !p->error_indicator)  // fstring_conversion?
16687
4.28k
            &&
16688
4.28k
            (format = tstring_full_format_spec_rule(p), !p->error_indicator)  // tstring_full_format_spec?
16689
4.28k
            &&
16690
4.28k
            (rbrace = _PyPegen_expect_token(p, 26))  // token='}'
16691
4.28k
        )
16692
1.12k
        {
16693
1.12k
            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.12k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16695
1.12k
            if (_token == NULL) {
16696
0
                p->level--;
16697
0
                return NULL;
16698
0
            }
16699
1.12k
            int _end_lineno = _token->end_lineno;
16700
1.12k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16701
1.12k
            int _end_col_offset = _token->end_col_offset;
16702
1.12k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16703
1.12k
            _res = _PyPegen_formatted_value ( p , a , debug_expr , conversion , format , rbrace , EXTRA );
16704
1.12k
            if (_res == NULL && PyErr_Occurred()) {
16705
1
                p->error_indicator = 1;
16706
1
                p->level--;
16707
1
                return NULL;
16708
1
            }
16709
1.12k
            goto done;
16710
1.12k
        }
16711
3.15k
        p->mark = _mark;
16712
3.15k
        D(fprintf(stderr, "%*c%s tstring_format_spec_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16713
3.15k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'"));
16714
3.15k
    }
16715
3.15k
    if (p->call_invalid_rules) { // invalid_tstring_replacement_field
16716
760
        if (p->error_indicator) {
16717
139
            p->level--;
16718
139
            return NULL;
16719
139
        }
16720
621
        D(fprintf(stderr, "%*c> tstring_format_spec_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_tstring_replacement_field"));
16721
621
        void *invalid_tstring_replacement_field_var;
16722
621
        if (
16723
621
            (invalid_tstring_replacement_field_var = invalid_tstring_replacement_field_rule(p))  // invalid_tstring_replacement_field
16724
621
        )
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
621
        p->mark = _mark;
16731
621
        D(fprintf(stderr, "%*c%s tstring_format_spec_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16732
621
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_tstring_replacement_field"));
16733
621
    }
16734
3.01k
    _res = NULL;
16735
4.14k
  done:
16736
4.14k
    p->level--;
16737
4.14k
    return _res;
16738
3.01k
}
16739
16740
// tstring_format_spec: TSTRING_MIDDLE | tstring_format_spec_replacement_field
16741
static expr_ty
16742
tstring_format_spec_rule(Parser *p)
16743
8.41k
{
16744
8.41k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16745
0
        _Pypegen_stack_overflow(p);
16746
0
    }
16747
8.41k
    if (p->error_indicator) {
16748
0
        p->level--;
16749
0
        return NULL;
16750
0
    }
16751
8.41k
    expr_ty _res = NULL;
16752
8.41k
    int _mark = p->mark;
16753
8.41k
    { // TSTRING_MIDDLE
16754
8.41k
        if (p->error_indicator) {
16755
0
            p->level--;
16756
0
            return NULL;
16757
0
        }
16758
8.41k
        D(fprintf(stderr, "%*c> tstring_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TSTRING_MIDDLE"));
16759
8.41k
        Token * t;
16760
8.41k
        if (
16761
8.41k
            (t = _PyPegen_expect_token(p, TSTRING_MIDDLE))  // token='TSTRING_MIDDLE'
16762
8.41k
        )
16763
4.11k
        {
16764
4.11k
            D(fprintf(stderr, "%*c+ tstring_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TSTRING_MIDDLE"));
16765
4.11k
            _res = _PyPegen_decoded_constant_from_token ( p , t );
16766
4.11k
            if (_res == NULL && PyErr_Occurred()) {
16767
6
                p->error_indicator = 1;
16768
6
                p->level--;
16769
6
                return NULL;
16770
6
            }
16771
4.11k
            goto done;
16772
4.11k
        }
16773
4.29k
        p->mark = _mark;
16774
4.29k
        D(fprintf(stderr, "%*c%s tstring_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16775
4.29k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TSTRING_MIDDLE"));
16776
4.29k
    }
16777
0
    { // tstring_format_spec_replacement_field
16778
4.29k
        if (p->error_indicator) {
16779
9
            p->level--;
16780
9
            return NULL;
16781
9
        }
16782
4.28k
        D(fprintf(stderr, "%*c> tstring_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring_format_spec_replacement_field"));
16783
4.28k
        expr_ty tstring_format_spec_replacement_field_var;
16784
4.28k
        if (
16785
4.28k
            (tstring_format_spec_replacement_field_var = tstring_format_spec_replacement_field_rule(p))  // tstring_format_spec_replacement_field
16786
4.28k
        )
16787
1.12k
        {
16788
1.12k
            D(fprintf(stderr, "%*c+ tstring_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tstring_format_spec_replacement_field"));
16789
1.12k
            _res = tstring_format_spec_replacement_field_var;
16790
1.12k
            goto done;
16791
1.12k
        }
16792
3.15k
        p->mark = _mark;
16793
3.15k
        D(fprintf(stderr, "%*c%s tstring_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16794
3.15k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring_format_spec_replacement_field"));
16795
3.15k
    }
16796
0
    _res = NULL;
16797
8.39k
  done:
16798
8.39k
    p->level--;
16799
8.39k
    return _res;
16800
3.15k
}
16801
16802
// tstring_full_format_spec: ':' tstring_format_spec*
16803
static ResultTokenWithMetadata*
16804
tstring_full_format_spec_rule(Parser *p)
16805
8.13k
{
16806
8.13k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16807
0
        _Pypegen_stack_overflow(p);
16808
0
    }
16809
8.13k
    if (p->error_indicator) {
16810
0
        p->level--;
16811
0
        return NULL;
16812
0
    }
16813
8.13k
    ResultTokenWithMetadata* _res = NULL;
16814
8.13k
    int _mark = p->mark;
16815
8.13k
    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
8.12k
    int _start_lineno = p->tokens[_mark]->lineno;
16821
8.12k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16822
8.12k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16823
8.12k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16824
8.12k
    { // ':' tstring_format_spec*
16825
8.12k
        if (p->error_indicator) {
16826
0
            p->level--;
16827
0
            return NULL;
16828
0
        }
16829
8.12k
        D(fprintf(stderr, "%*c> tstring_full_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' tstring_format_spec*"));
16830
8.12k
        Token * colon;
16831
8.12k
        asdl_seq * spec;
16832
8.12k
        if (
16833
8.12k
            (colon = _PyPegen_expect_token(p, 11))  // token=':'
16834
8.12k
            &&
16835
8.12k
            (spec = _loop0_78_rule(p))  // tstring_format_spec*
16836
8.12k
        )
16837
3.17k
        {
16838
3.17k
            D(fprintf(stderr, "%*c+ tstring_full_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' tstring_format_spec*"));
16839
3.17k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16840
3.17k
            if (_token == NULL) {
16841
0
                p->level--;
16842
0
                return NULL;
16843
0
            }
16844
3.17k
            int _end_lineno = _token->end_lineno;
16845
3.17k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16846
3.17k
            int _end_col_offset = _token->end_col_offset;
16847
3.17k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16848
3.17k
            _res = _PyPegen_setup_full_format_spec ( p , colon , ( asdl_expr_seq* ) spec , EXTRA );
16849
3.17k
            if (_res == NULL && PyErr_Occurred()) {
16850
0
                p->error_indicator = 1;
16851
0
                p->level--;
16852
0
                return NULL;
16853
0
            }
16854
3.17k
            goto done;
16855
3.17k
        }
16856
4.95k
        p->mark = _mark;
16857
4.95k
        D(fprintf(stderr, "%*c%s tstring_full_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16858
4.95k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' tstring_format_spec*"));
16859
4.95k
    }
16860
0
    _res = NULL;
16861
8.12k
  done:
16862
8.12k
    p->level--;
16863
8.12k
    return _res;
16864
4.95k
}
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
21.1k
{
16872
21.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16873
1
        _Pypegen_stack_overflow(p);
16874
1
    }
16875
21.1k
    if (p->error_indicator) {
16876
1
        p->level--;
16877
1
        return NULL;
16878
1
    }
16879
21.1k
    expr_ty _res = NULL;
16880
21.1k
    int _mark = p->mark;
16881
21.1k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16882
82
        p->error_indicator = 1;
16883
82
        p->level--;
16884
82
        return NULL;
16885
82
    }
16886
21.0k
    int _start_lineno = p->tokens[_mark]->lineno;
16887
21.0k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16888
21.0k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16889
21.0k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16890
21.0k
    { // '{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'
16891
21.0k
        if (p->error_indicator) {
16892
0
            p->level--;
16893
0
            return NULL;
16894
0
        }
16895
21.0k
        D(fprintf(stderr, "%*c> tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'"));
16896
21.0k
        Token * _literal;
16897
21.0k
        expr_ty a;
16898
21.0k
        void *conversion;
16899
21.0k
        void *debug_expr;
16900
21.0k
        void *format;
16901
21.0k
        Token * rbrace;
16902
21.0k
        if (
16903
21.0k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
16904
21.0k
            &&
16905
21.0k
            (a = annotated_rhs_rule(p))  // annotated_rhs
16906
21.0k
            &&
16907
21.0k
            (debug_expr = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
16908
21.0k
            &&
16909
21.0k
            (conversion = fstring_conversion_rule(p), !p->error_indicator)  // fstring_conversion?
16910
21.0k
            &&
16911
21.0k
            (format = tstring_full_format_spec_rule(p), !p->error_indicator)  // tstring_full_format_spec?
16912
21.0k
            &&
16913
21.0k
            (rbrace = _PyPegen_expect_token(p, 26))  // token='}'
16914
21.0k
        )
16915
4.85k
        {
16916
4.85k
            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.85k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16918
4.85k
            if (_token == NULL) {
16919
0
                p->level--;
16920
0
                return NULL;
16921
0
            }
16922
4.85k
            int _end_lineno = _token->end_lineno;
16923
4.85k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16924
4.85k
            int _end_col_offset = _token->end_col_offset;
16925
4.85k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16926
4.85k
            _res = _PyPegen_interpolation ( p , a , debug_expr , conversion , format , rbrace , EXTRA );
16927
4.85k
            if (_res == NULL && PyErr_Occurred()) {
16928
0
                p->error_indicator = 1;
16929
0
                p->level--;
16930
0
                return NULL;
16931
0
            }
16932
4.85k
            goto done;
16933
4.85k
        }
16934
16.2k
        p->mark = _mark;
16935
16.2k
        D(fprintf(stderr, "%*c%s tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16936
16.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'"));
16937
16.2k
    }
16938
16.2k
    if (p->call_invalid_rules) { // invalid_tstring_replacement_field
16939
4.45k
        if (p->error_indicator) {
16940
489
            p->level--;
16941
489
            return NULL;
16942
489
        }
16943
3.96k
        D(fprintf(stderr, "%*c> tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_tstring_replacement_field"));
16944
3.96k
        void *invalid_tstring_replacement_field_var;
16945
3.96k
        if (
16946
3.96k
            (invalid_tstring_replacement_field_var = invalid_tstring_replacement_field_rule(p))  // invalid_tstring_replacement_field
16947
3.96k
        )
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.96k
        p->mark = _mark;
16954
3.96k
        D(fprintf(stderr, "%*c%s tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16955
3.96k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_tstring_replacement_field"));
16956
3.96k
    }
16957
15.7k
    _res = NULL;
16958
20.5k
  done:
16959
20.5k
    p->level--;
16960
20.5k
    return _res;
16961
15.7k
}
16962
16963
// tstring_middle: tstring_replacement_field | TSTRING_MIDDLE
16964
static expr_ty
16965
tstring_middle_rule(Parser *p)
16966
21.1k
{
16967
21.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16968
1
        _Pypegen_stack_overflow(p);
16969
1
    }
16970
21.1k
    if (p->error_indicator) {
16971
1
        p->level--;
16972
1
        return NULL;
16973
1
    }
16974
21.1k
    expr_ty _res = NULL;
16975
21.1k
    int _mark = p->mark;
16976
21.1k
    { // tstring_replacement_field
16977
21.1k
        if (p->error_indicator) {
16978
0
            p->level--;
16979
0
            return NULL;
16980
0
        }
16981
21.1k
        D(fprintf(stderr, "%*c> tstring_middle[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring_replacement_field"));
16982
21.1k
        expr_ty tstring_replacement_field_var;
16983
21.1k
        if (
16984
21.1k
            (tstring_replacement_field_var = tstring_replacement_field_rule(p))  // tstring_replacement_field
16985
21.1k
        )
16986
4.85k
        {
16987
4.85k
            D(fprintf(stderr, "%*c+ tstring_middle[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tstring_replacement_field"));
16988
4.85k
            _res = tstring_replacement_field_var;
16989
4.85k
            goto done;
16990
4.85k
        }
16991
16.3k
        p->mark = _mark;
16992
16.3k
        D(fprintf(stderr, "%*c%s tstring_middle[%d-%d]: %s failed!\n", p->level, ' ',
16993
16.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring_replacement_field"));
16994
16.3k
    }
16995
0
    { // TSTRING_MIDDLE
16996
16.3k
        if (p->error_indicator) {
16997
1.21k
            p->level--;
16998
1.21k
            return NULL;
16999
1.21k
        }
17000
15.0k
        D(fprintf(stderr, "%*c> tstring_middle[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TSTRING_MIDDLE"));
17001
15.0k
        Token * t;
17002
15.0k
        if (
17003
15.0k
            (t = _PyPegen_expect_token(p, TSTRING_MIDDLE))  // token='TSTRING_MIDDLE'
17004
15.0k
        )
17005
9.57k
        {
17006
9.57k
            D(fprintf(stderr, "%*c+ tstring_middle[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TSTRING_MIDDLE"));
17007
9.57k
            _res = _PyPegen_constant_from_token ( p , t );
17008
9.57k
            if (_res == NULL && PyErr_Occurred()) {
17009
9
                p->error_indicator = 1;
17010
9
                p->level--;
17011
9
                return NULL;
17012
9
            }
17013
9.56k
            goto done;
17014
9.57k
        }
17015
5.51k
        p->mark = _mark;
17016
5.51k
        D(fprintf(stderr, "%*c%s tstring_middle[%d-%d]: %s failed!\n", p->level, ' ',
17017
5.51k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TSTRING_MIDDLE"));
17018
5.51k
    }
17019
0
    _res = NULL;
17020
19.9k
  done:
17021
19.9k
    p->level--;
17022
19.9k
    return _res;
17023
5.51k
}
17024
17025
// tstring: TSTRING_START tstring_middle* TSTRING_END
17026
static expr_ty
17027
tstring_rule(Parser *p)
17028
128k
{
17029
128k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17030
0
        _Pypegen_stack_overflow(p);
17031
0
    }
17032
128k
    if (p->error_indicator) {
17033
0
        p->level--;
17034
0
        return NULL;
17035
0
    }
17036
128k
    expr_ty _res = NULL;
17037
128k
    if (_PyPegen_is_memoized(p, tstring_type, &_res)) {
17038
693
        p->level--;
17039
693
        return _res;
17040
693
    }
17041
127k
    int _mark = p->mark;
17042
127k
    { // TSTRING_START tstring_middle* TSTRING_END
17043
127k
        if (p->error_indicator) {
17044
0
            p->level--;
17045
0
            return NULL;
17046
0
        }
17047
127k
        D(fprintf(stderr, "%*c> tstring[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TSTRING_START tstring_middle* TSTRING_END"));
17048
127k
        Token * a;
17049
127k
        asdl_seq * b;
17050
127k
        Token * c;
17051
127k
        if (
17052
127k
            (a = _PyPegen_expect_token(p, TSTRING_START))  // token='TSTRING_START'
17053
127k
            &&
17054
127k
            (b = _loop0_79_rule(p))  // tstring_middle*
17055
127k
            &&
17056
127k
            (c = _PyPegen_expect_token(p, TSTRING_END))  // token='TSTRING_END'
17057
127k
        )
17058
4.27k
        {
17059
4.27k
            D(fprintf(stderr, "%*c+ tstring[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TSTRING_START tstring_middle* TSTRING_END"));
17060
4.27k
            _res = CHECK_VERSION ( expr_ty , 14 , "t-strings are" , _PyPegen_template_str ( p , a , ( asdl_expr_seq* ) b , c ) );
17061
4.27k
            if (_res == NULL && PyErr_Occurred()) {
17062
0
                p->error_indicator = 1;
17063
0
                p->level--;
17064
0
                return NULL;
17065
0
            }
17066
4.27k
            goto done;
17067
4.27k
        }
17068
123k
        p->mark = _mark;
17069
123k
        D(fprintf(stderr, "%*c%s tstring[%d-%d]: %s failed!\n", p->level, ' ',
17070
123k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TSTRING_START tstring_middle* TSTRING_END"));
17071
123k
    }
17072
0
    _res = NULL;
17073
127k
  done:
17074
127k
    _PyPegen_insert_memo(p, _mark, tstring_type, _res);
17075
127k
    p->level--;
17076
127k
    return _res;
17077
123k
}
17078
17079
// string: STRING
17080
static expr_ty
17081
string_rule(Parser *p)
17082
215k
{
17083
215k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17084
0
        _Pypegen_stack_overflow(p);
17085
0
    }
17086
215k
    if (p->error_indicator) {
17087
0
        p->level--;
17088
0
        return NULL;
17089
0
    }
17090
215k
    expr_ty _res = NULL;
17091
215k
    int _mark = p->mark;
17092
215k
    { // STRING
17093
215k
        if (p->error_indicator) {
17094
0
            p->level--;
17095
0
            return NULL;
17096
0
        }
17097
215k
        D(fprintf(stderr, "%*c> string[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING"));
17098
215k
        Token* s;
17099
215k
        if (
17100
215k
            (s = (Token*)_PyPegen_string_token(p))  // STRING
17101
215k
        )
17102
87.5k
        {
17103
87.5k
            D(fprintf(stderr, "%*c+ string[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING"));
17104
87.5k
            _res = _PyPegen_constant_from_string ( p , s );
17105
87.5k
            if (_res == NULL && PyErr_Occurred()) {
17106
248
                p->error_indicator = 1;
17107
248
                p->level--;
17108
248
                return NULL;
17109
248
            }
17110
87.3k
            goto done;
17111
87.5k
        }
17112
128k
        p->mark = _mark;
17113
128k
        D(fprintf(stderr, "%*c%s string[%d-%d]: %s failed!\n", p->level, ' ',
17114
128k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING"));
17115
128k
    }
17116
0
    _res = NULL;
17117
215k
  done:
17118
215k
    p->level--;
17119
215k
    return _res;
17120
128k
}
17121
17122
// strings: ((fstring | string | tstring))+
17123
static expr_ty
17124
strings_rule(Parser *p)
17125
206k
{
17126
206k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17127
0
        _Pypegen_stack_overflow(p);
17128
0
    }
17129
206k
    if (p->error_indicator) {
17130
0
        p->level--;
17131
0
        return NULL;
17132
0
    }
17133
206k
    expr_ty _res = NULL;
17134
206k
    if (_PyPegen_is_memoized(p, strings_type, &_res)) {
17135
79.5k
        p->level--;
17136
79.5k
        return _res;
17137
79.5k
    }
17138
126k
    int _mark = p->mark;
17139
126k
    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
126k
    int _start_lineno = p->tokens[_mark]->lineno;
17145
126k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17146
126k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17147
126k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17148
126k
    { // ((fstring | string | tstring))+
17149
126k
        if (p->error_indicator) {
17150
0
            p->level--;
17151
0
            return NULL;
17152
0
        }
17153
126k
        D(fprintf(stderr, "%*c> strings[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((fstring | string | tstring))+"));
17154
126k
        asdl_expr_seq* a;
17155
126k
        if (
17156
126k
            (a = (asdl_expr_seq*)_loop1_80_rule(p))  // ((fstring | string | tstring))+
17157
126k
        )
17158
73.0k
        {
17159
73.0k
            D(fprintf(stderr, "%*c+ strings[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((fstring | string | tstring))+"));
17160
73.0k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17161
73.0k
            if (_token == NULL) {
17162
0
                p->level--;
17163
0
                return NULL;
17164
0
            }
17165
73.0k
            int _end_lineno = _token->end_lineno;
17166
73.0k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17167
73.0k
            int _end_col_offset = _token->end_col_offset;
17168
73.0k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17169
73.0k
            _res = _PyPegen_concatenate_strings ( p , a , EXTRA );
17170
73.0k
            if (_res == NULL && PyErr_Occurred()) {
17171
12
                p->error_indicator = 1;
17172
12
                p->level--;
17173
12
                return NULL;
17174
12
            }
17175
73.0k
            goto done;
17176
73.0k
        }
17177
53.4k
        p->mark = _mark;
17178
53.4k
        D(fprintf(stderr, "%*c%s strings[%d-%d]: %s failed!\n", p->level, ' ',
17179
53.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((fstring | string | tstring))+"));
17180
53.4k
    }
17181
0
    _res = NULL;
17182
126k
  done:
17183
126k
    _PyPegen_insert_memo(p, _mark, strings_type, _res);
17184
126k
    p->level--;
17185
126k
    return _res;
17186
53.4k
}
17187
17188
// list: '[' star_named_expressions? ']'
17189
static expr_ty
17190
list_rule(Parser *p)
17191
246k
{
17192
246k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17193
1
        _Pypegen_stack_overflow(p);
17194
1
    }
17195
246k
    if (p->error_indicator) {
17196
1
        p->level--;
17197
1
        return NULL;
17198
1
    }
17199
246k
    expr_ty _res = NULL;
17200
246k
    int _mark = p->mark;
17201
246k
    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
246k
    int _start_lineno = p->tokens[_mark]->lineno;
17207
246k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17208
246k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17209
246k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17210
246k
    { // '[' star_named_expressions? ']'
17211
246k
        if (p->error_indicator) {
17212
0
            p->level--;
17213
0
            return NULL;
17214
0
        }
17215
246k
        D(fprintf(stderr, "%*c> list[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' star_named_expressions? ']'"));
17216
246k
        Token * _literal;
17217
246k
        Token * _literal_1;
17218
246k
        void *a;
17219
246k
        if (
17220
246k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
17221
246k
            &&
17222
246k
            (a = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
17223
246k
            &&
17224
246k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
17225
246k
        )
17226
21.9k
        {
17227
21.9k
            D(fprintf(stderr, "%*c+ list[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' star_named_expressions? ']'"));
17228
21.9k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17229
21.9k
            if (_token == NULL) {
17230
0
                p->level--;
17231
0
                return NULL;
17232
0
            }
17233
21.9k
            int _end_lineno = _token->end_lineno;
17234
21.9k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17235
21.9k
            int _end_col_offset = _token->end_col_offset;
17236
21.9k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17237
21.9k
            _res = _PyAST_List ( a , Load , EXTRA );
17238
21.9k
            if (_res == NULL && PyErr_Occurred()) {
17239
0
                p->error_indicator = 1;
17240
0
                p->level--;
17241
0
                return NULL;
17242
0
            }
17243
21.9k
            goto done;
17244
21.9k
        }
17245
224k
        p->mark = _mark;
17246
224k
        D(fprintf(stderr, "%*c%s list[%d-%d]: %s failed!\n", p->level, ' ',
17247
224k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' star_named_expressions? ']'"));
17248
224k
    }
17249
0
    _res = NULL;
17250
246k
  done:
17251
246k
    p->level--;
17252
246k
    return _res;
17253
224k
}
17254
17255
// tuple: '(' [star_named_expression ',' star_named_expressions?] ')'
17256
static expr_ty
17257
tuple_rule(Parser *p)
17258
410k
{
17259
410k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17260
1
        _Pypegen_stack_overflow(p);
17261
1
    }
17262
410k
    if (p->error_indicator) {
17263
1
        p->level--;
17264
1
        return NULL;
17265
1
    }
17266
410k
    expr_ty _res = NULL;
17267
410k
    int _mark = p->mark;
17268
410k
    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
410k
    int _start_lineno = p->tokens[_mark]->lineno;
17274
410k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17275
410k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17276
410k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17277
410k
    { // '(' [star_named_expression ',' star_named_expressions?] ')'
17278
410k
        if (p->error_indicator) {
17279
0
            p->level--;
17280
0
            return NULL;
17281
0
        }
17282
410k
        D(fprintf(stderr, "%*c> tuple[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
17283
410k
        Token * _literal;
17284
410k
        Token * _literal_1;
17285
410k
        void *a;
17286
410k
        if (
17287
410k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
17288
410k
            &&
17289
410k
            (a = _tmp_81_rule(p), !p->error_indicator)  // [star_named_expression ',' star_named_expressions?]
17290
410k
            &&
17291
410k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
17292
410k
        )
17293
179k
        {
17294
179k
            D(fprintf(stderr, "%*c+ tuple[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
17295
179k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17296
179k
            if (_token == NULL) {
17297
0
                p->level--;
17298
0
                return NULL;
17299
0
            }
17300
179k
            int _end_lineno = _token->end_lineno;
17301
179k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17302
179k
            int _end_col_offset = _token->end_col_offset;
17303
179k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17304
179k
            _res = _PyAST_Tuple ( a , Load , EXTRA );
17305
179k
            if (_res == NULL && PyErr_Occurred()) {
17306
0
                p->error_indicator = 1;
17307
0
                p->level--;
17308
0
                return NULL;
17309
0
            }
17310
179k
            goto done;
17311
179k
        }
17312
231k
        p->mark = _mark;
17313
231k
        D(fprintf(stderr, "%*c%s tuple[%d-%d]: %s failed!\n", p->level, ' ',
17314
231k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
17315
231k
    }
17316
0
    _res = NULL;
17317
410k
  done:
17318
410k
    p->level--;
17319
410k
    return _res;
17320
231k
}
17321
17322
// set: '{' star_named_expressions '}'
17323
static expr_ty
17324
set_rule(Parser *p)
17325
34.0k
{
17326
34.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17327
0
        _Pypegen_stack_overflow(p);
17328
0
    }
17329
34.0k
    if (p->error_indicator) {
17330
0
        p->level--;
17331
0
        return NULL;
17332
0
    }
17333
34.0k
    expr_ty _res = NULL;
17334
34.0k
    int _mark = p->mark;
17335
34.0k
    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
34.0k
    int _start_lineno = p->tokens[_mark]->lineno;
17341
34.0k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17342
34.0k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17343
34.0k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17344
34.0k
    { // '{' star_named_expressions '}'
17345
34.0k
        if (p->error_indicator) {
17346
0
            p->level--;
17347
0
            return NULL;
17348
0
        }
17349
34.0k
        D(fprintf(stderr, "%*c> set[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' star_named_expressions '}'"));
17350
34.0k
        Token * _literal;
17351
34.0k
        Token * _literal_1;
17352
34.0k
        asdl_expr_seq* a;
17353
34.0k
        if (
17354
34.0k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
17355
34.0k
            &&
17356
34.0k
            (a = star_named_expressions_rule(p))  // star_named_expressions
17357
34.0k
            &&
17358
34.0k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
17359
34.0k
        )
17360
18.6k
        {
17361
18.6k
            D(fprintf(stderr, "%*c+ set[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' star_named_expressions '}'"));
17362
18.6k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17363
18.6k
            if (_token == NULL) {
17364
0
                p->level--;
17365
0
                return NULL;
17366
0
            }
17367
18.6k
            int _end_lineno = _token->end_lineno;
17368
18.6k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17369
18.6k
            int _end_col_offset = _token->end_col_offset;
17370
18.6k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17371
18.6k
            _res = _PyAST_Set ( a , EXTRA );
17372
18.6k
            if (_res == NULL && PyErr_Occurred()) {
17373
0
                p->error_indicator = 1;
17374
0
                p->level--;
17375
0
                return NULL;
17376
0
            }
17377
18.6k
            goto done;
17378
18.6k
        }
17379
15.4k
        p->mark = _mark;
17380
15.4k
        D(fprintf(stderr, "%*c%s set[%d-%d]: %s failed!\n", p->level, ' ',
17381
15.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' star_named_expressions '}'"));
17382
15.4k
    }
17383
0
    _res = NULL;
17384
34.0k
  done:
17385
34.0k
    p->level--;
17386
34.0k
    return _res;
17387
15.4k
}
17388
17389
// dict: '{' double_starred_kvpairs? '}' | '{' invalid_double_starred_kvpairs '}'
17390
static expr_ty
17391
dict_rule(Parser *p)
17392
47.2k
{
17393
47.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17394
1
        _Pypegen_stack_overflow(p);
17395
1
    }
17396
47.2k
    if (p->error_indicator) {
17397
1
        p->level--;
17398
1
        return NULL;
17399
1
    }
17400
47.2k
    expr_ty _res = NULL;
17401
47.2k
    int _mark = p->mark;
17402
47.2k
    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
47.2k
    int _start_lineno = p->tokens[_mark]->lineno;
17408
47.2k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17409
47.2k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17410
47.2k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17411
47.2k
    { // '{' double_starred_kvpairs? '}'
17412
47.2k
        if (p->error_indicator) {
17413
0
            p->level--;
17414
0
            return NULL;
17415
0
        }
17416
47.2k
        D(fprintf(stderr, "%*c> dict[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
17417
47.2k
        Token * _literal;
17418
47.2k
        Token * _literal_1;
17419
47.2k
        void *a;
17420
47.2k
        if (
17421
47.2k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
17422
47.2k
            &&
17423
47.2k
            (a = double_starred_kvpairs_rule(p), !p->error_indicator)  // double_starred_kvpairs?
17424
47.2k
            &&
17425
47.2k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
17426
47.2k
        )
17427
3.92k
        {
17428
3.92k
            D(fprintf(stderr, "%*c+ dict[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
17429
3.92k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17430
3.92k
            if (_token == NULL) {
17431
0
                p->level--;
17432
0
                return NULL;
17433
0
            }
17434
3.92k
            int _end_lineno = _token->end_lineno;
17435
3.92k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17436
3.92k
            int _end_col_offset = _token->end_col_offset;
17437
3.92k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17438
3.92k
            _res = _PyAST_Dict ( CHECK ( asdl_expr_seq* , _PyPegen_get_keys ( p , a ) ) , CHECK ( asdl_expr_seq* , _PyPegen_get_values ( p , a ) ) , EXTRA );
17439
3.92k
            if (_res == NULL && PyErr_Occurred()) {
17440
0
                p->error_indicator = 1;
17441
0
                p->level--;
17442
0
                return NULL;
17443
0
            }
17444
3.92k
            goto done;
17445
3.92k
        }
17446
43.3k
        p->mark = _mark;
17447
43.3k
        D(fprintf(stderr, "%*c%s dict[%d-%d]: %s failed!\n", p->level, ' ',
17448
43.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
17449
43.3k
    }
17450
0
    { // '{' invalid_double_starred_kvpairs '}'
17451
43.3k
        if (p->error_indicator) {
17452
9.06k
            p->level--;
17453
9.06k
            return NULL;
17454
9.06k
        }
17455
34.2k
        D(fprintf(stderr, "%*c> dict[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
17456
34.2k
        Token * _literal;
17457
34.2k
        Token * _literal_1;
17458
34.2k
        void *invalid_double_starred_kvpairs_var;
17459
34.2k
        if (
17460
34.2k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
17461
34.2k
            &&
17462
34.2k
            (invalid_double_starred_kvpairs_var = invalid_double_starred_kvpairs_rule(p))  // invalid_double_starred_kvpairs
17463
34.2k
            &&
17464
34.2k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
17465
34.2k
        )
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
34.2k
        p->mark = _mark;
17472
34.2k
        D(fprintf(stderr, "%*c%s dict[%d-%d]: %s failed!\n", p->level, ' ',
17473
34.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
17474
34.2k
    }
17475
0
    _res = NULL;
17476
38.2k
  done:
17477
38.2k
    p->level--;
17478
38.2k
    return _res;
17479
34.2k
}
17480
17481
// double_starred_kvpairs: ','.double_starred_kvpair+ ','?
17482
static asdl_seq*
17483
double_starred_kvpairs_rule(Parser *p)
17484
47.2k
{
17485
47.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17486
1
        _Pypegen_stack_overflow(p);
17487
1
    }
17488
47.2k
    if (p->error_indicator) {
17489
1
        p->level--;
17490
1
        return NULL;
17491
1
    }
17492
47.2k
    asdl_seq* _res = NULL;
17493
47.2k
    int _mark = p->mark;
17494
47.2k
    { // ','.double_starred_kvpair+ ','?
17495
47.2k
        if (p->error_indicator) {
17496
0
            p->level--;
17497
0
            return NULL;
17498
0
        }
17499
47.2k
        D(fprintf(stderr, "%*c> double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ','?"));
17500
47.2k
        void *_opt_var;
17501
47.2k
        UNUSED(_opt_var); // Silence compiler warnings
17502
47.2k
        asdl_seq * a;
17503
47.2k
        if (
17504
47.2k
            (a = _gather_83_rule(p))  // ','.double_starred_kvpair+
17505
47.2k
            &&
17506
47.2k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
17507
47.2k
        )
17508
3.73k
        {
17509
3.73k
            D(fprintf(stderr, "%*c+ double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ','?"));
17510
3.73k
            _res = a;
17511
3.73k
            if (_res == NULL && PyErr_Occurred()) {
17512
0
                p->error_indicator = 1;
17513
0
                p->level--;
17514
0
                return NULL;
17515
0
            }
17516
3.73k
            goto done;
17517
3.73k
        }
17518
43.5k
        p->mark = _mark;
17519
43.5k
        D(fprintf(stderr, "%*c%s double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
17520
43.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.double_starred_kvpair+ ','?"));
17521
43.5k
    }
17522
0
    _res = NULL;
17523
47.2k
  done:
17524
47.2k
    p->level--;
17525
47.2k
    return _res;
17526
43.5k
}
17527
17528
// double_starred_kvpair: '**' bitwise_or | kvpair
17529
static KeyValuePair*
17530
double_starred_kvpair_rule(Parser *p)
17531
88.3k
{
17532
88.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17533
1
        _Pypegen_stack_overflow(p);
17534
1
    }
17535
88.3k
    if (p->error_indicator) {
17536
1
        p->level--;
17537
1
        return NULL;
17538
1
    }
17539
88.3k
    KeyValuePair* _res = NULL;
17540
88.3k
    int _mark = p->mark;
17541
88.3k
    { // '**' bitwise_or
17542
88.3k
        if (p->error_indicator) {
17543
0
            p->level--;
17544
0
            return NULL;
17545
0
        }
17546
88.3k
        D(fprintf(stderr, "%*c> double_starred_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' bitwise_or"));
17547
88.3k
        Token * _literal;
17548
88.3k
        expr_ty a;
17549
88.3k
        if (
17550
88.3k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
17551
88.3k
            &&
17552
88.3k
            (a = bitwise_or_rule(p))  // bitwise_or
17553
88.3k
        )
17554
2.33k
        {
17555
2.33k
            D(fprintf(stderr, "%*c+ double_starred_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' bitwise_or"));
17556
2.33k
            _res = _PyPegen_key_value_pair ( p , NULL , a );
17557
2.33k
            if (_res == NULL && PyErr_Occurred()) {
17558
0
                p->error_indicator = 1;
17559
0
                p->level--;
17560
0
                return NULL;
17561
0
            }
17562
2.33k
            goto done;
17563
2.33k
        }
17564
86.0k
        p->mark = _mark;
17565
86.0k
        D(fprintf(stderr, "%*c%s double_starred_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
17566
86.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' bitwise_or"));
17567
86.0k
    }
17568
0
    { // kvpair
17569
86.0k
        if (p->error_indicator) {
17570
154
            p->level--;
17571
154
            return NULL;
17572
154
        }
17573
85.8k
        D(fprintf(stderr, "%*c> double_starred_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kvpair"));
17574
85.8k
        KeyValuePair* kvpair_var;
17575
85.8k
        if (
17576
85.8k
            (kvpair_var = kvpair_rule(p))  // kvpair
17577
85.8k
        )
17578
9.88k
        {
17579
9.88k
            D(fprintf(stderr, "%*c+ double_starred_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kvpair"));
17580
9.88k
            _res = kvpair_var;
17581
9.88k
            goto done;
17582
9.88k
        }
17583
75.9k
        p->mark = _mark;
17584
75.9k
        D(fprintf(stderr, "%*c%s double_starred_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
17585
75.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kvpair"));
17586
75.9k
    }
17587
0
    _res = NULL;
17588
88.1k
  done:
17589
88.1k
    p->level--;
17590
88.1k
    return _res;
17591
75.9k
}
17592
17593
// kvpair: expression ':' expression
17594
static KeyValuePair*
17595
kvpair_rule(Parser *p)
17596
100k
{
17597
100k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17598
1
        _Pypegen_stack_overflow(p);
17599
1
    }
17600
100k
    if (p->error_indicator) {
17601
1
        p->level--;
17602
1
        return NULL;
17603
1
    }
17604
100k
    KeyValuePair* _res = NULL;
17605
100k
    int _mark = p->mark;
17606
100k
    { // expression ':' expression
17607
100k
        if (p->error_indicator) {
17608
0
            p->level--;
17609
0
            return NULL;
17610
0
        }
17611
100k
        D(fprintf(stderr, "%*c> kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
17612
100k
        Token * _literal;
17613
100k
        expr_ty a;
17614
100k
        expr_ty b;
17615
100k
        if (
17616
100k
            (a = expression_rule(p))  // expression
17617
100k
            &&
17618
100k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
17619
100k
            &&
17620
100k
            (b = expression_rule(p))  // expression
17621
100k
        )
17622
12.4k
        {
17623
12.4k
            D(fprintf(stderr, "%*c+ kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
17624
12.4k
            _res = _PyPegen_key_value_pair ( p , a , b );
17625
12.4k
            if (_res == NULL && PyErr_Occurred()) {
17626
0
                p->error_indicator = 1;
17627
0
                p->level--;
17628
0
                return NULL;
17629
0
            }
17630
12.4k
            goto done;
17631
12.4k
        }
17632
88.3k
        p->mark = _mark;
17633
88.3k
        D(fprintf(stderr, "%*c%s kvpair[%d-%d]: %s failed!\n", p->level, ' ',
17634
88.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' expression"));
17635
88.3k
    }
17636
0
    _res = NULL;
17637
100k
  done:
17638
100k
    p->level--;
17639
100k
    return _res;
17640
88.3k
}
17641
17642
// for_if_clauses: for_if_clause+
17643
static asdl_comprehension_seq*
17644
for_if_clauses_rule(Parser *p)
17645
101k
{
17646
101k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17647
0
        _Pypegen_stack_overflow(p);
17648
0
    }
17649
101k
    if (p->error_indicator) {
17650
0
        p->level--;
17651
0
        return NULL;
17652
0
    }
17653
101k
    asdl_comprehension_seq* _res = NULL;
17654
101k
    int _mark = p->mark;
17655
101k
    { // for_if_clause+
17656
101k
        if (p->error_indicator) {
17657
0
            p->level--;
17658
0
            return NULL;
17659
0
        }
17660
101k
        D(fprintf(stderr, "%*c> for_if_clauses[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause+"));
17661
101k
        asdl_comprehension_seq* a;
17662
101k
        if (
17663
101k
            (a = (asdl_comprehension_seq*)_loop1_84_rule(p))  // for_if_clause+
17664
101k
        )
17665
22.7k
        {
17666
22.7k
            D(fprintf(stderr, "%*c+ for_if_clauses[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "for_if_clause+"));
17667
22.7k
            _res = a;
17668
22.7k
            if (_res == NULL && PyErr_Occurred()) {
17669
0
                p->error_indicator = 1;
17670
0
                p->level--;
17671
0
                return NULL;
17672
0
            }
17673
22.7k
            goto done;
17674
22.7k
        }
17675
79.0k
        p->mark = _mark;
17676
79.0k
        D(fprintf(stderr, "%*c%s for_if_clauses[%d-%d]: %s failed!\n", p->level, ' ',
17677
79.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause+"));
17678
79.0k
    }
17679
0
    _res = NULL;
17680
101k
  done:
17681
101k
    p->level--;
17682
101k
    return _res;
17683
79.0k
}
17684
17685
// for_if_clause:
17686
//     | 'async' 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
17687
//     | 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
17688
//     | invalid_for_if_clause
17689
//     | invalid_for_target
17690
static comprehension_ty
17691
for_if_clause_rule(Parser *p)
17692
129k
{
17693
129k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17694
0
        _Pypegen_stack_overflow(p);
17695
0
    }
17696
129k
    if (p->error_indicator) {
17697
74
        p->level--;
17698
74
        return NULL;
17699
74
    }
17700
129k
    comprehension_ty _res = NULL;
17701
129k
    int _mark = p->mark;
17702
129k
    { // 'async' 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
17703
129k
        if (p->error_indicator) {
17704
0
            p->level--;
17705
0
            return NULL;
17706
0
        }
17707
129k
        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
129k
        int _cut_var = 0;
17709
129k
        Token * _keyword;
17710
129k
        Token * _keyword_1;
17711
129k
        Token * _keyword_2;
17712
129k
        expr_ty a;
17713
129k
        expr_ty b;
17714
129k
        asdl_expr_seq* c;
17715
129k
        if (
17716
129k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
17717
129k
            &&
17718
129k
            (_keyword_1 = _PyPegen_expect_token(p, 699))  // token='for'
17719
129k
            &&
17720
129k
            (a = star_targets_rule(p))  // star_targets
17721
129k
            &&
17722
129k
            (_keyword_2 = _PyPegen_expect_token(p, 700))  // token='in'
17723
129k
            &&
17724
129k
            (_cut_var = 1)
17725
129k
            &&
17726
129k
            (b = disjunction_rule(p))  // disjunction
17727
129k
            &&
17728
129k
            (c = (asdl_expr_seq*)_loop0_85_rule(p))  // (('if' disjunction))*
17729
129k
        )
17730
3.94k
        {
17731
3.94k
            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
3.94k
            _res = CHECK_VERSION ( comprehension_ty , 6 , "Async comprehensions are" , _PyAST_comprehension ( a , b , c , 1 , p -> arena ) );
17733
3.94k
            if (_res == NULL && PyErr_Occurred()) {
17734
0
                p->error_indicator = 1;
17735
0
                p->level--;
17736
0
                return NULL;
17737
0
            }
17738
3.94k
            goto done;
17739
3.94k
        }
17740
125k
        p->mark = _mark;
17741
125k
        D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
17742
125k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
17743
125k
        if (_cut_var) {
17744
340
            p->level--;
17745
340
            return NULL;
17746
340
        }
17747
125k
    }
17748
125k
    { // 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
17749
125k
        if (p->error_indicator) {
17750
39
            p->level--;
17751
39
            return NULL;
17752
39
        }
17753
125k
        D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
17754
125k
        int _cut_var = 0;
17755
125k
        Token * _keyword;
17756
125k
        Token * _keyword_1;
17757
125k
        expr_ty a;
17758
125k
        expr_ty b;
17759
125k
        asdl_expr_seq* c;
17760
125k
        if (
17761
125k
            (_keyword = _PyPegen_expect_token(p, 699))  // token='for'
17762
125k
            &&
17763
125k
            (a = star_targets_rule(p))  // star_targets
17764
125k
            &&
17765
125k
            (_keyword_1 = _PyPegen_expect_token(p, 700))  // token='in'
17766
125k
            &&
17767
125k
            (_cut_var = 1)
17768
125k
            &&
17769
125k
            (b = disjunction_rule(p))  // disjunction
17770
125k
            &&
17771
125k
            (c = (asdl_expr_seq*)_loop0_85_rule(p))  // (('if' disjunction))*
17772
125k
        )
17773
24.1k
        {
17774
24.1k
            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
24.1k
            _res = _PyAST_comprehension ( a , b , c , 0 , p -> arena );
17776
24.1k
            if (_res == NULL && PyErr_Occurred()) {
17777
0
                p->error_indicator = 1;
17778
0
                p->level--;
17779
0
                return NULL;
17780
0
            }
17781
24.1k
            goto done;
17782
24.1k
        }
17783
101k
        p->mark = _mark;
17784
101k
        D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
17785
101k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
17786
101k
        if (_cut_var) {
17787
272
            p->level--;
17788
272
            return NULL;
17789
272
        }
17790
101k
    }
17791
101k
    if (p->call_invalid_rules) { // invalid_for_if_clause
17792
51.5k
        if (p->error_indicator) {
17793
807
            p->level--;
17794
807
            return NULL;
17795
807
        }
17796
50.7k
        D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_if_clause"));
17797
50.7k
        void *invalid_for_if_clause_var;
17798
50.7k
        if (
17799
50.7k
            (invalid_for_if_clause_var = invalid_for_if_clause_rule(p))  // invalid_for_if_clause
17800
50.7k
        )
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
50.7k
        p->mark = _mark;
17807
50.7k
        D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
17808
50.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_if_clause"));
17809
50.7k
    }
17810
100k
    if (p->call_invalid_rules) { // invalid_for_target
17811
50.7k
        if (p->error_indicator) {
17812
314
            p->level--;
17813
314
            return NULL;
17814
314
        }
17815
50.3k
        D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
17816
50.3k
        void *invalid_for_target_var;
17817
50.3k
        if (
17818
50.3k
            (invalid_for_target_var = invalid_for_target_rule(p))  // invalid_for_target
17819
50.3k
        )
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
50.3k
        p->mark = _mark;
17826
50.3k
        D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
17827
50.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_target"));
17828
50.3k
    }
17829
99.9k
    _res = NULL;
17830
128k
  done:
17831
128k
    p->level--;
17832
128k
    return _res;
17833
99.9k
}
17834
17835
// listcomp: '[' named_expression for_if_clauses ']' | invalid_comprehension
17836
static expr_ty
17837
listcomp_rule(Parser *p)
17838
31.1k
{
17839
31.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17840
0
        _Pypegen_stack_overflow(p);
17841
0
    }
17842
31.1k
    if (p->error_indicator) {
17843
0
        p->level--;
17844
0
        return NULL;
17845
0
    }
17846
31.1k
    expr_ty _res = NULL;
17847
31.1k
    int _mark = p->mark;
17848
31.1k
    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
31.1k
    int _start_lineno = p->tokens[_mark]->lineno;
17854
31.1k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17855
31.1k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17856
31.1k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17857
31.1k
    { // '[' named_expression for_if_clauses ']'
17858
31.1k
        if (p->error_indicator) {
17859
0
            p->level--;
17860
0
            return NULL;
17861
0
        }
17862
31.1k
        D(fprintf(stderr, "%*c> listcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
17863
31.1k
        Token * _literal;
17864
31.1k
        Token * _literal_1;
17865
31.1k
        expr_ty a;
17866
31.1k
        asdl_comprehension_seq* b;
17867
31.1k
        if (
17868
31.1k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
17869
31.1k
            &&
17870
31.1k
            (a = named_expression_rule(p))  // named_expression
17871
31.1k
            &&
17872
31.1k
            (b = for_if_clauses_rule(p))  // for_if_clauses
17873
31.1k
            &&
17874
31.1k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
17875
31.1k
        )
17876
5.97k
        {
17877
5.97k
            D(fprintf(stderr, "%*c+ listcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
17878
5.97k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17879
5.97k
            if (_token == NULL) {
17880
0
                p->level--;
17881
0
                return NULL;
17882
0
            }
17883
5.97k
            int _end_lineno = _token->end_lineno;
17884
5.97k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17885
5.97k
            int _end_col_offset = _token->end_col_offset;
17886
5.97k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17887
5.97k
            _res = _PyAST_ListComp ( a , b , EXTRA );
17888
5.97k
            if (_res == NULL && PyErr_Occurred()) {
17889
0
                p->error_indicator = 1;
17890
0
                p->level--;
17891
0
                return NULL;
17892
0
            }
17893
5.97k
            goto done;
17894
5.97k
        }
17895
25.1k
        p->mark = _mark;
17896
25.1k
        D(fprintf(stderr, "%*c%s listcomp[%d-%d]: %s failed!\n", p->level, ' ',
17897
25.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
17898
25.1k
    }
17899
25.1k
    if (p->call_invalid_rules) { // invalid_comprehension
17900
8.22k
        if (p->error_indicator) {
17901
360
            p->level--;
17902
360
            return NULL;
17903
360
        }
17904
7.86k
        D(fprintf(stderr, "%*c> listcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
17905
7.86k
        void *invalid_comprehension_var;
17906
7.86k
        if (
17907
7.86k
            (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
17908
7.86k
        )
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
7.86k
        p->mark = _mark;
17915
7.86k
        D(fprintf(stderr, "%*c%s listcomp[%d-%d]: %s failed!\n", p->level, ' ',
17916
7.86k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
17917
7.86k
    }
17918
24.8k
    _res = NULL;
17919
30.8k
  done:
17920
30.8k
    p->level--;
17921
30.8k
    return _res;
17922
24.8k
}
17923
17924
// setcomp: '{' named_expression for_if_clauses '}' | invalid_comprehension
17925
static expr_ty
17926
setcomp_rule(Parser *p)
17927
13.4k
{
17928
13.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17929
0
        _Pypegen_stack_overflow(p);
17930
0
    }
17931
13.4k
    if (p->error_indicator) {
17932
0
        p->level--;
17933
0
        return NULL;
17934
0
    }
17935
13.4k
    expr_ty _res = NULL;
17936
13.4k
    int _mark = p->mark;
17937
13.4k
    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
13.4k
    int _start_lineno = p->tokens[_mark]->lineno;
17943
13.4k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17944
13.4k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17945
13.4k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17946
13.4k
    { // '{' named_expression for_if_clauses '}'
17947
13.4k
        if (p->error_indicator) {
17948
0
            p->level--;
17949
0
            return NULL;
17950
0
        }
17951
13.4k
        D(fprintf(stderr, "%*c> setcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
17952
13.4k
        Token * _literal;
17953
13.4k
        Token * _literal_1;
17954
13.4k
        expr_ty a;
17955
13.4k
        asdl_comprehension_seq* b;
17956
13.4k
        if (
17957
13.4k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
17958
13.4k
            &&
17959
13.4k
            (a = named_expression_rule(p))  // named_expression
17960
13.4k
            &&
17961
13.4k
            (b = for_if_clauses_rule(p))  // for_if_clauses
17962
13.4k
            &&
17963
13.4k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
17964
13.4k
        )
17965
4.30k
        {
17966
4.30k
            D(fprintf(stderr, "%*c+ setcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
17967
4.30k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17968
4.30k
            if (_token == NULL) {
17969
0
                p->level--;
17970
0
                return NULL;
17971
0
            }
17972
4.30k
            int _end_lineno = _token->end_lineno;
17973
4.30k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17974
4.30k
            int _end_col_offset = _token->end_col_offset;
17975
4.30k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17976
4.30k
            _res = _PyAST_SetComp ( a , b , EXTRA );
17977
4.30k
            if (_res == NULL && PyErr_Occurred()) {
17978
0
                p->error_indicator = 1;
17979
0
                p->level--;
17980
0
                return NULL;
17981
0
            }
17982
4.30k
            goto done;
17983
4.30k
        }
17984
9.10k
        p->mark = _mark;
17985
9.10k
        D(fprintf(stderr, "%*c%s setcomp[%d-%d]: %s failed!\n", p->level, ' ',
17986
9.10k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
17987
9.10k
    }
17988
9.10k
    if (p->call_invalid_rules) { // invalid_comprehension
17989
3.36k
        if (p->error_indicator) {
17990
126
            p->level--;
17991
126
            return NULL;
17992
126
        }
17993
3.23k
        D(fprintf(stderr, "%*c> setcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
17994
3.23k
        void *invalid_comprehension_var;
17995
3.23k
        if (
17996
3.23k
            (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
17997
3.23k
        )
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
3.23k
        p->mark = _mark;
18004
3.23k
        D(fprintf(stderr, "%*c%s setcomp[%d-%d]: %s failed!\n", p->level, ' ',
18005
3.23k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
18006
3.23k
    }
18007
8.97k
    _res = NULL;
18008
13.2k
  done:
18009
13.2k
    p->level--;
18010
13.2k
    return _res;
18011
8.97k
}
18012
18013
// genexp:
18014
//     | '(' (assignment_expression | expression !':=') for_if_clauses ')'
18015
//     | invalid_comprehension
18016
static expr_ty
18017
genexp_rule(Parser *p)
18018
2.14M
{
18019
2.14M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18020
0
        _Pypegen_stack_overflow(p);
18021
0
    }
18022
2.14M
    if (p->error_indicator) {
18023
0
        p->level--;
18024
0
        return NULL;
18025
0
    }
18026
2.14M
    expr_ty _res = NULL;
18027
2.14M
    int _mark = p->mark;
18028
2.14M
    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
2.14M
    int _start_lineno = p->tokens[_mark]->lineno;
18034
2.14M
    UNUSED(_start_lineno); // Only used by EXTRA macro
18035
2.14M
    int _start_col_offset = p->tokens[_mark]->col_offset;
18036
2.14M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18037
2.14M
    { // '(' (assignment_expression | expression !':=') for_if_clauses ')'
18038
2.14M
        if (p->error_indicator) {
18039
0
            p->level--;
18040
0
            return NULL;
18041
0
        }
18042
2.14M
        D(fprintf(stderr, "%*c> genexp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
18043
2.14M
        Token * _literal;
18044
2.14M
        Token * _literal_1;
18045
2.14M
        void *a;
18046
2.14M
        asdl_comprehension_seq* b;
18047
2.14M
        if (
18048
2.14M
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
18049
2.14M
            &&
18050
2.14M
            (a = _tmp_86_rule(p))  // assignment_expression | expression !':='
18051
2.14M
            &&
18052
2.14M
            (b = for_if_clauses_rule(p))  // for_if_clauses
18053
2.14M
            &&
18054
2.14M
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
18055
2.14M
        )
18056
8.85k
        {
18057
8.85k
            D(fprintf(stderr, "%*c+ genexp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
18058
8.85k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18059
8.85k
            if (_token == NULL) {
18060
0
                p->level--;
18061
0
                return NULL;
18062
0
            }
18063
8.85k
            int _end_lineno = _token->end_lineno;
18064
8.85k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18065
8.85k
            int _end_col_offset = _token->end_col_offset;
18066
8.85k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18067
8.85k
            _res = _PyAST_GeneratorExp ( a , b , EXTRA );
18068
8.85k
            if (_res == NULL && PyErr_Occurred()) {
18069
0
                p->error_indicator = 1;
18070
0
                p->level--;
18071
0
                return NULL;
18072
0
            }
18073
8.85k
            goto done;
18074
8.85k
        }
18075
2.13M
        p->mark = _mark;
18076
2.13M
        D(fprintf(stderr, "%*c%s genexp[%d-%d]: %s failed!\n", p->level, ' ',
18077
2.13M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
18078
2.13M
    }
18079
2.13M
    if (p->call_invalid_rules) { // invalid_comprehension
18080
359k
        if (p->error_indicator) {
18081
2.11k
            p->level--;
18082
2.11k
            return NULL;
18083
2.11k
        }
18084
357k
        D(fprintf(stderr, "%*c> genexp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
18085
357k
        void *invalid_comprehension_var;
18086
357k
        if (
18087
357k
            (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
18088
357k
        )
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
357k
        p->mark = _mark;
18095
357k
        D(fprintf(stderr, "%*c%s genexp[%d-%d]: %s failed!\n", p->level, ' ',
18096
357k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
18097
357k
    }
18098
2.13M
    _res = NULL;
18099
2.14M
  done:
18100
2.14M
    p->level--;
18101
2.14M
    return _res;
18102
2.13M
}
18103
18104
// dictcomp: '{' kvpair for_if_clauses '}' | invalid_dict_comprehension
18105
static expr_ty
18106
dictcomp_rule(Parser *p)
18107
14.9k
{
18108
14.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18109
0
        _Pypegen_stack_overflow(p);
18110
0
    }
18111
14.9k
    if (p->error_indicator) {
18112
0
        p->level--;
18113
0
        return NULL;
18114
0
    }
18115
14.9k
    expr_ty _res = NULL;
18116
14.9k
    int _mark = p->mark;
18117
14.9k
    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
14.9k
    int _start_lineno = p->tokens[_mark]->lineno;
18123
14.9k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18124
14.9k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18125
14.9k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18126
14.9k
    { // '{' kvpair for_if_clauses '}'
18127
14.9k
        if (p->error_indicator) {
18128
0
            p->level--;
18129
0
            return NULL;
18130
0
        }
18131
14.9k
        D(fprintf(stderr, "%*c> dictcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
18132
14.9k
        Token * _literal;
18133
14.9k
        Token * _literal_1;
18134
14.9k
        KeyValuePair* a;
18135
14.9k
        asdl_comprehension_seq* b;
18136
14.9k
        if (
18137
14.9k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
18138
14.9k
            &&
18139
14.9k
            (a = kvpair_rule(p))  // kvpair
18140
14.9k
            &&
18141
14.9k
            (b = for_if_clauses_rule(p))  // for_if_clauses
18142
14.9k
            &&
18143
14.9k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
18144
14.9k
        )
18145
1.29k
        {
18146
1.29k
            D(fprintf(stderr, "%*c+ dictcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
18147
1.29k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18148
1.29k
            if (_token == NULL) {
18149
0
                p->level--;
18150
0
                return NULL;
18151
0
            }
18152
1.29k
            int _end_lineno = _token->end_lineno;
18153
1.29k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18154
1.29k
            int _end_col_offset = _token->end_col_offset;
18155
1.29k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18156
1.29k
            _res = _PyAST_DictComp ( a -> key , a -> value , b , EXTRA );
18157
1.29k
            if (_res == NULL && PyErr_Occurred()) {
18158
0
                p->error_indicator = 1;
18159
0
                p->level--;
18160
0
                return NULL;
18161
0
            }
18162
1.29k
            goto done;
18163
1.29k
        }
18164
13.6k
        p->mark = _mark;
18165
13.6k
        D(fprintf(stderr, "%*c%s dictcomp[%d-%d]: %s failed!\n", p->level, ' ',
18166
13.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
18167
13.6k
    }
18168
13.6k
    if (p->call_invalid_rules) { // invalid_dict_comprehension
18169
3.74k
        if (p->error_indicator) {
18170
133
            p->level--;
18171
133
            return NULL;
18172
133
        }
18173
3.61k
        D(fprintf(stderr, "%*c> dictcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_dict_comprehension"));
18174
3.61k
        void *invalid_dict_comprehension_var;
18175
3.61k
        if (
18176
3.61k
            (invalid_dict_comprehension_var = invalid_dict_comprehension_rule(p))  // invalid_dict_comprehension
18177
3.61k
        )
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.61k
        p->mark = _mark;
18184
3.61k
        D(fprintf(stderr, "%*c%s dictcomp[%d-%d]: %s failed!\n", p->level, ' ',
18185
3.61k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_dict_comprehension"));
18186
3.61k
    }
18187
13.5k
    _res = NULL;
18188
14.8k
  done:
18189
14.8k
    p->level--;
18190
14.8k
    return _res;
18191
13.5k
}
18192
18193
// arguments: args ','? &')' | invalid_arguments
18194
static expr_ty
18195
arguments_rule(Parser *p)
18196
84.4k
{
18197
84.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18198
0
        _Pypegen_stack_overflow(p);
18199
0
    }
18200
84.4k
    if (p->error_indicator) {
18201
0
        p->level--;
18202
0
        return NULL;
18203
0
    }
18204
84.4k
    expr_ty _res = NULL;
18205
84.4k
    if (_PyPegen_is_memoized(p, arguments_type, &_res)) {
18206
18.5k
        p->level--;
18207
18.5k
        return _res;
18208
18.5k
    }
18209
65.9k
    int _mark = p->mark;
18210
65.9k
    { // args ','? &')'
18211
65.9k
        if (p->error_indicator) {
18212
0
            p->level--;
18213
0
            return NULL;
18214
0
        }
18215
65.9k
        D(fprintf(stderr, "%*c> arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ','? &')'"));
18216
65.9k
        void *_opt_var;
18217
65.9k
        UNUSED(_opt_var); // Silence compiler warnings
18218
65.9k
        expr_ty a;
18219
65.9k
        if (
18220
65.9k
            (a = args_rule(p))  // args
18221
65.9k
            &&
18222
65.9k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
18223
65.9k
            &&
18224
65.9k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
18225
65.9k
        )
18226
15.1k
        {
18227
15.1k
            D(fprintf(stderr, "%*c+ arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ','? &')'"));
18228
15.1k
            _res = a;
18229
15.1k
            if (_res == NULL && PyErr_Occurred()) {
18230
0
                p->error_indicator = 1;
18231
0
                p->level--;
18232
0
                return NULL;
18233
0
            }
18234
15.1k
            goto done;
18235
15.1k
        }
18236
50.7k
        p->mark = _mark;
18237
50.7k
        D(fprintf(stderr, "%*c%s arguments[%d-%d]: %s failed!\n", p->level, ' ',
18238
50.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ','? &')'"));
18239
50.7k
    }
18240
50.7k
    if (p->call_invalid_rules) { // invalid_arguments
18241
10.2k
        if (p->error_indicator) {
18242
2.04k
            p->level--;
18243
2.04k
            return NULL;
18244
2.04k
        }
18245
8.21k
        D(fprintf(stderr, "%*c> arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_arguments"));
18246
8.21k
        void *invalid_arguments_var;
18247
8.21k
        if (
18248
8.21k
            (invalid_arguments_var = invalid_arguments_rule(p))  // invalid_arguments
18249
8.21k
        )
18250
0
        {
18251
0
            D(fprintf(stderr, "%*c+ arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_arguments"));
18252
0
            _res = invalid_arguments_var;
18253
0
            goto done;
18254
0
        }
18255
8.21k
        p->mark = _mark;
18256
8.21k
        D(fprintf(stderr, "%*c%s arguments[%d-%d]: %s failed!\n", p->level, ' ',
18257
8.21k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_arguments"));
18258
8.21k
    }
18259
48.6k
    _res = NULL;
18260
63.8k
  done:
18261
63.8k
    _PyPegen_insert_memo(p, _mark, arguments_type, _res);
18262
63.8k
    p->level--;
18263
63.8k
    return _res;
18264
48.6k
}
18265
18266
// args:
18267
//     | ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]
18268
//     | kwargs
18269
static expr_ty
18270
args_rule(Parser *p)
18271
92.3k
{
18272
92.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18273
0
        _Pypegen_stack_overflow(p);
18274
0
    }
18275
92.3k
    if (p->error_indicator) {
18276
0
        p->level--;
18277
0
        return NULL;
18278
0
    }
18279
92.3k
    expr_ty _res = NULL;
18280
92.3k
    int _mark = p->mark;
18281
92.3k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18282
2
        p->error_indicator = 1;
18283
2
        p->level--;
18284
2
        return NULL;
18285
2
    }
18286
92.3k
    int _start_lineno = p->tokens[_mark]->lineno;
18287
92.3k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18288
92.3k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18289
92.3k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18290
92.3k
    { // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]
18291
92.3k
        if (p->error_indicator) {
18292
0
            p->level--;
18293
0
            return NULL;
18294
0
        }
18295
92.3k
        D(fprintf(stderr, "%*c> args[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
18296
92.3k
        asdl_expr_seq* a;
18297
92.3k
        void *b;
18298
92.3k
        if (
18299
92.3k
            (a = (asdl_expr_seq*)_gather_88_rule(p))  // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+
18300
92.3k
            &&
18301
92.3k
            (b = _tmp_89_rule(p), !p->error_indicator)  // [',' kwargs]
18302
92.3k
        )
18303
36.4k
        {
18304
36.4k
            D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
18305
36.4k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18306
36.4k
            if (_token == NULL) {
18307
0
                p->level--;
18308
0
                return NULL;
18309
0
            }
18310
36.4k
            int _end_lineno = _token->end_lineno;
18311
36.4k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18312
36.4k
            int _end_col_offset = _token->end_col_offset;
18313
36.4k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18314
36.4k
            _res = _PyPegen_collect_call_seqs ( p , a , b , EXTRA );
18315
36.4k
            if (_res == NULL && PyErr_Occurred()) {
18316
0
                p->error_indicator = 1;
18317
0
                p->level--;
18318
0
                return NULL;
18319
0
            }
18320
36.4k
            goto done;
18321
36.4k
        }
18322
55.8k
        p->mark = _mark;
18323
55.8k
        D(fprintf(stderr, "%*c%s args[%d-%d]: %s failed!\n", p->level, ' ',
18324
55.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
18325
55.8k
    }
18326
0
    { // kwargs
18327
55.8k
        if (p->error_indicator) {
18328
1.48k
            p->level--;
18329
1.48k
            return NULL;
18330
1.48k
        }
18331
54.4k
        D(fprintf(stderr, "%*c> args[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwargs"));
18332
54.4k
        asdl_seq* a;
18333
54.4k
        if (
18334
54.4k
            (a = kwargs_rule(p))  // kwargs
18335
54.4k
        )
18336
10.6k
        {
18337
10.6k
            D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwargs"));
18338
10.6k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18339
10.6k
            if (_token == NULL) {
18340
0
                p->level--;
18341
0
                return NULL;
18342
0
            }
18343
10.6k
            int _end_lineno = _token->end_lineno;
18344
10.6k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18345
10.6k
            int _end_col_offset = _token->end_col_offset;
18346
10.6k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18347
10.6k
            _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
10.6k
            if (_res == NULL && PyErr_Occurred()) {
18349
0
                p->error_indicator = 1;
18350
0
                p->level--;
18351
0
                return NULL;
18352
0
            }
18353
10.6k
            goto done;
18354
10.6k
        }
18355
43.7k
        p->mark = _mark;
18356
43.7k
        D(fprintf(stderr, "%*c%s args[%d-%d]: %s failed!\n", p->level, ' ',
18357
43.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwargs"));
18358
43.7k
    }
18359
0
    _res = NULL;
18360
90.8k
  done:
18361
90.8k
    p->level--;
18362
90.8k
    return _res;
18363
43.7k
}
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
69.1k
{
18372
69.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18373
0
        _Pypegen_stack_overflow(p);
18374
0
    }
18375
69.1k
    if (p->error_indicator) {
18376
0
        p->level--;
18377
0
        return NULL;
18378
0
    }
18379
69.1k
    asdl_seq* _res = NULL;
18380
69.1k
    int _mark = p->mark;
18381
69.1k
    { // ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
18382
69.1k
        if (p->error_indicator) {
18383
0
            p->level--;
18384
0
            return NULL;
18385
0
        }
18386
69.1k
        D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
18387
69.1k
        Token * _literal;
18388
69.1k
        asdl_seq * a;
18389
69.1k
        asdl_seq * b;
18390
69.1k
        if (
18391
69.1k
            (a = _gather_91_rule(p))  // ','.kwarg_or_starred+
18392
69.1k
            &&
18393
69.1k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
18394
69.1k
            &&
18395
69.1k
            (b = _gather_93_rule(p))  // ','.kwarg_or_double_starred+
18396
69.1k
        )
18397
1.53k
        {
18398
1.53k
            D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
18399
1.53k
            _res = _PyPegen_join_sequences ( p , a , b );
18400
1.53k
            if (_res == NULL && PyErr_Occurred()) {
18401
0
                p->error_indicator = 1;
18402
0
                p->level--;
18403
0
                return NULL;
18404
0
            }
18405
1.53k
            goto done;
18406
1.53k
        }
18407
67.5k
        p->mark = _mark;
18408
67.5k
        D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
18409
67.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
18410
67.5k
    }
18411
0
    { // ','.kwarg_or_starred+
18412
67.5k
        if (p->error_indicator) {
18413
1.36k
            p->level--;
18414
1.36k
            return NULL;
18415
1.36k
        }
18416
66.2k
        D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+"));
18417
66.2k
        asdl_seq * _gather_91_var;
18418
66.2k
        if (
18419
66.2k
            (_gather_91_var = _gather_91_rule(p))  // ','.kwarg_or_starred+
18420
66.2k
        )
18421
8.23k
        {
18422
8.23k
            D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+"));
18423
8.23k
            _res = _gather_91_var;
18424
8.23k
            goto done;
18425
8.23k
        }
18426
57.9k
        p->mark = _mark;
18427
57.9k
        D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
18428
57.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_starred+"));
18429
57.9k
    }
18430
0
    { // ','.kwarg_or_double_starred+
18431
57.9k
        if (p->error_indicator) {
18432
0
            p->level--;
18433
0
            return NULL;
18434
0
        }
18435
57.9k
        D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_double_starred+"));
18436
57.9k
        asdl_seq * _gather_93_var;
18437
57.9k
        if (
18438
57.9k
            (_gather_93_var = _gather_93_rule(p))  // ','.kwarg_or_double_starred+
18439
57.9k
        )
18440
7.51k
        {
18441
7.51k
            D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_double_starred+"));
18442
7.51k
            _res = _gather_93_var;
18443
7.51k
            goto done;
18444
7.51k
        }
18445
50.4k
        p->mark = _mark;
18446
50.4k
        D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
18447
50.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_double_starred+"));
18448
50.4k
    }
18449
0
    _res = NULL;
18450
67.7k
  done:
18451
67.7k
    p->level--;
18452
67.7k
    return _res;
18453
50.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
327k
{
18462
327k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18463
0
        _Pypegen_stack_overflow(p);
18464
0
    }
18465
327k
    if (p->error_indicator) {
18466
0
        p->level--;
18467
0
        return NULL;
18468
0
    }
18469
327k
    expr_ty _res = NULL;
18470
327k
    int _mark = p->mark;
18471
327k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18472
78
        p->error_indicator = 1;
18473
78
        p->level--;
18474
78
        return NULL;
18475
78
    }
18476
327k
    int _start_lineno = p->tokens[_mark]->lineno;
18477
327k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18478
327k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18479
327k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18480
327k
    if (p->call_invalid_rules) { // invalid_starred_expression_unpacking
18481
182k
        if (p->error_indicator) {
18482
0
            p->level--;
18483
0
            return NULL;
18484
0
        }
18485
182k
        D(fprintf(stderr, "%*c> starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_starred_expression_unpacking"));
18486
182k
        void *invalid_starred_expression_unpacking_var;
18487
182k
        if (
18488
182k
            (invalid_starred_expression_unpacking_var = invalid_starred_expression_unpacking_rule(p))  // invalid_starred_expression_unpacking
18489
182k
        )
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
182k
        p->mark = _mark;
18496
182k
        D(fprintf(stderr, "%*c%s starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
18497
182k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_starred_expression_unpacking"));
18498
182k
    }
18499
327k
    { // '*' expression
18500
327k
        if (p->error_indicator) {
18501
2.31k
            p->level--;
18502
2.31k
            return NULL;
18503
2.31k
        }
18504
325k
        D(fprintf(stderr, "%*c> starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression"));
18505
325k
        Token * _literal;
18506
325k
        expr_ty a;
18507
325k
        if (
18508
325k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
18509
325k
            &&
18510
325k
            (a = expression_rule(p))  // expression
18511
325k
        )
18512
23.9k
        {
18513
23.9k
            D(fprintf(stderr, "%*c+ starred_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression"));
18514
23.9k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18515
23.9k
            if (_token == NULL) {
18516
0
                p->level--;
18517
0
                return NULL;
18518
0
            }
18519
23.9k
            int _end_lineno = _token->end_lineno;
18520
23.9k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18521
23.9k
            int _end_col_offset = _token->end_col_offset;
18522
23.9k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18523
23.9k
            _res = _PyAST_Starred ( a , Load , EXTRA );
18524
23.9k
            if (_res == NULL && PyErr_Occurred()) {
18525
0
                p->error_indicator = 1;
18526
0
                p->level--;
18527
0
                return NULL;
18528
0
            }
18529
23.9k
            goto done;
18530
23.9k
        }
18531
301k
        p->mark = _mark;
18532
301k
        D(fprintf(stderr, "%*c%s starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
18533
301k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression"));
18534
301k
    }
18535
301k
    if (p->call_invalid_rules) { // invalid_starred_expression
18536
165k
        if (p->error_indicator) {
18537
0
            p->level--;
18538
0
            return NULL;
18539
0
        }
18540
165k
        D(fprintf(stderr, "%*c> starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_starred_expression"));
18541
165k
        void *invalid_starred_expression_var;
18542
165k
        if (
18543
165k
            (invalid_starred_expression_var = invalid_starred_expression_rule(p))  // invalid_starred_expression
18544
165k
        )
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
165k
        p->mark = _mark;
18551
165k
        D(fprintf(stderr, "%*c%s starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
18552
165k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_starred_expression"));
18553
165k
    }
18554
301k
    _res = NULL;
18555
325k
  done:
18556
325k
    p->level--;
18557
325k
    return _res;
18558
301k
}
18559
18560
// kwarg_or_starred: invalid_kwarg | NAME '=' expression | starred_expression
18561
static KeywordOrStarred*
18562
kwarg_or_starred_rule(Parser *p)
18563
148k
{
18564
148k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18565
0
        _Pypegen_stack_overflow(p);
18566
0
    }
18567
148k
    if (p->error_indicator) {
18568
0
        p->level--;
18569
0
        return NULL;
18570
0
    }
18571
148k
    KeywordOrStarred* _res = NULL;
18572
148k
    int _mark = p->mark;
18573
148k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18574
3
        p->error_indicator = 1;
18575
3
        p->level--;
18576
3
        return NULL;
18577
3
    }
18578
148k
    int _start_lineno = p->tokens[_mark]->lineno;
18579
148k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18580
148k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18581
148k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18582
148k
    if (p->call_invalid_rules) { // invalid_kwarg
18583
66.5k
        if (p->error_indicator) {
18584
0
            p->level--;
18585
0
            return NULL;
18586
0
        }
18587
66.5k
        D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
18588
66.5k
        void *invalid_kwarg_var;
18589
66.5k
        if (
18590
66.5k
            (invalid_kwarg_var = invalid_kwarg_rule(p))  // invalid_kwarg
18591
66.5k
        )
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
66.5k
        p->mark = _mark;
18598
66.5k
        D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
18599
66.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwarg"));
18600
66.5k
    }
18601
148k
    { // NAME '=' expression
18602
148k
        if (p->error_indicator) {
18603
907
            p->level--;
18604
907
            return NULL;
18605
907
        }
18606
147k
        D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
18607
147k
        Token * _literal;
18608
147k
        expr_ty a;
18609
147k
        expr_ty b;
18610
147k
        if (
18611
147k
            (a = _PyPegen_name_token(p))  // NAME
18612
147k
            &&
18613
147k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
18614
147k
            &&
18615
147k
            (b = expression_rule(p))  // expression
18616
147k
        )
18617
23.6k
        {
18618
23.6k
            D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
18619
23.6k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18620
23.6k
            if (_token == NULL) {
18621
0
                p->level--;
18622
0
                return NULL;
18623
0
            }
18624
23.6k
            int _end_lineno = _token->end_lineno;
18625
23.6k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18626
23.6k
            int _end_col_offset = _token->end_col_offset;
18627
23.6k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18628
23.6k
            _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
18629
23.6k
            if (_res == NULL && PyErr_Occurred()) {
18630
0
                p->error_indicator = 1;
18631
0
                p->level--;
18632
0
                return NULL;
18633
0
            }
18634
23.6k
            goto done;
18635
23.6k
        }
18636
124k
        p->mark = _mark;
18637
124k
        D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
18638
124k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression"));
18639
124k
    }
18640
0
    { // starred_expression
18641
124k
        if (p->error_indicator) {
18642
273
            p->level--;
18643
273
            return NULL;
18644
273
        }
18645
124k
        D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
18646
124k
        expr_ty a;
18647
124k
        if (
18648
124k
            (a = starred_expression_rule(p))  // starred_expression
18649
124k
        )
18650
4.04k
        {
18651
4.04k
            D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
18652
4.04k
            _res = _PyPegen_keyword_or_starred ( p , a , 0 );
18653
4.04k
            if (_res == NULL && PyErr_Occurred()) {
18654
0
                p->error_indicator = 1;
18655
0
                p->level--;
18656
0
                return NULL;
18657
0
            }
18658
4.04k
            goto done;
18659
4.04k
        }
18660
120k
        p->mark = _mark;
18661
120k
        D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
18662
120k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
18663
120k
    }
18664
0
    _res = NULL;
18665
147k
  done:
18666
147k
    p->level--;
18667
147k
    return _res;
18668
120k
}
18669
18670
// kwarg_or_double_starred: invalid_kwarg | NAME '=' expression | '**' expression
18671
static KeywordOrStarred*
18672
kwarg_or_double_starred_rule(Parser *p)
18673
72.2k
{
18674
72.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18675
0
        _Pypegen_stack_overflow(p);
18676
0
    }
18677
72.2k
    if (p->error_indicator) {
18678
0
        p->level--;
18679
0
        return NULL;
18680
0
    }
18681
72.2k
    KeywordOrStarred* _res = NULL;
18682
72.2k
    int _mark = p->mark;
18683
72.2k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18684
1
        p->error_indicator = 1;
18685
1
        p->level--;
18686
1
        return NULL;
18687
1
    }
18688
72.2k
    int _start_lineno = p->tokens[_mark]->lineno;
18689
72.2k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18690
72.2k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18691
72.2k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18692
72.2k
    if (p->call_invalid_rules) { // invalid_kwarg
18693
33.6k
        if (p->error_indicator) {
18694
0
            p->level--;
18695
0
            return NULL;
18696
0
        }
18697
33.6k
        D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
18698
33.6k
        void *invalid_kwarg_var;
18699
33.6k
        if (
18700
33.6k
            (invalid_kwarg_var = invalid_kwarg_rule(p))  // invalid_kwarg
18701
33.6k
        )
18702
0
        {
18703
0
            D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
18704
0
            _res = invalid_kwarg_var;
18705
0
            goto done;
18706
0
        }
18707
33.6k
        p->mark = _mark;
18708
33.6k
        D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
18709
33.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwarg"));
18710
33.6k
    }
18711
72.2k
    { // NAME '=' expression
18712
72.2k
        if (p->error_indicator) {
18713
538
            p->level--;
18714
538
            return NULL;
18715
538
        }
18716
71.7k
        D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
18717
71.7k
        Token * _literal;
18718
71.7k
        expr_ty a;
18719
71.7k
        expr_ty b;
18720
71.7k
        if (
18721
71.7k
            (a = _PyPegen_name_token(p))  // NAME
18722
71.7k
            &&
18723
71.7k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
18724
71.7k
            &&
18725
71.7k
            (b = expression_rule(p))  // expression
18726
71.7k
        )
18727
1.48k
        {
18728
1.48k
            D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
18729
1.48k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18730
1.48k
            if (_token == NULL) {
18731
0
                p->level--;
18732
0
                return NULL;
18733
0
            }
18734
1.48k
            int _end_lineno = _token->end_lineno;
18735
1.48k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18736
1.48k
            int _end_col_offset = _token->end_col_offset;
18737
1.48k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18738
1.48k
            _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
18739
1.48k
            if (_res == NULL && PyErr_Occurred()) {
18740
0
                p->error_indicator = 1;
18741
0
                p->level--;
18742
0
                return NULL;
18743
0
            }
18744
1.48k
            goto done;
18745
1.48k
        }
18746
70.2k
        p->mark = _mark;
18747
70.2k
        D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
18748
70.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression"));
18749
70.2k
    }
18750
0
    { // '**' expression
18751
70.2k
        if (p->error_indicator) {
18752
140
            p->level--;
18753
140
            return NULL;
18754
140
        }
18755
70.0k
        D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' expression"));
18756
70.0k
        Token * _literal;
18757
70.0k
        expr_ty a;
18758
70.0k
        if (
18759
70.0k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
18760
70.0k
            &&
18761
70.0k
            (a = expression_rule(p))  // expression
18762
70.0k
        )
18763
15.2k
        {
18764
15.2k
            D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' expression"));
18765
15.2k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18766
15.2k
            if (_token == NULL) {
18767
0
                p->level--;
18768
0
                return NULL;
18769
0
            }
18770
15.2k
            int _end_lineno = _token->end_lineno;
18771
15.2k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18772
15.2k
            int _end_col_offset = _token->end_col_offset;
18773
15.2k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18774
15.2k
            _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( NULL , a , EXTRA ) ) , 1 );
18775
15.2k
            if (_res == NULL && PyErr_Occurred()) {
18776
0
                p->error_indicator = 1;
18777
0
                p->level--;
18778
0
                return NULL;
18779
0
            }
18780
15.2k
            goto done;
18781
15.2k
        }
18782
54.8k
        p->mark = _mark;
18783
54.8k
        D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
18784
54.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression"));
18785
54.8k
    }
18786
0
    _res = NULL;
18787
71.5k
  done:
18788
71.5k
    p->level--;
18789
71.5k
    return _res;
18790
54.8k
}
18791
18792
// star_targets: star_target !',' | star_target ((',' star_target))* ','?
18793
static expr_ty
18794
star_targets_rule(Parser *p)
18795
539k
{
18796
539k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18797
0
        _Pypegen_stack_overflow(p);
18798
0
    }
18799
539k
    if (p->error_indicator) {
18800
0
        p->level--;
18801
0
        return NULL;
18802
0
    }
18803
539k
    expr_ty _res = NULL;
18804
539k
    int _mark = p->mark;
18805
539k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18806
18
        p->error_indicator = 1;
18807
18
        p->level--;
18808
18
        return NULL;
18809
18
    }
18810
539k
    int _start_lineno = p->tokens[_mark]->lineno;
18811
539k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18812
539k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18813
539k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18814
539k
    { // star_target !','
18815
539k
        if (p->error_indicator) {
18816
0
            p->level--;
18817
0
            return NULL;
18818
0
        }
18819
539k
        D(fprintf(stderr, "%*c> star_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target !','"));
18820
539k
        expr_ty a;
18821
539k
        if (
18822
539k
            (a = star_target_rule(p))  // star_target
18823
539k
            &&
18824
539k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
18825
539k
        )
18826
287k
        {
18827
287k
            D(fprintf(stderr, "%*c+ star_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target !','"));
18828
287k
            _res = a;
18829
287k
            if (_res == NULL && PyErr_Occurred()) {
18830
0
                p->error_indicator = 1;
18831
0
                p->level--;
18832
0
                return NULL;
18833
0
            }
18834
287k
            goto done;
18835
287k
        }
18836
252k
        p->mark = _mark;
18837
252k
        D(fprintf(stderr, "%*c%s star_targets[%d-%d]: %s failed!\n", p->level, ' ',
18838
252k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target !','"));
18839
252k
    }
18840
0
    { // star_target ((',' star_target))* ','?
18841
252k
        if (p->error_indicator) {
18842
1.13k
            p->level--;
18843
1.13k
            return NULL;
18844
1.13k
        }
18845
251k
        D(fprintf(stderr, "%*c> star_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))* ','?"));
18846
251k
        void *_opt_var;
18847
251k
        UNUSED(_opt_var); // Silence compiler warnings
18848
251k
        expr_ty a;
18849
251k
        asdl_seq * b;
18850
251k
        if (
18851
251k
            (a = star_target_rule(p))  // star_target
18852
251k
            &&
18853
251k
            (b = _loop0_94_rule(p))  // ((',' star_target))*
18854
251k
            &&
18855
251k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
18856
251k
        )
18857
72.0k
        {
18858
72.0k
            D(fprintf(stderr, "%*c+ star_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))* ','?"));
18859
72.0k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18860
72.0k
            if (_token == NULL) {
18861
0
                p->level--;
18862
0
                return NULL;
18863
0
            }
18864
72.0k
            int _end_lineno = _token->end_lineno;
18865
72.0k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18866
72.0k
            int _end_col_offset = _token->end_col_offset;
18867
72.0k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18868
72.0k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Store , EXTRA );
18869
72.0k
            if (_res == NULL && PyErr_Occurred()) {
18870
0
                p->error_indicator = 1;
18871
0
                p->level--;
18872
0
                return NULL;
18873
0
            }
18874
72.0k
            goto done;
18875
72.0k
        }
18876
179k
        p->mark = _mark;
18877
179k
        D(fprintf(stderr, "%*c%s star_targets[%d-%d]: %s failed!\n", p->level, ' ',
18878
179k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ((',' star_target))* ','?"));
18879
179k
    }
18880
0
    _res = NULL;
18881
538k
  done:
18882
538k
    p->level--;
18883
538k
    return _res;
18884
179k
}
18885
18886
// star_targets_list_seq: ','.star_target+ ','?
18887
static asdl_expr_seq*
18888
star_targets_list_seq_rule(Parser *p)
18889
7.20k
{
18890
7.20k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18891
0
        _Pypegen_stack_overflow(p);
18892
0
    }
18893
7.20k
    if (p->error_indicator) {
18894
0
        p->level--;
18895
0
        return NULL;
18896
0
    }
18897
7.20k
    asdl_expr_seq* _res = NULL;
18898
7.20k
    int _mark = p->mark;
18899
7.20k
    { // ','.star_target+ ','?
18900
7.20k
        if (p->error_indicator) {
18901
0
            p->level--;
18902
0
            return NULL;
18903
0
        }
18904
7.20k
        D(fprintf(stderr, "%*c> star_targets_list_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.star_target+ ','?"));
18905
7.20k
        void *_opt_var;
18906
7.20k
        UNUSED(_opt_var); // Silence compiler warnings
18907
7.20k
        asdl_expr_seq* a;
18908
7.20k
        if (
18909
7.20k
            (a = (asdl_expr_seq*)_gather_96_rule(p))  // ','.star_target+
18910
7.20k
            &&
18911
7.20k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
18912
7.20k
        )
18913
3.42k
        {
18914
3.42k
            D(fprintf(stderr, "%*c+ star_targets_list_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_target+ ','?"));
18915
3.42k
            _res = a;
18916
3.42k
            if (_res == NULL && PyErr_Occurred()) {
18917
0
                p->error_indicator = 1;
18918
0
                p->level--;
18919
0
                return NULL;
18920
0
            }
18921
3.42k
            goto done;
18922
3.42k
        }
18923
3.78k
        p->mark = _mark;
18924
3.78k
        D(fprintf(stderr, "%*c%s star_targets_list_seq[%d-%d]: %s failed!\n", p->level, ' ',
18925
3.78k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.star_target+ ','?"));
18926
3.78k
    }
18927
0
    _res = NULL;
18928
7.20k
  done:
18929
7.20k
    p->level--;
18930
7.20k
    return _res;
18931
3.78k
}
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
13.2k
{
18937
13.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18938
0
        _Pypegen_stack_overflow(p);
18939
0
    }
18940
13.2k
    if (p->error_indicator) {
18941
0
        p->level--;
18942
0
        return NULL;
18943
0
    }
18944
13.2k
    asdl_expr_seq* _res = NULL;
18945
13.2k
    int _mark = p->mark;
18946
13.2k
    { // star_target ((',' star_target))+ ','?
18947
13.2k
        if (p->error_indicator) {
18948
0
            p->level--;
18949
0
            return NULL;
18950
0
        }
18951
13.2k
        D(fprintf(stderr, "%*c> star_targets_tuple_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))+ ','?"));
18952
13.2k
        void *_opt_var;
18953
13.2k
        UNUSED(_opt_var); // Silence compiler warnings
18954
13.2k
        expr_ty a;
18955
13.2k
        asdl_seq * b;
18956
13.2k
        if (
18957
13.2k
            (a = star_target_rule(p))  // star_target
18958
13.2k
            &&
18959
13.2k
            (b = _loop1_97_rule(p))  // ((',' star_target))+
18960
13.2k
            &&
18961
13.2k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
18962
13.2k
        )
18963
870
        {
18964
870
            D(fprintf(stderr, "%*c+ star_targets_tuple_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))+ ','?"));
18965
870
            _res = ( asdl_expr_seq* ) _PyPegen_seq_insert_in_front ( p , a , b );
18966
870
            if (_res == NULL && PyErr_Occurred()) {
18967
0
                p->error_indicator = 1;
18968
0
                p->level--;
18969
0
                return NULL;
18970
0
            }
18971
870
            goto done;
18972
870
        }
18973
12.3k
        p->mark = _mark;
18974
12.3k
        D(fprintf(stderr, "%*c%s star_targets_tuple_seq[%d-%d]: %s failed!\n", p->level, ' ',
18975
12.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ((',' star_target))+ ','?"));
18976
12.3k
    }
18977
0
    { // star_target ','
18978
12.3k
        if (p->error_indicator) {
18979
0
            p->level--;
18980
0
            return NULL;
18981
0
        }
18982
12.3k
        D(fprintf(stderr, "%*c> star_targets_tuple_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ','"));
18983
12.3k
        Token * _literal;
18984
12.3k
        expr_ty a;
18985
12.3k
        if (
18986
12.3k
            (a = star_target_rule(p))  // star_target
18987
12.3k
            &&
18988
12.3k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
18989
12.3k
        )
18990
797
        {
18991
797
            D(fprintf(stderr, "%*c+ star_targets_tuple_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ','"));
18992
797
            _res = ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , a );
18993
797
            if (_res == NULL && PyErr_Occurred()) {
18994
0
                p->error_indicator = 1;
18995
0
                p->level--;
18996
0
                return NULL;
18997
0
            }
18998
797
            goto done;
18999
797
        }
19000
11.5k
        p->mark = _mark;
19001
11.5k
        D(fprintf(stderr, "%*c%s star_targets_tuple_seq[%d-%d]: %s failed!\n", p->level, ' ',
19002
11.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ','"));
19003
11.5k
    }
19004
0
    _res = NULL;
19005
13.2k
  done:
19006
13.2k
    p->level--;
19007
13.2k
    return _res;
19008
11.5k
}
19009
19010
// star_target: '*' (!'*' star_target) | target_with_star_atom
19011
static expr_ty
19012
star_target_rule(Parser *p)
19013
1.00M
{
19014
1.00M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19015
0
        _Pypegen_stack_overflow(p);
19016
0
    }
19017
1.00M
    if (p->error_indicator) {
19018
5
        p->level--;
19019
5
        return NULL;
19020
5
    }
19021
1.00M
    expr_ty _res = NULL;
19022
1.00M
    if (_PyPegen_is_memoized(p, star_target_type, &_res)) {
19023
408k
        p->level--;
19024
408k
        return _res;
19025
408k
    }
19026
593k
    int _mark = p->mark;
19027
593k
    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
593k
    int _start_lineno = p->tokens[_mark]->lineno;
19033
593k
    UNUSED(_start_lineno); // Only used by EXTRA macro
19034
593k
    int _start_col_offset = p->tokens[_mark]->col_offset;
19035
593k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
19036
593k
    { // '*' (!'*' star_target)
19037
593k
        if (p->error_indicator) {
19038
0
            p->level--;
19039
0
            return NULL;
19040
0
        }
19041
593k
        D(fprintf(stderr, "%*c> star_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (!'*' star_target)"));
19042
593k
        Token * _literal;
19043
593k
        void *a;
19044
593k
        if (
19045
593k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
19046
593k
            &&
19047
593k
            (a = _tmp_98_rule(p))  // !'*' star_target
19048
593k
        )
19049
5.67k
        {
19050
5.67k
            D(fprintf(stderr, "%*c+ star_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (!'*' star_target)"));
19051
5.67k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19052
5.67k
            if (_token == NULL) {
19053
0
                p->level--;
19054
0
                return NULL;
19055
0
            }
19056
5.67k
            int _end_lineno = _token->end_lineno;
19057
5.67k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19058
5.67k
            int _end_col_offset = _token->end_col_offset;
19059
5.67k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19060
5.67k
            _res = _PyAST_Starred ( CHECK ( expr_ty , _PyPegen_set_expr_context ( p , a , Store ) ) , Store , EXTRA );
19061
5.67k
            if (_res == NULL && PyErr_Occurred()) {
19062
0
                p->error_indicator = 1;
19063
0
                p->level--;
19064
0
                return NULL;
19065
0
            }
19066
5.67k
            goto done;
19067
5.67k
        }
19068
587k
        p->mark = _mark;
19069
587k
        D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
19070
587k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (!'*' star_target)"));
19071
587k
    }
19072
0
    { // target_with_star_atom
19073
587k
        if (p->error_indicator) {
19074
451
            p->level--;
19075
451
            return NULL;
19076
451
        }
19077
586k
        D(fprintf(stderr, "%*c> star_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "target_with_star_atom"));
19078
586k
        expr_ty target_with_star_atom_var;
19079
586k
        if (
19080
586k
            (target_with_star_atom_var = target_with_star_atom_rule(p))  // target_with_star_atom
19081
586k
        )
19082
411k
        {
19083
411k
            D(fprintf(stderr, "%*c+ star_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "target_with_star_atom"));
19084
411k
            _res = target_with_star_atom_var;
19085
411k
            goto done;
19086
411k
        }
19087
175k
        p->mark = _mark;
19088
175k
        D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
19089
175k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "target_with_star_atom"));
19090
175k
    }
19091
0
    _res = NULL;
19092
592k
  done:
19093
592k
    _PyPegen_insert_memo(p, _mark, star_target_type, _res);
19094
592k
    p->level--;
19095
592k
    return _res;
19096
175k
}
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
607k
{
19105
607k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19106
0
        _Pypegen_stack_overflow(p);
19107
0
    }
19108
607k
    if (p->error_indicator) {
19109
0
        p->level--;
19110
0
        return NULL;
19111
0
    }
19112
607k
    expr_ty _res = NULL;
19113
607k
    if (_PyPegen_is_memoized(p, target_with_star_atom_type, &_res)) {
19114
13.1k
        p->level--;
19115
13.1k
        return _res;
19116
13.1k
    }
19117
594k
    int _mark = p->mark;
19118
594k
    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
594k
    int _start_lineno = p->tokens[_mark]->lineno;
19124
594k
    UNUSED(_start_lineno); // Only used by EXTRA macro
19125
594k
    int _start_col_offset = p->tokens[_mark]->col_offset;
19126
594k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
19127
594k
    { // t_primary '.' NAME !t_lookahead
19128
594k
        if (p->error_indicator) {
19129
0
            p->level--;
19130
0
            return NULL;
19131
0
        }
19132
594k
        D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19133
594k
        Token * _literal;
19134
594k
        expr_ty a;
19135
594k
        expr_ty b;
19136
594k
        if (
19137
594k
            (a = t_primary_rule(p))  // t_primary
19138
594k
            &&
19139
594k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
19140
594k
            &&
19141
594k
            (b = _PyPegen_name_token(p))  // NAME
19142
594k
            &&
19143
594k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
19144
594k
        )
19145
11.0k
        {
19146
11.0k
            D(fprintf(stderr, "%*c+ target_with_star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19147
11.0k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19148
11.0k
            if (_token == NULL) {
19149
0
                p->level--;
19150
0
                return NULL;
19151
0
            }
19152
11.0k
            int _end_lineno = _token->end_lineno;
19153
11.0k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19154
11.0k
            int _end_col_offset = _token->end_col_offset;
19155
11.0k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19156
11.0k
            _res = _PyAST_Attribute ( a , b -> v . Name . id , Store , EXTRA );
19157
11.0k
            if (_res == NULL && PyErr_Occurred()) {
19158
0
                p->error_indicator = 1;
19159
0
                p->level--;
19160
0
                return NULL;
19161
0
            }
19162
11.0k
            goto done;
19163
11.0k
        }
19164
583k
        p->mark = _mark;
19165
583k
        D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19166
583k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19167
583k
    }
19168
0
    { // t_primary '[' slices ']' !t_lookahead
19169
583k
        if (p->error_indicator) {
19170
1.33k
            p->level--;
19171
1.33k
            return NULL;
19172
1.33k
        }
19173
581k
        D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19174
581k
        Token * _literal;
19175
581k
        Token * _literal_1;
19176
581k
        expr_ty a;
19177
581k
        expr_ty b;
19178
581k
        if (
19179
581k
            (a = t_primary_rule(p))  // t_primary
19180
581k
            &&
19181
581k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
19182
581k
            &&
19183
581k
            (b = slices_rule(p))  // slices
19184
581k
            &&
19185
581k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
19186
581k
            &&
19187
581k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
19188
581k
        )
19189
5.71k
        {
19190
5.71k
            D(fprintf(stderr, "%*c+ target_with_star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19191
5.71k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19192
5.71k
            if (_token == NULL) {
19193
0
                p->level--;
19194
0
                return NULL;
19195
0
            }
19196
5.71k
            int _end_lineno = _token->end_lineno;
19197
5.71k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19198
5.71k
            int _end_col_offset = _token->end_col_offset;
19199
5.71k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19200
5.71k
            _res = _PyAST_Subscript ( a , b , Store , EXTRA );
19201
5.71k
            if (_res == NULL && PyErr_Occurred()) {
19202
0
                p->error_indicator = 1;
19203
0
                p->level--;
19204
0
                return NULL;
19205
0
            }
19206
5.71k
            goto done;
19207
5.71k
        }
19208
576k
        p->mark = _mark;
19209
576k
        D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19210
576k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19211
576k
    }
19212
0
    { // star_atom
19213
576k
        if (p->error_indicator) {
19214
0
            p->level--;
19215
0
            return NULL;
19216
0
        }
19217
576k
        D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_atom"));
19218
576k
        expr_ty star_atom_var;
19219
576k
        if (
19220
576k
            (star_atom_var = star_atom_rule(p))  // star_atom
19221
576k
        )
19222
401k
        {
19223
401k
            D(fprintf(stderr, "%*c+ target_with_star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_atom"));
19224
401k
            _res = star_atom_var;
19225
401k
            goto done;
19226
401k
        }
19227
174k
        p->mark = _mark;
19228
174k
        D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19229
174k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_atom"));
19230
174k
    }
19231
0
    _res = NULL;
19232
592k
  done:
19233
592k
    _PyPegen_insert_memo(p, _mark, target_with_star_atom_type, _res);
19234
592k
    p->level--;
19235
592k
    return _res;
19236
174k
}
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
576k
{
19246
576k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19247
0
        _Pypegen_stack_overflow(p);
19248
0
    }
19249
576k
    if (p->error_indicator) {
19250
0
        p->level--;
19251
0
        return NULL;
19252
0
    }
19253
576k
    expr_ty _res = NULL;
19254
576k
    int _mark = p->mark;
19255
576k
    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
576k
    int _start_lineno = p->tokens[_mark]->lineno;
19261
576k
    UNUSED(_start_lineno); // Only used by EXTRA macro
19262
576k
    int _start_col_offset = p->tokens[_mark]->col_offset;
19263
576k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
19264
576k
    { // NAME
19265
576k
        if (p->error_indicator) {
19266
0
            p->level--;
19267
0
            return NULL;
19268
0
        }
19269
576k
        D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
19270
576k
        expr_ty a;
19271
576k
        if (
19272
576k
            (a = _PyPegen_name_token(p))  // NAME
19273
576k
        )
19274
385k
        {
19275
385k
            D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
19276
385k
            _res = _PyPegen_set_expr_context ( p , a , Store );
19277
385k
            if (_res == NULL && PyErr_Occurred()) {
19278
0
                p->error_indicator = 1;
19279
0
                p->level--;
19280
0
                return NULL;
19281
0
            }
19282
385k
            goto done;
19283
385k
        }
19284
191k
        p->mark = _mark;
19285
191k
        D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19286
191k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
19287
191k
    }
19288
0
    { // '(' target_with_star_atom ')'
19289
191k
        if (p->error_indicator) {
19290
0
            p->level--;
19291
0
            return NULL;
19292
0
        }
19293
191k
        D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' target_with_star_atom ')'"));
19294
191k
        Token * _literal;
19295
191k
        Token * _literal_1;
19296
191k
        expr_ty a;
19297
191k
        if (
19298
191k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
19299
191k
            &&
19300
191k
            (a = target_with_star_atom_rule(p))  // target_with_star_atom
19301
191k
            &&
19302
191k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19303
191k
        )
19304
7.24k
        {
19305
7.24k
            D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' target_with_star_atom ')'"));
19306
7.24k
            _res = _PyPegen_set_expr_context ( p , a , Store );
19307
7.24k
            if (_res == NULL && PyErr_Occurred()) {
19308
0
                p->error_indicator = 1;
19309
0
                p->level--;
19310
0
                return NULL;
19311
0
            }
19312
7.24k
            goto done;
19313
7.24k
        }
19314
183k
        p->mark = _mark;
19315
183k
        D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19316
183k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' target_with_star_atom ')'"));
19317
183k
    }
19318
0
    { // '(' star_targets_tuple_seq? ')'
19319
183k
        if (p->error_indicator) {
19320
0
            p->level--;
19321
0
            return NULL;
19322
0
        }
19323
183k
        D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
19324
183k
        Token * _literal;
19325
183k
        Token * _literal_1;
19326
183k
        void *a;
19327
183k
        if (
19328
183k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
19329
183k
            &&
19330
183k
            (a = star_targets_tuple_seq_rule(p), !p->error_indicator)  // star_targets_tuple_seq?
19331
183k
            &&
19332
183k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19333
183k
        )
19334
7.25k
        {
19335
7.25k
            D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
19336
7.25k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19337
7.25k
            if (_token == NULL) {
19338
0
                p->level--;
19339
0
                return NULL;
19340
0
            }
19341
7.25k
            int _end_lineno = _token->end_lineno;
19342
7.25k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19343
7.25k
            int _end_col_offset = _token->end_col_offset;
19344
7.25k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19345
7.25k
            _res = _PyAST_Tuple ( a , Store , EXTRA );
19346
7.25k
            if (_res == NULL && PyErr_Occurred()) {
19347
0
                p->error_indicator = 1;
19348
0
                p->level--;
19349
0
                return NULL;
19350
0
            }
19351
7.25k
            goto done;
19352
7.25k
        }
19353
176k
        p->mark = _mark;
19354
176k
        D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19355
176k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
19356
176k
    }
19357
0
    { // '[' star_targets_list_seq? ']'
19358
176k
        if (p->error_indicator) {
19359
0
            p->level--;
19360
0
            return NULL;
19361
0
        }
19362
176k
        D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' star_targets_list_seq? ']'"));
19363
176k
        Token * _literal;
19364
176k
        Token * _literal_1;
19365
176k
        void *a;
19366
176k
        if (
19367
176k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
19368
176k
            &&
19369
176k
            (a = star_targets_list_seq_rule(p), !p->error_indicator)  // star_targets_list_seq?
19370
176k
            &&
19371
176k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
19372
176k
        )
19373
2.12k
        {
19374
2.12k
            D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' star_targets_list_seq? ']'"));
19375
2.12k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19376
2.12k
            if (_token == NULL) {
19377
0
                p->level--;
19378
0
                return NULL;
19379
0
            }
19380
2.12k
            int _end_lineno = _token->end_lineno;
19381
2.12k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19382
2.12k
            int _end_col_offset = _token->end_col_offset;
19383
2.12k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19384
2.12k
            _res = _PyAST_List ( a , Store , EXTRA );
19385
2.12k
            if (_res == NULL && PyErr_Occurred()) {
19386
0
                p->error_indicator = 1;
19387
0
                p->level--;
19388
0
                return NULL;
19389
0
            }
19390
2.12k
            goto done;
19391
2.12k
        }
19392
174k
        p->mark = _mark;
19393
174k
        D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19394
174k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' star_targets_list_seq? ']'"));
19395
174k
    }
19396
0
    _res = NULL;
19397
576k
  done:
19398
576k
    p->level--;
19399
576k
    return _res;
19400
174k
}
19401
19402
// single_target: single_subscript_attribute_target | NAME | '(' single_target ')'
19403
static expr_ty
19404
single_target_rule(Parser *p)
19405
316k
{
19406
316k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19407
0
        _Pypegen_stack_overflow(p);
19408
0
    }
19409
316k
    if (p->error_indicator) {
19410
0
        p->level--;
19411
0
        return NULL;
19412
0
    }
19413
316k
    expr_ty _res = NULL;
19414
316k
    int _mark = p->mark;
19415
316k
    { // single_subscript_attribute_target
19416
316k
        if (p->error_indicator) {
19417
0
            p->level--;
19418
0
            return NULL;
19419
0
        }
19420
316k
        D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
19421
316k
        expr_ty single_subscript_attribute_target_var;
19422
316k
        if (
19423
316k
            (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p))  // single_subscript_attribute_target
19424
316k
        )
19425
12.1k
        {
19426
12.1k
            D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
19427
12.1k
            _res = single_subscript_attribute_target_var;
19428
12.1k
            goto done;
19429
12.1k
        }
19430
304k
        p->mark = _mark;
19431
304k
        D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
19432
304k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_subscript_attribute_target"));
19433
304k
    }
19434
0
    { // NAME
19435
304k
        if (p->error_indicator) {
19436
72
            p->level--;
19437
72
            return NULL;
19438
72
        }
19439
303k
        D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
19440
303k
        expr_ty a;
19441
303k
        if (
19442
303k
            (a = _PyPegen_name_token(p))  // NAME
19443
303k
        )
19444
157k
        {
19445
157k
            D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
19446
157k
            _res = _PyPegen_set_expr_context ( p , a , Store );
19447
157k
            if (_res == NULL && PyErr_Occurred()) {
19448
0
                p->error_indicator = 1;
19449
0
                p->level--;
19450
0
                return NULL;
19451
0
            }
19452
157k
            goto done;
19453
157k
        }
19454
146k
        p->mark = _mark;
19455
146k
        D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
19456
146k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
19457
146k
    }
19458
0
    { // '(' single_target ')'
19459
146k
        if (p->error_indicator) {
19460
0
            p->level--;
19461
0
            return NULL;
19462
0
        }
19463
146k
        D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
19464
146k
        Token * _literal;
19465
146k
        Token * _literal_1;
19466
146k
        expr_ty a;
19467
146k
        if (
19468
146k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
19469
146k
            &&
19470
146k
            (a = single_target_rule(p))  // single_target
19471
146k
            &&
19472
146k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19473
146k
        )
19474
393
        {
19475
393
            D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
19476
393
            _res = a;
19477
393
            if (_res == NULL && PyErr_Occurred()) {
19478
0
                p->error_indicator = 1;
19479
0
                p->level--;
19480
0
                return NULL;
19481
0
            }
19482
393
            goto done;
19483
393
        }
19484
146k
        p->mark = _mark;
19485
146k
        D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
19486
146k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' single_target ')'"));
19487
146k
    }
19488
0
    _res = NULL;
19489
316k
  done:
19490
316k
    p->level--;
19491
316k
    return _res;
19492
146k
}
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
633k
{
19500
633k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19501
0
        _Pypegen_stack_overflow(p);
19502
0
    }
19503
633k
    if (p->error_indicator) {
19504
0
        p->level--;
19505
0
        return NULL;
19506
0
    }
19507
633k
    expr_ty _res = NULL;
19508
633k
    int _mark = p->mark;
19509
633k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
19510
5
        p->error_indicator = 1;
19511
5
        p->level--;
19512
5
        return NULL;
19513
5
    }
19514
633k
    int _start_lineno = p->tokens[_mark]->lineno;
19515
633k
    UNUSED(_start_lineno); // Only used by EXTRA macro
19516
633k
    int _start_col_offset = p->tokens[_mark]->col_offset;
19517
633k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
19518
633k
    { // t_primary '.' NAME !t_lookahead
19519
633k
        if (p->error_indicator) {
19520
0
            p->level--;
19521
0
            return NULL;
19522
0
        }
19523
633k
        D(fprintf(stderr, "%*c> single_subscript_attribute_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19524
633k
        Token * _literal;
19525
633k
        expr_ty a;
19526
633k
        expr_ty b;
19527
633k
        if (
19528
633k
            (a = t_primary_rule(p))  // t_primary
19529
633k
            &&
19530
633k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
19531
633k
            &&
19532
633k
            (b = _PyPegen_name_token(p))  // NAME
19533
633k
            &&
19534
633k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
19535
633k
        )
19536
15.7k
        {
19537
15.7k
            D(fprintf(stderr, "%*c+ single_subscript_attribute_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19538
15.7k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19539
15.7k
            if (_token == NULL) {
19540
0
                p->level--;
19541
0
                return NULL;
19542
0
            }
19543
15.7k
            int _end_lineno = _token->end_lineno;
19544
15.7k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19545
15.7k
            int _end_col_offset = _token->end_col_offset;
19546
15.7k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19547
15.7k
            _res = _PyAST_Attribute ( a , b -> v . Name . id , Store , EXTRA );
19548
15.7k
            if (_res == NULL && PyErr_Occurred()) {
19549
0
                p->error_indicator = 1;
19550
0
                p->level--;
19551
0
                return NULL;
19552
0
            }
19553
15.7k
            goto done;
19554
15.7k
        }
19555
617k
        p->mark = _mark;
19556
617k
        D(fprintf(stderr, "%*c%s single_subscript_attribute_target[%d-%d]: %s failed!\n", p->level, ' ',
19557
617k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19558
617k
    }
19559
0
    { // t_primary '[' slices ']' !t_lookahead
19560
617k
        if (p->error_indicator) {
19561
1.45k
            p->level--;
19562
1.45k
            return NULL;
19563
1.45k
        }
19564
616k
        D(fprintf(stderr, "%*c> single_subscript_attribute_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19565
616k
        Token * _literal;
19566
616k
        Token * _literal_1;
19567
616k
        expr_ty a;
19568
616k
        expr_ty b;
19569
616k
        if (
19570
616k
            (a = t_primary_rule(p))  // t_primary
19571
616k
            &&
19572
616k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
19573
616k
            &&
19574
616k
            (b = slices_rule(p))  // slices
19575
616k
            &&
19576
616k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
19577
616k
            &&
19578
616k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
19579
616k
        )
19580
9.84k
        {
19581
9.84k
            D(fprintf(stderr, "%*c+ single_subscript_attribute_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19582
9.84k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19583
9.84k
            if (_token == NULL) {
19584
0
                p->level--;
19585
0
                return NULL;
19586
0
            }
19587
9.84k
            int _end_lineno = _token->end_lineno;
19588
9.84k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19589
9.84k
            int _end_col_offset = _token->end_col_offset;
19590
9.84k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19591
9.84k
            _res = _PyAST_Subscript ( a , b , Store , EXTRA );
19592
9.84k
            if (_res == NULL && PyErr_Occurred()) {
19593
0
                p->error_indicator = 1;
19594
0
                p->level--;
19595
0
                return NULL;
19596
0
            }
19597
9.84k
            goto done;
19598
9.84k
        }
19599
606k
        p->mark = _mark;
19600
606k
        D(fprintf(stderr, "%*c%s single_subscript_attribute_target[%d-%d]: %s failed!\n", p->level, ' ',
19601
606k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19602
606k
    }
19603
0
    _res = NULL;
19604
632k
  done:
19605
632k
    p->level--;
19606
632k
    return _res;
19607
606k
}
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
5.13M
{
19620
5.13M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19621
0
        _Pypegen_stack_overflow(p);
19622
0
    }
19623
5.13M
    expr_ty _res = NULL;
19624
5.13M
    if (_PyPegen_is_memoized(p, t_primary_type, &_res)) {
19625
4.50M
        p->level--;
19626
4.50M
        return _res;
19627
4.50M
    }
19628
622k
    int _mark = p->mark;
19629
622k
    int _resmark = p->mark;
19630
667k
    while (1) {
19631
667k
        int tmpvar_9 = _PyPegen_update_memo(p, _mark, t_primary_type, _res);
19632
667k
        if (tmpvar_9) {
19633
0
            p->level--;
19634
0
            return _res;
19635
0
        }
19636
667k
        p->mark = _mark;
19637
667k
        void *_raw = t_primary_raw(p);
19638
667k
        if (p->error_indicator) {
19639
2.81k
            p->level--;
19640
2.81k
            return NULL;
19641
2.81k
        }
19642
664k
        if (_raw == NULL || p->mark <= _resmark)
19643
619k
            break;
19644
44.7k
        _resmark = p->mark;
19645
44.7k
        _res = _raw;
19646
44.7k
    }
19647
619k
    p->mark = _resmark;
19648
619k
    p->level--;
19649
619k
    return _res;
19650
622k
}
19651
static expr_ty
19652
t_primary_raw(Parser *p)
19653
667k
{
19654
667k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19655
0
        _Pypegen_stack_overflow(p);
19656
0
    }
19657
667k
    if (p->error_indicator) {
19658
0
        p->level--;
19659
0
        return NULL;
19660
0
    }
19661
667k
    expr_ty _res = NULL;
19662
667k
    int _mark = p->mark;
19663
667k
    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
667k
    int _start_lineno = p->tokens[_mark]->lineno;
19669
667k
    UNUSED(_start_lineno); // Only used by EXTRA macro
19670
667k
    int _start_col_offset = p->tokens[_mark]->col_offset;
19671
667k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
19672
667k
    { // t_primary '.' NAME &t_lookahead
19673
667k
        if (p->error_indicator) {
19674
0
            p->level--;
19675
0
            return NULL;
19676
0
        }
19677
667k
        D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
19678
667k
        Token * _literal;
19679
667k
        expr_ty a;
19680
667k
        expr_ty b;
19681
667k
        if (
19682
667k
            (a = t_primary_rule(p))  // t_primary
19683
667k
            &&
19684
667k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
19685
667k
            &&
19686
667k
            (b = _PyPegen_name_token(p))  // NAME
19687
667k
            &&
19688
667k
            _PyPegen_lookahead(1, t_lookahead_rule, p)
19689
667k
        )
19690
2.27k
        {
19691
2.27k
            D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
19692
2.27k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19693
2.27k
            if (_token == NULL) {
19694
0
                p->level--;
19695
0
                return NULL;
19696
0
            }
19697
2.27k
            int _end_lineno = _token->end_lineno;
19698
2.27k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19699
2.27k
            int _end_col_offset = _token->end_col_offset;
19700
2.27k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19701
2.27k
            _res = _PyAST_Attribute ( a , b -> v . Name . id , Load , EXTRA );
19702
2.27k
            if (_res == NULL && PyErr_Occurred()) {
19703
0
                p->error_indicator = 1;
19704
0
                p->level--;
19705
0
                return NULL;
19706
0
            }
19707
2.27k
            goto done;
19708
2.27k
        }
19709
665k
        p->mark = _mark;
19710
665k
        D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
19711
665k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
19712
665k
    }
19713
0
    { // t_primary '[' slices ']' &t_lookahead
19714
665k
        if (p->error_indicator) {
19715
10
            p->level--;
19716
10
            return NULL;
19717
10
        }
19718
665k
        D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
19719
665k
        Token * _literal;
19720
665k
        Token * _literal_1;
19721
665k
        expr_ty a;
19722
665k
        expr_ty b;
19723
665k
        if (
19724
665k
            (a = t_primary_rule(p))  // t_primary
19725
665k
            &&
19726
665k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
19727
665k
            &&
19728
665k
            (b = slices_rule(p))  // slices
19729
665k
            &&
19730
665k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
19731
665k
            &&
19732
665k
            _PyPegen_lookahead(1, t_lookahead_rule, p)
19733
665k
        )
19734
1.22k
        {
19735
1.22k
            D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
19736
1.22k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19737
1.22k
            if (_token == NULL) {
19738
0
                p->level--;
19739
0
                return NULL;
19740
0
            }
19741
1.22k
            int _end_lineno = _token->end_lineno;
19742
1.22k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19743
1.22k
            int _end_col_offset = _token->end_col_offset;
19744
1.22k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19745
1.22k
            _res = _PyAST_Subscript ( a , b , Load , EXTRA );
19746
1.22k
            if (_res == NULL && PyErr_Occurred()) {
19747
0
                p->error_indicator = 1;
19748
0
                p->level--;
19749
0
                return NULL;
19750
0
            }
19751
1.22k
            goto done;
19752
1.22k
        }
19753
663k
        p->mark = _mark;
19754
663k
        D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
19755
663k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
19756
663k
    }
19757
0
    { // t_primary genexp &t_lookahead
19758
663k
        if (p->error_indicator) {
19759
336
            p->level--;
19760
336
            return NULL;
19761
336
        }
19762
663k
        D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary genexp &t_lookahead"));
19763
663k
        expr_ty a;
19764
663k
        expr_ty b;
19765
663k
        if (
19766
663k
            (a = t_primary_rule(p))  // t_primary
19767
663k
            &&
19768
663k
            (b = genexp_rule(p))  // genexp
19769
663k
            &&
19770
663k
            _PyPegen_lookahead(1, t_lookahead_rule, p)
19771
663k
        )
19772
679
        {
19773
679
            D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary genexp &t_lookahead"));
19774
679
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19775
679
            if (_token == NULL) {
19776
0
                p->level--;
19777
0
                return NULL;
19778
0
            }
19779
679
            int _end_lineno = _token->end_lineno;
19780
679
            UNUSED(_end_lineno); // Only used by EXTRA macro
19781
679
            int _end_col_offset = _token->end_col_offset;
19782
679
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19783
679
            _res = _PyAST_Call ( a , CHECK ( asdl_expr_seq* , ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
19784
679
            if (_res == NULL && PyErr_Occurred()) {
19785
0
                p->error_indicator = 1;
19786
0
                p->level--;
19787
0
                return NULL;
19788
0
            }
19789
679
            goto done;
19790
679
        }
19791
662k
        p->mark = _mark;
19792
662k
        D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
19793
662k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary genexp &t_lookahead"));
19794
662k
    }
19795
0
    { // t_primary '(' arguments? ')' &t_lookahead
19796
662k
        if (p->error_indicator) {
19797
314
            p->level--;
19798
314
            return NULL;
19799
314
        }
19800
662k
        D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
19801
662k
        Token * _literal;
19802
662k
        Token * _literal_1;
19803
662k
        expr_ty a;
19804
662k
        void *b;
19805
662k
        if (
19806
662k
            (a = t_primary_rule(p))  // t_primary
19807
662k
            &&
19808
662k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
19809
662k
            &&
19810
662k
            (b = arguments_rule(p), !p->error_indicator)  // arguments?
19811
662k
            &&
19812
662k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19813
662k
            &&
19814
662k
            _PyPegen_lookahead(1, t_lookahead_rule, p)
19815
662k
        )
19816
14.6k
        {
19817
14.6k
            D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
19818
14.6k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19819
14.6k
            if (_token == NULL) {
19820
0
                p->level--;
19821
0
                return NULL;
19822
0
            }
19823
14.6k
            int _end_lineno = _token->end_lineno;
19824
14.6k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19825
14.6k
            int _end_col_offset = _token->end_col_offset;
19826
14.6k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19827
14.6k
            _res = _PyAST_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
19828
14.6k
            if (_res == NULL && PyErr_Occurred()) {
19829
0
                p->error_indicator = 1;
19830
0
                p->level--;
19831
0
                return NULL;
19832
0
            }
19833
14.6k
            goto done;
19834
14.6k
        }
19835
647k
        p->mark = _mark;
19836
647k
        D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
19837
647k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
19838
647k
    }
19839
0
    { // atom &t_lookahead
19840
647k
        if (p->error_indicator) {
19841
165
            p->level--;
19842
165
            return NULL;
19843
165
        }
19844
647k
        D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "atom &t_lookahead"));
19845
647k
        expr_ty a;
19846
647k
        if (
19847
647k
            (a = atom_rule(p))  // atom
19848
647k
            &&
19849
647k
            _PyPegen_lookahead(1, t_lookahead_rule, p)
19850
647k
        )
19851
51.2k
        {
19852
51.2k
            D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "atom &t_lookahead"));
19853
51.2k
            _res = a;
19854
51.2k
            if (_res == NULL && PyErr_Occurred()) {
19855
0
                p->error_indicator = 1;
19856
0
                p->level--;
19857
0
                return NULL;
19858
0
            }
19859
51.2k
            goto done;
19860
51.2k
        }
19861
596k
        p->mark = _mark;
19862
596k
        D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
19863
596k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "atom &t_lookahead"));
19864
596k
    }
19865
0
    _res = NULL;
19866
666k
  done:
19867
666k
    p->level--;
19868
666k
    return _res;
19869
596k
}
19870
19871
// t_lookahead: '(' | '[' | '.'
19872
static void *
19873
t_lookahead_rule(Parser *p)
19874
597k
{
19875
597k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19876
0
        _Pypegen_stack_overflow(p);
19877
0
    }
19878
597k
    if (p->error_indicator) {
19879
0
        p->level--;
19880
0
        return NULL;
19881
0
    }
19882
597k
    void * _res = NULL;
19883
597k
    int _mark = p->mark;
19884
597k
    { // '('
19885
597k
        if (p->error_indicator) {
19886
0
            p->level--;
19887
0
            return NULL;
19888
0
        }
19889
597k
        D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
19890
597k
        Token * _literal;
19891
597k
        if (
19892
597k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
19893
597k
        )
19894
27.4k
        {
19895
27.4k
            D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
19896
27.4k
            _res = _literal;
19897
27.4k
            goto done;
19898
27.4k
        }
19899
570k
        p->mark = _mark;
19900
570k
        D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
19901
570k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
19902
570k
    }
19903
0
    { // '['
19904
570k
        if (p->error_indicator) {
19905
151
            p->level--;
19906
151
            return NULL;
19907
151
        }
19908
570k
        D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
19909
570k
        Token * _literal;
19910
570k
        if (
19911
570k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
19912
570k
        )
19913
15.6k
        {
19914
15.6k
            D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
19915
15.6k
            _res = _literal;
19916
15.6k
            goto done;
19917
15.6k
        }
19918
554k
        p->mark = _mark;
19919
554k
        D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
19920
554k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
19921
554k
    }
19922
0
    { // '.'
19923
554k
        if (p->error_indicator) {
19924
0
            p->level--;
19925
0
            return NULL;
19926
0
        }
19927
554k
        D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
19928
554k
        Token * _literal;
19929
554k
        if (
19930
554k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
19931
554k
        )
19932
26.9k
        {
19933
26.9k
            D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
19934
26.9k
            _res = _literal;
19935
26.9k
            goto done;
19936
26.9k
        }
19937
527k
        p->mark = _mark;
19938
527k
        D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
19939
527k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
19940
527k
    }
19941
0
    _res = NULL;
19942
597k
  done:
19943
597k
    p->level--;
19944
597k
    return _res;
19945
527k
}
19946
19947
// del_targets: ','.del_target+ ','?
19948
static asdl_expr_seq*
19949
del_targets_rule(Parser *p)
19950
10.0k
{
19951
10.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19952
0
        _Pypegen_stack_overflow(p);
19953
0
    }
19954
10.0k
    if (p->error_indicator) {
19955
0
        p->level--;
19956
0
        return NULL;
19957
0
    }
19958
10.0k
    asdl_expr_seq* _res = NULL;
19959
10.0k
    int _mark = p->mark;
19960
10.0k
    { // ','.del_target+ ','?
19961
10.0k
        if (p->error_indicator) {
19962
0
            p->level--;
19963
0
            return NULL;
19964
0
        }
19965
10.0k
        D(fprintf(stderr, "%*c> del_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.del_target+ ','?"));
19966
10.0k
        void *_opt_var;
19967
10.0k
        UNUSED(_opt_var); // Silence compiler warnings
19968
10.0k
        asdl_expr_seq* a;
19969
10.0k
        if (
19970
10.0k
            (a = (asdl_expr_seq*)_gather_100_rule(p))  // ','.del_target+
19971
10.0k
            &&
19972
10.0k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
19973
10.0k
        )
19974
8.09k
        {
19975
8.09k
            D(fprintf(stderr, "%*c+ del_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.del_target+ ','?"));
19976
8.09k
            _res = a;
19977
8.09k
            if (_res == NULL && PyErr_Occurred()) {
19978
0
                p->error_indicator = 1;
19979
0
                p->level--;
19980
0
                return NULL;
19981
0
            }
19982
8.09k
            goto done;
19983
8.09k
        }
19984
1.93k
        p->mark = _mark;
19985
1.93k
        D(fprintf(stderr, "%*c%s del_targets[%d-%d]: %s failed!\n", p->level, ' ',
19986
1.93k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.del_target+ ','?"));
19987
1.93k
    }
19988
0
    _res = NULL;
19989
10.0k
  done:
19990
10.0k
    p->level--;
19991
10.0k
    return _res;
19992
1.93k
}
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
29.5k
{
20001
29.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20002
0
        _Pypegen_stack_overflow(p);
20003
0
    }
20004
29.5k
    if (p->error_indicator) {
20005
0
        p->level--;
20006
0
        return NULL;
20007
0
    }
20008
29.5k
    expr_ty _res = NULL;
20009
29.5k
    if (_PyPegen_is_memoized(p, del_target_type, &_res)) {
20010
5.22k
        p->level--;
20011
5.22k
        return _res;
20012
5.22k
    }
20013
24.2k
    int _mark = p->mark;
20014
24.2k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
20015
0
        p->error_indicator = 1;
20016
0
        p->level--;
20017
0
        return NULL;
20018
0
    }
20019
24.2k
    int _start_lineno = p->tokens[_mark]->lineno;
20020
24.2k
    UNUSED(_start_lineno); // Only used by EXTRA macro
20021
24.2k
    int _start_col_offset = p->tokens[_mark]->col_offset;
20022
24.2k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
20023
24.2k
    { // t_primary '.' NAME !t_lookahead
20024
24.2k
        if (p->error_indicator) {
20025
0
            p->level--;
20026
0
            return NULL;
20027
0
        }
20028
24.2k
        D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
20029
24.2k
        Token * _literal;
20030
24.2k
        expr_ty a;
20031
24.2k
        expr_ty b;
20032
24.2k
        if (
20033
24.2k
            (a = t_primary_rule(p))  // t_primary
20034
24.2k
            &&
20035
24.2k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
20036
24.2k
            &&
20037
24.2k
            (b = _PyPegen_name_token(p))  // NAME
20038
24.2k
            &&
20039
24.2k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
20040
24.2k
        )
20041
1.41k
        {
20042
1.41k
            D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
20043
1.41k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
20044
1.41k
            if (_token == NULL) {
20045
0
                p->level--;
20046
0
                return NULL;
20047
0
            }
20048
1.41k
            int _end_lineno = _token->end_lineno;
20049
1.41k
            UNUSED(_end_lineno); // Only used by EXTRA macro
20050
1.41k
            int _end_col_offset = _token->end_col_offset;
20051
1.41k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
20052
1.41k
            _res = _PyAST_Attribute ( a , b -> v . Name . id , Del , EXTRA );
20053
1.41k
            if (_res == NULL && PyErr_Occurred()) {
20054
0
                p->error_indicator = 1;
20055
0
                p->level--;
20056
0
                return NULL;
20057
0
            }
20058
1.41k
            goto done;
20059
1.41k
        }
20060
22.8k
        p->mark = _mark;
20061
22.8k
        D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
20062
22.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
20063
22.8k
    }
20064
0
    { // t_primary '[' slices ']' !t_lookahead
20065
22.8k
        if (p->error_indicator) {
20066
14
            p->level--;
20067
14
            return NULL;
20068
14
        }
20069
22.8k
        D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
20070
22.8k
        Token * _literal;
20071
22.8k
        Token * _literal_1;
20072
22.8k
        expr_ty a;
20073
22.8k
        expr_ty b;
20074
22.8k
        if (
20075
22.8k
            (a = t_primary_rule(p))  // t_primary
20076
22.8k
            &&
20077
22.8k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
20078
22.8k
            &&
20079
22.8k
            (b = slices_rule(p))  // slices
20080
22.8k
            &&
20081
22.8k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
20082
22.8k
            &&
20083
22.8k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
20084
22.8k
        )
20085
404
        {
20086
404
            D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
20087
404
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
20088
404
            if (_token == NULL) {
20089
0
                p->level--;
20090
0
                return NULL;
20091
0
            }
20092
404
            int _end_lineno = _token->end_lineno;
20093
404
            UNUSED(_end_lineno); // Only used by EXTRA macro
20094
404
            int _end_col_offset = _token->end_col_offset;
20095
404
            UNUSED(_end_col_offset); // Only used by EXTRA macro
20096
404
            _res = _PyAST_Subscript ( a , b , Del , EXTRA );
20097
404
            if (_res == NULL && PyErr_Occurred()) {
20098
0
                p->error_indicator = 1;
20099
0
                p->level--;
20100
0
                return NULL;
20101
0
            }
20102
404
            goto done;
20103
404
        }
20104
22.4k
        p->mark = _mark;
20105
22.4k
        D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
20106
22.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
20107
22.4k
    }
20108
0
    { // del_t_atom
20109
22.4k
        if (p->error_indicator) {
20110
0
            p->level--;
20111
0
            return NULL;
20112
0
        }
20113
22.4k
        D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "del_t_atom"));
20114
22.4k
        expr_ty del_t_atom_var;
20115
22.4k
        if (
20116
22.4k
            (del_t_atom_var = del_t_atom_rule(p))  // del_t_atom
20117
22.4k
        )
20118
16.3k
        {
20119
16.3k
            D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "del_t_atom"));
20120
16.3k
            _res = del_t_atom_var;
20121
16.3k
            goto done;
20122
16.3k
        }
20123
6.05k
        p->mark = _mark;
20124
6.05k
        D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
20125
6.05k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_t_atom"));
20126
6.05k
    }
20127
0
    _res = NULL;
20128
24.2k
  done:
20129
24.2k
    _PyPegen_insert_memo(p, _mark, del_target_type, _res);
20130
24.2k
    p->level--;
20131
24.2k
    return _res;
20132
6.05k
}
20133
20134
// del_t_atom: NAME | '(' del_target ')' | '(' del_targets? ')' | '[' del_targets? ']'
20135
static expr_ty
20136
del_t_atom_rule(Parser *p)
20137
22.4k
{
20138
22.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20139
0
        _Pypegen_stack_overflow(p);
20140
0
    }
20141
22.4k
    if (p->error_indicator) {
20142
0
        p->level--;
20143
0
        return NULL;
20144
0
    }
20145
22.4k
    expr_ty _res = NULL;
20146
22.4k
    int _mark = p->mark;
20147
22.4k
    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
22.4k
    int _start_lineno = p->tokens[_mark]->lineno;
20153
22.4k
    UNUSED(_start_lineno); // Only used by EXTRA macro
20154
22.4k
    int _start_col_offset = p->tokens[_mark]->col_offset;
20155
22.4k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
20156
22.4k
    { // NAME
20157
22.4k
        if (p->error_indicator) {
20158
0
            p->level--;
20159
0
            return NULL;
20160
0
        }
20161
22.4k
        D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
20162
22.4k
        expr_ty a;
20163
22.4k
        if (
20164
22.4k
            (a = _PyPegen_name_token(p))  // NAME
20165
22.4k
        )
20166
10.1k
        {
20167
10.1k
            D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
20168
10.1k
            _res = _PyPegen_set_expr_context ( p , a , Del );
20169
10.1k
            if (_res == NULL && PyErr_Occurred()) {
20170
0
                p->error_indicator = 1;
20171
0
                p->level--;
20172
0
                return NULL;
20173
0
            }
20174
10.1k
            goto done;
20175
10.1k
        }
20176
12.2k
        p->mark = _mark;
20177
12.2k
        D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
20178
12.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
20179
12.2k
    }
20180
0
    { // '(' del_target ')'
20181
12.2k
        if (p->error_indicator) {
20182
0
            p->level--;
20183
0
            return NULL;
20184
0
        }
20185
12.2k
        D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' del_target ')'"));
20186
12.2k
        Token * _literal;
20187
12.2k
        Token * _literal_1;
20188
12.2k
        expr_ty a;
20189
12.2k
        if (
20190
12.2k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
20191
12.2k
            &&
20192
12.2k
            (a = del_target_rule(p))  // del_target
20193
12.2k
            &&
20194
12.2k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
20195
12.2k
        )
20196
554
        {
20197
554
            D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' del_target ')'"));
20198
554
            _res = _PyPegen_set_expr_context ( p , a , Del );
20199
554
            if (_res == NULL && PyErr_Occurred()) {
20200
0
                p->error_indicator = 1;
20201
0
                p->level--;
20202
0
                return NULL;
20203
0
            }
20204
554
            goto done;
20205
554
        }
20206
11.7k
        p->mark = _mark;
20207
11.7k
        D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
20208
11.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' del_target ')'"));
20209
11.7k
    }
20210
0
    { // '(' del_targets? ')'
20211
11.7k
        if (p->error_indicator) {
20212
0
            p->level--;
20213
0
            return NULL;
20214
0
        }
20215
11.7k
        D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' del_targets? ')'"));
20216
11.7k
        Token * _literal;
20217
11.7k
        Token * _literal_1;
20218
11.7k
        void *a;
20219
11.7k
        if (
20220
11.7k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
20221
11.7k
            &&
20222
11.7k
            (a = del_targets_rule(p), !p->error_indicator)  // del_targets?
20223
11.7k
            &&
20224
11.7k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
20225
11.7k
        )
20226
4.49k
        {
20227
4.49k
            D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' del_targets? ')'"));
20228
4.49k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
20229
4.49k
            if (_token == NULL) {
20230
0
                p->level--;
20231
0
                return NULL;
20232
0
            }
20233
4.49k
            int _end_lineno = _token->end_lineno;
20234
4.49k
            UNUSED(_end_lineno); // Only used by EXTRA macro
20235
4.49k
            int _end_col_offset = _token->end_col_offset;
20236
4.49k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
20237
4.49k
            _res = _PyAST_Tuple ( a , Del , EXTRA );
20238
4.49k
            if (_res == NULL && PyErr_Occurred()) {
20239
0
                p->error_indicator = 1;
20240
0
                p->level--;
20241
0
                return NULL;
20242
0
            }
20243
4.49k
            goto done;
20244
4.49k
        }
20245
7.22k
        p->mark = _mark;
20246
7.22k
        D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
20247
7.22k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' del_targets? ')'"));
20248
7.22k
    }
20249
0
    { // '[' del_targets? ']'
20250
7.22k
        if (p->error_indicator) {
20251
0
            p->level--;
20252
0
            return NULL;
20253
0
        }
20254
7.22k
        D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' del_targets? ']'"));
20255
7.22k
        Token * _literal;
20256
7.22k
        Token * _literal_1;
20257
7.22k
        void *a;
20258
7.22k
        if (
20259
7.22k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
20260
7.22k
            &&
20261
7.22k
            (a = del_targets_rule(p), !p->error_indicator)  // del_targets?
20262
7.22k
            &&
20263
7.22k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
20264
7.22k
        )
20265
1.16k
        {
20266
1.16k
            D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' del_targets? ']'"));
20267
1.16k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
20268
1.16k
            if (_token == NULL) {
20269
0
                p->level--;
20270
0
                return NULL;
20271
0
            }
20272
1.16k
            int _end_lineno = _token->end_lineno;
20273
1.16k
            UNUSED(_end_lineno); // Only used by EXTRA macro
20274
1.16k
            int _end_col_offset = _token->end_col_offset;
20275
1.16k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
20276
1.16k
            _res = _PyAST_List ( a , Del , EXTRA );
20277
1.16k
            if (_res == NULL && PyErr_Occurred()) {
20278
0
                p->error_indicator = 1;
20279
0
                p->level--;
20280
0
                return NULL;
20281
0
            }
20282
1.16k
            goto done;
20283
1.16k
        }
20284
6.05k
        p->mark = _mark;
20285
6.05k
        D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
20286
6.05k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' del_targets? ']'"));
20287
6.05k
    }
20288
0
    _res = NULL;
20289
22.4k
  done:
20290
22.4k
    p->level--;
20291
22.4k
    return _res;
20292
6.05k
}
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
16.9k
{
20549
16.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20550
0
        _Pypegen_stack_overflow(p);
20551
0
    }
20552
16.9k
    if (p->error_indicator) {
20553
0
        p->level--;
20554
0
        return NULL;
20555
0
    }
20556
16.9k
    Token* _res = NULL;
20557
16.9k
    int _mark = p->mark;
20558
16.9k
    { // NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
20559
16.9k
        if (p->error_indicator) {
20560
0
            p->level--;
20561
0
            return NULL;
20562
0
        }
20563
16.9k
        D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
20564
16.9k
        Token * newline_var;
20565
16.9k
        Token * t;
20566
16.9k
        if (
20567
16.9k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20568
16.9k
            &&
20569
16.9k
            (t = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
20570
16.9k
            &&
20571
16.9k
            _PyPegen_lookahead(1, _tmp_103_rule, p)
20572
16.9k
        )
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
16.9k
        p->mark = _mark;
20584
16.9k
        D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
20585
16.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
20586
16.9k
    }
20587
16.9k
    if (p->call_invalid_rules) { // invalid_double_type_comments
20588
3.31k
        if (p->error_indicator) {
20589
0
            p->level--;
20590
0
            return NULL;
20591
0
        }
20592
3.31k
        D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_double_type_comments"));
20593
3.31k
        void *invalid_double_type_comments_var;
20594
3.31k
        if (
20595
3.31k
            (invalid_double_type_comments_var = invalid_double_type_comments_rule(p))  // invalid_double_type_comments
20596
3.31k
        )
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
3.31k
        p->mark = _mark;
20603
3.31k
        D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
20604
3.31k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_double_type_comments"));
20605
3.31k
    }
20606
16.9k
    { // TYPE_COMMENT
20607
16.9k
        if (p->error_indicator) {
20608
3
            p->level--;
20609
3
            return NULL;
20610
3
        }
20611
16.9k
        D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT"));
20612
16.9k
        Token * type_comment_var;
20613
16.9k
        if (
20614
16.9k
            (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
20615
16.9k
        )
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
16.9k
        p->mark = _mark;
20622
16.9k
        D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
20623
16.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TYPE_COMMENT"));
20624
16.9k
    }
20625
0
    _res = NULL;
20626
16.9k
  done:
20627
16.9k
    p->level--;
20628
16.9k
    return _res;
20629
16.9k
}
20630
20631
// invalid_arguments:
20632
//     | ((','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs) | kwargs) ',' ','.(starred_expression !'=')+
20633
//     | expression for_if_clauses ',' [args | expression for_if_clauses]
20634
//     | NAME '=' expression for_if_clauses
20635
//     | [(args ',')] NAME '=' &(',' | ')')
20636
//     | args for_if_clauses
20637
//     | args ',' expression for_if_clauses
20638
//     | args ',' args
20639
static void *
20640
invalid_arguments_rule(Parser *p)
20641
8.21k
{
20642
8.21k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20643
0
        _Pypegen_stack_overflow(p);
20644
0
    }
20645
8.21k
    if (p->error_indicator) {
20646
0
        p->level--;
20647
0
        return NULL;
20648
0
    }
20649
8.21k
    void * _res = NULL;
20650
8.21k
    int _mark = p->mark;
20651
8.21k
    { // ((','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs) | kwargs) ',' ','.(starred_expression !'=')+
20652
8.21k
        if (p->error_indicator) {
20653
0
            p->level--;
20654
0
            return NULL;
20655
0
        }
20656
8.21k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs) | kwargs) ',' ','.(starred_expression !'=')+"));
20657
8.21k
        asdl_seq * _gather_106_var;
20658
8.21k
        void *_tmp_104_var;
20659
8.21k
        Token * a;
20660
8.21k
        if (
20661
8.21k
            (_tmp_104_var = _tmp_104_rule(p))  // (','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs) | kwargs
20662
8.21k
            &&
20663
8.21k
            (a = _PyPegen_expect_token(p, 12))  // token=','
20664
8.21k
            &&
20665
8.21k
            (_gather_106_var = _gather_106_rule(p))  // ','.(starred_expression !'=')+
20666
8.21k
        )
20667
931
        {
20668
931
            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
931
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "iterable argument unpacking follows keyword argument unpacking" );
20670
931
            if (_res == NULL && PyErr_Occurred()) {
20671
931
                p->error_indicator = 1;
20672
931
                p->level--;
20673
931
                return NULL;
20674
931
            }
20675
0
            goto done;
20676
931
        }
20677
7.28k
        p->mark = _mark;
20678
7.28k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20679
7.28k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs) | kwargs) ',' ','.(starred_expression !'=')+"));
20680
7.28k
    }
20681
0
    { // expression for_if_clauses ',' [args | expression for_if_clauses]
20682
7.28k
        if (p->error_indicator) {
20683
170
            p->level--;
20684
170
            return NULL;
20685
170
        }
20686
7.11k
        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.11k
        Token * _literal;
20688
7.11k
        void *_opt_var;
20689
7.11k
        UNUSED(_opt_var); // Silence compiler warnings
20690
7.11k
        expr_ty a;
20691
7.11k
        asdl_comprehension_seq* b;
20692
7.11k
        if (
20693
7.11k
            (a = expression_rule(p))  // expression
20694
7.11k
            &&
20695
7.11k
            (b = for_if_clauses_rule(p))  // for_if_clauses
20696
7.11k
            &&
20697
7.11k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20698
7.11k
            &&
20699
7.11k
            (_opt_var = _tmp_107_rule(p), !p->error_indicator)  // [args | expression for_if_clauses]
20700
7.11k
        )
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.10k
        p->mark = _mark;
20712
7.10k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20713
7.10k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]"));
20714
7.10k
    }
20715
0
    { // NAME '=' expression for_if_clauses
20716
7.10k
        if (p->error_indicator) {
20717
134
            p->level--;
20718
134
            return NULL;
20719
134
        }
20720
6.97k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
20721
6.97k
        expr_ty a;
20722
6.97k
        Token * b;
20723
6.97k
        expr_ty expression_var;
20724
6.97k
        asdl_comprehension_seq* for_if_clauses_var;
20725
6.97k
        if (
20726
6.97k
            (a = _PyPegen_name_token(p))  // NAME
20727
6.97k
            &&
20728
6.97k
            (b = _PyPegen_expect_token(p, 22))  // token='='
20729
6.97k
            &&
20730
6.97k
            (expression_var = expression_rule(p))  // expression
20731
6.97k
            &&
20732
6.97k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
20733
6.97k
        )
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
6.97k
        p->mark = _mark;
20745
6.97k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20746
6.97k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression for_if_clauses"));
20747
6.97k
    }
20748
0
    { // [(args ',')] NAME '=' &(',' | ')')
20749
6.97k
        if (p->error_indicator) {
20750
0
            p->level--;
20751
0
            return NULL;
20752
0
        }
20753
6.97k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "[(args ',')] NAME '=' &(',' | ')')"));
20754
6.97k
        void *_opt_var;
20755
6.97k
        UNUSED(_opt_var); // Silence compiler warnings
20756
6.97k
        expr_ty a;
20757
6.97k
        Token * b;
20758
6.97k
        if (
20759
6.97k
            (_opt_var = _tmp_108_rule(p), !p->error_indicator)  // [(args ',')]
20760
6.97k
            &&
20761
6.97k
            (a = _PyPegen_name_token(p))  // NAME
20762
6.97k
            &&
20763
6.97k
            (b = _PyPegen_expect_token(p, 22))  // token='='
20764
6.97k
            &&
20765
6.97k
            _PyPegen_lookahead(1, _tmp_109_rule, p)
20766
6.97k
        )
20767
7
        {
20768
7
            D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "[(args ',')] NAME '=' &(',' | ')')"));
20769
7
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "expected argument value expression" );
20770
7
            if (_res == NULL && PyErr_Occurred()) {
20771
7
                p->error_indicator = 1;
20772
7
                p->level--;
20773
7
                return NULL;
20774
7
            }
20775
0
            goto done;
20776
7
        }
20777
6.96k
        p->mark = _mark;
20778
6.96k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20779
6.96k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "[(args ',')] NAME '=' &(',' | ')')"));
20780
6.96k
    }
20781
0
    { // args for_if_clauses
20782
6.96k
        if (p->error_indicator) {
20783
0
            p->level--;
20784
0
            return NULL;
20785
0
        }
20786
6.96k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args for_if_clauses"));
20787
6.96k
        expr_ty a;
20788
6.96k
        asdl_comprehension_seq* b;
20789
6.96k
        if (
20790
6.96k
            (a = args_rule(p))  // args
20791
6.96k
            &&
20792
6.96k
            (b = for_if_clauses_rule(p))  // for_if_clauses
20793
6.96k
        )
20794
764
        {
20795
764
            D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args for_if_clauses"));
20796
764
            _res = _PyPegen_nonparen_genexp_in_call ( p , a , b );
20797
764
            if (_res == NULL && PyErr_Occurred()) {
20798
2
                p->error_indicator = 1;
20799
2
                p->level--;
20800
2
                return NULL;
20801
2
            }
20802
762
            goto done;
20803
764
        }
20804
6.20k
        p->mark = _mark;
20805
6.20k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20806
6.20k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args for_if_clauses"));
20807
6.20k
    }
20808
0
    { // args ',' expression for_if_clauses
20809
6.20k
        if (p->error_indicator) {
20810
240
            p->level--;
20811
240
            return NULL;
20812
240
        }
20813
5.96k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' expression for_if_clauses"));
20814
5.96k
        Token * _literal;
20815
5.96k
        expr_ty a;
20816
5.96k
        expr_ty args_var;
20817
5.96k
        asdl_comprehension_seq* b;
20818
5.96k
        if (
20819
5.96k
            (args_var = args_rule(p))  // args
20820
5.96k
            &&
20821
5.96k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20822
5.96k
            &&
20823
5.96k
            (a = expression_rule(p))  // expression
20824
5.96k
            &&
20825
5.96k
            (b = for_if_clauses_rule(p))  // for_if_clauses
20826
5.96k
        )
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
5.96k
        p->mark = _mark;
20838
5.96k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20839
5.96k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' expression for_if_clauses"));
20840
5.96k
    }
20841
0
    { // args ',' args
20842
5.96k
        if (p->error_indicator) {
20843
15
            p->level--;
20844
15
            return NULL;
20845
15
        }
20846
5.94k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' args"));
20847
5.94k
        Token * _literal;
20848
5.94k
        expr_ty a;
20849
5.94k
        expr_ty args_var;
20850
5.94k
        if (
20851
5.94k
            (a = args_rule(p))  // args
20852
5.94k
            &&
20853
5.94k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20854
5.94k
            &&
20855
5.94k
            (args_var = args_rule(p))  // args
20856
5.94k
        )
20857
37
        {
20858
37
            D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' args"));
20859
37
            _res = _PyPegen_arguments_parsing_error ( p , a );
20860
37
            if (_res == NULL && PyErr_Occurred()) {
20861
37
                p->error_indicator = 1;
20862
37
                p->level--;
20863
37
                return NULL;
20864
37
            }
20865
0
            goto done;
20866
37
        }
20867
5.91k
        p->mark = _mark;
20868
5.91k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20869
5.91k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' args"));
20870
5.91k
    }
20871
0
    _res = NULL;
20872
6.67k
  done:
20873
6.67k
    p->level--;
20874
6.67k
    return _res;
20875
5.91k
}
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
100k
{
20885
100k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20886
0
        _Pypegen_stack_overflow(p);
20887
0
    }
20888
100k
    if (p->error_indicator) {
20889
0
        p->level--;
20890
0
        return NULL;
20891
0
    }
20892
100k
    void * _res = NULL;
20893
100k
    int _mark = p->mark;
20894
100k
    { // ('True' | 'False' | 'None') '='
20895
100k
        if (p->error_indicator) {
20896
0
            p->level--;
20897
0
            return NULL;
20898
0
        }
20899
100k
        D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('True' | 'False' | 'None') '='"));
20900
100k
        Token* a;
20901
100k
        Token * b;
20902
100k
        if (
20903
100k
            (a = (Token*)_tmp_110_rule(p))  // 'True' | 'False' | 'None'
20904
100k
            &&
20905
100k
            (b = _PyPegen_expect_token(p, 22))  // token='='
20906
100k
        )
20907
2
        {
20908
2
            D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('True' | 'False' | 'None') '='"));
20909
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "cannot assign to %s" , PyBytes_AS_STRING ( a -> bytes ) );
20910
2
            if (_res == NULL && PyErr_Occurred()) {
20911
2
                p->error_indicator = 1;
20912
2
                p->level--;
20913
2
                return NULL;
20914
2
            }
20915
0
            goto done;
20916
2
        }
20917
100k
        p->mark = _mark;
20918
100k
        D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
20919
100k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('True' | 'False' | 'None') '='"));
20920
100k
    }
20921
0
    { // NAME '=' expression for_if_clauses
20922
100k
        if (p->error_indicator) {
20923
1
            p->level--;
20924
1
            return NULL;
20925
1
        }
20926
100k
        D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
20927
100k
        expr_ty a;
20928
100k
        Token * b;
20929
100k
        expr_ty expression_var;
20930
100k
        asdl_comprehension_seq* for_if_clauses_var;
20931
100k
        if (
20932
100k
            (a = _PyPegen_name_token(p))  // NAME
20933
100k
            &&
20934
100k
            (b = _PyPegen_expect_token(p, 22))  // token='='
20935
100k
            &&
20936
100k
            (expression_var = expression_rule(p))  // expression
20937
100k
            &&
20938
100k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
20939
100k
        )
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
100k
        p->mark = _mark;
20951
100k
        D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
20952
100k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression for_if_clauses"));
20953
100k
    }
20954
0
    { // !(NAME '=') expression '='
20955
100k
        if (p->error_indicator) {
20956
725
            p->level--;
20957
725
            return NULL;
20958
725
        }
20959
99.5k
        D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!(NAME '=') expression '='"));
20960
99.5k
        expr_ty a;
20961
99.5k
        Token * b;
20962
99.5k
        if (
20963
99.5k
            _PyPegen_lookahead(0, _tmp_111_rule, p)
20964
99.5k
            &&
20965
99.5k
            (a = expression_rule(p))  // expression
20966
99.5k
            &&
20967
99.5k
            (b = _PyPegen_expect_token(p, 22))  // token='='
20968
99.5k
        )
20969
5
        {
20970
5
            D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!(NAME '=') expression '='"));
20971
5
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "expression cannot contain assignment, perhaps you meant \"==\"?" );
20972
5
            if (_res == NULL && PyErr_Occurred()) {
20973
5
                p->error_indicator = 1;
20974
5
                p->level--;
20975
5
                return NULL;
20976
5
            }
20977
0
            goto done;
20978
5
        }
20979
99.5k
        p->mark = _mark;
20980
99.5k
        D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
20981
99.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(NAME '=') expression '='"));
20982
99.5k
    }
20983
0
    { // '**' expression '=' expression
20984
99.5k
        if (p->error_indicator) {
20985
185
            p->level--;
20986
185
            return NULL;
20987
185
        }
20988
99.3k
        D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' expression '=' expression"));
20989
99.3k
        Token * _literal;
20990
99.3k
        Token * a;
20991
99.3k
        expr_ty b;
20992
99.3k
        expr_ty expression_var;
20993
99.3k
        if (
20994
99.3k
            (a = _PyPegen_expect_token(p, 35))  // token='**'
20995
99.3k
            &&
20996
99.3k
            (expression_var = expression_rule(p))  // expression
20997
99.3k
            &&
20998
99.3k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
20999
99.3k
            &&
21000
99.3k
            (b = expression_rule(p))  // expression
21001
99.3k
        )
21002
2
        {
21003
2
            D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' expression '=' expression"));
21004
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "cannot assign to keyword argument unpacking" );
21005
2
            if (_res == NULL && PyErr_Occurred()) {
21006
2
                p->error_indicator = 1;
21007
2
                p->level--;
21008
2
                return NULL;
21009
2
            }
21010
0
            goto done;
21011
2
        }
21012
99.3k
        p->mark = _mark;
21013
99.3k
        D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
21014
99.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression '=' expression"));
21015
99.3k
    }
21016
0
    _res = NULL;
21017
99.3k
  done:
21018
99.3k
    p->level--;
21019
99.3k
    return _res;
21020
99.3k
}
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
148k
{
21029
148k
    int _prev_call_invalid = p->call_invalid_rules;
21030
148k
    p->call_invalid_rules = 0;
21031
148k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21032
1
        _Pypegen_stack_overflow(p);
21033
1
    }
21034
148k
    if (p->error_indicator) {
21035
19
        p->call_invalid_rules = _prev_call_invalid;
21036
19
        p->level--;
21037
19
        return NULL;
21038
19
    }
21039
148k
    expr_ty _res = NULL;
21040
148k
    int _mark = p->mark;
21041
148k
    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
148k
    int _start_lineno = p->tokens[_mark]->lineno;
21048
148k
    UNUSED(_start_lineno); // Only used by EXTRA macro
21049
148k
    int _start_col_offset = p->tokens[_mark]->col_offset;
21050
148k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
21051
148k
    { // disjunction 'if' disjunction 'else' expression
21052
148k
        if (p->error_indicator) {
21053
0
            p->call_invalid_rules = _prev_call_invalid;
21054
0
            p->level--;
21055
0
            return NULL;
21056
0
        }
21057
148k
        D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
21058
148k
        Token * _keyword;
21059
148k
        Token * _keyword_1;
21060
148k
        expr_ty a;
21061
148k
        expr_ty b;
21062
148k
        expr_ty c;
21063
148k
        if (
21064
148k
            (a = disjunction_rule(p))  // disjunction
21065
148k
            &&
21066
148k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
21067
148k
            &&
21068
148k
            (b = disjunction_rule(p))  // disjunction
21069
148k
            &&
21070
148k
            (_keyword_1 = _PyPegen_expect_token(p, 691))  // token='else'
21071
148k
            &&
21072
148k
            (c = expression_rule(p))  // expression
21073
148k
        )
21074
34
        {
21075
34
            D(fprintf(stderr, "%*c+ expression_without_invalid[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
21076
34
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
21077
34
            if (_token == NULL) {
21078
0
                p->call_invalid_rules = _prev_call_invalid;
21079
0
                p->level--;
21080
0
                return NULL;
21081
0
            }
21082
34
            int _end_lineno = _token->end_lineno;
21083
34
            UNUSED(_end_lineno); // Only used by EXTRA macro
21084
34
            int _end_col_offset = _token->end_col_offset;
21085
34
            UNUSED(_end_col_offset); // Only used by EXTRA macro
21086
34
            _res = _PyAST_IfExp ( b , a , c , EXTRA );
21087
34
            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
34
            goto done;
21094
34
        }
21095
148k
        p->mark = _mark;
21096
148k
        D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
21097
148k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
21098
148k
    }
21099
0
    { // disjunction
21100
148k
        if (p->error_indicator) {
21101
539
            p->call_invalid_rules = _prev_call_invalid;
21102
539
            p->level--;
21103
539
            return NULL;
21104
539
        }
21105
148k
        D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction"));
21106
148k
        expr_ty disjunction_var;
21107
148k
        if (
21108
148k
            (disjunction_var = disjunction_rule(p))  // disjunction
21109
148k
        )
21110
6.68k
        {
21111
6.68k
            D(fprintf(stderr, "%*c+ expression_without_invalid[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction"));
21112
6.68k
            _res = disjunction_var;
21113
6.68k
            goto done;
21114
6.68k
        }
21115
141k
        p->mark = _mark;
21116
141k
        D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
21117
141k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction"));
21118
141k
    }
21119
0
    { // lambdef
21120
141k
        if (p->error_indicator) {
21121
0
            p->call_invalid_rules = _prev_call_invalid;
21122
0
            p->level--;
21123
0
            return NULL;
21124
0
        }
21125
141k
        D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambdef"));
21126
141k
        expr_ty lambdef_var;
21127
141k
        if (
21128
141k
            (lambdef_var = lambdef_rule(p))  // lambdef
21129
141k
        )
21130
53
        {
21131
53
            D(fprintf(stderr, "%*c+ expression_without_invalid[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambdef"));
21132
53
            _res = lambdef_var;
21133
53
            goto done;
21134
53
        }
21135
141k
        p->mark = _mark;
21136
141k
        D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
21137
141k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambdef"));
21138
141k
    }
21139
0
    _res = NULL;
21140
148k
  done:
21141
148k
    p->call_invalid_rules = _prev_call_invalid;
21142
148k
    p->level--;
21143
148k
    return _res;
21144
141k
}
21145
21146
// invalid_legacy_expression: NAME !'(' star_expressions
21147
static void *
21148
invalid_legacy_expression_rule(Parser *p)
21149
298k
{
21150
298k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21151
0
        _Pypegen_stack_overflow(p);
21152
0
    }
21153
298k
    if (p->error_indicator) {
21154
0
        p->level--;
21155
0
        return NULL;
21156
0
    }
21157
298k
    void * _res = NULL;
21158
298k
    int _mark = p->mark;
21159
298k
    { // NAME !'(' star_expressions
21160
298k
        if (p->error_indicator) {
21161
0
            p->level--;
21162
0
            return NULL;
21163
0
        }
21164
298k
        D(fprintf(stderr, "%*c> invalid_legacy_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME !'(' star_expressions"));
21165
298k
        expr_ty a;
21166
298k
        expr_ty b;
21167
298k
        if (
21168
298k
            (a = _PyPegen_name_token(p))  // NAME
21169
298k
            &&
21170
298k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 7)  // token='('
21171
298k
            &&
21172
298k
            (b = star_expressions_rule(p))  // star_expressions
21173
298k
        )
21174
9.05k
        {
21175
9.05k
            D(fprintf(stderr, "%*c+ invalid_legacy_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME !'(' star_expressions"));
21176
9.05k
            _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
9.05k
            if (_res == NULL && PyErr_Occurred()) {
21178
13
                p->error_indicator = 1;
21179
13
                p->level--;
21180
13
                return NULL;
21181
13
            }
21182
9.03k
            goto done;
21183
9.05k
        }
21184
289k
        p->mark = _mark;
21185
289k
        D(fprintf(stderr, "%*c%s invalid_legacy_expression[%d-%d]: %s failed!\n", p->level, ' ',
21186
289k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME !'(' star_expressions"));
21187
289k
    }
21188
0
    _res = NULL;
21189
298k
  done:
21190
298k
    p->level--;
21191
298k
    return _res;
21192
289k
}
21193
21194
// invalid_type_param: '*' NAME ':' expression | '**' NAME ':' expression
21195
static void *
21196
invalid_type_param_rule(Parser *p)
21197
1.39k
{
21198
1.39k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21199
0
        _Pypegen_stack_overflow(p);
21200
0
    }
21201
1.39k
    if (p->error_indicator) {
21202
0
        p->level--;
21203
0
        return NULL;
21204
0
    }
21205
1.39k
    void * _res = NULL;
21206
1.39k
    int _mark = p->mark;
21207
1.39k
    { // '*' NAME ':' expression
21208
1.39k
        if (p->error_indicator) {
21209
0
            p->level--;
21210
0
            return NULL;
21211
0
        }
21212
1.39k
        D(fprintf(stderr, "%*c> invalid_type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' NAME ':' expression"));
21213
1.39k
        Token * _literal;
21214
1.39k
        expr_ty a;
21215
1.39k
        Token * colon;
21216
1.39k
        expr_ty e;
21217
1.39k
        if (
21218
1.39k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
21219
1.39k
            &&
21220
1.39k
            (a = _PyPegen_name_token(p))  // NAME
21221
1.39k
            &&
21222
1.39k
            (colon = _PyPegen_expect_token(p, 11))  // token=':'
21223
1.39k
            &&
21224
1.39k
            (e = expression_rule(p))  // expression
21225
1.39k
        )
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
1.39k
        p->mark = _mark;
21237
1.39k
        D(fprintf(stderr, "%*c%s invalid_type_param[%d-%d]: %s failed!\n", p->level, ' ',
21238
1.39k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' NAME ':' expression"));
21239
1.39k
    }
21240
0
    { // '**' NAME ':' expression
21241
1.39k
        if (p->error_indicator) {
21242
2
            p->level--;
21243
2
            return NULL;
21244
2
        }
21245
1.39k
        D(fprintf(stderr, "%*c> invalid_type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' NAME ':' expression"));
21246
1.39k
        Token * _literal;
21247
1.39k
        expr_ty a;
21248
1.39k
        Token * colon;
21249
1.39k
        expr_ty e;
21250
1.39k
        if (
21251
1.39k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
21252
1.39k
            &&
21253
1.39k
            (a = _PyPegen_name_token(p))  // NAME
21254
1.39k
            &&
21255
1.39k
            (colon = _PyPegen_expect_token(p, 11))  // token=':'
21256
1.39k
            &&
21257
1.39k
            (e = expression_rule(p))  // expression
21258
1.39k
        )
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
1.39k
        p->mark = _mark;
21270
1.39k
        D(fprintf(stderr, "%*c%s invalid_type_param[%d-%d]: %s failed!\n", p->level, ' ',
21271
1.39k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' NAME ':' expression"));
21272
1.39k
    }
21273
0
    _res = NULL;
21274
1.39k
  done:
21275
1.39k
    p->level--;
21276
1.39k
    return _res;
21277
1.39k
}
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
331k
{
21290
331k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21291
1
        _Pypegen_stack_overflow(p);
21292
1
    }
21293
331k
    if (p->error_indicator) {
21294
1
        p->level--;
21295
1
        return NULL;
21296
1
    }
21297
331k
    void * _res = NULL;
21298
331k
    int _mark = p->mark;
21299
331k
    { // STRING ((!STRING expression_without_invalid))+ STRING
21300
331k
        if (p->error_indicator) {
21301
0
            p->level--;
21302
0
            return NULL;
21303
0
        }
21304
331k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING ((!STRING expression_without_invalid))+ STRING"));
21305
331k
        asdl_seq * a;
21306
331k
        expr_ty string_var;
21307
331k
        expr_ty string_var_1;
21308
331k
        if (
21309
331k
            (string_var = _PyPegen_string_token(p))  // STRING
21310
331k
            &&
21311
331k
            (a = _loop1_112_rule(p))  // ((!STRING expression_without_invalid))+
21312
331k
            &&
21313
331k
            (string_var_1 = _PyPegen_string_token(p))  // STRING
21314
331k
        )
21315
30
        {
21316
30
            D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING ((!STRING expression_without_invalid))+ STRING"));
21317
30
            _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
30
            if (_res == NULL && PyErr_Occurred()) {
21319
30
                p->error_indicator = 1;
21320
30
                p->level--;
21321
30
                return NULL;
21322
30
            }
21323
0
            goto done;
21324
30
        }
21325
331k
        p->mark = _mark;
21326
331k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21327
331k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING ((!STRING expression_without_invalid))+ STRING"));
21328
331k
    }
21329
0
    { // !(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid
21330
331k
        if (p->error_indicator) {
21331
150
            p->level--;
21332
150
            return NULL;
21333
150
        }
21334
331k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid"));
21335
331k
        expr_ty a;
21336
331k
        expr_ty b;
21337
331k
        if (
21338
331k
            _PyPegen_lookahead(0, _tmp_113_rule, p)
21339
331k
            &&
21340
331k
            (a = disjunction_rule(p))  // disjunction
21341
331k
            &&
21342
331k
            (b = expression_without_invalid_rule(p))  // expression_without_invalid
21343
331k
        )
21344
4.59k
        {
21345
4.59k
            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
4.59k
            _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
4.59k
            if (_res == NULL && PyErr_Occurred()) {
21348
166
                p->error_indicator = 1;
21349
166
                p->level--;
21350
166
                return NULL;
21351
166
            }
21352
4.42k
            goto done;
21353
4.59k
        }
21354
326k
        p->mark = _mark;
21355
326k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21356
326k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid"));
21357
326k
    }
21358
0
    { // disjunction 'if' disjunction !('else' | ':')
21359
326k
        if (p->error_indicator) {
21360
30.7k
            p->level--;
21361
30.7k
            return NULL;
21362
30.7k
        }
21363
295k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')"));
21364
295k
        Token * _keyword;
21365
295k
        expr_ty a;
21366
295k
        expr_ty b;
21367
295k
        if (
21368
295k
            (a = disjunction_rule(p))  // disjunction
21369
295k
            &&
21370
295k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
21371
295k
            &&
21372
295k
            (b = disjunction_rule(p))  // disjunction
21373
295k
            &&
21374
295k
            _PyPegen_lookahead(0, _tmp_114_rule, p)
21375
295k
        )
21376
27
        {
21377
27
            D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')"));
21378
27
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "expected 'else' after 'if' expression" );
21379
27
            if (_res == NULL && PyErr_Occurred()) {
21380
27
                p->error_indicator = 1;
21381
27
                p->level--;
21382
27
                return NULL;
21383
27
            }
21384
0
            goto done;
21385
27
        }
21386
295k
        p->mark = _mark;
21387
295k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21388
295k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')"));
21389
295k
    }
21390
0
    { // disjunction 'if' disjunction 'else' !expression
21391
295k
        if (p->error_indicator) {
21392
972
            p->level--;
21393
972
            return NULL;
21394
972
        }
21395
294k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' !expression"));
21396
294k
        Token * _keyword;
21397
294k
        Token * _keyword_1;
21398
294k
        expr_ty a;
21399
294k
        expr_ty b;
21400
294k
        if (
21401
294k
            (a = disjunction_rule(p))  // disjunction
21402
294k
            &&
21403
294k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
21404
294k
            &&
21405
294k
            (b = disjunction_rule(p))  // disjunction
21406
294k
            &&
21407
294k
            (_keyword_1 = _PyPegen_expect_token(p, 691))  // token='else'
21408
294k
            &&
21409
294k
            _PyPegen_lookahead_for_expr(0, expression_rule, p)
21410
294k
        )
21411
245
        {
21412
245
            D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' !expression"));
21413
245
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "expected expression after 'else', but statement is given" );
21414
245
            if (_res == NULL && PyErr_Occurred()) {
21415
245
                p->error_indicator = 1;
21416
245
                p->level--;
21417
245
                return NULL;
21418
245
            }
21419
0
            goto done;
21420
245
        }
21421
294k
        p->mark = _mark;
21422
294k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21423
294k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' !expression"));
21424
294k
    }
21425
0
    { // (pass_stmt | break_stmt | continue_stmt) 'if' disjunction 'else' simple_stmt
21426
294k
        if (p->error_indicator) {
21427
0
            p->level--;
21428
0
            return NULL;
21429
0
        }
21430
294k
        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
294k
        Token * _keyword;
21432
294k
        Token * _keyword_1;
21433
294k
        stmt_ty a;
21434
294k
        expr_ty b;
21435
294k
        stmt_ty c;
21436
294k
        if (
21437
294k
            (a = (stmt_ty)_tmp_115_rule(p))  // pass_stmt | break_stmt | continue_stmt
21438
294k
            &&
21439
294k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
21440
294k
            &&
21441
294k
            (b = disjunction_rule(p))  // disjunction
21442
294k
            &&
21443
294k
            (_keyword_1 = _PyPegen_expect_token(p, 691))  // token='else'
21444
294k
            &&
21445
294k
            (c = simple_stmt_rule(p))  // simple_stmt
21446
294k
        )
21447
1
        {
21448
1
            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
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expected expression before 'if', but statement is given" );
21450
1
            if (_res == NULL && PyErr_Occurred()) {
21451
1
                p->error_indicator = 1;
21452
1
                p->level--;
21453
1
                return NULL;
21454
1
            }
21455
0
            goto done;
21456
1
        }
21457
294k
        p->mark = _mark;
21458
294k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21459
294k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(pass_stmt | break_stmt | continue_stmt) 'if' disjunction 'else' simple_stmt"));
21460
294k
    }
21461
0
    { // 'lambda' lambda_params? ':' &FSTRING_MIDDLE
21462
294k
        if (p->error_indicator) {
21463
88
            p->level--;
21464
88
            return NULL;
21465
88
        }
21466
294k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' &FSTRING_MIDDLE"));
21467
294k
        void *_opt_var;
21468
294k
        UNUSED(_opt_var); // Silence compiler warnings
21469
294k
        Token * a;
21470
294k
        Token * b;
21471
294k
        if (
21472
294k
            (a = _PyPegen_expect_token(p, 622))  // token='lambda'
21473
294k
            &&
21474
294k
            (_opt_var = lambda_params_rule(p), !p->error_indicator)  // lambda_params?
21475
294k
            &&
21476
294k
            (b = _PyPegen_expect_token(p, 11))  // token=':'
21477
294k
            &&
21478
294k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, FSTRING_MIDDLE)  // token=FSTRING_MIDDLE
21479
294k
        )
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
294k
        p->mark = _mark;
21491
294k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21492
294k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'lambda' lambda_params? ':' &FSTRING_MIDDLE"));
21493
294k
    }
21494
0
    { // 'lambda' lambda_params? ':' &TSTRING_MIDDLE
21495
294k
        if (p->error_indicator) {
21496
558
            p->level--;
21497
558
            return NULL;
21498
558
        }
21499
293k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' &TSTRING_MIDDLE"));
21500
293k
        void *_opt_var;
21501
293k
        UNUSED(_opt_var); // Silence compiler warnings
21502
293k
        Token * a;
21503
293k
        Token * b;
21504
293k
        if (
21505
293k
            (a = _PyPegen_expect_token(p, 622))  // token='lambda'
21506
293k
            &&
21507
293k
            (_opt_var = lambda_params_rule(p), !p->error_indicator)  // lambda_params?
21508
293k
            &&
21509
293k
            (b = _PyPegen_expect_token(p, 11))  // token=':'
21510
293k
            &&
21511
293k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, TSTRING_MIDDLE)  // token=TSTRING_MIDDLE
21512
293k
        )
21513
4
        {
21514
4
            D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' &TSTRING_MIDDLE"));
21515
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "t-string: lambda expressions are not allowed without parentheses" );
21516
4
            if (_res == NULL && PyErr_Occurred()) {
21517
4
                p->error_indicator = 1;
21518
4
                p->level--;
21519
4
                return NULL;
21520
4
            }
21521
0
            goto done;
21522
4
        }
21523
293k
        p->mark = _mark;
21524
293k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21525
293k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'lambda' lambda_params? ':' &TSTRING_MIDDLE"));
21526
293k
    }
21527
0
    _res = NULL;
21528
298k
  done:
21529
298k
    p->level--;
21530
298k
    return _res;
21531
293k
}
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
302k
{
21540
302k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21541
0
        _Pypegen_stack_overflow(p);
21542
0
    }
21543
302k
    if (p->error_indicator) {
21544
0
        p->level--;
21545
0
        return NULL;
21546
0
    }
21547
302k
    void * _res = NULL;
21548
302k
    if (_PyPegen_is_memoized(p, invalid_named_expression_type, &_res)) {
21549
161k
        p->level--;
21550
161k
        return _res;
21551
161k
    }
21552
140k
    int _mark = p->mark;
21553
140k
    { // expression ':=' expression
21554
140k
        if (p->error_indicator) {
21555
0
            p->level--;
21556
0
            return NULL;
21557
0
        }
21558
140k
        D(fprintf(stderr, "%*c> invalid_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':=' expression"));
21559
140k
        Token * _literal;
21560
140k
        expr_ty a;
21561
140k
        expr_ty expression_var;
21562
140k
        if (
21563
140k
            (a = expression_rule(p))  // expression
21564
140k
            &&
21565
140k
            (_literal = _PyPegen_expect_token(p, 53))  // token=':='
21566
140k
            &&
21567
140k
            (expression_var = expression_rule(p))  // expression
21568
140k
        )
21569
5
        {
21570
5
            D(fprintf(stderr, "%*c+ invalid_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':=' expression"));
21571
5
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use assignment expressions with %s" , _PyPegen_get_expr_name ( a ) );
21572
5
            if (_res == NULL && PyErr_Occurred()) {
21573
5
                p->error_indicator = 1;
21574
5
                p->level--;
21575
5
                return NULL;
21576
5
            }
21577
0
            goto done;
21578
5
        }
21579
140k
        p->mark = _mark;
21580
140k
        D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
21581
140k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':=' expression"));
21582
140k
    }
21583
0
    { // NAME '=' bitwise_or !('=' | ':=')
21584
140k
        if (p->error_indicator) {
21585
14.7k
            p->level--;
21586
14.7k
            return NULL;
21587
14.7k
        }
21588
125k
        D(fprintf(stderr, "%*c> invalid_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
21589
125k
        Token * _literal;
21590
125k
        expr_ty a;
21591
125k
        expr_ty b;
21592
125k
        if (
21593
125k
            (a = _PyPegen_name_token(p))  // NAME
21594
125k
            &&
21595
125k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
21596
125k
            &&
21597
125k
            (b = bitwise_or_rule(p))  // bitwise_or
21598
125k
            &&
21599
125k
            _PyPegen_lookahead(0, _tmp_116_rule, p)
21600
125k
        )
21601
21
        {
21602
21
            D(fprintf(stderr, "%*c+ invalid_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
21603
21
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "invalid syntax. Maybe you meant '==' or ':=' instead of '='?" );
21604
21
            if (_res == NULL && PyErr_Occurred()) {
21605
21
                p->error_indicator = 1;
21606
21
                p->level--;
21607
21
                return NULL;
21608
21
            }
21609
0
            goto done;
21610
21
        }
21611
125k
        p->mark = _mark;
21612
125k
        D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
21613
125k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
21614
125k
    }
21615
0
    { // !(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')
21616
125k
        if (p->error_indicator) {
21617
292
            p->level--;
21618
292
            return NULL;
21619
292
        }
21620
125k
        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
125k
        expr_ty a;
21622
125k
        Token * b;
21623
125k
        expr_ty bitwise_or_var;
21624
125k
        if (
21625
125k
            _PyPegen_lookahead(0, _tmp_117_rule, p)
21626
125k
            &&
21627
125k
            (a = bitwise_or_rule(p))  // bitwise_or
21628
125k
            &&
21629
125k
            (b = _PyPegen_expect_token(p, 22))  // token='='
21630
125k
            &&
21631
125k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
21632
125k
            &&
21633
125k
            _PyPegen_lookahead(0, _tmp_116_rule, p)
21634
125k
        )
21635
25
        {
21636
25
            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
25
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot assign to %s here. Maybe you meant '==' instead of '='?" , _PyPegen_get_expr_name ( a ) );
21638
25
            if (_res == NULL && PyErr_Occurred()) {
21639
25
                p->error_indicator = 1;
21640
25
                p->level--;
21641
25
                return NULL;
21642
25
            }
21643
0
            goto done;
21644
25
        }
21645
125k
        p->mark = _mark;
21646
125k
        D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
21647
125k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')"));
21648
125k
    }
21649
0
    _res = NULL;
21650
125k
  done:
21651
125k
    _PyPegen_insert_memo(p, _mark, invalid_named_expression_type, _res);
21652
125k
    p->level--;
21653
125k
    return _res;
21654
125k
}
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
56.2k
{
21666
56.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21667
0
        _Pypegen_stack_overflow(p);
21668
0
    }
21669
56.2k
    if (p->error_indicator) {
21670
0
        p->level--;
21671
0
        return NULL;
21672
0
    }
21673
56.2k
    void * _res = NULL;
21674
56.2k
    int _mark = p->mark;
21675
56.2k
    { // invalid_ann_assign_target ':' expression
21676
56.2k
        if (p->error_indicator) {
21677
0
            p->level--;
21678
0
            return NULL;
21679
0
        }
21680
56.2k
        D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_ann_assign_target ':' expression"));
21681
56.2k
        Token * _literal;
21682
56.2k
        expr_ty a;
21683
56.2k
        expr_ty expression_var;
21684
56.2k
        if (
21685
56.2k
            (a = invalid_ann_assign_target_rule(p))  // invalid_ann_assign_target
21686
56.2k
            &&
21687
56.2k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21688
56.2k
            &&
21689
56.2k
            (expression_var = expression_rule(p))  // expression
21690
56.2k
        )
21691
3
        {
21692
3
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_ann_assign_target ':' expression"));
21693
3
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not %s) can be annotated" , _PyPegen_get_expr_name ( a ) );
21694
3
            if (_res == NULL && PyErr_Occurred()) {
21695
3
                p->error_indicator = 1;
21696
3
                p->level--;
21697
3
                return NULL;
21698
3
            }
21699
0
            goto done;
21700
3
        }
21701
56.2k
        p->mark = _mark;
21702
56.2k
        D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
21703
56.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_ann_assign_target ':' expression"));
21704
56.2k
    }
21705
0
    { // star_named_expression ',' star_named_expressions* ':' expression
21706
56.2k
        if (p->error_indicator) {
21707
2
            p->level--;
21708
2
            return NULL;
21709
2
        }
21710
56.2k
        D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression"));
21711
56.2k
        Token * _literal;
21712
56.2k
        Token * _literal_1;
21713
56.2k
        asdl_seq * _loop0_118_var;
21714
56.2k
        expr_ty a;
21715
56.2k
        expr_ty expression_var;
21716
56.2k
        if (
21717
56.2k
            (a = star_named_expression_rule(p))  // star_named_expression
21718
56.2k
            &&
21719
56.2k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
21720
56.2k
            &&
21721
56.2k
            (_loop0_118_var = _loop0_118_rule(p))  // star_named_expressions*
21722
56.2k
            &&
21723
56.2k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
21724
56.2k
            &&
21725
56.2k
            (expression_var = expression_rule(p))  // expression
21726
56.2k
        )
21727
16
        {
21728
16
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression"));
21729
16
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
21730
16
            if (_res == NULL && PyErr_Occurred()) {
21731
16
                p->error_indicator = 1;
21732
16
                p->level--;
21733
16
                return NULL;
21734
16
            }
21735
0
            goto done;
21736
16
        }
21737
56.2k
        p->mark = _mark;
21738
56.2k
        D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
21739
56.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression"));
21740
56.2k
    }
21741
0
    { // expression ':' expression
21742
56.2k
        if (p->error_indicator) {
21743
705
            p->level--;
21744
705
            return NULL;
21745
705
        }
21746
55.5k
        D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
21747
55.5k
        Token * _literal;
21748
55.5k
        expr_ty a;
21749
55.5k
        expr_ty expression_var;
21750
55.5k
        if (
21751
55.5k
            (a = expression_rule(p))  // expression
21752
55.5k
            &&
21753
55.5k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21754
55.5k
            &&
21755
55.5k
            (expression_var = expression_rule(p))  // expression
21756
55.5k
        )
21757
45
        {
21758
45
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
21759
45
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "illegal target for annotation" );
21760
45
            if (_res == NULL && PyErr_Occurred()) {
21761
45
                p->error_indicator = 1;
21762
45
                p->level--;
21763
45
                return NULL;
21764
45
            }
21765
0
            goto done;
21766
45
        }
21767
55.4k
        p->mark = _mark;
21768
55.4k
        D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
21769
55.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' expression"));
21770
55.4k
    }
21771
0
    { // ((star_targets '='))* star_expressions '='
21772
55.4k
        if (p->error_indicator) {
21773
34
            p->level--;
21774
34
            return NULL;
21775
34
        }
21776
55.4k
        D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* star_expressions '='"));
21777
55.4k
        Token * _literal;
21778
55.4k
        asdl_seq * _loop0_119_var;
21779
55.4k
        expr_ty a;
21780
55.4k
        if (
21781
55.4k
            (_loop0_119_var = _loop0_119_rule(p))  // ((star_targets '='))*
21782
55.4k
            &&
21783
55.4k
            (a = star_expressions_rule(p))  // star_expressions
21784
55.4k
            &&
21785
55.4k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
21786
55.4k
        )
21787
77
        {
21788
77
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* star_expressions '='"));
21789
77
            _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( STAR_TARGETS , a );
21790
77
            if (_res == NULL && PyErr_Occurred()) {
21791
77
                p->error_indicator = 1;
21792
77
                p->level--;
21793
77
                return NULL;
21794
77
            }
21795
0
            goto done;
21796
77
        }
21797
55.3k
        p->mark = _mark;
21798
55.3k
        D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
21799
55.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))* star_expressions '='"));
21800
55.3k
    }
21801
0
    { // ((star_targets '='))* yield_expr '='
21802
55.3k
        if (p->error_indicator) {
21803
0
            p->level--;
21804
0
            return NULL;
21805
0
        }
21806
55.3k
        D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* yield_expr '='"));
21807
55.3k
        Token * _literal;
21808
55.3k
        asdl_seq * _loop0_119_var;
21809
55.3k
        expr_ty a;
21810
55.3k
        if (
21811
55.3k
            (_loop0_119_var = _loop0_119_rule(p))  // ((star_targets '='))*
21812
55.3k
            &&
21813
55.3k
            (a = yield_expr_rule(p))  // yield_expr
21814
55.3k
            &&
21815
55.3k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
21816
55.3k
        )
21817
2
        {
21818
2
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* yield_expr '='"));
21819
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "assignment to yield expression not possible" );
21820
2
            if (_res == NULL && PyErr_Occurred()) {
21821
2
                p->error_indicator = 1;
21822
2
                p->level--;
21823
2
                return NULL;
21824
2
            }
21825
0
            goto done;
21826
2
        }
21827
55.3k
        p->mark = _mark;
21828
55.3k
        D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
21829
55.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))* yield_expr '='"));
21830
55.3k
    }
21831
0
    { // star_expressions augassign annotated_rhs
21832
55.3k
        if (p->error_indicator) {
21833
7
            p->level--;
21834
7
            return NULL;
21835
7
        }
21836
55.3k
        D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions augassign annotated_rhs"));
21837
55.3k
        expr_ty a;
21838
55.3k
        expr_ty annotated_rhs_var;
21839
55.3k
        AugOperator* augassign_var;
21840
55.3k
        if (
21841
55.3k
            (a = star_expressions_rule(p))  // star_expressions
21842
55.3k
            &&
21843
55.3k
            (augassign_var = augassign_rule(p))  // augassign
21844
55.3k
            &&
21845
55.3k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
21846
55.3k
        )
21847
30
        {
21848
30
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions augassign annotated_rhs"));
21849
30
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "'%s' is an illegal expression for augmented assignment" , _PyPegen_get_expr_name ( a ) );
21850
30
            if (_res == NULL && PyErr_Occurred()) {
21851
30
                p->error_indicator = 1;
21852
30
                p->level--;
21853
30
                return NULL;
21854
30
            }
21855
0
            goto done;
21856
30
        }
21857
55.3k
        p->mark = _mark;
21858
55.3k
        D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
21859
55.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions augassign annotated_rhs"));
21860
55.3k
    }
21861
0
    _res = NULL;
21862
55.3k
  done:
21863
55.3k
    p->level--;
21864
55.3k
    return _res;
21865
55.3k
}
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
58.2k
{
21871
58.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21872
0
        _Pypegen_stack_overflow(p);
21873
0
    }
21874
58.2k
    if (p->error_indicator) {
21875
0
        p->level--;
21876
0
        return NULL;
21877
0
    }
21878
58.2k
    expr_ty _res = NULL;
21879
58.2k
    int _mark = p->mark;
21880
58.2k
    { // list
21881
58.2k
        if (p->error_indicator) {
21882
0
            p->level--;
21883
0
            return NULL;
21884
0
        }
21885
58.2k
        D(fprintf(stderr, "%*c> invalid_ann_assign_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
21886
58.2k
        expr_ty list_var;
21887
58.2k
        if (
21888
58.2k
            (list_var = list_rule(p))  // list
21889
58.2k
        )
21890
96
        {
21891
96
            D(fprintf(stderr, "%*c+ invalid_ann_assign_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
21892
96
            _res = list_var;
21893
96
            goto done;
21894
96
        }
21895
58.1k
        p->mark = _mark;
21896
58.1k
        D(fprintf(stderr, "%*c%s invalid_ann_assign_target[%d-%d]: %s failed!\n", p->level, ' ',
21897
58.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
21898
58.1k
    }
21899
0
    { // tuple
21900
58.1k
        if (p->error_indicator) {
21901
0
            p->level--;
21902
0
            return NULL;
21903
0
        }
21904
58.1k
        D(fprintf(stderr, "%*c> invalid_ann_assign_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
21905
58.1k
        expr_ty tuple_var;
21906
58.1k
        if (
21907
58.1k
            (tuple_var = tuple_rule(p))  // tuple
21908
58.1k
        )
21909
520
        {
21910
520
            D(fprintf(stderr, "%*c+ invalid_ann_assign_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
21911
520
            _res = tuple_var;
21912
520
            goto done;
21913
520
        }
21914
57.6k
        p->mark = _mark;
21915
57.6k
        D(fprintf(stderr, "%*c%s invalid_ann_assign_target[%d-%d]: %s failed!\n", p->level, ' ',
21916
57.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
21917
57.6k
    }
21918
0
    { // '(' invalid_ann_assign_target ')'
21919
57.6k
        if (p->error_indicator) {
21920
0
            p->level--;
21921
0
            return NULL;
21922
0
        }
21923
57.6k
        D(fprintf(stderr, "%*c> invalid_ann_assign_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' invalid_ann_assign_target ')'"));
21924
57.6k
        Token * _literal;
21925
57.6k
        Token * _literal_1;
21926
57.6k
        expr_ty a;
21927
57.6k
        if (
21928
57.6k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
21929
57.6k
            &&
21930
57.6k
            (a = invalid_ann_assign_target_rule(p))  // invalid_ann_assign_target
21931
57.6k
            &&
21932
57.6k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
21933
57.6k
        )
21934
104
        {
21935
104
            D(fprintf(stderr, "%*c+ invalid_ann_assign_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' invalid_ann_assign_target ')'"));
21936
104
            _res = a;
21937
104
            if (_res == NULL && PyErr_Occurred()) {
21938
0
                p->error_indicator = 1;
21939
0
                p->level--;
21940
0
                return NULL;
21941
0
            }
21942
104
            goto done;
21943
104
        }
21944
57.5k
        p->mark = _mark;
21945
57.5k
        D(fprintf(stderr, "%*c%s invalid_ann_assign_target[%d-%d]: %s failed!\n", p->level, ' ',
21946
57.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' invalid_ann_assign_target ')'"));
21947
57.5k
    }
21948
0
    _res = NULL;
21949
58.2k
  done:
21950
58.2k
    p->level--;
21951
58.2k
    return _res;
21952
57.5k
}
21953
21954
// invalid_raise_stmt: 'raise' 'from' | 'raise' expression 'from'
21955
static void *
21956
invalid_raise_stmt_rule(Parser *p)
21957
454
{
21958
454
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21959
0
        _Pypegen_stack_overflow(p);
21960
0
    }
21961
454
    if (p->error_indicator) {
21962
0
        p->level--;
21963
0
        return NULL;
21964
0
    }
21965
454
    void * _res = NULL;
21966
454
    int _mark = p->mark;
21967
454
    { // 'raise' 'from'
21968
454
        if (p->error_indicator) {
21969
0
            p->level--;
21970
0
            return NULL;
21971
0
        }
21972
454
        D(fprintf(stderr, "%*c> invalid_raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' 'from'"));
21973
454
        Token * a;
21974
454
        Token * b;
21975
454
        if (
21976
454
            (a = _PyPegen_expect_token(p, 628))  // token='raise'
21977
454
            &&
21978
454
            (b = _PyPegen_expect_token(p, 638))  // token='from'
21979
454
        )
21980
1
        {
21981
1
            D(fprintf(stderr, "%*c+ invalid_raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' 'from'"));
21982
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "did you forget an expression between 'raise' and 'from'?" );
21983
1
            if (_res == NULL && PyErr_Occurred()) {
21984
1
                p->error_indicator = 1;
21985
1
                p->level--;
21986
1
                return NULL;
21987
1
            }
21988
0
            goto done;
21989
1
        }
21990
453
        p->mark = _mark;
21991
453
        D(fprintf(stderr, "%*c%s invalid_raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
21992
453
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' 'from'"));
21993
453
    }
21994
0
    { // 'raise' expression 'from'
21995
453
        if (p->error_indicator) {
21996
0
            p->level--;
21997
0
            return NULL;
21998
0
        }
21999
453
        D(fprintf(stderr, "%*c> invalid_raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' expression 'from'"));
22000
453
        Token * _keyword;
22001
453
        Token * a;
22002
453
        expr_ty expression_var;
22003
453
        if (
22004
453
            (_keyword = _PyPegen_expect_token(p, 628))  // token='raise'
22005
453
            &&
22006
453
            (expression_var = expression_rule(p))  // expression
22007
453
            &&
22008
453
            (a = _PyPegen_expect_token(p, 638))  // token='from'
22009
453
        )
22010
1
        {
22011
1
            D(fprintf(stderr, "%*c+ invalid_raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' expression 'from'"));
22012
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "did you forget an expression after 'from'?" );
22013
1
            if (_res == NULL && PyErr_Occurred()) {
22014
1
                p->error_indicator = 1;
22015
1
                p->level--;
22016
1
                return NULL;
22017
1
            }
22018
0
            goto done;
22019
1
        }
22020
452
        p->mark = _mark;
22021
452
        D(fprintf(stderr, "%*c%s invalid_raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22022
452
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' expression 'from'"));
22023
452
    }
22024
0
    _res = NULL;
22025
452
  done:
22026
452
    p->level--;
22027
452
    return _res;
22028
452
}
22029
22030
// invalid_del_stmt: 'del' star_expressions
22031
static void *
22032
invalid_del_stmt_rule(Parser *p)
22033
112
{
22034
112
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22035
0
        _Pypegen_stack_overflow(p);
22036
0
    }
22037
112
    if (p->error_indicator) {
22038
0
        p->level--;
22039
0
        return NULL;
22040
0
    }
22041
112
    void * _res = NULL;
22042
112
    int _mark = p->mark;
22043
112
    { // 'del' star_expressions
22044
112
        if (p->error_indicator) {
22045
0
            p->level--;
22046
0
            return NULL;
22047
0
        }
22048
112
        D(fprintf(stderr, "%*c> invalid_del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'del' star_expressions"));
22049
112
        Token * _keyword;
22050
112
        expr_ty a;
22051
112
        if (
22052
112
            (_keyword = _PyPegen_expect_token(p, 630))  // token='del'
22053
112
            &&
22054
112
            (a = star_expressions_rule(p))  // star_expressions
22055
112
        )
22056
67
        {
22057
67
            D(fprintf(stderr, "%*c+ invalid_del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'del' star_expressions"));
22058
67
            _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( DEL_TARGETS , a );
22059
67
            if (_res == NULL && PyErr_Occurred()) {
22060
14
                p->error_indicator = 1;
22061
14
                p->level--;
22062
14
                return NULL;
22063
14
            }
22064
53
            goto done;
22065
67
        }
22066
45
        p->mark = _mark;
22067
45
        D(fprintf(stderr, "%*c%s invalid_del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22068
45
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'del' star_expressions"));
22069
45
    }
22070
0
    _res = NULL;
22071
98
  done:
22072
98
    p->level--;
22073
98
    return _res;
22074
45
}
22075
22076
// invalid_block: NEWLINE !INDENT
22077
static void *
22078
invalid_block_rule(Parser *p)
22079
2.62k
{
22080
2.62k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22081
0
        _Pypegen_stack_overflow(p);
22082
0
    }
22083
2.62k
    if (p->error_indicator) {
22084
0
        p->level--;
22085
0
        return NULL;
22086
0
    }
22087
2.62k
    void * _res = NULL;
22088
2.62k
    int _mark = p->mark;
22089
2.62k
    { // NEWLINE !INDENT
22090
2.62k
        if (p->error_indicator) {
22091
0
            p->level--;
22092
0
            return NULL;
22093
0
        }
22094
2.62k
        D(fprintf(stderr, "%*c> invalid_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE !INDENT"));
22095
2.62k
        Token * newline_var;
22096
2.62k
        if (
22097
2.62k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
22098
2.62k
            &&
22099
2.62k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
22100
2.62k
        )
22101
3
        {
22102
3
            D(fprintf(stderr, "%*c+ invalid_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE !INDENT"));
22103
3
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block" );
22104
3
            if (_res == NULL && PyErr_Occurred()) {
22105
3
                p->error_indicator = 1;
22106
3
                p->level--;
22107
3
                return NULL;
22108
3
            }
22109
0
            goto done;
22110
3
        }
22111
2.62k
        p->mark = _mark;
22112
2.62k
        D(fprintf(stderr, "%*c%s invalid_block[%d-%d]: %s failed!\n", p->level, ' ',
22113
2.62k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE !INDENT"));
22114
2.62k
    }
22115
0
    _res = NULL;
22116
2.62k
  done:
22117
2.62k
    p->level--;
22118
2.62k
    return _res;
22119
2.62k
}
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
368k
{
22128
368k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22129
1
        _Pypegen_stack_overflow(p);
22130
1
    }
22131
368k
    if (p->error_indicator) {
22132
1
        p->level--;
22133
1
        return NULL;
22134
1
    }
22135
368k
    void * _res = NULL;
22136
368k
    int _mark = p->mark;
22137
368k
    { // ('[' | '(' | '{') starred_expression for_if_clauses
22138
368k
        if (p->error_indicator) {
22139
0
            p->level--;
22140
0
            return NULL;
22141
0
        }
22142
368k
        D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
22143
368k
        void *_tmp_120_var;
22144
368k
        expr_ty a;
22145
368k
        asdl_comprehension_seq* for_if_clauses_var;
22146
368k
        if (
22147
368k
            (_tmp_120_var = _tmp_120_rule(p))  // '[' | '(' | '{'
22148
368k
            &&
22149
368k
            (a = starred_expression_rule(p))  // starred_expression
22150
368k
            &&
22151
368k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
22152
368k
        )
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
368k
        p->mark = _mark;
22164
368k
        D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
22165
368k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
22166
368k
    }
22167
0
    { // ('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses
22168
368k
        if (p->error_indicator) {
22169
404
            p->level--;
22170
404
            return NULL;
22171
404
        }
22172
368k
        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
368k
        Token * _literal;
22174
368k
        void *_tmp_121_var;
22175
368k
        expr_ty a;
22176
368k
        asdl_expr_seq* b;
22177
368k
        asdl_comprehension_seq* for_if_clauses_var;
22178
368k
        if (
22179
368k
            (_tmp_121_var = _tmp_121_rule(p))  // '[' | '{'
22180
368k
            &&
22181
368k
            (a = star_named_expression_rule(p))  // star_named_expression
22182
368k
            &&
22183
368k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
22184
368k
            &&
22185
368k
            (b = star_named_expressions_rule(p))  // star_named_expressions
22186
368k
            &&
22187
368k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
22188
368k
        )
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
368k
        p->mark = _mark;
22200
368k
        D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
22201
368k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses"));
22202
368k
    }
22203
0
    { // ('[' | '{') star_named_expression ',' for_if_clauses
22204
368k
        if (p->error_indicator) {
22205
2.72k
            p->level--;
22206
2.72k
            return NULL;
22207
2.72k
        }
22208
365k
        D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses"));
22209
365k
        void *_tmp_121_var;
22210
365k
        expr_ty a;
22211
365k
        Token * b;
22212
365k
        asdl_comprehension_seq* for_if_clauses_var;
22213
365k
        if (
22214
365k
            (_tmp_121_var = _tmp_121_rule(p))  // '[' | '{'
22215
365k
            &&
22216
365k
            (a = star_named_expression_rule(p))  // star_named_expression
22217
365k
            &&
22218
365k
            (b = _PyPegen_expect_token(p, 12))  // token=','
22219
365k
            &&
22220
365k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
22221
365k
        )
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
365k
        p->mark = _mark;
22233
365k
        D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
22234
365k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses"));
22235
365k
    }
22236
0
    _res = NULL;
22237
365k
  done:
22238
365k
    p->level--;
22239
365k
    return _res;
22240
365k
}
22241
22242
// invalid_dict_comprehension: '{' '**' bitwise_or for_if_clauses '}'
22243
static void *
22244
invalid_dict_comprehension_rule(Parser *p)
22245
3.61k
{
22246
3.61k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22247
0
        _Pypegen_stack_overflow(p);
22248
0
    }
22249
3.61k
    if (p->error_indicator) {
22250
0
        p->level--;
22251
0
        return NULL;
22252
0
    }
22253
3.61k
    void * _res = NULL;
22254
3.61k
    int _mark = p->mark;
22255
3.61k
    { // '{' '**' bitwise_or for_if_clauses '}'
22256
3.61k
        if (p->error_indicator) {
22257
0
            p->level--;
22258
0
            return NULL;
22259
0
        }
22260
3.61k
        D(fprintf(stderr, "%*c> invalid_dict_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
22261
3.61k
        Token * _literal;
22262
3.61k
        Token * _literal_1;
22263
3.61k
        Token * a;
22264
3.61k
        expr_ty bitwise_or_var;
22265
3.61k
        asdl_comprehension_seq* for_if_clauses_var;
22266
3.61k
        if (
22267
3.61k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
22268
3.61k
            &&
22269
3.61k
            (a = _PyPegen_expect_token(p, 35))  // token='**'
22270
3.61k
            &&
22271
3.61k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
22272
3.61k
            &&
22273
3.61k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
22274
3.61k
            &&
22275
3.61k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
22276
3.61k
        )
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.60k
        p->mark = _mark;
22288
3.60k
        D(fprintf(stderr, "%*c%s invalid_dict_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
22289
3.60k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
22290
3.60k
    }
22291
0
    _res = NULL;
22292
3.60k
  done:
22293
3.60k
    p->level--;
22294
3.60k
    return _res;
22295
3.60k
}
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
6.96k
{
22307
6.96k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22308
0
        _Pypegen_stack_overflow(p);
22309
0
    }
22310
6.96k
    if (p->error_indicator) {
22311
0
        p->level--;
22312
0
        return NULL;
22313
0
    }
22314
6.96k
    void * _res = NULL;
22315
6.96k
    int _mark = p->mark;
22316
6.96k
    { // "/" ','
22317
6.96k
        if (p->error_indicator) {
22318
0
            p->level--;
22319
0
            return NULL;
22320
0
        }
22321
6.96k
        D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"/\" ','"));
22322
6.96k
        Token * _literal;
22323
6.96k
        Token * a;
22324
6.96k
        if (
22325
6.96k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
22326
6.96k
            &&
22327
6.96k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
22328
6.96k
        )
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
6.96k
        p->mark = _mark;
22340
6.96k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22341
6.96k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"/\" ','"));
22342
6.96k
    }
22343
0
    { // (slash_no_default | slash_with_default) param_maybe_default* '/'
22344
6.96k
        if (p->error_indicator) {
22345
1
            p->level--;
22346
1
            return NULL;
22347
1
        }
22348
6.95k
        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
6.95k
        asdl_seq * _loop0_31_var;
22350
6.95k
        void *_tmp_122_var;
22351
6.95k
        Token * a;
22352
6.95k
        if (
22353
6.95k
            (_tmp_122_var = _tmp_122_rule(p))  // slash_no_default | slash_with_default
22354
6.95k
            &&
22355
6.95k
            (_loop0_31_var = _loop0_31_rule(p))  // param_maybe_default*
22356
6.95k
            &&
22357
6.95k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
22358
6.95k
        )
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
6.95k
        p->mark = _mark;
22370
6.95k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22371
6.95k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(slash_no_default | slash_with_default) param_maybe_default* '/'"));
22372
6.95k
    }
22373
0
    { // slash_no_default? param_no_default* invalid_parameters_helper param_no_default
22374
6.95k
        if (p->error_indicator) {
22375
8
            p->level--;
22376
8
            return NULL;
22377
8
        }
22378
6.94k
        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
6.94k
        asdl_seq * _loop0_27_var;
22380
6.94k
        void *_opt_var;
22381
6.94k
        UNUSED(_opt_var); // Silence compiler warnings
22382
6.94k
        arg_ty a;
22383
6.94k
        void *invalid_parameters_helper_var;
22384
6.94k
        if (
22385
6.94k
            (_opt_var = slash_no_default_rule(p), !p->error_indicator)  // slash_no_default?
22386
6.94k
            &&
22387
6.94k
            (_loop0_27_var = _loop0_27_rule(p))  // param_no_default*
22388
6.94k
            &&
22389
6.94k
            (invalid_parameters_helper_var = invalid_parameters_helper_rule(p))  // invalid_parameters_helper
22390
6.94k
            &&
22391
6.94k
            (a = param_no_default_rule(p))  // param_no_default
22392
6.94k
        )
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
6.94k
        p->mark = _mark;
22404
6.94k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22405
6.94k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_no_default? param_no_default* invalid_parameters_helper param_no_default"));
22406
6.94k
    }
22407
0
    { // param_no_default* '(' param_no_default+ ','? ')'
22408
6.94k
        if (p->error_indicator) {
22409
1
            p->level--;
22410
1
            return NULL;
22411
1
        }
22412
6.94k
        D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* '(' param_no_default+ ','? ')'"));
22413
6.94k
        asdl_seq * _loop0_27_var;
22414
6.94k
        asdl_seq * _loop1_29_var;
22415
6.94k
        void *_opt_var;
22416
6.94k
        UNUSED(_opt_var); // Silence compiler warnings
22417
6.94k
        Token * a;
22418
6.94k
        Token * b;
22419
6.94k
        if (
22420
6.94k
            (_loop0_27_var = _loop0_27_rule(p))  // param_no_default*
22421
6.94k
            &&
22422
6.94k
            (a = _PyPegen_expect_token(p, 7))  // token='('
22423
6.94k
            &&
22424
6.94k
            (_loop1_29_var = _loop1_29_rule(p))  // param_no_default+
22425
6.94k
            &&
22426
6.94k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
22427
6.94k
            &&
22428
6.94k
            (b = _PyPegen_expect_token(p, 8))  // token=')'
22429
6.94k
        )
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
6.94k
        p->mark = _mark;
22441
6.94k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22442
6.94k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* '(' param_no_default+ ','? ')'"));
22443
6.94k
    }
22444
0
    { // [(slash_no_default | slash_with_default)] param_maybe_default* '*' (',' | param_no_default) param_maybe_default* '/'
22445
6.94k
        if (p->error_indicator) {
22446
3
            p->level--;
22447
3
            return NULL;
22448
3
        }
22449
6.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* '*' (',' | param_no_default) param_maybe_default* '/'"));
22450
6.94k
        Token * _literal;
22451
6.94k
        asdl_seq * _loop0_31_var;
22452
6.94k
        asdl_seq * _loop0_31_var_1;
22453
6.94k
        void *_opt_var;
22454
6.94k
        UNUSED(_opt_var); // Silence compiler warnings
22455
6.94k
        void *_tmp_123_var;
22456
6.94k
        Token * a;
22457
6.94k
        if (
22458
6.94k
            (_opt_var = _tmp_122_rule(p), !p->error_indicator)  // [(slash_no_default | slash_with_default)]
22459
6.94k
            &&
22460
6.94k
            (_loop0_31_var = _loop0_31_rule(p))  // param_maybe_default*
22461
6.94k
            &&
22462
6.94k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
22463
6.94k
            &&
22464
6.94k
            (_tmp_123_var = _tmp_123_rule(p))  // ',' | param_no_default
22465
6.94k
            &&
22466
6.94k
            (_loop0_31_var_1 = _loop0_31_rule(p))  // param_maybe_default*
22467
6.94k
            &&
22468
6.94k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
22469
6.94k
        )
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
6.93k
        p->mark = _mark;
22481
6.93k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22482
6.93k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "[(slash_no_default | slash_with_default)] param_maybe_default* '*' (',' | param_no_default) param_maybe_default* '/'"));
22483
6.93k
    }
22484
0
    { // param_maybe_default+ '/' '*'
22485
6.93k
        if (p->error_indicator) {
22486
2
            p->level--;
22487
2
            return NULL;
22488
2
        }
22489
6.93k
        D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default+ '/' '*'"));
22490
6.93k
        Token * _literal;
22491
6.93k
        asdl_seq * _loop1_32_var;
22492
6.93k
        Token * a;
22493
6.93k
        if (
22494
6.93k
            (_loop1_32_var = _loop1_32_rule(p))  // param_maybe_default+
22495
6.93k
            &&
22496
6.93k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
22497
6.93k
            &&
22498
6.93k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
22499
6.93k
        )
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
6.93k
        p->mark = _mark;
22511
6.93k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22512
6.93k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default+ '/' '*'"));
22513
6.93k
    }
22514
0
    _res = NULL;
22515
6.93k
  done:
22516
6.93k
    p->level--;
22517
6.93k
    return _res;
22518
6.93k
}
22519
22520
// invalid_default: '=' &(')' | ',')
22521
static void *
22522
invalid_default_rule(Parser *p)
22523
76.2k
{
22524
76.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22525
0
        _Pypegen_stack_overflow(p);
22526
0
    }
22527
76.2k
    if (p->error_indicator) {
22528
0
        p->level--;
22529
0
        return NULL;
22530
0
    }
22531
76.2k
    void * _res = NULL;
22532
76.2k
    int _mark = p->mark;
22533
76.2k
    { // '=' &(')' | ',')
22534
76.2k
        if (p->error_indicator) {
22535
0
            p->level--;
22536
0
            return NULL;
22537
0
        }
22538
76.2k
        D(fprintf(stderr, "%*c> invalid_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' &(')' | ',')"));
22539
76.2k
        Token * a;
22540
76.2k
        if (
22541
76.2k
            (a = _PyPegen_expect_token(p, 22))  // token='='
22542
76.2k
            &&
22543
76.2k
            _PyPegen_lookahead(1, _tmp_124_rule, p)
22544
76.2k
        )
22545
10
        {
22546
10
            D(fprintf(stderr, "%*c+ invalid_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' &(')' | ',')"));
22547
10
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expected default value expression" );
22548
10
            if (_res == NULL && PyErr_Occurred()) {
22549
10
                p->error_indicator = 1;
22550
10
                p->level--;
22551
10
                return NULL;
22552
10
            }
22553
0
            goto done;
22554
10
        }
22555
76.1k
        p->mark = _mark;
22556
76.1k
        D(fprintf(stderr, "%*c%s invalid_default[%d-%d]: %s failed!\n", p->level, ' ',
22557
76.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' &(')' | ',')"));
22558
76.1k
    }
22559
0
    _res = NULL;
22560
76.1k
  done:
22561
76.1k
    p->level--;
22562
76.1k
    return _res;
22563
76.1k
}
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
6.93k
{
22573
6.93k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22574
0
        _Pypegen_stack_overflow(p);
22575
0
    }
22576
6.93k
    if (p->error_indicator) {
22577
0
        p->level--;
22578
0
        return NULL;
22579
0
    }
22580
6.93k
    void * _res = NULL;
22581
6.93k
    int _mark = p->mark;
22582
6.93k
    { // '*' (')' | ',' (')' | '**'))
22583
6.93k
        if (p->error_indicator) {
22584
0
            p->level--;
22585
0
            return NULL;
22586
0
        }
22587
6.93k
        D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
22588
6.93k
        void *_tmp_125_var;
22589
6.93k
        Token * a;
22590
6.93k
        if (
22591
6.93k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
22592
6.93k
            &&
22593
6.93k
            (_tmp_125_var = _tmp_125_rule(p))  // ')' | ',' (')' | '**')
22594
6.93k
        )
22595
5
        {
22596
5
            D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
22597
5
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "named parameters must follow bare *" );
22598
5
            if (_res == NULL && PyErr_Occurred()) {
22599
5
                p->error_indicator = 1;
22600
5
                p->level--;
22601
5
                return NULL;
22602
5
            }
22603
0
            goto done;
22604
5
        }
22605
6.93k
        p->mark = _mark;
22606
6.93k
        D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
22607
6.93k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
22608
6.93k
    }
22609
0
    { // '*' ',' TYPE_COMMENT
22610
6.93k
        if (p->error_indicator) {
22611
0
            p->level--;
22612
0
            return NULL;
22613
0
        }
22614
6.93k
        D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' TYPE_COMMENT"));
22615
6.93k
        Token * _literal;
22616
6.93k
        Token * _literal_1;
22617
6.93k
        Token * type_comment_var;
22618
6.93k
        if (
22619
6.93k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
22620
6.93k
            &&
22621
6.93k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
22622
6.93k
            &&
22623
6.93k
            (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
22624
6.93k
        )
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
6.93k
        p->mark = _mark;
22636
6.93k
        D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
22637
6.93k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' TYPE_COMMENT"));
22638
6.93k
    }
22639
0
    { // '*' param '='
22640
6.93k
        if (p->error_indicator) {
22641
0
            p->level--;
22642
0
            return NULL;
22643
0
        }
22644
6.93k
        D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' param '='"));
22645
6.93k
        Token * _literal;
22646
6.93k
        Token * a;
22647
6.93k
        arg_ty param_var;
22648
6.93k
        if (
22649
6.93k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
22650
6.93k
            &&
22651
6.93k
            (param_var = param_rule(p))  // param
22652
6.93k
            &&
22653
6.93k
            (a = _PyPegen_expect_token(p, 22))  // token='='
22654
6.93k
        )
22655
3
        {
22656
3
            D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' param '='"));
22657
3
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "var-positional parameter cannot have default value" );
22658
3
            if (_res == NULL && PyErr_Occurred()) {
22659
3
                p->error_indicator = 1;
22660
3
                p->level--;
22661
3
                return NULL;
22662
3
            }
22663
0
            goto done;
22664
3
        }
22665
6.92k
        p->mark = _mark;
22666
6.92k
        D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
22667
6.92k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' param '='"));
22668
6.92k
    }
22669
0
    { // '*' (param_no_default | ',') param_maybe_default* '*' (param_no_default | ',')
22670
6.92k
        if (p->error_indicator) {
22671
0
            p->level--;
22672
0
            return NULL;
22673
0
        }
22674
6.92k
        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
6.92k
        Token * _literal;
22676
6.92k
        asdl_seq * _loop0_31_var;
22677
6.92k
        void *_tmp_126_var;
22678
6.92k
        void *_tmp_126_var_1;
22679
6.92k
        Token * a;
22680
6.92k
        if (
22681
6.92k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
22682
6.92k
            &&
22683
6.92k
            (_tmp_126_var = _tmp_126_rule(p))  // param_no_default | ','
22684
6.92k
            &&
22685
6.92k
            (_loop0_31_var = _loop0_31_rule(p))  // param_maybe_default*
22686
6.92k
            &&
22687
6.92k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
22688
6.92k
            &&
22689
6.92k
            (_tmp_126_var_1 = _tmp_126_rule(p))  // param_no_default | ','
22690
6.92k
        )
22691
1
        {
22692
1
            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
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "* may appear only once" );
22694
1
            if (_res == NULL && PyErr_Occurred()) {
22695
1
                p->error_indicator = 1;
22696
1
                p->level--;
22697
1
                return NULL;
22698
1
            }
22699
0
            goto done;
22700
1
        }
22701
6.92k
        p->mark = _mark;
22702
6.92k
        D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
22703
6.92k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (param_no_default | ',') param_maybe_default* '*' (param_no_default | ',')"));
22704
6.92k
    }
22705
0
    _res = NULL;
22706
6.92k
  done:
22707
6.92k
    p->level--;
22708
6.92k
    return _res;
22709
6.92k
}
22710
22711
// invalid_kwds: '**' param '=' | '**' param ',' param | '**' param ',' ('*' | '**' | '/')
22712
static void *
22713
invalid_kwds_rule(Parser *p)
22714
6.92k
{
22715
6.92k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22716
0
        _Pypegen_stack_overflow(p);
22717
0
    }
22718
6.92k
    if (p->error_indicator) {
22719
0
        p->level--;
22720
0
        return NULL;
22721
0
    }
22722
6.92k
    void * _res = NULL;
22723
6.92k
    int _mark = p->mark;
22724
6.92k
    { // '**' param '='
22725
6.92k
        if (p->error_indicator) {
22726
0
            p->level--;
22727
0
            return NULL;
22728
0
        }
22729
6.92k
        D(fprintf(stderr, "%*c> invalid_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param '='"));
22730
6.92k
        Token * _literal;
22731
6.92k
        Token * a;
22732
6.92k
        arg_ty param_var;
22733
6.92k
        if (
22734
6.92k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
22735
6.92k
            &&
22736
6.92k
            (param_var = param_rule(p))  // param
22737
6.92k
            &&
22738
6.92k
            (a = _PyPegen_expect_token(p, 22))  // token='='
22739
6.92k
        )
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
6.92k
        p->mark = _mark;
22751
6.92k
        D(fprintf(stderr, "%*c%s invalid_kwds[%d-%d]: %s failed!\n", p->level, ' ',
22752
6.92k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param '='"));
22753
6.92k
    }
22754
0
    { // '**' param ',' param
22755
6.92k
        if (p->error_indicator) {
22756
1
            p->level--;
22757
1
            return NULL;
22758
1
        }
22759
6.92k
        D(fprintf(stderr, "%*c> invalid_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param ',' param"));
22760
6.92k
        Token * _literal;
22761
6.92k
        Token * _literal_1;
22762
6.92k
        arg_ty a;
22763
6.92k
        arg_ty param_var;
22764
6.92k
        if (
22765
6.92k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
22766
6.92k
            &&
22767
6.92k
            (param_var = param_rule(p))  // param
22768
6.92k
            &&
22769
6.92k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
22770
6.92k
            &&
22771
6.92k
            (a = param_rule(p))  // param
22772
6.92k
        )
22773
2
        {
22774
2
            D(fprintf(stderr, "%*c+ invalid_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' param ',' param"));
22775
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "parameters cannot follow var-keyword parameter" );
22776
2
            if (_res == NULL && PyErr_Occurred()) {
22777
2
                p->error_indicator = 1;
22778
2
                p->level--;
22779
2
                return NULL;
22780
2
            }
22781
0
            goto done;
22782
2
        }
22783
6.91k
        p->mark = _mark;
22784
6.91k
        D(fprintf(stderr, "%*c%s invalid_kwds[%d-%d]: %s failed!\n", p->level, ' ',
22785
6.91k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param ',' param"));
22786
6.91k
    }
22787
0
    { // '**' param ',' ('*' | '**' | '/')
22788
6.91k
        if (p->error_indicator) {
22789
1
            p->level--;
22790
1
            return NULL;
22791
1
        }
22792
6.91k
        D(fprintf(stderr, "%*c> invalid_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param ',' ('*' | '**' | '/')"));
22793
6.91k
        Token * _literal;
22794
6.91k
        Token * _literal_1;
22795
6.91k
        Token* a;
22796
6.91k
        arg_ty param_var;
22797
6.91k
        if (
22798
6.91k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
22799
6.91k
            &&
22800
6.91k
            (param_var = param_rule(p))  // param
22801
6.91k
            &&
22802
6.91k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
22803
6.91k
            &&
22804
6.91k
            (a = (Token*)_tmp_127_rule(p))  // '*' | '**' | '/'
22805
6.91k
        )
22806
1
        {
22807
1
            D(fprintf(stderr, "%*c+ invalid_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' param ',' ('*' | '**' | '/')"));
22808
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "parameters cannot follow var-keyword parameter" );
22809
1
            if (_res == NULL && PyErr_Occurred()) {
22810
1
                p->error_indicator = 1;
22811
1
                p->level--;
22812
1
                return NULL;
22813
1
            }
22814
0
            goto done;
22815
1
        }
22816
6.91k
        p->mark = _mark;
22817
6.91k
        D(fprintf(stderr, "%*c%s invalid_kwds[%d-%d]: %s failed!\n", p->level, ' ',
22818
6.91k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param ',' ('*' | '**' | '/')"));
22819
6.91k
    }
22820
0
    _res = NULL;
22821
6.91k
  done:
22822
6.91k
    p->level--;
22823
6.91k
    return _res;
22824
6.91k
}
22825
22826
// invalid_parameters_helper: slash_with_default | param_with_default+
22827
static void *
22828
invalid_parameters_helper_rule(Parser *p)
22829
6.94k
{
22830
6.94k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22831
0
        _Pypegen_stack_overflow(p);
22832
0
    }
22833
6.94k
    if (p->error_indicator) {
22834
0
        p->level--;
22835
0
        return NULL;
22836
0
    }
22837
6.94k
    void * _res = NULL;
22838
6.94k
    int _mark = p->mark;
22839
6.94k
    { // slash_with_default
22840
6.94k
        if (p->error_indicator) {
22841
0
            p->level--;
22842
0
            return NULL;
22843
0
        }
22844
6.94k
        D(fprintf(stderr, "%*c> invalid_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
22845
6.94k
        SlashWithDefault* a;
22846
6.94k
        if (
22847
6.94k
            (a = slash_with_default_rule(p))  // slash_with_default
22848
6.94k
        )
22849
675
        {
22850
675
            D(fprintf(stderr, "%*c+ invalid_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
22851
675
            _res = _PyPegen_singleton_seq ( p , a );
22852
675
            if (_res == NULL && PyErr_Occurred()) {
22853
0
                p->error_indicator = 1;
22854
0
                p->level--;
22855
0
                return NULL;
22856
0
            }
22857
675
            goto done;
22858
675
        }
22859
6.27k
        p->mark = _mark;
22860
6.27k
        D(fprintf(stderr, "%*c%s invalid_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
22861
6.27k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default"));
22862
6.27k
    }
22863
0
    { // param_with_default+
22864
6.27k
        if (p->error_indicator) {
22865
0
            p->level--;
22866
0
            return NULL;
22867
0
        }
22868
6.27k
        D(fprintf(stderr, "%*c> invalid_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+"));
22869
6.27k
        asdl_seq * _loop1_30_var;
22870
6.27k
        if (
22871
6.27k
            (_loop1_30_var = _loop1_30_rule(p))  // param_with_default+
22872
6.27k
        )
22873
874
        {
22874
874
            D(fprintf(stderr, "%*c+ invalid_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+"));
22875
874
            _res = _loop1_30_var;
22876
874
            goto done;
22877
874
        }
22878
5.40k
        p->mark = _mark;
22879
5.40k
        D(fprintf(stderr, "%*c%s invalid_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
22880
5.40k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default+"));
22881
5.40k
    }
22882
0
    _res = NULL;
22883
6.94k
  done:
22884
6.94k
    p->level--;
22885
6.94k
    return _res;
22886
5.40k
}
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
12.0k
{
22898
12.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22899
0
        _Pypegen_stack_overflow(p);
22900
0
    }
22901
12.0k
    if (p->error_indicator) {
22902
0
        p->level--;
22903
0
        return NULL;
22904
0
    }
22905
12.0k
    void * _res = NULL;
22906
12.0k
    int _mark = p->mark;
22907
12.0k
    { // "/" ','
22908
12.0k
        if (p->error_indicator) {
22909
0
            p->level--;
22910
0
            return NULL;
22911
0
        }
22912
12.0k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"/\" ','"));
22913
12.0k
        Token * _literal;
22914
12.0k
        Token * a;
22915
12.0k
        if (
22916
12.0k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
22917
12.0k
            &&
22918
12.0k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
22919
12.0k
        )
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
11.9k
        p->mark = _mark;
22931
11.9k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22932
11.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"/\" ','"));
22933
11.9k
    }
22934
0
    { // (lambda_slash_no_default | lambda_slash_with_default) lambda_param_maybe_default* '/'
22935
11.9k
        if (p->error_indicator) {
22936
2
            p->level--;
22937
2
            return NULL;
22938
2
        }
22939
11.9k
        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
11.9k
        asdl_seq * _loop0_74_var;
22941
11.9k
        void *_tmp_128_var;
22942
11.9k
        Token * a;
22943
11.9k
        if (
22944
11.9k
            (_tmp_128_var = _tmp_128_rule(p))  // lambda_slash_no_default | lambda_slash_with_default
22945
11.9k
            &&
22946
11.9k
            (_loop0_74_var = _loop0_74_rule(p))  // lambda_param_maybe_default*
22947
11.9k
            &&
22948
11.9k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
22949
11.9k
        )
22950
3
        {
22951
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* '/'"));
22952
3
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "/ may appear only once" );
22953
3
            if (_res == NULL && PyErr_Occurred()) {
22954
3
                p->error_indicator = 1;
22955
3
                p->level--;
22956
3
                return NULL;
22957
3
            }
22958
0
            goto done;
22959
3
        }
22960
11.9k
        p->mark = _mark;
22961
11.9k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22962
11.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(lambda_slash_no_default | lambda_slash_with_default) lambda_param_maybe_default* '/'"));
22963
11.9k
    }
22964
0
    { // lambda_slash_no_default? lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default
22965
11.9k
        if (p->error_indicator) {
22966
393
            p->level--;
22967
393
            return NULL;
22968
393
        }
22969
11.6k
        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
11.6k
        asdl_seq * _loop0_70_var;
22971
11.6k
        void *_opt_var;
22972
11.6k
        UNUSED(_opt_var); // Silence compiler warnings
22973
11.6k
        arg_ty a;
22974
11.6k
        void *invalid_lambda_parameters_helper_var;
22975
11.6k
        if (
22976
11.6k
            (_opt_var = lambda_slash_no_default_rule(p), !p->error_indicator)  // lambda_slash_no_default?
22977
11.6k
            &&
22978
11.6k
            (_loop0_70_var = _loop0_70_rule(p))  // lambda_param_no_default*
22979
11.6k
            &&
22980
11.6k
            (invalid_lambda_parameters_helper_var = invalid_lambda_parameters_helper_rule(p))  // invalid_lambda_parameters_helper
22981
11.6k
            &&
22982
11.6k
            (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
22983
11.6k
        )
22984
5
        {
22985
5
            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
5
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "parameter without a default follows parameter with a default" );
22987
5
            if (_res == NULL && PyErr_Occurred()) {
22988
5
                p->error_indicator = 1;
22989
5
                p->level--;
22990
5
                return NULL;
22991
5
            }
22992
0
            goto done;
22993
5
        }
22994
11.5k
        p->mark = _mark;
22995
11.5k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22996
11.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_no_default? lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default"));
22997
11.5k
    }
22998
0
    { // lambda_param_no_default* '(' ','.lambda_param+ ','? ')'
22999
11.5k
        if (p->error_indicator) {
23000
0
            p->level--;
23001
0
            return NULL;
23002
0
        }
23003
11.5k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* '(' ','.lambda_param+ ','? ')'"));
23004
11.5k
        asdl_seq * _gather_130_var;
23005
11.5k
        asdl_seq * _loop0_70_var;
23006
11.5k
        void *_opt_var;
23007
11.5k
        UNUSED(_opt_var); // Silence compiler warnings
23008
11.5k
        Token * a;
23009
11.5k
        Token * b;
23010
11.5k
        if (
23011
11.5k
            (_loop0_70_var = _loop0_70_rule(p))  // lambda_param_no_default*
23012
11.5k
            &&
23013
11.5k
            (a = _PyPegen_expect_token(p, 7))  // token='('
23014
11.5k
            &&
23015
11.5k
            (_gather_130_var = _gather_130_rule(p))  // ','.lambda_param+
23016
11.5k
            &&
23017
11.5k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
23018
11.5k
            &&
23019
11.5k
            (b = _PyPegen_expect_token(p, 8))  // token=')'
23020
11.5k
        )
23021
2
        {
23022
2
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* '(' ','.lambda_param+ ','? ')'"));
23023
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "Lambda expression parameters cannot be parenthesized" );
23024
2
            if (_res == NULL && PyErr_Occurred()) {
23025
2
                p->error_indicator = 1;
23026
2
                p->level--;
23027
2
                return NULL;
23028
2
            }
23029
0
            goto done;
23030
2
        }
23031
11.5k
        p->mark = _mark;
23032
11.5k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
23033
11.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* '(' ','.lambda_param+ ','? ')'"));
23034
11.5k
    }
23035
0
    { // [(lambda_slash_no_default | lambda_slash_with_default)] lambda_param_maybe_default* '*' (',' | lambda_param_no_default) lambda_param_maybe_default* '/'
23036
11.5k
        if (p->error_indicator) {
23037
8
            p->level--;
23038
8
            return NULL;
23039
8
        }
23040
11.5k
        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
11.5k
        Token * _literal;
23042
11.5k
        asdl_seq * _loop0_74_var;
23043
11.5k
        asdl_seq * _loop0_74_var_1;
23044
11.5k
        void *_opt_var;
23045
11.5k
        UNUSED(_opt_var); // Silence compiler warnings
23046
11.5k
        void *_tmp_131_var;
23047
11.5k
        Token * a;
23048
11.5k
        if (
23049
11.5k
            (_opt_var = _tmp_128_rule(p), !p->error_indicator)  // [(lambda_slash_no_default | lambda_slash_with_default)]
23050
11.5k
            &&
23051
11.5k
            (_loop0_74_var = _loop0_74_rule(p))  // lambda_param_maybe_default*
23052
11.5k
            &&
23053
11.5k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
23054
11.5k
            &&
23055
11.5k
            (_tmp_131_var = _tmp_131_rule(p))  // ',' | lambda_param_no_default
23056
11.5k
            &&
23057
11.5k
            (_loop0_74_var_1 = _loop0_74_rule(p))  // lambda_param_maybe_default*
23058
11.5k
            &&
23059
11.5k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
23060
11.5k
        )
23061
1
        {
23062
1
            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
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "/ must be ahead of *" );
23064
1
            if (_res == NULL && PyErr_Occurred()) {
23065
1
                p->error_indicator = 1;
23066
1
                p->level--;
23067
1
                return NULL;
23068
1
            }
23069
0
            goto done;
23070
1
        }
23071
11.5k
        p->mark = _mark;
23072
11.5k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
23073
11.5k
                  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
11.5k
    }
23075
0
    { // lambda_param_maybe_default+ '/' '*'
23076
11.5k
        if (p->error_indicator) {
23077
110
            p->level--;
23078
110
            return NULL;
23079
110
        }
23080
11.4k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default+ '/' '*'"));
23081
11.4k
        Token * _literal;
23082
11.4k
        asdl_seq * _loop1_75_var;
23083
11.4k
        Token * a;
23084
11.4k
        if (
23085
11.4k
            (_loop1_75_var = _loop1_75_rule(p))  // lambda_param_maybe_default+
23086
11.4k
            &&
23087
11.4k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
23088
11.4k
            &&
23089
11.4k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
23090
11.4k
        )
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
11.4k
        p->mark = _mark;
23102
11.4k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
23103
11.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default+ '/' '*'"));
23104
11.4k
    }
23105
0
    _res = NULL;
23106
11.4k
  done:
23107
11.4k
    p->level--;
23108
11.4k
    return _res;
23109
11.4k
}
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
11.6k
{
23117
11.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23118
0
        _Pypegen_stack_overflow(p);
23119
0
    }
23120
11.6k
    if (p->error_indicator) {
23121
0
        p->level--;
23122
0
        return NULL;
23123
0
    }
23124
11.6k
    void * _res = NULL;
23125
11.6k
    int _mark = p->mark;
23126
11.6k
    { // lambda_slash_with_default
23127
11.6k
        if (p->error_indicator) {
23128
0
            p->level--;
23129
0
            return NULL;
23130
0
        }
23131
11.6k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
23132
11.6k
        SlashWithDefault* a;
23133
11.6k
        if (
23134
11.6k
            (a = lambda_slash_with_default_rule(p))  // lambda_slash_with_default
23135
11.6k
        )
23136
727
        {
23137
727
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
23138
727
            _res = _PyPegen_singleton_seq ( p , a );
23139
727
            if (_res == NULL && PyErr_Occurred()) {
23140
0
                p->error_indicator = 1;
23141
0
                p->level--;
23142
0
                return NULL;
23143
0
            }
23144
727
            goto done;
23145
727
        }
23146
10.8k
        p->mark = _mark;
23147
10.8k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
23148
10.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default"));
23149
10.8k
    }
23150
0
    { // lambda_param_with_default+
23151
10.8k
        if (p->error_indicator) {
23152
0
            p->level--;
23153
0
            return NULL;
23154
0
        }
23155
10.8k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+"));
23156
10.8k
        asdl_seq * _loop1_73_var;
23157
10.8k
        if (
23158
10.8k
            (_loop1_73_var = _loop1_73_rule(p))  // lambda_param_with_default+
23159
10.8k
        )
23160
1.97k
        {
23161
1.97k
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+"));
23162
1.97k
            _res = _loop1_73_var;
23163
1.97k
            goto done;
23164
1.97k
        }
23165
8.89k
        p->mark = _mark;
23166
8.89k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
23167
8.89k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default+"));
23168
8.89k
    }
23169
0
    _res = NULL;
23170
11.6k
  done:
23171
11.6k
    p->level--;
23172
11.6k
    return _res;
23173
8.89k
}
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
11.4k
{
23182
11.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23183
0
        _Pypegen_stack_overflow(p);
23184
0
    }
23185
11.4k
    if (p->error_indicator) {
23186
0
        p->level--;
23187
0
        return NULL;
23188
0
    }
23189
11.4k
    void * _res = NULL;
23190
11.4k
    int _mark = p->mark;
23191
11.4k
    { // '*' (':' | ',' (':' | '**'))
23192
11.4k
        if (p->error_indicator) {
23193
0
            p->level--;
23194
0
            return NULL;
23195
0
        }
23196
11.4k
        D(fprintf(stderr, "%*c> invalid_lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
23197
11.4k
        Token * _literal;
23198
11.4k
        void *_tmp_132_var;
23199
11.4k
        if (
23200
11.4k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
23201
11.4k
            &&
23202
11.4k
            (_tmp_132_var = _tmp_132_rule(p))  // ':' | ',' (':' | '**')
23203
11.4k
        )
23204
5
        {
23205
5
            D(fprintf(stderr, "%*c+ invalid_lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
23206
5
            _res = RAISE_SYNTAX_ERROR ( "named parameters must follow bare *" );
23207
5
            if (_res == NULL && PyErr_Occurred()) {
23208
5
                p->error_indicator = 1;
23209
5
                p->level--;
23210
5
                return NULL;
23211
5
            }
23212
0
            goto done;
23213
5
        }
23214
11.4k
        p->mark = _mark;
23215
11.4k
        D(fprintf(stderr, "%*c%s invalid_lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
23216
11.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
23217
11.4k
    }
23218
0
    { // '*' lambda_param '='
23219
11.4k
        if (p->error_indicator) {
23220
0
            p->level--;
23221
0
            return NULL;
23222
0
        }
23223
11.4k
        D(fprintf(stderr, "%*c> invalid_lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' lambda_param '='"));
23224
11.4k
        Token * _literal;
23225
11.4k
        Token * a;
23226
11.4k
        arg_ty lambda_param_var;
23227
11.4k
        if (
23228
11.4k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
23229
11.4k
            &&
23230
11.4k
            (lambda_param_var = lambda_param_rule(p))  // lambda_param
23231
11.4k
            &&
23232
11.4k
            (a = _PyPegen_expect_token(p, 22))  // token='='
23233
11.4k
        )
23234
4
        {
23235
4
            D(fprintf(stderr, "%*c+ invalid_lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' lambda_param '='"));
23236
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "var-positional parameter cannot have default value" );
23237
4
            if (_res == NULL && PyErr_Occurred()) {
23238
4
                p->error_indicator = 1;
23239
4
                p->level--;
23240
4
                return NULL;
23241
4
            }
23242
0
            goto done;
23243
4
        }
23244
11.4k
        p->mark = _mark;
23245
11.4k
        D(fprintf(stderr, "%*c%s invalid_lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
23246
11.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' lambda_param '='"));
23247
11.4k
    }
23248
0
    { // '*' (lambda_param_no_default | ',') lambda_param_maybe_default* '*' (lambda_param_no_default | ',')
23249
11.4k
        if (p->error_indicator) {
23250
0
            p->level--;
23251
0
            return NULL;
23252
0
        }
23253
11.4k
        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
11.4k
        Token * _literal;
23255
11.4k
        asdl_seq * _loop0_74_var;
23256
11.4k
        void *_tmp_133_var;
23257
11.4k
        void *_tmp_133_var_1;
23258
11.4k
        Token * a;
23259
11.4k
        if (
23260
11.4k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
23261
11.4k
            &&
23262
11.4k
            (_tmp_133_var = _tmp_133_rule(p))  // lambda_param_no_default | ','
23263
11.4k
            &&
23264
11.4k
            (_loop0_74_var = _loop0_74_rule(p))  // lambda_param_maybe_default*
23265
11.4k
            &&
23266
11.4k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
23267
11.4k
            &&
23268
11.4k
            (_tmp_133_var_1 = _tmp_133_rule(p))  // lambda_param_no_default | ','
23269
11.4k
        )
23270
3
        {
23271
3
            D(fprintf(stderr, "%*c+ invalid_lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (lambda_param_no_default | ',') lambda_param_maybe_default* '*' (lambda_param_no_default | ',')"));
23272
3
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "* may appear only once" );
23273
3
            if (_res == NULL && PyErr_Occurred()) {
23274
3
                p->error_indicator = 1;
23275
3
                p->level--;
23276
3
                return NULL;
23277
3
            }
23278
0
            goto done;
23279
3
        }
23280
11.4k
        p->mark = _mark;
23281
11.4k
        D(fprintf(stderr, "%*c%s invalid_lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
23282
11.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (lambda_param_no_default | ',') lambda_param_maybe_default* '*' (lambda_param_no_default | ',')"));
23283
11.4k
    }
23284
0
    _res = NULL;
23285
11.4k
  done:
23286
11.4k
    p->level--;
23287
11.4k
    return _res;
23288
11.4k
}
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
11.4k
{
23297
11.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23298
0
        _Pypegen_stack_overflow(p);
23299
0
    }
23300
11.4k
    if (p->error_indicator) {
23301
0
        p->level--;
23302
0
        return NULL;
23303
0
    }
23304
11.4k
    void * _res = NULL;
23305
11.4k
    int _mark = p->mark;
23306
11.4k
    { // '**' lambda_param '='
23307
11.4k
        if (p->error_indicator) {
23308
0
            p->level--;
23309
0
            return NULL;
23310
0
        }
23311
11.4k
        D(fprintf(stderr, "%*c> invalid_lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param '='"));
23312
11.4k
        Token * _literal;
23313
11.4k
        Token * a;
23314
11.4k
        arg_ty lambda_param_var;
23315
11.4k
        if (
23316
11.4k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
23317
11.4k
            &&
23318
11.4k
            (lambda_param_var = lambda_param_rule(p))  // lambda_param
23319
11.4k
            &&
23320
11.4k
            (a = _PyPegen_expect_token(p, 22))  // token='='
23321
11.4k
        )
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
11.4k
        p->mark = _mark;
23333
11.4k
        D(fprintf(stderr, "%*c%s invalid_lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
23334
11.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param '='"));
23335
11.4k
    }
23336
0
    { // '**' lambda_param ',' lambda_param
23337
11.4k
        if (p->error_indicator) {
23338
1
            p->level--;
23339
1
            return NULL;
23340
1
        }
23341
11.4k
        D(fprintf(stderr, "%*c> invalid_lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param ',' lambda_param"));
23342
11.4k
        Token * _literal;
23343
11.4k
        Token * _literal_1;
23344
11.4k
        arg_ty a;
23345
11.4k
        arg_ty lambda_param_var;
23346
11.4k
        if (
23347
11.4k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
23348
11.4k
            &&
23349
11.4k
            (lambda_param_var = lambda_param_rule(p))  // lambda_param
23350
11.4k
            &&
23351
11.4k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
23352
11.4k
            &&
23353
11.4k
            (a = lambda_param_rule(p))  // lambda_param
23354
11.4k
        )
23355
2
        {
23356
2
            D(fprintf(stderr, "%*c+ invalid_lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' lambda_param ',' lambda_param"));
23357
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "parameters cannot follow var-keyword parameter" );
23358
2
            if (_res == NULL && PyErr_Occurred()) {
23359
2
                p->error_indicator = 1;
23360
2
                p->level--;
23361
2
                return NULL;
23362
2
            }
23363
0
            goto done;
23364
2
        }
23365
11.4k
        p->mark = _mark;
23366
11.4k
        D(fprintf(stderr, "%*c%s invalid_lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
23367
11.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param ',' lambda_param"));
23368
11.4k
    }
23369
0
    { // '**' lambda_param ',' ('*' | '**' | '/')
23370
11.4k
        if (p->error_indicator) {
23371
1
            p->level--;
23372
1
            return NULL;
23373
1
        }
23374
11.4k
        D(fprintf(stderr, "%*c> invalid_lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param ',' ('*' | '**' | '/')"));
23375
11.4k
        Token * _literal;
23376
11.4k
        Token * _literal_1;
23377
11.4k
        Token* a;
23378
11.4k
        arg_ty lambda_param_var;
23379
11.4k
        if (
23380
11.4k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
23381
11.4k
            &&
23382
11.4k
            (lambda_param_var = lambda_param_rule(p))  // lambda_param
23383
11.4k
            &&
23384
11.4k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
23385
11.4k
            &&
23386
11.4k
            (a = (Token*)_tmp_127_rule(p))  // '*' | '**' | '/'
23387
11.4k
        )
23388
2
        {
23389
2
            D(fprintf(stderr, "%*c+ invalid_lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' lambda_param ',' ('*' | '**' | '/')"));
23390
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "parameters cannot follow var-keyword parameter" );
23391
2
            if (_res == NULL && PyErr_Occurred()) {
23392
2
                p->error_indicator = 1;
23393
2
                p->level--;
23394
2
                return NULL;
23395
2
            }
23396
0
            goto done;
23397
2
        }
23398
11.4k
        p->mark = _mark;
23399
11.4k
        D(fprintf(stderr, "%*c%s invalid_lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
23400
11.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param ',' ('*' | '**' | '/')"));
23401
11.4k
    }
23402
0
    _res = NULL;
23403
11.4k
  done:
23404
11.4k
    p->level--;
23405
11.4k
    return _res;
23406
11.4k
}
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
3.31k
{
23412
3.31k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23413
0
        _Pypegen_stack_overflow(p);
23414
0
    }
23415
3.31k
    if (p->error_indicator) {
23416
0
        p->level--;
23417
0
        return NULL;
23418
0
    }
23419
3.31k
    void * _res = NULL;
23420
3.31k
    int _mark = p->mark;
23421
3.31k
    { // TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
23422
3.31k
        if (p->error_indicator) {
23423
0
            p->level--;
23424
0
            return NULL;
23425
0
        }
23426
3.31k
        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
3.31k
        Token * indent_var;
23428
3.31k
        Token * newline_var;
23429
3.31k
        Token * newline_var_1;
23430
3.31k
        Token * type_comment_var;
23431
3.31k
        Token * type_comment_var_1;
23432
3.31k
        if (
23433
3.31k
            (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
23434
3.31k
            &&
23435
3.31k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23436
3.31k
            &&
23437
3.31k
            (type_comment_var_1 = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
23438
3.31k
            &&
23439
3.31k
            (newline_var_1 = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23440
3.31k
            &&
23441
3.31k
            (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
23442
3.31k
        )
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
3.31k
        p->mark = _mark;
23454
3.31k
        D(fprintf(stderr, "%*c%s invalid_double_type_comments[%d-%d]: %s failed!\n", p->level, ' ',
23455
3.31k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT"));
23456
3.31k
    }
23457
0
    _res = NULL;
23458
3.31k
  done:
23459
3.31k
    p->level--;
23460
3.31k
    return _res;
23461
3.31k
}
23462
23463
// invalid_with_item: expression 'as' expression &(',' | ')' | ':')
23464
static void *
23465
invalid_with_item_rule(Parser *p)
23466
12.9k
{
23467
12.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23468
0
        _Pypegen_stack_overflow(p);
23469
0
    }
23470
12.9k
    if (p->error_indicator) {
23471
0
        p->level--;
23472
0
        return NULL;
23473
0
    }
23474
12.9k
    void * _res = NULL;
23475
12.9k
    int _mark = p->mark;
23476
12.9k
    { // expression 'as' expression &(',' | ')' | ':')
23477
12.9k
        if (p->error_indicator) {
23478
0
            p->level--;
23479
0
            return NULL;
23480
0
        }
23481
12.9k
        D(fprintf(stderr, "%*c> invalid_with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')"));
23482
12.9k
        Token * _keyword;
23483
12.9k
        expr_ty a;
23484
12.9k
        expr_ty expression_var;
23485
12.9k
        if (
23486
12.9k
            (expression_var = expression_rule(p))  // expression
23487
12.9k
            &&
23488
12.9k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
23489
12.9k
            &&
23490
12.9k
            (a = expression_rule(p))  // expression
23491
12.9k
            &&
23492
12.9k
            _PyPegen_lookahead(1, _tmp_35_rule, p)
23493
12.9k
        )
23494
2
        {
23495
2
            D(fprintf(stderr, "%*c+ invalid_with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')"));
23496
2
            _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( STAR_TARGETS , a );
23497
2
            if (_res == NULL && PyErr_Occurred()) {
23498
2
                p->error_indicator = 1;
23499
2
                p->level--;
23500
2
                return NULL;
23501
2
            }
23502
0
            goto done;
23503
2
        }
23504
12.9k
        p->mark = _mark;
23505
12.9k
        D(fprintf(stderr, "%*c%s invalid_with_item[%d-%d]: %s failed!\n", p->level, ' ',
23506
12.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')"));
23507
12.9k
    }
23508
0
    _res = NULL;
23509
12.9k
  done:
23510
12.9k
    p->level--;
23511
12.9k
    return _res;
23512
12.9k
}
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
50.7k
{
23518
50.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23519
0
        _Pypegen_stack_overflow(p);
23520
0
    }
23521
50.7k
    if (p->error_indicator) {
23522
0
        p->level--;
23523
0
        return NULL;
23524
0
    }
23525
50.7k
    void * _res = NULL;
23526
50.7k
    int _mark = p->mark;
23527
50.7k
    { // 'async'? 'for' (bitwise_or ((',' bitwise_or))* ','?) !'in'
23528
50.7k
        if (p->error_indicator) {
23529
0
            p->level--;
23530
0
            return NULL;
23531
0
        }
23532
50.7k
        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
50.7k
        Token * _keyword;
23534
50.7k
        void *_opt_var;
23535
50.7k
        UNUSED(_opt_var); // Silence compiler warnings
23536
50.7k
        void *_tmp_134_var;
23537
50.7k
        if (
23538
50.7k
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
23539
50.7k
            &&
23540
50.7k
            (_keyword = _PyPegen_expect_token(p, 699))  // token='for'
23541
50.7k
            &&
23542
50.7k
            (_tmp_134_var = _tmp_134_rule(p))  // bitwise_or ((',' bitwise_or))* ','?
23543
50.7k
            &&
23544
50.7k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 700)  // token='in'
23545
50.7k
        )
23546
49
        {
23547
49
            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
49
            _res = RAISE_SYNTAX_ERROR ( "'in' expected after for-loop variables" );
23549
49
            if (_res == NULL && PyErr_Occurred()) {
23550
49
                p->error_indicator = 1;
23551
49
                p->level--;
23552
49
                return NULL;
23553
49
            }
23554
0
            goto done;
23555
49
        }
23556
50.6k
        p->mark = _mark;
23557
50.6k
        D(fprintf(stderr, "%*c%s invalid_for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
23558
50.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'for' (bitwise_or ((',' bitwise_or))* ','?) !'in'"));
23559
50.6k
    }
23560
0
    _res = NULL;
23561
50.6k
  done:
23562
50.6k
    p->level--;
23563
50.6k
    return _res;
23564
50.6k
}
23565
23566
// invalid_for_target: 'async'? 'for' star_expressions
23567
static void *
23568
invalid_for_target_rule(Parser *p)
23569
50.5k
{
23570
50.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23571
0
        _Pypegen_stack_overflow(p);
23572
0
    }
23573
50.5k
    if (p->error_indicator) {
23574
0
        p->level--;
23575
0
        return NULL;
23576
0
    }
23577
50.5k
    void * _res = NULL;
23578
50.5k
    int _mark = p->mark;
23579
50.5k
    { // 'async'? 'for' star_expressions
23580
50.5k
        if (p->error_indicator) {
23581
0
            p->level--;
23582
0
            return NULL;
23583
0
        }
23584
50.5k
        D(fprintf(stderr, "%*c> invalid_for_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'? 'for' star_expressions"));
23585
50.5k
        Token * _keyword;
23586
50.5k
        void *_opt_var;
23587
50.5k
        UNUSED(_opt_var); // Silence compiler warnings
23588
50.5k
        expr_ty a;
23589
50.5k
        if (
23590
50.5k
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
23591
50.5k
            &&
23592
50.5k
            (_keyword = _PyPegen_expect_token(p, 699))  // token='for'
23593
50.5k
            &&
23594
50.5k
            (a = star_expressions_rule(p))  // star_expressions
23595
50.5k
        )
23596
1.30k
        {
23597
1.30k
            D(fprintf(stderr, "%*c+ invalid_for_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'? 'for' star_expressions"));
23598
1.30k
            _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( FOR_TARGETS , a );
23599
1.30k
            if (_res == NULL && PyErr_Occurred()) {
23600
7
                p->error_indicator = 1;
23601
7
                p->level--;
23602
7
                return NULL;
23603
7
            }
23604
1.30k
            goto done;
23605
1.30k
        }
23606
49.1k
        p->mark = _mark;
23607
49.1k
        D(fprintf(stderr, "%*c%s invalid_for_target[%d-%d]: %s failed!\n", p->level, ' ',
23608
49.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'for' star_expressions"));
23609
49.1k
    }
23610
0
    _res = NULL;
23611
50.4k
  done:
23612
50.4k
    p->level--;
23613
50.4k
    return _res;
23614
49.1k
}
23615
23616
// invalid_group: '(' starred_expression ')' | '(' '**' expression ')'
23617
static void *
23618
invalid_group_rule(Parser *p)
23619
11.9k
{
23620
11.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23621
0
        _Pypegen_stack_overflow(p);
23622
0
    }
23623
11.9k
    if (p->error_indicator) {
23624
0
        p->level--;
23625
0
        return NULL;
23626
0
    }
23627
11.9k
    void * _res = NULL;
23628
11.9k
    int _mark = p->mark;
23629
11.9k
    { // '(' starred_expression ')'
23630
11.9k
        if (p->error_indicator) {
23631
0
            p->level--;
23632
0
            return NULL;
23633
0
        }
23634
11.9k
        D(fprintf(stderr, "%*c> invalid_group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' starred_expression ')'"));
23635
11.9k
        Token * _literal;
23636
11.9k
        Token * _literal_1;
23637
11.9k
        expr_ty a;
23638
11.9k
        if (
23639
11.9k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
23640
11.9k
            &&
23641
11.9k
            (a = starred_expression_rule(p))  // starred_expression
23642
11.9k
            &&
23643
11.9k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
23644
11.9k
        )
23645
3
        {
23646
3
            D(fprintf(stderr, "%*c+ invalid_group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' starred_expression ')'"));
23647
3
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use starred expression here" );
23648
3
            if (_res == NULL && PyErr_Occurred()) {
23649
3
                p->error_indicator = 1;
23650
3
                p->level--;
23651
3
                return NULL;
23652
3
            }
23653
0
            goto done;
23654
3
        }
23655
11.9k
        p->mark = _mark;
23656
11.9k
        D(fprintf(stderr, "%*c%s invalid_group[%d-%d]: %s failed!\n", p->level, ' ',
23657
11.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' starred_expression ')'"));
23658
11.9k
    }
23659
0
    { // '(' '**' expression ')'
23660
11.9k
        if (p->error_indicator) {
23661
100
            p->level--;
23662
100
            return NULL;
23663
100
        }
23664
11.8k
        D(fprintf(stderr, "%*c> invalid_group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' '**' expression ')'"));
23665
11.8k
        Token * _literal;
23666
11.8k
        Token * _literal_1;
23667
11.8k
        Token * a;
23668
11.8k
        expr_ty expression_var;
23669
11.8k
        if (
23670
11.8k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
23671
11.8k
            &&
23672
11.8k
            (a = _PyPegen_expect_token(p, 35))  // token='**'
23673
11.8k
            &&
23674
11.8k
            (expression_var = expression_rule(p))  // expression
23675
11.8k
            &&
23676
11.8k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
23677
11.8k
        )
23678
1
        {
23679
1
            D(fprintf(stderr, "%*c+ invalid_group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' '**' expression ')'"));
23680
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use double starred expression here" );
23681
1
            if (_res == NULL && PyErr_Occurred()) {
23682
1
                p->error_indicator = 1;
23683
1
                p->level--;
23684
1
                return NULL;
23685
1
            }
23686
0
            goto done;
23687
1
        }
23688
11.8k
        p->mark = _mark;
23689
11.8k
        D(fprintf(stderr, "%*c%s invalid_group[%d-%d]: %s failed!\n", p->level, ' ',
23690
11.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' '**' expression ')'"));
23691
11.8k
    }
23692
0
    _res = NULL;
23693
11.8k
  done:
23694
11.8k
    p->level--;
23695
11.8k
    return _res;
23696
11.8k
}
23697
23698
// invalid_import: 'import' ','.dotted_name+ 'from' dotted_name | 'import' NEWLINE
23699
static void *
23700
invalid_import_rule(Parser *p)
23701
3.21k
{
23702
3.21k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23703
0
        _Pypegen_stack_overflow(p);
23704
0
    }
23705
3.21k
    if (p->error_indicator) {
23706
0
        p->level--;
23707
0
        return NULL;
23708
0
    }
23709
3.21k
    void * _res = NULL;
23710
3.21k
    int _mark = p->mark;
23711
3.21k
    { // 'import' ','.dotted_name+ 'from' dotted_name
23712
3.21k
        if (p->error_indicator) {
23713
0
            p->level--;
23714
0
            return NULL;
23715
0
        }
23716
3.21k
        D(fprintf(stderr, "%*c> invalid_import[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import' ','.dotted_name+ 'from' dotted_name"));
23717
3.21k
        asdl_seq * _gather_136_var;
23718
3.21k
        Token * _keyword;
23719
3.21k
        Token * a;
23720
3.21k
        expr_ty dotted_name_var;
23721
3.21k
        if (
23722
3.21k
            (a = _PyPegen_expect_token(p, 639))  // token='import'
23723
3.21k
            &&
23724
3.21k
            (_gather_136_var = _gather_136_rule(p))  // ','.dotted_name+
23725
3.21k
            &&
23726
3.21k
            (_keyword = _PyPegen_expect_token(p, 638))  // token='from'
23727
3.21k
            &&
23728
3.21k
            (dotted_name_var = dotted_name_rule(p))  // dotted_name
23729
3.21k
        )
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
3.20k
        p->mark = _mark;
23741
3.20k
        D(fprintf(stderr, "%*c%s invalid_import[%d-%d]: %s failed!\n", p->level, ' ',
23742
3.20k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import' ','.dotted_name+ 'from' dotted_name"));
23743
3.20k
    }
23744
0
    { // 'import' NEWLINE
23745
3.20k
        if (p->error_indicator) {
23746
1
            p->level--;
23747
1
            return NULL;
23748
1
        }
23749
3.20k
        D(fprintf(stderr, "%*c> invalid_import[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import' NEWLINE"));
23750
3.20k
        Token * _keyword;
23751
3.20k
        Token * token;
23752
3.20k
        if (
23753
3.20k
            (_keyword = _PyPegen_expect_token(p, 639))  // token='import'
23754
3.20k
            &&
23755
3.20k
            (token = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23756
3.20k
        )
23757
2
        {
23758
2
            D(fprintf(stderr, "%*c+ invalid_import[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import' NEWLINE"));
23759
2
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( token , "Expected one or more names after 'import'" );
23760
2
            if (_res == NULL && PyErr_Occurred()) {
23761
2
                p->error_indicator = 1;
23762
2
                p->level--;
23763
2
                return NULL;
23764
2
            }
23765
0
            goto done;
23766
2
        }
23767
3.20k
        p->mark = _mark;
23768
3.20k
        D(fprintf(stderr, "%*c%s invalid_import[%d-%d]: %s failed!\n", p->level, ' ',
23769
3.20k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import' NEWLINE"));
23770
3.20k
    }
23771
0
    _res = NULL;
23772
3.20k
  done:
23773
3.20k
    p->level--;
23774
3.20k
    return _res;
23775
3.20k
}
23776
23777
// invalid_dotted_as_name: dotted_name 'as' !(NAME (',' | ')' | NEWLINE)) expression
23778
static void *
23779
invalid_dotted_as_name_rule(Parser *p)
23780
6.05k
{
23781
6.05k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23782
0
        _Pypegen_stack_overflow(p);
23783
0
    }
23784
6.05k
    if (p->error_indicator) {
23785
0
        p->level--;
23786
0
        return NULL;
23787
0
    }
23788
6.05k
    void * _res = NULL;
23789
6.05k
    int _mark = p->mark;
23790
6.05k
    { // dotted_name 'as' !(NAME (',' | ')' | NEWLINE)) expression
23791
6.05k
        if (p->error_indicator) {
23792
0
            p->level--;
23793
0
            return NULL;
23794
0
        }
23795
6.05k
        D(fprintf(stderr, "%*c> invalid_dotted_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name 'as' !(NAME (',' | ')' | NEWLINE)) expression"));
23796
6.05k
        Token * _keyword;
23797
6.05k
        expr_ty a;
23798
6.05k
        expr_ty dotted_name_var;
23799
6.05k
        if (
23800
6.05k
            (dotted_name_var = dotted_name_rule(p))  // dotted_name
23801
6.05k
            &&
23802
6.05k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
23803
6.05k
            &&
23804
6.05k
            _PyPegen_lookahead(0, _tmp_137_rule, p)
23805
6.05k
            &&
23806
6.05k
            (a = expression_rule(p))  // expression
23807
6.05k
        )
23808
4
        {
23809
4
            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
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use %s as import target" , _PyPegen_get_expr_name ( a ) );
23811
4
            if (_res == NULL && PyErr_Occurred()) {
23812
4
                p->error_indicator = 1;
23813
4
                p->level--;
23814
4
                return NULL;
23815
4
            }
23816
0
            goto done;
23817
4
        }
23818
6.04k
        p->mark = _mark;
23819
6.04k
        D(fprintf(stderr, "%*c%s invalid_dotted_as_name[%d-%d]: %s failed!\n", p->level, ' ',
23820
6.04k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name 'as' !(NAME (',' | ')' | NEWLINE)) expression"));
23821
6.04k
    }
23822
0
    _res = NULL;
23823
6.04k
  done:
23824
6.04k
    p->level--;
23825
6.04k
    return _res;
23826
6.04k
}
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.45k
{
23832
2.45k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23833
0
        _Pypegen_stack_overflow(p);
23834
0
    }
23835
2.45k
    if (p->error_indicator) {
23836
0
        p->level--;
23837
0
        return NULL;
23838
0
    }
23839
2.45k
    void * _res = NULL;
23840
2.45k
    int _mark = p->mark;
23841
2.45k
    { // NAME 'as' !(NAME (',' | ')' | NEWLINE)) expression
23842
2.45k
        if (p->error_indicator) {
23843
0
            p->level--;
23844
0
            return NULL;
23845
0
        }
23846
2.45k
        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.45k
        Token * _keyword;
23848
2.45k
        expr_ty a;
23849
2.45k
        expr_ty name_var;
23850
2.45k
        if (
23851
2.45k
            (name_var = _PyPegen_name_token(p))  // NAME
23852
2.45k
            &&
23853
2.45k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
23854
2.45k
            &&
23855
2.45k
            _PyPegen_lookahead(0, _tmp_137_rule, p)
23856
2.45k
            &&
23857
2.45k
            (a = expression_rule(p))  // expression
23858
2.45k
        )
23859
2
        {
23860
2
            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
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use %s as import target" , _PyPegen_get_expr_name ( a ) );
23862
2
            if (_res == NULL && PyErr_Occurred()) {
23863
2
                p->error_indicator = 1;
23864
2
                p->level--;
23865
2
                return NULL;
23866
2
            }
23867
0
            goto done;
23868
2
        }
23869
2.45k
        p->mark = _mark;
23870
2.45k
        D(fprintf(stderr, "%*c%s invalid_import_from_as_name[%d-%d]: %s failed!\n", p->level, ' ',
23871
2.45k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME 'as' !(NAME (',' | ')' | NEWLINE)) expression"));
23872
2.45k
    }
23873
0
    _res = NULL;
23874
2.45k
  done:
23875
2.45k
    p->level--;
23876
2.45k
    return _res;
23877
2.45k
}
23878
23879
// invalid_import_from_targets: import_from_as_names ',' NEWLINE | NEWLINE
23880
static void *
23881
invalid_import_from_targets_rule(Parser *p)
23882
18
{
23883
18
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23884
0
        _Pypegen_stack_overflow(p);
23885
0
    }
23886
18
    if (p->error_indicator) {
23887
0
        p->level--;
23888
0
        return NULL;
23889
0
    }
23890
18
    void * _res = NULL;
23891
18
    int _mark = p->mark;
23892
18
    { // import_from_as_names ',' NEWLINE
23893
18
        if (p->error_indicator) {
23894
0
            p->level--;
23895
0
            return NULL;
23896
0
        }
23897
18
        D(fprintf(stderr, "%*c> invalid_import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_names ',' NEWLINE"));
23898
18
        Token * _literal;
23899
18
        asdl_alias_seq* import_from_as_names_var;
23900
18
        Token * newline_var;
23901
18
        if (
23902
18
            (import_from_as_names_var = import_from_as_names_rule(p))  // import_from_as_names
23903
18
            &&
23904
18
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
23905
18
            &&
23906
18
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23907
18
        )
23908
3
        {
23909
3
            D(fprintf(stderr, "%*c+ invalid_import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_names ',' NEWLINE"));
23910
3
            _res = RAISE_SYNTAX_ERROR ( "trailing comma not allowed without surrounding parentheses" );
23911
3
            if (_res == NULL && PyErr_Occurred()) {
23912
3
                p->error_indicator = 1;
23913
3
                p->level--;
23914
3
                return NULL;
23915
3
            }
23916
0
            goto done;
23917
3
        }
23918
15
        p->mark = _mark;
23919
15
        D(fprintf(stderr, "%*c%s invalid_import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
23920
15
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_names ',' NEWLINE"));
23921
15
    }
23922
0
    { // NEWLINE
23923
15
        if (p->error_indicator) {
23924
0
            p->level--;
23925
0
            return NULL;
23926
0
        }
23927
15
        D(fprintf(stderr, "%*c> invalid_import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
23928
15
        Token * token;
23929
15
        if (
23930
15
            (token = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23931
15
        )
23932
3
        {
23933
3
            D(fprintf(stderr, "%*c+ invalid_import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
23934
3
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( token , "Expected one or more names after 'import'" );
23935
3
            if (_res == NULL && PyErr_Occurred()) {
23936
3
                p->error_indicator = 1;
23937
3
                p->level--;
23938
3
                return NULL;
23939
3
            }
23940
0
            goto done;
23941
3
        }
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
754
{
23958
754
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23959
0
        _Pypegen_stack_overflow(p);
23960
0
    }
23961
754
    if (p->error_indicator) {
23962
0
        p->level--;
23963
0
        return NULL;
23964
0
    }
23965
754
    void * _res = NULL;
23966
754
    int _mark = p->mark;
23967
754
    { // 'async'? 'with' ','.(expression ['as' star_target])+ NEWLINE
23968
754
        if (p->error_indicator) {
23969
0
            p->level--;
23970
0
            return NULL;
23971
0
        }
23972
754
        D(fprintf(stderr, "%*c> invalid_with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'? 'with' ','.(expression ['as' star_target])+ NEWLINE"));
23973
754
        asdl_seq * _gather_139_var;
23974
754
        Token * _keyword;
23975
754
        void *_opt_var;
23976
754
        UNUSED(_opt_var); // Silence compiler warnings
23977
754
        Token * newline_var;
23978
754
        if (
23979
754
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
23980
754
            &&
23981
754
            (_keyword = _PyPegen_expect_token(p, 652))  // token='with'
23982
754
            &&
23983
754
            (_gather_139_var = _gather_139_rule(p))  // ','.(expression ['as' star_target])+
23984
754
            &&
23985
754
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23986
754
        )
23987
25
        {
23988
25
            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
25
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
23990
25
            if (_res == NULL && PyErr_Occurred()) {
23991
25
                p->error_indicator = 1;
23992
25
                p->level--;
23993
25
                return NULL;
23994
25
            }
23995
0
            goto done;
23996
25
        }
23997
729
        p->mark = _mark;
23998
729
        D(fprintf(stderr, "%*c%s invalid_with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
23999
729
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'with' ','.(expression ['as' star_target])+ NEWLINE"));
24000
729
    }
24001
0
    { // 'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE
24002
729
        if (p->error_indicator) {
24003
0
            p->level--;
24004
0
            return NULL;
24005
0
        }
24006
729
        D(fprintf(stderr, "%*c> invalid_with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE"));
24007
729
        asdl_seq * _gather_141_var;
24008
729
        Token * _keyword;
24009
729
        Token * _literal;
24010
729
        Token * _literal_1;
24011
729
        void *_opt_var;
24012
729
        UNUSED(_opt_var); // Silence compiler warnings
24013
729
        void *_opt_var_1;
24014
729
        UNUSED(_opt_var_1); // Silence compiler warnings
24015
729
        Token * newline_var;
24016
729
        if (
24017
729
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
24018
729
            &&
24019
729
            (_keyword = _PyPegen_expect_token(p, 652))  // token='with'
24020
729
            &&
24021
729
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
24022
729
            &&
24023
729
            (_gather_141_var = _gather_141_rule(p))  // ','.(expressions ['as' star_target])+
24024
729
            &&
24025
729
            (_opt_var_1 = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
24026
729
            &&
24027
729
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
24028
729
            &&
24029
729
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24030
729
        )
24031
1
        {
24032
1
            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
1
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
24034
1
            if (_res == NULL && PyErr_Occurred()) {
24035
1
                p->error_indicator = 1;
24036
1
                p->level--;
24037
1
                return NULL;
24038
1
            }
24039
0
            goto done;
24040
1
        }
24041
728
        p->mark = _mark;
24042
728
        D(fprintf(stderr, "%*c%s invalid_with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24043
728
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE"));
24044
728
    }
24045
0
    _res = NULL;
24046
728
  done:
24047
728
    p->level--;
24048
728
    return _res;
24049
728
}
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
3.55k
{
24057
3.55k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24058
0
        _Pypegen_stack_overflow(p);
24059
0
    }
24060
3.55k
    if (p->error_indicator) {
24061
0
        p->level--;
24062
0
        return NULL;
24063
0
    }
24064
3.55k
    void * _res = NULL;
24065
3.55k
    int _mark = p->mark;
24066
3.55k
    { // 'async'? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT
24067
3.55k
        if (p->error_indicator) {
24068
0
            p->level--;
24069
0
            return NULL;
24070
0
        }
24071
3.55k
        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
3.55k
        asdl_seq * _gather_139_var;
24073
3.55k
        Token * _literal;
24074
3.55k
        void *_opt_var;
24075
3.55k
        UNUSED(_opt_var); // Silence compiler warnings
24076
3.55k
        Token * a;
24077
3.55k
        Token * newline_var;
24078
3.55k
        if (
24079
3.55k
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
24080
3.55k
            &&
24081
3.55k
            (a = _PyPegen_expect_token(p, 652))  // token='with'
24082
3.55k
            &&
24083
3.55k
            (_gather_139_var = _gather_139_rule(p))  // ','.(expression ['as' star_target])+
24084
3.55k
            &&
24085
3.55k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24086
3.55k
            &&
24087
3.55k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24088
3.55k
            &&
24089
3.55k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24090
3.55k
        )
24091
14
        {
24092
14
            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
14
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'with' statement on line %d" , a -> lineno );
24094
14
            if (_res == NULL && PyErr_Occurred()) {
24095
14
                p->error_indicator = 1;
24096
14
                p->level--;
24097
14
                return NULL;
24098
14
            }
24099
0
            goto done;
24100
14
        }
24101
3.54k
        p->mark = _mark;
24102
3.54k
        D(fprintf(stderr, "%*c%s invalid_with_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
24103
3.54k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT"));
24104
3.54k
    }
24105
0
    { // 'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT
24106
3.54k
        if (p->error_indicator) {
24107
13
            p->level--;
24108
13
            return NULL;
24109
13
        }
24110
3.52k
        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
3.52k
        asdl_seq * _gather_141_var;
24112
3.52k
        Token * _literal;
24113
3.52k
        Token * _literal_1;
24114
3.52k
        Token * _literal_2;
24115
3.52k
        void *_opt_var;
24116
3.52k
        UNUSED(_opt_var); // Silence compiler warnings
24117
3.52k
        void *_opt_var_1;
24118
3.52k
        UNUSED(_opt_var_1); // Silence compiler warnings
24119
3.52k
        Token * a;
24120
3.52k
        Token * newline_var;
24121
3.52k
        if (
24122
3.52k
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
24123
3.52k
            &&
24124
3.52k
            (a = _PyPegen_expect_token(p, 652))  // token='with'
24125
3.52k
            &&
24126
3.52k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
24127
3.52k
            &&
24128
3.52k
            (_gather_141_var = _gather_141_rule(p))  // ','.(expressions ['as' star_target])+
24129
3.52k
            &&
24130
3.52k
            (_opt_var_1 = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
24131
3.52k
            &&
24132
3.52k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
24133
3.52k
            &&
24134
3.52k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
24135
3.52k
            &&
24136
3.52k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24137
3.52k
            &&
24138
3.52k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24139
3.52k
        )
24140
4
        {
24141
4
            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
4
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'with' statement on line %d" , a -> lineno );
24143
4
            if (_res == NULL && PyErr_Occurred()) {
24144
4
                p->error_indicator = 1;
24145
4
                p->level--;
24146
4
                return NULL;
24147
4
            }
24148
0
            goto done;
24149
4
        }
24150
3.52k
        p->mark = _mark;
24151
3.52k
        D(fprintf(stderr, "%*c%s invalid_with_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
24152
3.52k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT"));
24153
3.52k
    }
24154
0
    _res = NULL;
24155
3.52k
  done:
24156
3.52k
    p->level--;
24157
3.52k
    return _res;
24158
3.52k
}
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
2.36k
{
24168
2.36k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24169
0
        _Pypegen_stack_overflow(p);
24170
0
    }
24171
2.36k
    if (p->error_indicator) {
24172
0
        p->level--;
24173
0
        return NULL;
24174
0
    }
24175
2.36k
    void * _res = NULL;
24176
2.36k
    int _mark = p->mark;
24177
2.36k
    { // 'try' ':' NEWLINE !INDENT
24178
2.36k
        if (p->error_indicator) {
24179
0
            p->level--;
24180
0
            return NULL;
24181
0
        }
24182
2.36k
        D(fprintf(stderr, "%*c> invalid_try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' NEWLINE !INDENT"));
24183
2.36k
        Token * _literal;
24184
2.36k
        Token * a;
24185
2.36k
        Token * newline_var;
24186
2.36k
        if (
24187
2.36k
            (a = _PyPegen_expect_token(p, 661))  // token='try'
24188
2.36k
            &&
24189
2.36k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24190
2.36k
            &&
24191
2.36k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24192
2.36k
            &&
24193
2.36k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24194
2.36k
        )
24195
9
        {
24196
9
            D(fprintf(stderr, "%*c+ invalid_try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' NEWLINE !INDENT"));
24197
9
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'try' statement on line %d" , a -> lineno );
24198
9
            if (_res == NULL && PyErr_Occurred()) {
24199
9
                p->error_indicator = 1;
24200
9
                p->level--;
24201
9
                return NULL;
24202
9
            }
24203
0
            goto done;
24204
9
        }
24205
2.35k
        p->mark = _mark;
24206
2.35k
        D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24207
2.35k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' NEWLINE !INDENT"));
24208
2.35k
    }
24209
0
    { // 'try' ':' block !('except' | 'finally')
24210
2.35k
        if (p->error_indicator) {
24211
1
            p->level--;
24212
1
            return NULL;
24213
1
        }
24214
2.35k
        D(fprintf(stderr, "%*c> invalid_try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
24215
2.35k
        Token * _keyword;
24216
2.35k
        Token * _literal;
24217
2.35k
        asdl_stmt_seq* block_var;
24218
2.35k
        if (
24219
2.35k
            (_keyword = _PyPegen_expect_token(p, 661))  // token='try'
24220
2.35k
            &&
24221
2.35k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24222
2.35k
            &&
24223
2.35k
            (block_var = block_rule(p))  // block
24224
2.35k
            &&
24225
2.35k
            _PyPegen_lookahead(0, _tmp_142_rule, p)
24226
2.35k
        )
24227
36
        {
24228
36
            D(fprintf(stderr, "%*c+ invalid_try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
24229
36
            _res = RAISE_SYNTAX_ERROR ( "expected 'except' or 'finally' block" );
24230
36
            if (_res == NULL && PyErr_Occurred()) {
24231
36
                p->error_indicator = 1;
24232
36
                p->level--;
24233
36
                return NULL;
24234
36
            }
24235
0
            goto done;
24236
36
        }
24237
2.31k
        p->mark = _mark;
24238
2.31k
        D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24239
2.31k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
24240
2.31k
    }
24241
0
    { // 'try' ':' block* except_block+ 'except' '*' expression ['as' NAME] ':'
24242
2.31k
        if (p->error_indicator) {
24243
19
            p->level--;
24244
19
            return NULL;
24245
19
        }
24246
2.29k
        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
2.29k
        Token * _keyword;
24248
2.29k
        Token * _literal;
24249
2.29k
        Token * _literal_1;
24250
2.29k
        asdl_seq * _loop0_143_var;
24251
2.29k
        asdl_seq * _loop1_36_var;
24252
2.29k
        void *_opt_var;
24253
2.29k
        UNUSED(_opt_var); // Silence compiler warnings
24254
2.29k
        Token * a;
24255
2.29k
        Token * b;
24256
2.29k
        expr_ty expression_var;
24257
2.29k
        if (
24258
2.29k
            (_keyword = _PyPegen_expect_token(p, 661))  // token='try'
24259
2.29k
            &&
24260
2.29k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24261
2.29k
            &&
24262
2.29k
            (_loop0_143_var = _loop0_143_rule(p))  // block*
24263
2.29k
            &&
24264
2.29k
            (_loop1_36_var = _loop1_36_rule(p))  // except_block+
24265
2.29k
            &&
24266
2.29k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24267
2.29k
            &&
24268
2.29k
            (b = _PyPegen_expect_token(p, 16))  // token='*'
24269
2.29k
            &&
24270
2.29k
            (expression_var = expression_rule(p))  // expression
24271
2.29k
            &&
24272
2.29k
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
24273
2.29k
            &&
24274
2.29k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
24275
2.29k
        )
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
2.29k
        p->mark = _mark;
24287
2.29k
        D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24288
2.29k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block* except_block+ 'except' '*' expression ['as' NAME] ':'"));
24289
2.29k
    }
24290
0
    { // 'try' ':' block* except_star_block+ 'except' [expression ['as' NAME]] ':'
24291
2.29k
        if (p->error_indicator) {
24292
42
            p->level--;
24293
42
            return NULL;
24294
42
        }
24295
2.25k
        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
2.25k
        Token * _keyword;
24297
2.25k
        Token * _literal;
24298
2.25k
        Token * _literal_1;
24299
2.25k
        asdl_seq * _loop0_143_var;
24300
2.25k
        asdl_seq * _loop1_37_var;
24301
2.25k
        void *_opt_var;
24302
2.25k
        UNUSED(_opt_var); // Silence compiler warnings
24303
2.25k
        Token * a;
24304
2.25k
        if (
24305
2.25k
            (_keyword = _PyPegen_expect_token(p, 661))  // token='try'
24306
2.25k
            &&
24307
2.25k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24308
2.25k
            &&
24309
2.25k
            (_loop0_143_var = _loop0_143_rule(p))  // block*
24310
2.25k
            &&
24311
2.25k
            (_loop1_37_var = _loop1_37_rule(p))  // except_star_block+
24312
2.25k
            &&
24313
2.25k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24314
2.25k
            &&
24315
2.25k
            (_opt_var = _tmp_144_rule(p), !p->error_indicator)  // [expression ['as' NAME]]
24316
2.25k
            &&
24317
2.25k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
24318
2.25k
        )
24319
1
        {
24320
1
            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
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot have both 'except' and 'except*' on the same 'try'" );
24322
1
            if (_res == NULL && PyErr_Occurred()) {
24323
1
                p->error_indicator = 1;
24324
1
                p->level--;
24325
1
                return NULL;
24326
1
            }
24327
0
            goto done;
24328
1
        }
24329
2.25k
        p->mark = _mark;
24330
2.25k
        D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24331
2.25k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block* except_star_block+ 'except' [expression ['as' NAME]] ':'"));
24332
2.25k
    }
24333
0
    _res = NULL;
24334
2.25k
  done:
24335
2.25k
    p->level--;
24336
2.25k
    return _res;
24337
2.25k
}
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
4.02k
{
24347
4.02k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24348
0
        _Pypegen_stack_overflow(p);
24349
0
    }
24350
4.02k
    if (p->error_indicator) {
24351
0
        p->level--;
24352
0
        return NULL;
24353
0
    }
24354
4.02k
    void * _res = NULL;
24355
4.02k
    int _mark = p->mark;
24356
4.02k
    { // 'except' expression ',' expressions 'as' NAME ':'
24357
4.02k
        if (p->error_indicator) {
24358
0
            p->level--;
24359
0
            return NULL;
24360
0
        }
24361
4.02k
        D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ',' expressions 'as' NAME ':'"));
24362
4.02k
        Token * _keyword;
24363
4.02k
        Token * _keyword_1;
24364
4.02k
        Token * _literal;
24365
4.02k
        Token * _literal_1;
24366
4.02k
        expr_ty a;
24367
4.02k
        expr_ty expressions_var;
24368
4.02k
        expr_ty name_var;
24369
4.02k
        if (
24370
4.02k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
24371
4.02k
            &&
24372
4.02k
            (a = expression_rule(p))  // expression
24373
4.02k
            &&
24374
4.02k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
24375
4.02k
            &&
24376
4.02k
            (expressions_var = expressions_rule(p))  // expressions
24377
4.02k
            &&
24378
4.02k
            (_keyword_1 = _PyPegen_expect_token(p, 685))  // token='as'
24379
4.02k
            &&
24380
4.02k
            (name_var = _PyPegen_name_token(p))  // NAME
24381
4.02k
            &&
24382
4.02k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
24383
4.02k
        )
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
4.01k
        p->mark = _mark;
24395
4.01k
        D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24396
4.01k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ',' expressions 'as' NAME ':'"));
24397
4.01k
    }
24398
0
    { // 'except' expression ['as' NAME] NEWLINE
24399
4.01k
        if (p->error_indicator) {
24400
1
            p->level--;
24401
1
            return NULL;
24402
1
        }
24403
4.01k
        D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] NEWLINE"));
24404
4.01k
        void *_opt_var;
24405
4.01k
        UNUSED(_opt_var); // Silence compiler warnings
24406
4.01k
        Token * a;
24407
4.01k
        expr_ty expression_var;
24408
4.01k
        Token * newline_var;
24409
4.01k
        if (
24410
4.01k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24411
4.01k
            &&
24412
4.01k
            (expression_var = expression_rule(p))  // expression
24413
4.01k
            &&
24414
4.01k
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
24415
4.01k
            &&
24416
4.01k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24417
4.01k
        )
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
4.01k
        p->mark = _mark;
24429
4.01k
        D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24430
4.01k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ['as' NAME] NEWLINE"));
24431
4.01k
    }
24432
0
    { // 'except' NEWLINE
24433
4.01k
        if (p->error_indicator) {
24434
0
            p->level--;
24435
0
            return NULL;
24436
0
        }
24437
4.01k
        D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' NEWLINE"));
24438
4.01k
        Token * a;
24439
4.01k
        Token * newline_var;
24440
4.01k
        if (
24441
4.01k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24442
4.01k
            &&
24443
4.01k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24444
4.01k
        )
24445
2
        {
24446
2
            D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' NEWLINE"));
24447
2
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
24448
2
            if (_res == NULL && PyErr_Occurred()) {
24449
2
                p->error_indicator = 1;
24450
2
                p->level--;
24451
2
                return NULL;
24452
2
            }
24453
0
            goto done;
24454
2
        }
24455
4.01k
        p->mark = _mark;
24456
4.01k
        D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24457
4.01k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' NEWLINE"));
24458
4.01k
    }
24459
0
    { // 'except' expression 'as' expression ':' block
24460
4.01k
        if (p->error_indicator) {
24461
0
            p->level--;
24462
0
            return NULL;
24463
0
        }
24464
4.01k
        D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression 'as' expression ':' block"));
24465
4.01k
        Token * _keyword;
24466
4.01k
        Token * _keyword_1;
24467
4.01k
        Token * _literal;
24468
4.01k
        expr_ty a;
24469
4.01k
        asdl_stmt_seq* block_var;
24470
4.01k
        expr_ty expression_var;
24471
4.01k
        if (
24472
4.01k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
24473
4.01k
            &&
24474
4.01k
            (expression_var = expression_rule(p))  // expression
24475
4.01k
            &&
24476
4.01k
            (_keyword_1 = _PyPegen_expect_token(p, 685))  // token='as'
24477
4.01k
            &&
24478
4.01k
            (a = expression_rule(p))  // expression
24479
4.01k
            &&
24480
4.01k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24481
4.01k
            &&
24482
4.01k
            (block_var = block_rule(p))  // block
24483
4.01k
        )
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
4.01k
        p->mark = _mark;
24495
4.01k
        D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24496
4.01k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression 'as' expression ':' block"));
24497
4.01k
    }
24498
0
    _res = NULL;
24499
4.01k
  done:
24500
4.01k
    p->level--;
24501
4.01k
    return _res;
24502
4.01k
}
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
3.37k
{
24512
3.37k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24513
0
        _Pypegen_stack_overflow(p);
24514
0
    }
24515
3.37k
    if (p->error_indicator) {
24516
0
        p->level--;
24517
0
        return NULL;
24518
0
    }
24519
3.37k
    void * _res = NULL;
24520
3.37k
    int _mark = p->mark;
24521
3.37k
    { // 'except' '*' expression ',' expressions 'as' NAME ':'
24522
3.37k
        if (p->error_indicator) {
24523
0
            p->level--;
24524
0
            return NULL;
24525
0
        }
24526
3.37k
        D(fprintf(stderr, "%*c> invalid_except_star_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ',' expressions 'as' NAME ':'"));
24527
3.37k
        Token * _keyword;
24528
3.37k
        Token * _keyword_1;
24529
3.37k
        Token * _literal;
24530
3.37k
        Token * _literal_1;
24531
3.37k
        Token * _literal_2;
24532
3.37k
        expr_ty a;
24533
3.37k
        expr_ty expressions_var;
24534
3.37k
        expr_ty name_var;
24535
3.37k
        if (
24536
3.37k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
24537
3.37k
            &&
24538
3.37k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
24539
3.37k
            &&
24540
3.37k
            (a = expression_rule(p))  // expression
24541
3.37k
            &&
24542
3.37k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
24543
3.37k
            &&
24544
3.37k
            (expressions_var = expressions_rule(p))  // expressions
24545
3.37k
            &&
24546
3.37k
            (_keyword_1 = _PyPegen_expect_token(p, 685))  // token='as'
24547
3.37k
            &&
24548
3.37k
            (name_var = _PyPegen_name_token(p))  // NAME
24549
3.37k
            &&
24550
3.37k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
24551
3.37k
        )
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
3.37k
        p->mark = _mark;
24563
3.37k
        D(fprintf(stderr, "%*c%s invalid_except_star_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24564
3.37k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression ',' expressions 'as' NAME ':'"));
24565
3.37k
    }
24566
0
    { // 'except' '*' expression ['as' NAME] NEWLINE
24567
3.37k
        if (p->error_indicator) {
24568
1
            p->level--;
24569
1
            return NULL;
24570
1
        }
24571
3.37k
        D(fprintf(stderr, "%*c> invalid_except_star_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ['as' NAME] NEWLINE"));
24572
3.37k
        Token * _literal;
24573
3.37k
        void *_opt_var;
24574
3.37k
        UNUSED(_opt_var); // Silence compiler warnings
24575
3.37k
        Token * a;
24576
3.37k
        expr_ty expression_var;
24577
3.37k
        Token * newline_var;
24578
3.37k
        if (
24579
3.37k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24580
3.37k
            &&
24581
3.37k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
24582
3.37k
            &&
24583
3.37k
            (expression_var = expression_rule(p))  // expression
24584
3.37k
            &&
24585
3.37k
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
24586
3.37k
            &&
24587
3.37k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24588
3.37k
        )
24589
7
        {
24590
7
            D(fprintf(stderr, "%*c+ invalid_except_star_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ['as' NAME] NEWLINE"));
24591
7
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
24592
7
            if (_res == NULL && PyErr_Occurred()) {
24593
7
                p->error_indicator = 1;
24594
7
                p->level--;
24595
7
                return NULL;
24596
7
            }
24597
0
            goto done;
24598
7
        }
24599
3.36k
        p->mark = _mark;
24600
3.36k
        D(fprintf(stderr, "%*c%s invalid_except_star_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24601
3.36k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression ['as' NAME] NEWLINE"));
24602
3.36k
    }
24603
0
    { // 'except' '*' (NEWLINE | ':')
24604
3.36k
        if (p->error_indicator) {
24605
0
            p->level--;
24606
0
            return NULL;
24607
0
        }
24608
3.36k
        D(fprintf(stderr, "%*c> invalid_except_star_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' (NEWLINE | ':')"));
24609
3.36k
        Token * _literal;
24610
3.36k
        void *_tmp_145_var;
24611
3.36k
        Token * a;
24612
3.36k
        if (
24613
3.36k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24614
3.36k
            &&
24615
3.36k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
24616
3.36k
            &&
24617
3.36k
            (_tmp_145_var = _tmp_145_rule(p))  // NEWLINE | ':'
24618
3.36k
        )
24619
3
        {
24620
3
            D(fprintf(stderr, "%*c+ invalid_except_star_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' (NEWLINE | ':')"));
24621
3
            _res = RAISE_SYNTAX_ERROR ( "expected one or more exception types" );
24622
3
            if (_res == NULL && PyErr_Occurred()) {
24623
3
                p->error_indicator = 1;
24624
3
                p->level--;
24625
3
                return NULL;
24626
3
            }
24627
0
            goto done;
24628
3
        }
24629
3.36k
        p->mark = _mark;
24630
3.36k
        D(fprintf(stderr, "%*c%s invalid_except_star_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24631
3.36k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' (NEWLINE | ':')"));
24632
3.36k
    }
24633
0
    { // 'except' '*' expression 'as' expression ':' block
24634
3.36k
        if (p->error_indicator) {
24635
0
            p->level--;
24636
0
            return NULL;
24637
0
        }
24638
3.36k
        D(fprintf(stderr, "%*c> invalid_except_star_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression 'as' expression ':' block"));
24639
3.36k
        Token * _keyword;
24640
3.36k
        Token * _keyword_1;
24641
3.36k
        Token * _literal;
24642
3.36k
        Token * _literal_1;
24643
3.36k
        expr_ty a;
24644
3.36k
        asdl_stmt_seq* block_var;
24645
3.36k
        expr_ty expression_var;
24646
3.36k
        if (
24647
3.36k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
24648
3.36k
            &&
24649
3.36k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
24650
3.36k
            &&
24651
3.36k
            (expression_var = expression_rule(p))  // expression
24652
3.36k
            &&
24653
3.36k
            (_keyword_1 = _PyPegen_expect_token(p, 685))  // token='as'
24654
3.36k
            &&
24655
3.36k
            (a = expression_rule(p))  // expression
24656
3.36k
            &&
24657
3.36k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
24658
3.36k
            &&
24659
3.36k
            (block_var = block_rule(p))  // block
24660
3.36k
        )
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
3.35k
        p->mark = _mark;
24672
3.35k
        D(fprintf(stderr, "%*c%s invalid_except_star_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24673
3.35k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression 'as' expression ':' block"));
24674
3.35k
    }
24675
0
    _res = NULL;
24676
3.35k
  done:
24677
3.35k
    p->level--;
24678
3.35k
    return _res;
24679
3.35k
}
24680
24681
// invalid_finally_stmt: 'finally' ':' NEWLINE !INDENT
24682
static void *
24683
invalid_finally_stmt_rule(Parser *p)
24684
3.89k
{
24685
3.89k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24686
0
        _Pypegen_stack_overflow(p);
24687
0
    }
24688
3.89k
    if (p->error_indicator) {
24689
0
        p->level--;
24690
0
        return NULL;
24691
0
    }
24692
3.89k
    void * _res = NULL;
24693
3.89k
    int _mark = p->mark;
24694
3.89k
    { // 'finally' ':' NEWLINE !INDENT
24695
3.89k
        if (p->error_indicator) {
24696
0
            p->level--;
24697
0
            return NULL;
24698
0
        }
24699
3.89k
        D(fprintf(stderr, "%*c> invalid_finally_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally' ':' NEWLINE !INDENT"));
24700
3.89k
        Token * _literal;
24701
3.89k
        Token * a;
24702
3.89k
        Token * newline_var;
24703
3.89k
        if (
24704
3.89k
            (a = _PyPegen_expect_token(p, 678))  // token='finally'
24705
3.89k
            &&
24706
3.89k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24707
3.89k
            &&
24708
3.89k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24709
3.89k
            &&
24710
3.89k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24711
3.89k
        )
24712
2
        {
24713
2
            D(fprintf(stderr, "%*c+ invalid_finally_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally' ':' NEWLINE !INDENT"));
24714
2
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'finally' statement on line %d" , a -> lineno );
24715
2
            if (_res == NULL && PyErr_Occurred()) {
24716
2
                p->error_indicator = 1;
24717
2
                p->level--;
24718
2
                return NULL;
24719
2
            }
24720
0
            goto done;
24721
2
        }
24722
3.89k
        p->mark = _mark;
24723
3.89k
        D(fprintf(stderr, "%*c%s invalid_finally_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24724
3.89k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally' ':' NEWLINE !INDENT"));
24725
3.89k
    }
24726
0
    _res = NULL;
24727
3.89k
  done:
24728
3.89k
    p->level--;
24729
3.89k
    return _res;
24730
3.89k
}
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.50k
{
24738
6.50k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24739
0
        _Pypegen_stack_overflow(p);
24740
0
    }
24741
6.50k
    if (p->error_indicator) {
24742
0
        p->level--;
24743
0
        return NULL;
24744
0
    }
24745
6.50k
    void * _res = NULL;
24746
6.50k
    int _mark = p->mark;
24747
6.50k
    { // 'except' expression ['as' NAME] ':' NEWLINE !INDENT
24748
6.50k
        if (p->error_indicator) {
24749
0
            p->level--;
24750
0
            return NULL;
24751
0
        }
24752
6.50k
        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.50k
        Token * _literal;
24754
6.50k
        void *_opt_var;
24755
6.50k
        UNUSED(_opt_var); // Silence compiler warnings
24756
6.50k
        Token * a;
24757
6.50k
        expr_ty expression_var;
24758
6.50k
        Token * newline_var;
24759
6.50k
        if (
24760
6.50k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24761
6.50k
            &&
24762
6.50k
            (expression_var = expression_rule(p))  // expression
24763
6.50k
            &&
24764
6.50k
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
24765
6.50k
            &&
24766
6.50k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24767
6.50k
            &&
24768
6.50k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24769
6.50k
            &&
24770
6.50k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24771
6.50k
        )
24772
2
        {
24773
2
            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
2
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'except' statement on line %d" , a -> lineno );
24775
2
            if (_res == NULL && PyErr_Occurred()) {
24776
2
                p->error_indicator = 1;
24777
2
                p->level--;
24778
2
                return NULL;
24779
2
            }
24780
0
            goto done;
24781
2
        }
24782
6.50k
        p->mark = _mark;
24783
6.50k
        D(fprintf(stderr, "%*c%s invalid_except_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
24784
6.50k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ['as' NAME] ':' NEWLINE !INDENT"));
24785
6.50k
    }
24786
0
    { // 'except' ':' NEWLINE !INDENT
24787
6.50k
        if (p->error_indicator) {
24788
4
            p->level--;
24789
4
            return NULL;
24790
4
        }
24791
6.50k
        D(fprintf(stderr, "%*c> invalid_except_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
24792
6.50k
        Token * _literal;
24793
6.50k
        Token * a;
24794
6.50k
        Token * newline_var;
24795
6.50k
        if (
24796
6.50k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24797
6.50k
            &&
24798
6.50k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24799
6.50k
            &&
24800
6.50k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24801
6.50k
            &&
24802
6.50k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24803
6.50k
        )
24804
2
        {
24805
2
            D(fprintf(stderr, "%*c+ invalid_except_stmt_indent[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
24806
2
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'except' statement on line %d" , a -> lineno );
24807
2
            if (_res == NULL && PyErr_Occurred()) {
24808
2
                p->error_indicator = 1;
24809
2
                p->level--;
24810
2
                return NULL;
24811
2
            }
24812
0
            goto done;
24813
2
        }
24814
6.49k
        p->mark = _mark;
24815
6.49k
        D(fprintf(stderr, "%*c%s invalid_except_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
24816
6.49k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
24817
6.49k
    }
24818
0
    _res = NULL;
24819
6.49k
  done:
24820
6.49k
    p->level--;
24821
6.49k
    return _res;
24822
6.49k
}
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
6.42k
{
24829
6.42k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24830
0
        _Pypegen_stack_overflow(p);
24831
0
    }
24832
6.42k
    if (p->error_indicator) {
24833
0
        p->level--;
24834
0
        return NULL;
24835
0
    }
24836
6.42k
    void * _res = NULL;
24837
6.42k
    int _mark = p->mark;
24838
6.42k
    { // 'except' '*' expression ['as' NAME] ':' NEWLINE !INDENT
24839
6.42k
        if (p->error_indicator) {
24840
0
            p->level--;
24841
0
            return NULL;
24842
0
        }
24843
6.42k
        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
6.42k
        Token * _literal;
24845
6.42k
        Token * _literal_1;
24846
6.42k
        void *_opt_var;
24847
6.42k
        UNUSED(_opt_var); // Silence compiler warnings
24848
6.42k
        Token * a;
24849
6.42k
        expr_ty expression_var;
24850
6.42k
        Token * newline_var;
24851
6.42k
        if (
24852
6.42k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24853
6.42k
            &&
24854
6.42k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
24855
6.42k
            &&
24856
6.42k
            (expression_var = expression_rule(p))  // expression
24857
6.42k
            &&
24858
6.42k
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
24859
6.42k
            &&
24860
6.42k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
24861
6.42k
            &&
24862
6.42k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24863
6.42k
            &&
24864
6.42k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24865
6.42k
        )
24866
1
        {
24867
1
            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
1
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'except*' statement on line %d" , a -> lineno );
24869
1
            if (_res == NULL && PyErr_Occurred()) {
24870
1
                p->error_indicator = 1;
24871
1
                p->level--;
24872
1
                return NULL;
24873
1
            }
24874
0
            goto done;
24875
1
        }
24876
6.42k
        p->mark = _mark;
24877
6.42k
        D(fprintf(stderr, "%*c%s invalid_except_star_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
24878
6.42k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression ['as' NAME] ':' NEWLINE !INDENT"));
24879
6.42k
    }
24880
0
    _res = NULL;
24881
6.42k
  done:
24882
6.42k
    p->level--;
24883
6.42k
    return _res;
24884
6.42k
}
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
34.8k
{
24892
34.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24893
0
        _Pypegen_stack_overflow(p);
24894
0
    }
24895
34.8k
    if (p->error_indicator) {
24896
0
        p->level--;
24897
0
        return NULL;
24898
0
    }
24899
34.8k
    void * _res = NULL;
24900
34.8k
    int _mark = p->mark;
24901
34.8k
    { // "match" subject_expr NEWLINE
24902
34.8k
        if (p->error_indicator) {
24903
0
            p->level--;
24904
0
            return NULL;
24905
0
        }
24906
34.8k
        D(fprintf(stderr, "%*c> invalid_match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr NEWLINE"));
24907
34.8k
        expr_ty _keyword;
24908
34.8k
        Token * newline_var;
24909
34.8k
        expr_ty subject_expr_var;
24910
34.8k
        if (
24911
34.8k
            (_keyword = _PyPegen_expect_soft_keyword(p, "match"))  // soft_keyword='"match"'
24912
34.8k
            &&
24913
34.8k
            (subject_expr_var = subject_expr_rule(p))  // subject_expr
24914
34.8k
            &&
24915
34.8k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24916
34.8k
        )
24917
5
        {
24918
5
            D(fprintf(stderr, "%*c+ invalid_match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr NEWLINE"));
24919
5
            _res = CHECK_VERSION ( void* , 10 , "Pattern matching is" , RAISE_SYNTAX_ERROR ( "expected ':'" ) );
24920
5
            if (_res == NULL && PyErr_Occurred()) {
24921
5
                p->error_indicator = 1;
24922
5
                p->level--;
24923
5
                return NULL;
24924
5
            }
24925
0
            goto done;
24926
5
        }
24927
34.8k
        p->mark = _mark;
24928
34.8k
        D(fprintf(stderr, "%*c%s invalid_match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24929
34.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr NEWLINE"));
24930
34.8k
    }
24931
0
    { // "match" subject_expr ':' NEWLINE !INDENT
24932
34.8k
        if (p->error_indicator) {
24933
0
            p->level--;
24934
0
            return NULL;
24935
0
        }
24936
34.8k
        D(fprintf(stderr, "%*c> invalid_match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE !INDENT"));
24937
34.8k
        Token * _literal;
24938
34.8k
        expr_ty a;
24939
34.8k
        Token * newline_var;
24940
34.8k
        expr_ty subject;
24941
34.8k
        if (
24942
34.8k
            (a = _PyPegen_expect_soft_keyword(p, "match"))  // soft_keyword='"match"'
24943
34.8k
            &&
24944
34.8k
            (subject = subject_expr_rule(p))  // subject_expr
24945
34.8k
            &&
24946
34.8k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24947
34.8k
            &&
24948
34.8k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24949
34.8k
            &&
24950
34.8k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24951
34.8k
        )
24952
2
        {
24953
2
            D(fprintf(stderr, "%*c+ invalid_match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE !INDENT"));
24954
2
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'match' statement on line %d" , a -> lineno );
24955
2
            if (_res == NULL && PyErr_Occurred()) {
24956
2
                p->error_indicator = 1;
24957
2
                p->level--;
24958
2
                return NULL;
24959
2
            }
24960
0
            goto done;
24961
2
        }
24962
34.8k
        p->mark = _mark;
24963
34.8k
        D(fprintf(stderr, "%*c%s invalid_match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24964
34.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr ':' NEWLINE !INDENT"));
24965
34.8k
    }
24966
0
    _res = NULL;
24967
34.8k
  done:
24968
34.8k
    p->level--;
24969
34.8k
    return _res;
24970
34.8k
}
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.13k
{
24978
2.13k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24979
0
        _Pypegen_stack_overflow(p);
24980
0
    }
24981
2.13k
    if (p->error_indicator) {
24982
0
        p->level--;
24983
0
        return NULL;
24984
0
    }
24985
2.13k
    void * _res = NULL;
24986
2.13k
    int _mark = p->mark;
24987
2.13k
    { // "case" patterns guard? NEWLINE
24988
2.13k
        if (p->error_indicator) {
24989
0
            p->level--;
24990
0
            return NULL;
24991
0
        }
24992
2.13k
        D(fprintf(stderr, "%*c> invalid_case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? NEWLINE"));
24993
2.13k
        expr_ty _keyword;
24994
2.13k
        void *_opt_var;
24995
2.13k
        UNUSED(_opt_var); // Silence compiler warnings
24996
2.13k
        Token * newline_var;
24997
2.13k
        pattern_ty patterns_var;
24998
2.13k
        if (
24999
2.13k
            (_keyword = _PyPegen_expect_soft_keyword(p, "case"))  // soft_keyword='"case"'
25000
2.13k
            &&
25001
2.13k
            (patterns_var = patterns_rule(p))  // patterns
25002
2.13k
            &&
25003
2.13k
            (_opt_var = guard_rule(p), !p->error_indicator)  // guard?
25004
2.13k
            &&
25005
2.13k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25006
2.13k
        )
25007
29
        {
25008
29
            D(fprintf(stderr, "%*c+ invalid_case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? NEWLINE"));
25009
29
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
25010
29
            if (_res == NULL && PyErr_Occurred()) {
25011
29
                p->error_indicator = 1;
25012
29
                p->level--;
25013
29
                return NULL;
25014
29
            }
25015
0
            goto done;
25016
29
        }
25017
2.10k
        p->mark = _mark;
25018
2.10k
        D(fprintf(stderr, "%*c%s invalid_case_block[%d-%d]: %s failed!\n", p->level, ' ',
25019
2.10k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"case\" patterns guard? NEWLINE"));
25020
2.10k
    }
25021
0
    { // "case" patterns guard? ':' NEWLINE !INDENT
25022
2.10k
        if (p->error_indicator) {
25023
54
            p->level--;
25024
54
            return NULL;
25025
54
        }
25026
2.04k
        D(fprintf(stderr, "%*c> invalid_case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' NEWLINE !INDENT"));
25027
2.04k
        Token * _literal;
25028
2.04k
        void *_opt_var;
25029
2.04k
        UNUSED(_opt_var); // Silence compiler warnings
25030
2.04k
        expr_ty a;
25031
2.04k
        Token * newline_var;
25032
2.04k
        pattern_ty patterns_var;
25033
2.04k
        if (
25034
2.04k
            (a = _PyPegen_expect_soft_keyword(p, "case"))  // soft_keyword='"case"'
25035
2.04k
            &&
25036
2.04k
            (patterns_var = patterns_rule(p))  // patterns
25037
2.04k
            &&
25038
2.04k
            (_opt_var = guard_rule(p), !p->error_indicator)  // guard?
25039
2.04k
            &&
25040
2.04k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25041
2.04k
            &&
25042
2.04k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25043
2.04k
            &&
25044
2.04k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25045
2.04k
        )
25046
7
        {
25047
7
            D(fprintf(stderr, "%*c+ invalid_case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' NEWLINE !INDENT"));
25048
7
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'case' statement on line %d" , a -> lineno );
25049
7
            if (_res == NULL && PyErr_Occurred()) {
25050
7
                p->error_indicator = 1;
25051
7
                p->level--;
25052
7
                return NULL;
25053
7
            }
25054
0
            goto done;
25055
7
        }
25056
2.04k
        p->mark = _mark;
25057
2.04k
        D(fprintf(stderr, "%*c%s invalid_case_block[%d-%d]: %s failed!\n", p->level, ' ',
25058
2.04k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"case\" patterns guard? ':' NEWLINE !INDENT"));
25059
2.04k
    }
25060
0
    _res = NULL;
25061
2.04k
  done:
25062
2.04k
    p->level--;
25063
2.04k
    return _res;
25064
2.04k
}
25065
25066
// invalid_as_pattern: or_pattern 'as' "_" | or_pattern 'as' expression
25067
static void *
25068
invalid_as_pattern_rule(Parser *p)
25069
38.8k
{
25070
38.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25071
0
        _Pypegen_stack_overflow(p);
25072
0
    }
25073
38.8k
    if (p->error_indicator) {
25074
0
        p->level--;
25075
0
        return NULL;
25076
0
    }
25077
38.8k
    void * _res = NULL;
25078
38.8k
    int _mark = p->mark;
25079
38.8k
    { // or_pattern 'as' "_"
25080
38.8k
        if (p->error_indicator) {
25081
0
            p->level--;
25082
0
            return NULL;
25083
0
        }
25084
38.8k
        D(fprintf(stderr, "%*c> invalid_as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' \"_\""));
25085
38.8k
        Token * _keyword;
25086
38.8k
        expr_ty a;
25087
38.8k
        pattern_ty or_pattern_var;
25088
38.8k
        if (
25089
38.8k
            (or_pattern_var = or_pattern_rule(p))  // or_pattern
25090
38.8k
            &&
25091
38.8k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
25092
38.8k
            &&
25093
38.8k
            (a = _PyPegen_expect_soft_keyword(p, "_"))  // soft_keyword='"_"'
25094
38.8k
        )
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
38.8k
        p->mark = _mark;
25106
38.8k
        D(fprintf(stderr, "%*c%s invalid_as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
25107
38.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' \"_\""));
25108
38.8k
    }
25109
0
    { // or_pattern 'as' expression
25110
38.8k
        if (p->error_indicator) {
25111
0
            p->level--;
25112
0
            return NULL;
25113
0
        }
25114
38.8k
        D(fprintf(stderr, "%*c> invalid_as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' expression"));
25115
38.8k
        Token * _keyword;
25116
38.8k
        expr_ty a;
25117
38.8k
        pattern_ty or_pattern_var;
25118
38.8k
        if (
25119
38.8k
            (or_pattern_var = or_pattern_rule(p))  // or_pattern
25120
38.8k
            &&
25121
38.8k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
25122
38.8k
            &&
25123
38.8k
            (a = expression_rule(p))  // expression
25124
38.8k
        )
25125
2
        {
25126
2
            D(fprintf(stderr, "%*c+ invalid_as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' expression"));
25127
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use %s as pattern target" , _PyPegen_get_expr_name ( a ) );
25128
2
            if (_res == NULL && PyErr_Occurred()) {
25129
2
                p->error_indicator = 1;
25130
2
                p->level--;
25131
2
                return NULL;
25132
2
            }
25133
0
            goto done;
25134
2
        }
25135
38.8k
        p->mark = _mark;
25136
38.8k
        D(fprintf(stderr, "%*c%s invalid_as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
25137
38.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' expression"));
25138
38.8k
    }
25139
0
    _res = NULL;
25140
38.8k
  done:
25141
38.8k
    p->level--;
25142
38.8k
    return _res;
25143
38.8k
}
25144
25145
// invalid_class_pattern: name_or_attr '(' invalid_class_argument_pattern
25146
static void *
25147
invalid_class_pattern_rule(Parser *p)
25148
7.93k
{
25149
7.93k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25150
0
        _Pypegen_stack_overflow(p);
25151
0
    }
25152
7.93k
    if (p->error_indicator) {
25153
0
        p->level--;
25154
0
        return NULL;
25155
0
    }
25156
7.93k
    void * _res = NULL;
25157
7.93k
    int _mark = p->mark;
25158
7.93k
    { // name_or_attr '(' invalid_class_argument_pattern
25159
7.93k
        if (p->error_indicator) {
25160
0
            p->level--;
25161
0
            return NULL;
25162
0
        }
25163
7.93k
        D(fprintf(stderr, "%*c> invalid_class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern"));
25164
7.93k
        Token * _literal;
25165
7.93k
        asdl_pattern_seq* a;
25166
7.93k
        expr_ty name_or_attr_var;
25167
7.93k
        if (
25168
7.93k
            (name_or_attr_var = name_or_attr_rule(p))  // name_or_attr
25169
7.93k
            &&
25170
7.93k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
25171
7.93k
            &&
25172
7.93k
            (a = invalid_class_argument_pattern_rule(p))  // invalid_class_argument_pattern
25173
7.93k
        )
25174
158
        {
25175
158
            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
158
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( PyPegen_first_item ( a , pattern_ty ) , PyPegen_last_item ( a , pattern_ty ) , "positional patterns follow keyword patterns" );
25177
158
            if (_res == NULL && PyErr_Occurred()) {
25178
158
                p->error_indicator = 1;
25179
158
                p->level--;
25180
158
                return NULL;
25181
158
            }
25182
0
            goto done;
25183
158
        }
25184
7.77k
        p->mark = _mark;
25185
7.77k
        D(fprintf(stderr, "%*c%s invalid_class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
25186
7.77k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern"));
25187
7.77k
    }
25188
0
    _res = NULL;
25189
7.77k
  done:
25190
7.77k
    p->level--;
25191
7.77k
    return _res;
25192
7.77k
}
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.39k
{
25199
3.39k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25200
0
        _Pypegen_stack_overflow(p);
25201
0
    }
25202
3.39k
    if (p->error_indicator) {
25203
0
        p->level--;
25204
0
        return NULL;
25205
0
    }
25206
3.39k
    asdl_pattern_seq* _res = NULL;
25207
3.39k
    int _mark = p->mark;
25208
3.39k
    { // [positional_patterns ','] keyword_patterns ',' positional_patterns
25209
3.39k
        if (p->error_indicator) {
25210
0
            p->level--;
25211
0
            return NULL;
25212
0
        }
25213
3.39k
        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.39k
        Token * _literal;
25215
3.39k
        void *_opt_var;
25216
3.39k
        UNUSED(_opt_var); // Silence compiler warnings
25217
3.39k
        asdl_pattern_seq* a;
25218
3.39k
        asdl_seq* keyword_patterns_var;
25219
3.39k
        if (
25220
3.39k
            (_opt_var = _tmp_146_rule(p), !p->error_indicator)  // [positional_patterns ',']
25221
3.39k
            &&
25222
3.39k
            (keyword_patterns_var = keyword_patterns_rule(p))  // keyword_patterns
25223
3.39k
            &&
25224
3.39k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
25225
3.39k
            &&
25226
3.39k
            (a = positional_patterns_rule(p))  // positional_patterns
25227
3.39k
        )
25228
158
        {
25229
158
            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
158
            _res = a;
25231
158
            if (_res == NULL && PyErr_Occurred()) {
25232
0
                p->error_indicator = 1;
25233
0
                p->level--;
25234
0
                return NULL;
25235
0
            }
25236
158
            goto done;
25237
158
        }
25238
3.23k
        p->mark = _mark;
25239
3.23k
        D(fprintf(stderr, "%*c%s invalid_class_argument_pattern[%d-%d]: %s failed!\n", p->level, ' ',
25240
3.23k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns"));
25241
3.23k
    }
25242
0
    _res = NULL;
25243
3.39k
  done:
25244
3.39k
    p->level--;
25245
3.39k
    return _res;
25246
3.23k
}
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
617
{
25254
617
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25255
0
        _Pypegen_stack_overflow(p);
25256
0
    }
25257
617
    if (p->error_indicator) {
25258
0
        p->level--;
25259
0
        return NULL;
25260
0
    }
25261
617
    void * _res = NULL;
25262
617
    int _mark = p->mark;
25263
617
    { // 'if' named_expression NEWLINE
25264
617
        if (p->error_indicator) {
25265
0
            p->level--;
25266
0
            return NULL;
25267
0
        }
25268
617
        D(fprintf(stderr, "%*c> invalid_if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression NEWLINE"));
25269
617
        Token * _keyword;
25270
617
        expr_ty named_expression_var;
25271
617
        Token * newline_var;
25272
617
        if (
25273
617
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
25274
617
            &&
25275
617
            (named_expression_var = named_expression_rule(p))  // named_expression
25276
617
            &&
25277
617
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25278
617
        )
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
612
        p->mark = _mark;
25290
612
        D(fprintf(stderr, "%*c%s invalid_if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25291
612
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression NEWLINE"));
25292
612
    }
25293
0
    { // 'if' named_expression ':' NEWLINE !INDENT
25294
612
        if (p->error_indicator) {
25295
5
            p->level--;
25296
5
            return NULL;
25297
5
        }
25298
607
        D(fprintf(stderr, "%*c> invalid_if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' NEWLINE !INDENT"));
25299
607
        Token * _literal;
25300
607
        Token * a;
25301
607
        expr_ty a_1;
25302
607
        Token * newline_var;
25303
607
        if (
25304
607
            (a = _PyPegen_expect_token(p, 687))  // token='if'
25305
607
            &&
25306
607
            (a_1 = named_expression_rule(p))  // named_expression
25307
607
            &&
25308
607
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25309
607
            &&
25310
607
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25311
607
            &&
25312
607
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25313
607
        )
25314
9
        {
25315
9
            D(fprintf(stderr, "%*c+ invalid_if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' NEWLINE !INDENT"));
25316
9
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'if' statement on line %d" , a -> lineno );
25317
9
            if (_res == NULL && PyErr_Occurred()) {
25318
9
                p->error_indicator = 1;
25319
9
                p->level--;
25320
9
                return NULL;
25321
9
            }
25322
0
            goto done;
25323
9
        }
25324
598
        p->mark = _mark;
25325
598
        D(fprintf(stderr, "%*c%s invalid_if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25326
598
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' NEWLINE !INDENT"));
25327
598
    }
25328
0
    _res = NULL;
25329
598
  done:
25330
598
    p->level--;
25331
598
    return _res;
25332
598
}
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
927
{
25340
927
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25341
0
        _Pypegen_stack_overflow(p);
25342
0
    }
25343
927
    if (p->error_indicator) {
25344
0
        p->level--;
25345
0
        return NULL;
25346
0
    }
25347
927
    void * _res = NULL;
25348
927
    int _mark = p->mark;
25349
927
    { // 'elif' named_expression NEWLINE
25350
927
        if (p->error_indicator) {
25351
0
            p->level--;
25352
0
            return NULL;
25353
0
        }
25354
927
        D(fprintf(stderr, "%*c> invalid_elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression NEWLINE"));
25355
927
        Token * _keyword;
25356
927
        expr_ty named_expression_var;
25357
927
        Token * newline_var;
25358
927
        if (
25359
927
            (_keyword = _PyPegen_expect_token(p, 692))  // token='elif'
25360
927
            &&
25361
927
            (named_expression_var = named_expression_rule(p))  // named_expression
25362
927
            &&
25363
927
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25364
927
        )
25365
5
        {
25366
5
            D(fprintf(stderr, "%*c+ invalid_elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression NEWLINE"));
25367
5
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
25368
5
            if (_res == NULL && PyErr_Occurred()) {
25369
5
                p->error_indicator = 1;
25370
5
                p->level--;
25371
5
                return NULL;
25372
5
            }
25373
0
            goto done;
25374
5
        }
25375
922
        p->mark = _mark;
25376
922
        D(fprintf(stderr, "%*c%s invalid_elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25377
922
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression NEWLINE"));
25378
922
    }
25379
0
    { // 'elif' named_expression ':' NEWLINE !INDENT
25380
922
        if (p->error_indicator) {
25381
1
            p->level--;
25382
1
            return NULL;
25383
1
        }
25384
921
        D(fprintf(stderr, "%*c> invalid_elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' NEWLINE !INDENT"));
25385
921
        Token * _literal;
25386
921
        Token * a;
25387
921
        expr_ty named_expression_var;
25388
921
        Token * newline_var;
25389
921
        if (
25390
921
            (a = _PyPegen_expect_token(p, 692))  // token='elif'
25391
921
            &&
25392
921
            (named_expression_var = named_expression_rule(p))  // named_expression
25393
921
            &&
25394
921
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25395
921
            &&
25396
921
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25397
921
            &&
25398
921
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25399
921
        )
25400
3
        {
25401
3
            D(fprintf(stderr, "%*c+ invalid_elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' NEWLINE !INDENT"));
25402
3
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'elif' statement on line %d" , a -> lineno );
25403
3
            if (_res == NULL && PyErr_Occurred()) {
25404
3
                p->error_indicator = 1;
25405
3
                p->level--;
25406
3
                return NULL;
25407
3
            }
25408
0
            goto done;
25409
3
        }
25410
918
        p->mark = _mark;
25411
918
        D(fprintf(stderr, "%*c%s invalid_elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25412
918
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' NEWLINE !INDENT"));
25413
918
    }
25414
0
    _res = NULL;
25415
918
  done:
25416
918
    p->level--;
25417
918
    return _res;
25418
918
}
25419
25420
// invalid_else_stmt: 'else' ':' NEWLINE !INDENT | 'else' ':' block 'elif'
25421
static void *
25422
invalid_else_stmt_rule(Parser *p)
25423
3.50k
{
25424
3.50k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25425
0
        _Pypegen_stack_overflow(p);
25426
0
    }
25427
3.50k
    if (p->error_indicator) {
25428
0
        p->level--;
25429
0
        return NULL;
25430
0
    }
25431
3.50k
    void * _res = NULL;
25432
3.50k
    int _mark = p->mark;
25433
3.50k
    { // 'else' ':' NEWLINE !INDENT
25434
3.50k
        if (p->error_indicator) {
25435
0
            p->level--;
25436
0
            return NULL;
25437
0
        }
25438
3.50k
        D(fprintf(stderr, "%*c> invalid_else_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else' ':' NEWLINE !INDENT"));
25439
3.50k
        Token * _literal;
25440
3.50k
        Token * a;
25441
3.50k
        Token * newline_var;
25442
3.50k
        if (
25443
3.50k
            (a = _PyPegen_expect_token(p, 691))  // token='else'
25444
3.50k
            &&
25445
3.50k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25446
3.50k
            &&
25447
3.50k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25448
3.50k
            &&
25449
3.50k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25450
3.50k
        )
25451
1
        {
25452
1
            D(fprintf(stderr, "%*c+ invalid_else_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else' ':' NEWLINE !INDENT"));
25453
1
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'else' statement on line %d" , a -> lineno );
25454
1
            if (_res == NULL && PyErr_Occurred()) {
25455
1
                p->error_indicator = 1;
25456
1
                p->level--;
25457
1
                return NULL;
25458
1
            }
25459
0
            goto done;
25460
1
        }
25461
3.50k
        p->mark = _mark;
25462
3.50k
        D(fprintf(stderr, "%*c%s invalid_else_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25463
3.50k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else' ':' NEWLINE !INDENT"));
25464
3.50k
    }
25465
0
    { // 'else' ':' block 'elif'
25466
3.50k
        if (p->error_indicator) {
25467
0
            p->level--;
25468
0
            return NULL;
25469
0
        }
25470
3.50k
        D(fprintf(stderr, "%*c> invalid_else_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else' ':' block 'elif'"));
25471
3.50k
        Token * _keyword;
25472
3.50k
        Token * _keyword_1;
25473
3.50k
        Token * _literal;
25474
3.50k
        asdl_stmt_seq* block_var;
25475
3.50k
        if (
25476
3.50k
            (_keyword = _PyPegen_expect_token(p, 691))  // token='else'
25477
3.50k
            &&
25478
3.50k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25479
3.50k
            &&
25480
3.50k
            (block_var = block_rule(p))  // block
25481
3.50k
            &&
25482
3.50k
            (_keyword_1 = _PyPegen_expect_token(p, 692))  // token='elif'
25483
3.50k
        )
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.50k
        p->mark = _mark;
25495
3.50k
        D(fprintf(stderr, "%*c%s invalid_else_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25496
3.50k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else' ':' block 'elif'"));
25497
3.50k
    }
25498
0
    _res = NULL;
25499
3.50k
  done:
25500
3.50k
    p->level--;
25501
3.50k
    return _res;
25502
3.50k
}
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
721
{
25510
721
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25511
0
        _Pypegen_stack_overflow(p);
25512
0
    }
25513
721
    if (p->error_indicator) {
25514
0
        p->level--;
25515
0
        return NULL;
25516
0
    }
25517
721
    void * _res = NULL;
25518
721
    int _mark = p->mark;
25519
721
    { // 'while' named_expression NEWLINE
25520
721
        if (p->error_indicator) {
25521
0
            p->level--;
25522
0
            return NULL;
25523
0
        }
25524
721
        D(fprintf(stderr, "%*c> invalid_while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression NEWLINE"));
25525
721
        Token * _keyword;
25526
721
        expr_ty named_expression_var;
25527
721
        Token * newline_var;
25528
721
        if (
25529
721
            (_keyword = _PyPegen_expect_token(p, 694))  // token='while'
25530
721
            &&
25531
721
            (named_expression_var = named_expression_rule(p))  // named_expression
25532
721
            &&
25533
721
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25534
721
        )
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
718
        p->mark = _mark;
25546
718
        D(fprintf(stderr, "%*c%s invalid_while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25547
718
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression NEWLINE"));
25548
718
    }
25549
0
    { // 'while' named_expression ':' NEWLINE !INDENT
25550
718
        if (p->error_indicator) {
25551
3
            p->level--;
25552
3
            return NULL;
25553
3
        }
25554
715
        D(fprintf(stderr, "%*c> invalid_while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' NEWLINE !INDENT"));
25555
715
        Token * _literal;
25556
715
        Token * a;
25557
715
        expr_ty named_expression_var;
25558
715
        Token * newline_var;
25559
715
        if (
25560
715
            (a = _PyPegen_expect_token(p, 694))  // token='while'
25561
715
            &&
25562
715
            (named_expression_var = named_expression_rule(p))  // named_expression
25563
715
            &&
25564
715
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25565
715
            &&
25566
715
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25567
715
            &&
25568
715
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25569
715
        )
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
713
        p->mark = _mark;
25581
713
        D(fprintf(stderr, "%*c%s invalid_while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25582
713
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression ':' NEWLINE !INDENT"));
25583
713
    }
25584
0
    _res = NULL;
25585
713
  done:
25586
713
    p->level--;
25587
713
    return _res;
25588
713
}
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
734
{
25596
734
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25597
0
        _Pypegen_stack_overflow(p);
25598
0
    }
25599
734
    if (p->error_indicator) {
25600
0
        p->level--;
25601
0
        return NULL;
25602
0
    }
25603
734
    void * _res = NULL;
25604
734
    int _mark = p->mark;
25605
734
    { // 'async'? 'for' star_targets 'in' star_expressions NEWLINE
25606
734
        if (p->error_indicator) {
25607
0
            p->level--;
25608
0
            return NULL;
25609
0
        }
25610
734
        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
734
        Token * _keyword;
25612
734
        Token * _keyword_1;
25613
734
        void *_opt_var;
25614
734
        UNUSED(_opt_var); // Silence compiler warnings
25615
734
        Token * newline_var;
25616
734
        expr_ty star_expressions_var;
25617
734
        expr_ty star_targets_var;
25618
734
        if (
25619
734
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
25620
734
            &&
25621
734
            (_keyword = _PyPegen_expect_token(p, 699))  // token='for'
25622
734
            &&
25623
734
            (star_targets_var = star_targets_rule(p))  // star_targets
25624
734
            &&
25625
734
            (_keyword_1 = _PyPegen_expect_token(p, 700))  // token='in'
25626
734
            &&
25627
734
            (star_expressions_var = star_expressions_rule(p))  // star_expressions
25628
734
            &&
25629
734
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25630
734
        )
25631
2
        {
25632
2
            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
2
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
25634
2
            if (_res == NULL && PyErr_Occurred()) {
25635
2
                p->error_indicator = 1;
25636
2
                p->level--;
25637
2
                return NULL;
25638
2
            }
25639
0
            goto done;
25640
2
        }
25641
732
        p->mark = _mark;
25642
732
        D(fprintf(stderr, "%*c%s invalid_for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25643
732
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'for' star_targets 'in' star_expressions NEWLINE"));
25644
732
    }
25645
0
    { // 'async'? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT
25646
732
        if (p->error_indicator) {
25647
11
            p->level--;
25648
11
            return NULL;
25649
11
        }
25650
721
        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
721
        Token * _keyword;
25652
721
        Token * _literal;
25653
721
        void *_opt_var;
25654
721
        UNUSED(_opt_var); // Silence compiler warnings
25655
721
        Token * a;
25656
721
        Token * newline_var;
25657
721
        expr_ty star_expressions_var;
25658
721
        expr_ty star_targets_var;
25659
721
        if (
25660
721
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
25661
721
            &&
25662
721
            (a = _PyPegen_expect_token(p, 699))  // token='for'
25663
721
            &&
25664
721
            (star_targets_var = star_targets_rule(p))  // star_targets
25665
721
            &&
25666
721
            (_keyword = _PyPegen_expect_token(p, 700))  // token='in'
25667
721
            &&
25668
721
            (star_expressions_var = star_expressions_rule(p))  // star_expressions
25669
721
            &&
25670
721
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25671
721
            &&
25672
721
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25673
721
            &&
25674
721
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25675
721
        )
25676
2
        {
25677
2
            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
2
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'for' statement on line %d" , a -> lineno );
25679
2
            if (_res == NULL && PyErr_Occurred()) {
25680
2
                p->error_indicator = 1;
25681
2
                p->level--;
25682
2
                return NULL;
25683
2
            }
25684
0
            goto done;
25685
2
        }
25686
719
        p->mark = _mark;
25687
719
        D(fprintf(stderr, "%*c%s invalid_for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25688
719
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT"));
25689
719
    }
25690
0
    _res = NULL;
25691
719
  done:
25692
719
    p->level--;
25693
719
    return _res;
25694
719
}
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
5.05k
{
25702
5.05k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25703
0
        _Pypegen_stack_overflow(p);
25704
0
    }
25705
5.05k
    if (p->error_indicator) {
25706
0
        p->level--;
25707
0
        return NULL;
25708
0
    }
25709
5.05k
    void * _res = NULL;
25710
5.05k
    int _mark = p->mark;
25711
5.05k
    { // 'async'? 'def' NAME type_params? '(' params? ')' ['->' expression] ':' NEWLINE !INDENT
25712
5.05k
        if (p->error_indicator) {
25713
0
            p->level--;
25714
0
            return NULL;
25715
0
        }
25716
5.05k
        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
5.05k
        Token * _literal;
25718
5.05k
        Token * _literal_1;
25719
5.05k
        Token * _literal_2;
25720
5.05k
        void *_opt_var;
25721
5.05k
        UNUSED(_opt_var); // Silence compiler warnings
25722
5.05k
        void *_opt_var_1;
25723
5.05k
        UNUSED(_opt_var_1); // Silence compiler warnings
25724
5.05k
        void *_opt_var_2;
25725
5.05k
        UNUSED(_opt_var_2); // Silence compiler warnings
25726
5.05k
        void *_opt_var_3;
25727
5.05k
        UNUSED(_opt_var_3); // Silence compiler warnings
25728
5.05k
        Token * a;
25729
5.05k
        expr_ty name_var;
25730
5.05k
        Token * newline_var;
25731
5.05k
        if (
25732
5.05k
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
25733
5.05k
            &&
25734
5.05k
            (a = _PyPegen_expect_token(p, 704))  // token='def'
25735
5.05k
            &&
25736
5.05k
            (name_var = _PyPegen_name_token(p))  // NAME
25737
5.05k
            &&
25738
5.05k
            (_opt_var_1 = type_params_rule(p), !p->error_indicator)  // type_params?
25739
5.05k
            &&
25740
5.05k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
25741
5.05k
            &&
25742
5.05k
            (_opt_var_2 = params_rule(p), !p->error_indicator)  // params?
25743
5.05k
            &&
25744
5.05k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
25745
5.05k
            &&
25746
5.05k
            (_opt_var_3 = _tmp_26_rule(p), !p->error_indicator)  // ['->' expression]
25747
5.05k
            &&
25748
5.05k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
25749
5.05k
            &&
25750
5.05k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25751
5.05k
            &&
25752
5.05k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25753
5.05k
        )
25754
18
        {
25755
18
            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
18
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after function definition on line %d" , a -> lineno );
25757
18
            if (_res == NULL && PyErr_Occurred()) {
25758
18
                p->error_indicator = 1;
25759
18
                p->level--;
25760
18
                return NULL;
25761
18
            }
25762
0
            goto done;
25763
18
        }
25764
5.03k
        p->mark = _mark;
25765
5.03k
        D(fprintf(stderr, "%*c%s invalid_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
25766
5.03k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'def' NAME type_params? '(' params? ')' ['->' expression] ':' NEWLINE !INDENT"));
25767
5.03k
    }
25768
0
    { // 'async'? 'def' NAME type_params? &&'(' params? ')' ['->' expression] &&':' func_type_comment? block
25769
5.03k
        if (p->error_indicator) {
25770
56
            p->level--;
25771
56
            return NULL;
25772
56
        }
25773
4.98k
        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
4.98k
        Token * _keyword;
25775
4.98k
        Token * _literal;
25776
4.98k
        Token * _literal_1;
25777
4.98k
        Token * _literal_2;
25778
4.98k
        void *_opt_var;
25779
4.98k
        UNUSED(_opt_var); // Silence compiler warnings
25780
4.98k
        void *_opt_var_1;
25781
4.98k
        UNUSED(_opt_var_1); // Silence compiler warnings
25782
4.98k
        void *_opt_var_2;
25783
4.98k
        UNUSED(_opt_var_2); // Silence compiler warnings
25784
4.98k
        void *_opt_var_3;
25785
4.98k
        UNUSED(_opt_var_3); // Silence compiler warnings
25786
4.98k
        void *_opt_var_4;
25787
4.98k
        UNUSED(_opt_var_4); // Silence compiler warnings
25788
4.98k
        asdl_stmt_seq* block_var;
25789
4.98k
        expr_ty name_var;
25790
4.98k
        if (
25791
4.98k
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
25792
4.98k
            &&
25793
4.98k
            (_keyword = _PyPegen_expect_token(p, 704))  // token='def'
25794
4.98k
            &&
25795
4.98k
            (name_var = _PyPegen_name_token(p))  // NAME
25796
4.98k
            &&
25797
4.98k
            (_opt_var_1 = type_params_rule(p), !p->error_indicator)  // type_params?
25798
4.98k
            &&
25799
4.98k
            (_literal = _PyPegen_expect_forced_token(p, 7, "("))  // forced_token='('
25800
4.98k
            &&
25801
4.98k
            (_opt_var_2 = params_rule(p), !p->error_indicator)  // params?
25802
4.98k
            &&
25803
4.98k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
25804
4.98k
            &&
25805
4.98k
            (_opt_var_3 = _tmp_26_rule(p), !p->error_indicator)  // ['->' expression]
25806
4.98k
            &&
25807
4.98k
            (_literal_2 = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
25808
4.98k
            &&
25809
4.98k
            (_opt_var_4 = func_type_comment_rule(p), !p->error_indicator)  // func_type_comment?
25810
4.98k
            &&
25811
4.98k
            (block_var = block_rule(p))  // block
25812
4.98k
        )
25813
3.04k
        {
25814
3.04k
            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
3.04k
            _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
3.04k
            goto done;
25817
3.04k
        }
25818
1.93k
        p->mark = _mark;
25819
1.93k
        D(fprintf(stderr, "%*c%s invalid_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
25820
1.93k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'def' NAME type_params? &&'(' params? ')' ['->' expression] &&':' func_type_comment? block"));
25821
1.93k
    }
25822
0
    _res = NULL;
25823
4.98k
  done:
25824
4.98k
    p->level--;
25825
4.98k
    return _res;
25826
1.93k
}
25827
25828
// invalid_class_def_raw:
25829
//     | 'class' NAME type_params? ['(' arguments? ')'] NEWLINE
25830
//     | 'class' NAME type_params? ['(' arguments? ')'] ':' NEWLINE !INDENT
25831
static void *
25832
invalid_class_def_raw_rule(Parser *p)
25833
2.34k
{
25834
2.34k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25835
0
        _Pypegen_stack_overflow(p);
25836
0
    }
25837
2.34k
    if (p->error_indicator) {
25838
0
        p->level--;
25839
0
        return NULL;
25840
0
    }
25841
2.34k
    void * _res = NULL;
25842
2.34k
    int _mark = p->mark;
25843
2.34k
    { // 'class' NAME type_params? ['(' arguments? ')'] NEWLINE
25844
2.34k
        if (p->error_indicator) {
25845
0
            p->level--;
25846
0
            return NULL;
25847
0
        }
25848
2.34k
        D(fprintf(stderr, "%*c> invalid_class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] NEWLINE"));
25849
2.34k
        Token * _keyword;
25850
2.34k
        void *_opt_var;
25851
2.34k
        UNUSED(_opt_var); // Silence compiler warnings
25852
2.34k
        void *_opt_var_1;
25853
2.34k
        UNUSED(_opt_var_1); // Silence compiler warnings
25854
2.34k
        expr_ty name_var;
25855
2.34k
        Token * newline_var;
25856
2.34k
        if (
25857
2.34k
            (_keyword = _PyPegen_expect_token(p, 706))  // token='class'
25858
2.34k
            &&
25859
2.34k
            (name_var = _PyPegen_name_token(p))  // NAME
25860
2.34k
            &&
25861
2.34k
            (_opt_var = type_params_rule(p), !p->error_indicator)  // type_params?
25862
2.34k
            &&
25863
2.34k
            (_opt_var_1 = _tmp_25_rule(p), !p->error_indicator)  // ['(' arguments? ')']
25864
2.34k
            &&
25865
2.34k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25866
2.34k
        )
25867
10
        {
25868
10
            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
10
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
25870
10
            if (_res == NULL && PyErr_Occurred()) {
25871
10
                p->error_indicator = 1;
25872
10
                p->level--;
25873
10
                return NULL;
25874
10
            }
25875
0
            goto done;
25876
10
        }
25877
2.33k
        p->mark = _mark;
25878
2.33k
        D(fprintf(stderr, "%*c%s invalid_class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
25879
2.33k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] NEWLINE"));
25880
2.33k
    }
25881
0
    { // 'class' NAME type_params? ['(' arguments? ')'] ':' NEWLINE !INDENT
25882
2.33k
        if (p->error_indicator) {
25883
9
            p->level--;
25884
9
            return NULL;
25885
9
        }
25886
2.32k
        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
2.32k
        Token * _literal;
25888
2.32k
        void *_opt_var;
25889
2.32k
        UNUSED(_opt_var); // Silence compiler warnings
25890
2.32k
        void *_opt_var_1;
25891
2.32k
        UNUSED(_opt_var_1); // Silence compiler warnings
25892
2.32k
        Token * a;
25893
2.32k
        expr_ty name_var;
25894
2.32k
        Token * newline_var;
25895
2.32k
        if (
25896
2.32k
            (a = _PyPegen_expect_token(p, 706))  // token='class'
25897
2.32k
            &&
25898
2.32k
            (name_var = _PyPegen_name_token(p))  // NAME
25899
2.32k
            &&
25900
2.32k
            (_opt_var = type_params_rule(p), !p->error_indicator)  // type_params?
25901
2.32k
            &&
25902
2.32k
            (_opt_var_1 = _tmp_25_rule(p), !p->error_indicator)  // ['(' arguments? ')']
25903
2.32k
            &&
25904
2.32k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25905
2.32k
            &&
25906
2.32k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25907
2.32k
            &&
25908
2.32k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25909
2.32k
        )
25910
8
        {
25911
8
            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
8
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after class definition on line %d" , a -> lineno );
25913
8
            if (_res == NULL && PyErr_Occurred()) {
25914
8
                p->error_indicator = 1;
25915
8
                p->level--;
25916
8
                return NULL;
25917
8
            }
25918
0
            goto done;
25919
8
        }
25920
2.32k
        p->mark = _mark;
25921
2.32k
        D(fprintf(stderr, "%*c%s invalid_class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
25922
2.32k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] ':' NEWLINE !INDENT"));
25923
2.32k
    }
25924
0
    _res = NULL;
25925
2.32k
  done:
25926
2.32k
    p->level--;
25927
2.32k
    return _res;
25928
2.32k
}
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
34.2k
{
25937
34.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25938
0
        _Pypegen_stack_overflow(p);
25939
0
    }
25940
34.2k
    if (p->error_indicator) {
25941
0
        p->level--;
25942
0
        return NULL;
25943
0
    }
25944
34.2k
    void * _res = NULL;
25945
34.2k
    int _mark = p->mark;
25946
34.2k
    { // ','.double_starred_kvpair+ ',' invalid_kvpair
25947
34.2k
        if (p->error_indicator) {
25948
0
            p->level--;
25949
0
            return NULL;
25950
0
        }
25951
34.2k
        D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair"));
25952
34.2k
        asdl_seq * _gather_83_var;
25953
34.2k
        Token * _literal;
25954
34.2k
        void *invalid_kvpair_var;
25955
34.2k
        if (
25956
34.2k
            (_gather_83_var = _gather_83_rule(p))  // ','.double_starred_kvpair+
25957
34.2k
            &&
25958
34.2k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
25959
34.2k
            &&
25960
34.2k
            (invalid_kvpair_var = invalid_kvpair_rule(p))  // invalid_kvpair
25961
34.2k
        )
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
34.2k
        p->mark = _mark;
25968
34.2k
        D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
25969
34.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair"));
25970
34.2k
    }
25971
0
    { // expression ':' '*' bitwise_or
25972
34.2k
        if (p->error_indicator) {
25973
125
            p->level--;
25974
125
            return NULL;
25975
125
        }
25976
34.1k
        D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
25977
34.1k
        Token * _literal;
25978
34.1k
        Token * a;
25979
34.1k
        expr_ty bitwise_or_var;
25980
34.1k
        expr_ty expression_var;
25981
34.1k
        if (
25982
34.1k
            (expression_var = expression_rule(p))  // expression
25983
34.1k
            &&
25984
34.1k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25985
34.1k
            &&
25986
34.1k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
25987
34.1k
            &&
25988
34.1k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
25989
34.1k
        )
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
34.1k
        p->mark = _mark;
26001
34.1k
        D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
26002
34.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' '*' bitwise_or"));
26003
34.1k
    }
26004
0
    { // expression ':' &('}' | ',')
26005
34.1k
        if (p->error_indicator) {
26006
112
            p->level--;
26007
112
            return NULL;
26008
112
        }
26009
34.0k
        D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
26010
34.0k
        Token * a;
26011
34.0k
        expr_ty expression_var;
26012
34.0k
        if (
26013
34.0k
            (expression_var = expression_rule(p))  // expression
26014
34.0k
            &&
26015
34.0k
            (a = _PyPegen_expect_token(p, 11))  // token=':'
26016
34.0k
            &&
26017
34.0k
            _PyPegen_lookahead(1, _tmp_147_rule, p)
26018
34.0k
        )
26019
2
        {
26020
2
            D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
26021
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expression expected after dictionary key and ':'" );
26022
2
            if (_res == NULL && PyErr_Occurred()) {
26023
2
                p->error_indicator = 1;
26024
2
                p->level--;
26025
2
                return NULL;
26026
2
            }
26027
0
            goto done;
26028
2
        }
26029
34.0k
        p->mark = _mark;
26030
34.0k
        D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
26031
34.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' &('}' | ',')"));
26032
34.0k
    }
26033
0
    _res = NULL;
26034
34.0k
  done:
26035
34.0k
    p->level--;
26036
34.0k
    return _res;
26037
34.0k
}
26038
26039
// invalid_kvpair:
26040
//     | expression !(':')
26041
//     | expression ':' '*' bitwise_or
26042
//     | expression ':' &('}' | ',')
26043
static void *
26044
invalid_kvpair_rule(Parser *p)
26045
542
{
26046
542
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26047
0
        _Pypegen_stack_overflow(p);
26048
0
    }
26049
542
    if (p->error_indicator) {
26050
0
        p->level--;
26051
0
        return NULL;
26052
0
    }
26053
542
    void * _res = NULL;
26054
542
    int _mark = p->mark;
26055
542
    { // expression !(':')
26056
542
        if (p->error_indicator) {
26057
0
            p->level--;
26058
0
            return NULL;
26059
0
        }
26060
542
        D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !(':')"));
26061
542
        expr_ty a;
26062
542
        if (
26063
542
            (a = expression_rule(p))  // expression
26064
542
            &&
26065
542
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 11)  // token=(':')
26066
542
        )
26067
2
        {
26068
2
            D(fprintf(stderr, "%*c+ invalid_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !(':')"));
26069
2
            _res = RAISE_ERROR_KNOWN_LOCATION ( p , PyExc_SyntaxError , a -> lineno , a -> end_col_offset - 1 , a -> end_lineno , - 1 , "':' expected after dictionary key" );
26070
2
            if (_res == NULL && PyErr_Occurred()) {
26071
2
                p->error_indicator = 1;
26072
2
                p->level--;
26073
2
                return NULL;
26074
2
            }
26075
0
            goto done;
26076
2
        }
26077
540
        p->mark = _mark;
26078
540
        D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
26079
540
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !(':')"));
26080
540
    }
26081
0
    { // expression ':' '*' bitwise_or
26082
540
        if (p->error_indicator) {
26083
0
            p->level--;
26084
0
            return NULL;
26085
0
        }
26086
540
        D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
26087
540
        Token * _literal;
26088
540
        Token * a;
26089
540
        expr_ty bitwise_or_var;
26090
540
        expr_ty expression_var;
26091
540
        if (
26092
540
            (expression_var = expression_rule(p))  // expression
26093
540
            &&
26094
540
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
26095
540
            &&
26096
540
            (a = _PyPegen_expect_token(p, 16))  // token='*'
26097
540
            &&
26098
540
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
26099
540
        )
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
539
        p->mark = _mark;
26111
539
        D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
26112
539
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' '*' bitwise_or"));
26113
539
    }
26114
0
    { // expression ':' &('}' | ',')
26115
539
        if (p->error_indicator) {
26116
121
            p->level--;
26117
121
            return NULL;
26118
121
        }
26119
418
        D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
26120
418
        Token * a;
26121
418
        expr_ty expression_var;
26122
418
        if (
26123
418
            (expression_var = expression_rule(p))  // expression
26124
418
            &&
26125
418
            (a = _PyPegen_expect_token(p, 11))  // token=':'
26126
418
            &&
26127
418
            _PyPegen_lookahead(1, _tmp_147_rule, p)
26128
418
        )
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
417
        p->mark = _mark;
26140
417
        D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
26141
417
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' &('}' | ',')"));
26142
417
    }
26143
0
    _res = NULL;
26144
417
  done:
26145
417
    p->level--;
26146
417
    return _res;
26147
417
}
26148
26149
// invalid_starred_expression_unpacking: '*' expression '=' expression
26150
static void *
26151
invalid_starred_expression_unpacking_rule(Parser *p)
26152
182k
{
26153
182k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26154
1
        _Pypegen_stack_overflow(p);
26155
1
    }
26156
182k
    if (p->error_indicator) {
26157
1
        p->level--;
26158
1
        return NULL;
26159
1
    }
26160
182k
    void * _res = NULL;
26161
182k
    int _mark = p->mark;
26162
182k
    { // '*' expression '=' expression
26163
182k
        if (p->error_indicator) {
26164
0
            p->level--;
26165
0
            return NULL;
26166
0
        }
26167
182k
        D(fprintf(stderr, "%*c> invalid_starred_expression_unpacking[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression '=' expression"));
26168
182k
        Token * _literal;
26169
182k
        Token * a;
26170
182k
        expr_ty b;
26171
182k
        expr_ty expression_var;
26172
182k
        if (
26173
182k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
26174
182k
            &&
26175
182k
            (expression_var = expression_rule(p))  // expression
26176
182k
            &&
26177
182k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
26178
182k
            &&
26179
182k
            (b = expression_rule(p))  // expression
26180
182k
        )
26181
4
        {
26182
4
            D(fprintf(stderr, "%*c+ invalid_starred_expression_unpacking[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression '=' expression"));
26183
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "cannot assign to iterable argument unpacking" );
26184
4
            if (_res == NULL && PyErr_Occurred()) {
26185
4
                p->error_indicator = 1;
26186
4
                p->level--;
26187
4
                return NULL;
26188
4
            }
26189
0
            goto done;
26190
4
        }
26191
182k
        p->mark = _mark;
26192
182k
        D(fprintf(stderr, "%*c%s invalid_starred_expression_unpacking[%d-%d]: %s failed!\n", p->level, ' ',
26193
182k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression '=' expression"));
26194
182k
    }
26195
0
    _res = NULL;
26196
182k
  done:
26197
182k
    p->level--;
26198
182k
    return _res;
26199
182k
}
26200
26201
// invalid_starred_expression: '*'
26202
static void *
26203
invalid_starred_expression_rule(Parser *p)
26204
165k
{
26205
165k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26206
0
        _Pypegen_stack_overflow(p);
26207
0
    }
26208
165k
    if (p->error_indicator) {
26209
0
        p->level--;
26210
0
        return NULL;
26211
0
    }
26212
165k
    void * _res = NULL;
26213
165k
    int _mark = p->mark;
26214
165k
    { // '*'
26215
165k
        if (p->error_indicator) {
26216
0
            p->level--;
26217
0
            return NULL;
26218
0
        }
26219
165k
        D(fprintf(stderr, "%*c> invalid_starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
26220
165k
        Token * _literal;
26221
165k
        if (
26222
165k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
26223
165k
        )
26224
61
        {
26225
61
            D(fprintf(stderr, "%*c+ invalid_starred_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
26226
61
            _res = RAISE_SYNTAX_ERROR ( "Invalid star expression" );
26227
61
            if (_res == NULL && PyErr_Occurred()) {
26228
61
                p->error_indicator = 1;
26229
61
                p->level--;
26230
61
                return NULL;
26231
61
            }
26232
0
            goto done;
26233
61
        }
26234
165k
        p->mark = _mark;
26235
165k
        D(fprintf(stderr, "%*c%s invalid_starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
26236
165k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
26237
165k
    }
26238
0
    _res = NULL;
26239
165k
  done:
26240
165k
    p->level--;
26241
165k
    return _res;
26242
165k
}
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
9.82k
{
26259
9.82k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26260
1
        _Pypegen_stack_overflow(p);
26261
1
    }
26262
9.82k
    if (p->error_indicator) {
26263
1
        p->level--;
26264
1
        return NULL;
26265
1
    }
26266
9.82k
    void * _res = NULL;
26267
9.82k
    int _mark = p->mark;
26268
9.82k
    { // '{' '='
26269
9.82k
        if (p->error_indicator) {
26270
0
            p->level--;
26271
0
            return NULL;
26272
0
        }
26273
9.82k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '='"));
26274
9.82k
        Token * _literal;
26275
9.82k
        Token * a;
26276
9.82k
        if (
26277
9.82k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26278
9.82k
            &&
26279
9.82k
            (a = _PyPegen_expect_token(p, 22))  // token='='
26280
9.82k
        )
26281
6
        {
26282
6
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '='"));
26283
6
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "f-string: valid expression required before '='" );
26284
6
            if (_res == NULL && PyErr_Occurred()) {
26285
6
                p->error_indicator = 1;
26286
6
                p->level--;
26287
6
                return NULL;
26288
6
            }
26289
0
            goto done;
26290
6
        }
26291
9.81k
        p->mark = _mark;
26292
9.81k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26293
9.81k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '='"));
26294
9.81k
    }
26295
0
    { // '{' '!'
26296
9.81k
        if (p->error_indicator) {
26297
0
            p->level--;
26298
0
            return NULL;
26299
0
        }
26300
9.81k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '!'"));
26301
9.81k
        Token * _literal;
26302
9.81k
        Token * a;
26303
9.81k
        if (
26304
9.81k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26305
9.81k
            &&
26306
9.81k
            (a = _PyPegen_expect_token(p, 54))  // token='!'
26307
9.81k
        )
26308
10
        {
26309
10
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '!'"));
26310
10
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "f-string: valid expression required before '!'" );
26311
10
            if (_res == NULL && PyErr_Occurred()) {
26312
10
                p->error_indicator = 1;
26313
10
                p->level--;
26314
10
                return NULL;
26315
10
            }
26316
0
            goto done;
26317
10
        }
26318
9.80k
        p->mark = _mark;
26319
9.80k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26320
9.80k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '!'"));
26321
9.80k
    }
26322
0
    { // '{' ':'
26323
9.80k
        if (p->error_indicator) {
26324
0
            p->level--;
26325
0
            return NULL;
26326
0
        }
26327
9.80k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' ':'"));
26328
9.80k
        Token * _literal;
26329
9.80k
        Token * a;
26330
9.80k
        if (
26331
9.80k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26332
9.80k
            &&
26333
9.80k
            (a = _PyPegen_expect_token(p, 11))  // token=':'
26334
9.80k
        )
26335
17
        {
26336
17
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' ':'"));
26337
17
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "f-string: valid expression required before ':'" );
26338
17
            if (_res == NULL && PyErr_Occurred()) {
26339
17
                p->error_indicator = 1;
26340
17
                p->level--;
26341
17
                return NULL;
26342
17
            }
26343
0
            goto done;
26344
17
        }
26345
9.78k
        p->mark = _mark;
26346
9.78k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26347
9.78k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' ':'"));
26348
9.78k
    }
26349
0
    { // '{' '}'
26350
9.78k
        if (p->error_indicator) {
26351
0
            p->level--;
26352
0
            return NULL;
26353
0
        }
26354
9.78k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
26355
9.78k
        Token * _literal;
26356
9.78k
        Token * a;
26357
9.78k
        if (
26358
9.78k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26359
9.78k
            &&
26360
9.78k
            (a = _PyPegen_expect_token(p, 26))  // token='}'
26361
9.78k
        )
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
9.76k
        p->mark = _mark;
26373
9.76k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26374
9.76k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '}'"));
26375
9.76k
    }
26376
0
    { // '{' !annotated_rhs
26377
9.76k
        if (p->error_indicator) {
26378
0
            p->level--;
26379
0
            return NULL;
26380
0
        }
26381
9.76k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' !annotated_rhs"));
26382
9.76k
        Token * _literal;
26383
9.76k
        if (
26384
9.76k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26385
9.76k
            &&
26386
9.76k
            _PyPegen_lookahead_for_expr(0, annotated_rhs_rule, p)
26387
9.76k
        )
26388
33
        {
26389
33
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' !annotated_rhs"));
26390
33
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting a valid expression after '{'" );
26391
33
            if (_res == NULL && PyErr_Occurred()) {
26392
33
                p->error_indicator = 1;
26393
33
                p->level--;
26394
33
                return NULL;
26395
33
            }
26396
0
            goto done;
26397
33
        }
26398
9.73k
        p->mark = _mark;
26399
9.73k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26400
9.73k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' !annotated_rhs"));
26401
9.73k
    }
26402
0
    { // '{' annotated_rhs !('=' | '!' | ':' | '}')
26403
9.73k
        if (p->error_indicator) {
26404
0
            p->level--;
26405
0
            return NULL;
26406
0
        }
26407
9.73k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
26408
9.73k
        Token * _literal;
26409
9.73k
        expr_ty annotated_rhs_var;
26410
9.73k
        if (
26411
9.73k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26412
9.73k
            &&
26413
9.73k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26414
9.73k
            &&
26415
9.73k
            _PyPegen_lookahead(0, _tmp_148_rule, p)
26416
9.73k
        )
26417
60
        {
26418
60
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
26419
60
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting '=', or '!', or ':', or '}'" );
26420
60
            if (_res == NULL && PyErr_Occurred()) {
26421
60
                p->error_indicator = 1;
26422
60
                p->level--;
26423
60
                return NULL;
26424
60
            }
26425
0
            goto done;
26426
60
        }
26427
9.67k
        p->mark = _mark;
26428
9.67k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26429
9.67k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
26430
9.67k
    }
26431
0
    { // '{' annotated_rhs '=' !('!' | ':' | '}')
26432
9.67k
        if (p->error_indicator) {
26433
0
            p->level--;
26434
0
            return NULL;
26435
0
        }
26436
9.67k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
26437
9.67k
        Token * _literal;
26438
9.67k
        Token * _literal_1;
26439
9.67k
        expr_ty annotated_rhs_var;
26440
9.67k
        if (
26441
9.67k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26442
9.67k
            &&
26443
9.67k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26444
9.67k
            &&
26445
9.67k
            (_literal_1 = _PyPegen_expect_token(p, 22))  // token='='
26446
9.67k
            &&
26447
9.67k
            _PyPegen_lookahead(0, _tmp_149_rule, p)
26448
9.67k
        )
26449
12
        {
26450
12
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
26451
12
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting '!', or ':', or '}'" );
26452
12
            if (_res == NULL && PyErr_Occurred()) {
26453
12
                p->error_indicator = 1;
26454
12
                p->level--;
26455
12
                return NULL;
26456
12
            }
26457
0
            goto done;
26458
12
        }
26459
9.66k
        p->mark = _mark;
26460
9.66k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26461
9.66k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
26462
9.66k
    }
26463
0
    { // '{' annotated_rhs '='? invalid_fstring_conversion_character
26464
9.66k
        if (p->error_indicator) {
26465
0
            p->level--;
26466
0
            return NULL;
26467
0
        }
26468
9.66k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? invalid_fstring_conversion_character"));
26469
9.66k
        Token * _literal;
26470
9.66k
        void *_opt_var;
26471
9.66k
        UNUSED(_opt_var); // Silence compiler warnings
26472
9.66k
        expr_ty annotated_rhs_var;
26473
9.66k
        void *invalid_fstring_conversion_character_var;
26474
9.66k
        if (
26475
9.66k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26476
9.66k
            &&
26477
9.66k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26478
9.66k
            &&
26479
9.66k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26480
9.66k
            &&
26481
9.66k
            (invalid_fstring_conversion_character_var = invalid_fstring_conversion_character_rule(p))  // invalid_fstring_conversion_character
26482
9.66k
        )
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
9.66k
        p->mark = _mark;
26489
9.66k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26490
9.66k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? invalid_fstring_conversion_character"));
26491
9.66k
    }
26492
0
    { // '{' annotated_rhs '='? ['!' NAME] !(':' | '}')
26493
9.66k
        if (p->error_indicator) {
26494
17
            p->level--;
26495
17
            return NULL;
26496
17
        }
26497
9.64k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
26498
9.64k
        Token * _literal;
26499
9.64k
        void *_opt_var;
26500
9.64k
        UNUSED(_opt_var); // Silence compiler warnings
26501
9.64k
        void *_opt_var_1;
26502
9.64k
        UNUSED(_opt_var_1); // Silence compiler warnings
26503
9.64k
        expr_ty annotated_rhs_var;
26504
9.64k
        if (
26505
9.64k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26506
9.64k
            &&
26507
9.64k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26508
9.64k
            &&
26509
9.64k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26510
9.64k
            &&
26511
9.64k
            (_opt_var_1 = _tmp_150_rule(p), !p->error_indicator)  // ['!' NAME]
26512
9.64k
            &&
26513
9.64k
            _PyPegen_lookahead(0, _tmp_151_rule, p)
26514
9.64k
        )
26515
5
        {
26516
5
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
26517
5
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting ':' or '}'" );
26518
5
            if (_res == NULL && PyErr_Occurred()) {
26519
5
                p->error_indicator = 1;
26520
5
                p->level--;
26521
5
                return NULL;
26522
5
            }
26523
0
            goto done;
26524
5
        }
26525
9.64k
        p->mark = _mark;
26526
9.64k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26527
9.64k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
26528
9.64k
    }
26529
0
    { // '{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'
26530
9.64k
        if (p->error_indicator) {
26531
0
            p->level--;
26532
0
            return NULL;
26533
0
        }
26534
9.64k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'"));
26535
9.64k
        Token * _literal;
26536
9.64k
        Token * _literal_1;
26537
9.64k
        asdl_seq * _loop0_76_var;
26538
9.64k
        void *_opt_var;
26539
9.64k
        UNUSED(_opt_var); // Silence compiler warnings
26540
9.64k
        void *_opt_var_1;
26541
9.64k
        UNUSED(_opt_var_1); // Silence compiler warnings
26542
9.64k
        expr_ty annotated_rhs_var;
26543
9.64k
        if (
26544
9.64k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26545
9.64k
            &&
26546
9.64k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26547
9.64k
            &&
26548
9.64k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26549
9.64k
            &&
26550
9.64k
            (_opt_var_1 = _tmp_150_rule(p), !p->error_indicator)  // ['!' NAME]
26551
9.64k
            &&
26552
9.64k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
26553
9.64k
            &&
26554
9.64k
            (_loop0_76_var = _loop0_76_rule(p))  // fstring_format_spec*
26555
9.64k
            &&
26556
9.64k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 26)  // token='}'
26557
9.64k
        )
26558
107
        {
26559
107
            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
107
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting '}', or format specs" );
26561
107
            if (_res == NULL && PyErr_Occurred()) {
26562
107
                p->error_indicator = 1;
26563
107
                p->level--;
26564
107
                return NULL;
26565
107
            }
26566
0
            goto done;
26567
107
        }
26568
9.53k
        p->mark = _mark;
26569
9.53k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26570
9.53k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'"));
26571
9.53k
    }
26572
0
    { // '{' annotated_rhs '='? ['!' NAME] !'}'
26573
9.53k
        if (p->error_indicator) {
26574
0
            p->level--;
26575
0
            return NULL;
26576
0
        }
26577
9.53k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
26578
9.53k
        Token * _literal;
26579
9.53k
        void *_opt_var;
26580
9.53k
        UNUSED(_opt_var); // Silence compiler warnings
26581
9.53k
        void *_opt_var_1;
26582
9.53k
        UNUSED(_opt_var_1); // Silence compiler warnings
26583
9.53k
        expr_ty annotated_rhs_var;
26584
9.53k
        if (
26585
9.53k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26586
9.53k
            &&
26587
9.53k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26588
9.53k
            &&
26589
9.53k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26590
9.53k
            &&
26591
9.53k
            (_opt_var_1 = _tmp_150_rule(p), !p->error_indicator)  // ['!' NAME]
26592
9.53k
            &&
26593
9.53k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 26)  // token='}'
26594
9.53k
        )
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
9.53k
        p->mark = _mark;
26606
9.53k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26607
9.53k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
26608
9.53k
    }
26609
0
    _res = NULL;
26610
9.53k
  done:
26611
9.53k
    p->level--;
26612
9.53k
    return _res;
26613
9.53k
}
26614
26615
// invalid_fstring_conversion_character: '!' &(':' | '}') | '!' !NAME
26616
static void *
26617
invalid_fstring_conversion_character_rule(Parser *p)
26618
129
{
26619
129
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26620
0
        _Pypegen_stack_overflow(p);
26621
0
    }
26622
129
    if (p->error_indicator) {
26623
0
        p->level--;
26624
0
        return NULL;
26625
0
    }
26626
129
    void * _res = NULL;
26627
129
    int _mark = p->mark;
26628
129
    { // '!' &(':' | '}')
26629
129
        if (p->error_indicator) {
26630
0
            p->level--;
26631
0
            return NULL;
26632
0
        }
26633
129
        D(fprintf(stderr, "%*c> invalid_fstring_conversion_character[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' &(':' | '}')"));
26634
129
        Token * _literal;
26635
129
        if (
26636
129
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
26637
129
            &&
26638
129
            _PyPegen_lookahead(1, _tmp_151_rule, p)
26639
129
        )
26640
1
        {
26641
1
            D(fprintf(stderr, "%*c+ invalid_fstring_conversion_character[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!' &(':' | '}')"));
26642
1
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: missing conversion character" );
26643
1
            if (_res == NULL && PyErr_Occurred()) {
26644
1
                p->error_indicator = 1;
26645
1
                p->level--;
26646
1
                return NULL;
26647
1
            }
26648
0
            goto done;
26649
1
        }
26650
128
        p->mark = _mark;
26651
128
        D(fprintf(stderr, "%*c%s invalid_fstring_conversion_character[%d-%d]: %s failed!\n", p->level, ' ',
26652
128
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' &(':' | '}')"));
26653
128
    }
26654
0
    { // '!' !NAME
26655
128
        if (p->error_indicator) {
26656
0
            p->level--;
26657
0
            return NULL;
26658
0
        }
26659
128
        D(fprintf(stderr, "%*c> invalid_fstring_conversion_character[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' !NAME"));
26660
128
        Token * _literal;
26661
128
        if (
26662
128
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
26663
128
            &&
26664
128
            _PyPegen_lookahead_for_expr(0, _PyPegen_name_token, p)
26665
128
        )
26666
16
        {
26667
16
            D(fprintf(stderr, "%*c+ invalid_fstring_conversion_character[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!' !NAME"));
26668
16
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: invalid conversion character" );
26669
16
            if (_res == NULL && PyErr_Occurred()) {
26670
16
                p->error_indicator = 1;
26671
16
                p->level--;
26672
16
                return NULL;
26673
16
            }
26674
0
            goto done;
26675
16
        }
26676
112
        p->mark = _mark;
26677
112
        D(fprintf(stderr, "%*c%s invalid_fstring_conversion_character[%d-%d]: %s failed!\n", p->level, ' ',
26678
112
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' !NAME"));
26679
112
    }
26680
0
    _res = NULL;
26681
112
  done:
26682
112
    p->level--;
26683
112
    return _res;
26684
112
}
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.58k
{
26701
4.58k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26702
1
        _Pypegen_stack_overflow(p);
26703
1
    }
26704
4.58k
    if (p->error_indicator) {
26705
1
        p->level--;
26706
1
        return NULL;
26707
1
    }
26708
4.58k
    void * _res = NULL;
26709
4.58k
    int _mark = p->mark;
26710
4.58k
    { // '{' '='
26711
4.58k
        if (p->error_indicator) {
26712
0
            p->level--;
26713
0
            return NULL;
26714
0
        }
26715
4.58k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '='"));
26716
4.58k
        Token * _literal;
26717
4.58k
        Token * a;
26718
4.58k
        if (
26719
4.58k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26720
4.58k
            &&
26721
4.58k
            (a = _PyPegen_expect_token(p, 22))  // token='='
26722
4.58k
        )
26723
5
        {
26724
5
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '='"));
26725
5
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "t-string: valid expression required before '='" );
26726
5
            if (_res == NULL && PyErr_Occurred()) {
26727
5
                p->error_indicator = 1;
26728
5
                p->level--;
26729
5
                return NULL;
26730
5
            }
26731
0
            goto done;
26732
5
        }
26733
4.58k
        p->mark = _mark;
26734
4.58k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26735
4.58k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '='"));
26736
4.58k
    }
26737
0
    { // '{' '!'
26738
4.58k
        if (p->error_indicator) {
26739
0
            p->level--;
26740
0
            return NULL;
26741
0
        }
26742
4.58k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '!'"));
26743
4.58k
        Token * _literal;
26744
4.58k
        Token * a;
26745
4.58k
        if (
26746
4.58k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26747
4.58k
            &&
26748
4.58k
            (a = _PyPegen_expect_token(p, 54))  // token='!'
26749
4.58k
        )
26750
10
        {
26751
10
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '!'"));
26752
10
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "t-string: valid expression required before '!'" );
26753
10
            if (_res == NULL && PyErr_Occurred()) {
26754
10
                p->error_indicator = 1;
26755
10
                p->level--;
26756
10
                return NULL;
26757
10
            }
26758
0
            goto done;
26759
10
        }
26760
4.57k
        p->mark = _mark;
26761
4.57k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26762
4.57k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '!'"));
26763
4.57k
    }
26764
0
    { // '{' ':'
26765
4.57k
        if (p->error_indicator) {
26766
0
            p->level--;
26767
0
            return NULL;
26768
0
        }
26769
4.57k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' ':'"));
26770
4.57k
        Token * _literal;
26771
4.57k
        Token * a;
26772
4.57k
        if (
26773
4.57k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26774
4.57k
            &&
26775
4.57k
            (a = _PyPegen_expect_token(p, 11))  // token=':'
26776
4.57k
        )
26777
24
        {
26778
24
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' ':'"));
26779
24
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "t-string: valid expression required before ':'" );
26780
24
            if (_res == NULL && PyErr_Occurred()) {
26781
24
                p->error_indicator = 1;
26782
24
                p->level--;
26783
24
                return NULL;
26784
24
            }
26785
0
            goto done;
26786
24
        }
26787
4.54k
        p->mark = _mark;
26788
4.54k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26789
4.54k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' ':'"));
26790
4.54k
    }
26791
0
    { // '{' '}'
26792
4.54k
        if (p->error_indicator) {
26793
0
            p->level--;
26794
0
            return NULL;
26795
0
        }
26796
4.54k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
26797
4.54k
        Token * _literal;
26798
4.54k
        Token * a;
26799
4.54k
        if (
26800
4.54k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26801
4.54k
            &&
26802
4.54k
            (a = _PyPegen_expect_token(p, 26))  // token='}'
26803
4.54k
        )
26804
4
        {
26805
4
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
26806
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "t-string: valid expression required before '}'" );
26807
4
            if (_res == NULL && PyErr_Occurred()) {
26808
4
                p->error_indicator = 1;
26809
4
                p->level--;
26810
4
                return NULL;
26811
4
            }
26812
0
            goto done;
26813
4
        }
26814
4.54k
        p->mark = _mark;
26815
4.54k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26816
4.54k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '}'"));
26817
4.54k
    }
26818
0
    { // '{' !annotated_rhs
26819
4.54k
        if (p->error_indicator) {
26820
0
            p->level--;
26821
0
            return NULL;
26822
0
        }
26823
4.54k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' !annotated_rhs"));
26824
4.54k
        Token * _literal;
26825
4.54k
        if (
26826
4.54k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26827
4.54k
            &&
26828
4.54k
            _PyPegen_lookahead_for_expr(0, annotated_rhs_rule, p)
26829
4.54k
        )
26830
17
        {
26831
17
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' !annotated_rhs"));
26832
17
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting a valid expression after '{'" );
26833
17
            if (_res == NULL && PyErr_Occurred()) {
26834
17
                p->error_indicator = 1;
26835
17
                p->level--;
26836
17
                return NULL;
26837
17
            }
26838
0
            goto done;
26839
17
        }
26840
4.52k
        p->mark = _mark;
26841
4.52k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26842
4.52k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' !annotated_rhs"));
26843
4.52k
    }
26844
0
    { // '{' annotated_rhs !('=' | '!' | ':' | '}')
26845
4.52k
        if (p->error_indicator) {
26846
0
            p->level--;
26847
0
            return NULL;
26848
0
        }
26849
4.52k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
26850
4.52k
        Token * _literal;
26851
4.52k
        expr_ty annotated_rhs_var;
26852
4.52k
        if (
26853
4.52k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26854
4.52k
            &&
26855
4.52k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26856
4.52k
            &&
26857
4.52k
            _PyPegen_lookahead(0, _tmp_148_rule, p)
26858
4.52k
        )
26859
36
        {
26860
36
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
26861
36
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting '=', or '!', or ':', or '}'" );
26862
36
            if (_res == NULL && PyErr_Occurred()) {
26863
36
                p->error_indicator = 1;
26864
36
                p->level--;
26865
36
                return NULL;
26866
36
            }
26867
0
            goto done;
26868
36
        }
26869
4.49k
        p->mark = _mark;
26870
4.49k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26871
4.49k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
26872
4.49k
    }
26873
0
    { // '{' annotated_rhs '=' !('!' | ':' | '}')
26874
4.49k
        if (p->error_indicator) {
26875
0
            p->level--;
26876
0
            return NULL;
26877
0
        }
26878
4.49k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
26879
4.49k
        Token * _literal;
26880
4.49k
        Token * _literal_1;
26881
4.49k
        expr_ty annotated_rhs_var;
26882
4.49k
        if (
26883
4.49k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26884
4.49k
            &&
26885
4.49k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26886
4.49k
            &&
26887
4.49k
            (_literal_1 = _PyPegen_expect_token(p, 22))  // token='='
26888
4.49k
            &&
26889
4.49k
            _PyPegen_lookahead(0, _tmp_149_rule, p)
26890
4.49k
        )
26891
3
        {
26892
3
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
26893
3
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting '!', or ':', or '}'" );
26894
3
            if (_res == NULL && PyErr_Occurred()) {
26895
3
                p->error_indicator = 1;
26896
3
                p->level--;
26897
3
                return NULL;
26898
3
            }
26899
0
            goto done;
26900
3
        }
26901
4.48k
        p->mark = _mark;
26902
4.48k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26903
4.48k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
26904
4.48k
    }
26905
0
    { // '{' annotated_rhs '='? invalid_tstring_conversion_character
26906
4.48k
        if (p->error_indicator) {
26907
0
            p->level--;
26908
0
            return NULL;
26909
0
        }
26910
4.48k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? invalid_tstring_conversion_character"));
26911
4.48k
        Token * _literal;
26912
4.48k
        void *_opt_var;
26913
4.48k
        UNUSED(_opt_var); // Silence compiler warnings
26914
4.48k
        expr_ty annotated_rhs_var;
26915
4.48k
        void *invalid_tstring_conversion_character_var;
26916
4.48k
        if (
26917
4.48k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26918
4.48k
            &&
26919
4.48k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26920
4.48k
            &&
26921
4.48k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26922
4.48k
            &&
26923
4.48k
            (invalid_tstring_conversion_character_var = invalid_tstring_conversion_character_rule(p))  // invalid_tstring_conversion_character
26924
4.48k
        )
26925
0
        {
26926
0
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? invalid_tstring_conversion_character"));
26927
0
            _res = _PyPegen_dummy_name(p, _literal, annotated_rhs_var, _opt_var, invalid_tstring_conversion_character_var);
26928
0
            goto done;
26929
0
        }
26930
4.48k
        p->mark = _mark;
26931
4.48k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26932
4.48k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? invalid_tstring_conversion_character"));
26933
4.48k
    }
26934
0
    { // '{' annotated_rhs '='? ['!' NAME] !(':' | '}')
26935
4.48k
        if (p->error_indicator) {
26936
11
            p->level--;
26937
11
            return NULL;
26938
11
        }
26939
4.47k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
26940
4.47k
        Token * _literal;
26941
4.47k
        void *_opt_var;
26942
4.47k
        UNUSED(_opt_var); // Silence compiler warnings
26943
4.47k
        void *_opt_var_1;
26944
4.47k
        UNUSED(_opt_var_1); // Silence compiler warnings
26945
4.47k
        expr_ty annotated_rhs_var;
26946
4.47k
        if (
26947
4.47k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26948
4.47k
            &&
26949
4.47k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26950
4.47k
            &&
26951
4.47k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26952
4.47k
            &&
26953
4.47k
            (_opt_var_1 = _tmp_150_rule(p), !p->error_indicator)  // ['!' NAME]
26954
4.47k
            &&
26955
4.47k
            _PyPegen_lookahead(0, _tmp_151_rule, p)
26956
4.47k
        )
26957
3
        {
26958
3
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
26959
3
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting ':' or '}'" );
26960
3
            if (_res == NULL && PyErr_Occurred()) {
26961
3
                p->error_indicator = 1;
26962
3
                p->level--;
26963
3
                return NULL;
26964
3
            }
26965
0
            goto done;
26966
3
        }
26967
4.47k
        p->mark = _mark;
26968
4.47k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26969
4.47k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
26970
4.47k
    }
26971
0
    { // '{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'
26972
4.47k
        if (p->error_indicator) {
26973
0
            p->level--;
26974
0
            return NULL;
26975
0
        }
26976
4.47k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'"));
26977
4.47k
        Token * _literal;
26978
4.47k
        Token * _literal_1;
26979
4.47k
        asdl_seq * _loop0_76_var;
26980
4.47k
        void *_opt_var;
26981
4.47k
        UNUSED(_opt_var); // Silence compiler warnings
26982
4.47k
        void *_opt_var_1;
26983
4.47k
        UNUSED(_opt_var_1); // Silence compiler warnings
26984
4.47k
        expr_ty annotated_rhs_var;
26985
4.47k
        if (
26986
4.47k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26987
4.47k
            &&
26988
4.47k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26989
4.47k
            &&
26990
4.47k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26991
4.47k
            &&
26992
4.47k
            (_opt_var_1 = _tmp_150_rule(p), !p->error_indicator)  // ['!' NAME]
26993
4.47k
            &&
26994
4.47k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
26995
4.47k
            &&
26996
4.47k
            (_loop0_76_var = _loop0_76_rule(p))  // fstring_format_spec*
26997
4.47k
            &&
26998
4.47k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 26)  // token='}'
26999
4.47k
        )
27000
22
        {
27001
22
            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
22
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting '}', or format specs" );
27003
22
            if (_res == NULL && PyErr_Occurred()) {
27004
22
                p->error_indicator = 1;
27005
22
                p->level--;
27006
22
                return NULL;
27007
22
            }
27008
0
            goto done;
27009
22
        }
27010
4.45k
        p->mark = _mark;
27011
4.45k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
27012
4.45k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'"));
27013
4.45k
    }
27014
0
    { // '{' annotated_rhs '='? ['!' NAME] !'}'
27015
4.45k
        if (p->error_indicator) {
27016
0
            p->level--;
27017
0
            return NULL;
27018
0
        }
27019
4.45k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
27020
4.45k
        Token * _literal;
27021
4.45k
        void *_opt_var;
27022
4.45k
        UNUSED(_opt_var); // Silence compiler warnings
27023
4.45k
        void *_opt_var_1;
27024
4.45k
        UNUSED(_opt_var_1); // Silence compiler warnings
27025
4.45k
        expr_ty annotated_rhs_var;
27026
4.45k
        if (
27027
4.45k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
27028
4.45k
            &&
27029
4.45k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
27030
4.45k
            &&
27031
4.45k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
27032
4.45k
            &&
27033
4.45k
            (_opt_var_1 = _tmp_150_rule(p), !p->error_indicator)  // ['!' NAME]
27034
4.45k
            &&
27035
4.45k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 26)  // token='}'
27036
4.45k
        )
27037
0
        {
27038
0
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
27039
0
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting '}'" );
27040
0
            if (_res == NULL && PyErr_Occurred()) {
27041
0
                p->error_indicator = 1;
27042
0
                p->level--;
27043
0
                return NULL;
27044
0
            }
27045
0
            goto done;
27046
0
        }
27047
4.45k
        p->mark = _mark;
27048
4.45k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
27049
4.45k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
27050
4.45k
    }
27051
0
    _res = NULL;
27052
4.45k
  done:
27053
4.45k
    p->level--;
27054
4.45k
    return _res;
27055
4.45k
}
27056
27057
// invalid_tstring_conversion_character: '!' &(':' | '}') | '!' !NAME
27058
static void *
27059
invalid_tstring_conversion_character_rule(Parser *p)
27060
36
{
27061
36
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27062
0
        _Pypegen_stack_overflow(p);
27063
0
    }
27064
36
    if (p->error_indicator) {
27065
0
        p->level--;
27066
0
        return NULL;
27067
0
    }
27068
36
    void * _res = NULL;
27069
36
    int _mark = p->mark;
27070
36
    { // '!' &(':' | '}')
27071
36
        if (p->error_indicator) {
27072
0
            p->level--;
27073
0
            return NULL;
27074
0
        }
27075
36
        D(fprintf(stderr, "%*c> invalid_tstring_conversion_character[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' &(':' | '}')"));
27076
36
        Token * _literal;
27077
36
        if (
27078
36
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
27079
36
            &&
27080
36
            _PyPegen_lookahead(1, _tmp_151_rule, p)
27081
36
        )
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
35
        p->mark = _mark;
27093
35
        D(fprintf(stderr, "%*c%s invalid_tstring_conversion_character[%d-%d]: %s failed!\n", p->level, ' ',
27094
35
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' &(':' | '}')"));
27095
35
    }
27096
0
    { // '!' !NAME
27097
35
        if (p->error_indicator) {
27098
0
            p->level--;
27099
0
            return NULL;
27100
0
        }
27101
35
        D(fprintf(stderr, "%*c> invalid_tstring_conversion_character[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' !NAME"));
27102
35
        Token * _literal;
27103
35
        if (
27104
35
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
27105
35
            &&
27106
35
            _PyPegen_lookahead_for_expr(0, _PyPegen_name_token, p)
27107
35
        )
27108
10
        {
27109
10
            D(fprintf(stderr, "%*c+ invalid_tstring_conversion_character[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!' !NAME"));
27110
10
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: invalid conversion character" );
27111
10
            if (_res == NULL && PyErr_Occurred()) {
27112
10
                p->error_indicator = 1;
27113
10
                p->level--;
27114
10
                return NULL;
27115
10
            }
27116
0
            goto done;
27117
10
        }
27118
25
        p->mark = _mark;
27119
25
        D(fprintf(stderr, "%*c%s invalid_tstring_conversion_character[%d-%d]: %s failed!\n", p->level, ' ',
27120
25
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' !NAME"));
27121
25
    }
27122
0
    _res = NULL;
27123
25
  done:
27124
25
    p->level--;
27125
25
    return _res;
27126
25
}
27127
27128
// invalid_arithmetic: sum ('+' | '-' | '*' | '/' | '%' | '//' | '@') 'not' inversion
27129
static void *
27130
invalid_arithmetic_rule(Parser *p)
27131
443k
{
27132
443k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27133
0
        _Pypegen_stack_overflow(p);
27134
0
    }
27135
443k
    if (p->error_indicator) {
27136
0
        p->level--;
27137
0
        return NULL;
27138
0
    }
27139
443k
    void * _res = NULL;
27140
443k
    int _mark = p->mark;
27141
443k
    { // sum ('+' | '-' | '*' | '/' | '%' | '//' | '@') 'not' inversion
27142
443k
        if (p->error_indicator) {
27143
0
            p->level--;
27144
0
            return NULL;
27145
0
        }
27146
443k
        D(fprintf(stderr, "%*c> invalid_arithmetic[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum ('+' | '-' | '*' | '/' | '%' | '//' | '@') 'not' inversion"));
27147
443k
        void *_tmp_152_var;
27148
443k
        Token * a;
27149
443k
        expr_ty b;
27150
443k
        expr_ty sum_var;
27151
443k
        if (
27152
443k
            (sum_var = sum_rule(p))  // sum
27153
443k
            &&
27154
443k
            (_tmp_152_var = _tmp_152_rule(p))  // '+' | '-' | '*' | '/' | '%' | '//' | '@'
27155
443k
            &&
27156
443k
            (a = _PyPegen_expect_token(p, 708))  // token='not'
27157
443k
            &&
27158
443k
            (b = inversion_rule(p))  // inversion
27159
443k
        )
27160
11
        {
27161
11
            D(fprintf(stderr, "%*c+ invalid_arithmetic[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum ('+' | '-' | '*' | '/' | '%' | '//' | '@') 'not' inversion"));
27162
11
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "'not' after an operator must be parenthesized" );
27163
11
            if (_res == NULL && PyErr_Occurred()) {
27164
11
                p->error_indicator = 1;
27165
11
                p->level--;
27166
11
                return NULL;
27167
11
            }
27168
0
            goto done;
27169
11
        }
27170
443k
        p->mark = _mark;
27171
443k
        D(fprintf(stderr, "%*c%s invalid_arithmetic[%d-%d]: %s failed!\n", p->level, ' ',
27172
443k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum ('+' | '-' | '*' | '/' | '%' | '//' | '@') 'not' inversion"));
27173
443k
    }
27174
0
    _res = NULL;
27175
443k
  done:
27176
443k
    p->level--;
27177
443k
    return _res;
27178
443k
}
27179
27180
// invalid_factor: ('+' | '-' | '~') 'not' factor
27181
static void *
27182
invalid_factor_rule(Parser *p)
27183
480k
{
27184
480k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27185
0
        _Pypegen_stack_overflow(p);
27186
0
    }
27187
480k
    if (p->error_indicator) {
27188
0
        p->level--;
27189
0
        return NULL;
27190
0
    }
27191
480k
    void * _res = NULL;
27192
480k
    int _mark = p->mark;
27193
480k
    { // ('+' | '-' | '~') 'not' factor
27194
480k
        if (p->error_indicator) {
27195
0
            p->level--;
27196
0
            return NULL;
27197
0
        }
27198
480k
        D(fprintf(stderr, "%*c> invalid_factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('+' | '-' | '~') 'not' factor"));
27199
480k
        void *_tmp_153_var;
27200
480k
        Token * a;
27201
480k
        expr_ty b;
27202
480k
        if (
27203
480k
            (_tmp_153_var = _tmp_153_rule(p))  // '+' | '-' | '~'
27204
480k
            &&
27205
480k
            (a = _PyPegen_expect_token(p, 708))  // token='not'
27206
480k
            &&
27207
480k
            (b = factor_rule(p))  // factor
27208
480k
        )
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
480k
        p->mark = _mark;
27220
480k
        D(fprintf(stderr, "%*c%s invalid_factor[%d-%d]: %s failed!\n", p->level, ' ',
27221
480k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('+' | '-' | '~') 'not' factor"));
27222
480k
    }
27223
0
    _res = NULL;
27224
480k
  done:
27225
480k
    p->level--;
27226
480k
    return _res;
27227
480k
}
27228
27229
// invalid_type_params: '[' ']'
27230
static void *
27231
invalid_type_params_rule(Parser *p)
27232
13.8k
{
27233
13.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27234
0
        _Pypegen_stack_overflow(p);
27235
0
    }
27236
13.8k
    if (p->error_indicator) {
27237
0
        p->level--;
27238
0
        return NULL;
27239
0
    }
27240
13.8k
    void * _res = NULL;
27241
13.8k
    int _mark = p->mark;
27242
13.8k
    { // '[' ']'
27243
13.8k
        if (p->error_indicator) {
27244
0
            p->level--;
27245
0
            return NULL;
27246
0
        }
27247
13.8k
        D(fprintf(stderr, "%*c> invalid_type_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' ']'"));
27248
13.8k
        Token * _literal;
27249
13.8k
        Token * token;
27250
13.8k
        if (
27251
13.8k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
27252
13.8k
            &&
27253
13.8k
            (token = _PyPegen_expect_token(p, 10))  // token=']'
27254
13.8k
        )
27255
5
        {
27256
5
            D(fprintf(stderr, "%*c+ invalid_type_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' ']'"));
27257
5
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( token , "Type parameter list cannot be empty" );
27258
5
            if (_res == NULL && PyErr_Occurred()) {
27259
5
                p->error_indicator = 1;
27260
5
                p->level--;
27261
5
                return NULL;
27262
5
            }
27263
0
            goto done;
27264
5
        }
27265
13.8k
        p->mark = _mark;
27266
13.8k
        D(fprintf(stderr, "%*c%s invalid_type_params[%d-%d]: %s failed!\n", p->level, ' ',
27267
13.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' ']'"));
27268
13.8k
    }
27269
0
    _res = NULL;
27270
13.8k
  done:
27271
13.8k
    p->level--;
27272
13.8k
    return _res;
27273
13.8k
}
27274
27275
// _loop0_1: NEWLINE
27276
static asdl_seq *
27277
_loop0_1_rule(Parser *p)
27278
3.48k
{
27279
3.48k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27280
0
        _Pypegen_stack_overflow(p);
27281
0
    }
27282
3.48k
    if (p->error_indicator) {
27283
0
        p->level--;
27284
0
        return NULL;
27285
0
    }
27286
3.48k
    void *_res = NULL;
27287
3.48k
    int _mark = p->mark;
27288
3.48k
    void **_children = PyMem_Malloc(sizeof(void *));
27289
3.48k
    if (!_children) {
27290
0
        p->error_indicator = 1;
27291
0
        PyErr_NoMemory();
27292
0
        p->level--;
27293
0
        return NULL;
27294
0
    }
27295
3.48k
    Py_ssize_t _children_capacity = 1;
27296
3.48k
    Py_ssize_t _n = 0;
27297
3.48k
    { // NEWLINE
27298
3.48k
        if (p->error_indicator) {
27299
0
            p->level--;
27300
0
            return NULL;
27301
0
        }
27302
3.48k
        D(fprintf(stderr, "%*c> _loop0_1[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
27303
3.48k
        Token * newline_var;
27304
3.48k
        while (
27305
3.52k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
27306
3.48k
        )
27307
43
        {
27308
43
            _res = newline_var;
27309
43
            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
43
            _children[_n++] = _res;
27322
43
            _mark = p->mark;
27323
43
        }
27324
3.48k
        p->mark = _mark;
27325
3.48k
        D(fprintf(stderr, "%*c%s _loop0_1[%d-%d]: %s failed!\n", p->level, ' ',
27326
3.48k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
27327
3.48k
    }
27328
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27329
3.48k
    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
3.52k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27337
3.48k
    PyMem_Free(_children);
27338
3.48k
    p->level--;
27339
3.48k
    return _seq;
27340
3.48k
}
27341
27342
// _loop1_2: statement
27343
static asdl_seq *
27344
_loop1_2_rule(Parser *p)
27345
43.8k
{
27346
43.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27347
0
        _Pypegen_stack_overflow(p);
27348
0
    }
27349
43.8k
    if (p->error_indicator) {
27350
0
        p->level--;
27351
0
        return NULL;
27352
0
    }
27353
43.8k
    void *_res = NULL;
27354
43.8k
    int _mark = p->mark;
27355
43.8k
    void **_children = PyMem_Malloc(sizeof(void *));
27356
43.8k
    if (!_children) {
27357
0
        p->error_indicator = 1;
27358
0
        PyErr_NoMemory();
27359
0
        p->level--;
27360
0
        return NULL;
27361
0
    }
27362
43.8k
    Py_ssize_t _children_capacity = 1;
27363
43.8k
    Py_ssize_t _n = 0;
27364
43.8k
    { // statement
27365
43.8k
        if (p->error_indicator) {
27366
0
            p->level--;
27367
0
            return NULL;
27368
0
        }
27369
43.8k
        D(fprintf(stderr, "%*c> _loop1_2[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement"));
27370
43.8k
        asdl_stmt_seq* statement_var;
27371
43.8k
        while (
27372
226k
            (statement_var = statement_rule(p))  // statement
27373
43.8k
        )
27374
182k
        {
27375
182k
            _res = statement_var;
27376
182k
            if (_n == _children_capacity) {
27377
23.9k
                _children_capacity *= 2;
27378
23.9k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27379
23.9k
                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
23.9k
                _children = _new_children;
27387
23.9k
            }
27388
182k
            _children[_n++] = _res;
27389
182k
            _mark = p->mark;
27390
182k
        }
27391
43.8k
        p->mark = _mark;
27392
43.8k
        D(fprintf(stderr, "%*c%s _loop1_2[%d-%d]: %s failed!\n", p->level, ' ',
27393
43.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement"));
27394
43.8k
    }
27395
43.8k
    if (_n == 0 || p->error_indicator) {
27396
9.22k
        PyMem_Free(_children);
27397
9.22k
        p->level--;
27398
9.22k
        return NULL;
27399
9.22k
    }
27400
34.6k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27401
34.6k
    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
210k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27409
34.6k
    PyMem_Free(_children);
27410
34.6k
    p->level--;
27411
34.6k
    return _seq;
27412
34.6k
}
27413
27414
// _loop0_3: ';' simple_stmt
27415
static asdl_seq *
27416
_loop0_3_rule(Parser *p)
27417
30.8k
{
27418
30.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27419
0
        _Pypegen_stack_overflow(p);
27420
0
    }
27421
30.8k
    if (p->error_indicator) {
27422
0
        p->level--;
27423
0
        return NULL;
27424
0
    }
27425
30.8k
    void *_res = NULL;
27426
30.8k
    int _mark = p->mark;
27427
30.8k
    void **_children = PyMem_Malloc(sizeof(void *));
27428
30.8k
    if (!_children) {
27429
0
        p->error_indicator = 1;
27430
0
        PyErr_NoMemory();
27431
0
        p->level--;
27432
0
        return NULL;
27433
0
    }
27434
30.8k
    Py_ssize_t _children_capacity = 1;
27435
30.8k
    Py_ssize_t _n = 0;
27436
30.8k
    { // ';' simple_stmt
27437
30.8k
        if (p->error_indicator) {
27438
0
            p->level--;
27439
0
            return NULL;
27440
0
        }
27441
30.8k
        D(fprintf(stderr, "%*c> _loop0_3[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';' simple_stmt"));
27442
30.8k
        Token * _literal;
27443
30.8k
        stmt_ty elem;
27444
30.8k
        while (
27445
119k
            (_literal = _PyPegen_expect_token(p, 13))  // token=';'
27446
119k
            &&
27447
119k
            (elem = simple_stmt_rule(p))  // simple_stmt
27448
30.8k
        )
27449
89.1k
        {
27450
89.1k
            _res = elem;
27451
89.1k
            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
89.1k
            if (_n == _children_capacity) {
27458
20.1k
                _children_capacity *= 2;
27459
20.1k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27460
20.1k
                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
20.1k
                _children = _new_children;
27468
20.1k
            }
27469
89.1k
            _children[_n++] = _res;
27470
89.1k
            _mark = p->mark;
27471
89.1k
        }
27472
30.8k
        p->mark = _mark;
27473
30.8k
        D(fprintf(stderr, "%*c%s _loop0_3[%d-%d]: %s failed!\n", p->level, ' ',
27474
30.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';' simple_stmt"));
27475
30.8k
    }
27476
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27477
30.8k
    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
119k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27485
30.8k
    PyMem_Free(_children);
27486
30.8k
    p->level--;
27487
30.8k
    return _seq;
27488
30.8k
}
27489
27490
// _gather_4: simple_stmt _loop0_3
27491
static asdl_seq *
27492
_gather_4_rule(Parser *p)
27493
71.8k
{
27494
71.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27495
0
        _Pypegen_stack_overflow(p);
27496
0
    }
27497
71.8k
    if (p->error_indicator) {
27498
0
        p->level--;
27499
0
        return NULL;
27500
0
    }
27501
71.8k
    asdl_seq * _res = NULL;
27502
71.8k
    int _mark = p->mark;
27503
71.8k
    { // simple_stmt _loop0_3
27504
71.8k
        if (p->error_indicator) {
27505
0
            p->level--;
27506
0
            return NULL;
27507
0
        }
27508
71.8k
        D(fprintf(stderr, "%*c> _gather_4[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt _loop0_3"));
27509
71.8k
        stmt_ty elem;
27510
71.8k
        asdl_seq * seq;
27511
71.8k
        if (
27512
71.8k
            (elem = simple_stmt_rule(p))  // simple_stmt
27513
71.8k
            &&
27514
71.8k
            (seq = _loop0_3_rule(p))  // _loop0_3
27515
71.8k
        )
27516
30.8k
        {
27517
30.8k
            D(fprintf(stderr, "%*c+ _gather_4[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt _loop0_3"));
27518
30.8k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
27519
30.8k
            goto done;
27520
30.8k
        }
27521
41.0k
        p->mark = _mark;
27522
41.0k
        D(fprintf(stderr, "%*c%s _gather_4[%d-%d]: %s failed!\n", p->level, ' ',
27523
41.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt _loop0_3"));
27524
41.0k
    }
27525
0
    _res = NULL;
27526
71.8k
  done:
27527
71.8k
    p->level--;
27528
71.8k
    return _res;
27529
41.0k
}
27530
27531
// _tmp_5: 'import' | 'from'
27532
static void *
27533
_tmp_5_rule(Parser *p)
27534
76.5k
{
27535
76.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27536
0
        _Pypegen_stack_overflow(p);
27537
0
    }
27538
76.5k
    if (p->error_indicator) {
27539
0
        p->level--;
27540
0
        return NULL;
27541
0
    }
27542
76.5k
    void * _res = NULL;
27543
76.5k
    int _mark = p->mark;
27544
76.5k
    { // 'import'
27545
76.5k
        if (p->error_indicator) {
27546
0
            p->level--;
27547
0
            return NULL;
27548
0
        }
27549
76.5k
        D(fprintf(stderr, "%*c> _tmp_5[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import'"));
27550
76.5k
        Token * _keyword;
27551
76.5k
        if (
27552
76.5k
            (_keyword = _PyPegen_expect_token(p, 639))  // token='import'
27553
76.5k
        )
27554
5.08k
        {
27555
5.08k
            D(fprintf(stderr, "%*c+ _tmp_5[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import'"));
27556
5.08k
            _res = _keyword;
27557
5.08k
            goto done;
27558
5.08k
        }
27559
71.4k
        p->mark = _mark;
27560
71.4k
        D(fprintf(stderr, "%*c%s _tmp_5[%d-%d]: %s failed!\n", p->level, ' ',
27561
71.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import'"));
27562
71.4k
    }
27563
0
    { // 'from'
27564
71.4k
        if (p->error_indicator) {
27565
0
            p->level--;
27566
0
            return NULL;
27567
0
        }
27568
71.4k
        D(fprintf(stderr, "%*c> _tmp_5[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from'"));
27569
71.4k
        Token * _keyword;
27570
71.4k
        if (
27571
71.4k
            (_keyword = _PyPegen_expect_token(p, 638))  // token='from'
27572
71.4k
        )
27573
6.45k
        {
27574
6.45k
            D(fprintf(stderr, "%*c+ _tmp_5[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from'"));
27575
6.45k
            _res = _keyword;
27576
6.45k
            goto done;
27577
6.45k
        }
27578
64.9k
        p->mark = _mark;
27579
64.9k
        D(fprintf(stderr, "%*c%s _tmp_5[%d-%d]: %s failed!\n", p->level, ' ',
27580
64.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from'"));
27581
64.9k
    }
27582
0
    _res = NULL;
27583
76.5k
  done:
27584
76.5k
    p->level--;
27585
76.5k
    return _res;
27586
64.9k
}
27587
27588
// _tmp_6: 'def' | '@' | 'async'
27589
static void *
27590
_tmp_6_rule(Parser *p)
27591
236k
{
27592
236k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27593
0
        _Pypegen_stack_overflow(p);
27594
0
    }
27595
236k
    if (p->error_indicator) {
27596
0
        p->level--;
27597
0
        return NULL;
27598
0
    }
27599
236k
    void * _res = NULL;
27600
236k
    int _mark = p->mark;
27601
236k
    { // 'def'
27602
236k
        if (p->error_indicator) {
27603
0
            p->level--;
27604
0
            return NULL;
27605
0
        }
27606
236k
        D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'def'"));
27607
236k
        Token * _keyword;
27608
236k
        if (
27609
236k
            (_keyword = _PyPegen_expect_token(p, 704))  // token='def'
27610
236k
        )
27611
10.4k
        {
27612
10.4k
            D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'def'"));
27613
10.4k
            _res = _keyword;
27614
10.4k
            goto done;
27615
10.4k
        }
27616
225k
        p->mark = _mark;
27617
225k
        D(fprintf(stderr, "%*c%s _tmp_6[%d-%d]: %s failed!\n", p->level, ' ',
27618
225k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'def'"));
27619
225k
    }
27620
0
    { // '@'
27621
225k
        if (p->error_indicator) {
27622
379
            p->level--;
27623
379
            return NULL;
27624
379
        }
27625
225k
        D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
27626
225k
        Token * _literal;
27627
225k
        if (
27628
225k
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
27629
225k
        )
27630
2.99k
        {
27631
2.99k
            D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
27632
2.99k
            _res = _literal;
27633
2.99k
            goto done;
27634
2.99k
        }
27635
222k
        p->mark = _mark;
27636
222k
        D(fprintf(stderr, "%*c%s _tmp_6[%d-%d]: %s failed!\n", p->level, ' ',
27637
222k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
27638
222k
    }
27639
0
    { // 'async'
27640
222k
        if (p->error_indicator) {
27641
0
            p->level--;
27642
0
            return NULL;
27643
0
        }
27644
222k
        D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'"));
27645
222k
        Token * _keyword;
27646
222k
        if (
27647
222k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
27648
222k
        )
27649
9.99k
        {
27650
9.99k
            D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'"));
27651
9.99k
            _res = _keyword;
27652
9.99k
            goto done;
27653
9.99k
        }
27654
212k
        p->mark = _mark;
27655
212k
        D(fprintf(stderr, "%*c%s _tmp_6[%d-%d]: %s failed!\n", p->level, ' ',
27656
212k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'"));
27657
212k
    }
27658
0
    _res = NULL;
27659
235k
  done:
27660
235k
    p->level--;
27661
235k
    return _res;
27662
212k
}
27663
27664
// _tmp_7: 'class' | '@'
27665
static void *
27666
_tmp_7_rule(Parser *p)
27667
216k
{
27668
216k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27669
0
        _Pypegen_stack_overflow(p);
27670
0
    }
27671
216k
    if (p->error_indicator) {
27672
0
        p->level--;
27673
0
        return NULL;
27674
0
    }
27675
216k
    void * _res = NULL;
27676
216k
    int _mark = p->mark;
27677
216k
    { // 'class'
27678
216k
        if (p->error_indicator) {
27679
0
            p->level--;
27680
0
            return NULL;
27681
0
        }
27682
216k
        D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class'"));
27683
216k
        Token * _keyword;
27684
216k
        if (
27685
216k
            (_keyword = _PyPegen_expect_token(p, 706))  // token='class'
27686
216k
        )
27687
16.2k
        {
27688
16.2k
            D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class'"));
27689
16.2k
            _res = _keyword;
27690
16.2k
            goto done;
27691
16.2k
        }
27692
200k
        p->mark = _mark;
27693
200k
        D(fprintf(stderr, "%*c%s _tmp_7[%d-%d]: %s failed!\n", p->level, ' ',
27694
200k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class'"));
27695
200k
    }
27696
0
    { // '@'
27697
200k
        if (p->error_indicator) {
27698
0
            p->level--;
27699
0
            return NULL;
27700
0
        }
27701
200k
        D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
27702
200k
        Token * _literal;
27703
200k
        if (
27704
200k
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
27705
200k
        )
27706
1.26k
        {
27707
1.26k
            D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
27708
1.26k
            _res = _literal;
27709
1.26k
            goto done;
27710
1.26k
        }
27711
198k
        p->mark = _mark;
27712
198k
        D(fprintf(stderr, "%*c%s _tmp_7[%d-%d]: %s failed!\n", p->level, ' ',
27713
198k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
27714
198k
    }
27715
0
    _res = NULL;
27716
216k
  done:
27717
216k
    p->level--;
27718
216k
    return _res;
27719
198k
}
27720
27721
// _tmp_8: 'with' | 'async'
27722
static void *
27723
_tmp_8_rule(Parser *p)
27724
199k
{
27725
199k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27726
0
        _Pypegen_stack_overflow(p);
27727
0
    }
27728
199k
    if (p->error_indicator) {
27729
0
        p->level--;
27730
0
        return NULL;
27731
0
    }
27732
199k
    void * _res = NULL;
27733
199k
    int _mark = p->mark;
27734
199k
    { // 'with'
27735
199k
        if (p->error_indicator) {
27736
0
            p->level--;
27737
0
            return NULL;
27738
0
        }
27739
199k
        D(fprintf(stderr, "%*c> _tmp_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with'"));
27740
199k
        Token * _keyword;
27741
199k
        if (
27742
199k
            (_keyword = _PyPegen_expect_token(p, 652))  // token='with'
27743
199k
        )
27744
6.41k
        {
27745
6.41k
            D(fprintf(stderr, "%*c+ _tmp_8[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with'"));
27746
6.41k
            _res = _keyword;
27747
6.41k
            goto done;
27748
6.41k
        }
27749
192k
        p->mark = _mark;
27750
192k
        D(fprintf(stderr, "%*c%s _tmp_8[%d-%d]: %s failed!\n", p->level, ' ',
27751
192k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with'"));
27752
192k
    }
27753
0
    { // 'async'
27754
192k
        if (p->error_indicator) {
27755
0
            p->level--;
27756
0
            return NULL;
27757
0
        }
27758
192k
        D(fprintf(stderr, "%*c> _tmp_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'"));
27759
192k
        Token * _keyword;
27760
192k
        if (
27761
192k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
27762
192k
        )
27763
4.91k
        {
27764
4.91k
            D(fprintf(stderr, "%*c+ _tmp_8[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'"));
27765
4.91k
            _res = _keyword;
27766
4.91k
            goto done;
27767
4.91k
        }
27768
187k
        p->mark = _mark;
27769
187k
        D(fprintf(stderr, "%*c%s _tmp_8[%d-%d]: %s failed!\n", p->level, ' ',
27770
187k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'"));
27771
187k
    }
27772
0
    _res = NULL;
27773
199k
  done:
27774
199k
    p->level--;
27775
199k
    return _res;
27776
187k
}
27777
27778
// _tmp_9: 'for' | 'async'
27779
static void *
27780
_tmp_9_rule(Parser *p)
27781
190k
{
27782
190k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27783
0
        _Pypegen_stack_overflow(p);
27784
0
    }
27785
190k
    if (p->error_indicator) {
27786
0
        p->level--;
27787
0
        return NULL;
27788
0
    }
27789
190k
    void * _res = NULL;
27790
190k
    int _mark = p->mark;
27791
190k
    { // 'for'
27792
190k
        if (p->error_indicator) {
27793
0
            p->level--;
27794
0
            return NULL;
27795
0
        }
27796
190k
        D(fprintf(stderr, "%*c> _tmp_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for'"));
27797
190k
        Token * _keyword;
27798
190k
        if (
27799
190k
            (_keyword = _PyPegen_expect_token(p, 699))  // token='for'
27800
190k
        )
27801
353
        {
27802
353
            D(fprintf(stderr, "%*c+ _tmp_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for'"));
27803
353
            _res = _keyword;
27804
353
            goto done;
27805
353
        }
27806
189k
        p->mark = _mark;
27807
189k
        D(fprintf(stderr, "%*c%s _tmp_9[%d-%d]: %s failed!\n", p->level, ' ',
27808
189k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for'"));
27809
189k
    }
27810
0
    { // 'async'
27811
189k
        if (p->error_indicator) {
27812
0
            p->level--;
27813
0
            return NULL;
27814
0
        }
27815
189k
        D(fprintf(stderr, "%*c> _tmp_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'"));
27816
189k
        Token * _keyword;
27817
189k
        if (
27818
189k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
27819
189k
        )
27820
1.95k
        {
27821
1.95k
            D(fprintf(stderr, "%*c+ _tmp_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'"));
27822
1.95k
            _res = _keyword;
27823
1.95k
            goto done;
27824
1.95k
        }
27825
187k
        p->mark = _mark;
27826
187k
        D(fprintf(stderr, "%*c%s _tmp_9[%d-%d]: %s failed!\n", p->level, ' ',
27827
187k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'"));
27828
187k
    }
27829
0
    _res = NULL;
27830
190k
  done:
27831
190k
    p->level--;
27832
190k
    return _res;
27833
187k
}
27834
27835
// _tmp_10: '=' annotated_rhs
27836
static void *
27837
_tmp_10_rule(Parser *p)
27838
17.8k
{
27839
17.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27840
0
        _Pypegen_stack_overflow(p);
27841
0
    }
27842
17.8k
    if (p->error_indicator) {
27843
0
        p->level--;
27844
0
        return NULL;
27845
0
    }
27846
17.8k
    void * _res = NULL;
27847
17.8k
    int _mark = p->mark;
27848
17.8k
    { // '=' annotated_rhs
27849
17.8k
        if (p->error_indicator) {
27850
0
            p->level--;
27851
0
            return NULL;
27852
0
        }
27853
17.8k
        D(fprintf(stderr, "%*c> _tmp_10[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
27854
17.8k
        Token * _literal;
27855
17.8k
        expr_ty d;
27856
17.8k
        if (
27857
17.8k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
27858
17.8k
            &&
27859
17.8k
            (d = annotated_rhs_rule(p))  // annotated_rhs
27860
17.8k
        )
27861
922
        {
27862
922
            D(fprintf(stderr, "%*c+ _tmp_10[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
27863
922
            _res = d;
27864
922
            if (_res == NULL && PyErr_Occurred()) {
27865
0
                p->error_indicator = 1;
27866
0
                p->level--;
27867
0
                return NULL;
27868
0
            }
27869
922
            goto done;
27870
922
        }
27871
16.9k
        p->mark = _mark;
27872
16.9k
        D(fprintf(stderr, "%*c%s _tmp_10[%d-%d]: %s failed!\n", p->level, ' ',
27873
16.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' annotated_rhs"));
27874
16.9k
    }
27875
0
    _res = NULL;
27876
17.8k
  done:
27877
17.8k
    p->level--;
27878
17.8k
    return _res;
27879
16.9k
}
27880
27881
// _tmp_11: '(' single_target ')' | single_subscript_attribute_target
27882
static void *
27883
_tmp_11_rule(Parser *p)
27884
318k
{
27885
318k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27886
0
        _Pypegen_stack_overflow(p);
27887
0
    }
27888
318k
    if (p->error_indicator) {
27889
0
        p->level--;
27890
0
        return NULL;
27891
0
    }
27892
318k
    void * _res = NULL;
27893
318k
    int _mark = p->mark;
27894
318k
    { // '(' single_target ')'
27895
318k
        if (p->error_indicator) {
27896
0
            p->level--;
27897
0
            return NULL;
27898
0
        }
27899
318k
        D(fprintf(stderr, "%*c> _tmp_11[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
27900
318k
        Token * _literal;
27901
318k
        Token * _literal_1;
27902
318k
        expr_ty b;
27903
318k
        if (
27904
318k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
27905
318k
            &&
27906
318k
            (b = single_target_rule(p))  // single_target
27907
318k
            &&
27908
318k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
27909
318k
        )
27910
809
        {
27911
809
            D(fprintf(stderr, "%*c+ _tmp_11[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
27912
809
            _res = b;
27913
809
            if (_res == NULL && PyErr_Occurred()) {
27914
0
                p->error_indicator = 1;
27915
0
                p->level--;
27916
0
                return NULL;
27917
0
            }
27918
809
            goto done;
27919
809
        }
27920
317k
        p->mark = _mark;
27921
317k
        D(fprintf(stderr, "%*c%s _tmp_11[%d-%d]: %s failed!\n", p->level, ' ',
27922
317k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' single_target ')'"));
27923
317k
    }
27924
0
    { // single_subscript_attribute_target
27925
317k
        if (p->error_indicator) {
27926
72
            p->level--;
27927
72
            return NULL;
27928
72
        }
27929
317k
        D(fprintf(stderr, "%*c> _tmp_11[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
27930
317k
        expr_ty single_subscript_attribute_target_var;
27931
317k
        if (
27932
317k
            (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p))  // single_subscript_attribute_target
27933
317k
        )
27934
13.4k
        {
27935
13.4k
            D(fprintf(stderr, "%*c+ _tmp_11[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
27936
13.4k
            _res = single_subscript_attribute_target_var;
27937
13.4k
            goto done;
27938
13.4k
        }
27939
303k
        p->mark = _mark;
27940
303k
        D(fprintf(stderr, "%*c%s _tmp_11[%d-%d]: %s failed!\n", p->level, ' ',
27941
303k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_subscript_attribute_target"));
27942
303k
    }
27943
0
    _res = NULL;
27944
318k
  done:
27945
318k
    p->level--;
27946
318k
    return _res;
27947
303k
}
27948
27949
// _loop1_12: (star_targets '=')
27950
static asdl_seq *
27951
_loop1_12_rule(Parser *p)
27952
314k
{
27953
314k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27954
0
        _Pypegen_stack_overflow(p);
27955
0
    }
27956
314k
    if (p->error_indicator) {
27957
0
        p->level--;
27958
0
        return NULL;
27959
0
    }
27960
314k
    void *_res = NULL;
27961
314k
    int _mark = p->mark;
27962
314k
    void **_children = PyMem_Malloc(sizeof(void *));
27963
314k
    if (!_children) {
27964
0
        p->error_indicator = 1;
27965
0
        PyErr_NoMemory();
27966
0
        p->level--;
27967
0
        return NULL;
27968
0
    }
27969
314k
    Py_ssize_t _children_capacity = 1;
27970
314k
    Py_ssize_t _n = 0;
27971
314k
    { // (star_targets '=')
27972
314k
        if (p->error_indicator) {
27973
0
            p->level--;
27974
0
            return NULL;
27975
0
        }
27976
314k
        D(fprintf(stderr, "%*c> _loop1_12[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
27977
314k
        void *_tmp_154_var;
27978
314k
        while (
27979
390k
            (_tmp_154_var = _tmp_154_rule(p))  // star_targets '='
27980
314k
        )
27981
75.2k
        {
27982
75.2k
            _res = _tmp_154_var;
27983
75.2k
            if (_n == _children_capacity) {
27984
23.1k
                _children_capacity *= 2;
27985
23.1k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27986
23.1k
                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
23.1k
                _children = _new_children;
27994
23.1k
            }
27995
75.2k
            _children[_n++] = _res;
27996
75.2k
            _mark = p->mark;
27997
75.2k
        }
27998
314k
        p->mark = _mark;
27999
314k
        D(fprintf(stderr, "%*c%s _loop1_12[%d-%d]: %s failed!\n", p->level, ' ',
28000
314k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
28001
314k
    }
28002
314k
    if (_n == 0 || p->error_indicator) {
28003
298k
        PyMem_Free(_children);
28004
298k
        p->level--;
28005
298k
        return NULL;
28006
298k
    }
28007
16.3k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28008
16.3k
    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
91.6k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28016
16.3k
    PyMem_Free(_children);
28017
16.3k
    p->level--;
28018
16.3k
    return _seq;
28019
16.3k
}
28020
28021
// _loop0_13: ',' NAME
28022
static asdl_seq *
28023
_loop0_13_rule(Parser *p)
28024
2.00k
{
28025
2.00k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28026
0
        _Pypegen_stack_overflow(p);
28027
0
    }
28028
2.00k
    if (p->error_indicator) {
28029
0
        p->level--;
28030
0
        return NULL;
28031
0
    }
28032
2.00k
    void *_res = NULL;
28033
2.00k
    int _mark = p->mark;
28034
2.00k
    void **_children = PyMem_Malloc(sizeof(void *));
28035
2.00k
    if (!_children) {
28036
0
        p->error_indicator = 1;
28037
0
        PyErr_NoMemory();
28038
0
        p->level--;
28039
0
        return NULL;
28040
0
    }
28041
2.00k
    Py_ssize_t _children_capacity = 1;
28042
2.00k
    Py_ssize_t _n = 0;
28043
2.00k
    { // ',' NAME
28044
2.00k
        if (p->error_indicator) {
28045
0
            p->level--;
28046
0
            return NULL;
28047
0
        }
28048
2.00k
        D(fprintf(stderr, "%*c> _loop0_13[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' NAME"));
28049
2.00k
        Token * _literal;
28050
2.00k
        expr_ty elem;
28051
2.00k
        while (
28052
5.64k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
28053
5.64k
            &&
28054
5.64k
            (elem = _PyPegen_name_token(p))  // NAME
28055
2.00k
        )
28056
3.64k
        {
28057
3.64k
            _res = elem;
28058
3.64k
            if (_res == NULL && PyErr_Occurred()) {
28059
0
                p->error_indicator = 1;
28060
0
                PyMem_Free(_children);
28061
0
                p->level--;
28062
0
                return NULL;
28063
0
            }
28064
3.64k
            if (_n == _children_capacity) {
28065
1.56k
                _children_capacity *= 2;
28066
1.56k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28067
1.56k
                if (!_new_children) {
28068
0
                    PyMem_Free(_children);
28069
0
                    p->error_indicator = 1;
28070
0
                    PyErr_NoMemory();
28071
0
                    p->level--;
28072
0
                    return NULL;
28073
0
                }
28074
1.56k
                _children = _new_children;
28075
1.56k
            }
28076
3.64k
            _children[_n++] = _res;
28077
3.64k
            _mark = p->mark;
28078
3.64k
        }
28079
2.00k
        p->mark = _mark;
28080
2.00k
        D(fprintf(stderr, "%*c%s _loop0_13[%d-%d]: %s failed!\n", p->level, ' ',
28081
2.00k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' NAME"));
28082
2.00k
    }
28083
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28084
2.00k
    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
5.64k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28092
2.00k
    PyMem_Free(_children);
28093
2.00k
    p->level--;
28094
2.00k
    return _seq;
28095
2.00k
}
28096
28097
// _gather_14: NAME _loop0_13
28098
static asdl_seq *
28099
_gather_14_rule(Parser *p)
28100
2.01k
{
28101
2.01k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28102
0
        _Pypegen_stack_overflow(p);
28103
0
    }
28104
2.01k
    if (p->error_indicator) {
28105
0
        p->level--;
28106
0
        return NULL;
28107
0
    }
28108
2.01k
    asdl_seq * _res = NULL;
28109
2.01k
    int _mark = p->mark;
28110
2.01k
    { // NAME _loop0_13
28111
2.01k
        if (p->error_indicator) {
28112
0
            p->level--;
28113
0
            return NULL;
28114
0
        }
28115
2.01k
        D(fprintf(stderr, "%*c> _gather_14[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME _loop0_13"));
28116
2.01k
        expr_ty elem;
28117
2.01k
        asdl_seq * seq;
28118
2.01k
        if (
28119
2.01k
            (elem = _PyPegen_name_token(p))  // NAME
28120
2.01k
            &&
28121
2.01k
            (seq = _loop0_13_rule(p))  // _loop0_13
28122
2.01k
        )
28123
2.00k
        {
28124
2.00k
            D(fprintf(stderr, "%*c+ _gather_14[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME _loop0_13"));
28125
2.00k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28126
2.00k
            goto done;
28127
2.00k
        }
28128
14
        p->mark = _mark;
28129
14
        D(fprintf(stderr, "%*c%s _gather_14[%d-%d]: %s failed!\n", p->level, ' ',
28130
14
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME _loop0_13"));
28131
14
    }
28132
0
    _res = NULL;
28133
2.01k
  done:
28134
2.01k
    p->level--;
28135
2.01k
    return _res;
28136
14
}
28137
28138
// _tmp_15: ';' | NEWLINE
28139
static void *
28140
_tmp_15_rule(Parser *p)
28141
3.04k
{
28142
3.04k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28143
0
        _Pypegen_stack_overflow(p);
28144
0
    }
28145
3.04k
    if (p->error_indicator) {
28146
0
        p->level--;
28147
0
        return NULL;
28148
0
    }
28149
3.04k
    void * _res = NULL;
28150
3.04k
    int _mark = p->mark;
28151
3.04k
    { // ';'
28152
3.04k
        if (p->error_indicator) {
28153
0
            p->level--;
28154
0
            return NULL;
28155
0
        }
28156
3.04k
        D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';'"));
28157
3.04k
        Token * _literal;
28158
3.04k
        if (
28159
3.04k
            (_literal = _PyPegen_expect_token(p, 13))  // token=';'
28160
3.04k
        )
28161
1.76k
        {
28162
1.76k
            D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "';'"));
28163
1.76k
            _res = _literal;
28164
1.76k
            goto done;
28165
1.76k
        }
28166
1.28k
        p->mark = _mark;
28167
1.28k
        D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
28168
1.28k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';'"));
28169
1.28k
    }
28170
0
    { // NEWLINE
28171
1.28k
        if (p->error_indicator) {
28172
0
            p->level--;
28173
0
            return NULL;
28174
0
        }
28175
1.28k
        D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
28176
1.28k
        Token * newline_var;
28177
1.28k
        if (
28178
1.28k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
28179
1.28k
        )
28180
1.15k
        {
28181
1.15k
            D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
28182
1.15k
            _res = newline_var;
28183
1.15k
            goto done;
28184
1.15k
        }
28185
133
        p->mark = _mark;
28186
133
        D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
28187
133
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
28188
133
    }
28189
0
    _res = NULL;
28190
3.04k
  done:
28191
3.04k
    p->level--;
28192
3.04k
    return _res;
28193
133
}
28194
28195
// _tmp_16: ',' expression
28196
static void *
28197
_tmp_16_rule(Parser *p)
28198
25.8k
{
28199
25.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28200
0
        _Pypegen_stack_overflow(p);
28201
0
    }
28202
25.8k
    if (p->error_indicator) {
28203
0
        p->level--;
28204
0
        return NULL;
28205
0
    }
28206
25.8k
    void * _res = NULL;
28207
25.8k
    int _mark = p->mark;
28208
25.8k
    { // ',' expression
28209
25.8k
        if (p->error_indicator) {
28210
0
            p->level--;
28211
0
            return NULL;
28212
0
        }
28213
25.8k
        D(fprintf(stderr, "%*c> _tmp_16[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
28214
25.8k
        Token * _literal;
28215
25.8k
        expr_ty z;
28216
25.8k
        if (
28217
25.8k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
28218
25.8k
            &&
28219
25.8k
            (z = expression_rule(p))  // expression
28220
25.8k
        )
28221
15.1k
        {
28222
15.1k
            D(fprintf(stderr, "%*c+ _tmp_16[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression"));
28223
15.1k
            _res = z;
28224
15.1k
            if (_res == NULL && PyErr_Occurred()) {
28225
0
                p->error_indicator = 1;
28226
0
                p->level--;
28227
0
                return NULL;
28228
0
            }
28229
15.1k
            goto done;
28230
15.1k
        }
28231
10.6k
        p->mark = _mark;
28232
10.6k
        D(fprintf(stderr, "%*c%s _tmp_16[%d-%d]: %s failed!\n", p->level, ' ',
28233
10.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
28234
10.6k
    }
28235
0
    _res = NULL;
28236
25.8k
  done:
28237
25.8k
    p->level--;
28238
25.8k
    return _res;
28239
10.6k
}
28240
28241
// _loop0_17: ('.' | '...')
28242
static asdl_seq *
28243
_loop0_17_rule(Parser *p)
28244
6.45k
{
28245
6.45k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28246
0
        _Pypegen_stack_overflow(p);
28247
0
    }
28248
6.45k
    if (p->error_indicator) {
28249
0
        p->level--;
28250
0
        return NULL;
28251
0
    }
28252
6.45k
    void *_res = NULL;
28253
6.45k
    int _mark = p->mark;
28254
6.45k
    void **_children = PyMem_Malloc(sizeof(void *));
28255
6.45k
    if (!_children) {
28256
0
        p->error_indicator = 1;
28257
0
        PyErr_NoMemory();
28258
0
        p->level--;
28259
0
        return NULL;
28260
0
    }
28261
6.45k
    Py_ssize_t _children_capacity = 1;
28262
6.45k
    Py_ssize_t _n = 0;
28263
6.45k
    { // ('.' | '...')
28264
6.45k
        if (p->error_indicator) {
28265
0
            p->level--;
28266
0
            return NULL;
28267
0
        }
28268
6.45k
        D(fprintf(stderr, "%*c> _loop0_17[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')"));
28269
6.45k
        void *_tmp_155_var;
28270
6.45k
        while (
28271
9.98k
            (_tmp_155_var = _tmp_155_rule(p))  // '.' | '...'
28272
6.45k
        )
28273
3.53k
        {
28274
3.53k
            _res = _tmp_155_var;
28275
3.53k
            if (_n == _children_capacity) {
28276
781
                _children_capacity *= 2;
28277
781
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28278
781
                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
781
                _children = _new_children;
28286
781
            }
28287
3.53k
            _children[_n++] = _res;
28288
3.53k
            _mark = p->mark;
28289
3.53k
        }
28290
6.45k
        p->mark = _mark;
28291
6.45k
        D(fprintf(stderr, "%*c%s _loop0_17[%d-%d]: %s failed!\n", p->level, ' ',
28292
6.45k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('.' | '...')"));
28293
6.45k
    }
28294
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28295
6.45k
    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
9.98k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28303
6.45k
    PyMem_Free(_children);
28304
6.45k
    p->level--;
28305
6.45k
    return _seq;
28306
6.45k
}
28307
28308
// _loop1_18: ('.' | '...')
28309
static asdl_seq *
28310
_loop1_18_rule(Parser *p)
28311
387
{
28312
387
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28313
0
        _Pypegen_stack_overflow(p);
28314
0
    }
28315
387
    if (p->error_indicator) {
28316
0
        p->level--;
28317
0
        return NULL;
28318
0
    }
28319
387
    void *_res = NULL;
28320
387
    int _mark = p->mark;
28321
387
    void **_children = PyMem_Malloc(sizeof(void *));
28322
387
    if (!_children) {
28323
0
        p->error_indicator = 1;
28324
0
        PyErr_NoMemory();
28325
0
        p->level--;
28326
0
        return NULL;
28327
0
    }
28328
387
    Py_ssize_t _children_capacity = 1;
28329
387
    Py_ssize_t _n = 0;
28330
387
    { // ('.' | '...')
28331
387
        if (p->error_indicator) {
28332
0
            p->level--;
28333
0
            return NULL;
28334
0
        }
28335
387
        D(fprintf(stderr, "%*c> _loop1_18[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')"));
28336
387
        void *_tmp_155_var;
28337
387
        while (
28338
2.62k
            (_tmp_155_var = _tmp_155_rule(p))  // '.' | '...'
28339
387
        )
28340
2.23k
        {
28341
2.23k
            _res = _tmp_155_var;
28342
2.23k
            if (_n == _children_capacity) {
28343
718
                _children_capacity *= 2;
28344
718
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28345
718
                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
718
                _children = _new_children;
28353
718
            }
28354
2.23k
            _children[_n++] = _res;
28355
2.23k
            _mark = p->mark;
28356
2.23k
        }
28357
387
        p->mark = _mark;
28358
387
        D(fprintf(stderr, "%*c%s _loop1_18[%d-%d]: %s failed!\n", p->level, ' ',
28359
387
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('.' | '...')"));
28360
387
    }
28361
387
    if (_n == 0 || p->error_indicator) {
28362
63
        PyMem_Free(_children);
28363
63
        p->level--;
28364
63
        return NULL;
28365
63
    }
28366
324
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28367
324
    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
2.56k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28375
324
    PyMem_Free(_children);
28376
324
    p->level--;
28377
324
    return _seq;
28378
324
}
28379
28380
// _loop0_19: ',' import_from_as_name
28381
static asdl_seq *
28382
_loop0_19_rule(Parser *p)
28383
5.81k
{
28384
5.81k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28385
0
        _Pypegen_stack_overflow(p);
28386
0
    }
28387
5.81k
    if (p->error_indicator) {
28388
0
        p->level--;
28389
0
        return NULL;
28390
0
    }
28391
5.81k
    void *_res = NULL;
28392
5.81k
    int _mark = p->mark;
28393
5.81k
    void **_children = PyMem_Malloc(sizeof(void *));
28394
5.81k
    if (!_children) {
28395
0
        p->error_indicator = 1;
28396
0
        PyErr_NoMemory();
28397
0
        p->level--;
28398
0
        return NULL;
28399
0
    }
28400
5.81k
    Py_ssize_t _children_capacity = 1;
28401
5.81k
    Py_ssize_t _n = 0;
28402
5.81k
    { // ',' import_from_as_name
28403
5.81k
        if (p->error_indicator) {
28404
0
            p->level--;
28405
0
            return NULL;
28406
0
        }
28407
5.81k
        D(fprintf(stderr, "%*c> _loop0_19[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' import_from_as_name"));
28408
5.81k
        Token * _literal;
28409
5.81k
        alias_ty elem;
28410
5.81k
        while (
28411
9.11k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
28412
9.11k
            &&
28413
9.11k
            (elem = import_from_as_name_rule(p))  // import_from_as_name
28414
5.81k
        )
28415
3.30k
        {
28416
3.30k
            _res = elem;
28417
3.30k
            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.30k
            if (_n == _children_capacity) {
28424
917
                _children_capacity *= 2;
28425
917
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28426
917
                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
917
                _children = _new_children;
28434
917
            }
28435
3.30k
            _children[_n++] = _res;
28436
3.30k
            _mark = p->mark;
28437
3.30k
        }
28438
5.81k
        p->mark = _mark;
28439
5.81k
        D(fprintf(stderr, "%*c%s _loop0_19[%d-%d]: %s failed!\n", p->level, ' ',
28440
5.81k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' import_from_as_name"));
28441
5.81k
    }
28442
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28443
5.81k
    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
9.11k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28451
5.81k
    PyMem_Free(_children);
28452
5.81k
    p->level--;
28453
5.81k
    return _seq;
28454
5.81k
}
28455
28456
// _gather_20: import_from_as_name _loop0_19
28457
static asdl_seq *
28458
_gather_20_rule(Parser *p)
28459
6.36k
{
28460
6.36k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28461
0
        _Pypegen_stack_overflow(p);
28462
0
    }
28463
6.36k
    if (p->error_indicator) {
28464
0
        p->level--;
28465
0
        return NULL;
28466
0
    }
28467
6.36k
    asdl_seq * _res = NULL;
28468
6.36k
    int _mark = p->mark;
28469
6.36k
    { // import_from_as_name _loop0_19
28470
6.36k
        if (p->error_indicator) {
28471
0
            p->level--;
28472
0
            return NULL;
28473
0
        }
28474
6.36k
        D(fprintf(stderr, "%*c> _gather_20[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_name _loop0_19"));
28475
6.36k
        alias_ty elem;
28476
6.36k
        asdl_seq * seq;
28477
6.36k
        if (
28478
6.36k
            (elem = import_from_as_name_rule(p))  // import_from_as_name
28479
6.36k
            &&
28480
6.36k
            (seq = _loop0_19_rule(p))  // _loop0_19
28481
6.36k
        )
28482
5.81k
        {
28483
5.81k
            D(fprintf(stderr, "%*c+ _gather_20[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_name _loop0_19"));
28484
5.81k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28485
5.81k
            goto done;
28486
5.81k
        }
28487
548
        p->mark = _mark;
28488
548
        D(fprintf(stderr, "%*c%s _gather_20[%d-%d]: %s failed!\n", p->level, ' ',
28489
548
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_name _loop0_19"));
28490
548
    }
28491
0
    _res = NULL;
28492
6.36k
  done:
28493
6.36k
    p->level--;
28494
6.36k
    return _res;
28495
548
}
28496
28497
// _tmp_21: 'as' NAME
28498
static void *
28499
_tmp_21_rule(Parser *p)
28500
30.3k
{
28501
30.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28502
0
        _Pypegen_stack_overflow(p);
28503
0
    }
28504
30.3k
    if (p->error_indicator) {
28505
0
        p->level--;
28506
0
        return NULL;
28507
0
    }
28508
30.3k
    void * _res = NULL;
28509
30.3k
    int _mark = p->mark;
28510
30.3k
    { // 'as' NAME
28511
30.3k
        if (p->error_indicator) {
28512
0
            p->level--;
28513
0
            return NULL;
28514
0
        }
28515
30.3k
        D(fprintf(stderr, "%*c> _tmp_21[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
28516
30.3k
        Token * _keyword;
28517
30.3k
        expr_ty z;
28518
30.3k
        if (
28519
30.3k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
28520
30.3k
            &&
28521
30.3k
            (z = _PyPegen_name_token(p))  // NAME
28522
30.3k
        )
28523
2.04k
        {
28524
2.04k
            D(fprintf(stderr, "%*c+ _tmp_21[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
28525
2.04k
            _res = z;
28526
2.04k
            if (_res == NULL && PyErr_Occurred()) {
28527
0
                p->error_indicator = 1;
28528
0
                p->level--;
28529
0
                return NULL;
28530
0
            }
28531
2.04k
            goto done;
28532
2.04k
        }
28533
28.3k
        p->mark = _mark;
28534
28.3k
        D(fprintf(stderr, "%*c%s _tmp_21[%d-%d]: %s failed!\n", p->level, ' ',
28535
28.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
28536
28.3k
    }
28537
0
    _res = NULL;
28538
30.3k
  done:
28539
30.3k
    p->level--;
28540
30.3k
    return _res;
28541
28.3k
}
28542
28543
// _loop0_22: ',' dotted_as_name
28544
static asdl_seq *
28545
_loop0_22_rule(Parser *p)
28546
5.06k
{
28547
5.06k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28548
0
        _Pypegen_stack_overflow(p);
28549
0
    }
28550
5.06k
    if (p->error_indicator) {
28551
0
        p->level--;
28552
0
        return NULL;
28553
0
    }
28554
5.06k
    void *_res = NULL;
28555
5.06k
    int _mark = p->mark;
28556
5.06k
    void **_children = PyMem_Malloc(sizeof(void *));
28557
5.06k
    if (!_children) {
28558
0
        p->error_indicator = 1;
28559
0
        PyErr_NoMemory();
28560
0
        p->level--;
28561
0
        return NULL;
28562
0
    }
28563
5.06k
    Py_ssize_t _children_capacity = 1;
28564
5.06k
    Py_ssize_t _n = 0;
28565
5.06k
    { // ',' dotted_as_name
28566
5.06k
        if (p->error_indicator) {
28567
0
            p->level--;
28568
0
            return NULL;
28569
0
        }
28570
5.06k
        D(fprintf(stderr, "%*c> _loop0_22[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' dotted_as_name"));
28571
5.06k
        Token * _literal;
28572
5.06k
        alias_ty elem;
28573
5.06k
        while (
28574
16.7k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
28575
16.7k
            &&
28576
16.7k
            (elem = dotted_as_name_rule(p))  // dotted_as_name
28577
5.06k
        )
28578
11.7k
        {
28579
11.7k
            _res = elem;
28580
11.7k
            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
11.7k
            if (_n == _children_capacity) {
28587
4.29k
                _children_capacity *= 2;
28588
4.29k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28589
4.29k
                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
4.29k
                _children = _new_children;
28597
4.29k
            }
28598
11.7k
            _children[_n++] = _res;
28599
11.7k
            _mark = p->mark;
28600
11.7k
        }
28601
5.06k
        p->mark = _mark;
28602
5.06k
        D(fprintf(stderr, "%*c%s _loop0_22[%d-%d]: %s failed!\n", p->level, ' ',
28603
5.06k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' dotted_as_name"));
28604
5.06k
    }
28605
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28606
5.06k
    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
16.7k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28614
5.06k
    PyMem_Free(_children);
28615
5.06k
    p->level--;
28616
5.06k
    return _seq;
28617
5.06k
}
28618
28619
// _gather_23: dotted_as_name _loop0_22
28620
static asdl_seq *
28621
_gather_23_rule(Parser *p)
28622
5.07k
{
28623
5.07k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28624
0
        _Pypegen_stack_overflow(p);
28625
0
    }
28626
5.07k
    if (p->error_indicator) {
28627
0
        p->level--;
28628
0
        return NULL;
28629
0
    }
28630
5.07k
    asdl_seq * _res = NULL;
28631
5.07k
    int _mark = p->mark;
28632
5.07k
    { // dotted_as_name _loop0_22
28633
5.07k
        if (p->error_indicator) {
28634
0
            p->level--;
28635
0
            return NULL;
28636
0
        }
28637
5.07k
        D(fprintf(stderr, "%*c> _gather_23[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_as_name _loop0_22"));
28638
5.07k
        alias_ty elem;
28639
5.07k
        asdl_seq * seq;
28640
5.07k
        if (
28641
5.07k
            (elem = dotted_as_name_rule(p))  // dotted_as_name
28642
5.07k
            &&
28643
5.07k
            (seq = _loop0_22_rule(p))  // _loop0_22
28644
5.07k
        )
28645
5.06k
        {
28646
5.06k
            D(fprintf(stderr, "%*c+ _gather_23[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_as_name _loop0_22"));
28647
5.06k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28648
5.06k
            goto done;
28649
5.06k
        }
28650
15
        p->mark = _mark;
28651
15
        D(fprintf(stderr, "%*c%s _gather_23[%d-%d]: %s failed!\n", p->level, ' ',
28652
15
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_as_name _loop0_22"));
28653
15
    }
28654
0
    _res = NULL;
28655
5.07k
  done:
28656
5.07k
    p->level--;
28657
5.07k
    return _res;
28658
15
}
28659
28660
// _loop1_24: ('@' named_expression NEWLINE)
28661
static asdl_seq *
28662
_loop1_24_rule(Parser *p)
28663
40.9k
{
28664
40.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28665
0
        _Pypegen_stack_overflow(p);
28666
0
    }
28667
40.9k
    if (p->error_indicator) {
28668
0
        p->level--;
28669
0
        return NULL;
28670
0
    }
28671
40.9k
    void *_res = NULL;
28672
40.9k
    int _mark = p->mark;
28673
40.9k
    void **_children = PyMem_Malloc(sizeof(void *));
28674
40.9k
    if (!_children) {
28675
0
        p->error_indicator = 1;
28676
0
        PyErr_NoMemory();
28677
0
        p->level--;
28678
0
        return NULL;
28679
0
    }
28680
40.9k
    Py_ssize_t _children_capacity = 1;
28681
40.9k
    Py_ssize_t _n = 0;
28682
40.9k
    { // ('@' named_expression NEWLINE)
28683
40.9k
        if (p->error_indicator) {
28684
0
            p->level--;
28685
0
            return NULL;
28686
0
        }
28687
40.9k
        D(fprintf(stderr, "%*c> _loop1_24[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('@' named_expression NEWLINE)"));
28688
40.9k
        void *_tmp_156_var;
28689
40.9k
        while (
28690
49.7k
            (_tmp_156_var = _tmp_156_rule(p))  // '@' named_expression NEWLINE
28691
40.9k
        )
28692
8.81k
        {
28693
8.81k
            _res = _tmp_156_var;
28694
8.81k
            if (_n == _children_capacity) {
28695
3.74k
                _children_capacity *= 2;
28696
3.74k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28697
3.74k
                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
3.74k
                _children = _new_children;
28705
3.74k
            }
28706
8.81k
            _children[_n++] = _res;
28707
8.81k
            _mark = p->mark;
28708
8.81k
        }
28709
40.9k
        p->mark = _mark;
28710
40.9k
        D(fprintf(stderr, "%*c%s _loop1_24[%d-%d]: %s failed!\n", p->level, ' ',
28711
40.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('@' named_expression NEWLINE)"));
28712
40.9k
    }
28713
40.9k
    if (_n == 0 || p->error_indicator) {
28714
36.7k
        PyMem_Free(_children);
28715
36.7k
        p->level--;
28716
36.7k
        return NULL;
28717
36.7k
    }
28718
4.14k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28719
4.14k
    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
12.9k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28727
4.14k
    PyMem_Free(_children);
28728
4.14k
    p->level--;
28729
4.14k
    return _seq;
28730
4.14k
}
28731
28732
// _tmp_25: '(' arguments? ')'
28733
static void *
28734
_tmp_25_rule(Parser *p)
28735
21.7k
{
28736
21.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28737
0
        _Pypegen_stack_overflow(p);
28738
0
    }
28739
21.7k
    if (p->error_indicator) {
28740
0
        p->level--;
28741
0
        return NULL;
28742
0
    }
28743
21.7k
    void * _res = NULL;
28744
21.7k
    int _mark = p->mark;
28745
21.7k
    { // '(' arguments? ')'
28746
21.7k
        if (p->error_indicator) {
28747
0
            p->level--;
28748
0
            return NULL;
28749
0
        }
28750
21.7k
        D(fprintf(stderr, "%*c> _tmp_25[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
28751
21.7k
        Token * _literal;
28752
21.7k
        Token * _literal_1;
28753
21.7k
        void *z;
28754
21.7k
        if (
28755
21.7k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
28756
21.7k
            &&
28757
21.7k
            (z = arguments_rule(p), !p->error_indicator)  // arguments?
28758
21.7k
            &&
28759
21.7k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
28760
21.7k
        )
28761
4.33k
        {
28762
4.33k
            D(fprintf(stderr, "%*c+ _tmp_25[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
28763
4.33k
            _res = z;
28764
4.33k
            if (_res == NULL && PyErr_Occurred()) {
28765
0
                p->error_indicator = 1;
28766
0
                p->level--;
28767
0
                return NULL;
28768
0
            }
28769
4.33k
            goto done;
28770
4.33k
        }
28771
17.4k
        p->mark = _mark;
28772
17.4k
        D(fprintf(stderr, "%*c%s _tmp_25[%d-%d]: %s failed!\n", p->level, ' ',
28773
17.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'"));
28774
17.4k
    }
28775
0
    _res = NULL;
28776
21.7k
  done:
28777
21.7k
    p->level--;
28778
21.7k
    return _res;
28779
17.4k
}
28780
28781
// _tmp_26: '->' expression
28782
static void *
28783
_tmp_26_rule(Parser *p)
28784
20.2k
{
28785
20.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28786
0
        _Pypegen_stack_overflow(p);
28787
0
    }
28788
20.2k
    if (p->error_indicator) {
28789
0
        p->level--;
28790
0
        return NULL;
28791
0
    }
28792
20.2k
    void * _res = NULL;
28793
20.2k
    int _mark = p->mark;
28794
20.2k
    { // '->' expression
28795
20.2k
        if (p->error_indicator) {
28796
0
            p->level--;
28797
0
            return NULL;
28798
0
        }
28799
20.2k
        D(fprintf(stderr, "%*c> _tmp_26[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression"));
28800
20.2k
        Token * _literal;
28801
20.2k
        expr_ty z;
28802
20.2k
        if (
28803
20.2k
            (_literal = _PyPegen_expect_token(p, 51))  // token='->'
28804
20.2k
            &&
28805
20.2k
            (z = expression_rule(p))  // expression
28806
20.2k
        )
28807
6.09k
        {
28808
6.09k
            D(fprintf(stderr, "%*c+ _tmp_26[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression"));
28809
6.09k
            _res = z;
28810
6.09k
            if (_res == NULL && PyErr_Occurred()) {
28811
0
                p->error_indicator = 1;
28812
0
                p->level--;
28813
0
                return NULL;
28814
0
            }
28815
6.09k
            goto done;
28816
6.09k
        }
28817
14.1k
        p->mark = _mark;
28818
14.1k
        D(fprintf(stderr, "%*c%s _tmp_26[%d-%d]: %s failed!\n", p->level, ' ',
28819
14.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression"));
28820
14.1k
    }
28821
0
    _res = NULL;
28822
20.2k
  done:
28823
20.2k
    p->level--;
28824
20.2k
    return _res;
28825
14.1k
}
28826
28827
// _loop0_27: param_no_default
28828
static asdl_seq *
28829
_loop0_27_rule(Parser *p)
28830
95.0k
{
28831
95.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28832
0
        _Pypegen_stack_overflow(p);
28833
0
    }
28834
95.0k
    if (p->error_indicator) {
28835
0
        p->level--;
28836
0
        return NULL;
28837
0
    }
28838
95.0k
    void *_res = NULL;
28839
95.0k
    int _mark = p->mark;
28840
95.0k
    void **_children = PyMem_Malloc(sizeof(void *));
28841
95.0k
    if (!_children) {
28842
0
        p->error_indicator = 1;
28843
0
        PyErr_NoMemory();
28844
0
        p->level--;
28845
0
        return NULL;
28846
0
    }
28847
95.0k
    Py_ssize_t _children_capacity = 1;
28848
95.0k
    Py_ssize_t _n = 0;
28849
95.0k
    { // param_no_default
28850
95.0k
        if (p->error_indicator) {
28851
0
            p->level--;
28852
0
            return NULL;
28853
0
        }
28854
95.0k
        D(fprintf(stderr, "%*c> _loop0_27[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
28855
95.0k
        arg_ty param_no_default_var;
28856
95.0k
        while (
28857
137k
            (param_no_default_var = param_no_default_rule(p))  // param_no_default
28858
95.0k
        )
28859
42.6k
        {
28860
42.6k
            _res = param_no_default_var;
28861
42.6k
            if (_n == _children_capacity) {
28862
14.1k
                _children_capacity *= 2;
28863
14.1k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28864
14.1k
                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
14.1k
                _children = _new_children;
28872
14.1k
            }
28873
42.6k
            _children[_n++] = _res;
28874
42.6k
            _mark = p->mark;
28875
42.6k
        }
28876
95.0k
        p->mark = _mark;
28877
95.0k
        D(fprintf(stderr, "%*c%s _loop0_27[%d-%d]: %s failed!\n", p->level, ' ',
28878
95.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
28879
95.0k
    }
28880
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28881
95.0k
    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
137k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28889
95.0k
    PyMem_Free(_children);
28890
95.0k
    p->level--;
28891
95.0k
    return _seq;
28892
95.0k
}
28893
28894
// _loop0_28: param_with_default
28895
static asdl_seq *
28896
_loop0_28_rule(Parser *p)
28897
8.19k
{
28898
8.19k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28899
0
        _Pypegen_stack_overflow(p);
28900
0
    }
28901
8.19k
    if (p->error_indicator) {
28902
1
        p->level--;
28903
1
        return NULL;
28904
1
    }
28905
8.18k
    void *_res = NULL;
28906
8.18k
    int _mark = p->mark;
28907
8.18k
    void **_children = PyMem_Malloc(sizeof(void *));
28908
8.18k
    if (!_children) {
28909
0
        p->error_indicator = 1;
28910
0
        PyErr_NoMemory();
28911
0
        p->level--;
28912
0
        return NULL;
28913
0
    }
28914
8.18k
    Py_ssize_t _children_capacity = 1;
28915
8.18k
    Py_ssize_t _n = 0;
28916
8.18k
    { // param_with_default
28917
8.18k
        if (p->error_indicator) {
28918
0
            p->level--;
28919
0
            return NULL;
28920
0
        }
28921
8.18k
        D(fprintf(stderr, "%*c> _loop0_28[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
28922
8.18k
        NameDefaultPair* param_with_default_var;
28923
8.18k
        while (
28924
9.68k
            (param_with_default_var = param_with_default_rule(p))  // param_with_default
28925
8.18k
        )
28926
1.49k
        {
28927
1.49k
            _res = param_with_default_var;
28928
1.49k
            if (_n == _children_capacity) {
28929
72
                _children_capacity *= 2;
28930
72
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28931
72
                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
72
                _children = _new_children;
28939
72
            }
28940
1.49k
            _children[_n++] = _res;
28941
1.49k
            _mark = p->mark;
28942
1.49k
        }
28943
8.18k
        p->mark = _mark;
28944
8.18k
        D(fprintf(stderr, "%*c%s _loop0_28[%d-%d]: %s failed!\n", p->level, ' ',
28945
8.18k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
28946
8.18k
    }
28947
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28948
8.18k
    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.68k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28956
8.18k
    PyMem_Free(_children);
28957
8.18k
    p->level--;
28958
8.18k
    return _seq;
28959
8.18k
}
28960
28961
// _loop1_29: param_no_default
28962
static asdl_seq *
28963
_loop1_29_rule(Parser *p)
28964
101k
{
28965
101k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28966
0
        _Pypegen_stack_overflow(p);
28967
0
    }
28968
101k
    if (p->error_indicator) {
28969
0
        p->level--;
28970
0
        return NULL;
28971
0
    }
28972
101k
    void *_res = NULL;
28973
101k
    int _mark = p->mark;
28974
101k
    void **_children = PyMem_Malloc(sizeof(void *));
28975
101k
    if (!_children) {
28976
0
        p->error_indicator = 1;
28977
0
        PyErr_NoMemory();
28978
0
        p->level--;
28979
0
        return NULL;
28980
0
    }
28981
101k
    Py_ssize_t _children_capacity = 1;
28982
101k
    Py_ssize_t _n = 0;
28983
101k
    { // param_no_default
28984
101k
        if (p->error_indicator) {
28985
0
            p->level--;
28986
0
            return NULL;
28987
0
        }
28988
101k
        D(fprintf(stderr, "%*c> _loop1_29[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
28989
101k
        arg_ty param_no_default_var;
28990
101k
        while (
28991
154k
            (param_no_default_var = param_no_default_rule(p))  // param_no_default
28992
101k
        )
28993
52.4k
        {
28994
52.4k
            _res = param_no_default_var;
28995
52.4k
            if (_n == _children_capacity) {
28996
15.3k
                _children_capacity *= 2;
28997
15.3k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28998
15.3k
                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
15.3k
                _children = _new_children;
29006
15.3k
            }
29007
52.4k
            _children[_n++] = _res;
29008
52.4k
            _mark = p->mark;
29009
52.4k
        }
29010
101k
        p->mark = _mark;
29011
101k
        D(fprintf(stderr, "%*c%s _loop1_29[%d-%d]: %s failed!\n", p->level, ' ',
29012
101k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
29013
101k
    }
29014
101k
    if (_n == 0 || p->error_indicator) {
29015
65.4k
        PyMem_Free(_children);
29016
65.4k
        p->level--;
29017
65.4k
        return NULL;
29018
65.4k
    }
29019
36.0k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29020
36.0k
    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
88.5k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29028
36.0k
    PyMem_Free(_children);
29029
36.0k
    p->level--;
29030
36.0k
    return _seq;
29031
36.0k
}
29032
29033
// _loop1_30: param_with_default
29034
static asdl_seq *
29035
_loop1_30_rule(Parser *p)
29036
99.5k
{
29037
99.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29038
0
        _Pypegen_stack_overflow(p);
29039
0
    }
29040
99.5k
    if (p->error_indicator) {
29041
0
        p->level--;
29042
0
        return NULL;
29043
0
    }
29044
99.5k
    void *_res = NULL;
29045
99.5k
    int _mark = p->mark;
29046
99.5k
    void **_children = PyMem_Malloc(sizeof(void *));
29047
99.5k
    if (!_children) {
29048
0
        p->error_indicator = 1;
29049
0
        PyErr_NoMemory();
29050
0
        p->level--;
29051
0
        return NULL;
29052
0
    }
29053
99.5k
    Py_ssize_t _children_capacity = 1;
29054
99.5k
    Py_ssize_t _n = 0;
29055
99.5k
    { // param_with_default
29056
99.5k
        if (p->error_indicator) {
29057
0
            p->level--;
29058
0
            return NULL;
29059
0
        }
29060
99.5k
        D(fprintf(stderr, "%*c> _loop1_30[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
29061
99.5k
        NameDefaultPair* param_with_default_var;
29062
99.5k
        while (
29063
121k
            (param_with_default_var = param_with_default_rule(p))  // param_with_default
29064
99.5k
        )
29065
21.5k
        {
29066
21.5k
            _res = param_with_default_var;
29067
21.5k
            if (_n == _children_capacity) {
29068
2.26k
                _children_capacity *= 2;
29069
2.26k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29070
2.26k
                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.26k
                _children = _new_children;
29078
2.26k
            }
29079
21.5k
            _children[_n++] = _res;
29080
21.5k
            _mark = p->mark;
29081
21.5k
        }
29082
99.5k
        p->mark = _mark;
29083
99.5k
        D(fprintf(stderr, "%*c%s _loop1_30[%d-%d]: %s failed!\n", p->level, ' ',
29084
99.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
29085
99.5k
    }
29086
99.5k
    if (_n == 0 || p->error_indicator) {
29087
80.6k
        PyMem_Free(_children);
29088
80.6k
        p->level--;
29089
80.6k
        return NULL;
29090
80.6k
    }
29091
18.8k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29092
18.8k
    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
40.3k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29100
18.8k
    PyMem_Free(_children);
29101
18.8k
    p->level--;
29102
18.8k
    return _seq;
29103
18.8k
}
29104
29105
// _loop0_31: param_maybe_default
29106
static asdl_seq *
29107
_loop0_31_rule(Parser *p)
29108
12.9k
{
29109
12.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29110
0
        _Pypegen_stack_overflow(p);
29111
0
    }
29112
12.9k
    if (p->error_indicator) {
29113
0
        p->level--;
29114
0
        return NULL;
29115
0
    }
29116
12.9k
    void *_res = NULL;
29117
12.9k
    int _mark = p->mark;
29118
12.9k
    void **_children = PyMem_Malloc(sizeof(void *));
29119
12.9k
    if (!_children) {
29120
0
        p->error_indicator = 1;
29121
0
        PyErr_NoMemory();
29122
0
        p->level--;
29123
0
        return NULL;
29124
0
    }
29125
12.9k
    Py_ssize_t _children_capacity = 1;
29126
12.9k
    Py_ssize_t _n = 0;
29127
12.9k
    { // param_maybe_default
29128
12.9k
        if (p->error_indicator) {
29129
0
            p->level--;
29130
0
            return NULL;
29131
0
        }
29132
12.9k
        D(fprintf(stderr, "%*c> _loop0_31[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
29133
12.9k
        NameDefaultPair* param_maybe_default_var;
29134
12.9k
        while (
29135
19.1k
            (param_maybe_default_var = param_maybe_default_rule(p))  // param_maybe_default
29136
12.9k
        )
29137
6.16k
        {
29138
6.16k
            _res = param_maybe_default_var;
29139
6.16k
            if (_n == _children_capacity) {
29140
962
                _children_capacity *= 2;
29141
962
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29142
962
                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
962
                _children = _new_children;
29150
962
            }
29151
6.16k
            _children[_n++] = _res;
29152
6.16k
            _mark = p->mark;
29153
6.16k
        }
29154
12.9k
        p->mark = _mark;
29155
12.9k
        D(fprintf(stderr, "%*c%s _loop0_31[%d-%d]: %s failed!\n", p->level, ' ',
29156
12.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
29157
12.9k
    }
29158
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29159
12.9k
    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
19.1k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29167
12.9k
    PyMem_Free(_children);
29168
12.9k
    p->level--;
29169
12.9k
    return _seq;
29170
12.9k
}
29171
29172
// _loop1_32: param_maybe_default
29173
static asdl_seq *
29174
_loop1_32_rule(Parser *p)
29175
7.96k
{
29176
7.96k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29177
0
        _Pypegen_stack_overflow(p);
29178
0
    }
29179
7.96k
    if (p->error_indicator) {
29180
0
        p->level--;
29181
0
        return NULL;
29182
0
    }
29183
7.96k
    void *_res = NULL;
29184
7.96k
    int _mark = p->mark;
29185
7.96k
    void **_children = PyMem_Malloc(sizeof(void *));
29186
7.96k
    if (!_children) {
29187
0
        p->error_indicator = 1;
29188
0
        PyErr_NoMemory();
29189
0
        p->level--;
29190
0
        return NULL;
29191
0
    }
29192
7.96k
    Py_ssize_t _children_capacity = 1;
29193
7.96k
    Py_ssize_t _n = 0;
29194
7.96k
    { // param_maybe_default
29195
7.96k
        if (p->error_indicator) {
29196
0
            p->level--;
29197
0
            return NULL;
29198
0
        }
29199
7.96k
        D(fprintf(stderr, "%*c> _loop1_32[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
29200
7.96k
        NameDefaultPair* param_maybe_default_var;
29201
7.96k
        while (
29202
14.6k
            (param_maybe_default_var = param_maybe_default_rule(p))  // param_maybe_default
29203
7.96k
        )
29204
6.68k
        {
29205
6.68k
            _res = param_maybe_default_var;
29206
6.68k
            if (_n == _children_capacity) {
29207
1.91k
                _children_capacity *= 2;
29208
1.91k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29209
1.91k
                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
1.91k
                _children = _new_children;
29217
1.91k
            }
29218
6.68k
            _children[_n++] = _res;
29219
6.68k
            _mark = p->mark;
29220
6.68k
        }
29221
7.96k
        p->mark = _mark;
29222
7.96k
        D(fprintf(stderr, "%*c%s _loop1_32[%d-%d]: %s failed!\n", p->level, ' ',
29223
7.96k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
29224
7.96k
    }
29225
7.96k
    if (_n == 0 || p->error_indicator) {
29226
3.97k
        PyMem_Free(_children);
29227
3.97k
        p->level--;
29228
3.97k
        return NULL;
29229
3.97k
    }
29230
3.98k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29231
3.98k
    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
10.6k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29239
3.98k
    PyMem_Free(_children);
29240
3.98k
    p->level--;
29241
3.98k
    return _seq;
29242
3.98k
}
29243
29244
// _loop0_33: ',' with_item
29245
static asdl_seq *
29246
_loop0_33_rule(Parser *p)
29247
9.77k
{
29248
9.77k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29249
0
        _Pypegen_stack_overflow(p);
29250
0
    }
29251
9.77k
    if (p->error_indicator) {
29252
0
        p->level--;
29253
0
        return NULL;
29254
0
    }
29255
9.77k
    void *_res = NULL;
29256
9.77k
    int _mark = p->mark;
29257
9.77k
    void **_children = PyMem_Malloc(sizeof(void *));
29258
9.77k
    if (!_children) {
29259
0
        p->error_indicator = 1;
29260
0
        PyErr_NoMemory();
29261
0
        p->level--;
29262
0
        return NULL;
29263
0
    }
29264
9.77k
    Py_ssize_t _children_capacity = 1;
29265
9.77k
    Py_ssize_t _n = 0;
29266
9.77k
    { // ',' with_item
29267
9.77k
        if (p->error_indicator) {
29268
0
            p->level--;
29269
0
            return NULL;
29270
0
        }
29271
9.77k
        D(fprintf(stderr, "%*c> _loop0_33[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
29272
9.77k
        Token * _literal;
29273
9.77k
        withitem_ty elem;
29274
9.77k
        while (
29275
39.2k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
29276
39.2k
            &&
29277
39.2k
            (elem = with_item_rule(p))  // with_item
29278
9.77k
        )
29279
29.4k
        {
29280
29.4k
            _res = elem;
29281
29.4k
            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
29.4k
            if (_n == _children_capacity) {
29288
12.9k
                _children_capacity *= 2;
29289
12.9k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29290
12.9k
                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
12.9k
                _children = _new_children;
29298
12.9k
            }
29299
29.4k
            _children[_n++] = _res;
29300
29.4k
            _mark = p->mark;
29301
29.4k
        }
29302
9.77k
        p->mark = _mark;
29303
9.77k
        D(fprintf(stderr, "%*c%s _loop0_33[%d-%d]: %s failed!\n", p->level, ' ',
29304
9.77k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
29305
9.77k
    }
29306
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29307
9.77k
    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
39.2k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29315
9.77k
    PyMem_Free(_children);
29316
9.77k
    p->level--;
29317
9.77k
    return _seq;
29318
9.77k
}
29319
29320
// _gather_34: with_item _loop0_33
29321
static asdl_seq *
29322
_gather_34_rule(Parser *p)
29323
11.1k
{
29324
11.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29325
0
        _Pypegen_stack_overflow(p);
29326
0
    }
29327
11.1k
    if (p->error_indicator) {
29328
0
        p->level--;
29329
0
        return NULL;
29330
0
    }
29331
11.1k
    asdl_seq * _res = NULL;
29332
11.1k
    int _mark = p->mark;
29333
11.1k
    { // with_item _loop0_33
29334
11.1k
        if (p->error_indicator) {
29335
0
            p->level--;
29336
0
            return NULL;
29337
0
        }
29338
11.1k
        D(fprintf(stderr, "%*c> _gather_34[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_33"));
29339
11.1k
        withitem_ty elem;
29340
11.1k
        asdl_seq * seq;
29341
11.1k
        if (
29342
11.1k
            (elem = with_item_rule(p))  // with_item
29343
11.1k
            &&
29344
11.1k
            (seq = _loop0_33_rule(p))  // _loop0_33
29345
11.1k
        )
29346
9.77k
        {
29347
9.77k
            D(fprintf(stderr, "%*c+ _gather_34[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_33"));
29348
9.77k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
29349
9.77k
            goto done;
29350
9.77k
        }
29351
1.38k
        p->mark = _mark;
29352
1.38k
        D(fprintf(stderr, "%*c%s _gather_34[%d-%d]: %s failed!\n", p->level, ' ',
29353
1.38k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_33"));
29354
1.38k
    }
29355
0
    _res = NULL;
29356
11.1k
  done:
29357
11.1k
    p->level--;
29358
11.1k
    return _res;
29359
1.38k
}
29360
29361
// _tmp_35: ',' | ')' | ':'
29362
static void *
29363
_tmp_35_rule(Parser *p)
29364
3.17k
{
29365
3.17k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29366
0
        _Pypegen_stack_overflow(p);
29367
0
    }
29368
3.17k
    if (p->error_indicator) {
29369
0
        p->level--;
29370
0
        return NULL;
29371
0
    }
29372
3.17k
    void * _res = NULL;
29373
3.17k
    int _mark = p->mark;
29374
3.17k
    { // ','
29375
3.17k
        if (p->error_indicator) {
29376
0
            p->level--;
29377
0
            return NULL;
29378
0
        }
29379
3.17k
        D(fprintf(stderr, "%*c> _tmp_35[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
29380
3.17k
        Token * _literal;
29381
3.17k
        if (
29382
3.17k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
29383
3.17k
        )
29384
2.53k
        {
29385
2.53k
            D(fprintf(stderr, "%*c+ _tmp_35[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
29386
2.53k
            _res = _literal;
29387
2.53k
            goto done;
29388
2.53k
        }
29389
642
        p->mark = _mark;
29390
642
        D(fprintf(stderr, "%*c%s _tmp_35[%d-%d]: %s failed!\n", p->level, ' ',
29391
642
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
29392
642
    }
29393
0
    { // ')'
29394
642
        if (p->error_indicator) {
29395
0
            p->level--;
29396
0
            return NULL;
29397
0
        }
29398
642
        D(fprintf(stderr, "%*c> _tmp_35[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
29399
642
        Token * _literal;
29400
642
        if (
29401
642
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
29402
642
        )
29403
594
        {
29404
594
            D(fprintf(stderr, "%*c+ _tmp_35[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
29405
594
            _res = _literal;
29406
594
            goto done;
29407
594
        }
29408
48
        p->mark = _mark;
29409
48
        D(fprintf(stderr, "%*c%s _tmp_35[%d-%d]: %s failed!\n", p->level, ' ',
29410
48
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
29411
48
    }
29412
0
    { // ':'
29413
48
        if (p->error_indicator) {
29414
0
            p->level--;
29415
0
            return NULL;
29416
0
        }
29417
48
        D(fprintf(stderr, "%*c> _tmp_35[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
29418
48
        Token * _literal;
29419
48
        if (
29420
48
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
29421
48
        )
29422
31
        {
29423
31
            D(fprintf(stderr, "%*c+ _tmp_35[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
29424
31
            _res = _literal;
29425
31
            goto done;
29426
31
        }
29427
17
        p->mark = _mark;
29428
17
        D(fprintf(stderr, "%*c%s _tmp_35[%d-%d]: %s failed!\n", p->level, ' ',
29429
17
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
29430
17
    }
29431
0
    _res = NULL;
29432
3.17k
  done:
29433
3.17k
    p->level--;
29434
3.17k
    return _res;
29435
17
}
29436
29437
// _loop1_36: except_block
29438
static asdl_seq *
29439
_loop1_36_rule(Parser *p)
29440
8.81k
{
29441
8.81k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29442
0
        _Pypegen_stack_overflow(p);
29443
0
    }
29444
8.81k
    if (p->error_indicator) {
29445
0
        p->level--;
29446
0
        return NULL;
29447
0
    }
29448
8.81k
    void *_res = NULL;
29449
8.81k
    int _mark = p->mark;
29450
8.81k
    void **_children = PyMem_Malloc(sizeof(void *));
29451
8.81k
    if (!_children) {
29452
0
        p->error_indicator = 1;
29453
0
        PyErr_NoMemory();
29454
0
        p->level--;
29455
0
        return NULL;
29456
0
    }
29457
8.81k
    Py_ssize_t _children_capacity = 1;
29458
8.81k
    Py_ssize_t _n = 0;
29459
8.81k
    { // except_block
29460
8.81k
        if (p->error_indicator) {
29461
0
            p->level--;
29462
0
            return NULL;
29463
0
        }
29464
8.81k
        D(fprintf(stderr, "%*c> _loop1_36[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_block"));
29465
8.81k
        excepthandler_ty except_block_var;
29466
8.81k
        while (
29467
14.6k
            (except_block_var = except_block_rule(p))  // except_block
29468
8.81k
        )
29469
5.83k
        {
29470
5.83k
            _res = except_block_var;
29471
5.83k
            if (_n == _children_capacity) {
29472
799
                _children_capacity *= 2;
29473
799
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29474
799
                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
799
                _children = _new_children;
29482
799
            }
29483
5.83k
            _children[_n++] = _res;
29484
5.83k
            _mark = p->mark;
29485
5.83k
        }
29486
8.81k
        p->mark = _mark;
29487
8.81k
        D(fprintf(stderr, "%*c%s _loop1_36[%d-%d]: %s failed!\n", p->level, ' ',
29488
8.81k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_block"));
29489
8.81k
    }
29490
8.81k
    if (_n == 0 || p->error_indicator) {
29491
5.27k
        PyMem_Free(_children);
29492
5.27k
        p->level--;
29493
5.27k
        return NULL;
29494
5.27k
    }
29495
3.54k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29496
3.54k
    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
9.20k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29504
3.54k
    PyMem_Free(_children);
29505
3.54k
    p->level--;
29506
3.54k
    return _seq;
29507
3.54k
}
29508
29509
// _loop1_37: except_star_block
29510
static asdl_seq *
29511
_loop1_37_rule(Parser *p)
29512
5.85k
{
29513
5.85k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29514
0
        _Pypegen_stack_overflow(p);
29515
0
    }
29516
5.85k
    if (p->error_indicator) {
29517
0
        p->level--;
29518
0
        return NULL;
29519
0
    }
29520
5.85k
    void *_res = NULL;
29521
5.85k
    int _mark = p->mark;
29522
5.85k
    void **_children = PyMem_Malloc(sizeof(void *));
29523
5.85k
    if (!_children) {
29524
0
        p->error_indicator = 1;
29525
0
        PyErr_NoMemory();
29526
0
        p->level--;
29527
0
        return NULL;
29528
0
    }
29529
5.85k
    Py_ssize_t _children_capacity = 1;
29530
5.85k
    Py_ssize_t _n = 0;
29531
5.85k
    { // except_star_block
29532
5.85k
        if (p->error_indicator) {
29533
0
            p->level--;
29534
0
            return NULL;
29535
0
        }
29536
5.85k
        D(fprintf(stderr, "%*c> _loop1_37[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_star_block"));
29537
5.85k
        excepthandler_ty except_star_block_var;
29538
5.85k
        while (
29539
12.5k
            (except_star_block_var = except_star_block_rule(p))  // except_star_block
29540
5.85k
        )
29541
6.67k
        {
29542
6.67k
            _res = except_star_block_var;
29543
6.67k
            if (_n == _children_capacity) {
29544
1.34k
                _children_capacity *= 2;
29545
1.34k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29546
1.34k
                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
1.34k
                _children = _new_children;
29554
1.34k
            }
29555
6.67k
            _children[_n++] = _res;
29556
6.67k
            _mark = p->mark;
29557
6.67k
        }
29558
5.85k
        p->mark = _mark;
29559
5.85k
        D(fprintf(stderr, "%*c%s _loop1_37[%d-%d]: %s failed!\n", p->level, ' ',
29560
5.85k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_star_block"));
29561
5.85k
    }
29562
5.85k
    if (_n == 0 || p->error_indicator) {
29563
1.31k
        PyMem_Free(_children);
29564
1.31k
        p->level--;
29565
1.31k
        return NULL;
29566
1.31k
    }
29567
4.54k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29568
4.54k
    if (!_seq) {
29569
0
        PyMem_Free(_children);
29570
0
        p->error_indicator = 1;
29571
0
        PyErr_NoMemory();
29572
0
        p->level--;
29573
0
        return NULL;
29574
0
    }
29575
11.2k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29576
4.54k
    PyMem_Free(_children);
29577
4.54k
    p->level--;
29578
4.54k
    return _seq;
29579
4.54k
}
29580
29581
// _loop1_38: case_block
29582
static asdl_seq *
29583
_loop1_38_rule(Parser *p)
29584
2.33k
{
29585
2.33k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29586
0
        _Pypegen_stack_overflow(p);
29587
0
    }
29588
2.33k
    if (p->error_indicator) {
29589
0
        p->level--;
29590
0
        return NULL;
29591
0
    }
29592
2.33k
    void *_res = NULL;
29593
2.33k
    int _mark = p->mark;
29594
2.33k
    void **_children = PyMem_Malloc(sizeof(void *));
29595
2.33k
    if (!_children) {
29596
0
        p->error_indicator = 1;
29597
0
        PyErr_NoMemory();
29598
0
        p->level--;
29599
0
        return NULL;
29600
0
    }
29601
2.33k
    Py_ssize_t _children_capacity = 1;
29602
2.33k
    Py_ssize_t _n = 0;
29603
2.33k
    { // case_block
29604
2.33k
        if (p->error_indicator) {
29605
0
            p->level--;
29606
0
            return NULL;
29607
0
        }
29608
2.33k
        D(fprintf(stderr, "%*c> _loop1_38[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "case_block"));
29609
2.33k
        match_case_ty case_block_var;
29610
2.33k
        while (
29611
9.48k
            (case_block_var = case_block_rule(p))  // case_block
29612
2.33k
        )
29613
7.14k
        {
29614
7.14k
            _res = case_block_var;
29615
7.14k
            if (_n == _children_capacity) {
29616
1.00k
                _children_capacity *= 2;
29617
1.00k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29618
1.00k
                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
1.00k
                _children = _new_children;
29626
1.00k
            }
29627
7.14k
            _children[_n++] = _res;
29628
7.14k
            _mark = p->mark;
29629
7.14k
        }
29630
2.33k
        p->mark = _mark;
29631
2.33k
        D(fprintf(stderr, "%*c%s _loop1_38[%d-%d]: %s failed!\n", p->level, ' ',
29632
2.33k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "case_block"));
29633
2.33k
    }
29634
2.33k
    if (_n == 0 || p->error_indicator) {
29635
880
        PyMem_Free(_children);
29636
880
        p->level--;
29637
880
        return NULL;
29638
880
    }
29639
1.45k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29640
1.45k
    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
8.38k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29648
1.45k
    PyMem_Free(_children);
29649
1.45k
    p->level--;
29650
1.45k
    return _seq;
29651
1.45k
}
29652
29653
// _loop0_39: '|' closed_pattern
29654
static asdl_seq *
29655
_loop0_39_rule(Parser *p)
29656
194k
{
29657
194k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29658
0
        _Pypegen_stack_overflow(p);
29659
0
    }
29660
194k
    if (p->error_indicator) {
29661
31
        p->level--;
29662
31
        return NULL;
29663
31
    }
29664
194k
    void *_res = NULL;
29665
194k
    int _mark = p->mark;
29666
194k
    void **_children = PyMem_Malloc(sizeof(void *));
29667
194k
    if (!_children) {
29668
0
        p->error_indicator = 1;
29669
0
        PyErr_NoMemory();
29670
0
        p->level--;
29671
0
        return NULL;
29672
0
    }
29673
194k
    Py_ssize_t _children_capacity = 1;
29674
194k
    Py_ssize_t _n = 0;
29675
194k
    { // '|' closed_pattern
29676
194k
        if (p->error_indicator) {
29677
0
            p->level--;
29678
0
            return NULL;
29679
0
        }
29680
194k
        D(fprintf(stderr, "%*c> _loop0_39[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|' closed_pattern"));
29681
194k
        Token * _literal;
29682
194k
        pattern_ty elem;
29683
194k
        while (
29684
202k
            (_literal = _PyPegen_expect_token(p, 18))  // token='|'
29685
202k
            &&
29686
202k
            (elem = closed_pattern_rule(p))  // closed_pattern
29687
194k
        )
29688
7.60k
        {
29689
7.60k
            _res = elem;
29690
7.60k
            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
7.60k
            if (_n == _children_capacity) {
29697
2.59k
                _children_capacity *= 2;
29698
2.59k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29699
2.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
2.59k
                _children = _new_children;
29707
2.59k
            }
29708
7.60k
            _children[_n++] = _res;
29709
7.60k
            _mark = p->mark;
29710
7.60k
        }
29711
194k
        p->mark = _mark;
29712
194k
        D(fprintf(stderr, "%*c%s _loop0_39[%d-%d]: %s failed!\n", p->level, ' ',
29713
194k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|' closed_pattern"));
29714
194k
    }
29715
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29716
194k
    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
202k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29724
194k
    PyMem_Free(_children);
29725
194k
    p->level--;
29726
194k
    return _seq;
29727
194k
}
29728
29729
// _gather_40: closed_pattern _loop0_39
29730
static asdl_seq *
29731
_gather_40_rule(Parser *p)
29732
292k
{
29733
292k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29734
0
        _Pypegen_stack_overflow(p);
29735
0
    }
29736
292k
    if (p->error_indicator) {
29737
0
        p->level--;
29738
0
        return NULL;
29739
0
    }
29740
292k
    asdl_seq * _res = NULL;
29741
292k
    int _mark = p->mark;
29742
292k
    { // closed_pattern _loop0_39
29743
292k
        if (p->error_indicator) {
29744
0
            p->level--;
29745
0
            return NULL;
29746
0
        }
29747
292k
        D(fprintf(stderr, "%*c> _gather_40[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "closed_pattern _loop0_39"));
29748
292k
        pattern_ty elem;
29749
292k
        asdl_seq * seq;
29750
292k
        if (
29751
292k
            (elem = closed_pattern_rule(p))  // closed_pattern
29752
292k
            &&
29753
292k
            (seq = _loop0_39_rule(p))  // _loop0_39
29754
292k
        )
29755
194k
        {
29756
194k
            D(fprintf(stderr, "%*c+ _gather_40[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "closed_pattern _loop0_39"));
29757
194k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
29758
194k
            goto done;
29759
194k
        }
29760
97.2k
        p->mark = _mark;
29761
97.2k
        D(fprintf(stderr, "%*c%s _gather_40[%d-%d]: %s failed!\n", p->level, ' ',
29762
97.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "closed_pattern _loop0_39"));
29763
97.2k
    }
29764
0
    _res = NULL;
29765
292k
  done:
29766
292k
    p->level--;
29767
292k
    return _res;
29768
97.2k
}
29769
29770
// _tmp_41: '+' | '-'
29771
static void *
29772
_tmp_41_rule(Parser *p)
29773
36.2k
{
29774
36.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29775
0
        _Pypegen_stack_overflow(p);
29776
0
    }
29777
36.2k
    if (p->error_indicator) {
29778
0
        p->level--;
29779
0
        return NULL;
29780
0
    }
29781
36.2k
    void * _res = NULL;
29782
36.2k
    int _mark = p->mark;
29783
36.2k
    { // '+'
29784
36.2k
        if (p->error_indicator) {
29785
0
            p->level--;
29786
0
            return NULL;
29787
0
        }
29788
36.2k
        D(fprintf(stderr, "%*c> _tmp_41[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+'"));
29789
36.2k
        Token * _literal;
29790
36.2k
        if (
29791
36.2k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
29792
36.2k
        )
29793
23
        {
29794
23
            D(fprintf(stderr, "%*c+ _tmp_41[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+'"));
29795
23
            _res = _literal;
29796
23
            goto done;
29797
23
        }
29798
36.2k
        p->mark = _mark;
29799
36.2k
        D(fprintf(stderr, "%*c%s _tmp_41[%d-%d]: %s failed!\n", p->level, ' ',
29800
36.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+'"));
29801
36.2k
    }
29802
0
    { // '-'
29803
36.2k
        if (p->error_indicator) {
29804
8
            p->level--;
29805
8
            return NULL;
29806
8
        }
29807
36.2k
        D(fprintf(stderr, "%*c> _tmp_41[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-'"));
29808
36.2k
        Token * _literal;
29809
36.2k
        if (
29810
36.2k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
29811
36.2k
        )
29812
175
        {
29813
175
            D(fprintf(stderr, "%*c+ _tmp_41[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-'"));
29814
175
            _res = _literal;
29815
175
            goto done;
29816
175
        }
29817
36.0k
        p->mark = _mark;
29818
36.0k
        D(fprintf(stderr, "%*c%s _tmp_41[%d-%d]: %s failed!\n", p->level, ' ',
29819
36.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-'"));
29820
36.0k
    }
29821
0
    _res = NULL;
29822
36.2k
  done:
29823
36.2k
    p->level--;
29824
36.2k
    return _res;
29825
36.0k
}
29826
29827
// _tmp_42: STRING | FSTRING_START | TSTRING_START
29828
static void *
29829
_tmp_42_rule(Parser *p)
29830
3.11M
{
29831
3.11M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29832
1
        _Pypegen_stack_overflow(p);
29833
1
    }
29834
3.11M
    if (p->error_indicator) {
29835
1
        p->level--;
29836
1
        return NULL;
29837
1
    }
29838
3.11M
    void * _res = NULL;
29839
3.11M
    int _mark = p->mark;
29840
3.11M
    { // STRING
29841
3.11M
        if (p->error_indicator) {
29842
0
            p->level--;
29843
0
            return NULL;
29844
0
        }
29845
3.11M
        D(fprintf(stderr, "%*c> _tmp_42[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING"));
29846
3.11M
        expr_ty string_var;
29847
3.11M
        if (
29848
3.11M
            (string_var = _PyPegen_string_token(p))  // STRING
29849
3.11M
        )
29850
133k
        {
29851
133k
            D(fprintf(stderr, "%*c+ _tmp_42[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING"));
29852
133k
            _res = string_var;
29853
133k
            goto done;
29854
133k
        }
29855
2.98M
        p->mark = _mark;
29856
2.98M
        D(fprintf(stderr, "%*c%s _tmp_42[%d-%d]: %s failed!\n", p->level, ' ',
29857
2.98M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING"));
29858
2.98M
    }
29859
0
    { // FSTRING_START
29860
2.98M
        if (p->error_indicator) {
29861
0
            p->level--;
29862
0
            return NULL;
29863
0
        }
29864
2.98M
        D(fprintf(stderr, "%*c> _tmp_42[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_START"));
29865
2.98M
        Token * fstring_start_var;
29866
2.98M
        if (
29867
2.98M
            (fstring_start_var = _PyPegen_expect_token(p, FSTRING_START))  // token='FSTRING_START'
29868
2.98M
        )
29869
18.7k
        {
29870
18.7k
            D(fprintf(stderr, "%*c+ _tmp_42[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_START"));
29871
18.7k
            _res = fstring_start_var;
29872
18.7k
            goto done;
29873
18.7k
        }
29874
2.96M
        p->mark = _mark;
29875
2.96M
        D(fprintf(stderr, "%*c%s _tmp_42[%d-%d]: %s failed!\n", p->level, ' ',
29876
2.96M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_START"));
29877
2.96M
    }
29878
0
    { // TSTRING_START
29879
2.96M
        if (p->error_indicator) {
29880
0
            p->level--;
29881
0
            return NULL;
29882
0
        }
29883
2.96M
        D(fprintf(stderr, "%*c> _tmp_42[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TSTRING_START"));
29884
2.96M
        Token * tstring_start_var;
29885
2.96M
        if (
29886
2.96M
            (tstring_start_var = _PyPegen_expect_token(p, TSTRING_START))  // token='TSTRING_START'
29887
2.96M
        )
29888
5.49k
        {
29889
5.49k
            D(fprintf(stderr, "%*c+ _tmp_42[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TSTRING_START"));
29890
5.49k
            _res = tstring_start_var;
29891
5.49k
            goto done;
29892
5.49k
        }
29893
2.95M
        p->mark = _mark;
29894
2.95M
        D(fprintf(stderr, "%*c%s _tmp_42[%d-%d]: %s failed!\n", p->level, ' ',
29895
2.95M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TSTRING_START"));
29896
2.95M
    }
29897
0
    _res = NULL;
29898
3.11M
  done:
29899
3.11M
    p->level--;
29900
3.11M
    return _res;
29901
2.95M
}
29902
29903
// _tmp_43: '.' | '(' | '='
29904
static void *
29905
_tmp_43_rule(Parser *p)
29906
38.5k
{
29907
38.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29908
0
        _Pypegen_stack_overflow(p);
29909
0
    }
29910
38.5k
    if (p->error_indicator) {
29911
0
        p->level--;
29912
0
        return NULL;
29913
0
    }
29914
38.5k
    void * _res = NULL;
29915
38.5k
    int _mark = p->mark;
29916
38.5k
    { // '.'
29917
38.5k
        if (p->error_indicator) {
29918
0
            p->level--;
29919
0
            return NULL;
29920
0
        }
29921
38.5k
        D(fprintf(stderr, "%*c> _tmp_43[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
29922
38.5k
        Token * _literal;
29923
38.5k
        if (
29924
38.5k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
29925
38.5k
        )
29926
3.08k
        {
29927
3.08k
            D(fprintf(stderr, "%*c+ _tmp_43[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
29928
3.08k
            _res = _literal;
29929
3.08k
            goto done;
29930
3.08k
        }
29931
35.4k
        p->mark = _mark;
29932
35.4k
        D(fprintf(stderr, "%*c%s _tmp_43[%d-%d]: %s failed!\n", p->level, ' ',
29933
35.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
29934
35.4k
    }
29935
0
    { // '('
29936
35.4k
        if (p->error_indicator) {
29937
36
            p->level--;
29938
36
            return NULL;
29939
36
        }
29940
35.3k
        D(fprintf(stderr, "%*c> _tmp_43[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
29941
35.3k
        Token * _literal;
29942
35.3k
        if (
29943
35.3k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
29944
35.3k
        )
29945
9.70k
        {
29946
9.70k
            D(fprintf(stderr, "%*c+ _tmp_43[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
29947
9.70k
            _res = _literal;
29948
9.70k
            goto done;
29949
9.70k
        }
29950
25.6k
        p->mark = _mark;
29951
25.6k
        D(fprintf(stderr, "%*c%s _tmp_43[%d-%d]: %s failed!\n", p->level, ' ',
29952
25.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
29953
25.6k
    }
29954
0
    { // '='
29955
25.6k
        if (p->error_indicator) {
29956
0
            p->level--;
29957
0
            return NULL;
29958
0
        }
29959
25.6k
        D(fprintf(stderr, "%*c> _tmp_43[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
29960
25.6k
        Token * _literal;
29961
25.6k
        if (
29962
25.6k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
29963
25.6k
        )
29964
2.87k
        {
29965
2.87k
            D(fprintf(stderr, "%*c+ _tmp_43[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
29966
2.87k
            _res = _literal;
29967
2.87k
            goto done;
29968
2.87k
        }
29969
22.8k
        p->mark = _mark;
29970
22.8k
        D(fprintf(stderr, "%*c%s _tmp_43[%d-%d]: %s failed!\n", p->level, ' ',
29971
22.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
29972
22.8k
    }
29973
0
    _res = NULL;
29974
38.4k
  done:
29975
38.4k
    p->level--;
29976
38.4k
    return _res;
29977
22.8k
}
29978
29979
// _loop0_44: ',' maybe_star_pattern
29980
static asdl_seq *
29981
_loop0_44_rule(Parser *p)
29982
7.63k
{
29983
7.63k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29984
0
        _Pypegen_stack_overflow(p);
29985
0
    }
29986
7.63k
    if (p->error_indicator) {
29987
2
        p->level--;
29988
2
        return NULL;
29989
2
    }
29990
7.62k
    void *_res = NULL;
29991
7.62k
    int _mark = p->mark;
29992
7.62k
    void **_children = PyMem_Malloc(sizeof(void *));
29993
7.62k
    if (!_children) {
29994
0
        p->error_indicator = 1;
29995
0
        PyErr_NoMemory();
29996
0
        p->level--;
29997
0
        return NULL;
29998
0
    }
29999
7.62k
    Py_ssize_t _children_capacity = 1;
30000
7.62k
    Py_ssize_t _n = 0;
30001
7.62k
    { // ',' maybe_star_pattern
30002
7.62k
        if (p->error_indicator) {
30003
0
            p->level--;
30004
0
            return NULL;
30005
0
        }
30006
7.62k
        D(fprintf(stderr, "%*c> _loop0_44[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' maybe_star_pattern"));
30007
7.62k
        Token * _literal;
30008
7.62k
        pattern_ty elem;
30009
7.62k
        while (
30010
48.4k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30011
48.4k
            &&
30012
48.4k
            (elem = maybe_star_pattern_rule(p))  // maybe_star_pattern
30013
7.62k
        )
30014
40.8k
        {
30015
40.8k
            _res = elem;
30016
40.8k
            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
40.8k
            if (_n == _children_capacity) {
30023
5.43k
                _children_capacity *= 2;
30024
5.43k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30025
5.43k
                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
5.43k
                _children = _new_children;
30033
5.43k
            }
30034
40.8k
            _children[_n++] = _res;
30035
40.8k
            _mark = p->mark;
30036
40.8k
        }
30037
7.62k
        p->mark = _mark;
30038
7.62k
        D(fprintf(stderr, "%*c%s _loop0_44[%d-%d]: %s failed!\n", p->level, ' ',
30039
7.62k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' maybe_star_pattern"));
30040
7.62k
    }
30041
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30042
7.62k
    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
48.4k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30050
7.62k
    PyMem_Free(_children);
30051
7.62k
    p->level--;
30052
7.62k
    return _seq;
30053
7.62k
}
30054
30055
// _gather_45: maybe_star_pattern _loop0_44
30056
static asdl_seq *
30057
_gather_45_rule(Parser *p)
30058
10.1k
{
30059
10.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30060
0
        _Pypegen_stack_overflow(p);
30061
0
    }
30062
10.1k
    if (p->error_indicator) {
30063
0
        p->level--;
30064
0
        return NULL;
30065
0
    }
30066
10.1k
    asdl_seq * _res = NULL;
30067
10.1k
    int _mark = p->mark;
30068
10.1k
    { // maybe_star_pattern _loop0_44
30069
10.1k
        if (p->error_indicator) {
30070
0
            p->level--;
30071
0
            return NULL;
30072
0
        }
30073
10.1k
        D(fprintf(stderr, "%*c> _gather_45[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern _loop0_44"));
30074
10.1k
        pattern_ty elem;
30075
10.1k
        asdl_seq * seq;
30076
10.1k
        if (
30077
10.1k
            (elem = maybe_star_pattern_rule(p))  // maybe_star_pattern
30078
10.1k
            &&
30079
10.1k
            (seq = _loop0_44_rule(p))  // _loop0_44
30080
10.1k
        )
30081
7.62k
        {
30082
7.62k
            D(fprintf(stderr, "%*c+ _gather_45[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern _loop0_44"));
30083
7.62k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30084
7.62k
            goto done;
30085
7.62k
        }
30086
2.54k
        p->mark = _mark;
30087
2.54k
        D(fprintf(stderr, "%*c%s _gather_45[%d-%d]: %s failed!\n", p->level, ' ',
30088
2.54k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "maybe_star_pattern _loop0_44"));
30089
2.54k
    }
30090
0
    _res = NULL;
30091
10.1k
  done:
30092
10.1k
    p->level--;
30093
10.1k
    return _res;
30094
2.54k
}
30095
30096
// _loop0_46: ',' key_value_pattern
30097
static asdl_seq *
30098
_loop0_46_rule(Parser *p)
30099
1.58k
{
30100
1.58k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30101
0
        _Pypegen_stack_overflow(p);
30102
0
    }
30103
1.58k
    if (p->error_indicator) {
30104
1
        p->level--;
30105
1
        return NULL;
30106
1
    }
30107
1.58k
    void *_res = NULL;
30108
1.58k
    int _mark = p->mark;
30109
1.58k
    void **_children = PyMem_Malloc(sizeof(void *));
30110
1.58k
    if (!_children) {
30111
0
        p->error_indicator = 1;
30112
0
        PyErr_NoMemory();
30113
0
        p->level--;
30114
0
        return NULL;
30115
0
    }
30116
1.58k
    Py_ssize_t _children_capacity = 1;
30117
1.58k
    Py_ssize_t _n = 0;
30118
1.58k
    { // ',' key_value_pattern
30119
1.58k
        if (p->error_indicator) {
30120
0
            p->level--;
30121
0
            return NULL;
30122
0
        }
30123
1.58k
        D(fprintf(stderr, "%*c> _loop0_46[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' key_value_pattern"));
30124
1.58k
        Token * _literal;
30125
1.58k
        KeyPatternPair* elem;
30126
1.58k
        while (
30127
3.64k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30128
3.64k
            &&
30129
3.64k
            (elem = key_value_pattern_rule(p))  // key_value_pattern
30130
1.58k
        )
30131
2.06k
        {
30132
2.06k
            _res = elem;
30133
2.06k
            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.06k
            if (_n == _children_capacity) {
30140
759
                _children_capacity *= 2;
30141
759
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30142
759
                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
759
                _children = _new_children;
30150
759
            }
30151
2.06k
            _children[_n++] = _res;
30152
2.06k
            _mark = p->mark;
30153
2.06k
        }
30154
1.58k
        p->mark = _mark;
30155
1.58k
        D(fprintf(stderr, "%*c%s _loop0_46[%d-%d]: %s failed!\n", p->level, ' ',
30156
1.58k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' key_value_pattern"));
30157
1.58k
    }
30158
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30159
1.58k
    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
3.64k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30167
1.58k
    PyMem_Free(_children);
30168
1.58k
    p->level--;
30169
1.58k
    return _seq;
30170
1.58k
}
30171
30172
// _gather_47: key_value_pattern _loop0_46
30173
static asdl_seq *
30174
_gather_47_rule(Parser *p)
30175
2.95k
{
30176
2.95k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30177
0
        _Pypegen_stack_overflow(p);
30178
0
    }
30179
2.95k
    if (p->error_indicator) {
30180
0
        p->level--;
30181
0
        return NULL;
30182
0
    }
30183
2.95k
    asdl_seq * _res = NULL;
30184
2.95k
    int _mark = p->mark;
30185
2.95k
    { // key_value_pattern _loop0_46
30186
2.95k
        if (p->error_indicator) {
30187
0
            p->level--;
30188
0
            return NULL;
30189
0
        }
30190
2.95k
        D(fprintf(stderr, "%*c> _gather_47[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "key_value_pattern _loop0_46"));
30191
2.95k
        KeyPatternPair* elem;
30192
2.95k
        asdl_seq * seq;
30193
2.95k
        if (
30194
2.95k
            (elem = key_value_pattern_rule(p))  // key_value_pattern
30195
2.95k
            &&
30196
2.95k
            (seq = _loop0_46_rule(p))  // _loop0_46
30197
2.95k
        )
30198
1.58k
        {
30199
1.58k
            D(fprintf(stderr, "%*c+ _gather_47[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "key_value_pattern _loop0_46"));
30200
1.58k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30201
1.58k
            goto done;
30202
1.58k
        }
30203
1.37k
        p->mark = _mark;
30204
1.37k
        D(fprintf(stderr, "%*c%s _gather_47[%d-%d]: %s failed!\n", p->level, ' ',
30205
1.37k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "key_value_pattern _loop0_46"));
30206
1.37k
    }
30207
0
    _res = NULL;
30208
2.95k
  done:
30209
2.95k
    p->level--;
30210
2.95k
    return _res;
30211
1.37k
}
30212
30213
// _tmp_48: literal_expr | attr
30214
static void *
30215
_tmp_48_rule(Parser *p)
30216
6.54k
{
30217
6.54k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30218
0
        _Pypegen_stack_overflow(p);
30219
0
    }
30220
6.54k
    if (p->error_indicator) {
30221
0
        p->level--;
30222
0
        return NULL;
30223
0
    }
30224
6.54k
    void * _res = NULL;
30225
6.54k
    int _mark = p->mark;
30226
6.54k
    { // literal_expr
30227
6.54k
        if (p->error_indicator) {
30228
0
            p->level--;
30229
0
            return NULL;
30230
0
        }
30231
6.54k
        D(fprintf(stderr, "%*c> _tmp_48[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "literal_expr"));
30232
6.54k
        expr_ty literal_expr_var;
30233
6.54k
        if (
30234
6.54k
            (literal_expr_var = literal_expr_rule(p))  // literal_expr
30235
6.54k
        )
30236
6.30k
        {
30237
6.30k
            D(fprintf(stderr, "%*c+ _tmp_48[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "literal_expr"));
30238
6.30k
            _res = literal_expr_var;
30239
6.30k
            goto done;
30240
6.30k
        }
30241
239
        p->mark = _mark;
30242
239
        D(fprintf(stderr, "%*c%s _tmp_48[%d-%d]: %s failed!\n", p->level, ' ',
30243
239
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "literal_expr"));
30244
239
    }
30245
0
    { // attr
30246
239
        if (p->error_indicator) {
30247
13
            p->level--;
30248
13
            return NULL;
30249
13
        }
30250
226
        D(fprintf(stderr, "%*c> _tmp_48[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr"));
30251
226
        expr_ty attr_var;
30252
226
        if (
30253
226
            (attr_var = attr_rule(p))  // attr
30254
226
        )
30255
96
        {
30256
96
            D(fprintf(stderr, "%*c+ _tmp_48[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr"));
30257
96
            _res = attr_var;
30258
96
            goto done;
30259
96
        }
30260
130
        p->mark = _mark;
30261
130
        D(fprintf(stderr, "%*c%s _tmp_48[%d-%d]: %s failed!\n", p->level, ' ',
30262
130
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr"));
30263
130
    }
30264
0
    _res = NULL;
30265
6.53k
  done:
30266
6.53k
    p->level--;
30267
6.53k
    return _res;
30268
130
}
30269
30270
// _loop0_49: ',' pattern
30271
static asdl_seq *
30272
_loop0_49_rule(Parser *p)
30273
7.01k
{
30274
7.01k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30275
0
        _Pypegen_stack_overflow(p);
30276
0
    }
30277
7.01k
    if (p->error_indicator) {
30278
1
        p->level--;
30279
1
        return NULL;
30280
1
    }
30281
7.00k
    void *_res = NULL;
30282
7.00k
    int _mark = p->mark;
30283
7.00k
    void **_children = PyMem_Malloc(sizeof(void *));
30284
7.00k
    if (!_children) {
30285
0
        p->error_indicator = 1;
30286
0
        PyErr_NoMemory();
30287
0
        p->level--;
30288
0
        return NULL;
30289
0
    }
30290
7.00k
    Py_ssize_t _children_capacity = 1;
30291
7.00k
    Py_ssize_t _n = 0;
30292
7.00k
    { // ',' pattern
30293
7.00k
        if (p->error_indicator) {
30294
0
            p->level--;
30295
0
            return NULL;
30296
0
        }
30297
7.00k
        D(fprintf(stderr, "%*c> _loop0_49[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' pattern"));
30298
7.00k
        Token * _literal;
30299
7.00k
        pattern_ty elem;
30300
7.00k
        while (
30301
10.4k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30302
10.4k
            &&
30303
10.4k
            (elem = pattern_rule(p))  // pattern
30304
7.00k
        )
30305
3.40k
        {
30306
3.40k
            _res = elem;
30307
3.40k
            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
3.40k
            if (_n == _children_capacity) {
30314
1.05k
                _children_capacity *= 2;
30315
1.05k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30316
1.05k
                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
1.05k
                _children = _new_children;
30324
1.05k
            }
30325
3.40k
            _children[_n++] = _res;
30326
3.40k
            _mark = p->mark;
30327
3.40k
        }
30328
7.00k
        p->mark = _mark;
30329
7.00k
        D(fprintf(stderr, "%*c%s _loop0_49[%d-%d]: %s failed!\n", p->level, ' ',
30330
7.00k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' pattern"));
30331
7.00k
    }
30332
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30333
7.00k
    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
10.4k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30341
7.00k
    PyMem_Free(_children);
30342
7.00k
    p->level--;
30343
7.00k
    return _seq;
30344
7.00k
}
30345
30346
// _gather_50: pattern _loop0_49
30347
static asdl_seq *
30348
_gather_50_rule(Parser *p)
30349
19.2k
{
30350
19.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30351
0
        _Pypegen_stack_overflow(p);
30352
0
    }
30353
19.2k
    if (p->error_indicator) {
30354
0
        p->level--;
30355
0
        return NULL;
30356
0
    }
30357
19.2k
    asdl_seq * _res = NULL;
30358
19.2k
    int _mark = p->mark;
30359
19.2k
    { // pattern _loop0_49
30360
19.2k
        if (p->error_indicator) {
30361
0
            p->level--;
30362
0
            return NULL;
30363
0
        }
30364
19.2k
        D(fprintf(stderr, "%*c> _gather_50[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern _loop0_49"));
30365
19.2k
        pattern_ty elem;
30366
19.2k
        asdl_seq * seq;
30367
19.2k
        if (
30368
19.2k
            (elem = pattern_rule(p))  // pattern
30369
19.2k
            &&
30370
19.2k
            (seq = _loop0_49_rule(p))  // _loop0_49
30371
19.2k
        )
30372
7.00k
        {
30373
7.00k
            D(fprintf(stderr, "%*c+ _gather_50[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern _loop0_49"));
30374
7.00k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30375
7.00k
            goto done;
30376
7.00k
        }
30377
12.2k
        p->mark = _mark;
30378
12.2k
        D(fprintf(stderr, "%*c%s _gather_50[%d-%d]: %s failed!\n", p->level, ' ',
30379
12.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern _loop0_49"));
30380
12.2k
    }
30381
0
    _res = NULL;
30382
19.2k
  done:
30383
19.2k
    p->level--;
30384
19.2k
    return _res;
30385
12.2k
}
30386
30387
// _loop0_51: ',' keyword_pattern
30388
static asdl_seq *
30389
_loop0_51_rule(Parser *p)
30390
2.86k
{
30391
2.86k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30392
0
        _Pypegen_stack_overflow(p);
30393
0
    }
30394
2.86k
    if (p->error_indicator) {
30395
0
        p->level--;
30396
0
        return NULL;
30397
0
    }
30398
2.86k
    void *_res = NULL;
30399
2.86k
    int _mark = p->mark;
30400
2.86k
    void **_children = PyMem_Malloc(sizeof(void *));
30401
2.86k
    if (!_children) {
30402
0
        p->error_indicator = 1;
30403
0
        PyErr_NoMemory();
30404
0
        p->level--;
30405
0
        return NULL;
30406
0
    }
30407
2.86k
    Py_ssize_t _children_capacity = 1;
30408
2.86k
    Py_ssize_t _n = 0;
30409
2.86k
    { // ',' keyword_pattern
30410
2.86k
        if (p->error_indicator) {
30411
0
            p->level--;
30412
0
            return NULL;
30413
0
        }
30414
2.86k
        D(fprintf(stderr, "%*c> _loop0_51[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' keyword_pattern"));
30415
2.86k
        Token * _literal;
30416
2.86k
        KeyPatternPair* elem;
30417
2.86k
        while (
30418
4.18k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30419
4.18k
            &&
30420
4.18k
            (elem = keyword_pattern_rule(p))  // keyword_pattern
30421
2.86k
        )
30422
1.31k
        {
30423
1.31k
            _res = elem;
30424
1.31k
            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.31k
            if (_n == _children_capacity) {
30431
316
                _children_capacity *= 2;
30432
316
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30433
316
                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
316
                _children = _new_children;
30441
316
            }
30442
1.31k
            _children[_n++] = _res;
30443
1.31k
            _mark = p->mark;
30444
1.31k
        }
30445
2.86k
        p->mark = _mark;
30446
2.86k
        D(fprintf(stderr, "%*c%s _loop0_51[%d-%d]: %s failed!\n", p->level, ' ',
30447
2.86k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' keyword_pattern"));
30448
2.86k
    }
30449
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30450
2.86k
    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
4.18k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30458
2.86k
    PyMem_Free(_children);
30459
2.86k
    p->level--;
30460
2.86k
    return _seq;
30461
2.86k
}
30462
30463
// _gather_52: keyword_pattern _loop0_51
30464
static asdl_seq *
30465
_gather_52_rule(Parser *p)
30466
11.8k
{
30467
11.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30468
0
        _Pypegen_stack_overflow(p);
30469
0
    }
30470
11.8k
    if (p->error_indicator) {
30471
0
        p->level--;
30472
0
        return NULL;
30473
0
    }
30474
11.8k
    asdl_seq * _res = NULL;
30475
11.8k
    int _mark = p->mark;
30476
11.8k
    { // keyword_pattern _loop0_51
30477
11.8k
        if (p->error_indicator) {
30478
0
            p->level--;
30479
0
            return NULL;
30480
0
        }
30481
11.8k
        D(fprintf(stderr, "%*c> _gather_52[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "keyword_pattern _loop0_51"));
30482
11.8k
        KeyPatternPair* elem;
30483
11.8k
        asdl_seq * seq;
30484
11.8k
        if (
30485
11.8k
            (elem = keyword_pattern_rule(p))  // keyword_pattern
30486
11.8k
            &&
30487
11.8k
            (seq = _loop0_51_rule(p))  // _loop0_51
30488
11.8k
        )
30489
2.86k
        {
30490
2.86k
            D(fprintf(stderr, "%*c+ _gather_52[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "keyword_pattern _loop0_51"));
30491
2.86k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30492
2.86k
            goto done;
30493
2.86k
        }
30494
8.99k
        p->mark = _mark;
30495
8.99k
        D(fprintf(stderr, "%*c%s _gather_52[%d-%d]: %s failed!\n", p->level, ' ',
30496
8.99k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "keyword_pattern _loop0_51"));
30497
8.99k
    }
30498
0
    _res = NULL;
30499
11.8k
  done:
30500
11.8k
    p->level--;
30501
11.8k
    return _res;
30502
8.99k
}
30503
30504
// _loop0_53: ',' type_param
30505
static asdl_seq *
30506
_loop0_53_rule(Parser *p)
30507
13.0k
{
30508
13.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30509
0
        _Pypegen_stack_overflow(p);
30510
0
    }
30511
13.0k
    if (p->error_indicator) {
30512
0
        p->level--;
30513
0
        return NULL;
30514
0
    }
30515
13.0k
    void *_res = NULL;
30516
13.0k
    int _mark = p->mark;
30517
13.0k
    void **_children = PyMem_Malloc(sizeof(void *));
30518
13.0k
    if (!_children) {
30519
0
        p->error_indicator = 1;
30520
0
        PyErr_NoMemory();
30521
0
        p->level--;
30522
0
        return NULL;
30523
0
    }
30524
13.0k
    Py_ssize_t _children_capacity = 1;
30525
13.0k
    Py_ssize_t _n = 0;
30526
13.0k
    { // ',' type_param
30527
13.0k
        if (p->error_indicator) {
30528
0
            p->level--;
30529
0
            return NULL;
30530
0
        }
30531
13.0k
        D(fprintf(stderr, "%*c> _loop0_53[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' type_param"));
30532
13.0k
        Token * _literal;
30533
13.0k
        type_param_ty elem;
30534
13.0k
        while (
30535
25.4k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30536
25.4k
            &&
30537
25.4k
            (elem = type_param_rule(p))  // type_param
30538
13.0k
        )
30539
12.3k
        {
30540
12.3k
            _res = elem;
30541
12.3k
            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
12.3k
            if (_n == _children_capacity) {
30548
5.57k
                _children_capacity *= 2;
30549
5.57k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30550
5.57k
                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
5.57k
                _children = _new_children;
30558
5.57k
            }
30559
12.3k
            _children[_n++] = _res;
30560
12.3k
            _mark = p->mark;
30561
12.3k
        }
30562
13.0k
        p->mark = _mark;
30563
13.0k
        D(fprintf(stderr, "%*c%s _loop0_53[%d-%d]: %s failed!\n", p->level, ' ',
30564
13.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' type_param"));
30565
13.0k
    }
30566
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30567
13.0k
    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
25.4k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30575
13.0k
    PyMem_Free(_children);
30576
13.0k
    p->level--;
30577
13.0k
    return _seq;
30578
13.0k
}
30579
30580
// _gather_54: type_param _loop0_53
30581
static asdl_seq *
30582
_gather_54_rule(Parser *p)
30583
13.1k
{
30584
13.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30585
0
        _Pypegen_stack_overflow(p);
30586
0
    }
30587
13.1k
    if (p->error_indicator) {
30588
0
        p->level--;
30589
0
        return NULL;
30590
0
    }
30591
13.1k
    asdl_seq * _res = NULL;
30592
13.1k
    int _mark = p->mark;
30593
13.1k
    { // type_param _loop0_53
30594
13.1k
        if (p->error_indicator) {
30595
0
            p->level--;
30596
0
            return NULL;
30597
0
        }
30598
13.1k
        D(fprintf(stderr, "%*c> _gather_54[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "type_param _loop0_53"));
30599
13.1k
        type_param_ty elem;
30600
13.1k
        asdl_seq * seq;
30601
13.1k
        if (
30602
13.1k
            (elem = type_param_rule(p))  // type_param
30603
13.1k
            &&
30604
13.1k
            (seq = _loop0_53_rule(p))  // _loop0_53
30605
13.1k
        )
30606
13.0k
        {
30607
13.0k
            D(fprintf(stderr, "%*c+ _gather_54[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "type_param _loop0_53"));
30608
13.0k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30609
13.0k
            goto done;
30610
13.0k
        }
30611
33
        p->mark = _mark;
30612
33
        D(fprintf(stderr, "%*c%s _gather_54[%d-%d]: %s failed!\n", p->level, ' ',
30613
33
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "type_param _loop0_53"));
30614
33
    }
30615
0
    _res = NULL;
30616
13.1k
  done:
30617
13.1k
    p->level--;
30618
13.1k
    return _res;
30619
33
}
30620
30621
// _loop1_55: (',' expression)
30622
static asdl_seq *
30623
_loop1_55_rule(Parser *p)
30624
7.29k
{
30625
7.29k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30626
0
        _Pypegen_stack_overflow(p);
30627
0
    }
30628
7.29k
    if (p->error_indicator) {
30629
0
        p->level--;
30630
0
        return NULL;
30631
0
    }
30632
7.29k
    void *_res = NULL;
30633
7.29k
    int _mark = p->mark;
30634
7.29k
    void **_children = PyMem_Malloc(sizeof(void *));
30635
7.29k
    if (!_children) {
30636
0
        p->error_indicator = 1;
30637
0
        PyErr_NoMemory();
30638
0
        p->level--;
30639
0
        return NULL;
30640
0
    }
30641
7.29k
    Py_ssize_t _children_capacity = 1;
30642
7.29k
    Py_ssize_t _n = 0;
30643
7.29k
    { // (',' expression)
30644
7.29k
        if (p->error_indicator) {
30645
0
            p->level--;
30646
0
            return NULL;
30647
0
        }
30648
7.29k
        D(fprintf(stderr, "%*c> _loop1_55[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' expression)"));
30649
7.29k
        void *_tmp_16_var;
30650
7.29k
        while (
30651
21.8k
            (_tmp_16_var = _tmp_16_rule(p))  // ',' expression
30652
7.29k
        )
30653
14.5k
        {
30654
14.5k
            _res = _tmp_16_var;
30655
14.5k
            if (_n == _children_capacity) {
30656
4.14k
                _children_capacity *= 2;
30657
4.14k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30658
4.14k
                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
4.14k
                _children = _new_children;
30666
4.14k
            }
30667
14.5k
            _children[_n++] = _res;
30668
14.5k
            _mark = p->mark;
30669
14.5k
        }
30670
7.29k
        p->mark = _mark;
30671
7.29k
        D(fprintf(stderr, "%*c%s _loop1_55[%d-%d]: %s failed!\n", p->level, ' ',
30672
7.29k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' expression)"));
30673
7.29k
    }
30674
7.29k
    if (_n == 0 || p->error_indicator) {
30675
4.72k
        PyMem_Free(_children);
30676
4.72k
        p->level--;
30677
4.72k
        return NULL;
30678
4.72k
    }
30679
2.57k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30680
2.57k
    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
17.1k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30688
2.57k
    PyMem_Free(_children);
30689
2.57k
    p->level--;
30690
2.57k
    return _seq;
30691
2.57k
}
30692
30693
// _loop1_56: (',' star_expression)
30694
static asdl_seq *
30695
_loop1_56_rule(Parser *p)
30696
361k
{
30697
361k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30698
0
        _Pypegen_stack_overflow(p);
30699
0
    }
30700
361k
    if (p->error_indicator) {
30701
0
        p->level--;
30702
0
        return NULL;
30703
0
    }
30704
361k
    void *_res = NULL;
30705
361k
    int _mark = p->mark;
30706
361k
    void **_children = PyMem_Malloc(sizeof(void *));
30707
361k
    if (!_children) {
30708
0
        p->error_indicator = 1;
30709
0
        PyErr_NoMemory();
30710
0
        p->level--;
30711
0
        return NULL;
30712
0
    }
30713
361k
    Py_ssize_t _children_capacity = 1;
30714
361k
    Py_ssize_t _n = 0;
30715
361k
    { // (',' star_expression)
30716
361k
        if (p->error_indicator) {
30717
0
            p->level--;
30718
0
            return NULL;
30719
0
        }
30720
361k
        D(fprintf(stderr, "%*c> _loop1_56[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_expression)"));
30721
361k
        void *_tmp_157_var;
30722
361k
        while (
30723
903k
            (_tmp_157_var = _tmp_157_rule(p))  // ',' star_expression
30724
361k
        )
30725
541k
        {
30726
541k
            _res = _tmp_157_var;
30727
541k
            if (_n == _children_capacity) {
30728
36.3k
                _children_capacity *= 2;
30729
36.3k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30730
36.3k
                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
36.3k
                _children = _new_children;
30738
36.3k
            }
30739
541k
            _children[_n++] = _res;
30740
541k
            _mark = p->mark;
30741
541k
        }
30742
361k
        p->mark = _mark;
30743
361k
        D(fprintf(stderr, "%*c%s _loop1_56[%d-%d]: %s failed!\n", p->level, ' ',
30744
361k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_expression)"));
30745
361k
    }
30746
361k
    if (_n == 0 || p->error_indicator) {
30747
331k
        PyMem_Free(_children);
30748
331k
        p->level--;
30749
331k
        return NULL;
30750
331k
    }
30751
30.1k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30752
30.1k
    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
571k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30760
30.1k
    PyMem_Free(_children);
30761
30.1k
    p->level--;
30762
30.1k
    return _seq;
30763
30.1k
}
30764
30765
// _loop0_57: ',' star_named_expression
30766
static asdl_seq *
30767
_loop0_57_rule(Parser *p)
30768
152k
{
30769
152k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30770
0
        _Pypegen_stack_overflow(p);
30771
0
    }
30772
152k
    if (p->error_indicator) {
30773
0
        p->level--;
30774
0
        return NULL;
30775
0
    }
30776
152k
    void *_res = NULL;
30777
152k
    int _mark = p->mark;
30778
152k
    void **_children = PyMem_Malloc(sizeof(void *));
30779
152k
    if (!_children) {
30780
0
        p->error_indicator = 1;
30781
0
        PyErr_NoMemory();
30782
0
        p->level--;
30783
0
        return NULL;
30784
0
    }
30785
152k
    Py_ssize_t _children_capacity = 1;
30786
152k
    Py_ssize_t _n = 0;
30787
152k
    { // ',' star_named_expression
30788
152k
        if (p->error_indicator) {
30789
0
            p->level--;
30790
0
            return NULL;
30791
0
        }
30792
152k
        D(fprintf(stderr, "%*c> _loop0_57[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_named_expression"));
30793
152k
        Token * _literal;
30794
152k
        expr_ty elem;
30795
152k
        while (
30796
358k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30797
358k
            &&
30798
358k
            (elem = star_named_expression_rule(p))  // star_named_expression
30799
152k
        )
30800
205k
        {
30801
205k
            _res = elem;
30802
205k
            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
205k
            if (_n == _children_capacity) {
30809
58.4k
                _children_capacity *= 2;
30810
58.4k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30811
58.4k
                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
58.4k
                _children = _new_children;
30819
58.4k
            }
30820
205k
            _children[_n++] = _res;
30821
205k
            _mark = p->mark;
30822
205k
        }
30823
152k
        p->mark = _mark;
30824
152k
        D(fprintf(stderr, "%*c%s _loop0_57[%d-%d]: %s failed!\n", p->level, ' ',
30825
152k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_named_expression"));
30826
152k
    }
30827
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30828
152k
    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
358k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30836
152k
    PyMem_Free(_children);
30837
152k
    p->level--;
30838
152k
    return _seq;
30839
152k
}
30840
30841
// _gather_58: star_named_expression _loop0_57
30842
static asdl_seq *
30843
_gather_58_rule(Parser *p)
30844
255k
{
30845
255k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30846
1
        _Pypegen_stack_overflow(p);
30847
1
    }
30848
255k
    if (p->error_indicator) {
30849
1
        p->level--;
30850
1
        return NULL;
30851
1
    }
30852
255k
    asdl_seq * _res = NULL;
30853
255k
    int _mark = p->mark;
30854
255k
    { // star_named_expression _loop0_57
30855
255k
        if (p->error_indicator) {
30856
0
            p->level--;
30857
0
            return NULL;
30858
0
        }
30859
255k
        D(fprintf(stderr, "%*c> _gather_58[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_57"));
30860
255k
        expr_ty elem;
30861
255k
        asdl_seq * seq;
30862
255k
        if (
30863
255k
            (elem = star_named_expression_rule(p))  // star_named_expression
30864
255k
            &&
30865
255k
            (seq = _loop0_57_rule(p))  // _loop0_57
30866
255k
        )
30867
152k
        {
30868
152k
            D(fprintf(stderr, "%*c+ _gather_58[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_57"));
30869
152k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30870
152k
            goto done;
30871
152k
        }
30872
102k
        p->mark = _mark;
30873
102k
        D(fprintf(stderr, "%*c%s _gather_58[%d-%d]: %s failed!\n", p->level, ' ',
30874
102k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression _loop0_57"));
30875
102k
    }
30876
0
    _res = NULL;
30877
255k
  done:
30878
255k
    p->level--;
30879
255k
    return _res;
30880
102k
}
30881
30882
// _loop1_59: ('or' conjunction)
30883
static asdl_seq *
30884
_loop1_59_rule(Parser *p)
30885
907k
{
30886
907k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30887
0
        _Pypegen_stack_overflow(p);
30888
0
    }
30889
907k
    if (p->error_indicator) {
30890
0
        p->level--;
30891
0
        return NULL;
30892
0
    }
30893
907k
    void *_res = NULL;
30894
907k
    int _mark = p->mark;
30895
907k
    void **_children = PyMem_Malloc(sizeof(void *));
30896
907k
    if (!_children) {
30897
0
        p->error_indicator = 1;
30898
0
        PyErr_NoMemory();
30899
0
        p->level--;
30900
0
        return NULL;
30901
0
    }
30902
907k
    Py_ssize_t _children_capacity = 1;
30903
907k
    Py_ssize_t _n = 0;
30904
907k
    { // ('or' conjunction)
30905
907k
        if (p->error_indicator) {
30906
0
            p->level--;
30907
0
            return NULL;
30908
0
        }
30909
907k
        D(fprintf(stderr, "%*c> _loop1_59[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('or' conjunction)"));
30910
907k
        void *_tmp_158_var;
30911
907k
        while (
30912
914k
            (_tmp_158_var = _tmp_158_rule(p))  // 'or' conjunction
30913
907k
        )
30914
6.68k
        {
30915
6.68k
            _res = _tmp_158_var;
30916
6.68k
            if (_n == _children_capacity) {
30917
1.46k
                _children_capacity *= 2;
30918
1.46k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30919
1.46k
                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
1.46k
                _children = _new_children;
30927
1.46k
            }
30928
6.68k
            _children[_n++] = _res;
30929
6.68k
            _mark = p->mark;
30930
6.68k
        }
30931
907k
        p->mark = _mark;
30932
907k
        D(fprintf(stderr, "%*c%s _loop1_59[%d-%d]: %s failed!\n", p->level, ' ',
30933
907k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('or' conjunction)"));
30934
907k
    }
30935
907k
    if (_n == 0 || p->error_indicator) {
30936
904k
        PyMem_Free(_children);
30937
904k
        p->level--;
30938
904k
        return NULL;
30939
904k
    }
30940
2.88k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30941
2.88k
    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
9.04k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30949
2.88k
    PyMem_Free(_children);
30950
2.88k
    p->level--;
30951
2.88k
    return _seq;
30952
2.88k
}
30953
30954
// _loop1_60: ('and' inversion)
30955
static asdl_seq *
30956
_loop1_60_rule(Parser *p)
30957
914k
{
30958
914k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30959
0
        _Pypegen_stack_overflow(p);
30960
0
    }
30961
914k
    if (p->error_indicator) {
30962
0
        p->level--;
30963
0
        return NULL;
30964
0
    }
30965
914k
    void *_res = NULL;
30966
914k
    int _mark = p->mark;
30967
914k
    void **_children = PyMem_Malloc(sizeof(void *));
30968
914k
    if (!_children) {
30969
0
        p->error_indicator = 1;
30970
0
        PyErr_NoMemory();
30971
0
        p->level--;
30972
0
        return NULL;
30973
0
    }
30974
914k
    Py_ssize_t _children_capacity = 1;
30975
914k
    Py_ssize_t _n = 0;
30976
914k
    { // ('and' inversion)
30977
914k
        if (p->error_indicator) {
30978
0
            p->level--;
30979
0
            return NULL;
30980
0
        }
30981
914k
        D(fprintf(stderr, "%*c> _loop1_60[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('and' inversion)"));
30982
914k
        void *_tmp_159_var;
30983
914k
        while (
30984
919k
            (_tmp_159_var = _tmp_159_rule(p))  // 'and' inversion
30985
914k
        )
30986
5.86k
        {
30987
5.86k
            _res = _tmp_159_var;
30988
5.86k
            if (_n == _children_capacity) {
30989
1.30k
                _children_capacity *= 2;
30990
1.30k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30991
1.30k
                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
1.30k
                _children = _new_children;
30999
1.30k
            }
31000
5.86k
            _children[_n++] = _res;
31001
5.86k
            _mark = p->mark;
31002
5.86k
        }
31003
914k
        p->mark = _mark;
31004
914k
        D(fprintf(stderr, "%*c%s _loop1_60[%d-%d]: %s failed!\n", p->level, ' ',
31005
914k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('and' inversion)"));
31006
914k
    }
31007
914k
    if (_n == 0 || p->error_indicator) {
31008
912k
        PyMem_Free(_children);
31009
912k
        p->level--;
31010
912k
        return NULL;
31011
912k
    }
31012
1.63k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31013
1.63k
    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
7.34k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31021
1.63k
    PyMem_Free(_children);
31022
1.63k
    p->level--;
31023
1.63k
    return _seq;
31024
1.63k
}
31025
31026
// _loop1_61: compare_op_bitwise_or_pair
31027
static asdl_seq *
31028
_loop1_61_rule(Parser *p)
31029
922k
{
31030
922k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31031
0
        _Pypegen_stack_overflow(p);
31032
0
    }
31033
922k
    if (p->error_indicator) {
31034
0
        p->level--;
31035
0
        return NULL;
31036
0
    }
31037
922k
    void *_res = NULL;
31038
922k
    int _mark = p->mark;
31039
922k
    void **_children = PyMem_Malloc(sizeof(void *));
31040
922k
    if (!_children) {
31041
0
        p->error_indicator = 1;
31042
0
        PyErr_NoMemory();
31043
0
        p->level--;
31044
0
        return NULL;
31045
0
    }
31046
922k
    Py_ssize_t _children_capacity = 1;
31047
922k
    Py_ssize_t _n = 0;
31048
922k
    { // compare_op_bitwise_or_pair
31049
922k
        if (p->error_indicator) {
31050
0
            p->level--;
31051
0
            return NULL;
31052
0
        }
31053
922k
        D(fprintf(stderr, "%*c> _loop1_61[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compare_op_bitwise_or_pair"));
31054
922k
        CmpopExprPair* compare_op_bitwise_or_pair_var;
31055
922k
        while (
31056
1.01M
            (compare_op_bitwise_or_pair_var = compare_op_bitwise_or_pair_rule(p))  // compare_op_bitwise_or_pair
31057
922k
        )
31058
92.6k
        {
31059
92.6k
            _res = compare_op_bitwise_or_pair_var;
31060
92.6k
            if (_n == _children_capacity) {
31061
28.7k
                _children_capacity *= 2;
31062
28.7k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31063
28.7k
                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
28.7k
                _children = _new_children;
31071
28.7k
            }
31072
92.6k
            _children[_n++] = _res;
31073
92.6k
            _mark = p->mark;
31074
92.6k
        }
31075
922k
        p->mark = _mark;
31076
922k
        D(fprintf(stderr, "%*c%s _loop1_61[%d-%d]: %s failed!\n", p->level, ' ',
31077
922k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compare_op_bitwise_or_pair"));
31078
922k
    }
31079
922k
    if (_n == 0 || p->error_indicator) {
31080
888k
        PyMem_Free(_children);
31081
888k
        p->level--;
31082
888k
        return NULL;
31083
888k
    }
31084
33.7k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31085
33.7k
    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
125k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31093
33.7k
    PyMem_Free(_children);
31094
33.7k
    p->level--;
31095
33.7k
    return _seq;
31096
33.7k
}
31097
31098
// _tmp_62: '!='
31099
static void *
31100
_tmp_62_rule(Parser *p)
31101
1.01M
{
31102
1.01M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31103
0
        _Pypegen_stack_overflow(p);
31104
0
    }
31105
1.01M
    if (p->error_indicator) {
31106
0
        p->level--;
31107
0
        return NULL;
31108
0
    }
31109
1.01M
    void * _res = NULL;
31110
1.01M
    int _mark = p->mark;
31111
1.01M
    { // '!='
31112
1.01M
        if (p->error_indicator) {
31113
0
            p->level--;
31114
0
            return NULL;
31115
0
        }
31116
1.01M
        D(fprintf(stderr, "%*c> _tmp_62[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!='"));
31117
1.01M
        Token * tok;
31118
1.01M
        if (
31119
1.01M
            (tok = _PyPegen_expect_token(p, 28))  // token='!='
31120
1.01M
        )
31121
1.58k
        {
31122
1.58k
            D(fprintf(stderr, "%*c+ _tmp_62[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!='"));
31123
1.58k
            _res = _PyPegen_check_barry_as_flufl ( p , tok ) ? NULL : tok;
31124
1.58k
            if (_res == NULL && PyErr_Occurred()) {
31125
1
                p->error_indicator = 1;
31126
1
                p->level--;
31127
1
                return NULL;
31128
1
            }
31129
1.57k
            goto done;
31130
1.58k
        }
31131
1.00M
        p->mark = _mark;
31132
1.00M
        D(fprintf(stderr, "%*c%s _tmp_62[%d-%d]: %s failed!\n", p->level, ' ',
31133
1.00M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!='"));
31134
1.00M
    }
31135
0
    _res = NULL;
31136
1.01M
  done:
31137
1.01M
    p->level--;
31138
1.01M
    return _res;
31139
1.00M
}
31140
31141
// _loop0_63: ',' (slice | starred_expression)
31142
static asdl_seq *
31143
_loop0_63_rule(Parser *p)
31144
12.5k
{
31145
12.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31146
0
        _Pypegen_stack_overflow(p);
31147
0
    }
31148
12.5k
    if (p->error_indicator) {
31149
0
        p->level--;
31150
0
        return NULL;
31151
0
    }
31152
12.5k
    void *_res = NULL;
31153
12.5k
    int _mark = p->mark;
31154
12.5k
    void **_children = PyMem_Malloc(sizeof(void *));
31155
12.5k
    if (!_children) {
31156
0
        p->error_indicator = 1;
31157
0
        PyErr_NoMemory();
31158
0
        p->level--;
31159
0
        return NULL;
31160
0
    }
31161
12.5k
    Py_ssize_t _children_capacity = 1;
31162
12.5k
    Py_ssize_t _n = 0;
31163
12.5k
    { // ',' (slice | starred_expression)
31164
12.5k
        if (p->error_indicator) {
31165
0
            p->level--;
31166
0
            return NULL;
31167
0
        }
31168
12.5k
        D(fprintf(stderr, "%*c> _loop0_63[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (slice | starred_expression)"));
31169
12.5k
        Token * _literal;
31170
12.5k
        void *elem;
31171
12.5k
        while (
31172
58.5k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
31173
58.5k
            &&
31174
58.5k
            (elem = _tmp_160_rule(p))  // slice | starred_expression
31175
12.5k
        )
31176
46.0k
        {
31177
46.0k
            _res = elem;
31178
46.0k
            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
46.0k
            if (_n == _children_capacity) {
31185
5.80k
                _children_capacity *= 2;
31186
5.80k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31187
5.80k
                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
5.80k
                _children = _new_children;
31195
5.80k
            }
31196
46.0k
            _children[_n++] = _res;
31197
46.0k
            _mark = p->mark;
31198
46.0k
        }
31199
12.5k
        p->mark = _mark;
31200
12.5k
        D(fprintf(stderr, "%*c%s _loop0_63[%d-%d]: %s failed!\n", p->level, ' ',
31201
12.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (slice | starred_expression)"));
31202
12.5k
    }
31203
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31204
12.5k
    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
58.5k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31212
12.5k
    PyMem_Free(_children);
31213
12.5k
    p->level--;
31214
12.5k
    return _seq;
31215
12.5k
}
31216
31217
// _gather_64: (slice | starred_expression) _loop0_63
31218
static asdl_seq *
31219
_gather_64_rule(Parser *p)
31220
14.2k
{
31221
14.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31222
0
        _Pypegen_stack_overflow(p);
31223
0
    }
31224
14.2k
    if (p->error_indicator) {
31225
0
        p->level--;
31226
0
        return NULL;
31227
0
    }
31228
14.2k
    asdl_seq * _res = NULL;
31229
14.2k
    int _mark = p->mark;
31230
14.2k
    { // (slice | starred_expression) _loop0_63
31231
14.2k
        if (p->error_indicator) {
31232
0
            p->level--;
31233
0
            return NULL;
31234
0
        }
31235
14.2k
        D(fprintf(stderr, "%*c> _gather_64[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(slice | starred_expression) _loop0_63"));
31236
14.2k
        void *elem;
31237
14.2k
        asdl_seq * seq;
31238
14.2k
        if (
31239
14.2k
            (elem = _tmp_160_rule(p))  // slice | starred_expression
31240
14.2k
            &&
31241
14.2k
            (seq = _loop0_63_rule(p))  // _loop0_63
31242
14.2k
        )
31243
12.5k
        {
31244
12.5k
            D(fprintf(stderr, "%*c+ _gather_64[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(slice | starred_expression) _loop0_63"));
31245
12.5k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
31246
12.5k
            goto done;
31247
12.5k
        }
31248
1.69k
        p->mark = _mark;
31249
1.69k
        D(fprintf(stderr, "%*c%s _gather_64[%d-%d]: %s failed!\n", p->level, ' ',
31250
1.69k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(slice | starred_expression) _loop0_63"));
31251
1.69k
    }
31252
0
    _res = NULL;
31253
14.2k
  done:
31254
14.2k
    p->level--;
31255
14.2k
    return _res;
31256
1.69k
}
31257
31258
// _tmp_65: ':' expression?
31259
static void *
31260
_tmp_65_rule(Parser *p)
31261
46.8k
{
31262
46.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31263
0
        _Pypegen_stack_overflow(p);
31264
0
    }
31265
46.8k
    if (p->error_indicator) {
31266
0
        p->level--;
31267
0
        return NULL;
31268
0
    }
31269
46.8k
    void * _res = NULL;
31270
46.8k
    int _mark = p->mark;
31271
46.8k
    { // ':' expression?
31272
46.8k
        if (p->error_indicator) {
31273
0
            p->level--;
31274
0
            return NULL;
31275
0
        }
31276
46.8k
        D(fprintf(stderr, "%*c> _tmp_65[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression?"));
31277
46.8k
        Token * _literal;
31278
46.8k
        void *d;
31279
46.8k
        if (
31280
46.8k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
31281
46.8k
            &&
31282
46.8k
            (d = expression_rule(p), !p->error_indicator)  // expression?
31283
46.8k
        )
31284
16.6k
        {
31285
16.6k
            D(fprintf(stderr, "%*c+ _tmp_65[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression?"));
31286
16.6k
            _res = d;
31287
16.6k
            if (_res == NULL && PyErr_Occurred()) {
31288
0
                p->error_indicator = 1;
31289
0
                p->level--;
31290
0
                return NULL;
31291
0
            }
31292
16.6k
            goto done;
31293
16.6k
        }
31294
30.2k
        p->mark = _mark;
31295
30.2k
        D(fprintf(stderr, "%*c%s _tmp_65[%d-%d]: %s failed!\n", p->level, ' ',
31296
30.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression?"));
31297
30.2k
    }
31298
0
    _res = NULL;
31299
46.8k
  done:
31300
46.8k
    p->level--;
31301
46.8k
    return _res;
31302
30.2k
}
31303
31304
// _tmp_66: tuple | group | genexp
31305
static void *
31306
_tmp_66_rule(Parser *p)
31307
228k
{
31308
228k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31309
0
        _Pypegen_stack_overflow(p);
31310
0
    }
31311
228k
    if (p->error_indicator) {
31312
0
        p->level--;
31313
0
        return NULL;
31314
0
    }
31315
228k
    void * _res = NULL;
31316
228k
    int _mark = p->mark;
31317
228k
    { // tuple
31318
228k
        if (p->error_indicator) {
31319
0
            p->level--;
31320
0
            return NULL;
31321
0
        }
31322
228k
        D(fprintf(stderr, "%*c> _tmp_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
31323
228k
        expr_ty tuple_var;
31324
228k
        if (
31325
228k
            (tuple_var = tuple_rule(p))  // tuple
31326
228k
        )
31327
175k
        {
31328
175k
            D(fprintf(stderr, "%*c+ _tmp_66[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
31329
175k
            _res = tuple_var;
31330
175k
            goto done;
31331
175k
        }
31332
52.8k
        p->mark = _mark;
31333
52.8k
        D(fprintf(stderr, "%*c%s _tmp_66[%d-%d]: %s failed!\n", p->level, ' ',
31334
52.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
31335
52.8k
    }
31336
0
    { // group
31337
52.8k
        if (p->error_indicator) {
31338
5.43k
            p->level--;
31339
5.43k
            return NULL;
31340
5.43k
        }
31341
47.4k
        D(fprintf(stderr, "%*c> _tmp_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "group"));
31342
47.4k
        expr_ty group_var;
31343
47.4k
        if (
31344
47.4k
            (group_var = group_rule(p))  // group
31345
47.4k
        )
31346
16.2k
        {
31347
16.2k
            D(fprintf(stderr, "%*c+ _tmp_66[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "group"));
31348
16.2k
            _res = group_var;
31349
16.2k
            goto done;
31350
16.2k
        }
31351
31.2k
        p->mark = _mark;
31352
31.2k
        D(fprintf(stderr, "%*c%s _tmp_66[%d-%d]: %s failed!\n", p->level, ' ',
31353
31.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "group"));
31354
31.2k
    }
31355
0
    { // genexp
31356
31.2k
        if (p->error_indicator) {
31357
604
            p->level--;
31358
604
            return NULL;
31359
604
        }
31360
30.6k
        D(fprintf(stderr, "%*c> _tmp_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp"));
31361
30.6k
        expr_ty genexp_var;
31362
30.6k
        if (
31363
30.6k
            (genexp_var = genexp_rule(p))  // genexp
31364
30.6k
        )
31365
4.84k
        {
31366
4.84k
            D(fprintf(stderr, "%*c+ _tmp_66[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp"));
31367
4.84k
            _res = genexp_var;
31368
4.84k
            goto done;
31369
4.84k
        }
31370
25.7k
        p->mark = _mark;
31371
25.7k
        D(fprintf(stderr, "%*c%s _tmp_66[%d-%d]: %s failed!\n", p->level, ' ',
31372
25.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "genexp"));
31373
25.7k
    }
31374
0
    _res = NULL;
31375
222k
  done:
31376
222k
    p->level--;
31377
222k
    return _res;
31378
25.7k
}
31379
31380
// _tmp_67: list | listcomp
31381
static void *
31382
_tmp_67_rule(Parser *p)
31383
62.6k
{
31384
62.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31385
0
        _Pypegen_stack_overflow(p);
31386
0
    }
31387
62.6k
    if (p->error_indicator) {
31388
0
        p->level--;
31389
0
        return NULL;
31390
0
    }
31391
62.6k
    void * _res = NULL;
31392
62.6k
    int _mark = p->mark;
31393
62.6k
    { // list
31394
62.6k
        if (p->error_indicator) {
31395
0
            p->level--;
31396
0
            return NULL;
31397
0
        }
31398
62.6k
        D(fprintf(stderr, "%*c> _tmp_67[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
31399
62.6k
        expr_ty list_var;
31400
62.6k
        if (
31401
62.6k
            (list_var = list_rule(p))  // list
31402
62.6k
        )
31403
20.7k
        {
31404
20.7k
            D(fprintf(stderr, "%*c+ _tmp_67[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
31405
20.7k
            _res = list_var;
31406
20.7k
            goto done;
31407
20.7k
        }
31408
41.8k
        p->mark = _mark;
31409
41.8k
        D(fprintf(stderr, "%*c%s _tmp_67[%d-%d]: %s failed!\n", p->level, ' ',
31410
41.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
31411
41.8k
    }
31412
0
    { // listcomp
31413
41.8k
        if (p->error_indicator) {
31414
10.6k
            p->level--;
31415
10.6k
            return NULL;
31416
10.6k
        }
31417
31.1k
        D(fprintf(stderr, "%*c> _tmp_67[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "listcomp"));
31418
31.1k
        expr_ty listcomp_var;
31419
31.1k
        if (
31420
31.1k
            (listcomp_var = listcomp_rule(p))  // listcomp
31421
31.1k
        )
31422
5.97k
        {
31423
5.97k
            D(fprintf(stderr, "%*c+ _tmp_67[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "listcomp"));
31424
5.97k
            _res = listcomp_var;
31425
5.97k
            goto done;
31426
5.97k
        }
31427
25.1k
        p->mark = _mark;
31428
25.1k
        D(fprintf(stderr, "%*c%s _tmp_67[%d-%d]: %s failed!\n", p->level, ' ',
31429
25.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "listcomp"));
31430
25.1k
    }
31431
0
    _res = NULL;
31432
51.9k
  done:
31433
51.9k
    p->level--;
31434
51.9k
    return _res;
31435
25.1k
}
31436
31437
// _tmp_68: dict | set | dictcomp | setcomp
31438
static void *
31439
_tmp_68_rule(Parser *p)
31440
47.2k
{
31441
47.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31442
0
        _Pypegen_stack_overflow(p);
31443
0
    }
31444
47.2k
    if (p->error_indicator) {
31445
0
        p->level--;
31446
0
        return NULL;
31447
0
    }
31448
47.2k
    void * _res = NULL;
31449
47.2k
    int _mark = p->mark;
31450
47.2k
    { // dict
31451
47.2k
        if (p->error_indicator) {
31452
0
            p->level--;
31453
0
            return NULL;
31454
0
        }
31455
47.2k
        D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dict"));
31456
47.2k
        expr_ty dict_var;
31457
47.2k
        if (
31458
47.2k
            (dict_var = dict_rule(p))  // dict
31459
47.2k
        )
31460
3.92k
        {
31461
3.92k
            D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dict"));
31462
3.92k
            _res = dict_var;
31463
3.92k
            goto done;
31464
3.92k
        }
31465
43.3k
        p->mark = _mark;
31466
43.3k
        D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
31467
43.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dict"));
31468
43.3k
    }
31469
0
    { // set
31470
43.3k
        if (p->error_indicator) {
31471
9.30k
            p->level--;
31472
9.30k
            return NULL;
31473
9.30k
        }
31474
34.0k
        D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "set"));
31475
34.0k
        expr_ty set_var;
31476
34.0k
        if (
31477
34.0k
            (set_var = set_rule(p))  // set
31478
34.0k
        )
31479
18.6k
        {
31480
18.6k
            D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "set"));
31481
18.6k
            _res = set_var;
31482
18.6k
            goto done;
31483
18.6k
        }
31484
15.4k
        p->mark = _mark;
31485
15.4k
        D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
31486
15.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "set"));
31487
15.4k
    }
31488
0
    { // dictcomp
31489
15.4k
        if (p->error_indicator) {
31490
461
            p->level--;
31491
461
            return NULL;
31492
461
        }
31493
14.9k
        D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dictcomp"));
31494
14.9k
        expr_ty dictcomp_var;
31495
14.9k
        if (
31496
14.9k
            (dictcomp_var = dictcomp_rule(p))  // dictcomp
31497
14.9k
        )
31498
1.29k
        {
31499
1.29k
            D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dictcomp"));
31500
1.29k
            _res = dictcomp_var;
31501
1.29k
            goto done;
31502
1.29k
        }
31503
13.6k
        p->mark = _mark;
31504
13.6k
        D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
31505
13.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dictcomp"));
31506
13.6k
    }
31507
0
    { // setcomp
31508
13.6k
        if (p->error_indicator) {
31509
256
            p->level--;
31510
256
            return NULL;
31511
256
        }
31512
13.4k
        D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "setcomp"));
31513
13.4k
        expr_ty setcomp_var;
31514
13.4k
        if (
31515
13.4k
            (setcomp_var = setcomp_rule(p))  // setcomp
31516
13.4k
        )
31517
4.30k
        {
31518
4.30k
            D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "setcomp"));
31519
4.30k
            _res = setcomp_var;
31520
4.30k
            goto done;
31521
4.30k
        }
31522
9.10k
        p->mark = _mark;
31523
9.10k
        D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
31524
9.10k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "setcomp"));
31525
9.10k
    }
31526
0
    _res = NULL;
31527
37.2k
  done:
31528
37.2k
    p->level--;
31529
37.2k
    return _res;
31530
9.10k
}
31531
31532
// _tmp_69: yield_expr | named_expression
31533
static void *
31534
_tmp_69_rule(Parser *p)
31535
47.4k
{
31536
47.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31537
0
        _Pypegen_stack_overflow(p);
31538
0
    }
31539
47.4k
    if (p->error_indicator) {
31540
0
        p->level--;
31541
0
        return NULL;
31542
0
    }
31543
47.4k
    void * _res = NULL;
31544
47.4k
    int _mark = p->mark;
31545
47.4k
    { // yield_expr
31546
47.4k
        if (p->error_indicator) {
31547
0
            p->level--;
31548
0
            return NULL;
31549
0
        }
31550
47.4k
        D(fprintf(stderr, "%*c> _tmp_69[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
31551
47.4k
        expr_ty yield_expr_var;
31552
47.4k
        if (
31553
47.4k
            (yield_expr_var = yield_expr_rule(p))  // yield_expr
31554
47.4k
        )
31555
523
        {
31556
523
            D(fprintf(stderr, "%*c+ _tmp_69[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
31557
523
            _res = yield_expr_var;
31558
523
            goto done;
31559
523
        }
31560
46.9k
        p->mark = _mark;
31561
46.9k
        D(fprintf(stderr, "%*c%s _tmp_69[%d-%d]: %s failed!\n", p->level, ' ',
31562
46.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
31563
46.9k
    }
31564
0
    { // named_expression
31565
46.9k
        if (p->error_indicator) {
31566
266
            p->level--;
31567
266
            return NULL;
31568
266
        }
31569
46.6k
        D(fprintf(stderr, "%*c> _tmp_69[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
31570
46.6k
        expr_ty named_expression_var;
31571
46.6k
        if (
31572
46.6k
            (named_expression_var = named_expression_rule(p))  // named_expression
31573
46.6k
        )
31574
30.7k
        {
31575
30.7k
            D(fprintf(stderr, "%*c+ _tmp_69[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
31576
30.7k
            _res = named_expression_var;
31577
30.7k
            goto done;
31578
30.7k
        }
31579
15.8k
        p->mark = _mark;
31580
15.8k
        D(fprintf(stderr, "%*c%s _tmp_69[%d-%d]: %s failed!\n", p->level, ' ',
31581
15.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
31582
15.8k
    }
31583
0
    _res = NULL;
31584
47.1k
  done:
31585
47.1k
    p->level--;
31586
47.1k
    return _res;
31587
15.8k
}
31588
31589
// _loop0_70: lambda_param_no_default
31590
static asdl_seq *
31591
_loop0_70_rule(Parser *p)
31592
145k
{
31593
145k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31594
0
        _Pypegen_stack_overflow(p);
31595
0
    }
31596
145k
    if (p->error_indicator) {
31597
0
        p->level--;
31598
0
        return NULL;
31599
0
    }
31600
145k
    void *_res = NULL;
31601
145k
    int _mark = p->mark;
31602
145k
    void **_children = PyMem_Malloc(sizeof(void *));
31603
145k
    if (!_children) {
31604
0
        p->error_indicator = 1;
31605
0
        PyErr_NoMemory();
31606
0
        p->level--;
31607
0
        return NULL;
31608
0
    }
31609
145k
    Py_ssize_t _children_capacity = 1;
31610
145k
    Py_ssize_t _n = 0;
31611
145k
    { // lambda_param_no_default
31612
145k
        if (p->error_indicator) {
31613
0
            p->level--;
31614
0
            return NULL;
31615
0
        }
31616
145k
        D(fprintf(stderr, "%*c> _loop0_70[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
31617
145k
        arg_ty lambda_param_no_default_var;
31618
145k
        while (
31619
189k
            (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
31620
145k
        )
31621
43.6k
        {
31622
43.6k
            _res = lambda_param_no_default_var;
31623
43.6k
            if (_n == _children_capacity) {
31624
2.40k
                _children_capacity *= 2;
31625
2.40k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31626
2.40k
                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
2.40k
                _children = _new_children;
31634
2.40k
            }
31635
43.6k
            _children[_n++] = _res;
31636
43.6k
            _mark = p->mark;
31637
43.6k
        }
31638
145k
        p->mark = _mark;
31639
145k
        D(fprintf(stderr, "%*c%s _loop0_70[%d-%d]: %s failed!\n", p->level, ' ',
31640
145k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
31641
145k
    }
31642
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31643
145k
    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
189k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31651
145k
    PyMem_Free(_children);
31652
145k
    p->level--;
31653
145k
    return _seq;
31654
145k
}
31655
31656
// _loop0_71: lambda_param_with_default
31657
static asdl_seq *
31658
_loop0_71_rule(Parser *p)
31659
10.6k
{
31660
10.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31661
0
        _Pypegen_stack_overflow(p);
31662
0
    }
31663
10.6k
    if (p->error_indicator) {
31664
2
        p->level--;
31665
2
        return NULL;
31666
2
    }
31667
10.6k
    void *_res = NULL;
31668
10.6k
    int _mark = p->mark;
31669
10.6k
    void **_children = PyMem_Malloc(sizeof(void *));
31670
10.6k
    if (!_children) {
31671
0
        p->error_indicator = 1;
31672
0
        PyErr_NoMemory();
31673
0
        p->level--;
31674
0
        return NULL;
31675
0
    }
31676
10.6k
    Py_ssize_t _children_capacity = 1;
31677
10.6k
    Py_ssize_t _n = 0;
31678
10.6k
    { // lambda_param_with_default
31679
10.6k
        if (p->error_indicator) {
31680
0
            p->level--;
31681
0
            return NULL;
31682
0
        }
31683
10.6k
        D(fprintf(stderr, "%*c> _loop0_71[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
31684
10.6k
        NameDefaultPair* lambda_param_with_default_var;
31685
10.6k
        while (
31686
12.2k
            (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
31687
10.6k
        )
31688
1.60k
        {
31689
1.60k
            _res = lambda_param_with_default_var;
31690
1.60k
            if (_n == _children_capacity) {
31691
582
                _children_capacity *= 2;
31692
582
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31693
582
                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
582
                _children = _new_children;
31701
582
            }
31702
1.60k
            _children[_n++] = _res;
31703
1.60k
            _mark = p->mark;
31704
1.60k
        }
31705
10.6k
        p->mark = _mark;
31706
10.6k
        D(fprintf(stderr, "%*c%s _loop0_71[%d-%d]: %s failed!\n", p->level, ' ',
31707
10.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
31708
10.6k
    }
31709
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31710
10.6k
    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
12.2k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31718
10.6k
    PyMem_Free(_children);
31719
10.6k
    p->level--;
31720
10.6k
    return _seq;
31721
10.6k
}
31722
31723
// _loop1_72: lambda_param_no_default
31724
static asdl_seq *
31725
_loop1_72_rule(Parser *p)
31726
151k
{
31727
151k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31728
0
        _Pypegen_stack_overflow(p);
31729
0
    }
31730
151k
    if (p->error_indicator) {
31731
0
        p->level--;
31732
0
        return NULL;
31733
0
    }
31734
151k
    void *_res = NULL;
31735
151k
    int _mark = p->mark;
31736
151k
    void **_children = PyMem_Malloc(sizeof(void *));
31737
151k
    if (!_children) {
31738
0
        p->error_indicator = 1;
31739
0
        PyErr_NoMemory();
31740
0
        p->level--;
31741
0
        return NULL;
31742
0
    }
31743
151k
    Py_ssize_t _children_capacity = 1;
31744
151k
    Py_ssize_t _n = 0;
31745
151k
    { // lambda_param_no_default
31746
151k
        if (p->error_indicator) {
31747
0
            p->level--;
31748
0
            return NULL;
31749
0
        }
31750
151k
        D(fprintf(stderr, "%*c> _loop1_72[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
31751
151k
        arg_ty lambda_param_no_default_var;
31752
151k
        while (
31753
207k
            (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
31754
151k
        )
31755
55.8k
        {
31756
55.8k
            _res = lambda_param_no_default_var;
31757
55.8k
            if (_n == _children_capacity) {
31758
3.06k
                _children_capacity *= 2;
31759
3.06k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31760
3.06k
                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
3.06k
                _children = _new_children;
31768
3.06k
            }
31769
55.8k
            _children[_n++] = _res;
31770
55.8k
            _mark = p->mark;
31771
55.8k
        }
31772
151k
        p->mark = _mark;
31773
151k
        D(fprintf(stderr, "%*c%s _loop1_72[%d-%d]: %s failed!\n", p->level, ' ',
31774
151k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
31775
151k
    }
31776
151k
    if (_n == 0 || p->error_indicator) {
31777
100k
        PyMem_Free(_children);
31778
100k
        p->level--;
31779
100k
        return NULL;
31780
100k
    }
31781
51.0k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31782
51.0k
    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
106k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31790
51.0k
    PyMem_Free(_children);
31791
51.0k
    p->level--;
31792
51.0k
    return _seq;
31793
51.0k
}
31794
31795
// _loop1_73: lambda_param_with_default
31796
static asdl_seq *
31797
_loop1_73_rule(Parser *p)
31798
149k
{
31799
149k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31800
0
        _Pypegen_stack_overflow(p);
31801
0
    }
31802
149k
    if (p->error_indicator) {
31803
0
        p->level--;
31804
0
        return NULL;
31805
0
    }
31806
149k
    void *_res = NULL;
31807
149k
    int _mark = p->mark;
31808
149k
    void **_children = PyMem_Malloc(sizeof(void *));
31809
149k
    if (!_children) {
31810
0
        p->error_indicator = 1;
31811
0
        PyErr_NoMemory();
31812
0
        p->level--;
31813
0
        return NULL;
31814
0
    }
31815
149k
    Py_ssize_t _children_capacity = 1;
31816
149k
    Py_ssize_t _n = 0;
31817
149k
    { // lambda_param_with_default
31818
149k
        if (p->error_indicator) {
31819
0
            p->level--;
31820
0
            return NULL;
31821
0
        }
31822
149k
        D(fprintf(stderr, "%*c> _loop1_73[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
31823
149k
        NameDefaultPair* lambda_param_with_default_var;
31824
149k
        while (
31825
191k
            (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
31826
149k
        )
31827
42.3k
        {
31828
42.3k
            _res = lambda_param_with_default_var;
31829
42.3k
            if (_n == _children_capacity) {
31830
8.93k
                _children_capacity *= 2;
31831
8.93k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31832
8.93k
                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
8.93k
                _children = _new_children;
31840
8.93k
            }
31841
42.3k
            _children[_n++] = _res;
31842
42.3k
            _mark = p->mark;
31843
42.3k
        }
31844
149k
        p->mark = _mark;
31845
149k
        D(fprintf(stderr, "%*c%s _loop1_73[%d-%d]: %s failed!\n", p->level, ' ',
31846
149k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
31847
149k
    }
31848
149k
    if (_n == 0 || p->error_indicator) {
31849
117k
        PyMem_Free(_children);
31850
117k
        p->level--;
31851
117k
        return NULL;
31852
117k
    }
31853
32.5k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31854
32.5k
    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
74.3k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31862
32.5k
    PyMem_Free(_children);
31863
32.5k
    p->level--;
31864
32.5k
    return _seq;
31865
32.5k
}
31866
31867
// _loop0_74: lambda_param_maybe_default
31868
static asdl_seq *
31869
_loop0_74_rule(Parser *p)
31870
28.1k
{
31871
28.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31872
0
        _Pypegen_stack_overflow(p);
31873
0
    }
31874
28.1k
    if (p->error_indicator) {
31875
0
        p->level--;
31876
0
        return NULL;
31877
0
    }
31878
28.1k
    void *_res = NULL;
31879
28.1k
    int _mark = p->mark;
31880
28.1k
    void **_children = PyMem_Malloc(sizeof(void *));
31881
28.1k
    if (!_children) {
31882
0
        p->error_indicator = 1;
31883
0
        PyErr_NoMemory();
31884
0
        p->level--;
31885
0
        return NULL;
31886
0
    }
31887
28.1k
    Py_ssize_t _children_capacity = 1;
31888
28.1k
    Py_ssize_t _n = 0;
31889
28.1k
    { // lambda_param_maybe_default
31890
28.1k
        if (p->error_indicator) {
31891
0
            p->level--;
31892
0
            return NULL;
31893
0
        }
31894
28.1k
        D(fprintf(stderr, "%*c> _loop0_74[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
31895
28.1k
        NameDefaultPair* lambda_param_maybe_default_var;
31896
28.1k
        while (
31897
44.5k
            (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p))  // lambda_param_maybe_default
31898
28.1k
        )
31899
16.3k
        {
31900
16.3k
            _res = lambda_param_maybe_default_var;
31901
16.3k
            if (_n == _children_capacity) {
31902
4.38k
                _children_capacity *= 2;
31903
4.38k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31904
4.38k
                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
4.38k
                _children = _new_children;
31912
4.38k
            }
31913
16.3k
            _children[_n++] = _res;
31914
16.3k
            _mark = p->mark;
31915
16.3k
        }
31916
28.1k
        p->mark = _mark;
31917
28.1k
        D(fprintf(stderr, "%*c%s _loop0_74[%d-%d]: %s failed!\n", p->level, ' ',
31918
28.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
31919
28.1k
    }
31920
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31921
28.1k
    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
44.5k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31929
28.1k
    PyMem_Free(_children);
31930
28.1k
    p->level--;
31931
28.1k
    return _seq;
31932
28.1k
}
31933
31934
// _loop1_75: lambda_param_maybe_default
31935
static asdl_seq *
31936
_loop1_75_rule(Parser *p)
31937
14.0k
{
31938
14.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31939
0
        _Pypegen_stack_overflow(p);
31940
0
    }
31941
14.0k
    if (p->error_indicator) {
31942
0
        p->level--;
31943
0
        return NULL;
31944
0
    }
31945
14.0k
    void *_res = NULL;
31946
14.0k
    int _mark = p->mark;
31947
14.0k
    void **_children = PyMem_Malloc(sizeof(void *));
31948
14.0k
    if (!_children) {
31949
0
        p->error_indicator = 1;
31950
0
        PyErr_NoMemory();
31951
0
        p->level--;
31952
0
        return NULL;
31953
0
    }
31954
14.0k
    Py_ssize_t _children_capacity = 1;
31955
14.0k
    Py_ssize_t _n = 0;
31956
14.0k
    { // lambda_param_maybe_default
31957
14.0k
        if (p->error_indicator) {
31958
0
            p->level--;
31959
0
            return NULL;
31960
0
        }
31961
14.0k
        D(fprintf(stderr, "%*c> _loop1_75[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
31962
14.0k
        NameDefaultPair* lambda_param_maybe_default_var;
31963
14.0k
        while (
31964
26.3k
            (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p))  // lambda_param_maybe_default
31965
14.0k
        )
31966
12.3k
        {
31967
12.3k
            _res = lambda_param_maybe_default_var;
31968
12.3k
            if (_n == _children_capacity) {
31969
3.64k
                _children_capacity *= 2;
31970
3.64k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31971
3.64k
                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
3.64k
                _children = _new_children;
31979
3.64k
            }
31980
12.3k
            _children[_n++] = _res;
31981
12.3k
            _mark = p->mark;
31982
12.3k
        }
31983
14.0k
        p->mark = _mark;
31984
14.0k
        D(fprintf(stderr, "%*c%s _loop1_75[%d-%d]: %s failed!\n", p->level, ' ',
31985
14.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
31986
14.0k
    }
31987
14.0k
    if (_n == 0 || p->error_indicator) {
31988
5.82k
        PyMem_Free(_children);
31989
5.82k
        p->level--;
31990
5.82k
        return NULL;
31991
5.82k
    }
31992
8.18k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31993
8.18k
    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
20.2k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32001
8.18k
    PyMem_Free(_children);
32002
8.18k
    p->level--;
32003
8.18k
    return _seq;
32004
8.18k
}
32005
32006
// _loop0_76: fstring_format_spec
32007
static asdl_seq *
32008
_loop0_76_rule(Parser *p)
32009
9.27k
{
32010
9.27k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32011
0
        _Pypegen_stack_overflow(p);
32012
0
    }
32013
9.27k
    if (p->error_indicator) {
32014
0
        p->level--;
32015
0
        return NULL;
32016
0
    }
32017
9.27k
    void *_res = NULL;
32018
9.27k
    int _mark = p->mark;
32019
9.27k
    void **_children = PyMem_Malloc(sizeof(void *));
32020
9.27k
    if (!_children) {
32021
0
        p->error_indicator = 1;
32022
0
        PyErr_NoMemory();
32023
0
        p->level--;
32024
0
        return NULL;
32025
0
    }
32026
9.27k
    Py_ssize_t _children_capacity = 1;
32027
9.27k
    Py_ssize_t _n = 0;
32028
9.27k
    { // fstring_format_spec
32029
9.27k
        if (p->error_indicator) {
32030
0
            p->level--;
32031
0
            return NULL;
32032
0
        }
32033
9.27k
        D(fprintf(stderr, "%*c> _loop0_76[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_format_spec"));
32034
9.27k
        expr_ty fstring_format_spec_var;
32035
9.27k
        while (
32036
30.4k
            (fstring_format_spec_var = fstring_format_spec_rule(p))  // fstring_format_spec
32037
9.27k
        )
32038
21.2k
        {
32039
21.2k
            _res = fstring_format_spec_var;
32040
21.2k
            if (_n == _children_capacity) {
32041
6.63k
                _children_capacity *= 2;
32042
6.63k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32043
6.63k
                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
6.63k
                _children = _new_children;
32051
6.63k
            }
32052
21.2k
            _children[_n++] = _res;
32053
21.2k
            _mark = p->mark;
32054
21.2k
        }
32055
9.27k
        p->mark = _mark;
32056
9.27k
        D(fprintf(stderr, "%*c%s _loop0_76[%d-%d]: %s failed!\n", p->level, ' ',
32057
9.27k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_format_spec"));
32058
9.27k
    }
32059
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32060
9.27k
    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
30.4k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32068
9.27k
    PyMem_Free(_children);
32069
9.27k
    p->level--;
32070
9.27k
    return _seq;
32071
9.27k
}
32072
32073
// _loop0_77: fstring_middle
32074
static asdl_seq *
32075
_loop0_77_rule(Parser *p)
32076
19.6k
{
32077
19.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32078
1
        _Pypegen_stack_overflow(p);
32079
1
    }
32080
19.6k
    if (p->error_indicator) {
32081
1
        p->level--;
32082
1
        return NULL;
32083
1
    }
32084
19.6k
    void *_res = NULL;
32085
19.6k
    int _mark = p->mark;
32086
19.6k
    void **_children = PyMem_Malloc(sizeof(void *));
32087
19.6k
    if (!_children) {
32088
0
        p->error_indicator = 1;
32089
0
        PyErr_NoMemory();
32090
0
        p->level--;
32091
0
        return NULL;
32092
0
    }
32093
19.6k
    Py_ssize_t _children_capacity = 1;
32094
19.6k
    Py_ssize_t _n = 0;
32095
19.6k
    { // fstring_middle
32096
19.6k
        if (p->error_indicator) {
32097
0
            p->level--;
32098
0
            return NULL;
32099
0
        }
32100
19.6k
        D(fprintf(stderr, "%*c> _loop0_77[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_middle"));
32101
19.6k
        expr_ty fstring_middle_var;
32102
19.6k
        while (
32103
70.3k
            (fstring_middle_var = fstring_middle_rule(p))  // fstring_middle
32104
19.6k
        )
32105
50.6k
        {
32106
50.6k
            _res = fstring_middle_var;
32107
50.6k
            if (_n == _children_capacity) {
32108
7.09k
                _children_capacity *= 2;
32109
7.09k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32110
7.09k
                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
7.09k
                _children = _new_children;
32118
7.09k
            }
32119
50.6k
            _children[_n++] = _res;
32120
50.6k
            _mark = p->mark;
32121
50.6k
        }
32122
19.6k
        p->mark = _mark;
32123
19.6k
        D(fprintf(stderr, "%*c%s _loop0_77[%d-%d]: %s failed!\n", p->level, ' ',
32124
19.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_middle"));
32125
19.6k
    }
32126
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32127
19.6k
    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
70.3k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32135
19.6k
    PyMem_Free(_children);
32136
19.6k
    p->level--;
32137
19.6k
    return _seq;
32138
19.6k
}
32139
32140
// _loop0_78: tstring_format_spec
32141
static asdl_seq *
32142
_loop0_78_rule(Parser *p)
32143
3.17k
{
32144
3.17k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32145
0
        _Pypegen_stack_overflow(p);
32146
0
    }
32147
3.17k
    if (p->error_indicator) {
32148
0
        p->level--;
32149
0
        return NULL;
32150
0
    }
32151
3.17k
    void *_res = NULL;
32152
3.17k
    int _mark = p->mark;
32153
3.17k
    void **_children = PyMem_Malloc(sizeof(void *));
32154
3.17k
    if (!_children) {
32155
0
        p->error_indicator = 1;
32156
0
        PyErr_NoMemory();
32157
0
        p->level--;
32158
0
        return NULL;
32159
0
    }
32160
3.17k
    Py_ssize_t _children_capacity = 1;
32161
3.17k
    Py_ssize_t _n = 0;
32162
3.17k
    { // tstring_format_spec
32163
3.17k
        if (p->error_indicator) {
32164
0
            p->level--;
32165
0
            return NULL;
32166
0
        }
32167
3.17k
        D(fprintf(stderr, "%*c> _loop0_78[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring_format_spec"));
32168
3.17k
        expr_ty tstring_format_spec_var;
32169
3.17k
        while (
32170
8.41k
            (tstring_format_spec_var = tstring_format_spec_rule(p))  // tstring_format_spec
32171
3.17k
        )
32172
5.24k
        {
32173
5.24k
            _res = tstring_format_spec_var;
32174
5.24k
            if (_n == _children_capacity) {
32175
528
                _children_capacity *= 2;
32176
528
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32177
528
                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
528
                _children = _new_children;
32185
528
            }
32186
5.24k
            _children[_n++] = _res;
32187
5.24k
            _mark = p->mark;
32188
5.24k
        }
32189
3.17k
        p->mark = _mark;
32190
3.17k
        D(fprintf(stderr, "%*c%s _loop0_78[%d-%d]: %s failed!\n", p->level, ' ',
32191
3.17k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring_format_spec"));
32192
3.17k
    }
32193
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32194
3.17k
    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
8.41k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32202
3.17k
    PyMem_Free(_children);
32203
3.17k
    p->level--;
32204
3.17k
    return _seq;
32205
3.17k
}
32206
32207
// _loop0_79: tstring_middle
32208
static asdl_seq *
32209
_loop0_79_rule(Parser *p)
32210
6.74k
{
32211
6.74k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32212
1
        _Pypegen_stack_overflow(p);
32213
1
    }
32214
6.74k
    if (p->error_indicator) {
32215
1
        p->level--;
32216
1
        return NULL;
32217
1
    }
32218
6.74k
    void *_res = NULL;
32219
6.74k
    int _mark = p->mark;
32220
6.74k
    void **_children = PyMem_Malloc(sizeof(void *));
32221
6.74k
    if (!_children) {
32222
0
        p->error_indicator = 1;
32223
0
        PyErr_NoMemory();
32224
0
        p->level--;
32225
0
        return NULL;
32226
0
    }
32227
6.74k
    Py_ssize_t _children_capacity = 1;
32228
6.74k
    Py_ssize_t _n = 0;
32229
6.74k
    { // tstring_middle
32230
6.74k
        if (p->error_indicator) {
32231
0
            p->level--;
32232
0
            return NULL;
32233
0
        }
32234
6.74k
        D(fprintf(stderr, "%*c> _loop0_79[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring_middle"));
32235
6.74k
        expr_ty tstring_middle_var;
32236
6.74k
        while (
32237
21.1k
            (tstring_middle_var = tstring_middle_rule(p))  // tstring_middle
32238
6.74k
        )
32239
14.4k
        {
32240
14.4k
            _res = tstring_middle_var;
32241
14.4k
            if (_n == _children_capacity) {
32242
2.44k
                _children_capacity *= 2;
32243
2.44k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32244
2.44k
                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
2.44k
                _children = _new_children;
32252
2.44k
            }
32253
14.4k
            _children[_n++] = _res;
32254
14.4k
            _mark = p->mark;
32255
14.4k
        }
32256
6.74k
        p->mark = _mark;
32257
6.74k
        D(fprintf(stderr, "%*c%s _loop0_79[%d-%d]: %s failed!\n", p->level, ' ',
32258
6.74k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring_middle"));
32259
6.74k
    }
32260
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32261
6.74k
    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
21.1k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32269
6.74k
    PyMem_Free(_children);
32270
6.74k
    p->level--;
32271
6.74k
    return _seq;
32272
6.74k
}
32273
32274
// _loop1_80: (fstring | string | tstring)
32275
static asdl_seq *
32276
_loop1_80_rule(Parser *p)
32277
126k
{
32278
126k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32279
1
        _Pypegen_stack_overflow(p);
32280
1
    }
32281
126k
    if (p->error_indicator) {
32282
1
        p->level--;
32283
1
        return NULL;
32284
1
    }
32285
126k
    void *_res = NULL;
32286
126k
    int _mark = p->mark;
32287
126k
    void **_children = PyMem_Malloc(sizeof(void *));
32288
126k
    if (!_children) {
32289
0
        p->error_indicator = 1;
32290
0
        PyErr_NoMemory();
32291
0
        p->level--;
32292
0
        return NULL;
32293
0
    }
32294
126k
    Py_ssize_t _children_capacity = 1;
32295
126k
    Py_ssize_t _n = 0;
32296
126k
    { // (fstring | string | tstring)
32297
126k
        if (p->error_indicator) {
32298
0
            p->level--;
32299
0
            return NULL;
32300
0
        }
32301
126k
        D(fprintf(stderr, "%*c> _loop1_80[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(fstring | string | tstring)"));
32302
126k
        void *_tmp_161_var;
32303
126k
        while (
32304
233k
            (_tmp_161_var = _tmp_161_rule(p))  // fstring | string | tstring
32305
126k
        )
32306
107k
        {
32307
107k
            _res = _tmp_161_var;
32308
107k
            if (_n == _children_capacity) {
32309
18.1k
                _children_capacity *= 2;
32310
18.1k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32311
18.1k
                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
18.1k
                _children = _new_children;
32319
18.1k
            }
32320
107k
            _children[_n++] = _res;
32321
107k
            _mark = p->mark;
32322
107k
        }
32323
126k
        p->mark = _mark;
32324
126k
        D(fprintf(stderr, "%*c%s _loop1_80[%d-%d]: %s failed!\n", p->level, ' ',
32325
126k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(fstring | string | tstring)"));
32326
126k
    }
32327
126k
    if (_n == 0 || p->error_indicator) {
32328
53.4k
        PyMem_Free(_children);
32329
53.4k
        p->level--;
32330
53.4k
        return NULL;
32331
53.4k
    }
32332
73.0k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32333
73.0k
    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
178k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32341
73.0k
    PyMem_Free(_children);
32342
73.0k
    p->level--;
32343
73.0k
    return _seq;
32344
73.0k
}
32345
32346
// _tmp_81: star_named_expression ',' star_named_expressions?
32347
static void *
32348
_tmp_81_rule(Parser *p)
32349
239k
{
32350
239k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32351
1
        _Pypegen_stack_overflow(p);
32352
1
    }
32353
239k
    if (p->error_indicator) {
32354
1
        p->level--;
32355
1
        return NULL;
32356
1
    }
32357
239k
    void * _res = NULL;
32358
239k
    int _mark = p->mark;
32359
239k
    { // star_named_expression ',' star_named_expressions?
32360
239k
        if (p->error_indicator) {
32361
0
            p->level--;
32362
0
            return NULL;
32363
0
        }
32364
239k
        D(fprintf(stderr, "%*c> _tmp_81[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
32365
239k
        Token * _literal;
32366
239k
        expr_ty y;
32367
239k
        void *z;
32368
239k
        if (
32369
239k
            (y = star_named_expression_rule(p))  // star_named_expression
32370
239k
            &&
32371
239k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
32372
239k
            &&
32373
239k
            (z = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
32374
239k
        )
32375
142k
        {
32376
142k
            D(fprintf(stderr, "%*c+ _tmp_81[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
32377
142k
            _res = _PyPegen_seq_insert_in_front ( p , y , z );
32378
142k
            if (_res == NULL && PyErr_Occurred()) {
32379
0
                p->error_indicator = 1;
32380
0
                p->level--;
32381
0
                return NULL;
32382
0
            }
32383
142k
            goto done;
32384
142k
        }
32385
97.6k
        p->mark = _mark;
32386
97.6k
        D(fprintf(stderr, "%*c%s _tmp_81[%d-%d]: %s failed!\n", p->level, ' ',
32387
97.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
32388
97.6k
    }
32389
0
    _res = NULL;
32390
239k
  done:
32391
239k
    p->level--;
32392
239k
    return _res;
32393
97.6k
}
32394
32395
// _loop0_82: ',' double_starred_kvpair
32396
static asdl_seq *
32397
_loop0_82_rule(Parser *p)
32398
6.62k
{
32399
6.62k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32400
0
        _Pypegen_stack_overflow(p);
32401
0
    }
32402
6.62k
    if (p->error_indicator) {
32403
0
        p->level--;
32404
0
        return NULL;
32405
0
    }
32406
6.62k
    void *_res = NULL;
32407
6.62k
    int _mark = p->mark;
32408
6.62k
    void **_children = PyMem_Malloc(sizeof(void *));
32409
6.62k
    if (!_children) {
32410
0
        p->error_indicator = 1;
32411
0
        PyErr_NoMemory();
32412
0
        p->level--;
32413
0
        return NULL;
32414
0
    }
32415
6.62k
    Py_ssize_t _children_capacity = 1;
32416
6.62k
    Py_ssize_t _n = 0;
32417
6.62k
    { // ',' double_starred_kvpair
32418
6.62k
        if (p->error_indicator) {
32419
0
            p->level--;
32420
0
            return NULL;
32421
0
        }
32422
6.62k
        D(fprintf(stderr, "%*c> _loop0_82[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair"));
32423
6.62k
        Token * _literal;
32424
6.62k
        KeyValuePair* elem;
32425
6.62k
        while (
32426
12.2k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
32427
12.2k
            &&
32428
12.2k
            (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
32429
6.62k
        )
32430
5.59k
        {
32431
5.59k
            _res = elem;
32432
5.59k
            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
5.59k
            if (_n == _children_capacity) {
32439
633
                _children_capacity *= 2;
32440
633
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32441
633
                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
633
                _children = _new_children;
32449
633
            }
32450
5.59k
            _children[_n++] = _res;
32451
5.59k
            _mark = p->mark;
32452
5.59k
        }
32453
6.62k
        p->mark = _mark;
32454
6.62k
        D(fprintf(stderr, "%*c%s _loop0_82[%d-%d]: %s failed!\n", p->level, ' ',
32455
6.62k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair"));
32456
6.62k
    }
32457
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32458
6.62k
    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
12.2k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32466
6.62k
    PyMem_Free(_children);
32467
6.62k
    p->level--;
32468
6.62k
    return _seq;
32469
6.62k
}
32470
32471
// _gather_83: double_starred_kvpair _loop0_82
32472
static asdl_seq *
32473
_gather_83_rule(Parser *p)
32474
81.5k
{
32475
81.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32476
1
        _Pypegen_stack_overflow(p);
32477
1
    }
32478
81.5k
    if (p->error_indicator) {
32479
1
        p->level--;
32480
1
        return NULL;
32481
1
    }
32482
81.5k
    asdl_seq * _res = NULL;
32483
81.5k
    int _mark = p->mark;
32484
81.5k
    { // double_starred_kvpair _loop0_82
32485
81.5k
        if (p->error_indicator) {
32486
0
            p->level--;
32487
0
            return NULL;
32488
0
        }
32489
81.5k
        D(fprintf(stderr, "%*c> _gather_83[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_82"));
32490
81.5k
        KeyValuePair* elem;
32491
81.5k
        asdl_seq * seq;
32492
81.5k
        if (
32493
81.5k
            (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
32494
81.5k
            &&
32495
81.5k
            (seq = _loop0_82_rule(p))  // _loop0_82
32496
81.5k
        )
32497
6.62k
        {
32498
6.62k
            D(fprintf(stderr, "%*c+ _gather_83[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_82"));
32499
6.62k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
32500
6.62k
            goto done;
32501
6.62k
        }
32502
74.9k
        p->mark = _mark;
32503
74.9k
        D(fprintf(stderr, "%*c%s _gather_83[%d-%d]: %s failed!\n", p->level, ' ',
32504
74.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_82"));
32505
74.9k
    }
32506
0
    _res = NULL;
32507
81.5k
  done:
32508
81.5k
    p->level--;
32509
81.5k
    return _res;
32510
74.9k
}
32511
32512
// _loop1_84: for_if_clause
32513
static asdl_seq *
32514
_loop1_84_rule(Parser *p)
32515
101k
{
32516
101k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32517
0
        _Pypegen_stack_overflow(p);
32518
0
    }
32519
101k
    if (p->error_indicator) {
32520
0
        p->level--;
32521
0
        return NULL;
32522
0
    }
32523
101k
    void *_res = NULL;
32524
101k
    int _mark = p->mark;
32525
101k
    void **_children = PyMem_Malloc(sizeof(void *));
32526
101k
    if (!_children) {
32527
0
        p->error_indicator = 1;
32528
0
        PyErr_NoMemory();
32529
0
        p->level--;
32530
0
        return NULL;
32531
0
    }
32532
101k
    Py_ssize_t _children_capacity = 1;
32533
101k
    Py_ssize_t _n = 0;
32534
101k
    { // for_if_clause
32535
101k
        if (p->error_indicator) {
32536
0
            p->level--;
32537
0
            return NULL;
32538
0
        }
32539
101k
        D(fprintf(stderr, "%*c> _loop1_84[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause"));
32540
101k
        comprehension_ty for_if_clause_var;
32541
101k
        while (
32542
129k
            (for_if_clause_var = for_if_clause_rule(p))  // for_if_clause
32543
101k
        )
32544
28.1k
        {
32545
28.1k
            _res = for_if_clause_var;
32546
28.1k
            if (_n == _children_capacity) {
32547
2.76k
                _children_capacity *= 2;
32548
2.76k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32549
2.76k
                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
2.76k
                _children = _new_children;
32557
2.76k
            }
32558
28.1k
            _children[_n++] = _res;
32559
28.1k
            _mark = p->mark;
32560
28.1k
        }
32561
101k
        p->mark = _mark;
32562
101k
        D(fprintf(stderr, "%*c%s _loop1_84[%d-%d]: %s failed!\n", p->level, ' ',
32563
101k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause"));
32564
101k
    }
32565
101k
    if (_n == 0 || p->error_indicator) {
32566
79.0k
        PyMem_Free(_children);
32567
79.0k
        p->level--;
32568
79.0k
        return NULL;
32569
79.0k
    }
32570
22.7k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32571
22.7k
    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
50.7k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32579
22.7k
    PyMem_Free(_children);
32580
22.7k
    p->level--;
32581
22.7k
    return _seq;
32582
22.7k
}
32583
32584
// _loop0_85: ('if' disjunction)
32585
static asdl_seq *
32586
_loop0_85_rule(Parser *p)
32587
28.1k
{
32588
28.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32589
0
        _Pypegen_stack_overflow(p);
32590
0
    }
32591
28.1k
    if (p->error_indicator) {
32592
0
        p->level--;
32593
0
        return NULL;
32594
0
    }
32595
28.1k
    void *_res = NULL;
32596
28.1k
    int _mark = p->mark;
32597
28.1k
    void **_children = PyMem_Malloc(sizeof(void *));
32598
28.1k
    if (!_children) {
32599
0
        p->error_indicator = 1;
32600
0
        PyErr_NoMemory();
32601
0
        p->level--;
32602
0
        return NULL;
32603
0
    }
32604
28.1k
    Py_ssize_t _children_capacity = 1;
32605
28.1k
    Py_ssize_t _n = 0;
32606
28.1k
    { // ('if' disjunction)
32607
28.1k
        if (p->error_indicator) {
32608
0
            p->level--;
32609
0
            return NULL;
32610
0
        }
32611
28.1k
        D(fprintf(stderr, "%*c> _loop0_85[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)"));
32612
28.1k
        void *_tmp_162_var;
32613
28.1k
        while (
32614
37.4k
            (_tmp_162_var = _tmp_162_rule(p))  // 'if' disjunction
32615
28.1k
        )
32616
9.35k
        {
32617
9.35k
            _res = _tmp_162_var;
32618
9.35k
            if (_n == _children_capacity) {
32619
4.03k
                _children_capacity *= 2;
32620
4.03k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32621
4.03k
                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
4.03k
                _children = _new_children;
32629
4.03k
            }
32630
9.35k
            _children[_n++] = _res;
32631
9.35k
            _mark = p->mark;
32632
9.35k
        }
32633
28.1k
        p->mark = _mark;
32634
28.1k
        D(fprintf(stderr, "%*c%s _loop0_85[%d-%d]: %s failed!\n", p->level, ' ',
32635
28.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('if' disjunction)"));
32636
28.1k
    }
32637
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32638
28.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
37.4k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32646
28.1k
    PyMem_Free(_children);
32647
28.1k
    p->level--;
32648
28.1k
    return _seq;
32649
28.1k
}
32650
32651
// _tmp_86: assignment_expression | expression !':='
32652
static void *
32653
_tmp_86_rule(Parser *p)
32654
236k
{
32655
236k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32656
1
        _Pypegen_stack_overflow(p);
32657
1
    }
32658
236k
    if (p->error_indicator) {
32659
1
        p->level--;
32660
1
        return NULL;
32661
1
    }
32662
236k
    void * _res = NULL;
32663
236k
    int _mark = p->mark;
32664
236k
    { // assignment_expression
32665
236k
        if (p->error_indicator) {
32666
0
            p->level--;
32667
0
            return NULL;
32668
0
        }
32669
236k
        D(fprintf(stderr, "%*c> _tmp_86[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
32670
236k
        expr_ty assignment_expression_var;
32671
236k
        if (
32672
236k
            (assignment_expression_var = assignment_expression_rule(p))  // assignment_expression
32673
236k
        )
32674
422
        {
32675
422
            D(fprintf(stderr, "%*c+ _tmp_86[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
32676
422
            _res = assignment_expression_var;
32677
422
            goto done;
32678
422
        }
32679
236k
        p->mark = _mark;
32680
236k
        D(fprintf(stderr, "%*c%s _tmp_86[%d-%d]: %s failed!\n", p->level, ' ',
32681
236k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression"));
32682
236k
    }
32683
0
    { // expression !':='
32684
236k
        if (p->error_indicator) {
32685
140
            p->level--;
32686
140
            return NULL;
32687
140
        }
32688
236k
        D(fprintf(stderr, "%*c> _tmp_86[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
32689
236k
        expr_ty expression_var;
32690
236k
        if (
32691
236k
            (expression_var = expression_rule(p))  // expression
32692
236k
            &&
32693
236k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53)  // token=':='
32694
236k
        )
32695
106k
        {
32696
106k
            D(fprintf(stderr, "%*c+ _tmp_86[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='"));
32697
106k
            _res = expression_var;
32698
106k
            goto done;
32699
106k
        }
32700
129k
        p->mark = _mark;
32701
129k
        D(fprintf(stderr, "%*c%s _tmp_86[%d-%d]: %s failed!\n", p->level, ' ',
32702
129k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
32703
129k
    }
32704
0
    _res = NULL;
32705
236k
  done:
32706
236k
    p->level--;
32707
236k
    return _res;
32708
129k
}
32709
32710
// _loop0_87: ',' (starred_expression | (assignment_expression | expression !':=') !'=')
32711
static asdl_seq *
32712
_loop0_87_rule(Parser *p)
32713
41.3k
{
32714
41.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32715
0
        _Pypegen_stack_overflow(p);
32716
0
    }
32717
41.3k
    if (p->error_indicator) {
32718
0
        p->level--;
32719
0
        return NULL;
32720
0
    }
32721
41.3k
    void *_res = NULL;
32722
41.3k
    int _mark = p->mark;
32723
41.3k
    void **_children = PyMem_Malloc(sizeof(void *));
32724
41.3k
    if (!_children) {
32725
0
        p->error_indicator = 1;
32726
0
        PyErr_NoMemory();
32727
0
        p->level--;
32728
0
        return NULL;
32729
0
    }
32730
41.3k
    Py_ssize_t _children_capacity = 1;
32731
41.3k
    Py_ssize_t _n = 0;
32732
41.3k
    { // ',' (starred_expression | (assignment_expression | expression !':=') !'=')
32733
41.3k
        if (p->error_indicator) {
32734
0
            p->level--;
32735
0
            return NULL;
32736
0
        }
32737
41.3k
        D(fprintf(stderr, "%*c> _loop0_87[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (starred_expression | (assignment_expression | expression !':=') !'=')"));
32738
41.3k
        Token * _literal;
32739
41.3k
        void *elem;
32740
41.3k
        while (
32741
56.7k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
32742
56.7k
            &&
32743
56.7k
            (elem = _tmp_163_rule(p))  // starred_expression | (assignment_expression | expression !':=') !'='
32744
41.3k
        )
32745
15.3k
        {
32746
15.3k
            _res = elem;
32747
15.3k
            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
15.3k
            if (_n == _children_capacity) {
32754
1.85k
                _children_capacity *= 2;
32755
1.85k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32756
1.85k
                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
1.85k
                _children = _new_children;
32764
1.85k
            }
32765
15.3k
            _children[_n++] = _res;
32766
15.3k
            _mark = p->mark;
32767
15.3k
        }
32768
41.3k
        p->mark = _mark;
32769
41.3k
        D(fprintf(stderr, "%*c%s _loop0_87[%d-%d]: %s failed!\n", p->level, ' ',
32770
41.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (starred_expression | (assignment_expression | expression !':=') !'=')"));
32771
41.3k
    }
32772
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32773
41.3k
    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
56.7k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32781
41.3k
    PyMem_Free(_children);
32782
41.3k
    p->level--;
32783
41.3k
    return _seq;
32784
41.3k
}
32785
32786
// _gather_88:
32787
//     | (starred_expression | (assignment_expression | expression !':=') !'=') _loop0_87
32788
static asdl_seq *
32789
_gather_88_rule(Parser *p)
32790
100k
{
32791
100k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32792
0
        _Pypegen_stack_overflow(p);
32793
0
    }
32794
100k
    if (p->error_indicator) {
32795
0
        p->level--;
32796
0
        return NULL;
32797
0
    }
32798
100k
    asdl_seq * _res = NULL;
32799
100k
    int _mark = p->mark;
32800
100k
    { // (starred_expression | (assignment_expression | expression !':=') !'=') _loop0_87
32801
100k
        if (p->error_indicator) {
32802
0
            p->level--;
32803
0
            return NULL;
32804
0
        }
32805
100k
        D(fprintf(stderr, "%*c> _gather_88[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_87"));
32806
100k
        void *elem;
32807
100k
        asdl_seq * seq;
32808
100k
        if (
32809
100k
            (elem = _tmp_163_rule(p))  // starred_expression | (assignment_expression | expression !':=') !'='
32810
100k
            &&
32811
100k
            (seq = _loop0_87_rule(p))  // _loop0_87
32812
100k
        )
32813
41.3k
        {
32814
41.3k
            D(fprintf(stderr, "%*c+ _gather_88[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_87"));
32815
41.3k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
32816
41.3k
            goto done;
32817
41.3k
        }
32818
59.1k
        p->mark = _mark;
32819
59.1k
        D(fprintf(stderr, "%*c%s _gather_88[%d-%d]: %s failed!\n", p->level, ' ',
32820
59.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_87"));
32821
59.1k
    }
32822
0
    _res = NULL;
32823
100k
  done:
32824
100k
    p->level--;
32825
100k
    return _res;
32826
59.1k
}
32827
32828
// _tmp_89: ',' kwargs
32829
static void *
32830
_tmp_89_rule(Parser *p)
32831
37.5k
{
32832
37.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32833
0
        _Pypegen_stack_overflow(p);
32834
0
    }
32835
37.5k
    if (p->error_indicator) {
32836
831
        p->level--;
32837
831
        return NULL;
32838
831
    }
32839
36.7k
    void * _res = NULL;
32840
36.7k
    int _mark = p->mark;
32841
36.7k
    { // ',' kwargs
32842
36.7k
        if (p->error_indicator) {
32843
0
            p->level--;
32844
0
            return NULL;
32845
0
        }
32846
36.7k
        D(fprintf(stderr, "%*c> _tmp_89[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwargs"));
32847
36.7k
        Token * _literal;
32848
36.7k
        asdl_seq* k;
32849
36.7k
        if (
32850
36.7k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
32851
36.7k
            &&
32852
36.7k
            (k = kwargs_rule(p))  // kwargs
32853
36.7k
        )
32854
3.36k
        {
32855
3.36k
            D(fprintf(stderr, "%*c+ _tmp_89[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' kwargs"));
32856
3.36k
            _res = k;
32857
3.36k
            if (_res == NULL && PyErr_Occurred()) {
32858
0
                p->error_indicator = 1;
32859
0
                p->level--;
32860
0
                return NULL;
32861
0
            }
32862
3.36k
            goto done;
32863
3.36k
        }
32864
33.3k
        p->mark = _mark;
32865
33.3k
        D(fprintf(stderr, "%*c%s _tmp_89[%d-%d]: %s failed!\n", p->level, ' ',
32866
33.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwargs"));
32867
33.3k
    }
32868
0
    _res = NULL;
32869
36.7k
  done:
32870
36.7k
    p->level--;
32871
36.7k
    return _res;
32872
33.3k
}
32873
32874
// _loop0_90: ',' kwarg_or_starred
32875
static asdl_seq *
32876
_loop0_90_rule(Parser *p)
32877
18.3k
{
32878
18.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32879
0
        _Pypegen_stack_overflow(p);
32880
0
    }
32881
18.3k
    if (p->error_indicator) {
32882
0
        p->level--;
32883
0
        return NULL;
32884
0
    }
32885
18.3k
    void *_res = NULL;
32886
18.3k
    int _mark = p->mark;
32887
18.3k
    void **_children = PyMem_Malloc(sizeof(void *));
32888
18.3k
    if (!_children) {
32889
0
        p->error_indicator = 1;
32890
0
        PyErr_NoMemory();
32891
0
        p->level--;
32892
0
        return NULL;
32893
0
    }
32894
18.3k
    Py_ssize_t _children_capacity = 1;
32895
18.3k
    Py_ssize_t _n = 0;
32896
18.3k
    { // ',' kwarg_or_starred
32897
18.3k
        if (p->error_indicator) {
32898
0
            p->level--;
32899
0
            return NULL;
32900
0
        }
32901
18.3k
        D(fprintf(stderr, "%*c> _loop0_90[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_starred"));
32902
18.3k
        Token * _literal;
32903
18.3k
        KeywordOrStarred* elem;
32904
18.3k
        while (
32905
27.6k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
32906
27.6k
            &&
32907
27.6k
            (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
32908
18.3k
        )
32909
9.33k
        {
32910
9.33k
            _res = elem;
32911
9.33k
            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
9.33k
            if (_n == _children_capacity) {
32918
1.79k
                _children_capacity *= 2;
32919
1.79k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32920
1.79k
                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
1.79k
                _children = _new_children;
32928
1.79k
            }
32929
9.33k
            _children[_n++] = _res;
32930
9.33k
            _mark = p->mark;
32931
9.33k
        }
32932
18.3k
        p->mark = _mark;
32933
18.3k
        D(fprintf(stderr, "%*c%s _loop0_90[%d-%d]: %s failed!\n", p->level, ' ',
32934
18.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_starred"));
32935
18.3k
    }
32936
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32937
18.3k
    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.6k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32945
18.3k
    PyMem_Free(_children);
32946
18.3k
    p->level--;
32947
18.3k
    return _seq;
32948
18.3k
}
32949
32950
// _gather_91: kwarg_or_starred _loop0_90
32951
static asdl_seq *
32952
_gather_91_rule(Parser *p)
32953
135k
{
32954
135k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32955
0
        _Pypegen_stack_overflow(p);
32956
0
    }
32957
135k
    if (p->error_indicator) {
32958
0
        p->level--;
32959
0
        return NULL;
32960
0
    }
32961
135k
    asdl_seq * _res = NULL;
32962
135k
    int _mark = p->mark;
32963
135k
    { // kwarg_or_starred _loop0_90
32964
135k
        if (p->error_indicator) {
32965
0
            p->level--;
32966
0
            return NULL;
32967
0
        }
32968
135k
        D(fprintf(stderr, "%*c> _gather_91[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_90"));
32969
135k
        KeywordOrStarred* elem;
32970
135k
        asdl_seq * seq;
32971
135k
        if (
32972
135k
            (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
32973
135k
            &&
32974
135k
            (seq = _loop0_90_rule(p))  // _loop0_90
32975
135k
        )
32976
18.3k
        {
32977
18.3k
            D(fprintf(stderr, "%*c+ _gather_91[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_90"));
32978
18.3k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
32979
18.3k
            goto done;
32980
18.3k
        }
32981
117k
        p->mark = _mark;
32982
117k
        D(fprintf(stderr, "%*c%s _gather_91[%d-%d]: %s failed!\n", p->level, ' ',
32983
117k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_starred _loop0_90"));
32984
117k
    }
32985
0
    _res = NULL;
32986
135k
  done:
32987
135k
    p->level--;
32988
135k
    return _res;
32989
117k
}
32990
32991
// _loop0_92: ',' kwarg_or_double_starred
32992
static asdl_seq *
32993
_loop0_92_rule(Parser *p)
32994
9.05k
{
32995
9.05k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32996
0
        _Pypegen_stack_overflow(p);
32997
0
    }
32998
9.05k
    if (p->error_indicator) {
32999
0
        p->level--;
33000
0
        return NULL;
33001
0
    }
33002
9.05k
    void *_res = NULL;
33003
9.05k
    int _mark = p->mark;
33004
9.05k
    void **_children = PyMem_Malloc(sizeof(void *));
33005
9.05k
    if (!_children) {
33006
0
        p->error_indicator = 1;
33007
0
        PyErr_NoMemory();
33008
0
        p->level--;
33009
0
        return NULL;
33010
0
    }
33011
9.05k
    Py_ssize_t _children_capacity = 1;
33012
9.05k
    Py_ssize_t _n = 0;
33013
9.05k
    { // ',' kwarg_or_double_starred
33014
9.05k
        if (p->error_indicator) {
33015
0
            p->level--;
33016
0
            return NULL;
33017
0
        }
33018
9.05k
        D(fprintf(stderr, "%*c> _loop0_92[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_double_starred"));
33019
9.05k
        Token * _literal;
33020
9.05k
        KeywordOrStarred* elem;
33021
9.05k
        while (
33022
16.7k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33023
16.7k
            &&
33024
16.7k
            (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
33025
9.05k
        )
33026
7.65k
        {
33027
7.65k
            _res = elem;
33028
7.65k
            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
7.65k
            if (_n == _children_capacity) {
33035
2.54k
                _children_capacity *= 2;
33036
2.54k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33037
2.54k
                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
2.54k
                _children = _new_children;
33045
2.54k
            }
33046
7.65k
            _children[_n++] = _res;
33047
7.65k
            _mark = p->mark;
33048
7.65k
        }
33049
9.05k
        p->mark = _mark;
33050
9.05k
        D(fprintf(stderr, "%*c%s _loop0_92[%d-%d]: %s failed!\n", p->level, ' ',
33051
9.05k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_double_starred"));
33052
9.05k
    }
33053
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33054
9.05k
    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
16.7k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33062
9.05k
    PyMem_Free(_children);
33063
9.05k
    p->level--;
33064
9.05k
    return _seq;
33065
9.05k
}
33066
33067
// _gather_93: kwarg_or_double_starred _loop0_92
33068
static asdl_seq *
33069
_gather_93_rule(Parser *p)
33070
61.0k
{
33071
61.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33072
0
        _Pypegen_stack_overflow(p);
33073
0
    }
33074
61.0k
    if (p->error_indicator) {
33075
315
        p->level--;
33076
315
        return NULL;
33077
315
    }
33078
60.6k
    asdl_seq * _res = NULL;
33079
60.6k
    int _mark = p->mark;
33080
60.6k
    { // kwarg_or_double_starred _loop0_92
33081
60.6k
        if (p->error_indicator) {
33082
0
            p->level--;
33083
0
            return NULL;
33084
0
        }
33085
60.6k
        D(fprintf(stderr, "%*c> _gather_93[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_92"));
33086
60.6k
        KeywordOrStarred* elem;
33087
60.6k
        asdl_seq * seq;
33088
60.6k
        if (
33089
60.6k
            (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
33090
60.6k
            &&
33091
60.6k
            (seq = _loop0_92_rule(p))  // _loop0_92
33092
60.6k
        )
33093
9.05k
        {
33094
9.05k
            D(fprintf(stderr, "%*c+ _gather_93[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_92"));
33095
9.05k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
33096
9.05k
            goto done;
33097
9.05k
        }
33098
51.6k
        p->mark = _mark;
33099
51.6k
        D(fprintf(stderr, "%*c%s _gather_93[%d-%d]: %s failed!\n", p->level, ' ',
33100
51.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_double_starred _loop0_92"));
33101
51.6k
    }
33102
0
    _res = NULL;
33103
60.6k
  done:
33104
60.6k
    p->level--;
33105
60.6k
    return _res;
33106
51.6k
}
33107
33108
// _loop0_94: (',' star_target)
33109
static asdl_seq *
33110
_loop0_94_rule(Parser *p)
33111
72.2k
{
33112
72.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33113
0
        _Pypegen_stack_overflow(p);
33114
0
    }
33115
72.2k
    if (p->error_indicator) {
33116
0
        p->level--;
33117
0
        return NULL;
33118
0
    }
33119
72.2k
    void *_res = NULL;
33120
72.2k
    int _mark = p->mark;
33121
72.2k
    void **_children = PyMem_Malloc(sizeof(void *));
33122
72.2k
    if (!_children) {
33123
0
        p->error_indicator = 1;
33124
0
        PyErr_NoMemory();
33125
0
        p->level--;
33126
0
        return NULL;
33127
0
    }
33128
72.2k
    Py_ssize_t _children_capacity = 1;
33129
72.2k
    Py_ssize_t _n = 0;
33130
72.2k
    { // (',' star_target)
33131
72.2k
        if (p->error_indicator) {
33132
0
            p->level--;
33133
0
            return NULL;
33134
0
        }
33135
72.2k
        D(fprintf(stderr, "%*c> _loop0_94[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)"));
33136
72.2k
        void *_tmp_164_var;
33137
72.2k
        while (
33138
202k
            (_tmp_164_var = _tmp_164_rule(p))  // ',' star_target
33139
72.2k
        )
33140
130k
        {
33141
130k
            _res = _tmp_164_var;
33142
130k
            if (_n == _children_capacity) {
33143
45.8k
                _children_capacity *= 2;
33144
45.8k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33145
45.8k
                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
45.8k
                _children = _new_children;
33153
45.8k
            }
33154
130k
            _children[_n++] = _res;
33155
130k
            _mark = p->mark;
33156
130k
        }
33157
72.2k
        p->mark = _mark;
33158
72.2k
        D(fprintf(stderr, "%*c%s _loop0_94[%d-%d]: %s failed!\n", p->level, ' ',
33159
72.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_target)"));
33160
72.2k
    }
33161
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33162
72.2k
    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
202k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33170
72.2k
    PyMem_Free(_children);
33171
72.2k
    p->level--;
33172
72.2k
    return _seq;
33173
72.2k
}
33174
33175
// _loop0_95: ',' star_target
33176
static asdl_seq *
33177
_loop0_95_rule(Parser *p)
33178
3.42k
{
33179
3.42k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33180
0
        _Pypegen_stack_overflow(p);
33181
0
    }
33182
3.42k
    if (p->error_indicator) {
33183
0
        p->level--;
33184
0
        return NULL;
33185
0
    }
33186
3.42k
    void *_res = NULL;
33187
3.42k
    int _mark = p->mark;
33188
3.42k
    void **_children = PyMem_Malloc(sizeof(void *));
33189
3.42k
    if (!_children) {
33190
0
        p->error_indicator = 1;
33191
0
        PyErr_NoMemory();
33192
0
        p->level--;
33193
0
        return NULL;
33194
0
    }
33195
3.42k
    Py_ssize_t _children_capacity = 1;
33196
3.42k
    Py_ssize_t _n = 0;
33197
3.42k
    { // ',' star_target
33198
3.42k
        if (p->error_indicator) {
33199
0
            p->level--;
33200
0
            return NULL;
33201
0
        }
33202
3.42k
        D(fprintf(stderr, "%*c> _loop0_95[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
33203
3.42k
        Token * _literal;
33204
3.42k
        expr_ty elem;
33205
3.42k
        while (
33206
6.89k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33207
6.89k
            &&
33208
6.89k
            (elem = star_target_rule(p))  // star_target
33209
3.42k
        )
33210
3.47k
        {
33211
3.47k
            _res = elem;
33212
3.47k
            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.47k
            if (_n == _children_capacity) {
33219
1.56k
                _children_capacity *= 2;
33220
1.56k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33221
1.56k
                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.56k
                _children = _new_children;
33229
1.56k
            }
33230
3.47k
            _children[_n++] = _res;
33231
3.47k
            _mark = p->mark;
33232
3.47k
        }
33233
3.42k
        p->mark = _mark;
33234
3.42k
        D(fprintf(stderr, "%*c%s _loop0_95[%d-%d]: %s failed!\n", p->level, ' ',
33235
3.42k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
33236
3.42k
    }
33237
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33238
3.42k
    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.89k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33246
3.42k
    PyMem_Free(_children);
33247
3.42k
    p->level--;
33248
3.42k
    return _seq;
33249
3.42k
}
33250
33251
// _gather_96: star_target _loop0_95
33252
static asdl_seq *
33253
_gather_96_rule(Parser *p)
33254
7.20k
{
33255
7.20k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33256
0
        _Pypegen_stack_overflow(p);
33257
0
    }
33258
7.20k
    if (p->error_indicator) {
33259
0
        p->level--;
33260
0
        return NULL;
33261
0
    }
33262
7.20k
    asdl_seq * _res = NULL;
33263
7.20k
    int _mark = p->mark;
33264
7.20k
    { // star_target _loop0_95
33265
7.20k
        if (p->error_indicator) {
33266
0
            p->level--;
33267
0
            return NULL;
33268
0
        }
33269
7.20k
        D(fprintf(stderr, "%*c> _gather_96[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target _loop0_95"));
33270
7.20k
        expr_ty elem;
33271
7.20k
        asdl_seq * seq;
33272
7.20k
        if (
33273
7.20k
            (elem = star_target_rule(p))  // star_target
33274
7.20k
            &&
33275
7.20k
            (seq = _loop0_95_rule(p))  // _loop0_95
33276
7.20k
        )
33277
3.42k
        {
33278
3.42k
            D(fprintf(stderr, "%*c+ _gather_96[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target _loop0_95"));
33279
3.42k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
33280
3.42k
            goto done;
33281
3.42k
        }
33282
3.78k
        p->mark = _mark;
33283
3.78k
        D(fprintf(stderr, "%*c%s _gather_96[%d-%d]: %s failed!\n", p->level, ' ',
33284
3.78k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target _loop0_95"));
33285
3.78k
    }
33286
0
    _res = NULL;
33287
7.20k
  done:
33288
7.20k
    p->level--;
33289
7.20k
    return _res;
33290
3.78k
}
33291
33292
// _loop1_97: (',' star_target)
33293
static asdl_seq *
33294
_loop1_97_rule(Parser *p)
33295
2.22k
{
33296
2.22k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33297
0
        _Pypegen_stack_overflow(p);
33298
0
    }
33299
2.22k
    if (p->error_indicator) {
33300
0
        p->level--;
33301
0
        return NULL;
33302
0
    }
33303
2.22k
    void *_res = NULL;
33304
2.22k
    int _mark = p->mark;
33305
2.22k
    void **_children = PyMem_Malloc(sizeof(void *));
33306
2.22k
    if (!_children) {
33307
0
        p->error_indicator = 1;
33308
0
        PyErr_NoMemory();
33309
0
        p->level--;
33310
0
        return NULL;
33311
0
    }
33312
2.22k
    Py_ssize_t _children_capacity = 1;
33313
2.22k
    Py_ssize_t _n = 0;
33314
2.22k
    { // (',' star_target)
33315
2.22k
        if (p->error_indicator) {
33316
0
            p->level--;
33317
0
            return NULL;
33318
0
        }
33319
2.22k
        D(fprintf(stderr, "%*c> _loop1_97[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)"));
33320
2.22k
        void *_tmp_164_var;
33321
2.22k
        while (
33322
4.36k
            (_tmp_164_var = _tmp_164_rule(p))  // ',' star_target
33323
2.22k
        )
33324
2.13k
        {
33325
2.13k
            _res = _tmp_164_var;
33326
2.13k
            if (_n == _children_capacity) {
33327
729
                _children_capacity *= 2;
33328
729
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33329
729
                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
729
                _children = _new_children;
33337
729
            }
33338
2.13k
            _children[_n++] = _res;
33339
2.13k
            _mark = p->mark;
33340
2.13k
        }
33341
2.22k
        p->mark = _mark;
33342
2.22k
        D(fprintf(stderr, "%*c%s _loop1_97[%d-%d]: %s failed!\n", p->level, ' ',
33343
2.22k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_target)"));
33344
2.22k
    }
33345
2.22k
    if (_n == 0 || p->error_indicator) {
33346
1.35k
        PyMem_Free(_children);
33347
1.35k
        p->level--;
33348
1.35k
        return NULL;
33349
1.35k
    }
33350
870
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33351
870
    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
3.00k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33359
870
    PyMem_Free(_children);
33360
870
    p->level--;
33361
870
    return _seq;
33362
870
}
33363
33364
// _tmp_98: !'*' star_target
33365
static void *
33366
_tmp_98_rule(Parser *p)
33367
7.57k
{
33368
7.57k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33369
0
        _Pypegen_stack_overflow(p);
33370
0
    }
33371
7.57k
    if (p->error_indicator) {
33372
0
        p->level--;
33373
0
        return NULL;
33374
0
    }
33375
7.57k
    void * _res = NULL;
33376
7.57k
    int _mark = p->mark;
33377
7.57k
    { // !'*' star_target
33378
7.57k
        if (p->error_indicator) {
33379
0
            p->level--;
33380
0
            return NULL;
33381
0
        }
33382
7.57k
        D(fprintf(stderr, "%*c> _tmp_98[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!'*' star_target"));
33383
7.57k
        expr_ty star_target_var;
33384
7.57k
        if (
33385
7.57k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 16)  // token='*'
33386
7.57k
            &&
33387
7.57k
            (star_target_var = star_target_rule(p))  // star_target
33388
7.57k
        )
33389
5.67k
        {
33390
5.67k
            D(fprintf(stderr, "%*c+ _tmp_98[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!'*' star_target"));
33391
5.67k
            _res = star_target_var;
33392
5.67k
            goto done;
33393
5.67k
        }
33394
1.90k
        p->mark = _mark;
33395
1.90k
        D(fprintf(stderr, "%*c%s _tmp_98[%d-%d]: %s failed!\n", p->level, ' ',
33396
1.90k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!'*' star_target"));
33397
1.90k
    }
33398
0
    _res = NULL;
33399
7.57k
  done:
33400
7.57k
    p->level--;
33401
7.57k
    return _res;
33402
1.90k
}
33403
33404
// _loop0_99: ',' del_target
33405
static asdl_seq *
33406
_loop0_99_rule(Parser *p)
33407
8.09k
{
33408
8.09k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33409
0
        _Pypegen_stack_overflow(p);
33410
0
    }
33411
8.09k
    if (p->error_indicator) {
33412
0
        p->level--;
33413
0
        return NULL;
33414
0
    }
33415
8.09k
    void *_res = NULL;
33416
8.09k
    int _mark = p->mark;
33417
8.09k
    void **_children = PyMem_Malloc(sizeof(void *));
33418
8.09k
    if (!_children) {
33419
0
        p->error_indicator = 1;
33420
0
        PyErr_NoMemory();
33421
0
        p->level--;
33422
0
        return NULL;
33423
0
    }
33424
8.09k
    Py_ssize_t _children_capacity = 1;
33425
8.09k
    Py_ssize_t _n = 0;
33426
8.09k
    { // ',' del_target
33427
8.09k
        if (p->error_indicator) {
33428
0
            p->level--;
33429
0
            return NULL;
33430
0
        }
33431
8.09k
        D(fprintf(stderr, "%*c> _loop0_99[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' del_target"));
33432
8.09k
        Token * _literal;
33433
8.09k
        expr_ty elem;
33434
8.09k
        while (
33435
17.6k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33436
17.6k
            &&
33437
17.6k
            (elem = del_target_rule(p))  // del_target
33438
8.09k
        )
33439
9.54k
        {
33440
9.54k
            _res = elem;
33441
9.54k
            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
9.54k
            if (_n == _children_capacity) {
33448
2.75k
                _children_capacity *= 2;
33449
2.75k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33450
2.75k
                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
2.75k
                _children = _new_children;
33458
2.75k
            }
33459
9.54k
            _children[_n++] = _res;
33460
9.54k
            _mark = p->mark;
33461
9.54k
        }
33462
8.09k
        p->mark = _mark;
33463
8.09k
        D(fprintf(stderr, "%*c%s _loop0_99[%d-%d]: %s failed!\n", p->level, ' ',
33464
8.09k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' del_target"));
33465
8.09k
    }
33466
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33467
8.09k
    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
17.6k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33475
8.09k
    PyMem_Free(_children);
33476
8.09k
    p->level--;
33477
8.09k
    return _seq;
33478
8.09k
}
33479
33480
// _gather_100: del_target _loop0_99
33481
static asdl_seq *
33482
_gather_100_rule(Parser *p)
33483
10.0k
{
33484
10.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33485
0
        _Pypegen_stack_overflow(p);
33486
0
    }
33487
10.0k
    if (p->error_indicator) {
33488
0
        p->level--;
33489
0
        return NULL;
33490
0
    }
33491
10.0k
    asdl_seq * _res = NULL;
33492
10.0k
    int _mark = p->mark;
33493
10.0k
    { // del_target _loop0_99
33494
10.0k
        if (p->error_indicator) {
33495
0
            p->level--;
33496
0
            return NULL;
33497
0
        }
33498
10.0k
        D(fprintf(stderr, "%*c> _gather_100[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "del_target _loop0_99"));
33499
10.0k
        expr_ty elem;
33500
10.0k
        asdl_seq * seq;
33501
10.0k
        if (
33502
10.0k
            (elem = del_target_rule(p))  // del_target
33503
10.0k
            &&
33504
10.0k
            (seq = _loop0_99_rule(p))  // _loop0_99
33505
10.0k
        )
33506
8.09k
        {
33507
8.09k
            D(fprintf(stderr, "%*c+ _gather_100[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "del_target _loop0_99"));
33508
8.09k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
33509
8.09k
            goto done;
33510
8.09k
        }
33511
1.93k
        p->mark = _mark;
33512
1.93k
        D(fprintf(stderr, "%*c%s _gather_100[%d-%d]: %s failed!\n", p->level, ' ',
33513
1.93k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_target _loop0_99"));
33514
1.93k
    }
33515
0
    _res = NULL;
33516
10.0k
  done:
33517
10.0k
    p->level--;
33518
10.0k
    return _res;
33519
1.93k
}
33520
33521
// _loop0_101: ',' expression
33522
static asdl_seq *
33523
_loop0_101_rule(Parser *p)
33524
0
{
33525
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33526
0
        _Pypegen_stack_overflow(p);
33527
0
    }
33528
0
    if (p->error_indicator) {
33529
0
        p->level--;
33530
0
        return NULL;
33531
0
    }
33532
0
    void *_res = NULL;
33533
0
    int _mark = p->mark;
33534
0
    void **_children = PyMem_Malloc(sizeof(void *));
33535
0
    if (!_children) {
33536
0
        p->error_indicator = 1;
33537
0
        PyErr_NoMemory();
33538
0
        p->level--;
33539
0
        return NULL;
33540
0
    }
33541
0
    Py_ssize_t _children_capacity = 1;
33542
0
    Py_ssize_t _n = 0;
33543
0
    { // ',' expression
33544
0
        if (p->error_indicator) {
33545
0
            p->level--;
33546
0
            return NULL;
33547
0
        }
33548
0
        D(fprintf(stderr, "%*c> _loop0_101[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
33549
0
        Token * _literal;
33550
0
        expr_ty elem;
33551
0
        while (
33552
0
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33553
0
            &&
33554
0
            (elem = expression_rule(p))  // expression
33555
0
        )
33556
0
        {
33557
0
            _res = elem;
33558
0
            if (_res == NULL && PyErr_Occurred()) {
33559
0
                p->error_indicator = 1;
33560
0
                PyMem_Free(_children);
33561
0
                p->level--;
33562
0
                return NULL;
33563
0
            }
33564
0
            if (_n == _children_capacity) {
33565
0
                _children_capacity *= 2;
33566
0
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33567
0
                if (!_new_children) {
33568
0
                    PyMem_Free(_children);
33569
0
                    p->error_indicator = 1;
33570
0
                    PyErr_NoMemory();
33571
0
                    p->level--;
33572
0
                    return NULL;
33573
0
                }
33574
0
                _children = _new_children;
33575
0
            }
33576
0
            _children[_n++] = _res;
33577
0
            _mark = p->mark;
33578
0
        }
33579
0
        p->mark = _mark;
33580
0
        D(fprintf(stderr, "%*c%s _loop0_101[%d-%d]: %s failed!\n", p->level, ' ',
33581
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
33582
0
    }
33583
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33584
0
    if (!_seq) {
33585
0
        PyMem_Free(_children);
33586
0
        p->error_indicator = 1;
33587
0
        PyErr_NoMemory();
33588
0
        p->level--;
33589
0
        return NULL;
33590
0
    }
33591
0
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33592
0
    PyMem_Free(_children);
33593
0
    p->level--;
33594
0
    return _seq;
33595
0
}
33596
33597
// _gather_102: expression _loop0_101
33598
static asdl_seq *
33599
_gather_102_rule(Parser *p)
33600
0
{
33601
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33602
0
        _Pypegen_stack_overflow(p);
33603
0
    }
33604
0
    if (p->error_indicator) {
33605
0
        p->level--;
33606
0
        return NULL;
33607
0
    }
33608
0
    asdl_seq * _res = NULL;
33609
0
    int _mark = p->mark;
33610
0
    { // expression _loop0_101
33611
0
        if (p->error_indicator) {
33612
0
            p->level--;
33613
0
            return NULL;
33614
0
        }
33615
0
        D(fprintf(stderr, "%*c> _gather_102[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_101"));
33616
0
        expr_ty elem;
33617
0
        asdl_seq * seq;
33618
0
        if (
33619
0
            (elem = expression_rule(p))  // expression
33620
0
            &&
33621
0
            (seq = _loop0_101_rule(p))  // _loop0_101
33622
0
        )
33623
0
        {
33624
0
            D(fprintf(stderr, "%*c+ _gather_102[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_101"));
33625
0
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
33626
0
            goto done;
33627
0
        }
33628
0
        p->mark = _mark;
33629
0
        D(fprintf(stderr, "%*c%s _gather_102[%d-%d]: %s failed!\n", p->level, ' ',
33630
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_101"));
33631
0
    }
33632
0
    _res = NULL;
33633
0
  done:
33634
0
    p->level--;
33635
0
    return _res;
33636
0
}
33637
33638
// _tmp_103: NEWLINE INDENT
33639
static void *
33640
_tmp_103_rule(Parser *p)
33641
0
{
33642
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33643
0
        _Pypegen_stack_overflow(p);
33644
0
    }
33645
0
    if (p->error_indicator) {
33646
0
        p->level--;
33647
0
        return NULL;
33648
0
    }
33649
0
    void * _res = NULL;
33650
0
    int _mark = p->mark;
33651
0
    { // NEWLINE INDENT
33652
0
        if (p->error_indicator) {
33653
0
            p->level--;
33654
0
            return NULL;
33655
0
        }
33656
0
        D(fprintf(stderr, "%*c> _tmp_103[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT"));
33657
0
        Token * indent_var;
33658
0
        Token * newline_var;
33659
0
        if (
33660
0
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
33661
0
            &&
33662
0
            (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
33663
0
        )
33664
0
        {
33665
0
            D(fprintf(stderr, "%*c+ _tmp_103[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT"));
33666
0
            _res = _PyPegen_dummy_name(p, newline_var, indent_var);
33667
0
            goto done;
33668
0
        }
33669
0
        p->mark = _mark;
33670
0
        D(fprintf(stderr, "%*c%s _tmp_103[%d-%d]: %s failed!\n", p->level, ' ',
33671
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE INDENT"));
33672
0
    }
33673
0
    _res = NULL;
33674
0
  done:
33675
0
    p->level--;
33676
0
    return _res;
33677
0
}
33678
33679
// _tmp_104:
33680
//     | (','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs)
33681
//     | kwargs
33682
static void *
33683
_tmp_104_rule(Parser *p)
33684
8.21k
{
33685
8.21k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33686
0
        _Pypegen_stack_overflow(p);
33687
0
    }
33688
8.21k
    if (p->error_indicator) {
33689
0
        p->level--;
33690
0
        return NULL;
33691
0
    }
33692
8.21k
    void * _res = NULL;
33693
8.21k
    int _mark = p->mark;
33694
8.21k
    { // (','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs)
33695
8.21k
        if (p->error_indicator) {
33696
0
            p->level--;
33697
0
            return NULL;
33698
0
        }
33699
8.21k
        D(fprintf(stderr, "%*c> _tmp_104[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs)"));
33700
8.21k
        void *_tmp_165_var;
33701
8.21k
        if (
33702
8.21k
            (_tmp_165_var = _tmp_165_rule(p))  // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs
33703
8.21k
        )
33704
257
        {
33705
257
            D(fprintf(stderr, "%*c+ _tmp_104[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs)"));
33706
257
            _res = _tmp_165_var;
33707
257
            goto done;
33708
257
        }
33709
7.95k
        p->mark = _mark;
33710
7.95k
        D(fprintf(stderr, "%*c%s _tmp_104[%d-%d]: %s failed!\n", p->level, ' ',
33711
7.95k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs)"));
33712
7.95k
    }
33713
0
    { // kwargs
33714
7.95k
        if (p->error_indicator) {
33715
0
            p->level--;
33716
0
            return NULL;
33717
0
        }
33718
7.95k
        D(fprintf(stderr, "%*c> _tmp_104[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwargs"));
33719
7.95k
        asdl_seq* kwargs_var;
33720
7.95k
        if (
33721
7.95k
            (kwargs_var = kwargs_rule(p))  // kwargs
33722
7.95k
        )
33723
3.04k
        {
33724
3.04k
            D(fprintf(stderr, "%*c+ _tmp_104[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwargs"));
33725
3.04k
            _res = kwargs_var;
33726
3.04k
            goto done;
33727
3.04k
        }
33728
4.91k
        p->mark = _mark;
33729
4.91k
        D(fprintf(stderr, "%*c%s _tmp_104[%d-%d]: %s failed!\n", p->level, ' ',
33730
4.91k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwargs"));
33731
4.91k
    }
33732
0
    _res = NULL;
33733
8.21k
  done:
33734
8.21k
    p->level--;
33735
8.21k
    return _res;
33736
4.91k
}
33737
33738
// _loop0_105: ',' (starred_expression !'=')
33739
static asdl_seq *
33740
_loop0_105_rule(Parser *p)
33741
931
{
33742
931
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33743
0
        _Pypegen_stack_overflow(p);
33744
0
    }
33745
931
    if (p->error_indicator) {
33746
0
        p->level--;
33747
0
        return NULL;
33748
0
    }
33749
931
    void *_res = NULL;
33750
931
    int _mark = p->mark;
33751
931
    void **_children = PyMem_Malloc(sizeof(void *));
33752
931
    if (!_children) {
33753
0
        p->error_indicator = 1;
33754
0
        PyErr_NoMemory();
33755
0
        p->level--;
33756
0
        return NULL;
33757
0
    }
33758
931
    Py_ssize_t _children_capacity = 1;
33759
931
    Py_ssize_t _n = 0;
33760
931
    { // ',' (starred_expression !'=')
33761
931
        if (p->error_indicator) {
33762
0
            p->level--;
33763
0
            return NULL;
33764
0
        }
33765
931
        D(fprintf(stderr, "%*c> _loop0_105[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (starred_expression !'=')"));
33766
931
        Token * _literal;
33767
931
        void *elem;
33768
931
        while (
33769
3.16k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33770
3.16k
            &&
33771
3.16k
            (elem = _tmp_166_rule(p))  // starred_expression !'='
33772
931
        )
33773
2.23k
        {
33774
2.23k
            _res = elem;
33775
2.23k
            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
2.23k
            if (_n == _children_capacity) {
33782
1.11k
                _children_capacity *= 2;
33783
1.11k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33784
1.11k
                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
1.11k
                _children = _new_children;
33792
1.11k
            }
33793
2.23k
            _children[_n++] = _res;
33794
2.23k
            _mark = p->mark;
33795
2.23k
        }
33796
931
        p->mark = _mark;
33797
931
        D(fprintf(stderr, "%*c%s _loop0_105[%d-%d]: %s failed!\n", p->level, ' ',
33798
931
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (starred_expression !'=')"));
33799
931
    }
33800
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33801
931
    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
3.16k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33809
931
    PyMem_Free(_children);
33810
931
    p->level--;
33811
931
    return _seq;
33812
931
}
33813
33814
// _gather_106: (starred_expression !'=') _loop0_105
33815
static asdl_seq *
33816
_gather_106_rule(Parser *p)
33817
1.71k
{
33818
1.71k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33819
0
        _Pypegen_stack_overflow(p);
33820
0
    }
33821
1.71k
    if (p->error_indicator) {
33822
0
        p->level--;
33823
0
        return NULL;
33824
0
    }
33825
1.71k
    asdl_seq * _res = NULL;
33826
1.71k
    int _mark = p->mark;
33827
1.71k
    { // (starred_expression !'=') _loop0_105
33828
1.71k
        if (p->error_indicator) {
33829
0
            p->level--;
33830
0
            return NULL;
33831
0
        }
33832
1.71k
        D(fprintf(stderr, "%*c> _gather_106[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(starred_expression !'=') _loop0_105"));
33833
1.71k
        void *elem;
33834
1.71k
        asdl_seq * seq;
33835
1.71k
        if (
33836
1.71k
            (elem = _tmp_166_rule(p))  // starred_expression !'='
33837
1.71k
            &&
33838
1.71k
            (seq = _loop0_105_rule(p))  // _loop0_105
33839
1.71k
        )
33840
931
        {
33841
931
            D(fprintf(stderr, "%*c+ _gather_106[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(starred_expression !'=') _loop0_105"));
33842
931
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
33843
931
            goto done;
33844
931
        }
33845
779
        p->mark = _mark;
33846
779
        D(fprintf(stderr, "%*c%s _gather_106[%d-%d]: %s failed!\n", p->level, ' ',
33847
779
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(starred_expression !'=') _loop0_105"));
33848
779
    }
33849
0
    _res = NULL;
33850
1.71k
  done:
33851
1.71k
    p->level--;
33852
1.71k
    return _res;
33853
779
}
33854
33855
// _tmp_107: args | expression for_if_clauses
33856
static void *
33857
_tmp_107_rule(Parser *p)
33858
140
{
33859
140
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33860
0
        _Pypegen_stack_overflow(p);
33861
0
    }
33862
140
    if (p->error_indicator) {
33863
0
        p->level--;
33864
0
        return NULL;
33865
0
    }
33866
140
    void * _res = NULL;
33867
140
    int _mark = p->mark;
33868
140
    { // args
33869
140
        if (p->error_indicator) {
33870
0
            p->level--;
33871
0
            return NULL;
33872
0
        }
33873
140
        D(fprintf(stderr, "%*c> _tmp_107[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args"));
33874
140
        expr_ty args_var;
33875
140
        if (
33876
140
            (args_var = args_rule(p))  // args
33877
140
        )
33878
10
        {
33879
10
            D(fprintf(stderr, "%*c+ _tmp_107[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args"));
33880
10
            _res = args_var;
33881
10
            goto done;
33882
10
        }
33883
130
        p->mark = _mark;
33884
130
        D(fprintf(stderr, "%*c%s _tmp_107[%d-%d]: %s failed!\n", p->level, ' ',
33885
130
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args"));
33886
130
    }
33887
0
    { // expression for_if_clauses
33888
130
        if (p->error_indicator) {
33889
126
            p->level--;
33890
126
            return NULL;
33891
126
        }
33892
4
        D(fprintf(stderr, "%*c> _tmp_107[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses"));
33893
4
        expr_ty expression_var;
33894
4
        asdl_comprehension_seq* for_if_clauses_var;
33895
4
        if (
33896
4
            (expression_var = expression_rule(p))  // expression
33897
4
            &&
33898
4
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
33899
4
        )
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
4
        p->mark = _mark;
33906
4
        D(fprintf(stderr, "%*c%s _tmp_107[%d-%d]: %s failed!\n", p->level, ' ',
33907
4
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression for_if_clauses"));
33908
4
    }
33909
0
    _res = NULL;
33910
14
  done:
33911
14
    p->level--;
33912
14
    return _res;
33913
4
}
33914
33915
// _tmp_108: args ','
33916
static void *
33917
_tmp_108_rule(Parser *p)
33918
6.97k
{
33919
6.97k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33920
0
        _Pypegen_stack_overflow(p);
33921
0
    }
33922
6.97k
    if (p->error_indicator) {
33923
0
        p->level--;
33924
0
        return NULL;
33925
0
    }
33926
6.97k
    void * _res = NULL;
33927
6.97k
    int _mark = p->mark;
33928
6.97k
    { // args ','
33929
6.97k
        if (p->error_indicator) {
33930
0
            p->level--;
33931
0
            return NULL;
33932
0
        }
33933
6.97k
        D(fprintf(stderr, "%*c> _tmp_108[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ','"));
33934
6.97k
        Token * _literal;
33935
6.97k
        expr_ty args_var;
33936
6.97k
        if (
33937
6.97k
            (args_var = args_rule(p))  // args
33938
6.97k
            &&
33939
6.97k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33940
6.97k
        )
33941
442
        {
33942
442
            D(fprintf(stderr, "%*c+ _tmp_108[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ','"));
33943
442
            _res = _PyPegen_dummy_name(p, args_var, _literal);
33944
442
            goto done;
33945
442
        }
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
6.97k
  done:
33952
6.97k
    p->level--;
33953
6.97k
    return _res;
33954
6.53k
}
33955
33956
// _tmp_109: ',' | ')'
33957
static void *
33958
_tmp_109_rule(Parser *p)
33959
654
{
33960
654
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33961
0
        _Pypegen_stack_overflow(p);
33962
0
    }
33963
654
    if (p->error_indicator) {
33964
0
        p->level--;
33965
0
        return NULL;
33966
0
    }
33967
654
    void * _res = NULL;
33968
654
    int _mark = p->mark;
33969
654
    { // ','
33970
654
        if (p->error_indicator) {
33971
0
            p->level--;
33972
0
            return NULL;
33973
0
        }
33974
654
        D(fprintf(stderr, "%*c> _tmp_109[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
33975
654
        Token * _literal;
33976
654
        if (
33977
654
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33978
654
        )
33979
4
        {
33980
4
            D(fprintf(stderr, "%*c+ _tmp_109[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
33981
4
            _res = _literal;
33982
4
            goto done;
33983
4
        }
33984
650
        p->mark = _mark;
33985
650
        D(fprintf(stderr, "%*c%s _tmp_109[%d-%d]: %s failed!\n", p->level, ' ',
33986
650
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
33987
650
    }
33988
0
    { // ')'
33989
650
        if (p->error_indicator) {
33990
0
            p->level--;
33991
0
            return NULL;
33992
0
        }
33993
650
        D(fprintf(stderr, "%*c> _tmp_109[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
33994
650
        Token * _literal;
33995
650
        if (
33996
650
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
33997
650
        )
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
647
        p->mark = _mark;
34004
647
        D(fprintf(stderr, "%*c%s _tmp_109[%d-%d]: %s failed!\n", p->level, ' ',
34005
647
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
34006
647
    }
34007
0
    _res = NULL;
34008
654
  done:
34009
654
    p->level--;
34010
654
    return _res;
34011
647
}
34012
34013
// _tmp_110: 'True' | 'False' | 'None'
34014
static void *
34015
_tmp_110_rule(Parser *p)
34016
100k
{
34017
100k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34018
0
        _Pypegen_stack_overflow(p);
34019
0
    }
34020
100k
    if (p->error_indicator) {
34021
0
        p->level--;
34022
0
        return NULL;
34023
0
    }
34024
100k
    void * _res = NULL;
34025
100k
    int _mark = p->mark;
34026
100k
    { // 'True'
34027
100k
        if (p->error_indicator) {
34028
0
            p->level--;
34029
0
            return NULL;
34030
0
        }
34031
100k
        D(fprintf(stderr, "%*c> _tmp_110[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
34032
100k
        Token * _keyword;
34033
100k
        if (
34034
100k
            (_keyword = _PyPegen_expect_token(p, 623))  // token='True'
34035
100k
        )
34036
84
        {
34037
84
            D(fprintf(stderr, "%*c+ _tmp_110[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
34038
84
            _res = _keyword;
34039
84
            goto done;
34040
84
        }
34041
100k
        p->mark = _mark;
34042
100k
        D(fprintf(stderr, "%*c%s _tmp_110[%d-%d]: %s failed!\n", p->level, ' ',
34043
100k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
34044
100k
    }
34045
0
    { // 'False'
34046
100k
        if (p->error_indicator) {
34047
0
            p->level--;
34048
0
            return NULL;
34049
0
        }
34050
100k
        D(fprintf(stderr, "%*c> _tmp_110[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
34051
100k
        Token * _keyword;
34052
100k
        if (
34053
100k
            (_keyword = _PyPegen_expect_token(p, 625))  // token='False'
34054
100k
        )
34055
84
        {
34056
84
            D(fprintf(stderr, "%*c+ _tmp_110[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
34057
84
            _res = _keyword;
34058
84
            goto done;
34059
84
        }
34060
100k
        p->mark = _mark;
34061
100k
        D(fprintf(stderr, "%*c%s _tmp_110[%d-%d]: %s failed!\n", p->level, ' ',
34062
100k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
34063
100k
    }
34064
0
    { // 'None'
34065
100k
        if (p->error_indicator) {
34066
0
            p->level--;
34067
0
            return NULL;
34068
0
        }
34069
100k
        D(fprintf(stderr, "%*c> _tmp_110[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
34070
100k
        Token * _keyword;
34071
100k
        if (
34072
100k
            (_keyword = _PyPegen_expect_token(p, 624))  // token='None'
34073
100k
        )
34074
75
        {
34075
75
            D(fprintf(stderr, "%*c+ _tmp_110[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
34076
75
            _res = _keyword;
34077
75
            goto done;
34078
75
        }
34079
100k
        p->mark = _mark;
34080
100k
        D(fprintf(stderr, "%*c%s _tmp_110[%d-%d]: %s failed!\n", p->level, ' ',
34081
100k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
34082
100k
    }
34083
0
    _res = NULL;
34084
100k
  done:
34085
100k
    p->level--;
34086
100k
    return _res;
34087
100k
}
34088
34089
// _tmp_111: NAME '='
34090
static void *
34091
_tmp_111_rule(Parser *p)
34092
99.5k
{
34093
99.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34094
0
        _Pypegen_stack_overflow(p);
34095
0
    }
34096
99.5k
    if (p->error_indicator) {
34097
0
        p->level--;
34098
0
        return NULL;
34099
0
    }
34100
99.5k
    void * _res = NULL;
34101
99.5k
    int _mark = p->mark;
34102
99.5k
    { // NAME '='
34103
99.5k
        if (p->error_indicator) {
34104
0
            p->level--;
34105
0
            return NULL;
34106
0
        }
34107
99.5k
        D(fprintf(stderr, "%*c> _tmp_111[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '='"));
34108
99.5k
        Token * _literal;
34109
99.5k
        expr_ty name_var;
34110
99.5k
        if (
34111
99.5k
            (name_var = _PyPegen_name_token(p))  // NAME
34112
99.5k
            &&
34113
99.5k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
34114
99.5k
        )
34115
17.0k
        {
34116
17.0k
            D(fprintf(stderr, "%*c+ _tmp_111[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '='"));
34117
17.0k
            _res = _PyPegen_dummy_name(p, name_var, _literal);
34118
17.0k
            goto done;
34119
17.0k
        }
34120
82.5k
        p->mark = _mark;
34121
82.5k
        D(fprintf(stderr, "%*c%s _tmp_111[%d-%d]: %s failed!\n", p->level, ' ',
34122
82.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '='"));
34123
82.5k
    }
34124
0
    _res = NULL;
34125
99.5k
  done:
34126
99.5k
    p->level--;
34127
99.5k
    return _res;
34128
82.5k
}
34129
34130
// _loop1_112: (!STRING expression_without_invalid)
34131
static asdl_seq *
34132
_loop1_112_rule(Parser *p)
34133
3.18k
{
34134
3.18k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34135
1
        _Pypegen_stack_overflow(p);
34136
1
    }
34137
3.18k
    if (p->error_indicator) {
34138
1
        p->level--;
34139
1
        return NULL;
34140
1
    }
34141
3.18k
    void *_res = NULL;
34142
3.18k
    int _mark = p->mark;
34143
3.18k
    void **_children = PyMem_Malloc(sizeof(void *));
34144
3.18k
    if (!_children) {
34145
0
        p->error_indicator = 1;
34146
0
        PyErr_NoMemory();
34147
0
        p->level--;
34148
0
        return NULL;
34149
0
    }
34150
3.18k
    Py_ssize_t _children_capacity = 1;
34151
3.18k
    Py_ssize_t _n = 0;
34152
3.18k
    { // (!STRING expression_without_invalid)
34153
3.18k
        if (p->error_indicator) {
34154
0
            p->level--;
34155
0
            return NULL;
34156
0
        }
34157
3.18k
        D(fprintf(stderr, "%*c> _loop1_112[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(!STRING expression_without_invalid)"));
34158
3.18k
        void *_tmp_167_var;
34159
3.18k
        while (
34160
5.36k
            (_tmp_167_var = _tmp_167_rule(p))  // !STRING expression_without_invalid
34161
3.18k
        )
34162
2.18k
        {
34163
2.18k
            _res = _tmp_167_var;
34164
2.18k
            if (_n == _children_capacity) {
34165
400
                _children_capacity *= 2;
34166
400
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
34167
400
                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
400
                _children = _new_children;
34175
400
            }
34176
2.18k
            _children[_n++] = _res;
34177
2.18k
            _mark = p->mark;
34178
2.18k
        }
34179
3.18k
        p->mark = _mark;
34180
3.18k
        D(fprintf(stderr, "%*c%s _loop1_112[%d-%d]: %s failed!\n", p->level, ' ',
34181
3.18k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(!STRING expression_without_invalid)"));
34182
3.18k
    }
34183
3.18k
    if (_n == 0 || p->error_indicator) {
34184
2.60k
        PyMem_Free(_children);
34185
2.60k
        p->level--;
34186
2.60k
        return NULL;
34187
2.60k
    }
34188
581
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
34189
581
    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
2.48k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
34197
581
    PyMem_Free(_children);
34198
581
    p->level--;
34199
581
    return _seq;
34200
581
}
34201
34202
// _tmp_113: NAME STRING | SOFT_KEYWORD
34203
static void *
34204
_tmp_113_rule(Parser *p)
34205
331k
{
34206
331k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34207
2
        _Pypegen_stack_overflow(p);
34208
2
    }
34209
331k
    if (p->error_indicator) {
34210
2
        p->level--;
34211
2
        return NULL;
34212
2
    }
34213
331k
    void * _res = NULL;
34214
331k
    int _mark = p->mark;
34215
331k
    { // NAME STRING
34216
331k
        if (p->error_indicator) {
34217
0
            p->level--;
34218
0
            return NULL;
34219
0
        }
34220
331k
        D(fprintf(stderr, "%*c> _tmp_113[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME STRING"));
34221
331k
        expr_ty name_var;
34222
331k
        expr_ty string_var;
34223
331k
        if (
34224
331k
            (name_var = _PyPegen_name_token(p))  // NAME
34225
331k
            &&
34226
331k
            (string_var = _PyPegen_string_token(p))  // STRING
34227
331k
        )
34228
387
        {
34229
387
            D(fprintf(stderr, "%*c+ _tmp_113[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME STRING"));
34230
387
            _res = _PyPegen_dummy_name(p, name_var, string_var);
34231
387
            goto done;
34232
387
        }
34233
330k
        p->mark = _mark;
34234
330k
        D(fprintf(stderr, "%*c%s _tmp_113[%d-%d]: %s failed!\n", p->level, ' ',
34235
330k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME STRING"));
34236
330k
    }
34237
0
    { // SOFT_KEYWORD
34238
330k
        if (p->error_indicator) {
34239
32
            p->level--;
34240
32
            return NULL;
34241
32
        }
34242
330k
        D(fprintf(stderr, "%*c> _tmp_113[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD"));
34243
330k
        expr_ty soft_keyword_var;
34244
330k
        if (
34245
330k
            (soft_keyword_var = _PyPegen_soft_keyword_token(p))  // SOFT_KEYWORD
34246
330k
        )
34247
2.89k
        {
34248
2.89k
            D(fprintf(stderr, "%*c+ _tmp_113[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD"));
34249
2.89k
            _res = soft_keyword_var;
34250
2.89k
            goto done;
34251
2.89k
        }
34252
327k
        p->mark = _mark;
34253
327k
        D(fprintf(stderr, "%*c%s _tmp_113[%d-%d]: %s failed!\n", p->level, ' ',
34254
327k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "SOFT_KEYWORD"));
34255
327k
    }
34256
0
    _res = NULL;
34257
331k
  done:
34258
331k
    p->level--;
34259
331k
    return _res;
34260
327k
}
34261
34262
// _tmp_114: 'else' | ':'
34263
static void *
34264
_tmp_114_rule(Parser *p)
34265
561
{
34266
561
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34267
0
        _Pypegen_stack_overflow(p);
34268
0
    }
34269
561
    if (p->error_indicator) {
34270
0
        p->level--;
34271
0
        return NULL;
34272
0
    }
34273
561
    void * _res = NULL;
34274
561
    int _mark = p->mark;
34275
561
    { // 'else'
34276
561
        if (p->error_indicator) {
34277
0
            p->level--;
34278
0
            return NULL;
34279
0
        }
34280
561
        D(fprintf(stderr, "%*c> _tmp_114[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else'"));
34281
561
        Token * _keyword;
34282
561
        if (
34283
561
            (_keyword = _PyPegen_expect_token(p, 691))  // token='else'
34284
561
        )
34285
526
        {
34286
526
            D(fprintf(stderr, "%*c+ _tmp_114[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else'"));
34287
526
            _res = _keyword;
34288
526
            goto done;
34289
526
        }
34290
35
        p->mark = _mark;
34291
35
        D(fprintf(stderr, "%*c%s _tmp_114[%d-%d]: %s failed!\n", p->level, ' ',
34292
35
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else'"));
34293
35
    }
34294
0
    { // ':'
34295
35
        if (p->error_indicator) {
34296
0
            p->level--;
34297
0
            return NULL;
34298
0
        }
34299
35
        D(fprintf(stderr, "%*c> _tmp_114[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
34300
35
        Token * _literal;
34301
35
        if (
34302
35
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
34303
35
        )
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
27
        p->mark = _mark;
34310
27
        D(fprintf(stderr, "%*c%s _tmp_114[%d-%d]: %s failed!\n", p->level, ' ',
34311
27
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
34312
27
    }
34313
0
    _res = NULL;
34314
561
  done:
34315
561
    p->level--;
34316
561
    return _res;
34317
27
}
34318
34319
// _tmp_115: pass_stmt | break_stmt | continue_stmt
34320
static void *
34321
_tmp_115_rule(Parser *p)
34322
294k
{
34323
294k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34324
0
        _Pypegen_stack_overflow(p);
34325
0
    }
34326
294k
    if (p->error_indicator) {
34327
0
        p->level--;
34328
0
        return NULL;
34329
0
    }
34330
294k
    void * _res = NULL;
34331
294k
    int _mark = p->mark;
34332
294k
    { // pass_stmt
34333
294k
        if (p->error_indicator) {
34334
0
            p->level--;
34335
0
            return NULL;
34336
0
        }
34337
294k
        D(fprintf(stderr, "%*c> _tmp_115[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pass_stmt"));
34338
294k
        stmt_ty pass_stmt_var;
34339
294k
        if (
34340
294k
            (pass_stmt_var = pass_stmt_rule(p))  // pass_stmt
34341
294k
        )
34342
384
        {
34343
384
            D(fprintf(stderr, "%*c+ _tmp_115[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pass_stmt"));
34344
384
            _res = pass_stmt_var;
34345
384
            goto done;
34346
384
        }
34347
294k
        p->mark = _mark;
34348
294k
        D(fprintf(stderr, "%*c%s _tmp_115[%d-%d]: %s failed!\n", p->level, ' ',
34349
294k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pass_stmt"));
34350
294k
    }
34351
0
    { // break_stmt
34352
294k
        if (p->error_indicator) {
34353
0
            p->level--;
34354
0
            return NULL;
34355
0
        }
34356
294k
        D(fprintf(stderr, "%*c> _tmp_115[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "break_stmt"));
34357
294k
        stmt_ty break_stmt_var;
34358
294k
        if (
34359
294k
            (break_stmt_var = break_stmt_rule(p))  // break_stmt
34360
294k
        )
34361
561
        {
34362
561
            D(fprintf(stderr, "%*c+ _tmp_115[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "break_stmt"));
34363
561
            _res = break_stmt_var;
34364
561
            goto done;
34365
561
        }
34366
293k
        p->mark = _mark;
34367
293k
        D(fprintf(stderr, "%*c%s _tmp_115[%d-%d]: %s failed!\n", p->level, ' ',
34368
293k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "break_stmt"));
34369
293k
    }
34370
0
    { // continue_stmt
34371
293k
        if (p->error_indicator) {
34372
0
            p->level--;
34373
0
            return NULL;
34374
0
        }
34375
293k
        D(fprintf(stderr, "%*c> _tmp_115[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "continue_stmt"));
34376
293k
        stmt_ty continue_stmt_var;
34377
293k
        if (
34378
293k
            (continue_stmt_var = continue_stmt_rule(p))  // continue_stmt
34379
293k
        )
34380
389
        {
34381
389
            D(fprintf(stderr, "%*c+ _tmp_115[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "continue_stmt"));
34382
389
            _res = continue_stmt_var;
34383
389
            goto done;
34384
389
        }
34385
293k
        p->mark = _mark;
34386
293k
        D(fprintf(stderr, "%*c%s _tmp_115[%d-%d]: %s failed!\n", p->level, ' ',
34387
293k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "continue_stmt"));
34388
293k
    }
34389
0
    _res = NULL;
34390
294k
  done:
34391
294k
    p->level--;
34392
294k
    return _res;
34393
293k
}
34394
34395
// _tmp_116: '=' | ':='
34396
static void *
34397
_tmp_116_rule(Parser *p)
34398
113
{
34399
113
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34400
0
        _Pypegen_stack_overflow(p);
34401
0
    }
34402
113
    if (p->error_indicator) {
34403
0
        p->level--;
34404
0
        return NULL;
34405
0
    }
34406
113
    void * _res = NULL;
34407
113
    int _mark = p->mark;
34408
113
    { // '='
34409
113
        if (p->error_indicator) {
34410
0
            p->level--;
34411
0
            return NULL;
34412
0
        }
34413
113
        D(fprintf(stderr, "%*c> _tmp_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
34414
113
        Token * _literal;
34415
113
        if (
34416
113
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
34417
113
        )
34418
62
        {
34419
62
            D(fprintf(stderr, "%*c+ _tmp_116[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
34420
62
            _res = _literal;
34421
62
            goto done;
34422
62
        }
34423
51
        p->mark = _mark;
34424
51
        D(fprintf(stderr, "%*c%s _tmp_116[%d-%d]: %s failed!\n", p->level, ' ',
34425
51
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
34426
51
    }
34427
0
    { // ':='
34428
51
        if (p->error_indicator) {
34429
0
            p->level--;
34430
0
            return NULL;
34431
0
        }
34432
51
        D(fprintf(stderr, "%*c> _tmp_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':='"));
34433
51
        Token * _literal;
34434
51
        if (
34435
51
            (_literal = _PyPegen_expect_token(p, 53))  // token=':='
34436
51
        )
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
46
        p->mark = _mark;
34443
46
        D(fprintf(stderr, "%*c%s _tmp_116[%d-%d]: %s failed!\n", p->level, ' ',
34444
46
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':='"));
34445
46
    }
34446
0
    _res = NULL;
34447
113
  done:
34448
113
    p->level--;
34449
113
    return _res;
34450
46
}
34451
34452
// _tmp_117: list | tuple | genexp | 'True' | 'None' | 'False'
34453
static void *
34454
_tmp_117_rule(Parser *p)
34455
125k
{
34456
125k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34457
0
        _Pypegen_stack_overflow(p);
34458
0
    }
34459
125k
    if (p->error_indicator) {
34460
0
        p->level--;
34461
0
        return NULL;
34462
0
    }
34463
125k
    void * _res = NULL;
34464
125k
    int _mark = p->mark;
34465
125k
    { // list
34466
125k
        if (p->error_indicator) {
34467
0
            p->level--;
34468
0
            return NULL;
34469
0
        }
34470
125k
        D(fprintf(stderr, "%*c> _tmp_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
34471
125k
        expr_ty list_var;
34472
125k
        if (
34473
125k
            (list_var = list_rule(p))  // list
34474
125k
        )
34475
1.02k
        {
34476
1.02k
            D(fprintf(stderr, "%*c+ _tmp_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
34477
1.02k
            _res = list_var;
34478
1.02k
            goto done;
34479
1.02k
        }
34480
124k
        p->mark = _mark;
34481
124k
        D(fprintf(stderr, "%*c%s _tmp_117[%d-%d]: %s failed!\n", p->level, ' ',
34482
124k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
34483
124k
    }
34484
0
    { // tuple
34485
124k
        if (p->error_indicator) {
34486
199
            p->level--;
34487
199
            return NULL;
34488
199
        }
34489
124k
        D(fprintf(stderr, "%*c> _tmp_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
34490
124k
        expr_ty tuple_var;
34491
124k
        if (
34492
124k
            (tuple_var = tuple_rule(p))  // tuple
34493
124k
        )
34494
3.63k
        {
34495
3.63k
            D(fprintf(stderr, "%*c+ _tmp_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
34496
3.63k
            _res = tuple_var;
34497
3.63k
            goto done;
34498
3.63k
        }
34499
120k
        p->mark = _mark;
34500
120k
        D(fprintf(stderr, "%*c%s _tmp_117[%d-%d]: %s failed!\n", p->level, ' ',
34501
120k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
34502
120k
    }
34503
0
    { // genexp
34504
120k
        if (p->error_indicator) {
34505
75
            p->level--;
34506
75
            return NULL;
34507
75
        }
34508
120k
        D(fprintf(stderr, "%*c> _tmp_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp"));
34509
120k
        expr_ty genexp_var;
34510
120k
        if (
34511
120k
            (genexp_var = genexp_rule(p))  // genexp
34512
120k
        )
34513
418
        {
34514
418
            D(fprintf(stderr, "%*c+ _tmp_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp"));
34515
418
            _res = genexp_var;
34516
418
            goto done;
34517
418
        }
34518
120k
        p->mark = _mark;
34519
120k
        D(fprintf(stderr, "%*c%s _tmp_117[%d-%d]: %s failed!\n", p->level, ' ',
34520
120k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "genexp"));
34521
120k
    }
34522
0
    { // 'True'
34523
120k
        if (p->error_indicator) {
34524
266
            p->level--;
34525
266
            return NULL;
34526
266
        }
34527
119k
        D(fprintf(stderr, "%*c> _tmp_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
34528
119k
        Token * _keyword;
34529
119k
        if (
34530
119k
            (_keyword = _PyPegen_expect_token(p, 623))  // token='True'
34531
119k
        )
34532
414
        {
34533
414
            D(fprintf(stderr, "%*c+ _tmp_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
34534
414
            _res = _keyword;
34535
414
            goto done;
34536
414
        }
34537
119k
        p->mark = _mark;
34538
119k
        D(fprintf(stderr, "%*c%s _tmp_117[%d-%d]: %s failed!\n", p->level, ' ',
34539
119k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
34540
119k
    }
34541
0
    { // 'None'
34542
119k
        if (p->error_indicator) {
34543
0
            p->level--;
34544
0
            return NULL;
34545
0
        }
34546
119k
        D(fprintf(stderr, "%*c> _tmp_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
34547
119k
        Token * _keyword;
34548
119k
        if (
34549
119k
            (_keyword = _PyPegen_expect_token(p, 624))  // token='None'
34550
119k
        )
34551
483
        {
34552
483
            D(fprintf(stderr, "%*c+ _tmp_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
34553
483
            _res = _keyword;
34554
483
            goto done;
34555
483
        }
34556
119k
        p->mark = _mark;
34557
119k
        D(fprintf(stderr, "%*c%s _tmp_117[%d-%d]: %s failed!\n", p->level, ' ',
34558
119k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
34559
119k
    }
34560
0
    { // 'False'
34561
119k
        if (p->error_indicator) {
34562
0
            p->level--;
34563
0
            return NULL;
34564
0
        }
34565
119k
        D(fprintf(stderr, "%*c> _tmp_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
34566
119k
        Token * _keyword;
34567
119k
        if (
34568
119k
            (_keyword = _PyPegen_expect_token(p, 625))  // token='False'
34569
119k
        )
34570
261
        {
34571
261
            D(fprintf(stderr, "%*c+ _tmp_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
34572
261
            _res = _keyword;
34573
261
            goto done;
34574
261
        }
34575
118k
        p->mark = _mark;
34576
118k
        D(fprintf(stderr, "%*c%s _tmp_117[%d-%d]: %s failed!\n", p->level, ' ',
34577
118k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
34578
118k
    }
34579
0
    _res = NULL;
34580
125k
  done:
34581
125k
    p->level--;
34582
125k
    return _res;
34583
118k
}
34584
34585
// _loop0_118: star_named_expressions
34586
static asdl_seq *
34587
_loop0_118_rule(Parser *p)
34588
2.62k
{
34589
2.62k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34590
0
        _Pypegen_stack_overflow(p);
34591
0
    }
34592
2.62k
    if (p->error_indicator) {
34593
0
        p->level--;
34594
0
        return NULL;
34595
0
    }
34596
2.62k
    void *_res = NULL;
34597
2.62k
    int _mark = p->mark;
34598
2.62k
    void **_children = PyMem_Malloc(sizeof(void *));
34599
2.62k
    if (!_children) {
34600
0
        p->error_indicator = 1;
34601
0
        PyErr_NoMemory();
34602
0
        p->level--;
34603
0
        return NULL;
34604
0
    }
34605
2.62k
    Py_ssize_t _children_capacity = 1;
34606
2.62k
    Py_ssize_t _n = 0;
34607
2.62k
    { // star_named_expressions
34608
2.62k
        if (p->error_indicator) {
34609
0
            p->level--;
34610
0
            return NULL;
34611
0
        }
34612
2.62k
        D(fprintf(stderr, "%*c> _loop0_118[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expressions"));
34613
2.62k
        asdl_expr_seq* star_named_expressions_var;
34614
2.62k
        while (
34615
6.18k
            (star_named_expressions_var = star_named_expressions_rule(p))  // star_named_expressions
34616
2.62k
        )
34617
3.55k
        {
34618
3.55k
            _res = star_named_expressions_var;
34619
3.55k
            if (_n == _children_capacity) {
34620
236
                _children_capacity *= 2;
34621
236
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
34622
236
                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
236
                _children = _new_children;
34630
236
            }
34631
3.55k
            _children[_n++] = _res;
34632
3.55k
            _mark = p->mark;
34633
3.55k
        }
34634
2.62k
        p->mark = _mark;
34635
2.62k
        D(fprintf(stderr, "%*c%s _loop0_118[%d-%d]: %s failed!\n", p->level, ' ',
34636
2.62k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expressions"));
34637
2.62k
    }
34638
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
34639
2.62k
    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
6.18k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
34647
2.62k
    PyMem_Free(_children);
34648
2.62k
    p->level--;
34649
2.62k
    return _seq;
34650
2.62k
}
34651
34652
// _loop0_119: (star_targets '=')
34653
static asdl_seq *
34654
_loop0_119_rule(Parser *p)
34655
110k
{
34656
110k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34657
0
        _Pypegen_stack_overflow(p);
34658
0
    }
34659
110k
    if (p->error_indicator) {
34660
0
        p->level--;
34661
0
        return NULL;
34662
0
    }
34663
110k
    void *_res = NULL;
34664
110k
    int _mark = p->mark;
34665
110k
    void **_children = PyMem_Malloc(sizeof(void *));
34666
110k
    if (!_children) {
34667
0
        p->error_indicator = 1;
34668
0
        PyErr_NoMemory();
34669
0
        p->level--;
34670
0
        return NULL;
34671
0
    }
34672
110k
    Py_ssize_t _children_capacity = 1;
34673
110k
    Py_ssize_t _n = 0;
34674
110k
    { // (star_targets '=')
34675
110k
        if (p->error_indicator) {
34676
0
            p->level--;
34677
0
            return NULL;
34678
0
        }
34679
110k
        D(fprintf(stderr, "%*c> _loop0_119[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
34680
110k
        void *_tmp_154_var;
34681
110k
        while (
34682
111k
            (_tmp_154_var = _tmp_154_rule(p))  // star_targets '='
34683
110k
        )
34684
895
        {
34685
895
            _res = _tmp_154_var;
34686
895
            if (_n == _children_capacity) {
34687
141
                _children_capacity *= 2;
34688
141
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
34689
141
                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
141
                _children = _new_children;
34697
141
            }
34698
895
            _children[_n++] = _res;
34699
895
            _mark = p->mark;
34700
895
        }
34701
110k
        p->mark = _mark;
34702
110k
        D(fprintf(stderr, "%*c%s _loop0_119[%d-%d]: %s failed!\n", p->level, ' ',
34703
110k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
34704
110k
    }
34705
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
34706
110k
    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
111k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
34714
110k
    PyMem_Free(_children);
34715
110k
    p->level--;
34716
110k
    return _seq;
34717
110k
}
34718
34719
// _tmp_120: '[' | '(' | '{'
34720
static void *
34721
_tmp_120_rule(Parser *p)
34722
368k
{
34723
368k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34724
1
        _Pypegen_stack_overflow(p);
34725
1
    }
34726
368k
    if (p->error_indicator) {
34727
1
        p->level--;
34728
1
        return NULL;
34729
1
    }
34730
368k
    void * _res = NULL;
34731
368k
    int _mark = p->mark;
34732
368k
    { // '['
34733
368k
        if (p->error_indicator) {
34734
0
            p->level--;
34735
0
            return NULL;
34736
0
        }
34737
368k
        D(fprintf(stderr, "%*c> _tmp_120[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
34738
368k
        Token * _literal;
34739
368k
        if (
34740
368k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
34741
368k
        )
34742
18.2k
        {
34743
18.2k
            D(fprintf(stderr, "%*c+ _tmp_120[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
34744
18.2k
            _res = _literal;
34745
18.2k
            goto done;
34746
18.2k
        }
34747
350k
        p->mark = _mark;
34748
350k
        D(fprintf(stderr, "%*c%s _tmp_120[%d-%d]: %s failed!\n", p->level, ' ',
34749
350k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
34750
350k
    }
34751
0
    { // '('
34752
350k
        if (p->error_indicator) {
34753
0
            p->level--;
34754
0
            return NULL;
34755
0
        }
34756
350k
        D(fprintf(stderr, "%*c> _tmp_120[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
34757
350k
        Token * _literal;
34758
350k
        if (
34759
350k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
34760
350k
        )
34761
27.9k
        {
34762
27.9k
            D(fprintf(stderr, "%*c+ _tmp_120[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
34763
27.9k
            _res = _literal;
34764
27.9k
            goto done;
34765
27.9k
        }
34766
322k
        p->mark = _mark;
34767
322k
        D(fprintf(stderr, "%*c%s _tmp_120[%d-%d]: %s failed!\n", p->level, ' ',
34768
322k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
34769
322k
    }
34770
0
    { // '{'
34771
322k
        if (p->error_indicator) {
34772
0
            p->level--;
34773
0
            return NULL;
34774
0
        }
34775
322k
        D(fprintf(stderr, "%*c> _tmp_120[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'"));
34776
322k
        Token * _literal;
34777
322k
        if (
34778
322k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
34779
322k
        )
34780
6.73k
        {
34781
6.73k
            D(fprintf(stderr, "%*c+ _tmp_120[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'"));
34782
6.73k
            _res = _literal;
34783
6.73k
            goto done;
34784
6.73k
        }
34785
315k
        p->mark = _mark;
34786
315k
        D(fprintf(stderr, "%*c%s _tmp_120[%d-%d]: %s failed!\n", p->level, ' ',
34787
315k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'"));
34788
315k
    }
34789
0
    _res = NULL;
34790
368k
  done:
34791
368k
    p->level--;
34792
368k
    return _res;
34793
315k
}
34794
34795
// _tmp_121: '[' | '{'
34796
static void *
34797
_tmp_121_rule(Parser *p)
34798
733k
{
34799
733k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34800
0
        _Pypegen_stack_overflow(p);
34801
0
    }
34802
733k
    if (p->error_indicator) {
34803
0
        p->level--;
34804
0
        return NULL;
34805
0
    }
34806
733k
    void * _res = NULL;
34807
733k
    int _mark = p->mark;
34808
733k
    { // '['
34809
733k
        if (p->error_indicator) {
34810
0
            p->level--;
34811
0
            return NULL;
34812
0
        }
34813
733k
        D(fprintf(stderr, "%*c> _tmp_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
34814
733k
        Token * _literal;
34815
733k
        if (
34816
733k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
34817
733k
        )
34818
35.3k
        {
34819
35.3k
            D(fprintf(stderr, "%*c+ _tmp_121[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
34820
35.3k
            _res = _literal;
34821
35.3k
            goto done;
34822
35.3k
        }
34823
698k
        p->mark = _mark;
34824
698k
        D(fprintf(stderr, "%*c%s _tmp_121[%d-%d]: %s failed!\n", p->level, ' ',
34825
698k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
34826
698k
    }
34827
0
    { // '{'
34828
698k
        if (p->error_indicator) {
34829
0
            p->level--;
34830
0
            return NULL;
34831
0
        }
34832
698k
        D(fprintf(stderr, "%*c> _tmp_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'"));
34833
698k
        Token * _literal;
34834
698k
        if (
34835
698k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
34836
698k
        )
34837
11.6k
        {
34838
11.6k
            D(fprintf(stderr, "%*c+ _tmp_121[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'"));
34839
11.6k
            _res = _literal;
34840
11.6k
            goto done;
34841
11.6k
        }
34842
686k
        p->mark = _mark;
34843
686k
        D(fprintf(stderr, "%*c%s _tmp_121[%d-%d]: %s failed!\n", p->level, ' ',
34844
686k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'"));
34845
686k
    }
34846
0
    _res = NULL;
34847
733k
  done:
34848
733k
    p->level--;
34849
733k
    return _res;
34850
686k
}
34851
34852
// _tmp_122: slash_no_default | slash_with_default
34853
static void *
34854
_tmp_122_rule(Parser *p)
34855
13.8k
{
34856
13.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34857
0
        _Pypegen_stack_overflow(p);
34858
0
    }
34859
13.8k
    if (p->error_indicator) {
34860
0
        p->level--;
34861
0
        return NULL;
34862
0
    }
34863
13.8k
    void * _res = NULL;
34864
13.8k
    int _mark = p->mark;
34865
13.8k
    { // slash_no_default
34866
13.8k
        if (p->error_indicator) {
34867
0
            p->level--;
34868
0
            return NULL;
34869
0
        }
34870
13.8k
        D(fprintf(stderr, "%*c> _tmp_122[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_no_default"));
34871
13.8k
        asdl_arg_seq* slash_no_default_var;
34872
13.8k
        if (
34873
13.8k
            (slash_no_default_var = slash_no_default_rule(p))  // slash_no_default
34874
13.8k
        )
34875
594
        {
34876
594
            D(fprintf(stderr, "%*c+ _tmp_122[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_no_default"));
34877
594
            _res = slash_no_default_var;
34878
594
            goto done;
34879
594
        }
34880
13.3k
        p->mark = _mark;
34881
13.3k
        D(fprintf(stderr, "%*c%s _tmp_122[%d-%d]: %s failed!\n", p->level, ' ',
34882
13.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_no_default"));
34883
13.3k
    }
34884
0
    { // slash_with_default
34885
13.3k
        if (p->error_indicator) {
34886
2
            p->level--;
34887
2
            return NULL;
34888
2
        }
34889
13.3k
        D(fprintf(stderr, "%*c> _tmp_122[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
34890
13.3k
        SlashWithDefault* slash_with_default_var;
34891
13.3k
        if (
34892
13.3k
            (slash_with_default_var = slash_with_default_rule(p))  // slash_with_default
34893
13.3k
        )
34894
1.35k
        {
34895
1.35k
            D(fprintf(stderr, "%*c+ _tmp_122[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
34896
1.35k
            _res = slash_with_default_var;
34897
1.35k
            goto done;
34898
1.35k
        }
34899
11.9k
        p->mark = _mark;
34900
11.9k
        D(fprintf(stderr, "%*c%s _tmp_122[%d-%d]: %s failed!\n", p->level, ' ',
34901
11.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default"));
34902
11.9k
    }
34903
0
    _res = NULL;
34904
13.8k
  done:
34905
13.8k
    p->level--;
34906
13.8k
    return _res;
34907
11.9k
}
34908
34909
// _tmp_123: ',' | param_no_default
34910
static void *
34911
_tmp_123_rule(Parser *p)
34912
1.89k
{
34913
1.89k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34914
0
        _Pypegen_stack_overflow(p);
34915
0
    }
34916
1.89k
    if (p->error_indicator) {
34917
0
        p->level--;
34918
0
        return NULL;
34919
0
    }
34920
1.89k
    void * _res = NULL;
34921
1.89k
    int _mark = p->mark;
34922
1.89k
    { // ','
34923
1.89k
        if (p->error_indicator) {
34924
0
            p->level--;
34925
0
            return NULL;
34926
0
        }
34927
1.89k
        D(fprintf(stderr, "%*c> _tmp_123[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
34928
1.89k
        Token * _literal;
34929
1.89k
        if (
34930
1.89k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
34931
1.89k
        )
34932
472
        {
34933
472
            D(fprintf(stderr, "%*c+ _tmp_123[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
34934
472
            _res = _literal;
34935
472
            goto done;
34936
472
        }
34937
1.42k
        p->mark = _mark;
34938
1.42k
        D(fprintf(stderr, "%*c%s _tmp_123[%d-%d]: %s failed!\n", p->level, ' ',
34939
1.42k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
34940
1.42k
    }
34941
0
    { // param_no_default
34942
1.42k
        if (p->error_indicator) {
34943
0
            p->level--;
34944
0
            return NULL;
34945
0
        }
34946
1.42k
        D(fprintf(stderr, "%*c> _tmp_123[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
34947
1.42k
        arg_ty param_no_default_var;
34948
1.42k
        if (
34949
1.42k
            (param_no_default_var = param_no_default_rule(p))  // param_no_default
34950
1.42k
        )
34951
417
        {
34952
417
            D(fprintf(stderr, "%*c+ _tmp_123[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default"));
34953
417
            _res = param_no_default_var;
34954
417
            goto done;
34955
417
        }
34956
1.00k
        p->mark = _mark;
34957
1.00k
        D(fprintf(stderr, "%*c%s _tmp_123[%d-%d]: %s failed!\n", p->level, ' ',
34958
1.00k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
34959
1.00k
    }
34960
0
    _res = NULL;
34961
1.89k
  done:
34962
1.89k
    p->level--;
34963
1.89k
    return _res;
34964
1.00k
}
34965
34966
// _tmp_124: ')' | ','
34967
static void *
34968
_tmp_124_rule(Parser *p)
34969
33.5k
{
34970
33.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34971
0
        _Pypegen_stack_overflow(p);
34972
0
    }
34973
33.5k
    if (p->error_indicator) {
34974
0
        p->level--;
34975
0
        return NULL;
34976
0
    }
34977
33.5k
    void * _res = NULL;
34978
33.5k
    int _mark = p->mark;
34979
33.5k
    { // ')'
34980
33.5k
        if (p->error_indicator) {
34981
0
            p->level--;
34982
0
            return NULL;
34983
0
        }
34984
33.5k
        D(fprintf(stderr, "%*c> _tmp_124[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
34985
33.5k
        Token * _literal;
34986
33.5k
        if (
34987
33.5k
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
34988
33.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
33.5k
        p->mark = _mark;
34995
33.5k
        D(fprintf(stderr, "%*c%s _tmp_124[%d-%d]: %s failed!\n", p->level, ' ',
34996
33.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
34997
33.5k
    }
34998
0
    { // ','
34999
33.5k
        if (p->error_indicator) {
35000
0
            p->level--;
35001
0
            return NULL;
35002
0
        }
35003
33.5k
        D(fprintf(stderr, "%*c> _tmp_124[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
35004
33.5k
        Token * _literal;
35005
33.5k
        if (
35006
33.5k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35007
33.5k
        )
35008
8
        {
35009
8
            D(fprintf(stderr, "%*c+ _tmp_124[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
35010
8
            _res = _literal;
35011
8
            goto done;
35012
8
        }
35013
33.5k
        p->mark = _mark;
35014
33.5k
        D(fprintf(stderr, "%*c%s _tmp_124[%d-%d]: %s failed!\n", p->level, ' ',
35015
33.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
35016
33.5k
    }
35017
0
    _res = NULL;
35018
33.5k
  done:
35019
33.5k
    p->level--;
35020
33.5k
    return _res;
35021
33.5k
}
35022
35023
// _tmp_125: ')' | ',' (')' | '**')
35024
static void *
35025
_tmp_125_rule(Parser *p)
35026
1.89k
{
35027
1.89k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35028
0
        _Pypegen_stack_overflow(p);
35029
0
    }
35030
1.89k
    if (p->error_indicator) {
35031
0
        p->level--;
35032
0
        return NULL;
35033
0
    }
35034
1.89k
    void * _res = NULL;
35035
1.89k
    int _mark = p->mark;
35036
1.89k
    { // ')'
35037
1.89k
        if (p->error_indicator) {
35038
0
            p->level--;
35039
0
            return NULL;
35040
0
        }
35041
1.89k
        D(fprintf(stderr, "%*c> _tmp_125[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
35042
1.89k
        Token * _literal;
35043
1.89k
        if (
35044
1.89k
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
35045
1.89k
        )
35046
2
        {
35047
2
            D(fprintf(stderr, "%*c+ _tmp_125[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
35048
2
            _res = _literal;
35049
2
            goto done;
35050
2
        }
35051
1.89k
        p->mark = _mark;
35052
1.89k
        D(fprintf(stderr, "%*c%s _tmp_125[%d-%d]: %s failed!\n", p->level, ' ',
35053
1.89k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
35054
1.89k
    }
35055
0
    { // ',' (')' | '**')
35056
1.89k
        if (p->error_indicator) {
35057
0
            p->level--;
35058
0
            return NULL;
35059
0
        }
35060
1.89k
        D(fprintf(stderr, "%*c> _tmp_125[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')"));
35061
1.89k
        Token * _literal;
35062
1.89k
        void *_tmp_168_var;
35063
1.89k
        if (
35064
1.89k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35065
1.89k
            &&
35066
1.89k
            (_tmp_168_var = _tmp_168_rule(p))  // ')' | '**'
35067
1.89k
        )
35068
3
        {
35069
3
            D(fprintf(stderr, "%*c+ _tmp_125[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')"));
35070
3
            _res = _PyPegen_dummy_name(p, _literal, _tmp_168_var);
35071
3
            goto done;
35072
3
        }
35073
1.88k
        p->mark = _mark;
35074
1.88k
        D(fprintf(stderr, "%*c%s _tmp_125[%d-%d]: %s failed!\n", p->level, ' ',
35075
1.88k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (')' | '**')"));
35076
1.88k
    }
35077
0
    _res = NULL;
35078
1.89k
  done:
35079
1.89k
    p->level--;
35080
1.89k
    return _res;
35081
1.88k
}
35082
35083
// _tmp_126: param_no_default | ','
35084
static void *
35085
_tmp_126_rule(Parser *p)
35086
1.89k
{
35087
1.89k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35088
0
        _Pypegen_stack_overflow(p);
35089
0
    }
35090
1.89k
    if (p->error_indicator) {
35091
0
        p->level--;
35092
0
        return NULL;
35093
0
    }
35094
1.89k
    void * _res = NULL;
35095
1.89k
    int _mark = p->mark;
35096
1.89k
    { // param_no_default
35097
1.89k
        if (p->error_indicator) {
35098
0
            p->level--;
35099
0
            return NULL;
35100
0
        }
35101
1.89k
        D(fprintf(stderr, "%*c> _tmp_126[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
35102
1.89k
        arg_ty param_no_default_var;
35103
1.89k
        if (
35104
1.89k
            (param_no_default_var = param_no_default_rule(p))  // param_no_default
35105
1.89k
        )
35106
417
        {
35107
417
            D(fprintf(stderr, "%*c+ _tmp_126[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default"));
35108
417
            _res = param_no_default_var;
35109
417
            goto done;
35110
417
        }
35111
1.47k
        p->mark = _mark;
35112
1.47k
        D(fprintf(stderr, "%*c%s _tmp_126[%d-%d]: %s failed!\n", p->level, ' ',
35113
1.47k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
35114
1.47k
    }
35115
0
    { // ','
35116
1.47k
        if (p->error_indicator) {
35117
2
            p->level--;
35118
2
            return NULL;
35119
2
        }
35120
1.47k
        D(fprintf(stderr, "%*c> _tmp_126[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
35121
1.47k
        Token * _literal;
35122
1.47k
        if (
35123
1.47k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35124
1.47k
        )
35125
469
        {
35126
469
            D(fprintf(stderr, "%*c+ _tmp_126[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
35127
469
            _res = _literal;
35128
469
            goto done;
35129
469
        }
35130
1.00k
        p->mark = _mark;
35131
1.00k
        D(fprintf(stderr, "%*c%s _tmp_126[%d-%d]: %s failed!\n", p->level, ' ',
35132
1.00k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
35133
1.00k
    }
35134
0
    _res = NULL;
35135
1.89k
  done:
35136
1.89k
    p->level--;
35137
1.89k
    return _res;
35138
1.00k
}
35139
35140
// _tmp_127: '*' | '**' | '/'
35141
static void *
35142
_tmp_127_rule(Parser *p)
35143
491
{
35144
491
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35145
0
        _Pypegen_stack_overflow(p);
35146
0
    }
35147
491
    if (p->error_indicator) {
35148
0
        p->level--;
35149
0
        return NULL;
35150
0
    }
35151
491
    void * _res = NULL;
35152
491
    int _mark = p->mark;
35153
491
    { // '*'
35154
491
        if (p->error_indicator) {
35155
0
            p->level--;
35156
0
            return NULL;
35157
0
        }
35158
491
        D(fprintf(stderr, "%*c> _tmp_127[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
35159
491
        Token * _literal;
35160
491
        if (
35161
491
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
35162
491
        )
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
490
        p->mark = _mark;
35169
490
        D(fprintf(stderr, "%*c%s _tmp_127[%d-%d]: %s failed!\n", p->level, ' ',
35170
490
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
35171
490
    }
35172
0
    { // '**'
35173
490
        if (p->error_indicator) {
35174
0
            p->level--;
35175
0
            return NULL;
35176
0
        }
35177
490
        D(fprintf(stderr, "%*c> _tmp_127[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
35178
490
        Token * _literal;
35179
490
        if (
35180
490
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
35181
490
        )
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
489
        p->mark = _mark;
35188
489
        D(fprintf(stderr, "%*c%s _tmp_127[%d-%d]: %s failed!\n", p->level, ' ',
35189
489
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
35190
489
    }
35191
0
    { // '/'
35192
489
        if (p->error_indicator) {
35193
0
            p->level--;
35194
0
            return NULL;
35195
0
        }
35196
489
        D(fprintf(stderr, "%*c> _tmp_127[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/'"));
35197
489
        Token * _literal;
35198
489
        if (
35199
489
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
35200
489
        )
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
488
        p->mark = _mark;
35207
488
        D(fprintf(stderr, "%*c%s _tmp_127[%d-%d]: %s failed!\n", p->level, ' ',
35208
488
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'/'"));
35209
488
    }
35210
0
    _res = NULL;
35211
491
  done:
35212
491
    p->level--;
35213
491
    return _res;
35214
488
}
35215
35216
// _tmp_128: lambda_slash_no_default | lambda_slash_with_default
35217
static void *
35218
_tmp_128_rule(Parser *p)
35219
23.5k
{
35220
23.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35221
0
        _Pypegen_stack_overflow(p);
35222
0
    }
35223
23.5k
    if (p->error_indicator) {
35224
0
        p->level--;
35225
0
        return NULL;
35226
0
    }
35227
23.5k
    void * _res = NULL;
35228
23.5k
    int _mark = p->mark;
35229
23.5k
    { // lambda_slash_no_default
35230
23.5k
        if (p->error_indicator) {
35231
0
            p->level--;
35232
0
            return NULL;
35233
0
        }
35234
23.5k
        D(fprintf(stderr, "%*c> _tmp_128[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default"));
35235
23.5k
        asdl_arg_seq* lambda_slash_no_default_var;
35236
23.5k
        if (
35237
23.5k
            (lambda_slash_no_default_var = lambda_slash_no_default_rule(p))  // lambda_slash_no_default
35238
23.5k
        )
35239
1.07k
        {
35240
1.07k
            D(fprintf(stderr, "%*c+ _tmp_128[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default"));
35241
1.07k
            _res = lambda_slash_no_default_var;
35242
1.07k
            goto done;
35243
1.07k
        }
35244
22.5k
        p->mark = _mark;
35245
22.5k
        D(fprintf(stderr, "%*c%s _tmp_128[%d-%d]: %s failed!\n", p->level, ' ',
35246
22.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_no_default"));
35247
22.5k
    }
35248
0
    { // lambda_slash_with_default
35249
22.5k
        if (p->error_indicator) {
35250
3
            p->level--;
35251
3
            return NULL;
35252
3
        }
35253
22.5k
        D(fprintf(stderr, "%*c> _tmp_128[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
35254
22.5k
        SlashWithDefault* lambda_slash_with_default_var;
35255
22.5k
        if (
35256
22.5k
            (lambda_slash_with_default_var = lambda_slash_with_default_rule(p))  // lambda_slash_with_default
35257
22.5k
        )
35258
1.48k
        {
35259
1.48k
            D(fprintf(stderr, "%*c+ _tmp_128[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
35260
1.48k
            _res = lambda_slash_with_default_var;
35261
1.48k
            goto done;
35262
1.48k
        }
35263
21.0k
        p->mark = _mark;
35264
21.0k
        D(fprintf(stderr, "%*c%s _tmp_128[%d-%d]: %s failed!\n", p->level, ' ',
35265
21.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default"));
35266
21.0k
    }
35267
0
    _res = NULL;
35268
23.5k
  done:
35269
23.5k
    p->level--;
35270
23.5k
    return _res;
35271
21.0k
}
35272
35273
// _loop0_129: ',' lambda_param
35274
static asdl_seq *
35275
_loop0_129_rule(Parser *p)
35276
44
{
35277
44
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35278
0
        _Pypegen_stack_overflow(p);
35279
0
    }
35280
44
    if (p->error_indicator) {
35281
0
        p->level--;
35282
0
        return NULL;
35283
0
    }
35284
44
    void *_res = NULL;
35285
44
    int _mark = p->mark;
35286
44
    void **_children = PyMem_Malloc(sizeof(void *));
35287
44
    if (!_children) {
35288
0
        p->error_indicator = 1;
35289
0
        PyErr_NoMemory();
35290
0
        p->level--;
35291
0
        return NULL;
35292
0
    }
35293
44
    Py_ssize_t _children_capacity = 1;
35294
44
    Py_ssize_t _n = 0;
35295
44
    { // ',' lambda_param
35296
44
        if (p->error_indicator) {
35297
0
            p->level--;
35298
0
            return NULL;
35299
0
        }
35300
44
        D(fprintf(stderr, "%*c> _loop0_129[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' lambda_param"));
35301
44
        Token * _literal;
35302
44
        arg_ty elem;
35303
44
        while (
35304
240
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35305
240
            &&
35306
240
            (elem = lambda_param_rule(p))  // lambda_param
35307
44
        )
35308
196
        {
35309
196
            _res = elem;
35310
196
            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
196
            if (_n == _children_capacity) {
35317
77
                _children_capacity *= 2;
35318
77
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
35319
77
                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
77
                _children = _new_children;
35327
77
            }
35328
196
            _children[_n++] = _res;
35329
196
            _mark = p->mark;
35330
196
        }
35331
44
        p->mark = _mark;
35332
44
        D(fprintf(stderr, "%*c%s _loop0_129[%d-%d]: %s failed!\n", p->level, ' ',
35333
44
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' lambda_param"));
35334
44
    }
35335
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
35336
44
    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
240
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
35344
44
    PyMem_Free(_children);
35345
44
    p->level--;
35346
44
    return _seq;
35347
44
}
35348
35349
// _gather_130: lambda_param _loop0_129
35350
static asdl_seq *
35351
_gather_130_rule(Parser *p)
35352
58
{
35353
58
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35354
0
        _Pypegen_stack_overflow(p);
35355
0
    }
35356
58
    if (p->error_indicator) {
35357
0
        p->level--;
35358
0
        return NULL;
35359
0
    }
35360
58
    asdl_seq * _res = NULL;
35361
58
    int _mark = p->mark;
35362
58
    { // lambda_param _loop0_129
35363
58
        if (p->error_indicator) {
35364
0
            p->level--;
35365
0
            return NULL;
35366
0
        }
35367
58
        D(fprintf(stderr, "%*c> _gather_130[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param _loop0_129"));
35368
58
        arg_ty elem;
35369
58
        asdl_seq * seq;
35370
58
        if (
35371
58
            (elem = lambda_param_rule(p))  // lambda_param
35372
58
            &&
35373
58
            (seq = _loop0_129_rule(p))  // _loop0_129
35374
58
        )
35375
44
        {
35376
44
            D(fprintf(stderr, "%*c+ _gather_130[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param _loop0_129"));
35377
44
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
35378
44
            goto done;
35379
44
        }
35380
14
        p->mark = _mark;
35381
14
        D(fprintf(stderr, "%*c%s _gather_130[%d-%d]: %s failed!\n", p->level, ' ',
35382
14
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param _loop0_129"));
35383
14
    }
35384
0
    _res = NULL;
35385
58
  done:
35386
58
    p->level--;
35387
58
    return _res;
35388
14
}
35389
35390
// _tmp_131: ',' | lambda_param_no_default
35391
static void *
35392
_tmp_131_rule(Parser *p)
35393
4.10k
{
35394
4.10k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35395
0
        _Pypegen_stack_overflow(p);
35396
0
    }
35397
4.10k
    if (p->error_indicator) {
35398
0
        p->level--;
35399
0
        return NULL;
35400
0
    }
35401
4.10k
    void * _res = NULL;
35402
4.10k
    int _mark = p->mark;
35403
4.10k
    { // ','
35404
4.10k
        if (p->error_indicator) {
35405
0
            p->level--;
35406
0
            return NULL;
35407
0
        }
35408
4.10k
        D(fprintf(stderr, "%*c> _tmp_131[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
35409
4.10k
        Token * _literal;
35410
4.10k
        if (
35411
4.10k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35412
4.10k
        )
35413
1.22k
        {
35414
1.22k
            D(fprintf(stderr, "%*c+ _tmp_131[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
35415
1.22k
            _res = _literal;
35416
1.22k
            goto done;
35417
1.22k
        }
35418
2.87k
        p->mark = _mark;
35419
2.87k
        D(fprintf(stderr, "%*c%s _tmp_131[%d-%d]: %s failed!\n", p->level, ' ',
35420
2.87k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
35421
2.87k
    }
35422
0
    { // lambda_param_no_default
35423
2.87k
        if (p->error_indicator) {
35424
1
            p->level--;
35425
1
            return NULL;
35426
1
        }
35427
2.87k
        D(fprintf(stderr, "%*c> _tmp_131[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
35428
2.87k
        arg_ty lambda_param_no_default_var;
35429
2.87k
        if (
35430
2.87k
            (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
35431
2.87k
        )
35432
2.74k
        {
35433
2.74k
            D(fprintf(stderr, "%*c+ _tmp_131[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
35434
2.74k
            _res = lambda_param_no_default_var;
35435
2.74k
            goto done;
35436
2.74k
        }
35437
135
        p->mark = _mark;
35438
135
        D(fprintf(stderr, "%*c%s _tmp_131[%d-%d]: %s failed!\n", p->level, ' ',
35439
135
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
35440
135
    }
35441
0
    _res = NULL;
35442
4.10k
  done:
35443
4.10k
    p->level--;
35444
4.10k
    return _res;
35445
135
}
35446
35447
// _tmp_132: ':' | ',' (':' | '**')
35448
static void *
35449
_tmp_132_rule(Parser *p)
35450
3.99k
{
35451
3.99k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35452
0
        _Pypegen_stack_overflow(p);
35453
0
    }
35454
3.99k
    if (p->error_indicator) {
35455
0
        p->level--;
35456
0
        return NULL;
35457
0
    }
35458
3.99k
    void * _res = NULL;
35459
3.99k
    int _mark = p->mark;
35460
3.99k
    { // ':'
35461
3.99k
        if (p->error_indicator) {
35462
0
            p->level--;
35463
0
            return NULL;
35464
0
        }
35465
3.99k
        D(fprintf(stderr, "%*c> _tmp_132[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
35466
3.99k
        Token * _literal;
35467
3.99k
        if (
35468
3.99k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
35469
3.99k
        )
35470
2
        {
35471
2
            D(fprintf(stderr, "%*c+ _tmp_132[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
35472
2
            _res = _literal;
35473
2
            goto done;
35474
2
        }
35475
3.99k
        p->mark = _mark;
35476
3.99k
        D(fprintf(stderr, "%*c%s _tmp_132[%d-%d]: %s failed!\n", p->level, ' ',
35477
3.99k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
35478
3.99k
    }
35479
0
    { // ',' (':' | '**')
35480
3.99k
        if (p->error_indicator) {
35481
0
            p->level--;
35482
0
            return NULL;
35483
0
        }
35484
3.99k
        D(fprintf(stderr, "%*c> _tmp_132[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')"));
35485
3.99k
        Token * _literal;
35486
3.99k
        void *_tmp_169_var;
35487
3.99k
        if (
35488
3.99k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35489
3.99k
            &&
35490
3.99k
            (_tmp_169_var = _tmp_169_rule(p))  // ':' | '**'
35491
3.99k
        )
35492
3
        {
35493
3
            D(fprintf(stderr, "%*c+ _tmp_132[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')"));
35494
3
            _res = _PyPegen_dummy_name(p, _literal, _tmp_169_var);
35495
3
            goto done;
35496
3
        }
35497
3.98k
        p->mark = _mark;
35498
3.98k
        D(fprintf(stderr, "%*c%s _tmp_132[%d-%d]: %s failed!\n", p->level, ' ',
35499
3.98k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (':' | '**')"));
35500
3.98k
    }
35501
0
    _res = NULL;
35502
3.99k
  done:
35503
3.99k
    p->level--;
35504
3.99k
    return _res;
35505
3.98k
}
35506
35507
// _tmp_133: lambda_param_no_default | ','
35508
static void *
35509
_tmp_133_rule(Parser *p)
35510
4.03k
{
35511
4.03k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35512
0
        _Pypegen_stack_overflow(p);
35513
0
    }
35514
4.03k
    if (p->error_indicator) {
35515
0
        p->level--;
35516
0
        return NULL;
35517
0
    }
35518
4.03k
    void * _res = NULL;
35519
4.03k
    int _mark = p->mark;
35520
4.03k
    { // lambda_param_no_default
35521
4.03k
        if (p->error_indicator) {
35522
0
            p->level--;
35523
0
            return NULL;
35524
0
        }
35525
4.03k
        D(fprintf(stderr, "%*c> _tmp_133[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
35526
4.03k
        arg_ty lambda_param_no_default_var;
35527
4.03k
        if (
35528
4.03k
            (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
35529
4.03k
        )
35530
2.71k
        {
35531
2.71k
            D(fprintf(stderr, "%*c+ _tmp_133[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
35532
2.71k
            _res = lambda_param_no_default_var;
35533
2.71k
            goto done;
35534
2.71k
        }
35535
1.31k
        p->mark = _mark;
35536
1.31k
        D(fprintf(stderr, "%*c%s _tmp_133[%d-%d]: %s failed!\n", p->level, ' ',
35537
1.31k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
35538
1.31k
    }
35539
0
    { // ','
35540
1.31k
        if (p->error_indicator) {
35541
2
            p->level--;
35542
2
            return NULL;
35543
2
        }
35544
1.31k
        D(fprintf(stderr, "%*c> _tmp_133[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
35545
1.31k
        Token * _literal;
35546
1.31k
        if (
35547
1.31k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35548
1.31k
        )
35549
1.14k
        {
35550
1.14k
            D(fprintf(stderr, "%*c+ _tmp_133[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
35551
1.14k
            _res = _literal;
35552
1.14k
            goto done;
35553
1.14k
        }
35554
171
        p->mark = _mark;
35555
171
        D(fprintf(stderr, "%*c%s _tmp_133[%d-%d]: %s failed!\n", p->level, ' ',
35556
171
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
35557
171
    }
35558
0
    _res = NULL;
35559
4.03k
  done:
35560
4.03k
    p->level--;
35561
4.03k
    return _res;
35562
171
}
35563
35564
// _tmp_134: bitwise_or ((',' bitwise_or))* ','?
35565
static void *
35566
_tmp_134_rule(Parser *p)
35567
2.54k
{
35568
2.54k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35569
0
        _Pypegen_stack_overflow(p);
35570
0
    }
35571
2.54k
    if (p->error_indicator) {
35572
0
        p->level--;
35573
0
        return NULL;
35574
0
    }
35575
2.54k
    void * _res = NULL;
35576
2.54k
    int _mark = p->mark;
35577
2.54k
    { // bitwise_or ((',' bitwise_or))* ','?
35578
2.54k
        if (p->error_indicator) {
35579
0
            p->level--;
35580
0
            return NULL;
35581
0
        }
35582
2.54k
        D(fprintf(stderr, "%*c> _tmp_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or ((',' bitwise_or))* ','?"));
35583
2.54k
        asdl_seq * _loop0_170_var;
35584
2.54k
        void *_opt_var;
35585
2.54k
        UNUSED(_opt_var); // Silence compiler warnings
35586
2.54k
        expr_ty bitwise_or_var;
35587
2.54k
        if (
35588
2.54k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
35589
2.54k
            &&
35590
2.54k
            (_loop0_170_var = _loop0_170_rule(p))  // ((',' bitwise_or))*
35591
2.54k
            &&
35592
2.54k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
35593
2.54k
        )
35594
78
        {
35595
78
            D(fprintf(stderr, "%*c+ _tmp_134[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or ((',' bitwise_or))* ','?"));
35596
78
            _res = _PyPegen_dummy_name(p, bitwise_or_var, _loop0_170_var, _opt_var);
35597
78
            goto done;
35598
78
        }
35599
2.46k
        p->mark = _mark;
35600
2.46k
        D(fprintf(stderr, "%*c%s _tmp_134[%d-%d]: %s failed!\n", p->level, ' ',
35601
2.46k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or ((',' bitwise_or))* ','?"));
35602
2.46k
    }
35603
0
    _res = NULL;
35604
2.54k
  done:
35605
2.54k
    p->level--;
35606
2.54k
    return _res;
35607
2.46k
}
35608
35609
// _loop0_135: ',' dotted_name
35610
static asdl_seq *
35611
_loop0_135_rule(Parser *p)
35612
1.93k
{
35613
1.93k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35614
0
        _Pypegen_stack_overflow(p);
35615
0
    }
35616
1.93k
    if (p->error_indicator) {
35617
0
        p->level--;
35618
0
        return NULL;
35619
0
    }
35620
1.93k
    void *_res = NULL;
35621
1.93k
    int _mark = p->mark;
35622
1.93k
    void **_children = PyMem_Malloc(sizeof(void *));
35623
1.93k
    if (!_children) {
35624
0
        p->error_indicator = 1;
35625
0
        PyErr_NoMemory();
35626
0
        p->level--;
35627
0
        return NULL;
35628
0
    }
35629
1.93k
    Py_ssize_t _children_capacity = 1;
35630
1.93k
    Py_ssize_t _n = 0;
35631
1.93k
    { // ',' dotted_name
35632
1.93k
        if (p->error_indicator) {
35633
0
            p->level--;
35634
0
            return NULL;
35635
0
        }
35636
1.93k
        D(fprintf(stderr, "%*c> _loop0_135[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' dotted_name"));
35637
1.93k
        Token * _literal;
35638
1.93k
        expr_ty elem;
35639
1.93k
        while (
35640
5.68k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35641
5.68k
            &&
35642
5.68k
            (elem = dotted_name_rule(p))  // dotted_name
35643
1.93k
        )
35644
3.75k
        {
35645
3.75k
            _res = elem;
35646
3.75k
            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
3.75k
            if (_n == _children_capacity) {
35653
1.73k
                _children_capacity *= 2;
35654
1.73k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
35655
1.73k
                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
1.73k
                _children = _new_children;
35663
1.73k
            }
35664
3.75k
            _children[_n++] = _res;
35665
3.75k
            _mark = p->mark;
35666
3.75k
        }
35667
1.93k
        p->mark = _mark;
35668
1.93k
        D(fprintf(stderr, "%*c%s _loop0_135[%d-%d]: %s failed!\n", p->level, ' ',
35669
1.93k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' dotted_name"));
35670
1.93k
    }
35671
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
35672
1.93k
    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
5.68k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
35680
1.93k
    PyMem_Free(_children);
35681
1.93k
    p->level--;
35682
1.93k
    return _seq;
35683
1.93k
}
35684
35685
// _gather_136: dotted_name _loop0_135
35686
static asdl_seq *
35687
_gather_136_rule(Parser *p)
35688
1.93k
{
35689
1.93k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35690
0
        _Pypegen_stack_overflow(p);
35691
0
    }
35692
1.93k
    if (p->error_indicator) {
35693
0
        p->level--;
35694
0
        return NULL;
35695
0
    }
35696
1.93k
    asdl_seq * _res = NULL;
35697
1.93k
    int _mark = p->mark;
35698
1.93k
    { // dotted_name _loop0_135
35699
1.93k
        if (p->error_indicator) {
35700
0
            p->level--;
35701
0
            return NULL;
35702
0
        }
35703
1.93k
        D(fprintf(stderr, "%*c> _gather_136[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name _loop0_135"));
35704
1.93k
        expr_ty elem;
35705
1.93k
        asdl_seq * seq;
35706
1.93k
        if (
35707
1.93k
            (elem = dotted_name_rule(p))  // dotted_name
35708
1.93k
            &&
35709
1.93k
            (seq = _loop0_135_rule(p))  // _loop0_135
35710
1.93k
        )
35711
1.93k
        {
35712
1.93k
            D(fprintf(stderr, "%*c+ _gather_136[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name _loop0_135"));
35713
1.93k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
35714
1.93k
            goto done;
35715
1.93k
        }
35716
6
        p->mark = _mark;
35717
6
        D(fprintf(stderr, "%*c%s _gather_136[%d-%d]: %s failed!\n", p->level, ' ',
35718
6
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name _loop0_135"));
35719
6
    }
35720
0
    _res = NULL;
35721
1.93k
  done:
35722
1.93k
    p->level--;
35723
1.93k
    return _res;
35724
6
}
35725
35726
// _tmp_137: NAME (',' | ')' | NEWLINE)
35727
static void *
35728
_tmp_137_rule(Parser *p)
35729
561
{
35730
561
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35731
0
        _Pypegen_stack_overflow(p);
35732
0
    }
35733
561
    if (p->error_indicator) {
35734
0
        p->level--;
35735
0
        return NULL;
35736
0
    }
35737
561
    void * _res = NULL;
35738
561
    int _mark = p->mark;
35739
561
    { // NAME (',' | ')' | NEWLINE)
35740
561
        if (p->error_indicator) {
35741
0
            p->level--;
35742
0
            return NULL;
35743
0
        }
35744
561
        D(fprintf(stderr, "%*c> _tmp_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME (',' | ')' | NEWLINE)"));
35745
561
        void *_tmp_171_var;
35746
561
        expr_ty name_var;
35747
561
        if (
35748
561
            (name_var = _PyPegen_name_token(p))  // NAME
35749
561
            &&
35750
561
            (_tmp_171_var = _tmp_171_rule(p))  // ',' | ')' | NEWLINE
35751
561
        )
35752
550
        {
35753
550
            D(fprintf(stderr, "%*c+ _tmp_137[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME (',' | ')' | NEWLINE)"));
35754
550
            _res = _PyPegen_dummy_name(p, name_var, _tmp_171_var);
35755
550
            goto done;
35756
550
        }
35757
11
        p->mark = _mark;
35758
11
        D(fprintf(stderr, "%*c%s _tmp_137[%d-%d]: %s failed!\n", p->level, ' ',
35759
11
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME (',' | ')' | NEWLINE)"));
35760
11
    }
35761
0
    _res = NULL;
35762
561
  done:
35763
561
    p->level--;
35764
561
    return _res;
35765
11
}
35766
35767
// _loop0_138: ',' (expression ['as' star_target])
35768
static asdl_seq *
35769
_loop0_138_rule(Parser *p)
35770
2.48k
{
35771
2.48k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35772
0
        _Pypegen_stack_overflow(p);
35773
0
    }
35774
2.48k
    if (p->error_indicator) {
35775
0
        p->level--;
35776
0
        return NULL;
35777
0
    }
35778
2.48k
    void *_res = NULL;
35779
2.48k
    int _mark = p->mark;
35780
2.48k
    void **_children = PyMem_Malloc(sizeof(void *));
35781
2.48k
    if (!_children) {
35782
0
        p->error_indicator = 1;
35783
0
        PyErr_NoMemory();
35784
0
        p->level--;
35785
0
        return NULL;
35786
0
    }
35787
2.48k
    Py_ssize_t _children_capacity = 1;
35788
2.48k
    Py_ssize_t _n = 0;
35789
2.48k
    { // ',' (expression ['as' star_target])
35790
2.48k
        if (p->error_indicator) {
35791
0
            p->level--;
35792
0
            return NULL;
35793
0
        }
35794
2.48k
        D(fprintf(stderr, "%*c> _loop0_138[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expression ['as' star_target])"));
35795
2.48k
        Token * _literal;
35796
2.48k
        void *elem;
35797
2.48k
        while (
35798
4.61k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35799
4.61k
            &&
35800
4.61k
            (elem = _tmp_172_rule(p))  // expression ['as' star_target]
35801
2.48k
        )
35802
2.13k
        {
35803
2.13k
            _res = elem;
35804
2.13k
            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.13k
            if (_n == _children_capacity) {
35811
971
                _children_capacity *= 2;
35812
971
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
35813
971
                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
971
                _children = _new_children;
35821
971
            }
35822
2.13k
            _children[_n++] = _res;
35823
2.13k
            _mark = p->mark;
35824
2.13k
        }
35825
2.48k
        p->mark = _mark;
35826
2.48k
        D(fprintf(stderr, "%*c%s _loop0_138[%d-%d]: %s failed!\n", p->level, ' ',
35827
2.48k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expression ['as' star_target])"));
35828
2.48k
    }
35829
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
35830
2.48k
    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.61k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
35838
2.48k
    PyMem_Free(_children);
35839
2.48k
    p->level--;
35840
2.48k
    return _seq;
35841
2.48k
}
35842
35843
// _gather_139: (expression ['as' star_target]) _loop0_138
35844
static asdl_seq *
35845
_gather_139_rule(Parser *p)
35846
3.14k
{
35847
3.14k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35848
0
        _Pypegen_stack_overflow(p);
35849
0
    }
35850
3.14k
    if (p->error_indicator) {
35851
0
        p->level--;
35852
0
        return NULL;
35853
0
    }
35854
3.14k
    asdl_seq * _res = NULL;
35855
3.14k
    int _mark = p->mark;
35856
3.14k
    { // (expression ['as' star_target]) _loop0_138
35857
3.14k
        if (p->error_indicator) {
35858
0
            p->level--;
35859
0
            return NULL;
35860
0
        }
35861
3.14k
        D(fprintf(stderr, "%*c> _gather_139[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_138"));
35862
3.14k
        void *elem;
35863
3.14k
        asdl_seq * seq;
35864
3.14k
        if (
35865
3.14k
            (elem = _tmp_172_rule(p))  // expression ['as' star_target]
35866
3.14k
            &&
35867
3.14k
            (seq = _loop0_138_rule(p))  // _loop0_138
35868
3.14k
        )
35869
2.48k
        {
35870
2.48k
            D(fprintf(stderr, "%*c+ _gather_139[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_138"));
35871
2.48k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
35872
2.48k
            goto done;
35873
2.48k
        }
35874
662
        p->mark = _mark;
35875
662
        D(fprintf(stderr, "%*c%s _gather_139[%d-%d]: %s failed!\n", p->level, ' ',
35876
662
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expression ['as' star_target]) _loop0_138"));
35877
662
    }
35878
0
    _res = NULL;
35879
3.14k
  done:
35880
3.14k
    p->level--;
35881
3.14k
    return _res;
35882
662
}
35883
35884
// _loop0_140: ',' (expressions ['as' star_target])
35885
static asdl_seq *
35886
_loop0_140_rule(Parser *p)
35887
1.81k
{
35888
1.81k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35889
0
        _Pypegen_stack_overflow(p);
35890
0
    }
35891
1.81k
    if (p->error_indicator) {
35892
0
        p->level--;
35893
0
        return NULL;
35894
0
    }
35895
1.81k
    void *_res = NULL;
35896
1.81k
    int _mark = p->mark;
35897
1.81k
    void **_children = PyMem_Malloc(sizeof(void *));
35898
1.81k
    if (!_children) {
35899
0
        p->error_indicator = 1;
35900
0
        PyErr_NoMemory();
35901
0
        p->level--;
35902
0
        return NULL;
35903
0
    }
35904
1.81k
    Py_ssize_t _children_capacity = 1;
35905
1.81k
    Py_ssize_t _n = 0;
35906
1.81k
    { // ',' (expressions ['as' star_target])
35907
1.81k
        if (p->error_indicator) {
35908
0
            p->level--;
35909
0
            return NULL;
35910
0
        }
35911
1.81k
        D(fprintf(stderr, "%*c> _loop0_140[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expressions ['as' star_target])"));
35912
1.81k
        Token * _literal;
35913
1.81k
        void *elem;
35914
1.81k
        while (
35915
2.86k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35916
2.86k
            &&
35917
2.86k
            (elem = _tmp_173_rule(p))  // expressions ['as' star_target]
35918
1.81k
        )
35919
1.05k
        {
35920
1.05k
            _res = elem;
35921
1.05k
            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.05k
            if (_n == _children_capacity) {
35928
139
                _children_capacity *= 2;
35929
139
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
35930
139
                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
139
                _children = _new_children;
35938
139
            }
35939
1.05k
            _children[_n++] = _res;
35940
1.05k
            _mark = p->mark;
35941
1.05k
        }
35942
1.81k
        p->mark = _mark;
35943
1.81k
        D(fprintf(stderr, "%*c%s _loop0_140[%d-%d]: %s failed!\n", p->level, ' ',
35944
1.81k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expressions ['as' star_target])"));
35945
1.81k
    }
35946
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
35947
1.81k
    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.86k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
35955
1.81k
    PyMem_Free(_children);
35956
1.81k
    p->level--;
35957
1.81k
    return _seq;
35958
1.81k
}
35959
35960
// _gather_141: (expressions ['as' star_target]) _loop0_140
35961
static asdl_seq *
35962
_gather_141_rule(Parser *p)
35963
2.29k
{
35964
2.29k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35965
0
        _Pypegen_stack_overflow(p);
35966
0
    }
35967
2.29k
    if (p->error_indicator) {
35968
0
        p->level--;
35969
0
        return NULL;
35970
0
    }
35971
2.29k
    asdl_seq * _res = NULL;
35972
2.29k
    int _mark = p->mark;
35973
2.29k
    { // (expressions ['as' star_target]) _loop0_140
35974
2.29k
        if (p->error_indicator) {
35975
0
            p->level--;
35976
0
            return NULL;
35977
0
        }
35978
2.29k
        D(fprintf(stderr, "%*c> _gather_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_140"));
35979
2.29k
        void *elem;
35980
2.29k
        asdl_seq * seq;
35981
2.29k
        if (
35982
2.29k
            (elem = _tmp_173_rule(p))  // expressions ['as' star_target]
35983
2.29k
            &&
35984
2.29k
            (seq = _loop0_140_rule(p))  // _loop0_140
35985
2.29k
        )
35986
1.81k
        {
35987
1.81k
            D(fprintf(stderr, "%*c+ _gather_141[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_140"));
35988
1.81k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
35989
1.81k
            goto done;
35990
1.81k
        }
35991
480
        p->mark = _mark;
35992
480
        D(fprintf(stderr, "%*c%s _gather_141[%d-%d]: %s failed!\n", p->level, ' ',
35993
480
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expressions ['as' star_target]) _loop0_140"));
35994
480
    }
35995
0
    _res = NULL;
35996
2.29k
  done:
35997
2.29k
    p->level--;
35998
2.29k
    return _res;
35999
480
}
36000
36001
// _tmp_142: 'except' | 'finally'
36002
static void *
36003
_tmp_142_rule(Parser *p)
36004
2.25k
{
36005
2.25k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36006
0
        _Pypegen_stack_overflow(p);
36007
0
    }
36008
2.25k
    if (p->error_indicator) {
36009
0
        p->level--;
36010
0
        return NULL;
36011
0
    }
36012
2.25k
    void * _res = NULL;
36013
2.25k
    int _mark = p->mark;
36014
2.25k
    { // 'except'
36015
2.25k
        if (p->error_indicator) {
36016
0
            p->level--;
36017
0
            return NULL;
36018
0
        }
36019
2.25k
        D(fprintf(stderr, "%*c> _tmp_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except'"));
36020
2.25k
        Token * _keyword;
36021
2.25k
        if (
36022
2.25k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
36023
2.25k
        )
36024
1.78k
        {
36025
1.78k
            D(fprintf(stderr, "%*c+ _tmp_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except'"));
36026
1.78k
            _res = _keyword;
36027
1.78k
            goto done;
36028
1.78k
        }
36029
473
        p->mark = _mark;
36030
473
        D(fprintf(stderr, "%*c%s _tmp_142[%d-%d]: %s failed!\n", p->level, ' ',
36031
473
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except'"));
36032
473
    }
36033
0
    { // 'finally'
36034
473
        if (p->error_indicator) {
36035
1
            p->level--;
36036
1
            return NULL;
36037
1
        }
36038
472
        D(fprintf(stderr, "%*c> _tmp_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally'"));
36039
472
        Token * _keyword;
36040
472
        if (
36041
472
            (_keyword = _PyPegen_expect_token(p, 678))  // token='finally'
36042
472
        )
36043
437
        {
36044
437
            D(fprintf(stderr, "%*c+ _tmp_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally'"));
36045
437
            _res = _keyword;
36046
437
            goto done;
36047
437
        }
36048
35
        p->mark = _mark;
36049
35
        D(fprintf(stderr, "%*c%s _tmp_142[%d-%d]: %s failed!\n", p->level, ' ',
36050
35
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally'"));
36051
35
    }
36052
0
    _res = NULL;
36053
2.25k
  done:
36054
2.25k
    p->level--;
36055
2.25k
    return _res;
36056
35
}
36057
36058
// _loop0_143: block
36059
static asdl_seq *
36060
_loop0_143_rule(Parser *p)
36061
4.54k
{
36062
4.54k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36063
0
        _Pypegen_stack_overflow(p);
36064
0
    }
36065
4.54k
    if (p->error_indicator) {
36066
0
        p->level--;
36067
0
        return NULL;
36068
0
    }
36069
4.54k
    void *_res = NULL;
36070
4.54k
    int _mark = p->mark;
36071
4.54k
    void **_children = PyMem_Malloc(sizeof(void *));
36072
4.54k
    if (!_children) {
36073
0
        p->error_indicator = 1;
36074
0
        PyErr_NoMemory();
36075
0
        p->level--;
36076
0
        return NULL;
36077
0
    }
36078
4.54k
    Py_ssize_t _children_capacity = 1;
36079
4.54k
    Py_ssize_t _n = 0;
36080
4.54k
    { // block
36081
4.54k
        if (p->error_indicator) {
36082
0
            p->level--;
36083
0
            return NULL;
36084
0
        }
36085
4.54k
        D(fprintf(stderr, "%*c> _loop0_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "block"));
36086
4.54k
        asdl_stmt_seq* block_var;
36087
4.54k
        while (
36088
8.96k
            (block_var = block_rule(p))  // block
36089
4.54k
        )
36090
4.41k
        {
36091
4.41k
            _res = block_var;
36092
4.41k
            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
4.41k
            _children[_n++] = _res;
36105
4.41k
            _mark = p->mark;
36106
4.41k
        }
36107
4.54k
        p->mark = _mark;
36108
4.54k
        D(fprintf(stderr, "%*c%s _loop0_143[%d-%d]: %s failed!\n", p->level, ' ',
36109
4.54k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "block"));
36110
4.54k
    }
36111
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
36112
4.54k
    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
8.96k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
36120
4.54k
    PyMem_Free(_children);
36121
4.54k
    p->level--;
36122
4.54k
    return _seq;
36123
4.54k
}
36124
36125
// _tmp_144: expression ['as' NAME]
36126
static void *
36127
_tmp_144_rule(Parser *p)
36128
11
{
36129
11
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36130
0
        _Pypegen_stack_overflow(p);
36131
0
    }
36132
11
    if (p->error_indicator) {
36133
0
        p->level--;
36134
0
        return NULL;
36135
0
    }
36136
11
    void * _res = NULL;
36137
11
    int _mark = p->mark;
36138
11
    { // expression ['as' NAME]
36139
11
        if (p->error_indicator) {
36140
0
            p->level--;
36141
0
            return NULL;
36142
0
        }
36143
11
        D(fprintf(stderr, "%*c> _tmp_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' NAME]"));
36144
11
        void *_opt_var;
36145
11
        UNUSED(_opt_var); // Silence compiler warnings
36146
11
        expr_ty expression_var;
36147
11
        if (
36148
11
            (expression_var = expression_rule(p))  // expression
36149
11
            &&
36150
11
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
36151
11
        )
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
10
        p->mark = _mark;
36158
10
        D(fprintf(stderr, "%*c%s _tmp_144[%d-%d]: %s failed!\n", p->level, ' ',
36159
10
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' NAME]"));
36160
10
    }
36161
0
    _res = NULL;
36162
11
  done:
36163
11
    p->level--;
36164
11
    return _res;
36165
10
}
36166
36167
// _tmp_145: NEWLINE | ':'
36168
static void *
36169
_tmp_145_rule(Parser *p)
36170
56
{
36171
56
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36172
0
        _Pypegen_stack_overflow(p);
36173
0
    }
36174
56
    if (p->error_indicator) {
36175
0
        p->level--;
36176
0
        return NULL;
36177
0
    }
36178
56
    void * _res = NULL;
36179
56
    int _mark = p->mark;
36180
56
    { // NEWLINE
36181
56
        if (p->error_indicator) {
36182
0
            p->level--;
36183
0
            return NULL;
36184
0
        }
36185
56
        D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
36186
56
        Token * newline_var;
36187
56
        if (
36188
56
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
36189
56
        )
36190
1
        {
36191
1
            D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
36192
1
            _res = newline_var;
36193
1
            goto done;
36194
1
        }
36195
55
        p->mark = _mark;
36196
55
        D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ',
36197
55
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
36198
55
    }
36199
0
    { // ':'
36200
55
        if (p->error_indicator) {
36201
0
            p->level--;
36202
0
            return NULL;
36203
0
        }
36204
55
        D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
36205
55
        Token * _literal;
36206
55
        if (
36207
55
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
36208
55
        )
36209
2
        {
36210
2
            D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
36211
2
            _res = _literal;
36212
2
            goto done;
36213
2
        }
36214
53
        p->mark = _mark;
36215
53
        D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ',
36216
53
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
36217
53
    }
36218
0
    _res = NULL;
36219
56
  done:
36220
56
    p->level--;
36221
56
    return _res;
36222
53
}
36223
36224
// _tmp_146: positional_patterns ','
36225
static void *
36226
_tmp_146_rule(Parser *p)
36227
3.39k
{
36228
3.39k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36229
0
        _Pypegen_stack_overflow(p);
36230
0
    }
36231
3.39k
    if (p->error_indicator) {
36232
0
        p->level--;
36233
0
        return NULL;
36234
0
    }
36235
3.39k
    void * _res = NULL;
36236
3.39k
    int _mark = p->mark;
36237
3.39k
    { // positional_patterns ','
36238
3.39k
        if (p->error_indicator) {
36239
0
            p->level--;
36240
0
            return NULL;
36241
0
        }
36242
3.39k
        D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "positional_patterns ','"));
36243
3.39k
        Token * _literal;
36244
3.39k
        asdl_pattern_seq* positional_patterns_var;
36245
3.39k
        if (
36246
3.39k
            (positional_patterns_var = positional_patterns_rule(p))  // positional_patterns
36247
3.39k
            &&
36248
3.39k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
36249
3.39k
        )
36250
889
        {
36251
889
            D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "positional_patterns ','"));
36252
889
            _res = _PyPegen_dummy_name(p, positional_patterns_var, _literal);
36253
889
            goto done;
36254
889
        }
36255
2.50k
        p->mark = _mark;
36256
2.50k
        D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ',
36257
2.50k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "positional_patterns ','"));
36258
2.50k
    }
36259
0
    _res = NULL;
36260
3.39k
  done:
36261
3.39k
    p->level--;
36262
3.39k
    return _res;
36263
2.50k
}
36264
36265
// _tmp_147: '}' | ','
36266
static void *
36267
_tmp_147_rule(Parser *p)
36268
3.65k
{
36269
3.65k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36270
0
        _Pypegen_stack_overflow(p);
36271
0
    }
36272
3.65k
    if (p->error_indicator) {
36273
0
        p->level--;
36274
0
        return NULL;
36275
0
    }
36276
3.65k
    void * _res = NULL;
36277
3.65k
    int _mark = p->mark;
36278
3.65k
    { // '}'
36279
3.65k
        if (p->error_indicator) {
36280
0
            p->level--;
36281
0
            return NULL;
36282
0
        }
36283
3.65k
        D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'"));
36284
3.65k
        Token * _literal;
36285
3.65k
        if (
36286
3.65k
            (_literal = _PyPegen_expect_token(p, 26))  // token='}'
36287
3.65k
        )
36288
2
        {
36289
2
            D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'"));
36290
2
            _res = _literal;
36291
2
            goto done;
36292
2
        }
36293
3.65k
        p->mark = _mark;
36294
3.65k
        D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
36295
3.65k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'"));
36296
3.65k
    }
36297
0
    { // ','
36298
3.65k
        if (p->error_indicator) {
36299
0
            p->level--;
36300
0
            return NULL;
36301
0
        }
36302
3.65k
        D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
36303
3.65k
        Token * _literal;
36304
3.65k
        if (
36305
3.65k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
36306
3.65k
        )
36307
1
        {
36308
1
            D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
36309
1
            _res = _literal;
36310
1
            goto done;
36311
1
        }
36312
3.65k
        p->mark = _mark;
36313
3.65k
        D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
36314
3.65k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
36315
3.65k
    }
36316
0
    _res = NULL;
36317
3.65k
  done:
36318
3.65k
    p->level--;
36319
3.65k
    return _res;
36320
3.65k
}
36321
36322
// _tmp_148: '=' | '!' | ':' | '}'
36323
static void *
36324
_tmp_148_rule(Parser *p)
36325
276
{
36326
276
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36327
0
        _Pypegen_stack_overflow(p);
36328
0
    }
36329
276
    if (p->error_indicator) {
36330
0
        p->level--;
36331
0
        return NULL;
36332
0
    }
36333
276
    void * _res = NULL;
36334
276
    int _mark = p->mark;
36335
276
    { // '='
36336
276
        if (p->error_indicator) {
36337
0
            p->level--;
36338
0
            return NULL;
36339
0
        }
36340
276
        D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
36341
276
        Token * _literal;
36342
276
        if (
36343
276
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
36344
276
        )
36345
32
        {
36346
32
            D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
36347
32
            _res = _literal;
36348
32
            goto done;
36349
32
        }
36350
244
        p->mark = _mark;
36351
244
        D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ',
36352
244
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
36353
244
    }
36354
0
    { // '!'
36355
244
        if (p->error_indicator) {
36356
0
            p->level--;
36357
0
            return NULL;
36358
0
        }
36359
244
        D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!'"));
36360
244
        Token * _literal;
36361
244
        if (
36362
244
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
36363
244
        )
36364
37
        {
36365
37
            D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!'"));
36366
37
            _res = _literal;
36367
37
            goto done;
36368
37
        }
36369
207
        p->mark = _mark;
36370
207
        D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ',
36371
207
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!'"));
36372
207
    }
36373
0
    { // ':'
36374
207
        if (p->error_indicator) {
36375
0
            p->level--;
36376
0
            return NULL;
36377
0
        }
36378
207
        D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
36379
207
        Token * _literal;
36380
207
        if (
36381
207
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
36382
207
        )
36383
111
        {
36384
111
            D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
36385
111
            _res = _literal;
36386
111
            goto done;
36387
111
        }
36388
96
        p->mark = _mark;
36389
96
        D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ',
36390
96
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
36391
96
    }
36392
0
    { // '}'
36393
96
        if (p->error_indicator) {
36394
0
            p->level--;
36395
0
            return NULL;
36396
0
        }
36397
96
        D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'"));
36398
96
        Token * _literal;
36399
96
        if (
36400
96
            (_literal = _PyPegen_expect_token(p, 26))  // token='}'
36401
96
        )
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
96
        p->mark = _mark;
36408
96
        D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ',
36409
96
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'"));
36410
96
    }
36411
0
    _res = NULL;
36412
276
  done:
36413
276
    p->level--;
36414
276
    return _res;
36415
96
}
36416
36417
// _tmp_149: '!' | ':' | '}'
36418
static void *
36419
_tmp_149_rule(Parser *p)
36420
32
{
36421
32
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36422
0
        _Pypegen_stack_overflow(p);
36423
0
    }
36424
32
    if (p->error_indicator) {
36425
0
        p->level--;
36426
0
        return NULL;
36427
0
    }
36428
32
    void * _res = NULL;
36429
32
    int _mark = p->mark;
36430
32
    { // '!'
36431
32
        if (p->error_indicator) {
36432
0
            p->level--;
36433
0
            return NULL;
36434
0
        }
36435
32
        D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!'"));
36436
32
        Token * _literal;
36437
32
        if (
36438
32
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
36439
32
        )
36440
6
        {
36441
6
            D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!'"));
36442
6
            _res = _literal;
36443
6
            goto done;
36444
6
        }
36445
26
        p->mark = _mark;
36446
26
        D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ',
36447
26
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!'"));
36448
26
    }
36449
0
    { // ':'
36450
26
        if (p->error_indicator) {
36451
0
            p->level--;
36452
0
            return NULL;
36453
0
        }
36454
26
        D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
36455
26
        Token * _literal;
36456
26
        if (
36457
26
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
36458
26
        )
36459
11
        {
36460
11
            D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
36461
11
            _res = _literal;
36462
11
            goto done;
36463
11
        }
36464
15
        p->mark = _mark;
36465
15
        D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ',
36466
15
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
36467
15
    }
36468
0
    { // '}'
36469
15
        if (p->error_indicator) {
36470
0
            p->level--;
36471
0
            return NULL;
36472
0
        }
36473
15
        D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'"));
36474
15
        Token * _literal;
36475
15
        if (
36476
15
            (_literal = _PyPegen_expect_token(p, 26))  // token='}'
36477
15
        )
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
15
        p->mark = _mark;
36484
15
        D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ',
36485
15
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'"));
36486
15
    }
36487
0
    _res = NULL;
36488
32
  done:
36489
32
    p->level--;
36490
32
    return _res;
36491
15
}
36492
36493
// _tmp_150: '!' NAME
36494
static void *
36495
_tmp_150_rule(Parser *p)
36496
266
{
36497
266
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36498
0
        _Pypegen_stack_overflow(p);
36499
0
    }
36500
266
    if (p->error_indicator) {
36501
0
        p->level--;
36502
0
        return NULL;
36503
0
    }
36504
266
    void * _res = NULL;
36505
266
    int _mark = p->mark;
36506
266
    { // '!' NAME
36507
266
        if (p->error_indicator) {
36508
0
            p->level--;
36509
0
            return NULL;
36510
0
        }
36511
266
        D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' NAME"));
36512
266
        Token * _literal;
36513
266
        expr_ty name_var;
36514
266
        if (
36515
266
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
36516
266
            &&
36517
266
            (name_var = _PyPegen_name_token(p))  // NAME
36518
266
        )
36519
22
        {
36520
22
            D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!' NAME"));
36521
22
            _res = _PyPegen_dummy_name(p, _literal, name_var);
36522
22
            goto done;
36523
22
        }
36524
244
        p->mark = _mark;
36525
244
        D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ',
36526
244
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' NAME"));
36527
244
    }
36528
0
    _res = NULL;
36529
266
  done:
36530
266
    p->level--;
36531
266
    return _res;
36532
244
}
36533
36534
// _tmp_151: ':' | '}'
36535
static void *
36536
_tmp_151_rule(Parser *p)
36537
180
{
36538
180
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36539
0
        _Pypegen_stack_overflow(p);
36540
0
    }
36541
180
    if (p->error_indicator) {
36542
0
        p->level--;
36543
0
        return NULL;
36544
0
    }
36545
180
    void * _res = NULL;
36546
180
    int _mark = p->mark;
36547
180
    { // ':'
36548
180
        if (p->error_indicator) {
36549
0
            p->level--;
36550
0
            return NULL;
36551
0
        }
36552
180
        D(fprintf(stderr, "%*c> _tmp_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
36553
180
        Token * _literal;
36554
180
        if (
36555
180
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
36556
180
        )
36557
130
        {
36558
130
            D(fprintf(stderr, "%*c+ _tmp_151[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
36559
130
            _res = _literal;
36560
130
            goto done;
36561
130
        }
36562
50
        p->mark = _mark;
36563
50
        D(fprintf(stderr, "%*c%s _tmp_151[%d-%d]: %s failed!\n", p->level, ' ',
36564
50
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
36565
50
    }
36566
0
    { // '}'
36567
50
        if (p->error_indicator) {
36568
0
            p->level--;
36569
0
            return NULL;
36570
0
        }
36571
50
        D(fprintf(stderr, "%*c> _tmp_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'"));
36572
50
        Token * _literal;
36573
50
        if (
36574
50
            (_literal = _PyPegen_expect_token(p, 26))  // token='}'
36575
50
        )
36576
1
        {
36577
1
            D(fprintf(stderr, "%*c+ _tmp_151[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'"));
36578
1
            _res = _literal;
36579
1
            goto done;
36580
1
        }
36581
49
        p->mark = _mark;
36582
49
        D(fprintf(stderr, "%*c%s _tmp_151[%d-%d]: %s failed!\n", p->level, ' ',
36583
49
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'"));
36584
49
    }
36585
0
    _res = NULL;
36586
180
  done:
36587
180
    p->level--;
36588
180
    return _res;
36589
49
}
36590
36591
// _tmp_152: '+' | '-' | '*' | '/' | '%' | '//' | '@'
36592
static void *
36593
_tmp_152_rule(Parser *p)
36594
340k
{
36595
340k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36596
0
        _Pypegen_stack_overflow(p);
36597
0
    }
36598
340k
    if (p->error_indicator) {
36599
0
        p->level--;
36600
0
        return NULL;
36601
0
    }
36602
340k
    void * _res = NULL;
36603
340k
    int _mark = p->mark;
36604
340k
    { // '+'
36605
340k
        if (p->error_indicator) {
36606
0
            p->level--;
36607
0
            return NULL;
36608
0
        }
36609
340k
        D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+'"));
36610
340k
        Token * _literal;
36611
340k
        if (
36612
340k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
36613
340k
        )
36614
513
        {
36615
513
            D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+'"));
36616
513
            _res = _literal;
36617
513
            goto done;
36618
513
        }
36619
340k
        p->mark = _mark;
36620
340k
        D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
36621
340k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+'"));
36622
340k
    }
36623
0
    { // '-'
36624
340k
        if (p->error_indicator) {
36625
0
            p->level--;
36626
0
            return NULL;
36627
0
        }
36628
340k
        D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-'"));
36629
340k
        Token * _literal;
36630
340k
        if (
36631
340k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
36632
340k
        )
36633
652
        {
36634
652
            D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-'"));
36635
652
            _res = _literal;
36636
652
            goto done;
36637
652
        }
36638
339k
        p->mark = _mark;
36639
339k
        D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
36640
339k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-'"));
36641
339k
    }
36642
0
    { // '*'
36643
339k
        if (p->error_indicator) {
36644
0
            p->level--;
36645
0
            return NULL;
36646
0
        }
36647
339k
        D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
36648
339k
        Token * _literal;
36649
339k
        if (
36650
339k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
36651
339k
        )
36652
1.48k
        {
36653
1.48k
            D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
36654
1.48k
            _res = _literal;
36655
1.48k
            goto done;
36656
1.48k
        }
36657
338k
        p->mark = _mark;
36658
338k
        D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
36659
338k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
36660
338k
    }
36661
0
    { // '/'
36662
338k
        if (p->error_indicator) {
36663
0
            p->level--;
36664
0
            return NULL;
36665
0
        }
36666
338k
        D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/'"));
36667
338k
        Token * _literal;
36668
338k
        if (
36669
338k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
36670
338k
        )
36671
312
        {
36672
312
            D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'/'"));
36673
312
            _res = _literal;
36674
312
            goto done;
36675
312
        }
36676
337k
        p->mark = _mark;
36677
337k
        D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
36678
337k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'/'"));
36679
337k
    }
36680
0
    { // '%'
36681
337k
        if (p->error_indicator) {
36682
0
            p->level--;
36683
0
            return NULL;
36684
0
        }
36685
337k
        D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'%'"));
36686
337k
        Token * _literal;
36687
337k
        if (
36688
337k
            (_literal = _PyPegen_expect_token(p, 24))  // token='%'
36689
337k
        )
36690
344
        {
36691
344
            D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'%'"));
36692
344
            _res = _literal;
36693
344
            goto done;
36694
344
        }
36695
337k
        p->mark = _mark;
36696
337k
        D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
36697
337k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'%'"));
36698
337k
    }
36699
0
    { // '//'
36700
337k
        if (p->error_indicator) {
36701
0
            p->level--;
36702
0
            return NULL;
36703
0
        }
36704
337k
        D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'//'"));
36705
337k
        Token * _literal;
36706
337k
        if (
36707
337k
            (_literal = _PyPegen_expect_token(p, 47))  // token='//'
36708
337k
        )
36709
378
        {
36710
378
            D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'//'"));
36711
378
            _res = _literal;
36712
378
            goto done;
36713
378
        }
36714
337k
        p->mark = _mark;
36715
337k
        D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
36716
337k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'//'"));
36717
337k
    }
36718
0
    { // '@'
36719
337k
        if (p->error_indicator) {
36720
0
            p->level--;
36721
0
            return NULL;
36722
0
        }
36723
337k
        D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
36724
337k
        Token * _literal;
36725
337k
        if (
36726
337k
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
36727
337k
        )
36728
394
        {
36729
394
            D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
36730
394
            _res = _literal;
36731
394
            goto done;
36732
394
        }
36733
336k
        p->mark = _mark;
36734
336k
        D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
36735
336k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
36736
336k
    }
36737
0
    _res = NULL;
36738
340k
  done:
36739
340k
    p->level--;
36740
340k
    return _res;
36741
336k
}
36742
36743
// _tmp_153: '+' | '-' | '~'
36744
static void *
36745
_tmp_153_rule(Parser *p)
36746
480k
{
36747
480k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36748
1
        _Pypegen_stack_overflow(p);
36749
1
    }
36750
480k
    if (p->error_indicator) {
36751
1
        p->level--;
36752
1
        return NULL;
36753
1
    }
36754
480k
    void * _res = NULL;
36755
480k
    int _mark = p->mark;
36756
480k
    { // '+'
36757
480k
        if (p->error_indicator) {
36758
0
            p->level--;
36759
0
            return NULL;
36760
0
        }
36761
480k
        D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+'"));
36762
480k
        Token * _literal;
36763
480k
        if (
36764
480k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
36765
480k
        )
36766
12.6k
        {
36767
12.6k
            D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+'"));
36768
12.6k
            _res = _literal;
36769
12.6k
            goto done;
36770
12.6k
        }
36771
467k
        p->mark = _mark;
36772
467k
        D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ',
36773
467k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+'"));
36774
467k
    }
36775
0
    { // '-'
36776
467k
        if (p->error_indicator) {
36777
0
            p->level--;
36778
0
            return NULL;
36779
0
        }
36780
467k
        D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-'"));
36781
467k
        Token * _literal;
36782
467k
        if (
36783
467k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
36784
467k
        )
36785
9.41k
        {
36786
9.41k
            D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-'"));
36787
9.41k
            _res = _literal;
36788
9.41k
            goto done;
36789
9.41k
        }
36790
458k
        p->mark = _mark;
36791
458k
        D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ',
36792
458k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-'"));
36793
458k
    }
36794
0
    { // '~'
36795
458k
        if (p->error_indicator) {
36796
0
            p->level--;
36797
0
            return NULL;
36798
0
        }
36799
458k
        D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'~'"));
36800
458k
        Token * _literal;
36801
458k
        if (
36802
458k
            (_literal = _PyPegen_expect_token(p, 31))  // token='~'
36803
458k
        )
36804
944
        {
36805
944
            D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'~'"));
36806
944
            _res = _literal;
36807
944
            goto done;
36808
944
        }
36809
457k
        p->mark = _mark;
36810
457k
        D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ',
36811
457k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'~'"));
36812
457k
    }
36813
0
    _res = NULL;
36814
480k
  done:
36815
480k
    p->level--;
36816
480k
    return _res;
36817
457k
}
36818
36819
// _tmp_154: star_targets '='
36820
static void *
36821
_tmp_154_rule(Parser *p)
36822
501k
{
36823
501k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36824
0
        _Pypegen_stack_overflow(p);
36825
0
    }
36826
501k
    if (p->error_indicator) {
36827
0
        p->level--;
36828
0
        return NULL;
36829
0
    }
36830
501k
    void * _res = NULL;
36831
501k
    int _mark = p->mark;
36832
501k
    { // star_targets '='
36833
501k
        if (p->error_indicator) {
36834
0
            p->level--;
36835
0
            return NULL;
36836
0
        }
36837
501k
        D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
36838
501k
        Token * _literal;
36839
501k
        expr_ty z;
36840
501k
        if (
36841
501k
            (z = star_targets_rule(p))  // star_targets
36842
501k
            &&
36843
501k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
36844
501k
        )
36845
76.1k
        {
36846
76.1k
            D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
36847
76.1k
            _res = z;
36848
76.1k
            if (_res == NULL && PyErr_Occurred()) {
36849
0
                p->error_indicator = 1;
36850
0
                p->level--;
36851
0
                return NULL;
36852
0
            }
36853
76.1k
            goto done;
36854
76.1k
        }
36855
425k
        p->mark = _mark;
36856
425k
        D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
36857
425k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='"));
36858
425k
    }
36859
0
    _res = NULL;
36860
501k
  done:
36861
501k
    p->level--;
36862
501k
    return _res;
36863
425k
}
36864
36865
// _tmp_155: '.' | '...'
36866
static void *
36867
_tmp_155_rule(Parser *p)
36868
12.6k
{
36869
12.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36870
0
        _Pypegen_stack_overflow(p);
36871
0
    }
36872
12.6k
    if (p->error_indicator) {
36873
0
        p->level--;
36874
0
        return NULL;
36875
0
    }
36876
12.6k
    void * _res = NULL;
36877
12.6k
    int _mark = p->mark;
36878
12.6k
    { // '.'
36879
12.6k
        if (p->error_indicator) {
36880
0
            p->level--;
36881
0
            return NULL;
36882
0
        }
36883
12.6k
        D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
36884
12.6k
        Token * _literal;
36885
12.6k
        if (
36886
12.6k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
36887
12.6k
        )
36888
1.94k
        {
36889
1.94k
            D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
36890
1.94k
            _res = _literal;
36891
1.94k
            goto done;
36892
1.94k
        }
36893
10.6k
        p->mark = _mark;
36894
10.6k
        D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ',
36895
10.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
36896
10.6k
    }
36897
0
    { // '...'
36898
10.6k
        if (p->error_indicator) {
36899
11
            p->level--;
36900
11
            return NULL;
36901
11
        }
36902
10.6k
        D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
36903
10.6k
        Token * _literal;
36904
10.6k
        if (
36905
10.6k
            (_literal = _PyPegen_expect_token(p, 52))  // token='...'
36906
10.6k
        )
36907
3.82k
        {
36908
3.82k
            D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
36909
3.82k
            _res = _literal;
36910
3.82k
            goto done;
36911
3.82k
        }
36912
6.82k
        p->mark = _mark;
36913
6.82k
        D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ',
36914
6.82k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
36915
6.82k
    }
36916
0
    _res = NULL;
36917
12.5k
  done:
36918
12.5k
    p->level--;
36919
12.5k
    return _res;
36920
6.82k
}
36921
36922
// _tmp_156: '@' named_expression NEWLINE
36923
static void *
36924
_tmp_156_rule(Parser *p)
36925
49.7k
{
36926
49.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36927
0
        _Pypegen_stack_overflow(p);
36928
0
    }
36929
49.7k
    if (p->error_indicator) {
36930
0
        p->level--;
36931
0
        return NULL;
36932
0
    }
36933
49.7k
    void * _res = NULL;
36934
49.7k
    int _mark = p->mark;
36935
49.7k
    { // '@' named_expression NEWLINE
36936
49.7k
        if (p->error_indicator) {
36937
0
            p->level--;
36938
0
            return NULL;
36939
0
        }
36940
49.7k
        D(fprintf(stderr, "%*c> _tmp_156[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE"));
36941
49.7k
        Token * _literal;
36942
49.7k
        expr_ty f;
36943
49.7k
        Token * newline_var;
36944
49.7k
        if (
36945
49.7k
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
36946
49.7k
            &&
36947
49.7k
            (f = named_expression_rule(p))  // named_expression
36948
49.7k
            &&
36949
49.7k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
36950
49.7k
        )
36951
8.81k
        {
36952
8.81k
            D(fprintf(stderr, "%*c+ _tmp_156[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE"));
36953
8.81k
            _res = f;
36954
8.81k
            if (_res == NULL && PyErr_Occurred()) {
36955
0
                p->error_indicator = 1;
36956
0
                p->level--;
36957
0
                return NULL;
36958
0
            }
36959
8.81k
            goto done;
36960
8.81k
        }
36961
40.9k
        p->mark = _mark;
36962
40.9k
        D(fprintf(stderr, "%*c%s _tmp_156[%d-%d]: %s failed!\n", p->level, ' ',
36963
40.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@' named_expression NEWLINE"));
36964
40.9k
    }
36965
0
    _res = NULL;
36966
49.7k
  done:
36967
49.7k
    p->level--;
36968
49.7k
    return _res;
36969
40.9k
}
36970
36971
// _tmp_157: ',' star_expression
36972
static void *
36973
_tmp_157_rule(Parser *p)
36974
903k
{
36975
903k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36976
0
        _Pypegen_stack_overflow(p);
36977
0
    }
36978
903k
    if (p->error_indicator) {
36979
0
        p->level--;
36980
0
        return NULL;
36981
0
    }
36982
903k
    void * _res = NULL;
36983
903k
    int _mark = p->mark;
36984
903k
    { // ',' star_expression
36985
903k
        if (p->error_indicator) {
36986
0
            p->level--;
36987
0
            return NULL;
36988
0
        }
36989
903k
        D(fprintf(stderr, "%*c> _tmp_157[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression"));
36990
903k
        Token * _literal;
36991
903k
        expr_ty c;
36992
903k
        if (
36993
903k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
36994
903k
            &&
36995
903k
            (c = star_expression_rule(p))  // star_expression
36996
903k
        )
36997
541k
        {
36998
541k
            D(fprintf(stderr, "%*c+ _tmp_157[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression"));
36999
541k
            _res = c;
37000
541k
            if (_res == NULL && PyErr_Occurred()) {
37001
0
                p->error_indicator = 1;
37002
0
                p->level--;
37003
0
                return NULL;
37004
0
            }
37005
541k
            goto done;
37006
541k
        }
37007
361k
        p->mark = _mark;
37008
361k
        D(fprintf(stderr, "%*c%s _tmp_157[%d-%d]: %s failed!\n", p->level, ' ',
37009
361k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_expression"));
37010
361k
    }
37011
0
    _res = NULL;
37012
903k
  done:
37013
903k
    p->level--;
37014
903k
    return _res;
37015
361k
}
37016
37017
// _tmp_158: 'or' conjunction
37018
static void *
37019
_tmp_158_rule(Parser *p)
37020
914k
{
37021
914k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37022
0
        _Pypegen_stack_overflow(p);
37023
0
    }
37024
914k
    if (p->error_indicator) {
37025
0
        p->level--;
37026
0
        return NULL;
37027
0
    }
37028
914k
    void * _res = NULL;
37029
914k
    int _mark = p->mark;
37030
914k
    { // 'or' conjunction
37031
914k
        if (p->error_indicator) {
37032
0
            p->level--;
37033
0
            return NULL;
37034
0
        }
37035
914k
        D(fprintf(stderr, "%*c> _tmp_158[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction"));
37036
914k
        Token * _keyword;
37037
914k
        expr_ty c;
37038
914k
        if (
37039
914k
            (_keyword = _PyPegen_expect_token(p, 589))  // token='or'
37040
914k
            &&
37041
914k
            (c = conjunction_rule(p))  // conjunction
37042
914k
        )
37043
6.68k
        {
37044
6.68k
            D(fprintf(stderr, "%*c+ _tmp_158[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction"));
37045
6.68k
            _res = c;
37046
6.68k
            if (_res == NULL && PyErr_Occurred()) {
37047
0
                p->error_indicator = 1;
37048
0
                p->level--;
37049
0
                return NULL;
37050
0
            }
37051
6.68k
            goto done;
37052
6.68k
        }
37053
907k
        p->mark = _mark;
37054
907k
        D(fprintf(stderr, "%*c%s _tmp_158[%d-%d]: %s failed!\n", p->level, ' ',
37055
907k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'or' conjunction"));
37056
907k
    }
37057
0
    _res = NULL;
37058
914k
  done:
37059
914k
    p->level--;
37060
914k
    return _res;
37061
907k
}
37062
37063
// _tmp_159: 'and' inversion
37064
static void *
37065
_tmp_159_rule(Parser *p)
37066
919k
{
37067
919k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37068
0
        _Pypegen_stack_overflow(p);
37069
0
    }
37070
919k
    if (p->error_indicator) {
37071
0
        p->level--;
37072
0
        return NULL;
37073
0
    }
37074
919k
    void * _res = NULL;
37075
919k
    int _mark = p->mark;
37076
919k
    { // 'and' inversion
37077
919k
        if (p->error_indicator) {
37078
0
            p->level--;
37079
0
            return NULL;
37080
0
        }
37081
919k
        D(fprintf(stderr, "%*c> _tmp_159[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion"));
37082
919k
        Token * _keyword;
37083
919k
        expr_ty c;
37084
919k
        if (
37085
919k
            (_keyword = _PyPegen_expect_token(p, 590))  // token='and'
37086
919k
            &&
37087
919k
            (c = inversion_rule(p))  // inversion
37088
919k
        )
37089
5.86k
        {
37090
5.86k
            D(fprintf(stderr, "%*c+ _tmp_159[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion"));
37091
5.86k
            _res = c;
37092
5.86k
            if (_res == NULL && PyErr_Occurred()) {
37093
0
                p->error_indicator = 1;
37094
0
                p->level--;
37095
0
                return NULL;
37096
0
            }
37097
5.86k
            goto done;
37098
5.86k
        }
37099
914k
        p->mark = _mark;
37100
914k
        D(fprintf(stderr, "%*c%s _tmp_159[%d-%d]: %s failed!\n", p->level, ' ',
37101
914k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'and' inversion"));
37102
914k
    }
37103
0
    _res = NULL;
37104
919k
  done:
37105
919k
    p->level--;
37106
919k
    return _res;
37107
914k
}
37108
37109
// _tmp_160: slice | starred_expression
37110
static void *
37111
_tmp_160_rule(Parser *p)
37112
63.3k
{
37113
63.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37114
0
        _Pypegen_stack_overflow(p);
37115
0
    }
37116
63.3k
    if (p->error_indicator) {
37117
0
        p->level--;
37118
0
        return NULL;
37119
0
    }
37120
63.3k
    void * _res = NULL;
37121
63.3k
    int _mark = p->mark;
37122
63.3k
    { // slice
37123
63.3k
        if (p->error_indicator) {
37124
0
            p->level--;
37125
0
            return NULL;
37126
0
        }
37127
63.3k
        D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice"));
37128
63.3k
        expr_ty slice_var;
37129
63.3k
        if (
37130
63.3k
            (slice_var = slice_rule(p))  // slice
37131
63.3k
        )
37132
52.3k
        {
37133
52.3k
            D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice"));
37134
52.3k
            _res = slice_var;
37135
52.3k
            goto done;
37136
52.3k
        }
37137
10.9k
        p->mark = _mark;
37138
10.9k
        D(fprintf(stderr, "%*c%s _tmp_160[%d-%d]: %s failed!\n", p->level, ' ',
37139
10.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice"));
37140
10.9k
    }
37141
0
    { // starred_expression
37142
10.9k
        if (p->error_indicator) {
37143
371
            p->level--;
37144
371
            return NULL;
37145
371
        }
37146
10.6k
        D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
37147
10.6k
        expr_ty starred_expression_var;
37148
10.6k
        if (
37149
10.6k
            (starred_expression_var = starred_expression_rule(p))  // starred_expression
37150
10.6k
        )
37151
6.23k
        {
37152
6.23k
            D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
37153
6.23k
            _res = starred_expression_var;
37154
6.23k
            goto done;
37155
6.23k
        }
37156
4.39k
        p->mark = _mark;
37157
4.39k
        D(fprintf(stderr, "%*c%s _tmp_160[%d-%d]: %s failed!\n", p->level, ' ',
37158
4.39k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
37159
4.39k
    }
37160
0
    _res = NULL;
37161
62.9k
  done:
37162
62.9k
    p->level--;
37163
62.9k
    return _res;
37164
4.39k
}
37165
37166
// _tmp_161: fstring | string | tstring
37167
static void *
37168
_tmp_161_rule(Parser *p)
37169
233k
{
37170
233k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37171
1
        _Pypegen_stack_overflow(p);
37172
1
    }
37173
233k
    if (p->error_indicator) {
37174
7
        p->level--;
37175
7
        return NULL;
37176
7
    }
37177
233k
    void * _res = NULL;
37178
233k
    int _mark = p->mark;
37179
233k
    { // fstring
37180
233k
        if (p->error_indicator) {
37181
0
            p->level--;
37182
0
            return NULL;
37183
0
        }
37184
233k
        D(fprintf(stderr, "%*c> _tmp_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring"));
37185
233k
        expr_ty fstring_var;
37186
233k
        if (
37187
233k
            (fstring_var = fstring_rule(p))  // fstring
37188
233k
        )
37189
15.0k
        {
37190
15.0k
            D(fprintf(stderr, "%*c+ _tmp_161[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "fstring"));
37191
15.0k
            _res = fstring_var;
37192
15.0k
            goto done;
37193
15.0k
        }
37194
218k
        p->mark = _mark;
37195
218k
        D(fprintf(stderr, "%*c%s _tmp_161[%d-%d]: %s failed!\n", p->level, ' ',
37196
218k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring"));
37197
218k
    }
37198
0
    { // string
37199
218k
        if (p->error_indicator) {
37200
2.86k
            p->level--;
37201
2.86k
            return NULL;
37202
2.86k
        }
37203
215k
        D(fprintf(stderr, "%*c> _tmp_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "string"));
37204
215k
        expr_ty string_var;
37205
215k
        if (
37206
215k
            (string_var = string_rule(p))  // string
37207
215k
        )
37208
87.3k
        {
37209
87.3k
            D(fprintf(stderr, "%*c+ _tmp_161[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "string"));
37210
87.3k
            _res = string_var;
37211
87.3k
            goto done;
37212
87.3k
        }
37213
128k
        p->mark = _mark;
37214
128k
        D(fprintf(stderr, "%*c%s _tmp_161[%d-%d]: %s failed!\n", p->level, ' ',
37215
128k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "string"));
37216
128k
    }
37217
0
    { // tstring
37218
128k
        if (p->error_indicator) {
37219
248
            p->level--;
37220
248
            return NULL;
37221
248
        }
37222
128k
        D(fprintf(stderr, "%*c> _tmp_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring"));
37223
128k
        expr_ty tstring_var;
37224
128k
        if (
37225
128k
            (tstring_var = tstring_rule(p))  // tstring
37226
128k
        )
37227
4.75k
        {
37228
4.75k
            D(fprintf(stderr, "%*c+ _tmp_161[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tstring"));
37229
4.75k
            _res = tstring_var;
37230
4.75k
            goto done;
37231
4.75k
        }
37232
123k
        p->mark = _mark;
37233
123k
        D(fprintf(stderr, "%*c%s _tmp_161[%d-%d]: %s failed!\n", p->level, ' ',
37234
123k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring"));
37235
123k
    }
37236
0
    _res = NULL;
37237
230k
  done:
37238
230k
    p->level--;
37239
230k
    return _res;
37240
123k
}
37241
37242
// _tmp_162: 'if' disjunction
37243
static void *
37244
_tmp_162_rule(Parser *p)
37245
37.4k
{
37246
37.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37247
0
        _Pypegen_stack_overflow(p);
37248
0
    }
37249
37.4k
    if (p->error_indicator) {
37250
0
        p->level--;
37251
0
        return NULL;
37252
0
    }
37253
37.4k
    void * _res = NULL;
37254
37.4k
    int _mark = p->mark;
37255
37.4k
    { // 'if' disjunction
37256
37.4k
        if (p->error_indicator) {
37257
0
            p->level--;
37258
0
            return NULL;
37259
0
        }
37260
37.4k
        D(fprintf(stderr, "%*c> _tmp_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
37261
37.4k
        Token * _keyword;
37262
37.4k
        expr_ty z;
37263
37.4k
        if (
37264
37.4k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
37265
37.4k
            &&
37266
37.4k
            (z = disjunction_rule(p))  // disjunction
37267
37.4k
        )
37268
9.35k
        {
37269
9.35k
            D(fprintf(stderr, "%*c+ _tmp_162[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
37270
9.35k
            _res = z;
37271
9.35k
            if (_res == NULL && PyErr_Occurred()) {
37272
0
                p->error_indicator = 1;
37273
0
                p->level--;
37274
0
                return NULL;
37275
0
            }
37276
9.35k
            goto done;
37277
9.35k
        }
37278
28.1k
        p->mark = _mark;
37279
28.1k
        D(fprintf(stderr, "%*c%s _tmp_162[%d-%d]: %s failed!\n", p->level, ' ',
37280
28.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction"));
37281
28.1k
    }
37282
0
    _res = NULL;
37283
37.4k
  done:
37284
37.4k
    p->level--;
37285
37.4k
    return _res;
37286
28.1k
}
37287
37288
// _tmp_163: starred_expression | (assignment_expression | expression !':=') !'='
37289
static void *
37290
_tmp_163_rule(Parser *p)
37291
123k
{
37292
123k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37293
0
        _Pypegen_stack_overflow(p);
37294
0
    }
37295
123k
    if (p->error_indicator) {
37296
0
        p->level--;
37297
0
        return NULL;
37298
0
    }
37299
123k
    void * _res = NULL;
37300
123k
    int _mark = p->mark;
37301
123k
    { // starred_expression
37302
123k
        if (p->error_indicator) {
37303
0
            p->level--;
37304
0
            return NULL;
37305
0
        }
37306
123k
        D(fprintf(stderr, "%*c> _tmp_163[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
37307
123k
        expr_ty starred_expression_var;
37308
123k
        if (
37309
123k
            (starred_expression_var = starred_expression_rule(p))  // starred_expression
37310
123k
        )
37311
8.35k
        {
37312
8.35k
            D(fprintf(stderr, "%*c+ _tmp_163[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
37313
8.35k
            _res = starred_expression_var;
37314
8.35k
            goto done;
37315
8.35k
        }
37316
115k
        p->mark = _mark;
37317
115k
        D(fprintf(stderr, "%*c%s _tmp_163[%d-%d]: %s failed!\n", p->level, ' ',
37318
115k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
37319
115k
    }
37320
0
    { // (assignment_expression | expression !':=') !'='
37321
115k
        if (p->error_indicator) {
37322
480
            p->level--;
37323
480
            return NULL;
37324
480
        }
37325
114k
        D(fprintf(stderr, "%*c> _tmp_163[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
37326
114k
        void *_tmp_86_var;
37327
114k
        if (
37328
114k
            (_tmp_86_var = _tmp_86_rule(p))  // assignment_expression | expression !':='
37329
114k
            &&
37330
114k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22)  // token='='
37331
114k
        )
37332
48.3k
        {
37333
48.3k
            D(fprintf(stderr, "%*c+ _tmp_163[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
37334
48.3k
            _res = _tmp_86_var;
37335
48.3k
            goto done;
37336
48.3k
        }
37337
66.2k
        p->mark = _mark;
37338
66.2k
        D(fprintf(stderr, "%*c%s _tmp_163[%d-%d]: %s failed!\n", p->level, ' ',
37339
66.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
37340
66.2k
    }
37341
0
    _res = NULL;
37342
123k
  done:
37343
123k
    p->level--;
37344
123k
    return _res;
37345
66.2k
}
37346
37347
// _tmp_164: ',' star_target
37348
static void *
37349
_tmp_164_rule(Parser *p)
37350
206k
{
37351
206k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37352
0
        _Pypegen_stack_overflow(p);
37353
0
    }
37354
206k
    if (p->error_indicator) {
37355
0
        p->level--;
37356
0
        return NULL;
37357
0
    }
37358
206k
    void * _res = NULL;
37359
206k
    int _mark = p->mark;
37360
206k
    { // ',' star_target
37361
206k
        if (p->error_indicator) {
37362
0
            p->level--;
37363
0
            return NULL;
37364
0
        }
37365
206k
        D(fprintf(stderr, "%*c> _tmp_164[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
37366
206k
        Token * _literal;
37367
206k
        expr_ty c;
37368
206k
        if (
37369
206k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
37370
206k
            &&
37371
206k
            (c = star_target_rule(p))  // star_target
37372
206k
        )
37373
132k
        {
37374
132k
            D(fprintf(stderr, "%*c+ _tmp_164[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target"));
37375
132k
            _res = c;
37376
132k
            if (_res == NULL && PyErr_Occurred()) {
37377
0
                p->error_indicator = 1;
37378
0
                p->level--;
37379
0
                return NULL;
37380
0
            }
37381
132k
            goto done;
37382
132k
        }
37383
74.4k
        p->mark = _mark;
37384
74.4k
        D(fprintf(stderr, "%*c%s _tmp_164[%d-%d]: %s failed!\n", p->level, ' ',
37385
74.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
37386
74.4k
    }
37387
0
    _res = NULL;
37388
206k
  done:
37389
206k
    p->level--;
37390
206k
    return _res;
37391
74.4k
}
37392
37393
// _tmp_165:
37394
//     | ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs
37395
static void *
37396
_tmp_165_rule(Parser *p)
37397
8.21k
{
37398
8.21k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37399
0
        _Pypegen_stack_overflow(p);
37400
0
    }
37401
8.21k
    if (p->error_indicator) {
37402
0
        p->level--;
37403
0
        return NULL;
37404
0
    }
37405
8.21k
    void * _res = NULL;
37406
8.21k
    int _mark = p->mark;
37407
8.21k
    { // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs
37408
8.21k
        if (p->error_indicator) {
37409
0
            p->level--;
37410
0
            return NULL;
37411
0
        }
37412
8.21k
        D(fprintf(stderr, "%*c> _tmp_165[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs"));
37413
8.21k
        asdl_seq * _gather_88_var;
37414
8.21k
        Token * _literal;
37415
8.21k
        asdl_seq* kwargs_var;
37416
8.21k
        if (
37417
8.21k
            (_gather_88_var = _gather_88_rule(p))  // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+
37418
8.21k
            &&
37419
8.21k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
37420
8.21k
            &&
37421
8.21k
            (kwargs_var = kwargs_rule(p))  // kwargs
37422
8.21k
        )
37423
257
        {
37424
257
            D(fprintf(stderr, "%*c+ _tmp_165[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs"));
37425
257
            _res = _PyPegen_dummy_name(p, _gather_88_var, _literal, kwargs_var);
37426
257
            goto done;
37427
257
        }
37428
7.95k
        p->mark = _mark;
37429
7.95k
        D(fprintf(stderr, "%*c%s _tmp_165[%d-%d]: %s failed!\n", p->level, ' ',
37430
7.95k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs"));
37431
7.95k
    }
37432
0
    _res = NULL;
37433
8.21k
  done:
37434
8.21k
    p->level--;
37435
8.21k
    return _res;
37436
7.95k
}
37437
37438
// _tmp_166: starred_expression !'='
37439
static void *
37440
_tmp_166_rule(Parser *p)
37441
4.86k
{
37442
4.86k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37443
0
        _Pypegen_stack_overflow(p);
37444
0
    }
37445
4.86k
    if (p->error_indicator) {
37446
0
        p->level--;
37447
0
        return NULL;
37448
0
    }
37449
4.86k
    void * _res = NULL;
37450
4.86k
    int _mark = p->mark;
37451
4.86k
    { // starred_expression !'='
37452
4.86k
        if (p->error_indicator) {
37453
0
            p->level--;
37454
0
            return NULL;
37455
0
        }
37456
4.86k
        D(fprintf(stderr, "%*c> _tmp_166[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression !'='"));
37457
4.86k
        expr_ty starred_expression_var;
37458
4.86k
        if (
37459
4.86k
            (starred_expression_var = starred_expression_rule(p))  // starred_expression
37460
4.86k
            &&
37461
4.86k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22)  // token='='
37462
4.86k
        )
37463
3.16k
        {
37464
3.16k
            D(fprintf(stderr, "%*c+ _tmp_166[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression !'='"));
37465
3.16k
            _res = starred_expression_var;
37466
3.16k
            goto done;
37467
3.16k
        }
37468
1.70k
        p->mark = _mark;
37469
1.70k
        D(fprintf(stderr, "%*c%s _tmp_166[%d-%d]: %s failed!\n", p->level, ' ',
37470
1.70k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression !'='"));
37471
1.70k
    }
37472
0
    _res = NULL;
37473
4.86k
  done:
37474
4.86k
    p->level--;
37475
4.86k
    return _res;
37476
1.70k
}
37477
37478
// _tmp_167: !STRING expression_without_invalid
37479
static void *
37480
_tmp_167_rule(Parser *p)
37481
5.36k
{
37482
5.36k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37483
1
        _Pypegen_stack_overflow(p);
37484
1
    }
37485
5.36k
    if (p->error_indicator) {
37486
1
        p->level--;
37487
1
        return NULL;
37488
1
    }
37489
5.36k
    void * _res = NULL;
37490
5.36k
    int _mark = p->mark;
37491
5.36k
    { // !STRING expression_without_invalid
37492
5.36k
        if (p->error_indicator) {
37493
0
            p->level--;
37494
0
            return NULL;
37495
0
        }
37496
5.36k
        D(fprintf(stderr, "%*c> _tmp_167[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!STRING expression_without_invalid"));
37497
5.36k
        expr_ty expression_without_invalid_var;
37498
5.36k
        if (
37499
5.36k
            _PyPegen_lookahead(0, _PyPegen_string_token, p)
37500
5.36k
            &&
37501
5.36k
            (expression_without_invalid_var = expression_without_invalid_rule(p))  // expression_without_invalid
37502
5.36k
        )
37503
2.18k
        {
37504
2.18k
            D(fprintf(stderr, "%*c+ _tmp_167[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!STRING expression_without_invalid"));
37505
2.18k
            _res = expression_without_invalid_var;
37506
2.18k
            goto done;
37507
2.18k
        }
37508
3.18k
        p->mark = _mark;
37509
3.18k
        D(fprintf(stderr, "%*c%s _tmp_167[%d-%d]: %s failed!\n", p->level, ' ',
37510
3.18k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!STRING expression_without_invalid"));
37511
3.18k
    }
37512
0
    _res = NULL;
37513
5.36k
  done:
37514
5.36k
    p->level--;
37515
5.36k
    return _res;
37516
3.18k
}
37517
37518
// _tmp_168: ')' | '**'
37519
static void *
37520
_tmp_168_rule(Parser *p)
37521
471
{
37522
471
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37523
0
        _Pypegen_stack_overflow(p);
37524
0
    }
37525
471
    if (p->error_indicator) {
37526
0
        p->level--;
37527
0
        return NULL;
37528
0
    }
37529
471
    void * _res = NULL;
37530
471
    int _mark = p->mark;
37531
471
    { // ')'
37532
471
        if (p->error_indicator) {
37533
0
            p->level--;
37534
0
            return NULL;
37535
0
        }
37536
471
        D(fprintf(stderr, "%*c> _tmp_168[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
37537
471
        Token * _literal;
37538
471
        if (
37539
471
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
37540
471
        )
37541
2
        {
37542
2
            D(fprintf(stderr, "%*c+ _tmp_168[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
37543
2
            _res = _literal;
37544
2
            goto done;
37545
2
        }
37546
469
        p->mark = _mark;
37547
469
        D(fprintf(stderr, "%*c%s _tmp_168[%d-%d]: %s failed!\n", p->level, ' ',
37548
469
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
37549
469
    }
37550
0
    { // '**'
37551
469
        if (p->error_indicator) {
37552
0
            p->level--;
37553
0
            return NULL;
37554
0
        }
37555
469
        D(fprintf(stderr, "%*c> _tmp_168[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
37556
469
        Token * _literal;
37557
469
        if (
37558
469
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
37559
469
        )
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
468
        p->mark = _mark;
37566
468
        D(fprintf(stderr, "%*c%s _tmp_168[%d-%d]: %s failed!\n", p->level, ' ',
37567
468
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
37568
468
    }
37569
0
    _res = NULL;
37570
471
  done:
37571
471
    p->level--;
37572
471
    return _res;
37573
468
}
37574
37575
// _tmp_169: ':' | '**'
37576
static void *
37577
_tmp_169_rule(Parser *p)
37578
1.14k
{
37579
1.14k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37580
0
        _Pypegen_stack_overflow(p);
37581
0
    }
37582
1.14k
    if (p->error_indicator) {
37583
0
        p->level--;
37584
0
        return NULL;
37585
0
    }
37586
1.14k
    void * _res = NULL;
37587
1.14k
    int _mark = p->mark;
37588
1.14k
    { // ':'
37589
1.14k
        if (p->error_indicator) {
37590
0
            p->level--;
37591
0
            return NULL;
37592
0
        }
37593
1.14k
        D(fprintf(stderr, "%*c> _tmp_169[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
37594
1.14k
        Token * _literal;
37595
1.14k
        if (
37596
1.14k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
37597
1.14k
        )
37598
2
        {
37599
2
            D(fprintf(stderr, "%*c+ _tmp_169[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
37600
2
            _res = _literal;
37601
2
            goto done;
37602
2
        }
37603
1.14k
        p->mark = _mark;
37604
1.14k
        D(fprintf(stderr, "%*c%s _tmp_169[%d-%d]: %s failed!\n", p->level, ' ',
37605
1.14k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
37606
1.14k
    }
37607
0
    { // '**'
37608
1.14k
        if (p->error_indicator) {
37609
0
            p->level--;
37610
0
            return NULL;
37611
0
        }
37612
1.14k
        D(fprintf(stderr, "%*c> _tmp_169[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
37613
1.14k
        Token * _literal;
37614
1.14k
        if (
37615
1.14k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
37616
1.14k
        )
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
1.13k
        p->mark = _mark;
37623
1.13k
        D(fprintf(stderr, "%*c%s _tmp_169[%d-%d]: %s failed!\n", p->level, ' ',
37624
1.13k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
37625
1.13k
    }
37626
0
    _res = NULL;
37627
1.14k
  done:
37628
1.14k
    p->level--;
37629
1.14k
    return _res;
37630
1.13k
}
37631
37632
// _loop0_170: (',' bitwise_or)
37633
static asdl_seq *
37634
_loop0_170_rule(Parser *p)
37635
306
{
37636
306
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37637
0
        _Pypegen_stack_overflow(p);
37638
0
    }
37639
306
    if (p->error_indicator) {
37640
0
        p->level--;
37641
0
        return NULL;
37642
0
    }
37643
306
    void *_res = NULL;
37644
306
    int _mark = p->mark;
37645
306
    void **_children = PyMem_Malloc(sizeof(void *));
37646
306
    if (!_children) {
37647
0
        p->error_indicator = 1;
37648
0
        PyErr_NoMemory();
37649
0
        p->level--;
37650
0
        return NULL;
37651
0
    }
37652
306
    Py_ssize_t _children_capacity = 1;
37653
306
    Py_ssize_t _n = 0;
37654
306
    { // (',' bitwise_or)
37655
306
        if (p->error_indicator) {
37656
0
            p->level--;
37657
0
            return NULL;
37658
0
        }
37659
306
        D(fprintf(stderr, "%*c> _loop0_170[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' bitwise_or)"));
37660
306
        void *_tmp_174_var;
37661
306
        while (
37662
1.55k
            (_tmp_174_var = _tmp_174_rule(p))  // ',' bitwise_or
37663
306
        )
37664
1.24k
        {
37665
1.24k
            _res = _tmp_174_var;
37666
1.24k
            if (_n == _children_capacity) {
37667
432
                _children_capacity *= 2;
37668
432
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
37669
432
                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
432
                _children = _new_children;
37677
432
            }
37678
1.24k
            _children[_n++] = _res;
37679
1.24k
            _mark = p->mark;
37680
1.24k
        }
37681
306
        p->mark = _mark;
37682
306
        D(fprintf(stderr, "%*c%s _loop0_170[%d-%d]: %s failed!\n", p->level, ' ',
37683
306
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' bitwise_or)"));
37684
306
    }
37685
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
37686
306
    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.55k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
37694
306
    PyMem_Free(_children);
37695
306
    p->level--;
37696
306
    return _seq;
37697
306
}
37698
37699
// _tmp_171: ',' | ')' | NEWLINE
37700
static void *
37701
_tmp_171_rule(Parser *p)
37702
555
{
37703
555
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37704
0
        _Pypegen_stack_overflow(p);
37705
0
    }
37706
555
    if (p->error_indicator) {
37707
0
        p->level--;
37708
0
        return NULL;
37709
0
    }
37710
555
    void * _res = NULL;
37711
555
    int _mark = p->mark;
37712
555
    { // ','
37713
555
        if (p->error_indicator) {
37714
0
            p->level--;
37715
0
            return NULL;
37716
0
        }
37717
555
        D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
37718
555
        Token * _literal;
37719
555
        if (
37720
555
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
37721
555
        )
37722
539
        {
37723
539
            D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
37724
539
            _res = _literal;
37725
539
            goto done;
37726
539
        }
37727
16
        p->mark = _mark;
37728
16
        D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ',
37729
16
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
37730
16
    }
37731
0
    { // ')'
37732
16
        if (p->error_indicator) {
37733
0
            p->level--;
37734
0
            return NULL;
37735
0
        }
37736
16
        D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
37737
16
        Token * _literal;
37738
16
        if (
37739
16
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
37740
16
        )
37741
0
        {
37742
0
            D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
37743
0
            _res = _literal;
37744
0
            goto done;
37745
0
        }
37746
16
        p->mark = _mark;
37747
16
        D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ',
37748
16
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
37749
16
    }
37750
0
    { // NEWLINE
37751
16
        if (p->error_indicator) {
37752
0
            p->level--;
37753
0
            return NULL;
37754
0
        }
37755
16
        D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
37756
16
        Token * newline_var;
37757
16
        if (
37758
16
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
37759
16
        )
37760
11
        {
37761
11
            D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
37762
11
            _res = newline_var;
37763
11
            goto done;
37764
11
        }
37765
5
        p->mark = _mark;
37766
5
        D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ',
37767
5
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
37768
5
    }
37769
0
    _res = NULL;
37770
555
  done:
37771
555
    p->level--;
37772
555
    return _res;
37773
5
}
37774
37775
// _tmp_172: expression ['as' star_target]
37776
static void *
37777
_tmp_172_rule(Parser *p)
37778
5.29k
{
37779
5.29k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37780
0
        _Pypegen_stack_overflow(p);
37781
0
    }
37782
5.29k
    if (p->error_indicator) {
37783
0
        p->level--;
37784
0
        return NULL;
37785
0
    }
37786
5.29k
    void * _res = NULL;
37787
5.29k
    int _mark = p->mark;
37788
5.29k
    { // expression ['as' star_target]
37789
5.29k
        if (p->error_indicator) {
37790
0
            p->level--;
37791
0
            return NULL;
37792
0
        }
37793
5.29k
        D(fprintf(stderr, "%*c> _tmp_172[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
37794
5.29k
        void *_opt_var;
37795
5.29k
        UNUSED(_opt_var); // Silence compiler warnings
37796
5.29k
        expr_ty expression_var;
37797
5.29k
        if (
37798
5.29k
            (expression_var = expression_rule(p))  // expression
37799
5.29k
            &&
37800
5.29k
            (_opt_var = _tmp_175_rule(p), !p->error_indicator)  // ['as' star_target]
37801
5.29k
        )
37802
4.61k
        {
37803
4.61k
            D(fprintf(stderr, "%*c+ _tmp_172[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
37804
4.61k
            _res = _PyPegen_dummy_name(p, expression_var, _opt_var);
37805
4.61k
            goto done;
37806
4.61k
        }
37807
676
        p->mark = _mark;
37808
676
        D(fprintf(stderr, "%*c%s _tmp_172[%d-%d]: %s failed!\n", p->level, ' ',
37809
676
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]"));
37810
676
    }
37811
0
    _res = NULL;
37812
5.29k
  done:
37813
5.29k
    p->level--;
37814
5.29k
    return _res;
37815
676
}
37816
37817
// _tmp_173: expressions ['as' star_target]
37818
static void *
37819
_tmp_173_rule(Parser *p)
37820
3.36k
{
37821
3.36k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37822
0
        _Pypegen_stack_overflow(p);
37823
0
    }
37824
3.36k
    if (p->error_indicator) {
37825
0
        p->level--;
37826
0
        return NULL;
37827
0
    }
37828
3.36k
    void * _res = NULL;
37829
3.36k
    int _mark = p->mark;
37830
3.36k
    { // expressions ['as' star_target]
37831
3.36k
        if (p->error_indicator) {
37832
0
            p->level--;
37833
0
            return NULL;
37834
0
        }
37835
3.36k
        D(fprintf(stderr, "%*c> _tmp_173[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
37836
3.36k
        void *_opt_var;
37837
3.36k
        UNUSED(_opt_var); // Silence compiler warnings
37838
3.36k
        expr_ty expressions_var;
37839
3.36k
        if (
37840
3.36k
            (expressions_var = expressions_rule(p))  // expressions
37841
3.36k
            &&
37842
3.36k
            (_opt_var = _tmp_175_rule(p), !p->error_indicator)  // ['as' star_target]
37843
3.36k
        )
37844
2.86k
        {
37845
2.86k
            D(fprintf(stderr, "%*c+ _tmp_173[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
37846
2.86k
            _res = _PyPegen_dummy_name(p, expressions_var, _opt_var);
37847
2.86k
            goto done;
37848
2.86k
        }
37849
492
        p->mark = _mark;
37850
492
        D(fprintf(stderr, "%*c%s _tmp_173[%d-%d]: %s failed!\n", p->level, ' ',
37851
492
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]"));
37852
492
    }
37853
0
    _res = NULL;
37854
3.36k
  done:
37855
3.36k
    p->level--;
37856
3.36k
    return _res;
37857
492
}
37858
37859
// _tmp_174: ',' bitwise_or
37860
static void *
37861
_tmp_174_rule(Parser *p)
37862
1.55k
{
37863
1.55k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37864
0
        _Pypegen_stack_overflow(p);
37865
0
    }
37866
1.55k
    if (p->error_indicator) {
37867
0
        p->level--;
37868
0
        return NULL;
37869
0
    }
37870
1.55k
    void * _res = NULL;
37871
1.55k
    int _mark = p->mark;
37872
1.55k
    { // ',' bitwise_or
37873
1.55k
        if (p->error_indicator) {
37874
0
            p->level--;
37875
0
            return NULL;
37876
0
        }
37877
1.55k
        D(fprintf(stderr, "%*c> _tmp_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' bitwise_or"));
37878
1.55k
        Token * _literal;
37879
1.55k
        expr_ty bitwise_or_var;
37880
1.55k
        if (
37881
1.55k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
37882
1.55k
            &&
37883
1.55k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
37884
1.55k
        )
37885
1.24k
        {
37886
1.24k
            D(fprintf(stderr, "%*c+ _tmp_174[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' bitwise_or"));
37887
1.24k
            _res = _PyPegen_dummy_name(p, _literal, bitwise_or_var);
37888
1.24k
            goto done;
37889
1.24k
        }
37890
306
        p->mark = _mark;
37891
306
        D(fprintf(stderr, "%*c%s _tmp_174[%d-%d]: %s failed!\n", p->level, ' ',
37892
306
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' bitwise_or"));
37893
306
    }
37894
0
    _res = NULL;
37895
1.55k
  done:
37896
1.55k
    p->level--;
37897
1.55k
    return _res;
37898
306
}
37899
37900
// _tmp_175: 'as' star_target
37901
static void *
37902
_tmp_175_rule(Parser *p)
37903
7.48k
{
37904
7.48k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37905
0
        _Pypegen_stack_overflow(p);
37906
0
    }
37907
7.48k
    if (p->error_indicator) {
37908
0
        p->level--;
37909
0
        return NULL;
37910
0
    }
37911
7.48k
    void * _res = NULL;
37912
7.48k
    int _mark = p->mark;
37913
7.48k
    { // 'as' star_target
37914
7.48k
        if (p->error_indicator) {
37915
0
            p->level--;
37916
0
            return NULL;
37917
0
        }
37918
7.48k
        D(fprintf(stderr, "%*c> _tmp_175[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
37919
7.48k
        Token * _keyword;
37920
7.48k
        expr_ty star_target_var;
37921
7.48k
        if (
37922
7.48k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
37923
7.48k
            &&
37924
7.48k
            (star_target_var = star_target_rule(p))  // star_target
37925
7.48k
        )
37926
877
        {
37927
877
            D(fprintf(stderr, "%*c+ _tmp_175[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
37928
877
            _res = _PyPegen_dummy_name(p, _keyword, star_target_var);
37929
877
            goto done;
37930
877
        }
37931
6.60k
        p->mark = _mark;
37932
6.60k
        D(fprintf(stderr, "%*c%s _tmp_175[%d-%d]: %s failed!\n", p->level, ' ',
37933
6.60k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target"));
37934
6.60k
    }
37935
0
    _res = NULL;
37936
7.48k
  done:
37937
7.48k
    p->level--;
37938
7.48k
    return _res;
37939
6.60k
}
37940
37941
void *
37942
_PyPegen_parse(Parser *p)
37943
37.5k
{
37944
    // Initialize keywords
37945
37.5k
    p->keywords = reserved_keywords;
37946
37.5k
    p->n_keyword_lists = n_keyword_lists;
37947
37.5k
    p->soft_keywords = soft_keywords;
37948
37949
    // Run parser
37950
37.5k
    void *result = NULL;
37951
37.5k
    if (p->start_rule == Py_file_input) {
37952
20.6k
        result = file_rule(p);
37953
20.6k
    } else if (p->start_rule == Py_single_input) {
37954
10.9k
        result = interactive_rule(p);
37955
10.9k
    } else if (p->start_rule == Py_eval_input) {
37956
5.99k
        result = eval_rule(p);
37957
5.99k
    } else if (p->start_rule == Py_func_type_input) {
37958
0
        result = func_type_rule(p);
37959
0
    }
37960
37961
37.5k
    return result;
37962
37.5k
}