Coverage Report

Created: 2025-08-29 06:15

/src/cpython/Parser/parser.c
Line
Count
Source (jump to first uncovered line)
1
// @generated by pegen from python.gram
2
#include "pegen.h"
3
4
#if defined(Py_DEBUG) && defined(Py_BUILD_CORE)
5
#  define D(x) if (p->debug) { x; }
6
#else
7
#  define D(x)
8
#endif
9
10
#ifdef __wasi__
11
#  ifdef Py_DEBUG
12
#    define MAXSTACK 1000
13
#  else
14
#    define MAXSTACK 4000
15
#  endif
16
#else
17
170M
#  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
423k
#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
60.9k
#define dotted_name_type 1032  // Left-recursive
120
138k
#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
324k
#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
168k
#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
52.4k
#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
18.9k
#define type_param_type 1104
192
#define type_param_bound_type 1105
193
#define type_param_default_type 1106
194
#define type_param_starred_default_type 1107
195
#define expressions_type 1108
196
2.39M
#define expression_type 1109
197
#define yield_expr_type 1110
198
#define star_expressions_type 1111
199
1.41M
#define star_expression_type 1112
200
#define star_named_expressions_type 1113
201
#define star_named_expression_type 1114
202
#define assignment_expression_type 1115
203
#define named_expression_type 1116
204
2.69M
#define disjunction_type 1117
205
2.01M
#define conjunction_type 1118
206
2.06M
#define inversion_type 1119
207
#define comparison_type 1120
208
#define compare_op_bitwise_or_pair_type 1121
209
#define eq_bitwise_or_type 1122
210
#define noteq_bitwise_or_type 1123
211
#define lte_bitwise_or_type 1124
212
#define lt_bitwise_or_type 1125
213
#define gte_bitwise_or_type 1126
214
#define gt_bitwise_or_type 1127
215
#define notin_bitwise_or_type 1128
216
#define in_bitwise_or_type 1129
217
#define isnot_bitwise_or_type 1130
218
#define is_bitwise_or_type 1131
219
3.82M
#define bitwise_or_type 1132  // Left-recursive
220
3.52M
#define bitwise_xor_type 1133  // Left-recursive
221
3.53M
#define bitwise_and_type 1134  // Left-recursive
222
4.72M
#define shift_expr_type 1135  // Left-recursive
223
5.06M
#define sum_type 1136  // Left-recursive
224
8.68M
#define term_type 1137  // Left-recursive
225
2.40M
#define factor_type 1138
226
#define power_type 1139
227
2.34M
#define await_primary_type 1140
228
7.38M
#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
162k
#define tstring_type 1168
256
#define string_type 1169
257
273k
#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
106k
#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
770k
#define star_target_type 1193
281
522k
#define target_with_star_atom_type 1194
282
#define star_atom_type 1195
283
#define single_target_type 1196
284
#define single_subscript_attribute_target_type 1197
285
2.76M
#define t_primary_type 1198  // Left-recursive
286
#define t_lookahead_type 1199
287
#define del_targets_type 1200
288
21.6k
#define del_target_type 1201
289
#define del_t_atom_type 1202
290
#define type_expressions_type 1203
291
#define func_type_comment_type 1204
292
#define invalid_arguments_type 1205
293
#define invalid_kwarg_type 1206
294
#define expression_without_invalid_type 1207
295
#define invalid_legacy_expression_type 1208
296
#define invalid_type_param_type 1209
297
#define invalid_expression_type 1210
298
345k
#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_string_tstring_concat_type 1265
353
#define invalid_arithmetic_type 1266
354
#define invalid_factor_type 1267
355
#define invalid_type_params_type 1268
356
#define _loop0_1_type 1269
357
#define _loop1_2_type 1270
358
#define _loop0_3_type 1271
359
#define _gather_4_type 1272
360
#define _tmp_5_type 1273
361
#define _tmp_6_type 1274
362
#define _tmp_7_type 1275
363
#define _tmp_8_type 1276
364
#define _tmp_9_type 1277
365
#define _tmp_10_type 1278
366
#define _tmp_11_type 1279
367
#define _loop1_12_type 1280
368
#define _loop0_13_type 1281
369
#define _gather_14_type 1282
370
#define _tmp_15_type 1283
371
#define _tmp_16_type 1284
372
#define _loop0_17_type 1285
373
#define _loop1_18_type 1286
374
#define _loop0_19_type 1287
375
#define _gather_20_type 1288
376
#define _tmp_21_type 1289
377
#define _loop0_22_type 1290
378
#define _gather_23_type 1291
379
#define _loop1_24_type 1292
380
#define _tmp_25_type 1293
381
#define _tmp_26_type 1294
382
#define _loop0_27_type 1295
383
#define _loop0_28_type 1296
384
#define _loop1_29_type 1297
385
#define _loop1_30_type 1298
386
#define _loop0_31_type 1299
387
#define _loop1_32_type 1300
388
#define _loop0_33_type 1301
389
#define _gather_34_type 1302
390
#define _tmp_35_type 1303
391
#define _loop1_36_type 1304
392
#define _loop1_37_type 1305
393
#define _loop1_38_type 1306
394
#define _loop0_39_type 1307
395
#define _gather_40_type 1308
396
#define _tmp_41_type 1309
397
#define _tmp_42_type 1310
398
#define _tmp_43_type 1311
399
#define _loop0_44_type 1312
400
#define _gather_45_type 1313
401
#define _loop0_46_type 1314
402
#define _gather_47_type 1315
403
#define _tmp_48_type 1316
404
#define _loop0_49_type 1317
405
#define _gather_50_type 1318
406
#define _loop0_51_type 1319
407
#define _gather_52_type 1320
408
#define _loop0_53_type 1321
409
#define _gather_54_type 1322
410
#define _loop1_55_type 1323
411
#define _loop1_56_type 1324
412
#define _loop0_57_type 1325
413
#define _gather_58_type 1326
414
#define _loop1_59_type 1327
415
#define _loop1_60_type 1328
416
#define _loop1_61_type 1329
417
#define _tmp_62_type 1330
418
#define _loop0_63_type 1331
419
#define _gather_64_type 1332
420
#define _tmp_65_type 1333
421
#define _tmp_66_type 1334
422
#define _tmp_67_type 1335
423
#define _tmp_68_type 1336
424
#define _tmp_69_type 1337
425
#define _loop0_70_type 1338
426
#define _loop0_71_type 1339
427
#define _loop1_72_type 1340
428
#define _loop1_73_type 1341
429
#define _loop0_74_type 1342
430
#define _loop1_75_type 1343
431
#define _loop0_76_type 1344
432
#define _loop0_77_type 1345
433
#define _loop0_78_type 1346
434
#define _loop0_79_type 1347
435
#define _loop1_80_type 1348
436
#define _loop1_81_type 1349
437
#define _tmp_82_type 1350
438
#define _loop0_83_type 1351
439
#define _gather_84_type 1352
440
#define _loop1_85_type 1353
441
#define _loop0_86_type 1354
442
#define _tmp_87_type 1355
443
#define _loop0_88_type 1356
444
#define _gather_89_type 1357
445
#define _tmp_90_type 1358
446
#define _loop0_91_type 1359
447
#define _gather_92_type 1360
448
#define _loop0_93_type 1361
449
#define _gather_94_type 1362
450
#define _loop0_95_type 1363
451
#define _loop0_96_type 1364
452
#define _gather_97_type 1365
453
#define _loop1_98_type 1366
454
#define _tmp_99_type 1367
455
#define _loop0_100_type 1368
456
#define _gather_101_type 1369
457
#define _loop0_102_type 1370
458
#define _gather_103_type 1371
459
#define _tmp_104_type 1372
460
#define _tmp_105_type 1373
461
#define _loop0_106_type 1374
462
#define _gather_107_type 1375
463
#define _tmp_108_type 1376
464
#define _tmp_109_type 1377
465
#define _tmp_110_type 1378
466
#define _tmp_111_type 1379
467
#define _tmp_112_type 1380
468
#define _loop1_113_type 1381
469
#define _tmp_114_type 1382
470
#define _tmp_115_type 1383
471
#define _tmp_116_type 1384
472
#define _tmp_117_type 1385
473
#define _tmp_118_type 1386
474
#define _loop0_119_type 1387
475
#define _loop0_120_type 1388
476
#define _tmp_121_type 1389
477
#define _tmp_122_type 1390
478
#define _tmp_123_type 1391
479
#define _tmp_124_type 1392
480
#define _tmp_125_type 1393
481
#define _tmp_126_type 1394
482
#define _tmp_127_type 1395
483
#define _tmp_128_type 1396
484
#define _tmp_129_type 1397
485
#define _loop0_130_type 1398
486
#define _gather_131_type 1399
487
#define _tmp_132_type 1400
488
#define _tmp_133_type 1401
489
#define _tmp_134_type 1402
490
#define _tmp_135_type 1403
491
#define _loop0_136_type 1404
492
#define _gather_137_type 1405
493
#define _tmp_138_type 1406
494
#define _loop0_139_type 1407
495
#define _gather_140_type 1408
496
#define _loop0_141_type 1409
497
#define _gather_142_type 1410
498
#define _tmp_143_type 1411
499
#define _loop0_144_type 1412
500
#define _tmp_145_type 1413
501
#define _tmp_146_type 1414
502
#define _tmp_147_type 1415
503
#define _tmp_148_type 1416
504
#define _tmp_149_type 1417
505
#define _tmp_150_type 1418
506
#define _tmp_151_type 1419
507
#define _tmp_152_type 1420
508
#define _tmp_153_type 1421
509
#define _tmp_154_type 1422
510
#define _tmp_155_type 1423
511
#define _tmp_156_type 1424
512
#define _tmp_157_type 1425
513
#define _tmp_158_type 1426
514
#define _tmp_159_type 1427
515
#define _tmp_160_type 1428
516
#define _tmp_161_type 1429
517
#define _tmp_162_type 1430
518
#define _tmp_163_type 1431
519
#define _tmp_164_type 1432
520
#define _tmp_165_type 1433
521
#define _tmp_166_type 1434
522
#define _tmp_167_type 1435
523
#define _tmp_168_type 1436
524
#define _tmp_169_type 1437
525
#define _tmp_170_type 1438
526
#define _loop0_171_type 1439
527
#define _tmp_172_type 1440
528
#define _tmp_173_type 1441
529
#define _tmp_174_type 1442
530
#define _tmp_175_type 1443
531
#define _tmp_176_type 1444
532
533
static mod_ty file_rule(Parser *p);
534
static mod_ty interactive_rule(Parser *p);
535
static mod_ty eval_rule(Parser *p);
536
static mod_ty func_type_rule(Parser *p);
537
static asdl_stmt_seq* statements_rule(Parser *p);
538
static asdl_stmt_seq* statement_rule(Parser *p);
539
static asdl_stmt_seq* single_compound_stmt_rule(Parser *p);
540
static asdl_stmt_seq* statement_newline_rule(Parser *p);
541
static asdl_stmt_seq* simple_stmts_rule(Parser *p);
542
static stmt_ty simple_stmt_rule(Parser *p);
543
static stmt_ty compound_stmt_rule(Parser *p);
544
static stmt_ty assignment_rule(Parser *p);
545
static expr_ty annotated_rhs_rule(Parser *p);
546
static AugOperator* augassign_rule(Parser *p);
547
static stmt_ty return_stmt_rule(Parser *p);
548
static stmt_ty raise_stmt_rule(Parser *p);
549
static stmt_ty pass_stmt_rule(Parser *p);
550
static stmt_ty break_stmt_rule(Parser *p);
551
static stmt_ty continue_stmt_rule(Parser *p);
552
static stmt_ty global_stmt_rule(Parser *p);
553
static stmt_ty nonlocal_stmt_rule(Parser *p);
554
static stmt_ty del_stmt_rule(Parser *p);
555
static stmt_ty yield_stmt_rule(Parser *p);
556
static stmt_ty assert_stmt_rule(Parser *p);
557
static stmt_ty import_stmt_rule(Parser *p);
558
static stmt_ty import_name_rule(Parser *p);
559
static stmt_ty import_from_rule(Parser *p);
560
static asdl_alias_seq* import_from_targets_rule(Parser *p);
561
static asdl_alias_seq* import_from_as_names_rule(Parser *p);
562
static alias_ty import_from_as_name_rule(Parser *p);
563
static asdl_alias_seq* dotted_as_names_rule(Parser *p);
564
static alias_ty dotted_as_name_rule(Parser *p);
565
static expr_ty dotted_name_rule(Parser *p);
566
static asdl_stmt_seq* block_rule(Parser *p);
567
static asdl_expr_seq* decorators_rule(Parser *p);
568
static stmt_ty class_def_rule(Parser *p);
569
static stmt_ty class_def_raw_rule(Parser *p);
570
static stmt_ty function_def_rule(Parser *p);
571
static stmt_ty function_def_raw_rule(Parser *p);
572
static arguments_ty params_rule(Parser *p);
573
static arguments_ty parameters_rule(Parser *p);
574
static asdl_arg_seq* slash_no_default_rule(Parser *p);
575
static SlashWithDefault* slash_with_default_rule(Parser *p);
576
static StarEtc* star_etc_rule(Parser *p);
577
static arg_ty kwds_rule(Parser *p);
578
static arg_ty param_no_default_rule(Parser *p);
579
static arg_ty param_no_default_star_annotation_rule(Parser *p);
580
static NameDefaultPair* param_with_default_rule(Parser *p);
581
static NameDefaultPair* param_maybe_default_rule(Parser *p);
582
static arg_ty param_rule(Parser *p);
583
static arg_ty param_star_annotation_rule(Parser *p);
584
static expr_ty annotation_rule(Parser *p);
585
static expr_ty star_annotation_rule(Parser *p);
586
static expr_ty default_rule(Parser *p);
587
static stmt_ty if_stmt_rule(Parser *p);
588
static stmt_ty elif_stmt_rule(Parser *p);
589
static asdl_stmt_seq* else_block_rule(Parser *p);
590
static stmt_ty while_stmt_rule(Parser *p);
591
static stmt_ty for_stmt_rule(Parser *p);
592
static stmt_ty with_stmt_rule(Parser *p);
593
static withitem_ty with_item_rule(Parser *p);
594
static stmt_ty try_stmt_rule(Parser *p);
595
static excepthandler_ty except_block_rule(Parser *p);
596
static excepthandler_ty except_star_block_rule(Parser *p);
597
static asdl_stmt_seq* finally_block_rule(Parser *p);
598
static stmt_ty match_stmt_rule(Parser *p);
599
static expr_ty subject_expr_rule(Parser *p);
600
static match_case_ty case_block_rule(Parser *p);
601
static expr_ty guard_rule(Parser *p);
602
static pattern_ty patterns_rule(Parser *p);
603
static pattern_ty pattern_rule(Parser *p);
604
static pattern_ty as_pattern_rule(Parser *p);
605
static pattern_ty or_pattern_rule(Parser *p);
606
static pattern_ty closed_pattern_rule(Parser *p);
607
static pattern_ty literal_pattern_rule(Parser *p);
608
static expr_ty literal_expr_rule(Parser *p);
609
static expr_ty complex_number_rule(Parser *p);
610
static expr_ty signed_number_rule(Parser *p);
611
static expr_ty signed_real_number_rule(Parser *p);
612
static expr_ty real_number_rule(Parser *p);
613
static expr_ty imaginary_number_rule(Parser *p);
614
static pattern_ty capture_pattern_rule(Parser *p);
615
static expr_ty pattern_capture_target_rule(Parser *p);
616
static pattern_ty wildcard_pattern_rule(Parser *p);
617
static pattern_ty value_pattern_rule(Parser *p);
618
static expr_ty attr_rule(Parser *p);
619
static expr_ty name_or_attr_rule(Parser *p);
620
static pattern_ty group_pattern_rule(Parser *p);
621
static pattern_ty sequence_pattern_rule(Parser *p);
622
static asdl_seq* open_sequence_pattern_rule(Parser *p);
623
static asdl_seq* maybe_sequence_pattern_rule(Parser *p);
624
static pattern_ty maybe_star_pattern_rule(Parser *p);
625
static pattern_ty star_pattern_rule(Parser *p);
626
static pattern_ty mapping_pattern_rule(Parser *p);
627
static asdl_seq* items_pattern_rule(Parser *p);
628
static KeyPatternPair* key_value_pattern_rule(Parser *p);
629
static expr_ty double_star_pattern_rule(Parser *p);
630
static pattern_ty class_pattern_rule(Parser *p);
631
static asdl_pattern_seq* positional_patterns_rule(Parser *p);
632
static asdl_seq* keyword_patterns_rule(Parser *p);
633
static KeyPatternPair* keyword_pattern_rule(Parser *p);
634
static stmt_ty type_alias_rule(Parser *p);
635
static asdl_type_param_seq* type_params_rule(Parser *p);
636
static asdl_type_param_seq* type_param_seq_rule(Parser *p);
637
static type_param_ty type_param_rule(Parser *p);
638
static expr_ty type_param_bound_rule(Parser *p);
639
static expr_ty type_param_default_rule(Parser *p);
640
static expr_ty type_param_starred_default_rule(Parser *p);
641
static expr_ty expressions_rule(Parser *p);
642
static expr_ty expression_rule(Parser *p);
643
static expr_ty yield_expr_rule(Parser *p);
644
static expr_ty star_expressions_rule(Parser *p);
645
static expr_ty star_expression_rule(Parser *p);
646
static asdl_expr_seq* star_named_expressions_rule(Parser *p);
647
static expr_ty star_named_expression_rule(Parser *p);
648
static expr_ty assignment_expression_rule(Parser *p);
649
static expr_ty named_expression_rule(Parser *p);
650
static expr_ty disjunction_rule(Parser *p);
651
static expr_ty conjunction_rule(Parser *p);
652
static expr_ty inversion_rule(Parser *p);
653
static expr_ty comparison_rule(Parser *p);
654
static CmpopExprPair* compare_op_bitwise_or_pair_rule(Parser *p);
655
static CmpopExprPair* eq_bitwise_or_rule(Parser *p);
656
static CmpopExprPair* noteq_bitwise_or_rule(Parser *p);
657
static CmpopExprPair* lte_bitwise_or_rule(Parser *p);
658
static CmpopExprPair* lt_bitwise_or_rule(Parser *p);
659
static CmpopExprPair* gte_bitwise_or_rule(Parser *p);
660
static CmpopExprPair* gt_bitwise_or_rule(Parser *p);
661
static CmpopExprPair* notin_bitwise_or_rule(Parser *p);
662
static CmpopExprPair* in_bitwise_or_rule(Parser *p);
663
static CmpopExprPair* isnot_bitwise_or_rule(Parser *p);
664
static CmpopExprPair* is_bitwise_or_rule(Parser *p);
665
static expr_ty bitwise_or_rule(Parser *p);
666
static expr_ty bitwise_xor_rule(Parser *p);
667
static expr_ty bitwise_and_rule(Parser *p);
668
static expr_ty shift_expr_rule(Parser *p);
669
static expr_ty sum_rule(Parser *p);
670
static expr_ty term_rule(Parser *p);
671
static expr_ty factor_rule(Parser *p);
672
static expr_ty power_rule(Parser *p);
673
static expr_ty await_primary_rule(Parser *p);
674
static expr_ty primary_rule(Parser *p);
675
static expr_ty slices_rule(Parser *p);
676
static expr_ty slice_rule(Parser *p);
677
static expr_ty atom_rule(Parser *p);
678
static expr_ty group_rule(Parser *p);
679
static expr_ty lambdef_rule(Parser *p);
680
static arguments_ty lambda_params_rule(Parser *p);
681
static arguments_ty lambda_parameters_rule(Parser *p);
682
static asdl_arg_seq* lambda_slash_no_default_rule(Parser *p);
683
static SlashWithDefault* lambda_slash_with_default_rule(Parser *p);
684
static StarEtc* lambda_star_etc_rule(Parser *p);
685
static arg_ty lambda_kwds_rule(Parser *p);
686
static arg_ty lambda_param_no_default_rule(Parser *p);
687
static NameDefaultPair* lambda_param_with_default_rule(Parser *p);
688
static NameDefaultPair* lambda_param_maybe_default_rule(Parser *p);
689
static arg_ty lambda_param_rule(Parser *p);
690
static expr_ty fstring_middle_rule(Parser *p);
691
static expr_ty fstring_replacement_field_rule(Parser *p);
692
static ResultTokenWithMetadata* fstring_conversion_rule(Parser *p);
693
static ResultTokenWithMetadata* fstring_full_format_spec_rule(Parser *p);
694
static expr_ty fstring_format_spec_rule(Parser *p);
695
static expr_ty fstring_rule(Parser *p);
696
static expr_ty tstring_format_spec_replacement_field_rule(Parser *p);
697
static expr_ty tstring_format_spec_rule(Parser *p);
698
static ResultTokenWithMetadata* tstring_full_format_spec_rule(Parser *p);
699
static expr_ty tstring_replacement_field_rule(Parser *p);
700
static expr_ty tstring_middle_rule(Parser *p);
701
static expr_ty tstring_rule(Parser *p);
702
static expr_ty string_rule(Parser *p);
703
static expr_ty strings_rule(Parser *p);
704
static expr_ty list_rule(Parser *p);
705
static expr_ty tuple_rule(Parser *p);
706
static expr_ty set_rule(Parser *p);
707
static expr_ty dict_rule(Parser *p);
708
static asdl_seq* double_starred_kvpairs_rule(Parser *p);
709
static KeyValuePair* double_starred_kvpair_rule(Parser *p);
710
static KeyValuePair* kvpair_rule(Parser *p);
711
static asdl_comprehension_seq* for_if_clauses_rule(Parser *p);
712
static comprehension_ty for_if_clause_rule(Parser *p);
713
static expr_ty listcomp_rule(Parser *p);
714
static expr_ty setcomp_rule(Parser *p);
715
static expr_ty genexp_rule(Parser *p);
716
static expr_ty dictcomp_rule(Parser *p);
717
static expr_ty arguments_rule(Parser *p);
718
static expr_ty args_rule(Parser *p);
719
static asdl_seq* kwargs_rule(Parser *p);
720
static expr_ty starred_expression_rule(Parser *p);
721
static KeywordOrStarred* kwarg_or_starred_rule(Parser *p);
722
static KeywordOrStarred* kwarg_or_double_starred_rule(Parser *p);
723
static expr_ty star_targets_rule(Parser *p);
724
static asdl_expr_seq* star_targets_list_seq_rule(Parser *p);
725
static asdl_expr_seq* star_targets_tuple_seq_rule(Parser *p);
726
static expr_ty star_target_rule(Parser *p);
727
static expr_ty target_with_star_atom_rule(Parser *p);
728
static expr_ty star_atom_rule(Parser *p);
729
static expr_ty single_target_rule(Parser *p);
730
static expr_ty single_subscript_attribute_target_rule(Parser *p);
731
static expr_ty t_primary_rule(Parser *p);
732
static void *t_lookahead_rule(Parser *p);
733
static asdl_expr_seq* del_targets_rule(Parser *p);
734
static expr_ty del_target_rule(Parser *p);
735
static expr_ty del_t_atom_rule(Parser *p);
736
static asdl_expr_seq* type_expressions_rule(Parser *p);
737
static Token* func_type_comment_rule(Parser *p);
738
static void *invalid_arguments_rule(Parser *p);
739
static void *invalid_kwarg_rule(Parser *p);
740
static expr_ty expression_without_invalid_rule(Parser *p);
741
static void *invalid_legacy_expression_rule(Parser *p);
742
static void *invalid_type_param_rule(Parser *p);
743
static void *invalid_expression_rule(Parser *p);
744
static void *invalid_named_expression_rule(Parser *p);
745
static void *invalid_assignment_rule(Parser *p);
746
static expr_ty invalid_ann_assign_target_rule(Parser *p);
747
static void *invalid_raise_stmt_rule(Parser *p);
748
static void *invalid_del_stmt_rule(Parser *p);
749
static void *invalid_block_rule(Parser *p);
750
static void *invalid_comprehension_rule(Parser *p);
751
static void *invalid_dict_comprehension_rule(Parser *p);
752
static void *invalid_parameters_rule(Parser *p);
753
static void *invalid_default_rule(Parser *p);
754
static void *invalid_star_etc_rule(Parser *p);
755
static void *invalid_kwds_rule(Parser *p);
756
static void *invalid_parameters_helper_rule(Parser *p);
757
static void *invalid_lambda_parameters_rule(Parser *p);
758
static void *invalid_lambda_parameters_helper_rule(Parser *p);
759
static void *invalid_lambda_star_etc_rule(Parser *p);
760
static void *invalid_lambda_kwds_rule(Parser *p);
761
static void *invalid_double_type_comments_rule(Parser *p);
762
static void *invalid_with_item_rule(Parser *p);
763
static void *invalid_for_if_clause_rule(Parser *p);
764
static void *invalid_for_target_rule(Parser *p);
765
static void *invalid_group_rule(Parser *p);
766
static void *invalid_import_rule(Parser *p);
767
static void *invalid_dotted_as_name_rule(Parser *p);
768
static void *invalid_import_from_as_name_rule(Parser *p);
769
static void *invalid_import_from_targets_rule(Parser *p);
770
static void *invalid_with_stmt_rule(Parser *p);
771
static void *invalid_with_stmt_indent_rule(Parser *p);
772
static void *invalid_try_stmt_rule(Parser *p);
773
static void *invalid_except_stmt_rule(Parser *p);
774
static void *invalid_except_star_stmt_rule(Parser *p);
775
static void *invalid_finally_stmt_rule(Parser *p);
776
static void *invalid_except_stmt_indent_rule(Parser *p);
777
static void *invalid_except_star_stmt_indent_rule(Parser *p);
778
static void *invalid_match_stmt_rule(Parser *p);
779
static void *invalid_case_block_rule(Parser *p);
780
static void *invalid_as_pattern_rule(Parser *p);
781
static void *invalid_class_pattern_rule(Parser *p);
782
static asdl_pattern_seq* invalid_class_argument_pattern_rule(Parser *p);
783
static void *invalid_if_stmt_rule(Parser *p);
784
static void *invalid_elif_stmt_rule(Parser *p);
785
static void *invalid_else_stmt_rule(Parser *p);
786
static void *invalid_while_stmt_rule(Parser *p);
787
static void *invalid_for_stmt_rule(Parser *p);
788
static void *invalid_def_raw_rule(Parser *p);
789
static void *invalid_class_def_raw_rule(Parser *p);
790
static void *invalid_double_starred_kvpairs_rule(Parser *p);
791
static void *invalid_kvpair_rule(Parser *p);
792
static void *invalid_starred_expression_unpacking_rule(Parser *p);
793
static void *invalid_starred_expression_rule(Parser *p);
794
static void *invalid_fstring_replacement_field_rule(Parser *p);
795
static void *invalid_fstring_conversion_character_rule(Parser *p);
796
static void *invalid_tstring_replacement_field_rule(Parser *p);
797
static void *invalid_tstring_conversion_character_rule(Parser *p);
798
static void *invalid_string_tstring_concat_rule(Parser *p);
799
static void *invalid_arithmetic_rule(Parser *p);
800
static void *invalid_factor_rule(Parser *p);
801
static void *invalid_type_params_rule(Parser *p);
802
static asdl_seq *_loop0_1_rule(Parser *p);
803
static asdl_seq *_loop1_2_rule(Parser *p);
804
static asdl_seq *_loop0_3_rule(Parser *p);
805
static asdl_seq *_gather_4_rule(Parser *p);
806
static void *_tmp_5_rule(Parser *p);
807
static void *_tmp_6_rule(Parser *p);
808
static void *_tmp_7_rule(Parser *p);
809
static void *_tmp_8_rule(Parser *p);
810
static void *_tmp_9_rule(Parser *p);
811
static void *_tmp_10_rule(Parser *p);
812
static void *_tmp_11_rule(Parser *p);
813
static asdl_seq *_loop1_12_rule(Parser *p);
814
static asdl_seq *_loop0_13_rule(Parser *p);
815
static asdl_seq *_gather_14_rule(Parser *p);
816
static void *_tmp_15_rule(Parser *p);
817
static void *_tmp_16_rule(Parser *p);
818
static asdl_seq *_loop0_17_rule(Parser *p);
819
static asdl_seq *_loop1_18_rule(Parser *p);
820
static asdl_seq *_loop0_19_rule(Parser *p);
821
static asdl_seq *_gather_20_rule(Parser *p);
822
static void *_tmp_21_rule(Parser *p);
823
static asdl_seq *_loop0_22_rule(Parser *p);
824
static asdl_seq *_gather_23_rule(Parser *p);
825
static asdl_seq *_loop1_24_rule(Parser *p);
826
static void *_tmp_25_rule(Parser *p);
827
static void *_tmp_26_rule(Parser *p);
828
static asdl_seq *_loop0_27_rule(Parser *p);
829
static asdl_seq *_loop0_28_rule(Parser *p);
830
static asdl_seq *_loop1_29_rule(Parser *p);
831
static asdl_seq *_loop1_30_rule(Parser *p);
832
static asdl_seq *_loop0_31_rule(Parser *p);
833
static asdl_seq *_loop1_32_rule(Parser *p);
834
static asdl_seq *_loop0_33_rule(Parser *p);
835
static asdl_seq *_gather_34_rule(Parser *p);
836
static void *_tmp_35_rule(Parser *p);
837
static asdl_seq *_loop1_36_rule(Parser *p);
838
static asdl_seq *_loop1_37_rule(Parser *p);
839
static asdl_seq *_loop1_38_rule(Parser *p);
840
static asdl_seq *_loop0_39_rule(Parser *p);
841
static asdl_seq *_gather_40_rule(Parser *p);
842
static void *_tmp_41_rule(Parser *p);
843
static void *_tmp_42_rule(Parser *p);
844
static void *_tmp_43_rule(Parser *p);
845
static asdl_seq *_loop0_44_rule(Parser *p);
846
static asdl_seq *_gather_45_rule(Parser *p);
847
static asdl_seq *_loop0_46_rule(Parser *p);
848
static asdl_seq *_gather_47_rule(Parser *p);
849
static void *_tmp_48_rule(Parser *p);
850
static asdl_seq *_loop0_49_rule(Parser *p);
851
static asdl_seq *_gather_50_rule(Parser *p);
852
static asdl_seq *_loop0_51_rule(Parser *p);
853
static asdl_seq *_gather_52_rule(Parser *p);
854
static asdl_seq *_loop0_53_rule(Parser *p);
855
static asdl_seq *_gather_54_rule(Parser *p);
856
static asdl_seq *_loop1_55_rule(Parser *p);
857
static asdl_seq *_loop1_56_rule(Parser *p);
858
static asdl_seq *_loop0_57_rule(Parser *p);
859
static asdl_seq *_gather_58_rule(Parser *p);
860
static asdl_seq *_loop1_59_rule(Parser *p);
861
static asdl_seq *_loop1_60_rule(Parser *p);
862
static asdl_seq *_loop1_61_rule(Parser *p);
863
static void *_tmp_62_rule(Parser *p);
864
static asdl_seq *_loop0_63_rule(Parser *p);
865
static asdl_seq *_gather_64_rule(Parser *p);
866
static void *_tmp_65_rule(Parser *p);
867
static void *_tmp_66_rule(Parser *p);
868
static void *_tmp_67_rule(Parser *p);
869
static void *_tmp_68_rule(Parser *p);
870
static void *_tmp_69_rule(Parser *p);
871
static asdl_seq *_loop0_70_rule(Parser *p);
872
static asdl_seq *_loop0_71_rule(Parser *p);
873
static asdl_seq *_loop1_72_rule(Parser *p);
874
static asdl_seq *_loop1_73_rule(Parser *p);
875
static asdl_seq *_loop0_74_rule(Parser *p);
876
static asdl_seq *_loop1_75_rule(Parser *p);
877
static asdl_seq *_loop0_76_rule(Parser *p);
878
static asdl_seq *_loop0_77_rule(Parser *p);
879
static asdl_seq *_loop0_78_rule(Parser *p);
880
static asdl_seq *_loop0_79_rule(Parser *p);
881
static asdl_seq *_loop1_80_rule(Parser *p);
882
static asdl_seq *_loop1_81_rule(Parser *p);
883
static void *_tmp_82_rule(Parser *p);
884
static asdl_seq *_loop0_83_rule(Parser *p);
885
static asdl_seq *_gather_84_rule(Parser *p);
886
static asdl_seq *_loop1_85_rule(Parser *p);
887
static asdl_seq *_loop0_86_rule(Parser *p);
888
static void *_tmp_87_rule(Parser *p);
889
static asdl_seq *_loop0_88_rule(Parser *p);
890
static asdl_seq *_gather_89_rule(Parser *p);
891
static void *_tmp_90_rule(Parser *p);
892
static asdl_seq *_loop0_91_rule(Parser *p);
893
static asdl_seq *_gather_92_rule(Parser *p);
894
static asdl_seq *_loop0_93_rule(Parser *p);
895
static asdl_seq *_gather_94_rule(Parser *p);
896
static asdl_seq *_loop0_95_rule(Parser *p);
897
static asdl_seq *_loop0_96_rule(Parser *p);
898
static asdl_seq *_gather_97_rule(Parser *p);
899
static asdl_seq *_loop1_98_rule(Parser *p);
900
static void *_tmp_99_rule(Parser *p);
901
static asdl_seq *_loop0_100_rule(Parser *p);
902
static asdl_seq *_gather_101_rule(Parser *p);
903
static asdl_seq *_loop0_102_rule(Parser *p);
904
static asdl_seq *_gather_103_rule(Parser *p);
905
static void *_tmp_104_rule(Parser *p);
906
static void *_tmp_105_rule(Parser *p);
907
static asdl_seq *_loop0_106_rule(Parser *p);
908
static asdl_seq *_gather_107_rule(Parser *p);
909
static void *_tmp_108_rule(Parser *p);
910
static void *_tmp_109_rule(Parser *p);
911
static void *_tmp_110_rule(Parser *p);
912
static void *_tmp_111_rule(Parser *p);
913
static void *_tmp_112_rule(Parser *p);
914
static asdl_seq *_loop1_113_rule(Parser *p);
915
static void *_tmp_114_rule(Parser *p);
916
static void *_tmp_115_rule(Parser *p);
917
static void *_tmp_116_rule(Parser *p);
918
static void *_tmp_117_rule(Parser *p);
919
static void *_tmp_118_rule(Parser *p);
920
static asdl_seq *_loop0_119_rule(Parser *p);
921
static asdl_seq *_loop0_120_rule(Parser *p);
922
static void *_tmp_121_rule(Parser *p);
923
static void *_tmp_122_rule(Parser *p);
924
static void *_tmp_123_rule(Parser *p);
925
static void *_tmp_124_rule(Parser *p);
926
static void *_tmp_125_rule(Parser *p);
927
static void *_tmp_126_rule(Parser *p);
928
static void *_tmp_127_rule(Parser *p);
929
static void *_tmp_128_rule(Parser *p);
930
static void *_tmp_129_rule(Parser *p);
931
static asdl_seq *_loop0_130_rule(Parser *p);
932
static asdl_seq *_gather_131_rule(Parser *p);
933
static void *_tmp_132_rule(Parser *p);
934
static void *_tmp_133_rule(Parser *p);
935
static void *_tmp_134_rule(Parser *p);
936
static void *_tmp_135_rule(Parser *p);
937
static asdl_seq *_loop0_136_rule(Parser *p);
938
static asdl_seq *_gather_137_rule(Parser *p);
939
static void *_tmp_138_rule(Parser *p);
940
static asdl_seq *_loop0_139_rule(Parser *p);
941
static asdl_seq *_gather_140_rule(Parser *p);
942
static asdl_seq *_loop0_141_rule(Parser *p);
943
static asdl_seq *_gather_142_rule(Parser *p);
944
static void *_tmp_143_rule(Parser *p);
945
static asdl_seq *_loop0_144_rule(Parser *p);
946
static void *_tmp_145_rule(Parser *p);
947
static void *_tmp_146_rule(Parser *p);
948
static void *_tmp_147_rule(Parser *p);
949
static void *_tmp_148_rule(Parser *p);
950
static void *_tmp_149_rule(Parser *p);
951
static void *_tmp_150_rule(Parser *p);
952
static void *_tmp_151_rule(Parser *p);
953
static void *_tmp_152_rule(Parser *p);
954
static void *_tmp_153_rule(Parser *p);
955
static void *_tmp_154_rule(Parser *p);
956
static void *_tmp_155_rule(Parser *p);
957
static void *_tmp_156_rule(Parser *p);
958
static void *_tmp_157_rule(Parser *p);
959
static void *_tmp_158_rule(Parser *p);
960
static void *_tmp_159_rule(Parser *p);
961
static void *_tmp_160_rule(Parser *p);
962
static void *_tmp_161_rule(Parser *p);
963
static void *_tmp_162_rule(Parser *p);
964
static void *_tmp_163_rule(Parser *p);
965
static void *_tmp_164_rule(Parser *p);
966
static void *_tmp_165_rule(Parser *p);
967
static void *_tmp_166_rule(Parser *p);
968
static void *_tmp_167_rule(Parser *p);
969
static void *_tmp_168_rule(Parser *p);
970
static void *_tmp_169_rule(Parser *p);
971
static void *_tmp_170_rule(Parser *p);
972
static asdl_seq *_loop0_171_rule(Parser *p);
973
static void *_tmp_172_rule(Parser *p);
974
static void *_tmp_173_rule(Parser *p);
975
static void *_tmp_174_rule(Parser *p);
976
static void *_tmp_175_rule(Parser *p);
977
static void *_tmp_176_rule(Parser *p);
978
979
980
// file: statements? $
981
static mod_ty
982
file_rule(Parser *p)
983
34.5k
{
984
34.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
985
0
        _Pypegen_stack_overflow(p);
986
0
    }
987
34.5k
    if (p->error_indicator) {
988
3.75k
        p->level--;
989
3.75k
        return NULL;
990
3.75k
    }
991
30.8k
    mod_ty _res = NULL;
992
30.8k
    int _mark = p->mark;
993
30.8k
    { // statements? $
994
30.8k
        if (p->error_indicator) {
995
0
            p->level--;
996
0
            return NULL;
997
0
        }
998
30.8k
        D(fprintf(stderr, "%*c> file[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statements? $"));
999
30.8k
        void *a;
1000
30.8k
        Token * endmarker_var;
1001
30.8k
        if (
1002
30.8k
            (a = statements_rule(p), !p->error_indicator)  // statements?
1003
30.8k
            &&
1004
30.8k
            (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1005
30.8k
        )
1006
7.47k
        {
1007
7.47k
            D(fprintf(stderr, "%*c+ file[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statements? $"));
1008
7.47k
            _res = _PyPegen_make_module ( p , a );
1009
7.47k
            if (_res == NULL && PyErr_Occurred()) {
1010
0
                p->error_indicator = 1;
1011
0
                p->level--;
1012
0
                return NULL;
1013
0
            }
1014
7.47k
            goto done;
1015
7.47k
        }
1016
23.3k
        p->mark = _mark;
1017
23.3k
        D(fprintf(stderr, "%*c%s file[%d-%d]: %s failed!\n", p->level, ' ',
1018
23.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statements? $"));
1019
23.3k
    }
1020
0
    _res = NULL;
1021
30.8k
  done:
1022
30.8k
    p->level--;
1023
30.8k
    return _res;
1024
23.3k
}
1025
1026
// interactive: statement_newline
1027
static mod_ty
1028
interactive_rule(Parser *p)
1029
0
{
1030
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1031
0
        _Pypegen_stack_overflow(p);
1032
0
    }
1033
0
    if (p->error_indicator) {
1034
0
        p->level--;
1035
0
        return NULL;
1036
0
    }
1037
0
    mod_ty _res = NULL;
1038
0
    int _mark = p->mark;
1039
0
    { // statement_newline
1040
0
        if (p->error_indicator) {
1041
0
            p->level--;
1042
0
            return NULL;
1043
0
        }
1044
0
        D(fprintf(stderr, "%*c> interactive[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement_newline"));
1045
0
        asdl_stmt_seq* a;
1046
0
        if (
1047
0
            (a = statement_newline_rule(p))  // statement_newline
1048
0
        )
1049
0
        {
1050
0
            D(fprintf(stderr, "%*c+ interactive[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statement_newline"));
1051
0
            _res = _PyAST_Interactive ( a , p -> arena );
1052
0
            if (_res == NULL && PyErr_Occurred()) {
1053
0
                p->error_indicator = 1;
1054
0
                p->level--;
1055
0
                return NULL;
1056
0
            }
1057
0
            goto done;
1058
0
        }
1059
0
        p->mark = _mark;
1060
0
        D(fprintf(stderr, "%*c%s interactive[%d-%d]: %s failed!\n", p->level, ' ',
1061
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement_newline"));
1062
0
    }
1063
0
    _res = NULL;
1064
0
  done:
1065
0
    p->level--;
1066
0
    return _res;
1067
0
}
1068
1069
// eval: expressions NEWLINE* $
1070
static mod_ty
1071
eval_rule(Parser *p)
1072
66
{
1073
66
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1074
0
        _Pypegen_stack_overflow(p);
1075
0
    }
1076
66
    if (p->error_indicator) {
1077
0
        p->level--;
1078
0
        return NULL;
1079
0
    }
1080
66
    mod_ty _res = NULL;
1081
66
    int _mark = p->mark;
1082
66
    { // expressions NEWLINE* $
1083
66
        if (p->error_indicator) {
1084
0
            p->level--;
1085
0
            return NULL;
1086
0
        }
1087
66
        D(fprintf(stderr, "%*c> eval[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions NEWLINE* $"));
1088
66
        asdl_seq * _loop0_1_var;
1089
66
        expr_ty a;
1090
66
        Token * endmarker_var;
1091
66
        if (
1092
66
            (a = expressions_rule(p))  // expressions
1093
66
            &&
1094
66
            (_loop0_1_var = _loop0_1_rule(p))  // NEWLINE*
1095
66
            &&
1096
66
            (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1097
66
        )
1098
66
        {
1099
66
            D(fprintf(stderr, "%*c+ eval[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions NEWLINE* $"));
1100
66
            _res = _PyAST_Expression ( a , p -> arena );
1101
66
            if (_res == NULL && PyErr_Occurred()) {
1102
0
                p->error_indicator = 1;
1103
0
                p->level--;
1104
0
                return NULL;
1105
0
            }
1106
66
            goto done;
1107
66
        }
1108
0
        p->mark = _mark;
1109
0
        D(fprintf(stderr, "%*c%s eval[%d-%d]: %s failed!\n", p->level, ' ',
1110
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions NEWLINE* $"));
1111
0
    }
1112
0
    _res = NULL;
1113
66
  done:
1114
66
    p->level--;
1115
66
    return _res;
1116
0
}
1117
1118
// func_type: '(' type_expressions? ')' '->' expression NEWLINE* $
1119
static mod_ty
1120
func_type_rule(Parser *p)
1121
0
{
1122
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1123
0
        _Pypegen_stack_overflow(p);
1124
0
    }
1125
0
    if (p->error_indicator) {
1126
0
        p->level--;
1127
0
        return NULL;
1128
0
    }
1129
0
    mod_ty _res = NULL;
1130
0
    int _mark = p->mark;
1131
0
    { // '(' type_expressions? ')' '->' expression NEWLINE* $
1132
0
        if (p->error_indicator) {
1133
0
            p->level--;
1134
0
            return NULL;
1135
0
        }
1136
0
        D(fprintf(stderr, "%*c> func_type[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
1137
0
        Token * _literal;
1138
0
        Token * _literal_1;
1139
0
        Token * _literal_2;
1140
0
        asdl_seq * _loop0_1_var;
1141
0
        void *a;
1142
0
        expr_ty b;
1143
0
        Token * endmarker_var;
1144
0
        if (
1145
0
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
1146
0
            &&
1147
0
            (a = type_expressions_rule(p), !p->error_indicator)  // type_expressions?
1148
0
            &&
1149
0
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
1150
0
            &&
1151
0
            (_literal_2 = _PyPegen_expect_token(p, 51))  // token='->'
1152
0
            &&
1153
0
            (b = expression_rule(p))  // expression
1154
0
            &&
1155
0
            (_loop0_1_var = _loop0_1_rule(p))  // NEWLINE*
1156
0
            &&
1157
0
            (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1158
0
        )
1159
0
        {
1160
0
            D(fprintf(stderr, "%*c+ func_type[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
1161
0
            _res = _PyAST_FunctionType ( a , b , p -> arena );
1162
0
            if (_res == NULL && PyErr_Occurred()) {
1163
0
                p->error_indicator = 1;
1164
0
                p->level--;
1165
0
                return NULL;
1166
0
            }
1167
0
            goto done;
1168
0
        }
1169
0
        p->mark = _mark;
1170
0
        D(fprintf(stderr, "%*c%s func_type[%d-%d]: %s failed!\n", p->level, ' ',
1171
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
1172
0
    }
1173
0
    _res = NULL;
1174
0
  done:
1175
0
    p->level--;
1176
0
    return _res;
1177
0
}
1178
1179
// statements: statement+
1180
static asdl_stmt_seq*
1181
statements_rule(Parser *p)
1182
52.1k
{
1183
52.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1184
0
        _Pypegen_stack_overflow(p);
1185
0
    }
1186
52.1k
    if (p->error_indicator) {
1187
0
        p->level--;
1188
0
        return NULL;
1189
0
    }
1190
52.1k
    asdl_stmt_seq* _res = NULL;
1191
52.1k
    int _mark = p->mark;
1192
52.1k
    { // statement+
1193
52.1k
        if (p->error_indicator) {
1194
0
            p->level--;
1195
0
            return NULL;
1196
0
        }
1197
52.1k
        D(fprintf(stderr, "%*c> statements[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement+"));
1198
52.1k
        asdl_seq * a;
1199
52.1k
        if (
1200
52.1k
            (a = _loop1_2_rule(p))  // statement+
1201
52.1k
        )
1202
29.5k
        {
1203
29.5k
            D(fprintf(stderr, "%*c+ statements[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statement+"));
1204
29.5k
            _res = ( asdl_stmt_seq* ) _PyPegen_seq_flatten ( p , a );
1205
29.5k
            if (_res == NULL && PyErr_Occurred()) {
1206
0
                p->error_indicator = 1;
1207
0
                p->level--;
1208
0
                return NULL;
1209
0
            }
1210
29.5k
            goto done;
1211
29.5k
        }
1212
22.5k
        p->mark = _mark;
1213
22.5k
        D(fprintf(stderr, "%*c%s statements[%d-%d]: %s failed!\n", p->level, ' ',
1214
22.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement+"));
1215
22.5k
    }
1216
0
    _res = NULL;
1217
52.1k
  done:
1218
52.1k
    p->level--;
1219
52.1k
    return _res;
1220
22.5k
}
1221
1222
// statement: compound_stmt | simple_stmts
1223
static asdl_stmt_seq*
1224
statement_rule(Parser *p)
1225
171k
{
1226
171k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1227
0
        _Pypegen_stack_overflow(p);
1228
0
    }
1229
171k
    if (p->error_indicator) {
1230
0
        p->level--;
1231
0
        return NULL;
1232
0
    }
1233
171k
    asdl_stmt_seq* _res = NULL;
1234
171k
    int _mark = p->mark;
1235
171k
    { // compound_stmt
1236
171k
        if (p->error_indicator) {
1237
0
            p->level--;
1238
0
            return NULL;
1239
0
        }
1240
171k
        D(fprintf(stderr, "%*c> statement[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1241
171k
        stmt_ty a;
1242
171k
        if (
1243
171k
            (a = compound_stmt_rule(p))  // compound_stmt
1244
171k
        )
1245
37.4k
        {
1246
37.4k
            D(fprintf(stderr, "%*c+ statement[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1247
37.4k
            _res = _PyPegen_register_stmts ( p , ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , a ) );
1248
37.4k
            if (_res == NULL && PyErr_Occurred()) {
1249
0
                p->error_indicator = 1;
1250
0
                p->level--;
1251
0
                return NULL;
1252
0
            }
1253
37.4k
            goto done;
1254
37.4k
        }
1255
134k
        p->mark = _mark;
1256
134k
        D(fprintf(stderr, "%*c%s statement[%d-%d]: %s failed!\n", p->level, ' ',
1257
134k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compound_stmt"));
1258
134k
    }
1259
0
    { // simple_stmts
1260
134k
        if (p->error_indicator) {
1261
2.50k
            p->level--;
1262
2.50k
            return NULL;
1263
2.50k
        }
1264
131k
        D(fprintf(stderr, "%*c> statement[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1265
131k
        asdl_stmt_seq* a;
1266
131k
        if (
1267
131k
            (a = (asdl_stmt_seq*)simple_stmts_rule(p))  // simple_stmts
1268
131k
        )
1269
82.0k
        {
1270
82.0k
            D(fprintf(stderr, "%*c+ statement[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1271
82.0k
            _res = a;
1272
82.0k
            if (_res == NULL && PyErr_Occurred()) {
1273
0
                p->error_indicator = 1;
1274
0
                p->level--;
1275
0
                return NULL;
1276
0
            }
1277
82.0k
            goto done;
1278
82.0k
        }
1279
49.5k
        p->mark = _mark;
1280
49.5k
        D(fprintf(stderr, "%*c%s statement[%d-%d]: %s failed!\n", p->level, ' ',
1281
49.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
1282
49.5k
    }
1283
0
    _res = NULL;
1284
169k
  done:
1285
169k
    p->level--;
1286
169k
    return _res;
1287
49.5k
}
1288
1289
// single_compound_stmt: compound_stmt
1290
static asdl_stmt_seq*
1291
single_compound_stmt_rule(Parser *p)
1292
0
{
1293
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1294
0
        _Pypegen_stack_overflow(p);
1295
0
    }
1296
0
    if (p->error_indicator) {
1297
0
        p->level--;
1298
0
        return NULL;
1299
0
    }
1300
0
    asdl_stmt_seq* _res = NULL;
1301
0
    int _mark = p->mark;
1302
0
    { // compound_stmt
1303
0
        if (p->error_indicator) {
1304
0
            p->level--;
1305
0
            return NULL;
1306
0
        }
1307
0
        D(fprintf(stderr, "%*c> single_compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1308
0
        stmt_ty a;
1309
0
        if (
1310
0
            (a = compound_stmt_rule(p))  // compound_stmt
1311
0
        )
1312
0
        {
1313
0
            D(fprintf(stderr, "%*c+ single_compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1314
0
            _res = _PyPegen_register_stmts ( p , ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , a ) );
1315
0
            if (_res == NULL && PyErr_Occurred()) {
1316
0
                p->error_indicator = 1;
1317
0
                p->level--;
1318
0
                return NULL;
1319
0
            }
1320
0
            goto done;
1321
0
        }
1322
0
        p->mark = _mark;
1323
0
        D(fprintf(stderr, "%*c%s single_compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1324
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compound_stmt"));
1325
0
    }
1326
0
    _res = NULL;
1327
0
  done:
1328
0
    p->level--;
1329
0
    return _res;
1330
0
}
1331
1332
// statement_newline: single_compound_stmt NEWLINE | simple_stmts | NEWLINE | $
1333
static asdl_stmt_seq*
1334
statement_newline_rule(Parser *p)
1335
0
{
1336
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1337
0
        _Pypegen_stack_overflow(p);
1338
0
    }
1339
0
    if (p->error_indicator) {
1340
0
        p->level--;
1341
0
        return NULL;
1342
0
    }
1343
0
    asdl_stmt_seq* _res = NULL;
1344
0
    int _mark = p->mark;
1345
0
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1346
0
        p->error_indicator = 1;
1347
0
        p->level--;
1348
0
        return NULL;
1349
0
    }
1350
0
    int _start_lineno = p->tokens[_mark]->lineno;
1351
0
    UNUSED(_start_lineno); // Only used by EXTRA macro
1352
0
    int _start_col_offset = p->tokens[_mark]->col_offset;
1353
0
    UNUSED(_start_col_offset); // Only used by EXTRA macro
1354
0
    { // single_compound_stmt NEWLINE
1355
0
        if (p->error_indicator) {
1356
0
            p->level--;
1357
0
            return NULL;
1358
0
        }
1359
0
        D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_compound_stmt NEWLINE"));
1360
0
        asdl_stmt_seq* a;
1361
0
        Token * newline_var;
1362
0
        if (
1363
0
            (a = single_compound_stmt_rule(p))  // single_compound_stmt
1364
0
            &&
1365
0
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1366
0
        )
1367
0
        {
1368
0
            D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_compound_stmt NEWLINE"));
1369
0
            _res = a;
1370
0
            if (_res == NULL && PyErr_Occurred()) {
1371
0
                p->error_indicator = 1;
1372
0
                p->level--;
1373
0
                return NULL;
1374
0
            }
1375
0
            goto done;
1376
0
        }
1377
0
        p->mark = _mark;
1378
0
        D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1379
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_compound_stmt NEWLINE"));
1380
0
    }
1381
0
    { // simple_stmts
1382
0
        if (p->error_indicator) {
1383
0
            p->level--;
1384
0
            return NULL;
1385
0
        }
1386
0
        D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1387
0
        asdl_stmt_seq* simple_stmts_var;
1388
0
        if (
1389
0
            (simple_stmts_var = simple_stmts_rule(p))  // simple_stmts
1390
0
        )
1391
0
        {
1392
0
            D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1393
0
            _res = simple_stmts_var;
1394
0
            goto done;
1395
0
        }
1396
0
        p->mark = _mark;
1397
0
        D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1398
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
1399
0
    }
1400
0
    { // NEWLINE
1401
0
        if (p->error_indicator) {
1402
0
            p->level--;
1403
0
            return NULL;
1404
0
        }
1405
0
        D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
1406
0
        Token * newline_var;
1407
0
        if (
1408
0
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1409
0
        )
1410
0
        {
1411
0
            D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
1412
0
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1413
0
            if (_token == NULL) {
1414
0
                p->level--;
1415
0
                return NULL;
1416
0
            }
1417
0
            int _end_lineno = _token->end_lineno;
1418
0
            UNUSED(_end_lineno); // Only used by EXTRA macro
1419
0
            int _end_col_offset = _token->end_col_offset;
1420
0
            UNUSED(_end_col_offset); // Only used by EXTRA macro
1421
0
            _res = ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , CHECK ( stmt_ty , _PyAST_Pass ( EXTRA ) ) );
1422
0
            if (_res == NULL && PyErr_Occurred()) {
1423
0
                p->error_indicator = 1;
1424
0
                p->level--;
1425
0
                return NULL;
1426
0
            }
1427
0
            goto done;
1428
0
        }
1429
0
        p->mark = _mark;
1430
0
        D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1431
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
1432
0
    }
1433
0
    { // $
1434
0
        if (p->error_indicator) {
1435
0
            p->level--;
1436
0
            return NULL;
1437
0
        }
1438
0
        D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "$"));
1439
0
        Token * endmarker_var;
1440
0
        if (
1441
0
            (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1442
0
        )
1443
0
        {
1444
0
            D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "$"));
1445
0
            _res = _PyPegen_interactive_exit ( p );
1446
0
            if (_res == NULL && PyErr_Occurred()) {
1447
0
                p->error_indicator = 1;
1448
0
                p->level--;
1449
0
                return NULL;
1450
0
            }
1451
0
            goto done;
1452
0
        }
1453
0
        p->mark = _mark;
1454
0
        D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1455
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "$"));
1456
0
    }
1457
0
    _res = NULL;
1458
0
  done:
1459
0
    p->level--;
1460
0
    return _res;
1461
0
}
1462
1463
// simple_stmts: simple_stmt !';' NEWLINE | ';'.simple_stmt+ ';'? NEWLINE
1464
static asdl_stmt_seq*
1465
simple_stmts_rule(Parser *p)
1466
167k
{
1467
167k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1468
0
        _Pypegen_stack_overflow(p);
1469
0
    }
1470
167k
    if (p->error_indicator) {
1471
0
        p->level--;
1472
0
        return NULL;
1473
0
    }
1474
167k
    asdl_stmt_seq* _res = NULL;
1475
167k
    int _mark = p->mark;
1476
167k
    { // simple_stmt !';' NEWLINE
1477
167k
        if (p->error_indicator) {
1478
0
            p->level--;
1479
0
            return NULL;
1480
0
        }
1481
167k
        D(fprintf(stderr, "%*c> simple_stmts[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt !';' NEWLINE"));
1482
167k
        stmt_ty a;
1483
167k
        Token * newline_var;
1484
167k
        if (
1485
167k
            (a = simple_stmt_rule(p))  // simple_stmt
1486
167k
            &&
1487
167k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 13)  // token=';'
1488
167k
            &&
1489
167k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1490
167k
        )
1491
112k
        {
1492
112k
            D(fprintf(stderr, "%*c+ simple_stmts[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt !';' NEWLINE"));
1493
112k
            _res = ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , a );
1494
112k
            if (_res == NULL && PyErr_Occurred()) {
1495
0
                p->error_indicator = 1;
1496
0
                p->level--;
1497
0
                return NULL;
1498
0
            }
1499
112k
            goto done;
1500
112k
        }
1501
54.9k
        p->mark = _mark;
1502
54.9k
        D(fprintf(stderr, "%*c%s simple_stmts[%d-%d]: %s failed!\n", p->level, ' ',
1503
54.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt !';' NEWLINE"));
1504
54.9k
    }
1505
0
    { // ';'.simple_stmt+ ';'? NEWLINE
1506
54.9k
        if (p->error_indicator) {
1507
4.34k
            p->level--;
1508
4.34k
            return NULL;
1509
4.34k
        }
1510
50.6k
        D(fprintf(stderr, "%*c> simple_stmts[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1511
50.6k
        void *_opt_var;
1512
50.6k
        UNUSED(_opt_var); // Silence compiler warnings
1513
50.6k
        asdl_stmt_seq* a;
1514
50.6k
        Token * newline_var;
1515
50.6k
        if (
1516
50.6k
            (a = (asdl_stmt_seq*)_gather_4_rule(p))  // ';'.simple_stmt+
1517
50.6k
            &&
1518
50.6k
            (_opt_var = _PyPegen_expect_token(p, 13), !p->error_indicator)  // ';'?
1519
50.6k
            &&
1520
50.6k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1521
50.6k
        )
1522
2.65k
        {
1523
2.65k
            D(fprintf(stderr, "%*c+ simple_stmts[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1524
2.65k
            _res = a;
1525
2.65k
            if (_res == NULL && PyErr_Occurred()) {
1526
0
                p->error_indicator = 1;
1527
0
                p->level--;
1528
0
                return NULL;
1529
0
            }
1530
2.65k
            goto done;
1531
2.65k
        }
1532
47.9k
        p->mark = _mark;
1533
47.9k
        D(fprintf(stderr, "%*c%s simple_stmts[%d-%d]: %s failed!\n", p->level, ' ',
1534
47.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1535
47.9k
    }
1536
0
    _res = NULL;
1537
163k
  done:
1538
163k
    p->level--;
1539
163k
    return _res;
1540
47.9k
}
1541
1542
// simple_stmt:
1543
//     | assignment
1544
//     | &"type" type_alias
1545
//     | star_expressions
1546
//     | &'return' return_stmt
1547
//     | &('import' | 'from') import_stmt
1548
//     | &'raise' raise_stmt
1549
//     | &'pass' pass_stmt
1550
//     | &'del' del_stmt
1551
//     | &'yield' yield_stmt
1552
//     | &'assert' assert_stmt
1553
//     | &'break' break_stmt
1554
//     | &'continue' continue_stmt
1555
//     | &'global' global_stmt
1556
//     | &'nonlocal' nonlocal_stmt
1557
static stmt_ty
1558
simple_stmt_rule(Parser *p)
1559
239k
{
1560
239k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1561
0
        _Pypegen_stack_overflow(p);
1562
0
    }
1563
239k
    if (p->error_indicator) {
1564
0
        p->level--;
1565
0
        return NULL;
1566
0
    }
1567
239k
    stmt_ty _res = NULL;
1568
239k
    if (_PyPegen_is_memoized(p, simple_stmt_type, &_res)) {
1569
50.6k
        p->level--;
1570
50.6k
        return _res;
1571
50.6k
    }
1572
189k
    int _mark = p->mark;
1573
189k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1574
0
        p->error_indicator = 1;
1575
0
        p->level--;
1576
0
        return NULL;
1577
0
    }
1578
189k
    int _start_lineno = p->tokens[_mark]->lineno;
1579
189k
    UNUSED(_start_lineno); // Only used by EXTRA macro
1580
189k
    int _start_col_offset = p->tokens[_mark]->col_offset;
1581
189k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
1582
189k
    { // assignment
1583
189k
        if (p->error_indicator) {
1584
0
            p->level--;
1585
0
            return NULL;
1586
0
        }
1587
189k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment"));
1588
189k
        stmt_ty assignment_var;
1589
189k
        if (
1590
189k
            (assignment_var = assignment_rule(p))  // assignment
1591
189k
        )
1592
20.5k
        {
1593
20.5k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment"));
1594
20.5k
            _res = assignment_var;
1595
20.5k
            goto done;
1596
20.5k
        }
1597
168k
        p->mark = _mark;
1598
168k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1599
168k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment"));
1600
168k
    }
1601
0
    { // &"type" type_alias
1602
168k
        if (p->error_indicator) {
1603
4.73k
            p->level--;
1604
4.73k
            return NULL;
1605
4.73k
        }
1606
164k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&\"type\" type_alias"));
1607
164k
        stmt_ty type_alias_var;
1608
164k
        if (
1609
164k
            _PyPegen_lookahead_with_string(1, _PyPegen_expect_soft_keyword, p, "type")
1610
164k
            &&
1611
164k
            (type_alias_var = type_alias_rule(p))  // type_alias
1612
164k
        )
1613
275
        {
1614
275
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&\"type\" type_alias"));
1615
275
            _res = type_alias_var;
1616
275
            goto done;
1617
275
        }
1618
163k
        p->mark = _mark;
1619
163k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1620
163k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&\"type\" type_alias"));
1621
163k
    }
1622
0
    { // star_expressions
1623
163k
        if (p->error_indicator) {
1624
2
            p->level--;
1625
2
            return NULL;
1626
2
        }
1627
163k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1628
163k
        expr_ty e;
1629
163k
        if (
1630
163k
            (e = star_expressions_rule(p))  // star_expressions
1631
163k
        )
1632
98.4k
        {
1633
98.4k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1634
98.4k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1635
98.4k
            if (_token == NULL) {
1636
0
                p->level--;
1637
0
                return NULL;
1638
0
            }
1639
98.4k
            int _end_lineno = _token->end_lineno;
1640
98.4k
            UNUSED(_end_lineno); // Only used by EXTRA macro
1641
98.4k
            int _end_col_offset = _token->end_col_offset;
1642
98.4k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
1643
98.4k
            _res = _PyAST_Expr ( e , EXTRA );
1644
98.4k
            if (_res == NULL && PyErr_Occurred()) {
1645
0
                p->error_indicator = 1;
1646
0
                p->level--;
1647
0
                return NULL;
1648
0
            }
1649
98.4k
            goto done;
1650
98.4k
        }
1651
65.3k
        p->mark = _mark;
1652
65.3k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1653
65.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
1654
65.3k
    }
1655
0
    { // &'return' return_stmt
1656
65.3k
        if (p->error_indicator) {
1657
385
            p->level--;
1658
385
            return NULL;
1659
385
        }
1660
64.9k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'return' return_stmt"));
1661
64.9k
        stmt_ty return_stmt_var;
1662
64.9k
        if (
1663
64.9k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 522)  // token='return'
1664
64.9k
            &&
1665
64.9k
            (return_stmt_var = return_stmt_rule(p))  // return_stmt
1666
64.9k
        )
1667
7.97k
        {
1668
7.97k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'return' return_stmt"));
1669
7.97k
            _res = return_stmt_var;
1670
7.97k
            goto done;
1671
7.97k
        }
1672
56.9k
        p->mark = _mark;
1673
56.9k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1674
56.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'return' return_stmt"));
1675
56.9k
    }
1676
0
    { // &('import' | 'from') import_stmt
1677
56.9k
        if (p->error_indicator) {
1678
66
            p->level--;
1679
66
            return NULL;
1680
66
        }
1681
56.9k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('import' | 'from') import_stmt"));
1682
56.9k
        stmt_ty import_stmt_var;
1683
56.9k
        if (
1684
56.9k
            _PyPegen_lookahead(1, _tmp_5_rule, p)
1685
56.9k
            &&
1686
56.9k
            (import_stmt_var = import_stmt_rule(p))  // import_stmt
1687
56.9k
        )
1688
5.40k
        {
1689
5.40k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('import' | 'from') import_stmt"));
1690
5.40k
            _res = import_stmt_var;
1691
5.40k
            goto done;
1692
5.40k
        }
1693
51.5k
        p->mark = _mark;
1694
51.5k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1695
51.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('import' | 'from') import_stmt"));
1696
51.5k
    }
1697
0
    { // &'raise' raise_stmt
1698
51.5k
        if (p->error_indicator) {
1699
72
            p->level--;
1700
72
            return NULL;
1701
72
        }
1702
51.4k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'raise' raise_stmt"));
1703
51.4k
        stmt_ty raise_stmt_var;
1704
51.4k
        if (
1705
51.4k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 628)  // token='raise'
1706
51.4k
            &&
1707
51.4k
            (raise_stmt_var = raise_stmt_rule(p))  // raise_stmt
1708
51.4k
        )
1709
3.71k
        {
1710
3.71k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'raise' raise_stmt"));
1711
3.71k
            _res = raise_stmt_var;
1712
3.71k
            goto done;
1713
3.71k
        }
1714
47.7k
        p->mark = _mark;
1715
47.7k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1716
47.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'raise' raise_stmt"));
1717
47.7k
    }
1718
0
    { // &'pass' pass_stmt
1719
47.7k
        if (p->error_indicator) {
1720
41
            p->level--;
1721
41
            return NULL;
1722
41
        }
1723
47.6k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'pass' pass_stmt"));
1724
47.6k
        stmt_ty pass_stmt_var;
1725
47.6k
        if (
1726
47.6k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 527)  // token='pass'
1727
47.6k
            &&
1728
47.6k
            (pass_stmt_var = pass_stmt_rule(p))  // pass_stmt
1729
47.6k
        )
1730
1.51k
        {
1731
1.51k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'pass' pass_stmt"));
1732
1.51k
            _res = pass_stmt_var;
1733
1.51k
            goto done;
1734
1.51k
        }
1735
46.1k
        p->mark = _mark;
1736
46.1k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1737
46.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'pass' pass_stmt"));
1738
46.1k
    }
1739
0
    { // &'del' del_stmt
1740
46.1k
        if (p->error_indicator) {
1741
0
            p->level--;
1742
0
            return NULL;
1743
0
        }
1744
46.1k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'del' del_stmt"));
1745
46.1k
        stmt_ty del_stmt_var;
1746
46.1k
        if (
1747
46.1k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 630)  // token='del'
1748
46.1k
            &&
1749
46.1k
            (del_stmt_var = del_stmt_rule(p))  // del_stmt
1750
46.1k
        )
1751
788
        {
1752
788
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'del' del_stmt"));
1753
788
            _res = del_stmt_var;
1754
788
            goto done;
1755
788
        }
1756
45.3k
        p->mark = _mark;
1757
45.3k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1758
45.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'del' del_stmt"));
1759
45.3k
    }
1760
0
    { // &'yield' yield_stmt
1761
45.3k
        if (p->error_indicator) {
1762
214
            p->level--;
1763
214
            return NULL;
1764
214
        }
1765
45.1k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'yield' yield_stmt"));
1766
45.1k
        stmt_ty yield_stmt_var;
1767
45.1k
        if (
1768
45.1k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 588)  // token='yield'
1769
45.1k
            &&
1770
45.1k
            (yield_stmt_var = yield_stmt_rule(p))  // yield_stmt
1771
45.1k
        )
1772
1.52k
        {
1773
1.52k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'yield' yield_stmt"));
1774
1.52k
            _res = yield_stmt_var;
1775
1.52k
            goto done;
1776
1.52k
        }
1777
43.6k
        p->mark = _mark;
1778
43.6k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1779
43.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'yield' yield_stmt"));
1780
43.6k
    }
1781
0
    { // &'assert' assert_stmt
1782
43.6k
        if (p->error_indicator) {
1783
3
            p->level--;
1784
3
            return NULL;
1785
3
        }
1786
43.6k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'assert' assert_stmt"));
1787
43.6k
        stmt_ty assert_stmt_var;
1788
43.6k
        if (
1789
43.6k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 533)  // token='assert'
1790
43.6k
            &&
1791
43.6k
            (assert_stmt_var = assert_stmt_rule(p))  // assert_stmt
1792
43.6k
        )
1793
626
        {
1794
626
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'assert' assert_stmt"));
1795
626
            _res = assert_stmt_var;
1796
626
            goto done;
1797
626
        }
1798
43.0k
        p->mark = _mark;
1799
43.0k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1800
43.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'assert' assert_stmt"));
1801
43.0k
    }
1802
0
    { // &'break' break_stmt
1803
43.0k
        if (p->error_indicator) {
1804
35
            p->level--;
1805
35
            return NULL;
1806
35
        }
1807
42.9k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'break' break_stmt"));
1808
42.9k
        stmt_ty break_stmt_var;
1809
42.9k
        if (
1810
42.9k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 528)  // token='break'
1811
42.9k
            &&
1812
42.9k
            (break_stmt_var = break_stmt_rule(p))  // break_stmt
1813
42.9k
        )
1814
1.50k
        {
1815
1.50k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'break' break_stmt"));
1816
1.50k
            _res = break_stmt_var;
1817
1.50k
            goto done;
1818
1.50k
        }
1819
41.4k
        p->mark = _mark;
1820
41.4k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1821
41.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'break' break_stmt"));
1822
41.4k
    }
1823
0
    { // &'continue' continue_stmt
1824
41.4k
        if (p->error_indicator) {
1825
0
            p->level--;
1826
0
            return NULL;
1827
0
        }
1828
41.4k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'continue' continue_stmt"));
1829
41.4k
        stmt_ty continue_stmt_var;
1830
41.4k
        if (
1831
41.4k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 529)  // token='continue'
1832
41.4k
            &&
1833
41.4k
            (continue_stmt_var = continue_stmt_rule(p))  // continue_stmt
1834
41.4k
        )
1835
1.09k
        {
1836
1.09k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'continue' continue_stmt"));
1837
1.09k
            _res = continue_stmt_var;
1838
1.09k
            goto done;
1839
1.09k
        }
1840
40.3k
        p->mark = _mark;
1841
40.3k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1842
40.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'continue' continue_stmt"));
1843
40.3k
    }
1844
0
    { // &'global' global_stmt
1845
40.3k
        if (p->error_indicator) {
1846
0
            p->level--;
1847
0
            return NULL;
1848
0
        }
1849
40.3k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'global' global_stmt"));
1850
40.3k
        stmt_ty global_stmt_var;
1851
40.3k
        if (
1852
40.3k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 530)  // token='global'
1853
40.3k
            &&
1854
40.3k
            (global_stmt_var = global_stmt_rule(p))  // global_stmt
1855
40.3k
        )
1856
604
        {
1857
604
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'global' global_stmt"));
1858
604
            _res = global_stmt_var;
1859
604
            goto done;
1860
604
        }
1861
39.7k
        p->mark = _mark;
1862
39.7k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1863
39.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'global' global_stmt"));
1864
39.7k
    }
1865
0
    { // &'nonlocal' nonlocal_stmt
1866
39.7k
        if (p->error_indicator) {
1867
1
            p->level--;
1868
1
            return NULL;
1869
1
        }
1870
39.7k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
1871
39.7k
        stmt_ty nonlocal_stmt_var;
1872
39.7k
        if (
1873
39.7k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 531)  // token='nonlocal'
1874
39.7k
            &&
1875
39.7k
            (nonlocal_stmt_var = nonlocal_stmt_rule(p))  // nonlocal_stmt
1876
39.7k
        )
1877
705
        {
1878
705
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
1879
705
            _res = nonlocal_stmt_var;
1880
705
            goto done;
1881
705
        }
1882
39.0k
        p->mark = _mark;
1883
39.0k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1884
39.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
1885
39.0k
    }
1886
0
    _res = NULL;
1887
183k
  done:
1888
183k
    _PyPegen_insert_memo(p, _mark, simple_stmt_type, _res);
1889
183k
    p->level--;
1890
183k
    return _res;
1891
39.0k
}
1892
1893
// compound_stmt:
1894
//     | &('def' | '@' | 'async') function_def
1895
//     | &'if' if_stmt
1896
//     | &('class' | '@') class_def
1897
//     | &('with' | 'async') with_stmt
1898
//     | &('for' | 'async') for_stmt
1899
//     | &'try' try_stmt
1900
//     | &'while' while_stmt
1901
//     | match_stmt
1902
static stmt_ty
1903
compound_stmt_rule(Parser *p)
1904
171k
{
1905
171k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1906
0
        _Pypegen_stack_overflow(p);
1907
0
    }
1908
171k
    if (p->error_indicator) {
1909
0
        p->level--;
1910
0
        return NULL;
1911
0
    }
1912
171k
    stmt_ty _res = NULL;
1913
171k
    int _mark = p->mark;
1914
171k
    { // &('def' | '@' | 'async') function_def
1915
171k
        if (p->error_indicator) {
1916
0
            p->level--;
1917
0
            return NULL;
1918
0
        }
1919
171k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('def' | '@' | 'async') function_def"));
1920
171k
        stmt_ty function_def_var;
1921
171k
        if (
1922
171k
            _PyPegen_lookahead(1, _tmp_6_rule, p)
1923
171k
            &&
1924
171k
            (function_def_var = function_def_rule(p))  // function_def
1925
171k
        )
1926
11.3k
        {
1927
11.3k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('def' | '@' | 'async') function_def"));
1928
11.3k
            _res = function_def_var;
1929
11.3k
            goto done;
1930
11.3k
        }
1931
160k
        p->mark = _mark;
1932
160k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1933
160k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('def' | '@' | 'async') function_def"));
1934
160k
    }
1935
0
    { // &'if' if_stmt
1936
160k
        if (p->error_indicator) {
1937
1.65k
            p->level--;
1938
1.65k
            return NULL;
1939
1.65k
        }
1940
158k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'if' if_stmt"));
1941
158k
        stmt_ty if_stmt_var;
1942
158k
        if (
1943
158k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 687)  // token='if'
1944
158k
            &&
1945
158k
            (if_stmt_var = if_stmt_rule(p))  // if_stmt
1946
158k
        )
1947
8.35k
        {
1948
8.35k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'if' if_stmt"));
1949
8.35k
            _res = if_stmt_var;
1950
8.35k
            goto done;
1951
8.35k
        }
1952
150k
        p->mark = _mark;
1953
150k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1954
150k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'if' if_stmt"));
1955
150k
    }
1956
0
    { // &('class' | '@') class_def
1957
150k
        if (p->error_indicator) {
1958
56
            p->level--;
1959
56
            return NULL;
1960
56
        }
1961
150k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('class' | '@') class_def"));
1962
150k
        stmt_ty class_def_var;
1963
150k
        if (
1964
150k
            _PyPegen_lookahead(1, _tmp_7_rule, p)
1965
150k
            &&
1966
150k
            (class_def_var = class_def_rule(p))  // class_def
1967
150k
        )
1968
3.87k
        {
1969
3.87k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('class' | '@') class_def"));
1970
3.87k
            _res = class_def_var;
1971
3.87k
            goto done;
1972
3.87k
        }
1973
146k
        p->mark = _mark;
1974
146k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1975
146k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('class' | '@') class_def"));
1976
146k
    }
1977
0
    { // &('with' | 'async') with_stmt
1978
146k
        if (p->error_indicator) {
1979
36
            p->level--;
1980
36
            return NULL;
1981
36
        }
1982
146k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('with' | 'async') with_stmt"));
1983
146k
        stmt_ty with_stmt_var;
1984
146k
        if (
1985
146k
            _PyPegen_lookahead(1, _tmp_8_rule, p)
1986
146k
            &&
1987
146k
            (with_stmt_var = with_stmt_rule(p))  // with_stmt
1988
146k
        )
1989
4.49k
        {
1990
4.49k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('with' | 'async') with_stmt"));
1991
4.49k
            _res = with_stmt_var;
1992
4.49k
            goto done;
1993
4.49k
        }
1994
141k
        p->mark = _mark;
1995
141k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1996
141k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('with' | 'async') with_stmt"));
1997
141k
    }
1998
0
    { // &('for' | 'async') for_stmt
1999
141k
        if (p->error_indicator) {
2000
145
            p->level--;
2001
145
            return NULL;
2002
145
        }
2003
141k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('for' | 'async') for_stmt"));
2004
141k
        stmt_ty for_stmt_var;
2005
141k
        if (
2006
141k
            _PyPegen_lookahead(1, _tmp_9_rule, p)
2007
141k
            &&
2008
141k
            (for_stmt_var = for_stmt_rule(p))  // for_stmt
2009
141k
        )
2010
2.00k
        {
2011
2.00k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('for' | 'async') for_stmt"));
2012
2.00k
            _res = for_stmt_var;
2013
2.00k
            goto done;
2014
2.00k
        }
2015
139k
        p->mark = _mark;
2016
139k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2017
139k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('for' | 'async') for_stmt"));
2018
139k
    }
2019
0
    { // &'try' try_stmt
2020
139k
        if (p->error_indicator) {
2021
42
            p->level--;
2022
42
            return NULL;
2023
42
        }
2024
139k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'try' try_stmt"));
2025
139k
        stmt_ty try_stmt_var;
2026
139k
        if (
2027
139k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 661)  // token='try'
2028
139k
            &&
2029
139k
            (try_stmt_var = try_stmt_rule(p))  // try_stmt
2030
139k
        )
2031
5.52k
        {
2032
5.52k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'try' try_stmt"));
2033
5.52k
            _res = try_stmt_var;
2034
5.52k
            goto done;
2035
5.52k
        }
2036
134k
        p->mark = _mark;
2037
134k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2038
134k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'try' try_stmt"));
2039
134k
    }
2040
0
    { // &'while' while_stmt
2041
134k
        if (p->error_indicator) {
2042
181
            p->level--;
2043
181
            return NULL;
2044
181
        }
2045
133k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'while' while_stmt"));
2046
133k
        stmt_ty while_stmt_var;
2047
133k
        if (
2048
133k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 694)  // token='while'
2049
133k
            &&
2050
133k
            (while_stmt_var = while_stmt_rule(p))  // while_stmt
2051
133k
        )
2052
1.23k
        {
2053
1.23k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'while' while_stmt"));
2054
1.23k
            _res = while_stmt_var;
2055
1.23k
            goto done;
2056
1.23k
        }
2057
132k
        p->mark = _mark;
2058
132k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2059
132k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'while' while_stmt"));
2060
132k
    }
2061
0
    { // match_stmt
2062
132k
        if (p->error_indicator) {
2063
21
            p->level--;
2064
21
            return NULL;
2065
21
        }
2066
132k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "match_stmt"));
2067
132k
        stmt_ty match_stmt_var;
2068
132k
        if (
2069
132k
            (match_stmt_var = match_stmt_rule(p))  // match_stmt
2070
132k
        )
2071
653
        {
2072
653
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "match_stmt"));
2073
653
            _res = match_stmt_var;
2074
653
            goto done;
2075
653
        }
2076
132k
        p->mark = _mark;
2077
132k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2078
132k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "match_stmt"));
2079
132k
    }
2080
0
    _res = NULL;
2081
169k
  done:
2082
169k
    p->level--;
2083
169k
    return _res;
2084
132k
}
2085
2086
// assignment:
2087
//     | NAME ':' expression ['=' annotated_rhs]
2088
//     | ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
2089
//     | ((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?
2090
//     | single_target augassign ~ annotated_rhs
2091
//     | invalid_assignment
2092
static stmt_ty
2093
assignment_rule(Parser *p)
2094
189k
{
2095
189k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2096
0
        _Pypegen_stack_overflow(p);
2097
0
    }
2098
189k
    if (p->error_indicator) {
2099
0
        p->level--;
2100
0
        return NULL;
2101
0
    }
2102
189k
    stmt_ty _res = NULL;
2103
189k
    int _mark = p->mark;
2104
189k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2105
0
        p->error_indicator = 1;
2106
0
        p->level--;
2107
0
        return NULL;
2108
0
    }
2109
189k
    int _start_lineno = p->tokens[_mark]->lineno;
2110
189k
    UNUSED(_start_lineno); // Only used by EXTRA macro
2111
189k
    int _start_col_offset = p->tokens[_mark]->col_offset;
2112
189k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
2113
189k
    { // NAME ':' expression ['=' annotated_rhs]
2114
189k
        if (p->error_indicator) {
2115
0
            p->level--;
2116
0
            return NULL;
2117
0
        }
2118
189k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2119
189k
        Token * _literal;
2120
189k
        expr_ty a;
2121
189k
        expr_ty b;
2122
189k
        void *c;
2123
189k
        if (
2124
189k
            (a = _PyPegen_name_token(p))  // NAME
2125
189k
            &&
2126
189k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
2127
189k
            &&
2128
189k
            (b = expression_rule(p))  // expression
2129
189k
            &&
2130
189k
            (c = _tmp_10_rule(p), !p->error_indicator)  // ['=' annotated_rhs]
2131
189k
        )
2132
2.34k
        {
2133
2.34k
            D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2134
2.34k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2135
2.34k
            if (_token == NULL) {
2136
0
                p->level--;
2137
0
                return NULL;
2138
0
            }
2139
2.34k
            int _end_lineno = _token->end_lineno;
2140
2.34k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2141
2.34k
            int _end_col_offset = _token->end_col_offset;
2142
2.34k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2143
2.34k
            _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 ) );
2144
2.34k
            if (_res == NULL && PyErr_Occurred()) {
2145
0
                p->error_indicator = 1;
2146
0
                p->level--;
2147
0
                return NULL;
2148
0
            }
2149
2.34k
            goto done;
2150
2.34k
        }
2151
186k
        p->mark = _mark;
2152
186k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2153
186k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2154
186k
    }
2155
0
    { // ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
2156
186k
        if (p->error_indicator) {
2157
168
            p->level--;
2158
168
            return NULL;
2159
168
        }
2160
186k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
2161
186k
        Token * _literal;
2162
186k
        void *a;
2163
186k
        expr_ty b;
2164
186k
        void *c;
2165
186k
        if (
2166
186k
            (a = _tmp_11_rule(p))  // '(' single_target ')' | single_subscript_attribute_target
2167
186k
            &&
2168
186k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
2169
186k
            &&
2170
186k
            (b = expression_rule(p))  // expression
2171
186k
            &&
2172
186k
            (c = _tmp_10_rule(p), !p->error_indicator)  // ['=' annotated_rhs]
2173
186k
        )
2174
927
        {
2175
927
            D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
2176
927
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2177
927
            if (_token == NULL) {
2178
0
                p->level--;
2179
0
                return NULL;
2180
0
            }
2181
927
            int _end_lineno = _token->end_lineno;
2182
927
            UNUSED(_end_lineno); // Only used by EXTRA macro
2183
927
            int _end_col_offset = _token->end_col_offset;
2184
927
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2185
927
            _res = CHECK_VERSION ( stmt_ty , 6 , "Variable annotations syntax is" , _PyAST_AnnAssign ( a , b , c , 0 , EXTRA ) );
2186
927
            if (_res == NULL && PyErr_Occurred()) {
2187
0
                p->error_indicator = 1;
2188
0
                p->level--;
2189
0
                return NULL;
2190
0
            }
2191
927
            goto done;
2192
927
        }
2193
185k
        p->mark = _mark;
2194
185k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2195
185k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
2196
185k
    }
2197
0
    { // ((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?
2198
185k
        if (p->error_indicator) {
2199
2.91k
            p->level--;
2200
2.91k
            return NULL;
2201
2.91k
        }
2202
182k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?"));
2203
182k
        asdl_expr_seq* a;
2204
182k
        expr_ty b;
2205
182k
        void *tc;
2206
182k
        if (
2207
182k
            (a = (asdl_expr_seq*)_loop1_12_rule(p))  // ((star_targets '='))+
2208
182k
            &&
2209
182k
            (b = annotated_rhs_rule(p))  // annotated_rhs
2210
182k
            &&
2211
182k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22)  // token='='
2212
182k
            &&
2213
182k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
2214
182k
        )
2215
14.6k
        {
2216
14.6k
            D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?"));
2217
14.6k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2218
14.6k
            if (_token == NULL) {
2219
0
                p->level--;
2220
0
                return NULL;
2221
0
            }
2222
14.6k
            int _end_lineno = _token->end_lineno;
2223
14.6k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2224
14.6k
            int _end_col_offset = _token->end_col_offset;
2225
14.6k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2226
14.6k
            _res = _PyAST_Assign ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
2227
14.6k
            if (_res == NULL && PyErr_Occurred()) {
2228
0
                p->error_indicator = 1;
2229
0
                p->level--;
2230
0
                return NULL;
2231
0
            }
2232
14.6k
            goto done;
2233
14.6k
        }
2234
168k
        p->mark = _mark;
2235
168k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2236
168k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?"));
2237
168k
    }
2238
0
    { // single_target augassign ~ annotated_rhs
2239
168k
        if (p->error_indicator) {
2240
303
            p->level--;
2241
303
            return NULL;
2242
303
        }
2243
168k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_target augassign ~ annotated_rhs"));
2244
168k
        int _cut_var = 0;
2245
168k
        expr_ty a;
2246
168k
        AugOperator* b;
2247
168k
        expr_ty c;
2248
168k
        if (
2249
168k
            (a = single_target_rule(p))  // single_target
2250
168k
            &&
2251
168k
            (b = augassign_rule(p))  // augassign
2252
168k
            &&
2253
168k
            (_cut_var = 1)
2254
168k
            &&
2255
168k
            (c = annotated_rhs_rule(p))  // annotated_rhs
2256
168k
        )
2257
2.64k
        {
2258
2.64k
            D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_target augassign ~ annotated_rhs"));
2259
2.64k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2260
2.64k
            if (_token == NULL) {
2261
0
                p->level--;
2262
0
                return NULL;
2263
0
            }
2264
2.64k
            int _end_lineno = _token->end_lineno;
2265
2.64k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2266
2.64k
            int _end_col_offset = _token->end_col_offset;
2267
2.64k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2268
2.64k
            _res = _PyAST_AugAssign ( a , b -> kind , c , EXTRA );
2269
2.64k
            if (_res == NULL && PyErr_Occurred()) {
2270
0
                p->error_indicator = 1;
2271
0
                p->level--;
2272
0
                return NULL;
2273
0
            }
2274
2.64k
            goto done;
2275
2.64k
        }
2276
165k
        p->mark = _mark;
2277
165k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2278
165k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_target augassign ~ annotated_rhs"));
2279
165k
        if (_cut_var) {
2280
145
            p->level--;
2281
145
            return NULL;
2282
145
        }
2283
165k
    }
2284
165k
    if (p->call_invalid_rules) { // invalid_assignment
2285
39.5k
        if (p->error_indicator) {
2286
0
            p->level--;
2287
0
            return NULL;
2288
0
        }
2289
39.5k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_assignment"));
2290
39.5k
        void *invalid_assignment_var;
2291
39.5k
        if (
2292
39.5k
            (invalid_assignment_var = invalid_assignment_rule(p))  // invalid_assignment
2293
39.5k
        )
2294
0
        {
2295
0
            D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_assignment"));
2296
0
            _res = invalid_assignment_var;
2297
0
            goto done;
2298
0
        }
2299
39.5k
        p->mark = _mark;
2300
39.5k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2301
39.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_assignment"));
2302
39.5k
    }
2303
165k
    _res = NULL;
2304
185k
  done:
2305
185k
    p->level--;
2306
185k
    return _res;
2307
165k
}
2308
2309
// annotated_rhs: yield_expr | star_expressions
2310
static expr_ty
2311
annotated_rhs_rule(Parser *p)
2312
53.5k
{
2313
53.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2314
1
        _Pypegen_stack_overflow(p);
2315
1
    }
2316
53.5k
    if (p->error_indicator) {
2317
1
        p->level--;
2318
1
        return NULL;
2319
1
    }
2320
53.5k
    expr_ty _res = NULL;
2321
53.5k
    int _mark = p->mark;
2322
53.5k
    { // yield_expr
2323
53.5k
        if (p->error_indicator) {
2324
0
            p->level--;
2325
0
            return NULL;
2326
0
        }
2327
53.5k
        D(fprintf(stderr, "%*c> annotated_rhs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
2328
53.5k
        expr_ty yield_expr_var;
2329
53.5k
        if (
2330
53.5k
            (yield_expr_var = yield_expr_rule(p))  // yield_expr
2331
53.5k
        )
2332
261
        {
2333
261
            D(fprintf(stderr, "%*c+ annotated_rhs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
2334
261
            _res = yield_expr_var;
2335
261
            goto done;
2336
261
        }
2337
53.2k
        p->mark = _mark;
2338
53.2k
        D(fprintf(stderr, "%*c%s annotated_rhs[%d-%d]: %s failed!\n", p->level, ' ',
2339
53.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
2340
53.2k
    }
2341
0
    { // star_expressions
2342
53.2k
        if (p->error_indicator) {
2343
116
            p->level--;
2344
116
            return NULL;
2345
116
        }
2346
53.1k
        D(fprintf(stderr, "%*c> annotated_rhs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
2347
53.1k
        expr_ty star_expressions_var;
2348
53.1k
        if (
2349
53.1k
            (star_expressions_var = star_expressions_rule(p))  // star_expressions
2350
53.1k
        )
2351
47.8k
        {
2352
47.8k
            D(fprintf(stderr, "%*c+ annotated_rhs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
2353
47.8k
            _res = star_expressions_var;
2354
47.8k
            goto done;
2355
47.8k
        }
2356
5.27k
        p->mark = _mark;
2357
5.27k
        D(fprintf(stderr, "%*c%s annotated_rhs[%d-%d]: %s failed!\n", p->level, ' ',
2358
5.27k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
2359
5.27k
    }
2360
0
    _res = NULL;
2361
53.4k
  done:
2362
53.4k
    p->level--;
2363
53.4k
    return _res;
2364
5.27k
}
2365
2366
// augassign:
2367
//     | '+='
2368
//     | '-='
2369
//     | '*='
2370
//     | '@='
2371
//     | '/='
2372
//     | '%='
2373
//     | '&='
2374
//     | '|='
2375
//     | '^='
2376
//     | '<<='
2377
//     | '>>='
2378
//     | '**='
2379
//     | '//='
2380
static AugOperator*
2381
augassign_rule(Parser *p)
2382
98.2k
{
2383
98.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2384
0
        _Pypegen_stack_overflow(p);
2385
0
    }
2386
98.2k
    if (p->error_indicator) {
2387
0
        p->level--;
2388
0
        return NULL;
2389
0
    }
2390
98.2k
    AugOperator* _res = NULL;
2391
98.2k
    int _mark = p->mark;
2392
98.2k
    { // '+='
2393
98.2k
        if (p->error_indicator) {
2394
0
            p->level--;
2395
0
            return NULL;
2396
0
        }
2397
98.2k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+='"));
2398
98.2k
        Token * _literal;
2399
98.2k
        if (
2400
98.2k
            (_literal = _PyPegen_expect_token(p, 36))  // token='+='
2401
98.2k
        )
2402
489
        {
2403
489
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+='"));
2404
489
            _res = _PyPegen_augoperator ( p , Add );
2405
489
            if (_res == NULL && PyErr_Occurred()) {
2406
0
                p->error_indicator = 1;
2407
0
                p->level--;
2408
0
                return NULL;
2409
0
            }
2410
489
            goto done;
2411
489
        }
2412
97.7k
        p->mark = _mark;
2413
97.7k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2414
97.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+='"));
2415
97.7k
    }
2416
0
    { // '-='
2417
97.7k
        if (p->error_indicator) {
2418
0
            p->level--;
2419
0
            return NULL;
2420
0
        }
2421
97.7k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-='"));
2422
97.7k
        Token * _literal;
2423
97.7k
        if (
2424
97.7k
            (_literal = _PyPegen_expect_token(p, 37))  // token='-='
2425
97.7k
        )
2426
267
        {
2427
267
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-='"));
2428
267
            _res = _PyPegen_augoperator ( p , Sub );
2429
267
            if (_res == NULL && PyErr_Occurred()) {
2430
0
                p->error_indicator = 1;
2431
0
                p->level--;
2432
0
                return NULL;
2433
0
            }
2434
267
            goto done;
2435
267
        }
2436
97.5k
        p->mark = _mark;
2437
97.5k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2438
97.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-='"));
2439
97.5k
    }
2440
0
    { // '*='
2441
97.5k
        if (p->error_indicator) {
2442
0
            p->level--;
2443
0
            return NULL;
2444
0
        }
2445
97.5k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*='"));
2446
97.5k
        Token * _literal;
2447
97.5k
        if (
2448
97.5k
            (_literal = _PyPegen_expect_token(p, 38))  // token='*='
2449
97.5k
        )
2450
210
        {
2451
210
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*='"));
2452
210
            _res = _PyPegen_augoperator ( p , Mult );
2453
210
            if (_res == NULL && PyErr_Occurred()) {
2454
0
                p->error_indicator = 1;
2455
0
                p->level--;
2456
0
                return NULL;
2457
0
            }
2458
210
            goto done;
2459
210
        }
2460
97.3k
        p->mark = _mark;
2461
97.3k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2462
97.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*='"));
2463
97.3k
    }
2464
0
    { // '@='
2465
97.3k
        if (p->error_indicator) {
2466
0
            p->level--;
2467
0
            return NULL;
2468
0
        }
2469
97.3k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@='"));
2470
97.3k
        Token * _literal;
2471
97.3k
        if (
2472
97.3k
            (_literal = _PyPegen_expect_token(p, 50))  // token='@='
2473
97.3k
        )
2474
74
        {
2475
74
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@='"));
2476
74
            _res = CHECK_VERSION ( AugOperator* , 5 , "The '@' operator is" , _PyPegen_augoperator ( p , MatMult ) );
2477
74
            if (_res == NULL && PyErr_Occurred()) {
2478
0
                p->error_indicator = 1;
2479
0
                p->level--;
2480
0
                return NULL;
2481
0
            }
2482
74
            goto done;
2483
74
        }
2484
97.2k
        p->mark = _mark;
2485
97.2k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2486
97.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@='"));
2487
97.2k
    }
2488
0
    { // '/='
2489
97.2k
        if (p->error_indicator) {
2490
0
            p->level--;
2491
0
            return NULL;
2492
0
        }
2493
97.2k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/='"));
2494
97.2k
        Token * _literal;
2495
97.2k
        if (
2496
97.2k
            (_literal = _PyPegen_expect_token(p, 39))  // token='/='
2497
97.2k
        )
2498
390
        {
2499
390
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'/='"));
2500
390
            _res = _PyPegen_augoperator ( p , Div );
2501
390
            if (_res == NULL && PyErr_Occurred()) {
2502
0
                p->error_indicator = 1;
2503
0
                p->level--;
2504
0
                return NULL;
2505
0
            }
2506
390
            goto done;
2507
390
        }
2508
96.8k
        p->mark = _mark;
2509
96.8k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2510
96.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'/='"));
2511
96.8k
    }
2512
0
    { // '%='
2513
96.8k
        if (p->error_indicator) {
2514
0
            p->level--;
2515
0
            return NULL;
2516
0
        }
2517
96.8k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'%='"));
2518
96.8k
        Token * _literal;
2519
96.8k
        if (
2520
96.8k
            (_literal = _PyPegen_expect_token(p, 40))  // token='%='
2521
96.8k
        )
2522
315
        {
2523
315
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'%='"));
2524
315
            _res = _PyPegen_augoperator ( p , Mod );
2525
315
            if (_res == NULL && PyErr_Occurred()) {
2526
0
                p->error_indicator = 1;
2527
0
                p->level--;
2528
0
                return NULL;
2529
0
            }
2530
315
            goto done;
2531
315
        }
2532
96.5k
        p->mark = _mark;
2533
96.5k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2534
96.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'%='"));
2535
96.5k
    }
2536
0
    { // '&='
2537
96.5k
        if (p->error_indicator) {
2538
0
            p->level--;
2539
0
            return NULL;
2540
0
        }
2541
96.5k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'&='"));
2542
96.5k
        Token * _literal;
2543
96.5k
        if (
2544
96.5k
            (_literal = _PyPegen_expect_token(p, 41))  // token='&='
2545
96.5k
        )
2546
226
        {
2547
226
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'&='"));
2548
226
            _res = _PyPegen_augoperator ( p , BitAnd );
2549
226
            if (_res == NULL && PyErr_Occurred()) {
2550
0
                p->error_indicator = 1;
2551
0
                p->level--;
2552
0
                return NULL;
2553
0
            }
2554
226
            goto done;
2555
226
        }
2556
96.3k
        p->mark = _mark;
2557
96.3k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2558
96.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'&='"));
2559
96.3k
    }
2560
0
    { // '|='
2561
96.3k
        if (p->error_indicator) {
2562
0
            p->level--;
2563
0
            return NULL;
2564
0
        }
2565
96.3k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|='"));
2566
96.3k
        Token * _literal;
2567
96.3k
        if (
2568
96.3k
            (_literal = _PyPegen_expect_token(p, 42))  // token='|='
2569
96.3k
        )
2570
272
        {
2571
272
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'|='"));
2572
272
            _res = _PyPegen_augoperator ( p , BitOr );
2573
272
            if (_res == NULL && PyErr_Occurred()) {
2574
0
                p->error_indicator = 1;
2575
0
                p->level--;
2576
0
                return NULL;
2577
0
            }
2578
272
            goto done;
2579
272
        }
2580
96.0k
        p->mark = _mark;
2581
96.0k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2582
96.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|='"));
2583
96.0k
    }
2584
0
    { // '^='
2585
96.0k
        if (p->error_indicator) {
2586
0
            p->level--;
2587
0
            return NULL;
2588
0
        }
2589
96.0k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'^='"));
2590
96.0k
        Token * _literal;
2591
96.0k
        if (
2592
96.0k
            (_literal = _PyPegen_expect_token(p, 43))  // token='^='
2593
96.0k
        )
2594
104
        {
2595
104
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'^='"));
2596
104
            _res = _PyPegen_augoperator ( p , BitXor );
2597
104
            if (_res == NULL && PyErr_Occurred()) {
2598
0
                p->error_indicator = 1;
2599
0
                p->level--;
2600
0
                return NULL;
2601
0
            }
2602
104
            goto done;
2603
104
        }
2604
95.9k
        p->mark = _mark;
2605
95.9k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2606
95.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'^='"));
2607
95.9k
    }
2608
0
    { // '<<='
2609
95.9k
        if (p->error_indicator) {
2610
0
            p->level--;
2611
0
            return NULL;
2612
0
        }
2613
95.9k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<<='"));
2614
95.9k
        Token * _literal;
2615
95.9k
        if (
2616
95.9k
            (_literal = _PyPegen_expect_token(p, 44))  // token='<<='
2617
95.9k
        )
2618
251
        {
2619
251
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<<='"));
2620
251
            _res = _PyPegen_augoperator ( p , LShift );
2621
251
            if (_res == NULL && PyErr_Occurred()) {
2622
0
                p->error_indicator = 1;
2623
0
                p->level--;
2624
0
                return NULL;
2625
0
            }
2626
251
            goto done;
2627
251
        }
2628
95.6k
        p->mark = _mark;
2629
95.6k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2630
95.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<<='"));
2631
95.6k
    }
2632
0
    { // '>>='
2633
95.6k
        if (p->error_indicator) {
2634
0
            p->level--;
2635
0
            return NULL;
2636
0
        }
2637
95.6k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>>='"));
2638
95.6k
        Token * _literal;
2639
95.6k
        if (
2640
95.6k
            (_literal = _PyPegen_expect_token(p, 45))  // token='>>='
2641
95.6k
        )
2642
78
        {
2643
78
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>>='"));
2644
78
            _res = _PyPegen_augoperator ( p , RShift );
2645
78
            if (_res == NULL && PyErr_Occurred()) {
2646
0
                p->error_indicator = 1;
2647
0
                p->level--;
2648
0
                return NULL;
2649
0
            }
2650
78
            goto done;
2651
78
        }
2652
95.6k
        p->mark = _mark;
2653
95.6k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2654
95.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>>='"));
2655
95.6k
    }
2656
0
    { // '**='
2657
95.6k
        if (p->error_indicator) {
2658
0
            p->level--;
2659
0
            return NULL;
2660
0
        }
2661
95.6k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**='"));
2662
95.6k
        Token * _literal;
2663
95.6k
        if (
2664
95.6k
            (_literal = _PyPegen_expect_token(p, 46))  // token='**='
2665
95.6k
        )
2666
77
        {
2667
77
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**='"));
2668
77
            _res = _PyPegen_augoperator ( p , Pow );
2669
77
            if (_res == NULL && PyErr_Occurred()) {
2670
0
                p->error_indicator = 1;
2671
0
                p->level--;
2672
0
                return NULL;
2673
0
            }
2674
77
            goto done;
2675
77
        }
2676
95.5k
        p->mark = _mark;
2677
95.5k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2678
95.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**='"));
2679
95.5k
    }
2680
0
    { // '//='
2681
95.5k
        if (p->error_indicator) {
2682
0
            p->level--;
2683
0
            return NULL;
2684
0
        }
2685
95.5k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'//='"));
2686
95.5k
        Token * _literal;
2687
95.5k
        if (
2688
95.5k
            (_literal = _PyPegen_expect_token(p, 48))  // token='//='
2689
95.5k
        )
2690
198
        {
2691
198
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'//='"));
2692
198
            _res = _PyPegen_augoperator ( p , FloorDiv );
2693
198
            if (_res == NULL && PyErr_Occurred()) {
2694
0
                p->error_indicator = 1;
2695
0
                p->level--;
2696
0
                return NULL;
2697
0
            }
2698
198
            goto done;
2699
198
        }
2700
95.3k
        p->mark = _mark;
2701
95.3k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2702
95.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'//='"));
2703
95.3k
    }
2704
0
    _res = NULL;
2705
98.2k
  done:
2706
98.2k
    p->level--;
2707
98.2k
    return _res;
2708
95.3k
}
2709
2710
// return_stmt: 'return' star_expressions?
2711
static stmt_ty
2712
return_stmt_rule(Parser *p)
2713
8.04k
{
2714
8.04k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2715
0
        _Pypegen_stack_overflow(p);
2716
0
    }
2717
8.04k
    if (p->error_indicator) {
2718
0
        p->level--;
2719
0
        return NULL;
2720
0
    }
2721
8.04k
    stmt_ty _res = NULL;
2722
8.04k
    int _mark = p->mark;
2723
8.04k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2724
0
        p->error_indicator = 1;
2725
0
        p->level--;
2726
0
        return NULL;
2727
0
    }
2728
8.04k
    int _start_lineno = p->tokens[_mark]->lineno;
2729
8.04k
    UNUSED(_start_lineno); // Only used by EXTRA macro
2730
8.04k
    int _start_col_offset = p->tokens[_mark]->col_offset;
2731
8.04k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
2732
8.04k
    { // 'return' star_expressions?
2733
8.04k
        if (p->error_indicator) {
2734
0
            p->level--;
2735
0
            return NULL;
2736
0
        }
2737
8.04k
        D(fprintf(stderr, "%*c> return_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'return' star_expressions?"));
2738
8.04k
        Token * _keyword;
2739
8.04k
        void *a;
2740
8.04k
        if (
2741
8.04k
            (_keyword = _PyPegen_expect_token(p, 522))  // token='return'
2742
8.04k
            &&
2743
8.04k
            (a = star_expressions_rule(p), !p->error_indicator)  // star_expressions?
2744
8.04k
        )
2745
7.97k
        {
2746
7.97k
            D(fprintf(stderr, "%*c+ return_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'return' star_expressions?"));
2747
7.97k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2748
7.97k
            if (_token == NULL) {
2749
0
                p->level--;
2750
0
                return NULL;
2751
0
            }
2752
7.97k
            int _end_lineno = _token->end_lineno;
2753
7.97k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2754
7.97k
            int _end_col_offset = _token->end_col_offset;
2755
7.97k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2756
7.97k
            _res = _PyAST_Return ( a , EXTRA );
2757
7.97k
            if (_res == NULL && PyErr_Occurred()) {
2758
0
                p->error_indicator = 1;
2759
0
                p->level--;
2760
0
                return NULL;
2761
0
            }
2762
7.97k
            goto done;
2763
7.97k
        }
2764
66
        p->mark = _mark;
2765
66
        D(fprintf(stderr, "%*c%s return_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2766
66
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'return' star_expressions?"));
2767
66
    }
2768
0
    _res = NULL;
2769
8.04k
  done:
2770
8.04k
    p->level--;
2771
8.04k
    return _res;
2772
66
}
2773
2774
// raise_stmt:
2775
//     | 'raise' expression 'from' expression
2776
//     | invalid_raise_stmt
2777
//     | 'raise' expression
2778
//     | 'raise'
2779
static stmt_ty
2780
raise_stmt_rule(Parser *p)
2781
3.75k
{
2782
3.75k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2783
0
        _Pypegen_stack_overflow(p);
2784
0
    }
2785
3.75k
    if (p->error_indicator) {
2786
0
        p->level--;
2787
0
        return NULL;
2788
0
    }
2789
3.75k
    stmt_ty _res = NULL;
2790
3.75k
    int _mark = p->mark;
2791
3.75k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2792
0
        p->error_indicator = 1;
2793
0
        p->level--;
2794
0
        return NULL;
2795
0
    }
2796
3.75k
    int _start_lineno = p->tokens[_mark]->lineno;
2797
3.75k
    UNUSED(_start_lineno); // Only used by EXTRA macro
2798
3.75k
    int _start_col_offset = p->tokens[_mark]->col_offset;
2799
3.75k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
2800
3.75k
    { // 'raise' expression 'from' expression
2801
3.75k
        if (p->error_indicator) {
2802
0
            p->level--;
2803
0
            return NULL;
2804
0
        }
2805
3.75k
        D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' expression 'from' expression"));
2806
3.75k
        Token * _keyword;
2807
3.75k
        Token * _keyword_1;
2808
3.75k
        expr_ty a;
2809
3.75k
        expr_ty b;
2810
3.75k
        if (
2811
3.75k
            (_keyword = _PyPegen_expect_token(p, 628))  // token='raise'
2812
3.75k
            &&
2813
3.75k
            (a = expression_rule(p))  // expression
2814
3.75k
            &&
2815
3.75k
            (_keyword_1 = _PyPegen_expect_token(p, 638))  // token='from'
2816
3.75k
            &&
2817
3.75k
            (b = expression_rule(p))  // expression
2818
3.75k
        )
2819
629
        {
2820
629
            D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' expression 'from' expression"));
2821
629
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2822
629
            if (_token == NULL) {
2823
0
                p->level--;
2824
0
                return NULL;
2825
0
            }
2826
629
            int _end_lineno = _token->end_lineno;
2827
629
            UNUSED(_end_lineno); // Only used by EXTRA macro
2828
629
            int _end_col_offset = _token->end_col_offset;
2829
629
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2830
629
            _res = _PyAST_Raise ( a , b , EXTRA );
2831
629
            if (_res == NULL && PyErr_Occurred()) {
2832
0
                p->error_indicator = 1;
2833
0
                p->level--;
2834
0
                return NULL;
2835
0
            }
2836
629
            goto done;
2837
629
        }
2838
3.13k
        p->mark = _mark;
2839
3.13k
        D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2840
3.13k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' expression 'from' expression"));
2841
3.13k
    }
2842
3.13k
    if (p->call_invalid_rules) { // invalid_raise_stmt
2843
612
        if (p->error_indicator) {
2844
36
            p->level--;
2845
36
            return NULL;
2846
36
        }
2847
576
        D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_raise_stmt"));
2848
576
        void *invalid_raise_stmt_var;
2849
576
        if (
2850
576
            (invalid_raise_stmt_var = invalid_raise_stmt_rule(p))  // invalid_raise_stmt
2851
576
        )
2852
0
        {
2853
0
            D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_raise_stmt"));
2854
0
            _res = invalid_raise_stmt_var;
2855
0
            goto done;
2856
0
        }
2857
576
        p->mark = _mark;
2858
576
        D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2859
576
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_raise_stmt"));
2860
576
    }
2861
3.09k
    { // 'raise' expression
2862
3.09k
        if (p->error_indicator) {
2863
5
            p->level--;
2864
5
            return NULL;
2865
5
        }
2866
3.08k
        D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' expression"));
2867
3.08k
        Token * _keyword;
2868
3.08k
        expr_ty a;
2869
3.08k
        if (
2870
3.08k
            (_keyword = _PyPegen_expect_token(p, 628))  // token='raise'
2871
3.08k
            &&
2872
3.08k
            (a = expression_rule(p))  // expression
2873
3.08k
        )
2874
2.30k
        {
2875
2.30k
            D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' expression"));
2876
2.30k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2877
2.30k
            if (_token == NULL) {
2878
0
                p->level--;
2879
0
                return NULL;
2880
0
            }
2881
2.30k
            int _end_lineno = _token->end_lineno;
2882
2.30k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2883
2.30k
            int _end_col_offset = _token->end_col_offset;
2884
2.30k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2885
2.30k
            _res = _PyAST_Raise ( a , NULL , EXTRA );
2886
2.30k
            if (_res == NULL && PyErr_Occurred()) {
2887
0
                p->error_indicator = 1;
2888
0
                p->level--;
2889
0
                return NULL;
2890
0
            }
2891
2.30k
            goto done;
2892
2.30k
        }
2893
787
        p->mark = _mark;
2894
787
        D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2895
787
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' expression"));
2896
787
    }
2897
0
    { // 'raise'
2898
787
        if (p->error_indicator) {
2899
0
            p->level--;
2900
0
            return NULL;
2901
0
        }
2902
787
        D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise'"));
2903
787
        Token * _keyword;
2904
787
        if (
2905
787
            (_keyword = _PyPegen_expect_token(p, 628))  // token='raise'
2906
787
        )
2907
787
        {
2908
787
            D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise'"));
2909
787
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2910
787
            if (_token == NULL) {
2911
0
                p->level--;
2912
0
                return NULL;
2913
0
            }
2914
787
            int _end_lineno = _token->end_lineno;
2915
787
            UNUSED(_end_lineno); // Only used by EXTRA macro
2916
787
            int _end_col_offset = _token->end_col_offset;
2917
787
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2918
787
            _res = _PyAST_Raise ( NULL , NULL , EXTRA );
2919
787
            if (_res == NULL && PyErr_Occurred()) {
2920
0
                p->error_indicator = 1;
2921
0
                p->level--;
2922
0
                return NULL;
2923
0
            }
2924
787
            goto done;
2925
787
        }
2926
0
        p->mark = _mark;
2927
0
        D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2928
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise'"));
2929
0
    }
2930
0
    _res = NULL;
2931
3.71k
  done:
2932
3.71k
    p->level--;
2933
3.71k
    return _res;
2934
0
}
2935
2936
// pass_stmt: 'pass'
2937
static stmt_ty
2938
pass_stmt_rule(Parser *p)
2939
193k
{
2940
193k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2941
0
        _Pypegen_stack_overflow(p);
2942
0
    }
2943
193k
    if (p->error_indicator) {
2944
0
        p->level--;
2945
0
        return NULL;
2946
0
    }
2947
193k
    stmt_ty _res = NULL;
2948
193k
    int _mark = p->mark;
2949
193k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2950
0
        p->error_indicator = 1;
2951
0
        p->level--;
2952
0
        return NULL;
2953
0
    }
2954
193k
    int _start_lineno = p->tokens[_mark]->lineno;
2955
193k
    UNUSED(_start_lineno); // Only used by EXTRA macro
2956
193k
    int _start_col_offset = p->tokens[_mark]->col_offset;
2957
193k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
2958
193k
    { // 'pass'
2959
193k
        if (p->error_indicator) {
2960
0
            p->level--;
2961
0
            return NULL;
2962
0
        }
2963
193k
        D(fprintf(stderr, "%*c> pass_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'pass'"));
2964
193k
        Token * _keyword;
2965
193k
        if (
2966
193k
            (_keyword = _PyPegen_expect_token(p, 527))  // token='pass'
2967
193k
        )
2968
2.09k
        {
2969
2.09k
            D(fprintf(stderr, "%*c+ pass_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'pass'"));
2970
2.09k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2971
2.09k
            if (_token == NULL) {
2972
0
                p->level--;
2973
0
                return NULL;
2974
0
            }
2975
2.09k
            int _end_lineno = _token->end_lineno;
2976
2.09k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2977
2.09k
            int _end_col_offset = _token->end_col_offset;
2978
2.09k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2979
2.09k
            _res = _PyAST_Pass ( EXTRA );
2980
2.09k
            if (_res == NULL && PyErr_Occurred()) {
2981
0
                p->error_indicator = 1;
2982
0
                p->level--;
2983
0
                return NULL;
2984
0
            }
2985
2.09k
            goto done;
2986
2.09k
        }
2987
191k
        p->mark = _mark;
2988
191k
        D(fprintf(stderr, "%*c%s pass_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2989
191k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'pass'"));
2990
191k
    }
2991
0
    _res = NULL;
2992
193k
  done:
2993
193k
    p->level--;
2994
193k
    return _res;
2995
191k
}
2996
2997
// break_stmt: 'break'
2998
static stmt_ty
2999
break_stmt_rule(Parser *p)
3000
193k
{
3001
193k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3002
0
        _Pypegen_stack_overflow(p);
3003
0
    }
3004
193k
    if (p->error_indicator) {
3005
0
        p->level--;
3006
0
        return NULL;
3007
0
    }
3008
193k
    stmt_ty _res = NULL;
3009
193k
    int _mark = p->mark;
3010
193k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3011
0
        p->error_indicator = 1;
3012
0
        p->level--;
3013
0
        return NULL;
3014
0
    }
3015
193k
    int _start_lineno = p->tokens[_mark]->lineno;
3016
193k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3017
193k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3018
193k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3019
193k
    { // 'break'
3020
193k
        if (p->error_indicator) {
3021
0
            p->level--;
3022
0
            return NULL;
3023
0
        }
3024
193k
        D(fprintf(stderr, "%*c> break_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'break'"));
3025
193k
        Token * _keyword;
3026
193k
        if (
3027
193k
            (_keyword = _PyPegen_expect_token(p, 528))  // token='break'
3028
193k
        )
3029
1.91k
        {
3030
1.91k
            D(fprintf(stderr, "%*c+ break_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'break'"));
3031
1.91k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3032
1.91k
            if (_token == NULL) {
3033
0
                p->level--;
3034
0
                return NULL;
3035
0
            }
3036
1.91k
            int _end_lineno = _token->end_lineno;
3037
1.91k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3038
1.91k
            int _end_col_offset = _token->end_col_offset;
3039
1.91k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3040
1.91k
            _res = _PyAST_Break ( EXTRA );
3041
1.91k
            if (_res == NULL && PyErr_Occurred()) {
3042
0
                p->error_indicator = 1;
3043
0
                p->level--;
3044
0
                return NULL;
3045
0
            }
3046
1.91k
            goto done;
3047
1.91k
        }
3048
191k
        p->mark = _mark;
3049
191k
        D(fprintf(stderr, "%*c%s break_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3050
191k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'break'"));
3051
191k
    }
3052
0
    _res = NULL;
3053
193k
  done:
3054
193k
    p->level--;
3055
193k
    return _res;
3056
191k
}
3057
3058
// continue_stmt: 'continue'
3059
static stmt_ty
3060
continue_stmt_rule(Parser *p)
3061
192k
{
3062
192k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3063
0
        _Pypegen_stack_overflow(p);
3064
0
    }
3065
192k
    if (p->error_indicator) {
3066
0
        p->level--;
3067
0
        return NULL;
3068
0
    }
3069
192k
    stmt_ty _res = NULL;
3070
192k
    int _mark = p->mark;
3071
192k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3072
0
        p->error_indicator = 1;
3073
0
        p->level--;
3074
0
        return NULL;
3075
0
    }
3076
192k
    int _start_lineno = p->tokens[_mark]->lineno;
3077
192k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3078
192k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3079
192k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3080
192k
    { // 'continue'
3081
192k
        if (p->error_indicator) {
3082
0
            p->level--;
3083
0
            return NULL;
3084
0
        }
3085
192k
        D(fprintf(stderr, "%*c> continue_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'continue'"));
3086
192k
        Token * _keyword;
3087
192k
        if (
3088
192k
            (_keyword = _PyPegen_expect_token(p, 529))  // token='continue'
3089
192k
        )
3090
2.78k
        {
3091
2.78k
            D(fprintf(stderr, "%*c+ continue_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'continue'"));
3092
2.78k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3093
2.78k
            if (_token == NULL) {
3094
0
                p->level--;
3095
0
                return NULL;
3096
0
            }
3097
2.78k
            int _end_lineno = _token->end_lineno;
3098
2.78k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3099
2.78k
            int _end_col_offset = _token->end_col_offset;
3100
2.78k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3101
2.78k
            _res = _PyAST_Continue ( EXTRA );
3102
2.78k
            if (_res == NULL && PyErr_Occurred()) {
3103
0
                p->error_indicator = 1;
3104
0
                p->level--;
3105
0
                return NULL;
3106
0
            }
3107
2.78k
            goto done;
3108
2.78k
        }
3109
189k
        p->mark = _mark;
3110
189k
        D(fprintf(stderr, "%*c%s continue_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3111
189k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'continue'"));
3112
189k
    }
3113
0
    _res = NULL;
3114
192k
  done:
3115
192k
    p->level--;
3116
192k
    return _res;
3117
189k
}
3118
3119
// global_stmt: 'global' ','.NAME+
3120
static stmt_ty
3121
global_stmt_rule(Parser *p)
3122
609
{
3123
609
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3124
0
        _Pypegen_stack_overflow(p);
3125
0
    }
3126
609
    if (p->error_indicator) {
3127
0
        p->level--;
3128
0
        return NULL;
3129
0
    }
3130
609
    stmt_ty _res = NULL;
3131
609
    int _mark = p->mark;
3132
609
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3133
0
        p->error_indicator = 1;
3134
0
        p->level--;
3135
0
        return NULL;
3136
0
    }
3137
609
    int _start_lineno = p->tokens[_mark]->lineno;
3138
609
    UNUSED(_start_lineno); // Only used by EXTRA macro
3139
609
    int _start_col_offset = p->tokens[_mark]->col_offset;
3140
609
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3141
609
    { // 'global' ','.NAME+
3142
609
        if (p->error_indicator) {
3143
0
            p->level--;
3144
0
            return NULL;
3145
0
        }
3146
609
        D(fprintf(stderr, "%*c> global_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'global' ','.NAME+"));
3147
609
        Token * _keyword;
3148
609
        asdl_expr_seq* a;
3149
609
        if (
3150
609
            (_keyword = _PyPegen_expect_token(p, 530))  // token='global'
3151
609
            &&
3152
609
            (a = (asdl_expr_seq*)_gather_14_rule(p))  // ','.NAME+
3153
609
        )
3154
604
        {
3155
604
            D(fprintf(stderr, "%*c+ global_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'global' ','.NAME+"));
3156
604
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3157
604
            if (_token == NULL) {
3158
0
                p->level--;
3159
0
                return NULL;
3160
0
            }
3161
604
            int _end_lineno = _token->end_lineno;
3162
604
            UNUSED(_end_lineno); // Only used by EXTRA macro
3163
604
            int _end_col_offset = _token->end_col_offset;
3164
604
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3165
604
            _res = _PyAST_Global ( CHECK ( asdl_identifier_seq* , _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
3166
604
            if (_res == NULL && PyErr_Occurred()) {
3167
0
                p->error_indicator = 1;
3168
0
                p->level--;
3169
0
                return NULL;
3170
0
            }
3171
604
            goto done;
3172
604
        }
3173
5
        p->mark = _mark;
3174
5
        D(fprintf(stderr, "%*c%s global_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3175
5
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'global' ','.NAME+"));
3176
5
    }
3177
0
    _res = NULL;
3178
609
  done:
3179
609
    p->level--;
3180
609
    return _res;
3181
5
}
3182
3183
// nonlocal_stmt: 'nonlocal' ','.NAME+
3184
static stmt_ty
3185
nonlocal_stmt_rule(Parser *p)
3186
708
{
3187
708
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3188
0
        _Pypegen_stack_overflow(p);
3189
0
    }
3190
708
    if (p->error_indicator) {
3191
0
        p->level--;
3192
0
        return NULL;
3193
0
    }
3194
708
    stmt_ty _res = NULL;
3195
708
    int _mark = p->mark;
3196
708
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3197
0
        p->error_indicator = 1;
3198
0
        p->level--;
3199
0
        return NULL;
3200
0
    }
3201
708
    int _start_lineno = p->tokens[_mark]->lineno;
3202
708
    UNUSED(_start_lineno); // Only used by EXTRA macro
3203
708
    int _start_col_offset = p->tokens[_mark]->col_offset;
3204
708
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3205
708
    { // 'nonlocal' ','.NAME+
3206
708
        if (p->error_indicator) {
3207
0
            p->level--;
3208
0
            return NULL;
3209
0
        }
3210
708
        D(fprintf(stderr, "%*c> nonlocal_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'nonlocal' ','.NAME+"));
3211
708
        Token * _keyword;
3212
708
        asdl_expr_seq* a;
3213
708
        if (
3214
708
            (_keyword = _PyPegen_expect_token(p, 531))  // token='nonlocal'
3215
708
            &&
3216
708
            (a = (asdl_expr_seq*)_gather_14_rule(p))  // ','.NAME+
3217
708
        )
3218
705
        {
3219
705
            D(fprintf(stderr, "%*c+ nonlocal_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'nonlocal' ','.NAME+"));
3220
705
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3221
705
            if (_token == NULL) {
3222
0
                p->level--;
3223
0
                return NULL;
3224
0
            }
3225
705
            int _end_lineno = _token->end_lineno;
3226
705
            UNUSED(_end_lineno); // Only used by EXTRA macro
3227
705
            int _end_col_offset = _token->end_col_offset;
3228
705
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3229
705
            _res = _PyAST_Nonlocal ( CHECK ( asdl_identifier_seq* , _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
3230
705
            if (_res == NULL && PyErr_Occurred()) {
3231
0
                p->error_indicator = 1;
3232
0
                p->level--;
3233
0
                return NULL;
3234
0
            }
3235
705
            goto done;
3236
705
        }
3237
3
        p->mark = _mark;
3238
3
        D(fprintf(stderr, "%*c%s nonlocal_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3239
3
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'nonlocal' ','.NAME+"));
3240
3
    }
3241
0
    _res = NULL;
3242
708
  done:
3243
708
    p->level--;
3244
708
    return _res;
3245
3
}
3246
3247
// del_stmt: 'del' del_targets &(';' | NEWLINE) | invalid_del_stmt
3248
static stmt_ty
3249
del_stmt_rule(Parser *p)
3250
1.32k
{
3251
1.32k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3252
0
        _Pypegen_stack_overflow(p);
3253
0
    }
3254
1.32k
    if (p->error_indicator) {
3255
0
        p->level--;
3256
0
        return NULL;
3257
0
    }
3258
1.32k
    stmt_ty _res = NULL;
3259
1.32k
    int _mark = p->mark;
3260
1.32k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3261
0
        p->error_indicator = 1;
3262
0
        p->level--;
3263
0
        return NULL;
3264
0
    }
3265
1.32k
    int _start_lineno = p->tokens[_mark]->lineno;
3266
1.32k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3267
1.32k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3268
1.32k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3269
1.32k
    { // 'del' del_targets &(';' | NEWLINE)
3270
1.32k
        if (p->error_indicator) {
3271
0
            p->level--;
3272
0
            return NULL;
3273
0
        }
3274
1.32k
        D(fprintf(stderr, "%*c> del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3275
1.32k
        Token * _keyword;
3276
1.32k
        asdl_expr_seq* a;
3277
1.32k
        if (
3278
1.32k
            (_keyword = _PyPegen_expect_token(p, 630))  // token='del'
3279
1.32k
            &&
3280
1.32k
            (a = del_targets_rule(p))  // del_targets
3281
1.32k
            &&
3282
1.32k
            _PyPegen_lookahead(1, _tmp_15_rule, p)
3283
1.32k
        )
3284
788
        {
3285
788
            D(fprintf(stderr, "%*c+ del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3286
788
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3287
788
            if (_token == NULL) {
3288
0
                p->level--;
3289
0
                return NULL;
3290
0
            }
3291
788
            int _end_lineno = _token->end_lineno;
3292
788
            UNUSED(_end_lineno); // Only used by EXTRA macro
3293
788
            int _end_col_offset = _token->end_col_offset;
3294
788
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3295
788
            _res = _PyAST_Delete ( a , EXTRA );
3296
788
            if (_res == NULL && PyErr_Occurred()) {
3297
0
                p->error_indicator = 1;
3298
0
                p->level--;
3299
0
                return NULL;
3300
0
            }
3301
788
            goto done;
3302
788
        }
3303
539
        p->mark = _mark;
3304
539
        D(fprintf(stderr, "%*c%s del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3305
539
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3306
539
    }
3307
539
    if (p->call_invalid_rules) { // invalid_del_stmt
3308
407
        if (p->error_indicator) {
3309
112
            p->level--;
3310
112
            return NULL;
3311
112
        }
3312
295
        D(fprintf(stderr, "%*c> del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_del_stmt"));
3313
295
        void *invalid_del_stmt_var;
3314
295
        if (
3315
295
            (invalid_del_stmt_var = invalid_del_stmt_rule(p))  // invalid_del_stmt
3316
295
        )
3317
0
        {
3318
0
            D(fprintf(stderr, "%*c+ del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_del_stmt"));
3319
0
            _res = invalid_del_stmt_var;
3320
0
            goto done;
3321
0
        }
3322
295
        p->mark = _mark;
3323
295
        D(fprintf(stderr, "%*c%s del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3324
295
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_del_stmt"));
3325
295
    }
3326
427
    _res = NULL;
3327
1.21k
  done:
3328
1.21k
    p->level--;
3329
1.21k
    return _res;
3330
427
}
3331
3332
// yield_stmt: yield_expr
3333
static stmt_ty
3334
yield_stmt_rule(Parser *p)
3335
1.52k
{
3336
1.52k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3337
0
        _Pypegen_stack_overflow(p);
3338
0
    }
3339
1.52k
    if (p->error_indicator) {
3340
0
        p->level--;
3341
0
        return NULL;
3342
0
    }
3343
1.52k
    stmt_ty _res = NULL;
3344
1.52k
    int _mark = p->mark;
3345
1.52k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3346
0
        p->error_indicator = 1;
3347
0
        p->level--;
3348
0
        return NULL;
3349
0
    }
3350
1.52k
    int _start_lineno = p->tokens[_mark]->lineno;
3351
1.52k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3352
1.52k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3353
1.52k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3354
1.52k
    { // yield_expr
3355
1.52k
        if (p->error_indicator) {
3356
0
            p->level--;
3357
0
            return NULL;
3358
0
        }
3359
1.52k
        D(fprintf(stderr, "%*c> yield_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
3360
1.52k
        expr_ty y;
3361
1.52k
        if (
3362
1.52k
            (y = yield_expr_rule(p))  // yield_expr
3363
1.52k
        )
3364
1.52k
        {
3365
1.52k
            D(fprintf(stderr, "%*c+ yield_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
3366
1.52k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3367
1.52k
            if (_token == NULL) {
3368
0
                p->level--;
3369
0
                return NULL;
3370
0
            }
3371
1.52k
            int _end_lineno = _token->end_lineno;
3372
1.52k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3373
1.52k
            int _end_col_offset = _token->end_col_offset;
3374
1.52k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3375
1.52k
            _res = _PyAST_Expr ( y , EXTRA );
3376
1.52k
            if (_res == NULL && PyErr_Occurred()) {
3377
0
                p->error_indicator = 1;
3378
0
                p->level--;
3379
0
                return NULL;
3380
0
            }
3381
1.52k
            goto done;
3382
1.52k
        }
3383
3
        p->mark = _mark;
3384
3
        D(fprintf(stderr, "%*c%s yield_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3385
3
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
3386
3
    }
3387
0
    _res = NULL;
3388
1.52k
  done:
3389
1.52k
    p->level--;
3390
1.52k
    return _res;
3391
3
}
3392
3393
// assert_stmt: 'assert' expression [',' expression]
3394
static stmt_ty
3395
assert_stmt_rule(Parser *p)
3396
666
{
3397
666
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3398
0
        _Pypegen_stack_overflow(p);
3399
0
    }
3400
666
    if (p->error_indicator) {
3401
0
        p->level--;
3402
0
        return NULL;
3403
0
    }
3404
666
    stmt_ty _res = NULL;
3405
666
    int _mark = p->mark;
3406
666
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3407
0
        p->error_indicator = 1;
3408
0
        p->level--;
3409
0
        return NULL;
3410
0
    }
3411
666
    int _start_lineno = p->tokens[_mark]->lineno;
3412
666
    UNUSED(_start_lineno); // Only used by EXTRA macro
3413
666
    int _start_col_offset = p->tokens[_mark]->col_offset;
3414
666
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3415
666
    { // 'assert' expression [',' expression]
3416
666
        if (p->error_indicator) {
3417
0
            p->level--;
3418
0
            return NULL;
3419
0
        }
3420
666
        D(fprintf(stderr, "%*c> assert_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'assert' expression [',' expression]"));
3421
666
        Token * _keyword;
3422
666
        expr_ty a;
3423
666
        void *b;
3424
666
        if (
3425
666
            (_keyword = _PyPegen_expect_token(p, 533))  // token='assert'
3426
666
            &&
3427
666
            (a = expression_rule(p))  // expression
3428
666
            &&
3429
666
            (b = _tmp_16_rule(p), !p->error_indicator)  // [',' expression]
3430
666
        )
3431
626
        {
3432
626
            D(fprintf(stderr, "%*c+ assert_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'assert' expression [',' expression]"));
3433
626
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3434
626
            if (_token == NULL) {
3435
0
                p->level--;
3436
0
                return NULL;
3437
0
            }
3438
626
            int _end_lineno = _token->end_lineno;
3439
626
            UNUSED(_end_lineno); // Only used by EXTRA macro
3440
626
            int _end_col_offset = _token->end_col_offset;
3441
626
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3442
626
            _res = _PyAST_Assert ( a , b , EXTRA );
3443
626
            if (_res == NULL && PyErr_Occurred()) {
3444
0
                p->error_indicator = 1;
3445
0
                p->level--;
3446
0
                return NULL;
3447
0
            }
3448
626
            goto done;
3449
626
        }
3450
40
        p->mark = _mark;
3451
40
        D(fprintf(stderr, "%*c%s assert_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3452
40
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'assert' expression [',' expression]"));
3453
40
    }
3454
0
    _res = NULL;
3455
666
  done:
3456
666
    p->level--;
3457
666
    return _res;
3458
40
}
3459
3460
// import_stmt: invalid_import | import_name | import_from
3461
static stmt_ty
3462
import_stmt_rule(Parser *p)
3463
5.64k
{
3464
5.64k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3465
0
        _Pypegen_stack_overflow(p);
3466
0
    }
3467
5.64k
    if (p->error_indicator) {
3468
0
        p->level--;
3469
0
        return NULL;
3470
0
    }
3471
5.64k
    stmt_ty _res = NULL;
3472
5.64k
    int _mark = p->mark;
3473
5.64k
    if (p->call_invalid_rules) { // invalid_import
3474
1.67k
        if (p->error_indicator) {
3475
0
            p->level--;
3476
0
            return NULL;
3477
0
        }
3478
1.67k
        D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_import"));
3479
1.67k
        void *invalid_import_var;
3480
1.67k
        if (
3481
1.67k
            (invalid_import_var = invalid_import_rule(p))  // invalid_import
3482
1.67k
        )
3483
0
        {
3484
0
            D(fprintf(stderr, "%*c+ import_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_import"));
3485
0
            _res = invalid_import_var;
3486
0
            goto done;
3487
0
        }
3488
1.67k
        p->mark = _mark;
3489
1.67k
        D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3490
1.67k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_import"));
3491
1.67k
    }
3492
5.64k
    { // import_name
3493
5.64k
        if (p->error_indicator) {
3494
6
            p->level--;
3495
6
            return NULL;
3496
6
        }
3497
5.63k
        D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_name"));
3498
5.63k
        stmt_ty import_name_var;
3499
5.63k
        if (
3500
5.63k
            (import_name_var = import_name_rule(p))  // import_name
3501
5.63k
        )
3502
2.39k
        {
3503
2.39k
            D(fprintf(stderr, "%*c+ import_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_name"));
3504
2.39k
            _res = import_name_var;
3505
2.39k
            goto done;
3506
2.39k
        }
3507
3.24k
        p->mark = _mark;
3508
3.24k
        D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3509
3.24k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_name"));
3510
3.24k
    }
3511
0
    { // import_from
3512
3.24k
        if (p->error_indicator) {
3513
25
            p->level--;
3514
25
            return NULL;
3515
25
        }
3516
3.21k
        D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from"));
3517
3.21k
        stmt_ty import_from_var;
3518
3.21k
        if (
3519
3.21k
            (import_from_var = import_from_rule(p))  // import_from
3520
3.21k
        )
3521
3.00k
        {
3522
3.00k
            D(fprintf(stderr, "%*c+ import_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from"));
3523
3.00k
            _res = import_from_var;
3524
3.00k
            goto done;
3525
3.00k
        }
3526
208
        p->mark = _mark;
3527
208
        D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3528
208
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from"));
3529
208
    }
3530
0
    _res = NULL;
3531
5.61k
  done:
3532
5.61k
    p->level--;
3533
5.61k
    return _res;
3534
208
}
3535
3536
// import_name: 'import' dotted_as_names
3537
static stmt_ty
3538
import_name_rule(Parser *p)
3539
5.63k
{
3540
5.63k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3541
0
        _Pypegen_stack_overflow(p);
3542
0
    }
3543
5.63k
    if (p->error_indicator) {
3544
0
        p->level--;
3545
0
        return NULL;
3546
0
    }
3547
5.63k
    stmt_ty _res = NULL;
3548
5.63k
    int _mark = p->mark;
3549
5.63k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3550
0
        p->error_indicator = 1;
3551
0
        p->level--;
3552
0
        return NULL;
3553
0
    }
3554
5.63k
    int _start_lineno = p->tokens[_mark]->lineno;
3555
5.63k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3556
5.63k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3557
5.63k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3558
5.63k
    { // 'import' dotted_as_names
3559
5.63k
        if (p->error_indicator) {
3560
0
            p->level--;
3561
0
            return NULL;
3562
0
        }
3563
5.63k
        D(fprintf(stderr, "%*c> import_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import' dotted_as_names"));
3564
5.63k
        Token * _keyword;
3565
5.63k
        asdl_alias_seq* a;
3566
5.63k
        if (
3567
5.63k
            (_keyword = _PyPegen_expect_token(p, 639))  // token='import'
3568
5.63k
            &&
3569
5.63k
            (a = dotted_as_names_rule(p))  // dotted_as_names
3570
5.63k
        )
3571
2.39k
        {
3572
2.39k
            D(fprintf(stderr, "%*c+ import_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import' dotted_as_names"));
3573
2.39k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3574
2.39k
            if (_token == NULL) {
3575
0
                p->level--;
3576
0
                return NULL;
3577
0
            }
3578
2.39k
            int _end_lineno = _token->end_lineno;
3579
2.39k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3580
2.39k
            int _end_col_offset = _token->end_col_offset;
3581
2.39k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3582
2.39k
            _res = _PyAST_Import ( a , EXTRA );
3583
2.39k
            if (_res == NULL && PyErr_Occurred()) {
3584
0
                p->error_indicator = 1;
3585
0
                p->level--;
3586
0
                return NULL;
3587
0
            }
3588
2.39k
            goto done;
3589
2.39k
        }
3590
3.24k
        p->mark = _mark;
3591
3.24k
        D(fprintf(stderr, "%*c%s import_name[%d-%d]: %s failed!\n", p->level, ' ',
3592
3.24k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import' dotted_as_names"));
3593
3.24k
    }
3594
0
    _res = NULL;
3595
5.63k
  done:
3596
5.63k
    p->level--;
3597
5.63k
    return _res;
3598
3.24k
}
3599
3600
// import_from:
3601
//     | 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
3602
//     | 'from' (('.' | '...'))+ 'import' import_from_targets
3603
static stmt_ty
3604
import_from_rule(Parser *p)
3605
3.21k
{
3606
3.21k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3607
0
        _Pypegen_stack_overflow(p);
3608
0
    }
3609
3.21k
    if (p->error_indicator) {
3610
0
        p->level--;
3611
0
        return NULL;
3612
0
    }
3613
3.21k
    stmt_ty _res = NULL;
3614
3.21k
    int _mark = p->mark;
3615
3.21k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3616
0
        p->error_indicator = 1;
3617
0
        p->level--;
3618
0
        return NULL;
3619
0
    }
3620
3.21k
    int _start_lineno = p->tokens[_mark]->lineno;
3621
3.21k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3622
3.21k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3623
3.21k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3624
3.21k
    { // 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
3625
3.21k
        if (p->error_indicator) {
3626
0
            p->level--;
3627
0
            return NULL;
3628
0
        }
3629
3.21k
        D(fprintf(stderr, "%*c> import_from[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3630
3.21k
        Token * _keyword;
3631
3.21k
        Token * _keyword_1;
3632
3.21k
        asdl_seq * a;
3633
3.21k
        expr_ty b;
3634
3.21k
        asdl_alias_seq* c;
3635
3.21k
        if (
3636
3.21k
            (_keyword = _PyPegen_expect_token(p, 638))  // token='from'
3637
3.21k
            &&
3638
3.21k
            (a = _loop0_17_rule(p))  // (('.' | '...'))*
3639
3.21k
            &&
3640
3.21k
            (b = dotted_name_rule(p))  // dotted_name
3641
3.21k
            &&
3642
3.21k
            (_keyword_1 = _PyPegen_expect_token(p, 639))  // token='import'
3643
3.21k
            &&
3644
3.21k
            (c = import_from_targets_rule(p))  // import_from_targets
3645
3.21k
        )
3646
1.90k
        {
3647
1.90k
            D(fprintf(stderr, "%*c+ import_from[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3648
1.90k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3649
1.90k
            if (_token == NULL) {
3650
0
                p->level--;
3651
0
                return NULL;
3652
0
            }
3653
1.90k
            int _end_lineno = _token->end_lineno;
3654
1.90k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3655
1.90k
            int _end_col_offset = _token->end_col_offset;
3656
1.90k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3657
1.90k
            _res = _PyPegen_checked_future_import ( p , b -> v . Name . id , c , _PyPegen_seq_count_dots ( a ) , EXTRA );
3658
1.90k
            if (_res == NULL && PyErr_Occurred()) {
3659
0
                p->error_indicator = 1;
3660
0
                p->level--;
3661
0
                return NULL;
3662
0
            }
3663
1.90k
            goto done;
3664
1.90k
        }
3665
1.31k
        p->mark = _mark;
3666
1.31k
        D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3667
1.31k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3668
1.31k
    }
3669
0
    { // 'from' (('.' | '...'))+ 'import' import_from_targets
3670
1.31k
        if (p->error_indicator) {
3671
26
            p->level--;
3672
26
            return NULL;
3673
26
        }
3674
1.28k
        D(fprintf(stderr, "%*c> import_from[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3675
1.28k
        Token * _keyword;
3676
1.28k
        Token * _keyword_1;
3677
1.28k
        asdl_seq * a;
3678
1.28k
        asdl_alias_seq* b;
3679
1.28k
        if (
3680
1.28k
            (_keyword = _PyPegen_expect_token(p, 638))  // token='from'
3681
1.28k
            &&
3682
1.28k
            (a = _loop1_18_rule(p))  // (('.' | '...'))+
3683
1.28k
            &&
3684
1.28k
            (_keyword_1 = _PyPegen_expect_token(p, 639))  // token='import'
3685
1.28k
            &&
3686
1.28k
            (b = import_from_targets_rule(p))  // import_from_targets
3687
1.28k
        )
3688
1.10k
        {
3689
1.10k
            D(fprintf(stderr, "%*c+ import_from[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3690
1.10k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3691
1.10k
            if (_token == NULL) {
3692
0
                p->level--;
3693
0
                return NULL;
3694
0
            }
3695
1.10k
            int _end_lineno = _token->end_lineno;
3696
1.10k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3697
1.10k
            int _end_col_offset = _token->end_col_offset;
3698
1.10k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3699
1.10k
            _res = _PyAST_ImportFrom ( NULL , b , _PyPegen_seq_count_dots ( a ) , EXTRA );
3700
1.10k
            if (_res == NULL && PyErr_Occurred()) {
3701
0
                p->error_indicator = 1;
3702
0
                p->level--;
3703
0
                return NULL;
3704
0
            }
3705
1.10k
            goto done;
3706
1.10k
        }
3707
182
        p->mark = _mark;
3708
182
        D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3709
182
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3710
182
    }
3711
0
    _res = NULL;
3712
3.18k
  done:
3713
3.18k
    p->level--;
3714
3.18k
    return _res;
3715
182
}
3716
3717
// import_from_targets:
3718
//     | '(' import_from_as_names ','? ')'
3719
//     | import_from_as_names !','
3720
//     | '*'
3721
//     | invalid_import_from_targets
3722
static asdl_alias_seq*
3723
import_from_targets_rule(Parser *p)
3724
3.08k
{
3725
3.08k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3726
0
        _Pypegen_stack_overflow(p);
3727
0
    }
3728
3.08k
    if (p->error_indicator) {
3729
0
        p->level--;
3730
0
        return NULL;
3731
0
    }
3732
3.08k
    asdl_alias_seq* _res = NULL;
3733
3.08k
    int _mark = p->mark;
3734
3.08k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3735
2
        p->error_indicator = 1;
3736
2
        p->level--;
3737
2
        return NULL;
3738
2
    }
3739
3.07k
    int _start_lineno = p->tokens[_mark]->lineno;
3740
3.07k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3741
3.07k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3742
3.07k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3743
3.07k
    { // '(' import_from_as_names ','? ')'
3744
3.07k
        if (p->error_indicator) {
3745
0
            p->level--;
3746
0
            return NULL;
3747
0
        }
3748
3.07k
        D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3749
3.07k
        Token * _literal;
3750
3.07k
        Token * _literal_1;
3751
3.07k
        void *_opt_var;
3752
3.07k
        UNUSED(_opt_var); // Silence compiler warnings
3753
3.07k
        asdl_alias_seq* a;
3754
3.07k
        if (
3755
3.07k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
3756
3.07k
            &&
3757
3.07k
            (a = import_from_as_names_rule(p))  // import_from_as_names
3758
3.07k
            &&
3759
3.07k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
3760
3.07k
            &&
3761
3.07k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
3762
3.07k
        )
3763
50
        {
3764
50
            D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3765
50
            _res = a;
3766
50
            if (_res == NULL && PyErr_Occurred()) {
3767
0
                p->error_indicator = 1;
3768
0
                p->level--;
3769
0
                return NULL;
3770
0
            }
3771
50
            goto done;
3772
50
        }
3773
3.02k
        p->mark = _mark;
3774
3.02k
        D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3775
3.02k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3776
3.02k
    }
3777
0
    { // import_from_as_names !','
3778
3.02k
        if (p->error_indicator) {
3779
3
            p->level--;
3780
3
            return NULL;
3781
3
        }
3782
3.02k
        D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_names !','"));
3783
3.02k
        asdl_alias_seq* import_from_as_names_var;
3784
3.02k
        if (
3785
3.02k
            (import_from_as_names_var = import_from_as_names_rule(p))  // import_from_as_names
3786
3.02k
            &&
3787
3.02k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
3788
3.02k
        )
3789
2.35k
        {
3790
2.35k
            D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_names !','"));
3791
2.35k
            _res = import_from_as_names_var;
3792
2.35k
            goto done;
3793
2.35k
        }
3794
675
        p->mark = _mark;
3795
675
        D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3796
675
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_names !','"));
3797
675
    }
3798
0
    { // '*'
3799
675
        if (p->error_indicator) {
3800
2
            p->level--;
3801
2
            return NULL;
3802
2
        }
3803
673
        D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
3804
673
        Token * _literal;
3805
673
        if (
3806
673
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
3807
673
        )
3808
607
        {
3809
607
            D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
3810
607
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3811
607
            if (_token == NULL) {
3812
0
                p->level--;
3813
0
                return NULL;
3814
0
            }
3815
607
            int _end_lineno = _token->end_lineno;
3816
607
            UNUSED(_end_lineno); // Only used by EXTRA macro
3817
607
            int _end_col_offset = _token->end_col_offset;
3818
607
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3819
607
            _res = ( asdl_alias_seq* ) _PyPegen_singleton_seq ( p , CHECK ( alias_ty , _PyPegen_alias_for_star ( p , EXTRA ) ) );
3820
607
            if (_res == NULL && PyErr_Occurred()) {
3821
0
                p->error_indicator = 1;
3822
0
                p->level--;
3823
0
                return NULL;
3824
0
            }
3825
607
            goto done;
3826
607
        }
3827
66
        p->mark = _mark;
3828
66
        D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3829
66
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
3830
66
    }
3831
66
    if (p->call_invalid_rules) { // invalid_import_from_targets
3832
32
        if (p->error_indicator) {
3833
0
            p->level--;
3834
0
            return NULL;
3835
0
        }
3836
32
        D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_import_from_targets"));
3837
32
        void *invalid_import_from_targets_var;
3838
32
        if (
3839
32
            (invalid_import_from_targets_var = invalid_import_from_targets_rule(p))  // invalid_import_from_targets
3840
32
        )
3841
0
        {
3842
0
            D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_import_from_targets"));
3843
0
            _res = invalid_import_from_targets_var;
3844
0
            goto done;
3845
0
        }
3846
32
        p->mark = _mark;
3847
32
        D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3848
32
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_import_from_targets"));
3849
32
    }
3850
66
    _res = NULL;
3851
3.07k
  done:
3852
3.07k
    p->level--;
3853
3.07k
    return _res;
3854
66
}
3855
3856
// import_from_as_names: ','.import_from_as_name+
3857
static asdl_alias_seq*
3858
import_from_as_names_rule(Parser *p)
3859
3.11k
{
3860
3.11k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3861
0
        _Pypegen_stack_overflow(p);
3862
0
    }
3863
3.11k
    if (p->error_indicator) {
3864
0
        p->level--;
3865
0
        return NULL;
3866
0
    }
3867
3.11k
    asdl_alias_seq* _res = NULL;
3868
3.11k
    int _mark = p->mark;
3869
3.11k
    { // ','.import_from_as_name+
3870
3.11k
        if (p->error_indicator) {
3871
0
            p->level--;
3872
0
            return NULL;
3873
0
        }
3874
3.11k
        D(fprintf(stderr, "%*c> import_from_as_names[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.import_from_as_name+"));
3875
3.11k
        asdl_alias_seq* a;
3876
3.11k
        if (
3877
3.11k
            (a = (asdl_alias_seq*)_gather_20_rule(p))  // ','.import_from_as_name+
3878
3.11k
        )
3879
2.47k
        {
3880
2.47k
            D(fprintf(stderr, "%*c+ import_from_as_names[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.import_from_as_name+"));
3881
2.47k
            _res = a;
3882
2.47k
            if (_res == NULL && PyErr_Occurred()) {
3883
0
                p->error_indicator = 1;
3884
0
                p->level--;
3885
0
                return NULL;
3886
0
            }
3887
2.47k
            goto done;
3888
2.47k
        }
3889
646
        p->mark = _mark;
3890
646
        D(fprintf(stderr, "%*c%s import_from_as_names[%d-%d]: %s failed!\n", p->level, ' ',
3891
646
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.import_from_as_name+"));
3892
646
    }
3893
0
    _res = NULL;
3894
3.11k
  done:
3895
3.11k
    p->level--;
3896
3.11k
    return _res;
3897
646
}
3898
3899
// import_from_as_name: invalid_import_from_as_name | NAME ['as' NAME]
3900
static alias_ty
3901
import_from_as_name_rule(Parser *p)
3902
6.18k
{
3903
6.18k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3904
0
        _Pypegen_stack_overflow(p);
3905
0
    }
3906
6.18k
    if (p->error_indicator) {
3907
0
        p->level--;
3908
0
        return NULL;
3909
0
    }
3910
6.18k
    alias_ty _res = NULL;
3911
6.18k
    int _mark = p->mark;
3912
6.18k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3913
3
        p->error_indicator = 1;
3914
3
        p->level--;
3915
3
        return NULL;
3916
3
    }
3917
6.17k
    int _start_lineno = p->tokens[_mark]->lineno;
3918
6.17k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3919
6.17k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3920
6.17k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3921
6.17k
    if (p->call_invalid_rules) { // invalid_import_from_as_name
3922
2.20k
        if (p->error_indicator) {
3923
0
            p->level--;
3924
0
            return NULL;
3925
0
        }
3926
2.20k
        D(fprintf(stderr, "%*c> import_from_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_import_from_as_name"));
3927
2.20k
        void *invalid_import_from_as_name_var;
3928
2.20k
        if (
3929
2.20k
            (invalid_import_from_as_name_var = invalid_import_from_as_name_rule(p))  // invalid_import_from_as_name
3930
2.20k
        )
3931
0
        {
3932
0
            D(fprintf(stderr, "%*c+ import_from_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_import_from_as_name"));
3933
0
            _res = invalid_import_from_as_name_var;
3934
0
            goto done;
3935
0
        }
3936
2.20k
        p->mark = _mark;
3937
2.20k
        D(fprintf(stderr, "%*c%s import_from_as_name[%d-%d]: %s failed!\n", p->level, ' ',
3938
2.20k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_import_from_as_name"));
3939
2.20k
    }
3940
6.17k
    { // NAME ['as' NAME]
3941
6.17k
        if (p->error_indicator) {
3942
1
            p->level--;
3943
1
            return NULL;
3944
1
        }
3945
6.17k
        D(fprintf(stderr, "%*c> import_from_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ['as' NAME]"));
3946
6.17k
        expr_ty a;
3947
6.17k
        void *b;
3948
6.17k
        if (
3949
6.17k
            (a = _PyPegen_name_token(p))  // NAME
3950
6.17k
            &&
3951
6.17k
            (b = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
3952
6.17k
        )
3953
5.45k
        {
3954
5.45k
            D(fprintf(stderr, "%*c+ import_from_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ['as' NAME]"));
3955
5.45k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3956
5.45k
            if (_token == NULL) {
3957
0
                p->level--;
3958
0
                return NULL;
3959
0
            }
3960
5.45k
            int _end_lineno = _token->end_lineno;
3961
5.45k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3962
5.45k
            int _end_col_offset = _token->end_col_offset;
3963
5.45k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3964
5.45k
            _res = _PyAST_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , EXTRA );
3965
5.45k
            if (_res == NULL && PyErr_Occurred()) {
3966
0
                p->error_indicator = 1;
3967
0
                p->level--;
3968
0
                return NULL;
3969
0
            }
3970
5.45k
            goto done;
3971
5.45k
        }
3972
719
        p->mark = _mark;
3973
719
        D(fprintf(stderr, "%*c%s import_from_as_name[%d-%d]: %s failed!\n", p->level, ' ',
3974
719
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ['as' NAME]"));
3975
719
    }
3976
0
    _res = NULL;
3977
6.17k
  done:
3978
6.17k
    p->level--;
3979
6.17k
    return _res;
3980
719
}
3981
3982
// dotted_as_names: ','.dotted_as_name+
3983
static asdl_alias_seq*
3984
dotted_as_names_rule(Parser *p)
3985
2.43k
{
3986
2.43k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3987
0
        _Pypegen_stack_overflow(p);
3988
0
    }
3989
2.43k
    if (p->error_indicator) {
3990
0
        p->level--;
3991
0
        return NULL;
3992
0
    }
3993
2.43k
    asdl_alias_seq* _res = NULL;
3994
2.43k
    int _mark = p->mark;
3995
2.43k
    { // ','.dotted_as_name+
3996
2.43k
        if (p->error_indicator) {
3997
0
            p->level--;
3998
0
            return NULL;
3999
0
        }
4000
2.43k
        D(fprintf(stderr, "%*c> dotted_as_names[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.dotted_as_name+"));
4001
2.43k
        asdl_alias_seq* a;
4002
2.43k
        if (
4003
2.43k
            (a = (asdl_alias_seq*)_gather_23_rule(p))  // ','.dotted_as_name+
4004
2.43k
        )
4005
2.39k
        {
4006
2.39k
            D(fprintf(stderr, "%*c+ dotted_as_names[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.dotted_as_name+"));
4007
2.39k
            _res = a;
4008
2.39k
            if (_res == NULL && PyErr_Occurred()) {
4009
0
                p->error_indicator = 1;
4010
0
                p->level--;
4011
0
                return NULL;
4012
0
            }
4013
2.39k
            goto done;
4014
2.39k
        }
4015
33
        p->mark = _mark;
4016
33
        D(fprintf(stderr, "%*c%s dotted_as_names[%d-%d]: %s failed!\n", p->level, ' ',
4017
33
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.dotted_as_name+"));
4018
33
    }
4019
0
    _res = NULL;
4020
2.43k
  done:
4021
2.43k
    p->level--;
4022
2.43k
    return _res;
4023
33
}
4024
4025
// dotted_as_name: invalid_dotted_as_name | dotted_name ['as' NAME]
4026
static alias_ty
4027
dotted_as_name_rule(Parser *p)
4028
7.50k
{
4029
7.50k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4030
0
        _Pypegen_stack_overflow(p);
4031
0
    }
4032
7.50k
    if (p->error_indicator) {
4033
0
        p->level--;
4034
0
        return NULL;
4035
0
    }
4036
7.50k
    alias_ty _res = NULL;
4037
7.50k
    int _mark = p->mark;
4038
7.50k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4039
1
        p->error_indicator = 1;
4040
1
        p->level--;
4041
1
        return NULL;
4042
1
    }
4043
7.49k
    int _start_lineno = p->tokens[_mark]->lineno;
4044
7.49k
    UNUSED(_start_lineno); // Only used by EXTRA macro
4045
7.49k
    int _start_col_offset = p->tokens[_mark]->col_offset;
4046
7.49k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
4047
7.49k
    if (p->call_invalid_rules) { // invalid_dotted_as_name
4048
2.88k
        if (p->error_indicator) {
4049
0
            p->level--;
4050
0
            return NULL;
4051
0
        }
4052
2.88k
        D(fprintf(stderr, "%*c> dotted_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_dotted_as_name"));
4053
2.88k
        void *invalid_dotted_as_name_var;
4054
2.88k
        if (
4055
2.88k
            (invalid_dotted_as_name_var = invalid_dotted_as_name_rule(p))  // invalid_dotted_as_name
4056
2.88k
        )
4057
0
        {
4058
0
            D(fprintf(stderr, "%*c+ dotted_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_dotted_as_name"));
4059
0
            _res = invalid_dotted_as_name_var;
4060
0
            goto done;
4061
0
        }
4062
2.88k
        p->mark = _mark;
4063
2.88k
        D(fprintf(stderr, "%*c%s dotted_as_name[%d-%d]: %s failed!\n", p->level, ' ',
4064
2.88k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_dotted_as_name"));
4065
2.88k
    }
4066
7.49k
    { // dotted_name ['as' NAME]
4067
7.49k
        if (p->error_indicator) {
4068
25
            p->level--;
4069
25
            return NULL;
4070
25
        }
4071
7.47k
        D(fprintf(stderr, "%*c> dotted_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name ['as' NAME]"));
4072
7.47k
        expr_ty a;
4073
7.47k
        void *b;
4074
7.47k
        if (
4075
7.47k
            (a = dotted_name_rule(p))  // dotted_name
4076
7.47k
            &&
4077
7.47k
            (b = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
4078
7.47k
        )
4079
7.41k
        {
4080
7.41k
            D(fprintf(stderr, "%*c+ dotted_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name ['as' NAME]"));
4081
7.41k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4082
7.41k
            if (_token == NULL) {
4083
0
                p->level--;
4084
0
                return NULL;
4085
0
            }
4086
7.41k
            int _end_lineno = _token->end_lineno;
4087
7.41k
            UNUSED(_end_lineno); // Only used by EXTRA macro
4088
7.41k
            int _end_col_offset = _token->end_col_offset;
4089
7.41k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
4090
7.41k
            _res = _PyAST_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , EXTRA );
4091
7.41k
            if (_res == NULL && PyErr_Occurred()) {
4092
0
                p->error_indicator = 1;
4093
0
                p->level--;
4094
0
                return NULL;
4095
0
            }
4096
7.41k
            goto done;
4097
7.41k
        }
4098
61
        p->mark = _mark;
4099
61
        D(fprintf(stderr, "%*c%s dotted_as_name[%d-%d]: %s failed!\n", p->level, ' ',
4100
61
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name ['as' NAME]"));
4101
61
    }
4102
0
    _res = NULL;
4103
7.47k
  done:
4104
7.47k
    p->level--;
4105
7.47k
    return _res;
4106
61
}
4107
4108
// Left-recursive
4109
// dotted_name: dotted_name '.' NAME | NAME
4110
static expr_ty dotted_name_raw(Parser *);
4111
static expr_ty
4112
dotted_name_rule(Parser *p)
4113
38.5k
{
4114
38.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4115
0
        _Pypegen_stack_overflow(p);
4116
0
    }
4117
38.5k
    expr_ty _res = NULL;
4118
38.5k
    if (_PyPegen_is_memoized(p, dotted_name_type, &_res)) {
4119
27.8k
        p->level--;
4120
27.8k
        return _res;
4121
27.8k
    }
4122
10.7k
    int _mark = p->mark;
4123
10.7k
    int _resmark = p->mark;
4124
22.4k
    while (1) {
4125
22.4k
        int tmpvar_0 = _PyPegen_update_memo(p, _mark, dotted_name_type, _res);
4126
22.4k
        if (tmpvar_0) {
4127
0
            p->level--;
4128
0
            return _res;
4129
0
        }
4130
22.4k
        p->mark = _mark;
4131
22.4k
        void *_raw = dotted_name_raw(p);
4132
22.4k
        if (p->error_indicator) {
4133
16
            p->level--;
4134
16
            return NULL;
4135
16
        }
4136
22.3k
        if (_raw == NULL || p->mark <= _resmark)
4137
10.6k
            break;
4138
11.7k
        _resmark = p->mark;
4139
11.7k
        _res = _raw;
4140
11.7k
    }
4141
10.6k
    p->mark = _resmark;
4142
10.6k
    p->level--;
4143
10.6k
    return _res;
4144
10.7k
}
4145
static expr_ty
4146
dotted_name_raw(Parser *p)
4147
22.4k
{
4148
22.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4149
0
        _Pypegen_stack_overflow(p);
4150
0
    }
4151
22.4k
    if (p->error_indicator) {
4152
11
        p->level--;
4153
11
        return NULL;
4154
11
    }
4155
22.4k
    expr_ty _res = NULL;
4156
22.4k
    int _mark = p->mark;
4157
22.4k
    { // dotted_name '.' NAME
4158
22.4k
        if (p->error_indicator) {
4159
0
            p->level--;
4160
0
            return NULL;
4161
0
        }
4162
22.4k
        D(fprintf(stderr, "%*c> dotted_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name '.' NAME"));
4163
22.4k
        Token * _literal;
4164
22.4k
        expr_ty a;
4165
22.4k
        expr_ty b;
4166
22.4k
        if (
4167
22.4k
            (a = dotted_name_rule(p))  // dotted_name
4168
22.4k
            &&
4169
22.4k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
4170
22.4k
            &&
4171
22.4k
            (b = _PyPegen_name_token(p))  // NAME
4172
22.4k
        )
4173
2.26k
        {
4174
2.26k
            D(fprintf(stderr, "%*c+ dotted_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name '.' NAME"));
4175
2.26k
            _res = _PyPegen_join_names_with_dot ( p , a , b );
4176
2.26k
            if (_res == NULL && PyErr_Occurred()) {
4177
0
                p->error_indicator = 1;
4178
0
                p->level--;
4179
0
                return NULL;
4180
0
            }
4181
2.26k
            goto done;
4182
2.26k
        }
4183
20.1k
        p->mark = _mark;
4184
20.1k
        D(fprintf(stderr, "%*c%s dotted_name[%d-%d]: %s failed!\n", p->level, ' ',
4185
20.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name '.' NAME"));
4186
20.1k
    }
4187
0
    { // NAME
4188
20.1k
        if (p->error_indicator) {
4189
5
            p->level--;
4190
5
            return NULL;
4191
5
        }
4192
20.1k
        D(fprintf(stderr, "%*c> dotted_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
4193
20.1k
        expr_ty name_var;
4194
20.1k
        if (
4195
20.1k
            (name_var = _PyPegen_name_token(p))  // NAME
4196
20.1k
        )
4197
18.8k
        {
4198
18.8k
            D(fprintf(stderr, "%*c+ dotted_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
4199
18.8k
            _res = name_var;
4200
18.8k
            goto done;
4201
18.8k
        }
4202
1.26k
        p->mark = _mark;
4203
1.26k
        D(fprintf(stderr, "%*c%s dotted_name[%d-%d]: %s failed!\n", p->level, ' ',
4204
1.26k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
4205
1.26k
    }
4206
0
    _res = NULL;
4207
22.3k
  done:
4208
22.3k
    p->level--;
4209
22.3k
    return _res;
4210
1.26k
}
4211
4212
// block: NEWLINE INDENT statements DEDENT | simple_stmts | invalid_block
4213
static asdl_stmt_seq*
4214
block_rule(Parser *p)
4215
82.1k
{
4216
82.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4217
0
        _Pypegen_stack_overflow(p);
4218
0
    }
4219
82.1k
    if (p->error_indicator) {
4220
0
        p->level--;
4221
0
        return NULL;
4222
0
    }
4223
82.1k
    asdl_stmt_seq* _res = NULL;
4224
82.1k
    if (_PyPegen_is_memoized(p, block_type, &_res)) {
4225
25.3k
        p->level--;
4226
25.3k
        return _res;
4227
25.3k
    }
4228
56.7k
    int _mark = p->mark;
4229
56.7k
    { // NEWLINE INDENT statements DEDENT
4230
56.7k
        if (p->error_indicator) {
4231
0
            p->level--;
4232
0
            return NULL;
4233
0
        }
4234
56.7k
        D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
4235
56.7k
        asdl_stmt_seq* a;
4236
56.7k
        Token * dedent_var;
4237
56.7k
        Token * indent_var;
4238
56.7k
        Token * newline_var;
4239
56.7k
        if (
4240
56.7k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
4241
56.7k
            &&
4242
56.7k
            (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
4243
56.7k
            &&
4244
56.7k
            (a = statements_rule(p))  // statements
4245
56.7k
            &&
4246
56.7k
            (dedent_var = _PyPegen_expect_token(p, DEDENT))  // token='DEDENT'
4247
56.7k
        )
4248
20.7k
        {
4249
20.7k
            D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
4250
20.7k
            _res = a;
4251
20.7k
            if (_res == NULL && PyErr_Occurred()) {
4252
0
                p->error_indicator = 1;
4253
0
                p->level--;
4254
0
                return NULL;
4255
0
            }
4256
20.7k
            goto done;
4257
20.7k
        }
4258
36.0k
        p->mark = _mark;
4259
36.0k
        D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
4260
36.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
4261
36.0k
    }
4262
0
    { // simple_stmts
4263
36.0k
        if (p->error_indicator) {
4264
147
            p->level--;
4265
147
            return NULL;
4266
147
        }
4267
35.9k
        D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
4268
35.9k
        asdl_stmt_seq* simple_stmts_var;
4269
35.9k
        if (
4270
35.9k
            (simple_stmts_var = simple_stmts_rule(p))  // simple_stmts
4271
35.9k
        )
4272
33.1k
        {
4273
33.1k
            D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
4274
33.1k
            _res = simple_stmts_var;
4275
33.1k
            goto done;
4276
33.1k
        }
4277
2.73k
        p->mark = _mark;
4278
2.73k
        D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
4279
2.73k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
4280
2.73k
    }
4281
2.73k
    if (p->call_invalid_rules) { // invalid_block
4282
2.16k
        if (p->error_indicator) {
4283
21
            p->level--;
4284
21
            return NULL;
4285
21
        }
4286
2.14k
        D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_block"));
4287
2.14k
        void *invalid_block_var;
4288
2.14k
        if (
4289
2.14k
            (invalid_block_var = invalid_block_rule(p))  // invalid_block
4290
2.14k
        )
4291
0
        {
4292
0
            D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_block"));
4293
0
            _res = invalid_block_var;
4294
0
            goto done;
4295
0
        }
4296
2.14k
        p->mark = _mark;
4297
2.14k
        D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
4298
2.14k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_block"));
4299
2.14k
    }
4300
2.70k
    _res = NULL;
4301
56.6k
  done:
4302
56.6k
    _PyPegen_insert_memo(p, _mark, block_type, _res);
4303
56.6k
    p->level--;
4304
56.6k
    return _res;
4305
2.70k
}
4306
4307
// decorators: (('@' named_expression NEWLINE))+
4308
static asdl_expr_seq*
4309
decorators_rule(Parser *p)
4310
18.5k
{
4311
18.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4312
0
        _Pypegen_stack_overflow(p);
4313
0
    }
4314
18.5k
    if (p->error_indicator) {
4315
0
        p->level--;
4316
0
        return NULL;
4317
0
    }
4318
18.5k
    asdl_expr_seq* _res = NULL;
4319
18.5k
    int _mark = p->mark;
4320
18.5k
    { // (('@' named_expression NEWLINE))+
4321
18.5k
        if (p->error_indicator) {
4322
0
            p->level--;
4323
0
            return NULL;
4324
0
        }
4325
18.5k
        D(fprintf(stderr, "%*c> decorators[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(('@' named_expression NEWLINE))+"));
4326
18.5k
        asdl_expr_seq* a;
4327
18.5k
        if (
4328
18.5k
            (a = (asdl_expr_seq*)_loop1_24_rule(p))  // (('@' named_expression NEWLINE))+
4329
18.5k
        )
4330
2.17k
        {
4331
2.17k
            D(fprintf(stderr, "%*c+ decorators[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(('@' named_expression NEWLINE))+"));
4332
2.17k
            _res = a;
4333
2.17k
            if (_res == NULL && PyErr_Occurred()) {
4334
0
                p->error_indicator = 1;
4335
0
                p->level--;
4336
0
                return NULL;
4337
0
            }
4338
2.17k
            goto done;
4339
2.17k
        }
4340
16.4k
        p->mark = _mark;
4341
16.4k
        D(fprintf(stderr, "%*c%s decorators[%d-%d]: %s failed!\n", p->level, ' ',
4342
16.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(('@' named_expression NEWLINE))+"));
4343
16.4k
    }
4344
0
    _res = NULL;
4345
18.5k
  done:
4346
18.5k
    p->level--;
4347
18.5k
    return _res;
4348
16.4k
}
4349
4350
// class_def: decorators class_def_raw | class_def_raw
4351
static stmt_ty
4352
class_def_rule(Parser *p)
4353
4.32k
{
4354
4.32k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4355
0
        _Pypegen_stack_overflow(p);
4356
0
    }
4357
4.32k
    if (p->error_indicator) {
4358
0
        p->level--;
4359
0
        return NULL;
4360
0
    }
4361
4.32k
    stmt_ty _res = NULL;
4362
4.32k
    int _mark = p->mark;
4363
4.32k
    { // decorators class_def_raw
4364
4.32k
        if (p->error_indicator) {
4365
0
            p->level--;
4366
0
            return NULL;
4367
0
        }
4368
4.32k
        D(fprintf(stderr, "%*c> class_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "decorators class_def_raw"));
4369
4.32k
        asdl_expr_seq* a;
4370
4.32k
        stmt_ty b;
4371
4.32k
        if (
4372
4.32k
            (a = decorators_rule(p))  // decorators
4373
4.32k
            &&
4374
4.32k
            (b = class_def_raw_rule(p))  // class_def_raw
4375
4.32k
        )
4376
384
        {
4377
384
            D(fprintf(stderr, "%*c+ class_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "decorators class_def_raw"));
4378
384
            _res = _PyPegen_class_def_decorators ( p , a , b );
4379
384
            if (_res == NULL && PyErr_Occurred()) {
4380
0
                p->error_indicator = 1;
4381
0
                p->level--;
4382
0
                return NULL;
4383
0
            }
4384
384
            goto done;
4385
384
        }
4386
3.94k
        p->mark = _mark;
4387
3.94k
        D(fprintf(stderr, "%*c%s class_def[%d-%d]: %s failed!\n", p->level, ' ',
4388
3.94k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "decorators class_def_raw"));
4389
3.94k
    }
4390
0
    { // class_def_raw
4391
3.94k
        if (p->error_indicator) {
4392
3
            p->level--;
4393
3
            return NULL;
4394
3
        }
4395
3.93k
        D(fprintf(stderr, "%*c> class_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "class_def_raw"));
4396
3.93k
        stmt_ty class_def_raw_var;
4397
3.93k
        if (
4398
3.93k
            (class_def_raw_var = class_def_raw_rule(p))  // class_def_raw
4399
3.93k
        )
4400
3.49k
        {
4401
3.49k
            D(fprintf(stderr, "%*c+ class_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "class_def_raw"));
4402
3.49k
            _res = class_def_raw_var;
4403
3.49k
            goto done;
4404
3.49k
        }
4405
448
        p->mark = _mark;
4406
448
        D(fprintf(stderr, "%*c%s class_def[%d-%d]: %s failed!\n", p->level, ' ',
4407
448
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "class_def_raw"));
4408
448
    }
4409
0
    _res = NULL;
4410
4.32k
  done:
4411
4.32k
    p->level--;
4412
4.32k
    return _res;
4413
448
}
4414
4415
// class_def_raw:
4416
//     | invalid_class_def_raw
4417
//     | 'class' NAME type_params? ['(' arguments? ')'] ':' block
4418
static stmt_ty
4419
class_def_raw_rule(Parser *p)
4420
4.52k
{
4421
4.52k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4422
0
        _Pypegen_stack_overflow(p);
4423
0
    }
4424
4.52k
    if (p->error_indicator) {
4425
0
        p->level--;
4426
0
        return NULL;
4427
0
    }
4428
4.52k
    stmt_ty _res = NULL;
4429
4.52k
    int _mark = p->mark;
4430
4.52k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4431
0
        p->error_indicator = 1;
4432
0
        p->level--;
4433
0
        return NULL;
4434
0
    }
4435
4.52k
    int _start_lineno = p->tokens[_mark]->lineno;
4436
4.52k
    UNUSED(_start_lineno); // Only used by EXTRA macro
4437
4.52k
    int _start_col_offset = p->tokens[_mark]->col_offset;
4438
4.52k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
4439
4.52k
    if (p->call_invalid_rules) { // invalid_class_def_raw
4440
1.30k
        if (p->error_indicator) {
4441
0
            p->level--;
4442
0
            return NULL;
4443
0
        }
4444
1.30k
        D(fprintf(stderr, "%*c> class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_class_def_raw"));
4445
1.30k
        void *invalid_class_def_raw_var;
4446
1.30k
        if (
4447
1.30k
            (invalid_class_def_raw_var = invalid_class_def_raw_rule(p))  // invalid_class_def_raw
4448
1.30k
        )
4449
0
        {
4450
0
            D(fprintf(stderr, "%*c+ class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_class_def_raw"));
4451
0
            _res = invalid_class_def_raw_var;
4452
0
            goto done;
4453
0
        }
4454
1.30k
        p->mark = _mark;
4455
1.30k
        D(fprintf(stderr, "%*c%s class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4456
1.30k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_class_def_raw"));
4457
1.30k
    }
4458
4.52k
    { // 'class' NAME type_params? ['(' arguments? ')'] ':' block
4459
4.52k
        if (p->error_indicator) {
4460
17
            p->level--;
4461
17
            return NULL;
4462
17
        }
4463
4.50k
        D(fprintf(stderr, "%*c> class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] ':' block"));
4464
4.50k
        Token * _keyword;
4465
4.50k
        Token * _literal;
4466
4.50k
        expr_ty a;
4467
4.50k
        void *b;
4468
4.50k
        asdl_stmt_seq* c;
4469
4.50k
        void *t;
4470
4.50k
        if (
4471
4.50k
            (_keyword = _PyPegen_expect_token(p, 706))  // token='class'
4472
4.50k
            &&
4473
4.50k
            (a = _PyPegen_name_token(p))  // NAME
4474
4.50k
            &&
4475
4.50k
            (t = type_params_rule(p), !p->error_indicator)  // type_params?
4476
4.50k
            &&
4477
4.50k
            (b = _tmp_25_rule(p), !p->error_indicator)  // ['(' arguments? ')']
4478
4.50k
            &&
4479
4.50k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
4480
4.50k
            &&
4481
4.50k
            (c = block_rule(p))  // block
4482
4.50k
        )
4483
3.87k
        {
4484
3.87k
            D(fprintf(stderr, "%*c+ class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] ':' block"));
4485
3.87k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4486
3.87k
            if (_token == NULL) {
4487
0
                p->level--;
4488
0
                return NULL;
4489
0
            }
4490
3.87k
            int _end_lineno = _token->end_lineno;
4491
3.87k
            UNUSED(_end_lineno); // Only used by EXTRA macro
4492
3.87k
            int _end_col_offset = _token->end_col_offset;
4493
3.87k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
4494
3.87k
            _res = _PyAST_ClassDef ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , c , NULL , t , EXTRA );
4495
3.87k
            if (_res == NULL && PyErr_Occurred()) {
4496
0
                p->error_indicator = 1;
4497
0
                p->level--;
4498
0
                return NULL;
4499
0
            }
4500
3.87k
            goto done;
4501
3.87k
        }
4502
629
        p->mark = _mark;
4503
629
        D(fprintf(stderr, "%*c%s class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4504
629
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] ':' block"));
4505
629
    }
4506
0
    _res = NULL;
4507
4.50k
  done:
4508
4.50k
    p->level--;
4509
4.50k
    return _res;
4510
629
}
4511
4512
// function_def: decorators function_def_raw | function_def_raw
4513
static stmt_ty
4514
function_def_rule(Parser *p)
4515
14.2k
{
4516
14.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4517
0
        _Pypegen_stack_overflow(p);
4518
0
    }
4519
14.2k
    if (p->error_indicator) {
4520
0
        p->level--;
4521
0
        return NULL;
4522
0
    }
4523
14.2k
    stmt_ty _res = NULL;
4524
14.2k
    int _mark = p->mark;
4525
14.2k
    { // decorators function_def_raw
4526
14.2k
        if (p->error_indicator) {
4527
0
            p->level--;
4528
0
            return NULL;
4529
0
        }
4530
14.2k
        D(fprintf(stderr, "%*c> function_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "decorators function_def_raw"));
4531
14.2k
        asdl_expr_seq* d;
4532
14.2k
        stmt_ty f;
4533
14.2k
        if (
4534
14.2k
            (d = decorators_rule(p))  // decorators
4535
14.2k
            &&
4536
14.2k
            (f = function_def_raw_rule(p))  // function_def_raw
4537
14.2k
        )
4538
1.00k
        {
4539
1.00k
            D(fprintf(stderr, "%*c+ function_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "decorators function_def_raw"));
4540
1.00k
            _res = _PyPegen_function_def_decorators ( p , d , f );
4541
1.00k
            if (_res == NULL && PyErr_Occurred()) {
4542
0
                p->error_indicator = 1;
4543
0
                p->level--;
4544
0
                return NULL;
4545
0
            }
4546
1.00k
            goto done;
4547
1.00k
        }
4548
13.2k
        p->mark = _mark;
4549
13.2k
        D(fprintf(stderr, "%*c%s function_def[%d-%d]: %s failed!\n", p->level, ' ',
4550
13.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "decorators function_def_raw"));
4551
13.2k
    }
4552
0
    { // function_def_raw
4553
13.2k
        if (p->error_indicator) {
4554
40
            p->level--;
4555
40
            return NULL;
4556
40
        }
4557
13.2k
        D(fprintf(stderr, "%*c> function_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "function_def_raw"));
4558
13.2k
        stmt_ty function_def_raw_var;
4559
13.2k
        if (
4560
13.2k
            (function_def_raw_var = function_def_raw_rule(p))  // function_def_raw
4561
13.2k
        )
4562
10.3k
        {
4563
10.3k
            D(fprintf(stderr, "%*c+ function_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "function_def_raw"));
4564
10.3k
            _res = function_def_raw_var;
4565
10.3k
            goto done;
4566
10.3k
        }
4567
2.88k
        p->mark = _mark;
4568
2.88k
        D(fprintf(stderr, "%*c%s function_def[%d-%d]: %s failed!\n", p->level, ' ',
4569
2.88k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "function_def_raw"));
4570
2.88k
    }
4571
0
    _res = NULL;
4572
14.2k
  done:
4573
14.2k
    p->level--;
4574
14.2k
    return _res;
4575
2.88k
}
4576
4577
// function_def_raw:
4578
//     | invalid_def_raw
4579
//     | 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block
4580
//     | 'async' 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block
4581
static stmt_ty
4582
function_def_raw_rule(Parser *p)
4583
14.8k
{
4584
14.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4585
0
        _Pypegen_stack_overflow(p);
4586
0
    }
4587
14.8k
    if (p->error_indicator) {
4588
0
        p->level--;
4589
0
        return NULL;
4590
0
    }
4591
14.8k
    stmt_ty _res = NULL;
4592
14.8k
    int _mark = p->mark;
4593
14.8k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4594
0
        p->error_indicator = 1;
4595
0
        p->level--;
4596
0
        return NULL;
4597
0
    }
4598
14.8k
    int _start_lineno = p->tokens[_mark]->lineno;
4599
14.8k
    UNUSED(_start_lineno); // Only used by EXTRA macro
4600
14.8k
    int _start_col_offset = p->tokens[_mark]->col_offset;
4601
14.8k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
4602
14.8k
    if (p->call_invalid_rules) { // invalid_def_raw
4603
3.61k
        if (p->error_indicator) {
4604
0
            p->level--;
4605
0
            return NULL;
4606
0
        }
4607
3.61k
        D(fprintf(stderr, "%*c> function_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_def_raw"));
4608
3.61k
        void *invalid_def_raw_var;
4609
3.61k
        if (
4610
3.61k
            (invalid_def_raw_var = invalid_def_raw_rule(p))  // invalid_def_raw
4611
3.61k
        )
4612
2.10k
        {
4613
2.10k
            D(fprintf(stderr, "%*c+ function_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_def_raw"));
4614
2.10k
            _res = invalid_def_raw_var;
4615
2.10k
            goto done;
4616
2.10k
        }
4617
1.50k
        p->mark = _mark;
4618
1.50k
        D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4619
1.50k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_def_raw"));
4620
1.50k
    }
4621
12.6k
    { // 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block
4622
12.6k
        if (p->error_indicator) {
4623
226
            p->level--;
4624
226
            return NULL;
4625
226
        }
4626
12.4k
        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"));
4627
12.4k
        Token * _keyword;
4628
12.4k
        Token * _literal;
4629
12.4k
        Token * _literal_1;
4630
12.4k
        Token * _literal_2;
4631
12.4k
        void *a;
4632
12.4k
        asdl_stmt_seq* b;
4633
12.4k
        expr_ty n;
4634
12.4k
        void *params;
4635
12.4k
        void *t;
4636
12.4k
        void *tc;
4637
12.4k
        if (
4638
12.4k
            (_keyword = _PyPegen_expect_token(p, 704))  // token='def'
4639
12.4k
            &&
4640
12.4k
            (n = _PyPegen_name_token(p))  // NAME
4641
12.4k
            &&
4642
12.4k
            (t = type_params_rule(p), !p->error_indicator)  // type_params?
4643
12.4k
            &&
4644
12.4k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
4645
12.4k
            &&
4646
12.4k
            (params = params_rule(p), !p->error_indicator)  // params?
4647
12.4k
            &&
4648
12.4k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
4649
12.4k
            &&
4650
12.4k
            (a = _tmp_26_rule(p), !p->error_indicator)  // ['->' expression]
4651
12.4k
            &&
4652
12.4k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
4653
12.4k
            &&
4654
12.4k
            (tc = func_type_comment_rule(p), !p->error_indicator)  // func_type_comment?
4655
12.4k
            &&
4656
12.4k
            (b = block_rule(p))  // block
4657
12.4k
        )
4658
8.64k
        {
4659
8.64k
            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"));
4660
8.64k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4661
8.64k
            if (_token == NULL) {
4662
0
                p->level--;
4663
0
                return NULL;
4664
0
            }
4665
8.64k
            int _end_lineno = _token->end_lineno;
4666
8.64k
            UNUSED(_end_lineno); // Only used by EXTRA macro
4667
8.64k
            int _end_col_offset = _token->end_col_offset;
4668
8.64k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
4669
8.64k
            _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 );
4670
8.64k
            if (_res == NULL && PyErr_Occurred()) {
4671
0
                p->error_indicator = 1;
4672
0
                p->level--;
4673
0
                return NULL;
4674
0
            }
4675
8.64k
            goto done;
4676
8.64k
        }
4677
3.82k
        p->mark = _mark;
4678
3.82k
        D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4679
3.82k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block"));
4680
3.82k
    }
4681
0
    { // 'async' 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block
4682
3.82k
        if (p->error_indicator) {
4683
86
            p->level--;
4684
86
            return NULL;
4685
86
        }
4686
3.73k
        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"));
4687
3.73k
        Token * _keyword;
4688
3.73k
        Token * _keyword_1;
4689
3.73k
        Token * _literal;
4690
3.73k
        Token * _literal_1;
4691
3.73k
        Token * _literal_2;
4692
3.73k
        void *a;
4693
3.73k
        asdl_stmt_seq* b;
4694
3.73k
        expr_ty n;
4695
3.73k
        void *params;
4696
3.73k
        void *t;
4697
3.73k
        void *tc;
4698
3.73k
        if (
4699
3.73k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
4700
3.73k
            &&
4701
3.73k
            (_keyword_1 = _PyPegen_expect_token(p, 704))  // token='def'
4702
3.73k
            &&
4703
3.73k
            (n = _PyPegen_name_token(p))  // NAME
4704
3.73k
            &&
4705
3.73k
            (t = type_params_rule(p), !p->error_indicator)  // type_params?
4706
3.73k
            &&
4707
3.73k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
4708
3.73k
            &&
4709
3.73k
            (params = params_rule(p), !p->error_indicator)  // params?
4710
3.73k
            &&
4711
3.73k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
4712
3.73k
            &&
4713
3.73k
            (a = _tmp_26_rule(p), !p->error_indicator)  // ['->' expression]
4714
3.73k
            &&
4715
3.73k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
4716
3.73k
            &&
4717
3.73k
            (tc = func_type_comment_rule(p), !p->error_indicator)  // func_type_comment?
4718
3.73k
            &&
4719
3.73k
            (b = block_rule(p))  // block
4720
3.73k
        )
4721
571
        {
4722
571
            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"));
4723
571
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4724
571
            if (_token == NULL) {
4725
0
                p->level--;
4726
0
                return NULL;
4727
0
            }
4728
571
            int _end_lineno = _token->end_lineno;
4729
571
            UNUSED(_end_lineno); // Only used by EXTRA macro
4730
571
            int _end_col_offset = _token->end_col_offset;
4731
571
            UNUSED(_end_col_offset); // Only used by EXTRA macro
4732
571
            _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 ) );
4733
571
            if (_res == NULL && PyErr_Occurred()) {
4734
0
                p->error_indicator = 1;
4735
0
                p->level--;
4736
0
                return NULL;
4737
0
            }
4738
571
            goto done;
4739
571
        }
4740
3.16k
        p->mark = _mark;
4741
3.16k
        D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4742
3.16k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block"));
4743
3.16k
    }
4744
0
    _res = NULL;
4745
14.4k
  done:
4746
14.4k
    p->level--;
4747
14.4k
    return _res;
4748
3.16k
}
4749
4750
// params: invalid_parameters | parameters
4751
static arguments_ty
4752
params_rule(Parser *p)
4753
14.7k
{
4754
14.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4755
0
        _Pypegen_stack_overflow(p);
4756
0
    }
4757
14.7k
    if (p->error_indicator) {
4758
0
        p->level--;
4759
0
        return NULL;
4760
0
    }
4761
14.7k
    arguments_ty _res = NULL;
4762
14.7k
    int _mark = p->mark;
4763
14.7k
    if (p->call_invalid_rules) { // invalid_parameters
4764
5.07k
        if (p->error_indicator) {
4765
0
            p->level--;
4766
0
            return NULL;
4767
0
        }
4768
5.07k
        D(fprintf(stderr, "%*c> params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_parameters"));
4769
5.07k
        void *invalid_parameters_var;
4770
5.07k
        if (
4771
5.07k
            (invalid_parameters_var = invalid_parameters_rule(p))  // invalid_parameters
4772
5.07k
        )
4773
0
        {
4774
0
            D(fprintf(stderr, "%*c+ params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_parameters"));
4775
0
            _res = invalid_parameters_var;
4776
0
            goto done;
4777
0
        }
4778
5.07k
        p->mark = _mark;
4779
5.07k
        D(fprintf(stderr, "%*c%s params[%d-%d]: %s failed!\n", p->level, ' ',
4780
5.07k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_parameters"));
4781
5.07k
    }
4782
14.7k
    { // parameters
4783
14.7k
        if (p->error_indicator) {
4784
27
            p->level--;
4785
27
            return NULL;
4786
27
        }
4787
14.6k
        D(fprintf(stderr, "%*c> params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "parameters"));
4788
14.6k
        arguments_ty parameters_var;
4789
14.6k
        if (
4790
14.6k
            (parameters_var = parameters_rule(p))  // parameters
4791
14.6k
        )
4792
12.0k
        {
4793
12.0k
            D(fprintf(stderr, "%*c+ params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "parameters"));
4794
12.0k
            _res = parameters_var;
4795
12.0k
            goto done;
4796
12.0k
        }
4797
2.66k
        p->mark = _mark;
4798
2.66k
        D(fprintf(stderr, "%*c%s params[%d-%d]: %s failed!\n", p->level, ' ',
4799
2.66k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "parameters"));
4800
2.66k
    }
4801
0
    _res = NULL;
4802
14.6k
  done:
4803
14.6k
    p->level--;
4804
14.6k
    return _res;
4805
2.66k
}
4806
4807
// parameters:
4808
//     | slash_no_default param_no_default* param_with_default* star_etc?
4809
//     | slash_with_default param_with_default* star_etc?
4810
//     | param_no_default+ param_with_default* star_etc?
4811
//     | param_with_default+ star_etc?
4812
//     | star_etc
4813
static arguments_ty
4814
parameters_rule(Parser *p)
4815
14.6k
{
4816
14.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4817
0
        _Pypegen_stack_overflow(p);
4818
0
    }
4819
14.6k
    if (p->error_indicator) {
4820
0
        p->level--;
4821
0
        return NULL;
4822
0
    }
4823
14.6k
    arguments_ty _res = NULL;
4824
14.6k
    int _mark = p->mark;
4825
14.6k
    { // slash_no_default param_no_default* param_with_default* star_etc?
4826
14.6k
        if (p->error_indicator) {
4827
0
            p->level--;
4828
0
            return NULL;
4829
0
        }
4830
14.6k
        D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_no_default param_no_default* param_with_default* star_etc?"));
4831
14.6k
        asdl_arg_seq* a;
4832
14.6k
        asdl_arg_seq* b;
4833
14.6k
        asdl_seq * c;
4834
14.6k
        void *d;
4835
14.6k
        if (
4836
14.6k
            (a = slash_no_default_rule(p))  // slash_no_default
4837
14.6k
            &&
4838
14.6k
            (b = (asdl_arg_seq*)_loop0_27_rule(p))  // param_no_default*
4839
14.6k
            &&
4840
14.6k
            (c = _loop0_28_rule(p))  // param_with_default*
4841
14.6k
            &&
4842
14.6k
            (d = star_etc_rule(p), !p->error_indicator)  // star_etc?
4843
14.6k
        )
4844
882
        {
4845
882
            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?"));
4846
882
            _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , a , NULL , b , c , d ) );
4847
882
            if (_res == NULL && PyErr_Occurred()) {
4848
0
                p->error_indicator = 1;
4849
0
                p->level--;
4850
0
                return NULL;
4851
0
            }
4852
882
            goto done;
4853
882
        }
4854
13.8k
        p->mark = _mark;
4855
13.8k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4856
13.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_no_default param_no_default* param_with_default* star_etc?"));
4857
13.8k
    }
4858
0
    { // slash_with_default param_with_default* star_etc?
4859
13.8k
        if (p->error_indicator) {
4860
15
            p->level--;
4861
15
            return NULL;
4862
15
        }
4863
13.7k
        D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
4864
13.7k
        SlashWithDefault* a;
4865
13.7k
        asdl_seq * b;
4866
13.7k
        void *c;
4867
13.7k
        if (
4868
13.7k
            (a = slash_with_default_rule(p))  // slash_with_default
4869
13.7k
            &&
4870
13.7k
            (b = _loop0_28_rule(p))  // param_with_default*
4871
13.7k
            &&
4872
13.7k
            (c = star_etc_rule(p), !p->error_indicator)  // star_etc?
4873
13.7k
        )
4874
968
        {
4875
968
            D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
4876
968
            _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , NULL , a , NULL , b , c ) );
4877
968
            if (_res == NULL && PyErr_Occurred()) {
4878
0
                p->error_indicator = 1;
4879
0
                p->level--;
4880
0
                return NULL;
4881
0
            }
4882
968
            goto done;
4883
968
        }
4884
12.8k
        p->mark = _mark;
4885
12.8k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4886
12.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
4887
12.8k
    }
4888
0
    { // param_no_default+ param_with_default* star_etc?
4889
12.8k
        if (p->error_indicator) {
4890
9
            p->level--;
4891
9
            return NULL;
4892
9
        }
4893
12.8k
        D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
4894
12.8k
        asdl_arg_seq* a;
4895
12.8k
        asdl_seq * b;
4896
12.8k
        void *c;
4897
12.8k
        if (
4898
12.8k
            (a = (asdl_arg_seq*)_loop1_29_rule(p))  // param_no_default+
4899
12.8k
            &&
4900
12.8k
            (b = _loop0_28_rule(p))  // param_with_default*
4901
12.8k
            &&
4902
12.8k
            (c = star_etc_rule(p), !p->error_indicator)  // star_etc?
4903
12.8k
        )
4904
6.36k
        {
4905
6.36k
            D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
4906
6.36k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
4907
6.36k
            if (_res == NULL && PyErr_Occurred()) {
4908
0
                p->error_indicator = 1;
4909
0
                p->level--;
4910
0
                return NULL;
4911
0
            }
4912
6.36k
            goto done;
4913
6.36k
        }
4914
6.44k
        p->mark = _mark;
4915
6.44k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4916
6.44k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
4917
6.44k
    }
4918
0
    { // param_with_default+ star_etc?
4919
6.44k
        if (p->error_indicator) {
4920
3
            p->level--;
4921
3
            return NULL;
4922
3
        }
4923
6.44k
        D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+ star_etc?"));
4924
6.44k
        asdl_seq * a;
4925
6.44k
        void *b;
4926
6.44k
        if (
4927
6.44k
            (a = _loop1_30_rule(p))  // param_with_default+
4928
6.44k
            &&
4929
6.44k
            (b = star_etc_rule(p), !p->error_indicator)  // star_etc?
4930
6.44k
        )
4931
1.06k
        {
4932
1.06k
            D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+ star_etc?"));
4933
1.06k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
4934
1.06k
            if (_res == NULL && PyErr_Occurred()) {
4935
0
                p->error_indicator = 1;
4936
0
                p->level--;
4937
0
                return NULL;
4938
0
            }
4939
1.06k
            goto done;
4940
1.06k
        }
4941
5.38k
        p->mark = _mark;
4942
5.38k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4943
5.38k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default+ star_etc?"));
4944
5.38k
    }
4945
0
    { // star_etc
4946
5.38k
        if (p->error_indicator) {
4947
1
            p->level--;
4948
1
            return NULL;
4949
1
        }
4950
5.38k
        D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_etc"));
4951
5.38k
        StarEtc* a;
4952
5.38k
        if (
4953
5.38k
            (a = star_etc_rule(p))  // star_etc
4954
5.38k
        )
4955
2.74k
        {
4956
2.74k
            D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_etc"));
4957
2.74k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
4958
2.74k
            if (_res == NULL && PyErr_Occurred()) {
4959
0
                p->error_indicator = 1;
4960
0
                p->level--;
4961
0
                return NULL;
4962
0
            }
4963
2.74k
            goto done;
4964
2.74k
        }
4965
2.63k
        p->mark = _mark;
4966
2.63k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4967
2.63k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_etc"));
4968
2.63k
    }
4969
0
    _res = NULL;
4970
14.6k
  done:
4971
14.6k
    p->level--;
4972
14.6k
    return _res;
4973
2.63k
}
4974
4975
// slash_no_default: param_no_default+ '/' ',' | param_no_default+ '/' &')'
4976
static asdl_arg_seq*
4977
slash_no_default_rule(Parser *p)
4978
29.8k
{
4979
29.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4980
0
        _Pypegen_stack_overflow(p);
4981
0
    }
4982
29.8k
    if (p->error_indicator) {
4983
0
        p->level--;
4984
0
        return NULL;
4985
0
    }
4986
29.8k
    asdl_arg_seq* _res = NULL;
4987
29.8k
    int _mark = p->mark;
4988
29.8k
    { // param_no_default+ '/' ','
4989
29.8k
        if (p->error_indicator) {
4990
0
            p->level--;
4991
0
            return NULL;
4992
0
        }
4993
29.8k
        D(fprintf(stderr, "%*c> slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' ','"));
4994
29.8k
        Token * _literal;
4995
29.8k
        Token * _literal_1;
4996
29.8k
        asdl_arg_seq* a;
4997
29.8k
        if (
4998
29.8k
            (a = (asdl_arg_seq*)_loop1_29_rule(p))  // param_no_default+
4999
29.8k
            &&
5000
29.8k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
5001
29.8k
            &&
5002
29.8k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
5003
29.8k
        )
5004
555
        {
5005
555
            D(fprintf(stderr, "%*c+ slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' ','"));
5006
555
            _res = a;
5007
555
            if (_res == NULL && PyErr_Occurred()) {
5008
0
                p->error_indicator = 1;
5009
0
                p->level--;
5010
0
                return NULL;
5011
0
            }
5012
555
            goto done;
5013
555
        }
5014
29.3k
        p->mark = _mark;
5015
29.3k
        D(fprintf(stderr, "%*c%s slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5016
29.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ '/' ','"));
5017
29.3k
    }
5018
0
    { // param_no_default+ '/' &')'
5019
29.3k
        if (p->error_indicator) {
5020
12
            p->level--;
5021
12
            return NULL;
5022
12
        }
5023
29.3k
        D(fprintf(stderr, "%*c> slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' &')'"));
5024
29.3k
        Token * _literal;
5025
29.3k
        asdl_arg_seq* a;
5026
29.3k
        if (
5027
29.3k
            (a = (asdl_arg_seq*)_loop1_29_rule(p))  // param_no_default+
5028
29.3k
            &&
5029
29.3k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
5030
29.3k
            &&
5031
29.3k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5032
29.3k
        )
5033
1.86k
        {
5034
1.86k
            D(fprintf(stderr, "%*c+ slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' &')'"));
5035
1.86k
            _res = a;
5036
1.86k
            if (_res == NULL && PyErr_Occurred()) {
5037
0
                p->error_indicator = 1;
5038
0
                p->level--;
5039
0
                return NULL;
5040
0
            }
5041
1.86k
            goto done;
5042
1.86k
        }
5043
27.4k
        p->mark = _mark;
5044
27.4k
        D(fprintf(stderr, "%*c%s slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5045
27.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ '/' &')'"));
5046
27.4k
    }
5047
0
    _res = NULL;
5048
29.8k
  done:
5049
29.8k
    p->level--;
5050
29.8k
    return _res;
5051
27.4k
}
5052
5053
// slash_with_default:
5054
//     | param_no_default* param_with_default+ '/' ','
5055
//     | param_no_default* param_with_default+ '/' &')'
5056
static SlashWithDefault*
5057
slash_with_default_rule(Parser *p)
5058
27.9k
{
5059
27.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5060
0
        _Pypegen_stack_overflow(p);
5061
0
    }
5062
27.9k
    if (p->error_indicator) {
5063
0
        p->level--;
5064
0
        return NULL;
5065
0
    }
5066
27.9k
    SlashWithDefault* _res = NULL;
5067
27.9k
    int _mark = p->mark;
5068
27.9k
    { // param_no_default* param_with_default+ '/' ','
5069
27.9k
        if (p->error_indicator) {
5070
0
            p->level--;
5071
0
            return NULL;
5072
0
        }
5073
27.9k
        D(fprintf(stderr, "%*c> slash_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
5074
27.9k
        Token * _literal;
5075
27.9k
        Token * _literal_1;
5076
27.9k
        asdl_seq * a;
5077
27.9k
        asdl_seq * b;
5078
27.9k
        if (
5079
27.9k
            (a = _loop0_27_rule(p))  // param_no_default*
5080
27.9k
            &&
5081
27.9k
            (b = _loop1_30_rule(p))  // param_with_default+
5082
27.9k
            &&
5083
27.9k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
5084
27.9k
            &&
5085
27.9k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
5086
27.9k
        )
5087
191
        {
5088
191
            D(fprintf(stderr, "%*c+ slash_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
5089
191
            _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
5090
191
            if (_res == NULL && PyErr_Occurred()) {
5091
0
                p->error_indicator = 1;
5092
0
                p->level--;
5093
0
                return NULL;
5094
0
            }
5095
191
            goto done;
5096
191
        }
5097
27.7k
        p->mark = _mark;
5098
27.7k
        D(fprintf(stderr, "%*c%s slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5099
27.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
5100
27.7k
    }
5101
0
    { // param_no_default* param_with_default+ '/' &')'
5102
27.7k
        if (p->error_indicator) {
5103
11
            p->level--;
5104
11
            return NULL;
5105
11
        }
5106
27.7k
        D(fprintf(stderr, "%*c> slash_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
5107
27.7k
        Token * _literal;
5108
27.7k
        asdl_seq * a;
5109
27.7k
        asdl_seq * b;
5110
27.7k
        if (
5111
27.7k
            (a = _loop0_27_rule(p))  // param_no_default*
5112
27.7k
            &&
5113
27.7k
            (b = _loop1_30_rule(p))  // param_with_default+
5114
27.7k
            &&
5115
27.7k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
5116
27.7k
            &&
5117
27.7k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5118
27.7k
        )
5119
2.09k
        {
5120
2.09k
            D(fprintf(stderr, "%*c+ slash_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
5121
2.09k
            _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
5122
2.09k
            if (_res == NULL && PyErr_Occurred()) {
5123
0
                p->error_indicator = 1;
5124
0
                p->level--;
5125
0
                return NULL;
5126
0
            }
5127
2.09k
            goto done;
5128
2.09k
        }
5129
25.6k
        p->mark = _mark;
5130
25.6k
        D(fprintf(stderr, "%*c%s slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5131
25.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
5132
25.6k
    }
5133
0
    _res = NULL;
5134
27.9k
  done:
5135
27.9k
    p->level--;
5136
27.9k
    return _res;
5137
25.6k
}
5138
5139
// star_etc:
5140
//     | invalid_star_etc
5141
//     | '*' param_no_default param_maybe_default* kwds?
5142
//     | '*' param_no_default_star_annotation param_maybe_default* kwds?
5143
//     | '*' ',' param_maybe_default+ kwds?
5144
//     | kwds
5145
static StarEtc*
5146
star_etc_rule(Parser *p)
5147
14.6k
{
5148
14.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5149
0
        _Pypegen_stack_overflow(p);
5150
0
    }
5151
14.6k
    if (p->error_indicator) {
5152
1
        p->level--;
5153
1
        return NULL;
5154
1
    }
5155
14.6k
    StarEtc* _res = NULL;
5156
14.6k
    int _mark = p->mark;
5157
14.6k
    if (p->call_invalid_rules) { // invalid_star_etc
5158
5.04k
        if (p->error_indicator) {
5159
0
            p->level--;
5160
0
            return NULL;
5161
0
        }
5162
5.04k
        D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_star_etc"));
5163
5.04k
        void *invalid_star_etc_var;
5164
5.04k
        if (
5165
5.04k
            (invalid_star_etc_var = invalid_star_etc_rule(p))  // invalid_star_etc
5166
5.04k
        )
5167
0
        {
5168
0
            D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_star_etc"));
5169
0
            _res = invalid_star_etc_var;
5170
0
            goto done;
5171
0
        }
5172
5.04k
        p->mark = _mark;
5173
5.04k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5174
5.04k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_star_etc"));
5175
5.04k
    }
5176
14.6k
    { // '*' param_no_default param_maybe_default* kwds?
5177
14.6k
        if (p->error_indicator) {
5178
8
            p->level--;
5179
8
            return NULL;
5180
8
        }
5181
14.6k
        D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
5182
14.6k
        Token * _literal;
5183
14.6k
        arg_ty a;
5184
14.6k
        asdl_seq * b;
5185
14.6k
        void *c;
5186
14.6k
        if (
5187
14.6k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
5188
14.6k
            &&
5189
14.6k
            (a = param_no_default_rule(p))  // param_no_default
5190
14.6k
            &&
5191
14.6k
            (b = _loop0_31_rule(p))  // param_maybe_default*
5192
14.6k
            &&
5193
14.6k
            (c = kwds_rule(p), !p->error_indicator)  // kwds?
5194
14.6k
        )
5195
860
        {
5196
860
            D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
5197
860
            _res = _PyPegen_star_etc ( p , a , b , c );
5198
860
            if (_res == NULL && PyErr_Occurred()) {
5199
0
                p->error_indicator = 1;
5200
0
                p->level--;
5201
0
                return NULL;
5202
0
            }
5203
860
            goto done;
5204
860
        }
5205
13.7k
        p->mark = _mark;
5206
13.7k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5207
13.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
5208
13.7k
    }
5209
0
    { // '*' param_no_default_star_annotation param_maybe_default* kwds?
5210
13.7k
        if (p->error_indicator) {
5211
6
            p->level--;
5212
6
            return NULL;
5213
6
        }
5214
13.7k
        D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' param_no_default_star_annotation param_maybe_default* kwds?"));
5215
13.7k
        Token * _literal;
5216
13.7k
        arg_ty a;
5217
13.7k
        asdl_seq * b;
5218
13.7k
        void *c;
5219
13.7k
        if (
5220
13.7k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
5221
13.7k
            &&
5222
13.7k
            (a = param_no_default_star_annotation_rule(p))  // param_no_default_star_annotation
5223
13.7k
            &&
5224
13.7k
            (b = _loop0_31_rule(p))  // param_maybe_default*
5225
13.7k
            &&
5226
13.7k
            (c = kwds_rule(p), !p->error_indicator)  // kwds?
5227
13.7k
        )
5228
858
        {
5229
858
            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?"));
5230
858
            _res = _PyPegen_star_etc ( p , a , b , c );
5231
858
            if (_res == NULL && PyErr_Occurred()) {
5232
0
                p->error_indicator = 1;
5233
0
                p->level--;
5234
0
                return NULL;
5235
0
            }
5236
858
            goto done;
5237
858
        }
5238
12.9k
        p->mark = _mark;
5239
12.9k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5240
12.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' param_no_default_star_annotation param_maybe_default* kwds?"));
5241
12.9k
    }
5242
0
    { // '*' ',' param_maybe_default+ kwds?
5243
12.9k
        if (p->error_indicator) {
5244
5
            p->level--;
5245
5
            return NULL;
5246
5
        }
5247
12.9k
        D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
5248
12.9k
        Token * _literal;
5249
12.9k
        Token * _literal_1;
5250
12.9k
        asdl_seq * b;
5251
12.9k
        void *c;
5252
12.9k
        if (
5253
12.9k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
5254
12.9k
            &&
5255
12.9k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
5256
12.9k
            &&
5257
12.9k
            (b = _loop1_32_rule(p))  // param_maybe_default+
5258
12.9k
            &&
5259
12.9k
            (c = kwds_rule(p), !p->error_indicator)  // kwds?
5260
12.9k
        )
5261
989
        {
5262
989
            D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
5263
989
            _res = _PyPegen_star_etc ( p , NULL , b , c );
5264
989
            if (_res == NULL && PyErr_Occurred()) {
5265
0
                p->error_indicator = 1;
5266
0
                p->level--;
5267
0
                return NULL;
5268
0
            }
5269
989
            goto done;
5270
989
        }
5271
11.9k
        p->mark = _mark;
5272
11.9k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5273
11.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
5274
11.9k
    }
5275
0
    { // kwds
5276
11.9k
        if (p->error_indicator) {
5277
4
            p->level--;
5278
4
            return NULL;
5279
4
        }
5280
11.9k
        D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwds"));
5281
11.9k
        arg_ty a;
5282
11.9k
        if (
5283
11.9k
            (a = kwds_rule(p))  // kwds
5284
11.9k
        )
5285
613
        {
5286
613
            D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwds"));
5287
613
            _res = _PyPegen_star_etc ( p , NULL , NULL , a );
5288
613
            if (_res == NULL && PyErr_Occurred()) {
5289
0
                p->error_indicator = 1;
5290
0
                p->level--;
5291
0
                return NULL;
5292
0
            }
5293
613
            goto done;
5294
613
        }
5295
11.3k
        p->mark = _mark;
5296
11.3k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5297
11.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwds"));
5298
11.3k
    }
5299
0
    _res = NULL;
5300
14.6k
  done:
5301
14.6k
    p->level--;
5302
14.6k
    return _res;
5303
11.3k
}
5304
5305
// kwds: invalid_kwds | '**' param_no_default
5306
static arg_ty
5307
kwds_rule(Parser *p)
5308
14.6k
{
5309
14.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5310
0
        _Pypegen_stack_overflow(p);
5311
0
    }
5312
14.6k
    if (p->error_indicator) {
5313
3
        p->level--;
5314
3
        return NULL;
5315
3
    }
5316
14.6k
    arg_ty _res = NULL;
5317
14.6k
    int _mark = p->mark;
5318
14.6k
    if (p->call_invalid_rules) { // invalid_kwds
5319
5.03k
        if (p->error_indicator) {
5320
0
            p->level--;
5321
0
            return NULL;
5322
0
        }
5323
5.03k
        D(fprintf(stderr, "%*c> kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwds"));
5324
5.03k
        void *invalid_kwds_var;
5325
5.03k
        if (
5326
5.03k
            (invalid_kwds_var = invalid_kwds_rule(p))  // invalid_kwds
5327
5.03k
        )
5328
0
        {
5329
0
            D(fprintf(stderr, "%*c+ kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_kwds"));
5330
0
            _res = invalid_kwds_var;
5331
0
            goto done;
5332
0
        }
5333
5.03k
        p->mark = _mark;
5334
5.03k
        D(fprintf(stderr, "%*c%s kwds[%d-%d]: %s failed!\n", p->level, ' ',
5335
5.03k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwds"));
5336
5.03k
    }
5337
14.6k
    { // '**' param_no_default
5338
14.6k
        if (p->error_indicator) {
5339
6
            p->level--;
5340
6
            return NULL;
5341
6
        }
5342
14.6k
        D(fprintf(stderr, "%*c> kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param_no_default"));
5343
14.6k
        Token * _literal;
5344
14.6k
        arg_ty a;
5345
14.6k
        if (
5346
14.6k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
5347
14.6k
            &&
5348
14.6k
            (a = param_no_default_rule(p))  // param_no_default
5349
14.6k
        )
5350
703
        {
5351
703
            D(fprintf(stderr, "%*c+ kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' param_no_default"));
5352
703
            _res = a;
5353
703
            if (_res == NULL && PyErr_Occurred()) {
5354
0
                p->error_indicator = 1;
5355
0
                p->level--;
5356
0
                return NULL;
5357
0
            }
5358
703
            goto done;
5359
703
        }
5360
13.9k
        p->mark = _mark;
5361
13.9k
        D(fprintf(stderr, "%*c%s kwds[%d-%d]: %s failed!\n", p->level, ' ',
5362
13.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param_no_default"));
5363
13.9k
    }
5364
0
    _res = NULL;
5365
14.6k
  done:
5366
14.6k
    p->level--;
5367
14.6k
    return _res;
5368
13.9k
}
5369
5370
// param_no_default: param ',' TYPE_COMMENT? | param TYPE_COMMENT? &')'
5371
static arg_ty
5372
param_no_default_rule(Parser *p)
5373
220k
{
5374
220k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5375
0
        _Pypegen_stack_overflow(p);
5376
0
    }
5377
220k
    if (p->error_indicator) {
5378
0
        p->level--;
5379
0
        return NULL;
5380
0
    }
5381
220k
    arg_ty _res = NULL;
5382
220k
    int _mark = p->mark;
5383
220k
    { // param ',' TYPE_COMMENT?
5384
220k
        if (p->error_indicator) {
5385
0
            p->level--;
5386
0
            return NULL;
5387
0
        }
5388
220k
        D(fprintf(stderr, "%*c> param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param ',' TYPE_COMMENT?"));
5389
220k
        Token * _literal;
5390
220k
        arg_ty a;
5391
220k
        void *tc;
5392
220k
        if (
5393
220k
            (a = param_rule(p))  // param
5394
220k
            &&
5395
220k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
5396
220k
            &&
5397
220k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5398
220k
        )
5399
45.6k
        {
5400
45.6k
            D(fprintf(stderr, "%*c+ param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param ',' TYPE_COMMENT?"));
5401
45.6k
            _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5402
45.6k
            if (_res == NULL && PyErr_Occurred()) {
5403
0
                p->error_indicator = 1;
5404
0
                p->level--;
5405
0
                return NULL;
5406
0
            }
5407
45.6k
            goto done;
5408
45.6k
        }
5409
175k
        p->mark = _mark;
5410
175k
        D(fprintf(stderr, "%*c%s param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5411
175k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param ',' TYPE_COMMENT?"));
5412
175k
    }
5413
0
    { // param TYPE_COMMENT? &')'
5414
175k
        if (p->error_indicator) {
5415
26
            p->level--;
5416
26
            return NULL;
5417
26
        }
5418
175k
        D(fprintf(stderr, "%*c> param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param TYPE_COMMENT? &')'"));
5419
175k
        arg_ty a;
5420
175k
        void *tc;
5421
175k
        if (
5422
175k
            (a = param_rule(p))  // param
5423
175k
            &&
5424
175k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5425
175k
            &&
5426
175k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5427
175k
        )
5428
31.9k
        {
5429
31.9k
            D(fprintf(stderr, "%*c+ param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param TYPE_COMMENT? &')'"));
5430
31.9k
            _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5431
31.9k
            if (_res == NULL && PyErr_Occurred()) {
5432
0
                p->error_indicator = 1;
5433
0
                p->level--;
5434
0
                return NULL;
5435
0
            }
5436
31.9k
            goto done;
5437
31.9k
        }
5438
143k
        p->mark = _mark;
5439
143k
        D(fprintf(stderr, "%*c%s param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5440
143k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param TYPE_COMMENT? &')'"));
5441
143k
    }
5442
0
    _res = NULL;
5443
220k
  done:
5444
220k
    p->level--;
5445
220k
    return _res;
5446
143k
}
5447
5448
// param_no_default_star_annotation:
5449
//     | param_star_annotation ',' TYPE_COMMENT?
5450
//     | param_star_annotation TYPE_COMMENT? &')'
5451
static arg_ty
5452
param_no_default_star_annotation_rule(Parser *p)
5453
1.96k
{
5454
1.96k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5455
0
        _Pypegen_stack_overflow(p);
5456
0
    }
5457
1.96k
    if (p->error_indicator) {
5458
0
        p->level--;
5459
0
        return NULL;
5460
0
    }
5461
1.96k
    arg_ty _res = NULL;
5462
1.96k
    int _mark = p->mark;
5463
1.96k
    { // param_star_annotation ',' TYPE_COMMENT?
5464
1.96k
        if (p->error_indicator) {
5465
0
            p->level--;
5466
0
            return NULL;
5467
0
        }
5468
1.96k
        D(fprintf(stderr, "%*c> param_no_default_star_annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_star_annotation ',' TYPE_COMMENT?"));
5469
1.96k
        Token * _literal;
5470
1.96k
        arg_ty a;
5471
1.96k
        void *tc;
5472
1.96k
        if (
5473
1.96k
            (a = param_star_annotation_rule(p))  // param_star_annotation
5474
1.96k
            &&
5475
1.96k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
5476
1.96k
            &&
5477
1.96k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5478
1.96k
        )
5479
130
        {
5480
130
            D(fprintf(stderr, "%*c+ param_no_default_star_annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_star_annotation ',' TYPE_COMMENT?"));
5481
130
            _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5482
130
            if (_res == NULL && PyErr_Occurred()) {
5483
0
                p->error_indicator = 1;
5484
0
                p->level--;
5485
0
                return NULL;
5486
0
            }
5487
130
            goto done;
5488
130
        }
5489
1.83k
        p->mark = _mark;
5490
1.83k
        D(fprintf(stderr, "%*c%s param_no_default_star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
5491
1.83k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_star_annotation ',' TYPE_COMMENT?"));
5492
1.83k
    }
5493
0
    { // param_star_annotation TYPE_COMMENT? &')'
5494
1.83k
        if (p->error_indicator) {
5495
3
            p->level--;
5496
3
            return NULL;
5497
3
        }
5498
1.83k
        D(fprintf(stderr, "%*c> param_no_default_star_annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_star_annotation TYPE_COMMENT? &')'"));
5499
1.83k
        arg_ty a;
5500
1.83k
        void *tc;
5501
1.83k
        if (
5502
1.83k
            (a = param_star_annotation_rule(p))  // param_star_annotation
5503
1.83k
            &&
5504
1.83k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5505
1.83k
            &&
5506
1.83k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5507
1.83k
        )
5508
730
        {
5509
730
            D(fprintf(stderr, "%*c+ param_no_default_star_annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_star_annotation TYPE_COMMENT? &')'"));
5510
730
            _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5511
730
            if (_res == NULL && PyErr_Occurred()) {
5512
0
                p->error_indicator = 1;
5513
0
                p->level--;
5514
0
                return NULL;
5515
0
            }
5516
730
            goto done;
5517
730
        }
5518
1.10k
        p->mark = _mark;
5519
1.10k
        D(fprintf(stderr, "%*c%s param_no_default_star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
5520
1.10k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_star_annotation TYPE_COMMENT? &')'"));
5521
1.10k
    }
5522
0
    _res = NULL;
5523
1.96k
  done:
5524
1.96k
    p->level--;
5525
1.96k
    return _res;
5526
1.10k
}
5527
5528
// param_with_default: param default ',' TYPE_COMMENT? | param default TYPE_COMMENT? &')'
5529
static NameDefaultPair*
5530
param_with_default_rule(Parser *p)
5531
98.9k
{
5532
98.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5533
0
        _Pypegen_stack_overflow(p);
5534
0
    }
5535
98.9k
    if (p->error_indicator) {
5536
0
        p->level--;
5537
0
        return NULL;
5538
0
    }
5539
98.9k
    NameDefaultPair* _res = NULL;
5540
98.9k
    int _mark = p->mark;
5541
98.9k
    { // param default ',' TYPE_COMMENT?
5542
98.9k
        if (p->error_indicator) {
5543
0
            p->level--;
5544
0
            return NULL;
5545
0
        }
5546
98.9k
        D(fprintf(stderr, "%*c> param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default ',' TYPE_COMMENT?"));
5547
98.9k
        Token * _literal;
5548
98.9k
        arg_ty a;
5549
98.9k
        expr_ty c;
5550
98.9k
        void *tc;
5551
98.9k
        if (
5552
98.9k
            (a = param_rule(p))  // param
5553
98.9k
            &&
5554
98.9k
            (c = default_rule(p))  // default
5555
98.9k
            &&
5556
98.9k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
5557
98.9k
            &&
5558
98.9k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5559
98.9k
        )
5560
15.5k
        {
5561
15.5k
            D(fprintf(stderr, "%*c+ param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default ',' TYPE_COMMENT?"));
5562
15.5k
            _res = _PyPegen_name_default_pair ( p , a , c , tc );
5563
15.5k
            if (_res == NULL && PyErr_Occurred()) {
5564
0
                p->error_indicator = 1;
5565
0
                p->level--;
5566
0
                return NULL;
5567
0
            }
5568
15.5k
            goto done;
5569
15.5k
        }
5570
83.3k
        p->mark = _mark;
5571
83.3k
        D(fprintf(stderr, "%*c%s param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5572
83.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default ',' TYPE_COMMENT?"));
5573
83.3k
    }
5574
0
    { // param default TYPE_COMMENT? &')'
5575
83.3k
        if (p->error_indicator) {
5576
10
            p->level--;
5577
10
            return NULL;
5578
10
        }
5579
83.3k
        D(fprintf(stderr, "%*c> param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default TYPE_COMMENT? &')'"));
5580
83.3k
        arg_ty a;
5581
83.3k
        expr_ty c;
5582
83.3k
        void *tc;
5583
83.3k
        if (
5584
83.3k
            (a = param_rule(p))  // param
5585
83.3k
            &&
5586
83.3k
            (c = default_rule(p))  // default
5587
83.3k
            &&
5588
83.3k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5589
83.3k
            &&
5590
83.3k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5591
83.3k
        )
5592
8.36k
        {
5593
8.36k
            D(fprintf(stderr, "%*c+ param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default TYPE_COMMENT? &')'"));
5594
8.36k
            _res = _PyPegen_name_default_pair ( p , a , c , tc );
5595
8.36k
            if (_res == NULL && PyErr_Occurred()) {
5596
0
                p->error_indicator = 1;
5597
0
                p->level--;
5598
0
                return NULL;
5599
0
            }
5600
8.36k
            goto done;
5601
8.36k
        }
5602
74.9k
        p->mark = _mark;
5603
74.9k
        D(fprintf(stderr, "%*c%s param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5604
74.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default TYPE_COMMENT? &')'"));
5605
74.9k
    }
5606
0
    _res = NULL;
5607
98.9k
  done:
5608
98.9k
    p->level--;
5609
98.9k
    return _res;
5610
74.9k
}
5611
5612
// param_maybe_default:
5613
//     | param default? ',' TYPE_COMMENT?
5614
//     | param default? TYPE_COMMENT? &')'
5615
static NameDefaultPair*
5616
param_maybe_default_rule(Parser *p)
5617
27.2k
{
5618
27.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5619
0
        _Pypegen_stack_overflow(p);
5620
0
    }
5621
27.2k
    if (p->error_indicator) {
5622
0
        p->level--;
5623
0
        return NULL;
5624
0
    }
5625
27.2k
    NameDefaultPair* _res = NULL;
5626
27.2k
    int _mark = p->mark;
5627
27.2k
    { // param default? ',' TYPE_COMMENT?
5628
27.2k
        if (p->error_indicator) {
5629
0
            p->level--;
5630
0
            return NULL;
5631
0
        }
5632
27.2k
        D(fprintf(stderr, "%*c> param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
5633
27.2k
        Token * _literal;
5634
27.2k
        arg_ty a;
5635
27.2k
        void *c;
5636
27.2k
        void *tc;
5637
27.2k
        if (
5638
27.2k
            (a = param_rule(p))  // param
5639
27.2k
            &&
5640
27.2k
            (c = default_rule(p), !p->error_indicator)  // default?
5641
27.2k
            &&
5642
27.2k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
5643
27.2k
            &&
5644
27.2k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5645
27.2k
        )
5646
7.06k
        {
5647
7.06k
            D(fprintf(stderr, "%*c+ param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
5648
7.06k
            _res = _PyPegen_name_default_pair ( p , a , c , tc );
5649
7.06k
            if (_res == NULL && PyErr_Occurred()) {
5650
0
                p->error_indicator = 1;
5651
0
                p->level--;
5652
0
                return NULL;
5653
0
            }
5654
7.06k
            goto done;
5655
7.06k
        }
5656
20.1k
        p->mark = _mark;
5657
20.1k
        D(fprintf(stderr, "%*c%s param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
5658
20.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
5659
20.1k
    }
5660
0
    { // param default? TYPE_COMMENT? &')'
5661
20.1k
        if (p->error_indicator) {
5662
9
            p->level--;
5663
9
            return NULL;
5664
9
        }
5665
20.1k
        D(fprintf(stderr, "%*c> param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
5666
20.1k
        arg_ty a;
5667
20.1k
        void *c;
5668
20.1k
        void *tc;
5669
20.1k
        if (
5670
20.1k
            (a = param_rule(p))  // param
5671
20.1k
            &&
5672
20.1k
            (c = default_rule(p), !p->error_indicator)  // default?
5673
20.1k
            &&
5674
20.1k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5675
20.1k
            &&
5676
20.1k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5677
20.1k
        )
5678
4.29k
        {
5679
4.29k
            D(fprintf(stderr, "%*c+ param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
5680
4.29k
            _res = _PyPegen_name_default_pair ( p , a , c , tc );
5681
4.29k
            if (_res == NULL && PyErr_Occurred()) {
5682
0
                p->error_indicator = 1;
5683
0
                p->level--;
5684
0
                return NULL;
5685
0
            }
5686
4.29k
            goto done;
5687
4.29k
        }
5688
15.8k
        p->mark = _mark;
5689
15.8k
        D(fprintf(stderr, "%*c%s param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
5690
15.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
5691
15.8k
    }
5692
0
    _res = NULL;
5693
27.2k
  done:
5694
27.2k
    p->level--;
5695
27.2k
    return _res;
5696
15.8k
}
5697
5698
// param: NAME annotation?
5699
static arg_ty
5700
param_rule(Parser *p)
5701
628k
{
5702
628k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5703
0
        _Pypegen_stack_overflow(p);
5704
0
    }
5705
628k
    if (p->error_indicator) {
5706
0
        p->level--;
5707
0
        return NULL;
5708
0
    }
5709
628k
    arg_ty _res = NULL;
5710
628k
    int _mark = p->mark;
5711
628k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5712
17
        p->error_indicator = 1;
5713
17
        p->level--;
5714
17
        return NULL;
5715
17
    }
5716
627k
    int _start_lineno = p->tokens[_mark]->lineno;
5717
627k
    UNUSED(_start_lineno); // Only used by EXTRA macro
5718
627k
    int _start_col_offset = p->tokens[_mark]->col_offset;
5719
627k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
5720
627k
    { // NAME annotation?
5721
627k
        if (p->error_indicator) {
5722
0
            p->level--;
5723
0
            return NULL;
5724
0
        }
5725
627k
        D(fprintf(stderr, "%*c> param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME annotation?"));
5726
627k
        expr_ty a;
5727
627k
        void *b;
5728
627k
        if (
5729
627k
            (a = _PyPegen_name_token(p))  // NAME
5730
627k
            &&
5731
627k
            (b = annotation_rule(p), !p->error_indicator)  // annotation?
5732
627k
        )
5733
228k
        {
5734
228k
            D(fprintf(stderr, "%*c+ param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME annotation?"));
5735
228k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5736
228k
            if (_token == NULL) {
5737
0
                p->level--;
5738
0
                return NULL;
5739
0
            }
5740
228k
            int _end_lineno = _token->end_lineno;
5741
228k
            UNUSED(_end_lineno); // Only used by EXTRA macro
5742
228k
            int _end_col_offset = _token->end_col_offset;
5743
228k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
5744
228k
            _res = _PyAST_arg ( a -> v . Name . id , b , NULL , EXTRA );
5745
228k
            if (_res == NULL && PyErr_Occurred()) {
5746
0
                p->error_indicator = 1;
5747
0
                p->level--;
5748
0
                return NULL;
5749
0
            }
5750
228k
            goto done;
5751
228k
        }
5752
399k
        p->mark = _mark;
5753
399k
        D(fprintf(stderr, "%*c%s param[%d-%d]: %s failed!\n", p->level, ' ',
5754
399k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME annotation?"));
5755
399k
    }
5756
0
    _res = NULL;
5757
627k
  done:
5758
627k
    p->level--;
5759
627k
    return _res;
5760
399k
}
5761
5762
// param_star_annotation: NAME star_annotation
5763
static arg_ty
5764
param_star_annotation_rule(Parser *p)
5765
3.79k
{
5766
3.79k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5767
0
        _Pypegen_stack_overflow(p);
5768
0
    }
5769
3.79k
    if (p->error_indicator) {
5770
0
        p->level--;
5771
0
        return NULL;
5772
0
    }
5773
3.79k
    arg_ty _res = NULL;
5774
3.79k
    int _mark = p->mark;
5775
3.79k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5776
0
        p->error_indicator = 1;
5777
0
        p->level--;
5778
0
        return NULL;
5779
0
    }
5780
3.79k
    int _start_lineno = p->tokens[_mark]->lineno;
5781
3.79k
    UNUSED(_start_lineno); // Only used by EXTRA macro
5782
3.79k
    int _start_col_offset = p->tokens[_mark]->col_offset;
5783
3.79k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
5784
3.79k
    { // NAME star_annotation
5785
3.79k
        if (p->error_indicator) {
5786
0
            p->level--;
5787
0
            return NULL;
5788
0
        }
5789
3.79k
        D(fprintf(stderr, "%*c> param_star_annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME star_annotation"));
5790
3.79k
        expr_ty a;
5791
3.79k
        expr_ty b;
5792
3.79k
        if (
5793
3.79k
            (a = _PyPegen_name_token(p))  // NAME
5794
3.79k
            &&
5795
3.79k
            (b = star_annotation_rule(p))  // star_annotation
5796
3.79k
        )
5797
1.63k
        {
5798
1.63k
            D(fprintf(stderr, "%*c+ param_star_annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME star_annotation"));
5799
1.63k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5800
1.63k
            if (_token == NULL) {
5801
0
                p->level--;
5802
0
                return NULL;
5803
0
            }
5804
1.63k
            int _end_lineno = _token->end_lineno;
5805
1.63k
            UNUSED(_end_lineno); // Only used by EXTRA macro
5806
1.63k
            int _end_col_offset = _token->end_col_offset;
5807
1.63k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
5808
1.63k
            _res = _PyAST_arg ( a -> v . Name . id , b , NULL , EXTRA );
5809
1.63k
            if (_res == NULL && PyErr_Occurred()) {
5810
0
                p->error_indicator = 1;
5811
0
                p->level--;
5812
0
                return NULL;
5813
0
            }
5814
1.63k
            goto done;
5815
1.63k
        }
5816
2.16k
        p->mark = _mark;
5817
2.16k
        D(fprintf(stderr, "%*c%s param_star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
5818
2.16k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME star_annotation"));
5819
2.16k
    }
5820
0
    _res = NULL;
5821
3.79k
  done:
5822
3.79k
    p->level--;
5823
3.79k
    return _res;
5824
2.16k
}
5825
5826
// annotation: ':' expression
5827
static expr_ty
5828
annotation_rule(Parser *p)
5829
228k
{
5830
228k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5831
0
        _Pypegen_stack_overflow(p);
5832
0
    }
5833
228k
    if (p->error_indicator) {
5834
0
        p->level--;
5835
0
        return NULL;
5836
0
    }
5837
228k
    expr_ty _res = NULL;
5838
228k
    int _mark = p->mark;
5839
228k
    { // ':' expression
5840
228k
        if (p->error_indicator) {
5841
0
            p->level--;
5842
0
            return NULL;
5843
0
        }
5844
228k
        D(fprintf(stderr, "%*c> annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression"));
5845
228k
        Token * _literal;
5846
228k
        expr_ty a;
5847
228k
        if (
5848
228k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5849
228k
            &&
5850
228k
            (a = expression_rule(p))  // expression
5851
228k
        )
5852
3.52k
        {
5853
3.52k
            D(fprintf(stderr, "%*c+ annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression"));
5854
3.52k
            _res = a;
5855
3.52k
            if (_res == NULL && PyErr_Occurred()) {
5856
0
                p->error_indicator = 1;
5857
0
                p->level--;
5858
0
                return NULL;
5859
0
            }
5860
3.52k
            goto done;
5861
3.52k
        }
5862
225k
        p->mark = _mark;
5863
225k
        D(fprintf(stderr, "%*c%s annotation[%d-%d]: %s failed!\n", p->level, ' ',
5864
225k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression"));
5865
225k
    }
5866
0
    _res = NULL;
5867
228k
  done:
5868
228k
    p->level--;
5869
228k
    return _res;
5870
225k
}
5871
5872
// star_annotation: ':' star_expression
5873
static expr_ty
5874
star_annotation_rule(Parser *p)
5875
1.68k
{
5876
1.68k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5877
0
        _Pypegen_stack_overflow(p);
5878
0
    }
5879
1.68k
    if (p->error_indicator) {
5880
0
        p->level--;
5881
0
        return NULL;
5882
0
    }
5883
1.68k
    expr_ty _res = NULL;
5884
1.68k
    int _mark = p->mark;
5885
1.68k
    { // ':' star_expression
5886
1.68k
        if (p->error_indicator) {
5887
0
            p->level--;
5888
0
            return NULL;
5889
0
        }
5890
1.68k
        D(fprintf(stderr, "%*c> star_annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' star_expression"));
5891
1.68k
        Token * _literal;
5892
1.68k
        expr_ty a;
5893
1.68k
        if (
5894
1.68k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5895
1.68k
            &&
5896
1.68k
            (a = star_expression_rule(p))  // star_expression
5897
1.68k
        )
5898
1.63k
        {
5899
1.63k
            D(fprintf(stderr, "%*c+ star_annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' star_expression"));
5900
1.63k
            _res = a;
5901
1.63k
            if (_res == NULL && PyErr_Occurred()) {
5902
0
                p->error_indicator = 1;
5903
0
                p->level--;
5904
0
                return NULL;
5905
0
            }
5906
1.63k
            goto done;
5907
1.63k
        }
5908
50
        p->mark = _mark;
5909
50
        D(fprintf(stderr, "%*c%s star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
5910
50
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' star_expression"));
5911
50
    }
5912
0
    _res = NULL;
5913
1.68k
  done:
5914
1.68k
    p->level--;
5915
1.68k
    return _res;
5916
50
}
5917
5918
// default: '=' expression | invalid_default
5919
static expr_ty
5920
default_rule(Parser *p)
5921
150k
{
5922
150k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5923
0
        _Pypegen_stack_overflow(p);
5924
0
    }
5925
150k
    if (p->error_indicator) {
5926
0
        p->level--;
5927
0
        return NULL;
5928
0
    }
5929
150k
    expr_ty _res = NULL;
5930
150k
    int _mark = p->mark;
5931
150k
    { // '=' expression
5932
150k
        if (p->error_indicator) {
5933
0
            p->level--;
5934
0
            return NULL;
5935
0
        }
5936
150k
        D(fprintf(stderr, "%*c> default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' expression"));
5937
150k
        Token * _literal;
5938
150k
        expr_ty a;
5939
150k
        if (
5940
150k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
5941
150k
            &&
5942
150k
            (a = expression_rule(p))  // expression
5943
150k
        )
5944
84.9k
        {
5945
84.9k
            D(fprintf(stderr, "%*c+ default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' expression"));
5946
84.9k
            _res = a;
5947
84.9k
            if (_res == NULL && PyErr_Occurred()) {
5948
0
                p->error_indicator = 1;
5949
0
                p->level--;
5950
0
                return NULL;
5951
0
            }
5952
84.9k
            goto done;
5953
84.9k
        }
5954
65.4k
        p->mark = _mark;
5955
65.4k
        D(fprintf(stderr, "%*c%s default[%d-%d]: %s failed!\n", p->level, ' ',
5956
65.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' expression"));
5957
65.4k
    }
5958
65.4k
    if (p->call_invalid_rules) { // invalid_default
5959
55.9k
        if (p->error_indicator) {
5960
659
            p->level--;
5961
659
            return NULL;
5962
659
        }
5963
55.3k
        D(fprintf(stderr, "%*c> default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_default"));
5964
55.3k
        void *invalid_default_var;
5965
55.3k
        if (
5966
55.3k
            (invalid_default_var = invalid_default_rule(p))  // invalid_default
5967
55.3k
        )
5968
0
        {
5969
0
            D(fprintf(stderr, "%*c+ default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_default"));
5970
0
            _res = invalid_default_var;
5971
0
            goto done;
5972
0
        }
5973
55.3k
        p->mark = _mark;
5974
55.3k
        D(fprintf(stderr, "%*c%s default[%d-%d]: %s failed!\n", p->level, ' ',
5975
55.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_default"));
5976
55.3k
    }
5977
64.8k
    _res = NULL;
5978
149k
  done:
5979
149k
    p->level--;
5980
149k
    return _res;
5981
64.8k
}
5982
5983
// if_stmt:
5984
//     | invalid_if_stmt
5985
//     | 'if' named_expression ':' block elif_stmt
5986
//     | 'if' named_expression ':' block else_block?
5987
static stmt_ty
5988
if_stmt_rule(Parser *p)
5989
8.51k
{
5990
8.51k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5991
0
        _Pypegen_stack_overflow(p);
5992
0
    }
5993
8.51k
    if (p->error_indicator) {
5994
0
        p->level--;
5995
0
        return NULL;
5996
0
    }
5997
8.51k
    stmt_ty _res = NULL;
5998
8.51k
    int _mark = p->mark;
5999
8.51k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6000
0
        p->error_indicator = 1;
6001
0
        p->level--;
6002
0
        return NULL;
6003
0
    }
6004
8.51k
    int _start_lineno = p->tokens[_mark]->lineno;
6005
8.51k
    UNUSED(_start_lineno); // Only used by EXTRA macro
6006
8.51k
    int _start_col_offset = p->tokens[_mark]->col_offset;
6007
8.51k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
6008
8.51k
    if (p->call_invalid_rules) { // invalid_if_stmt
6009
744
        if (p->error_indicator) {
6010
0
            p->level--;
6011
0
            return NULL;
6012
0
        }
6013
744
        D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_if_stmt"));
6014
744
        void *invalid_if_stmt_var;
6015
744
        if (
6016
744
            (invalid_if_stmt_var = invalid_if_stmt_rule(p))  // invalid_if_stmt
6017
744
        )
6018
0
        {
6019
0
            D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_if_stmt"));
6020
0
            _res = invalid_if_stmt_var;
6021
0
            goto done;
6022
0
        }
6023
744
        p->mark = _mark;
6024
744
        D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6025
744
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_if_stmt"));
6026
744
    }
6027
8.51k
    { // 'if' named_expression ':' block elif_stmt
6028
8.51k
        if (p->error_indicator) {
6029
9
            p->level--;
6030
9
            return NULL;
6031
9
        }
6032
8.51k
        D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
6033
8.51k
        Token * _keyword;
6034
8.51k
        Token * _literal;
6035
8.51k
        expr_ty a;
6036
8.51k
        asdl_stmt_seq* b;
6037
8.51k
        stmt_ty c;
6038
8.51k
        if (
6039
8.51k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
6040
8.51k
            &&
6041
8.51k
            (a = named_expression_rule(p))  // named_expression
6042
8.51k
            &&
6043
8.51k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6044
8.51k
            &&
6045
8.51k
            (b = block_rule(p))  // block
6046
8.51k
            &&
6047
8.51k
            (c = elif_stmt_rule(p))  // elif_stmt
6048
8.51k
        )
6049
631
        {
6050
631
            D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
6051
631
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6052
631
            if (_token == NULL) {
6053
0
                p->level--;
6054
0
                return NULL;
6055
0
            }
6056
631
            int _end_lineno = _token->end_lineno;
6057
631
            UNUSED(_end_lineno); // Only used by EXTRA macro
6058
631
            int _end_col_offset = _token->end_col_offset;
6059
631
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6060
631
            _res = _PyAST_If ( a , b , CHECK ( asdl_stmt_seq* , _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
6061
631
            if (_res == NULL && PyErr_Occurred()) {
6062
0
                p->error_indicator = 1;
6063
0
                p->level--;
6064
0
                return NULL;
6065
0
            }
6066
631
            goto done;
6067
631
        }
6068
7.87k
        p->mark = _mark;
6069
7.87k
        D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6070
7.87k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
6071
7.87k
    }
6072
0
    { // 'if' named_expression ':' block else_block?
6073
7.87k
        if (p->error_indicator) {
6074
39
            p->level--;
6075
39
            return NULL;
6076
39
        }
6077
7.84k
        D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block else_block?"));
6078
7.84k
        Token * _keyword;
6079
7.84k
        Token * _literal;
6080
7.84k
        expr_ty a;
6081
7.84k
        asdl_stmt_seq* b;
6082
7.84k
        void *c;
6083
7.84k
        if (
6084
7.84k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
6085
7.84k
            &&
6086
7.84k
            (a = named_expression_rule(p))  // named_expression
6087
7.84k
            &&
6088
7.84k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6089
7.84k
            &&
6090
7.84k
            (b = block_rule(p))  // block
6091
7.84k
            &&
6092
7.84k
            (c = else_block_rule(p), !p->error_indicator)  // else_block?
6093
7.84k
        )
6094
7.72k
        {
6095
7.72k
            D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block else_block?"));
6096
7.72k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6097
7.72k
            if (_token == NULL) {
6098
0
                p->level--;
6099
0
                return NULL;
6100
0
            }
6101
7.72k
            int _end_lineno = _token->end_lineno;
6102
7.72k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6103
7.72k
            int _end_col_offset = _token->end_col_offset;
6104
7.72k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6105
7.72k
            _res = _PyAST_If ( a , b , c , EXTRA );
6106
7.72k
            if (_res == NULL && PyErr_Occurred()) {
6107
0
                p->error_indicator = 1;
6108
0
                p->level--;
6109
0
                return NULL;
6110
0
            }
6111
7.72k
            goto done;
6112
7.72k
        }
6113
114
        p->mark = _mark;
6114
114
        D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6115
114
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' block else_block?"));
6116
114
    }
6117
0
    _res = NULL;
6118
8.47k
  done:
6119
8.47k
    p->level--;
6120
8.47k
    return _res;
6121
114
}
6122
6123
// elif_stmt:
6124
//     | invalid_elif_stmt
6125
//     | 'elif' named_expression ':' block elif_stmt
6126
//     | 'elif' named_expression ':' block else_block?
6127
static stmt_ty
6128
elif_stmt_rule(Parser *p)
6129
10.2k
{
6130
10.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6131
0
        _Pypegen_stack_overflow(p);
6132
0
    }
6133
10.2k
    if (p->error_indicator) {
6134
0
        p->level--;
6135
0
        return NULL;
6136
0
    }
6137
10.2k
    stmt_ty _res = NULL;
6138
10.2k
    int _mark = p->mark;
6139
10.2k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6140
2
        p->error_indicator = 1;
6141
2
        p->level--;
6142
2
        return NULL;
6143
2
    }
6144
10.2k
    int _start_lineno = p->tokens[_mark]->lineno;
6145
10.2k
    UNUSED(_start_lineno); // Only used by EXTRA macro
6146
10.2k
    int _start_col_offset = p->tokens[_mark]->col_offset;
6147
10.2k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
6148
10.2k
    if (p->call_invalid_rules) { // invalid_elif_stmt
6149
1.03k
        if (p->error_indicator) {
6150
0
            p->level--;
6151
0
            return NULL;
6152
0
        }
6153
1.03k
        D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_elif_stmt"));
6154
1.03k
        void *invalid_elif_stmt_var;
6155
1.03k
        if (
6156
1.03k
            (invalid_elif_stmt_var = invalid_elif_stmt_rule(p))  // invalid_elif_stmt
6157
1.03k
        )
6158
0
        {
6159
0
            D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_elif_stmt"));
6160
0
            _res = invalid_elif_stmt_var;
6161
0
            goto done;
6162
0
        }
6163
1.03k
        p->mark = _mark;
6164
1.03k
        D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6165
1.03k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_elif_stmt"));
6166
1.03k
    }
6167
10.2k
    { // 'elif' named_expression ':' block elif_stmt
6168
10.2k
        if (p->error_indicator) {
6169
11
            p->level--;
6170
11
            return NULL;
6171
11
        }
6172
10.2k
        D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
6173
10.2k
        Token * _keyword;
6174
10.2k
        Token * _literal;
6175
10.2k
        expr_ty a;
6176
10.2k
        asdl_stmt_seq* b;
6177
10.2k
        stmt_ty c;
6178
10.2k
        if (
6179
10.2k
            (_keyword = _PyPegen_expect_token(p, 692))  // token='elif'
6180
10.2k
            &&
6181
10.2k
            (a = named_expression_rule(p))  // named_expression
6182
10.2k
            &&
6183
10.2k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6184
10.2k
            &&
6185
10.2k
            (b = block_rule(p))  // block
6186
10.2k
            &&
6187
10.2k
            (c = elif_stmt_rule(p))  // elif_stmt
6188
10.2k
        )
6189
1.04k
        {
6190
1.04k
            D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
6191
1.04k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6192
1.04k
            if (_token == NULL) {
6193
0
                p->level--;
6194
0
                return NULL;
6195
0
            }
6196
1.04k
            int _end_lineno = _token->end_lineno;
6197
1.04k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6198
1.04k
            int _end_col_offset = _token->end_col_offset;
6199
1.04k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6200
1.04k
            _res = _PyAST_If ( a , b , CHECK ( asdl_stmt_seq* , _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
6201
1.04k
            if (_res == NULL && PyErr_Occurred()) {
6202
0
                p->error_indicator = 1;
6203
0
                p->level--;
6204
0
                return NULL;
6205
0
            }
6206
1.04k
            goto done;
6207
1.04k
        }
6208
9.19k
        p->mark = _mark;
6209
9.19k
        D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6210
9.19k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
6211
9.19k
    }
6212
0
    { // 'elif' named_expression ':' block else_block?
6213
9.19k
        if (p->error_indicator) {
6214
201
            p->level--;
6215
201
            return NULL;
6216
201
        }
6217
8.99k
        D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block else_block?"));
6218
8.99k
        Token * _keyword;
6219
8.99k
        Token * _literal;
6220
8.99k
        expr_ty a;
6221
8.99k
        asdl_stmt_seq* b;
6222
8.99k
        void *c;
6223
8.99k
        if (
6224
8.99k
            (_keyword = _PyPegen_expect_token(p, 692))  // token='elif'
6225
8.99k
            &&
6226
8.99k
            (a = named_expression_rule(p))  // named_expression
6227
8.99k
            &&
6228
8.99k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6229
8.99k
            &&
6230
8.99k
            (b = block_rule(p))  // block
6231
8.99k
            &&
6232
8.99k
            (c = else_block_rule(p), !p->error_indicator)  // else_block?
6233
8.99k
        )
6234
631
        {
6235
631
            D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block else_block?"));
6236
631
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6237
631
            if (_token == NULL) {
6238
0
                p->level--;
6239
0
                return NULL;
6240
0
            }
6241
631
            int _end_lineno = _token->end_lineno;
6242
631
            UNUSED(_end_lineno); // Only used by EXTRA macro
6243
631
            int _end_col_offset = _token->end_col_offset;
6244
631
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6245
631
            _res = _PyAST_If ( a , b , c , EXTRA );
6246
631
            if (_res == NULL && PyErr_Occurred()) {
6247
0
                p->error_indicator = 1;
6248
0
                p->level--;
6249
0
                return NULL;
6250
0
            }
6251
631
            goto done;
6252
631
        }
6253
8.36k
        p->mark = _mark;
6254
8.36k
        D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6255
8.36k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' block else_block?"));
6256
8.36k
    }
6257
0
    _res = NULL;
6258
10.0k
  done:
6259
10.0k
    p->level--;
6260
10.0k
    return _res;
6261
8.36k
}
6262
6263
// else_block: invalid_else_stmt | 'else' &&':' block
6264
static asdl_stmt_seq*
6265
else_block_rule(Parser *p)
6266
16.0k
{
6267
16.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6268
0
        _Pypegen_stack_overflow(p);
6269
0
    }
6270
16.0k
    if (p->error_indicator) {
6271
0
        p->level--;
6272
0
        return NULL;
6273
0
    }
6274
16.0k
    asdl_stmt_seq* _res = NULL;
6275
16.0k
    int _mark = p->mark;
6276
16.0k
    if (p->call_invalid_rules) { // invalid_else_stmt
6277
2.62k
        if (p->error_indicator) {
6278
0
            p->level--;
6279
0
            return NULL;
6280
0
        }
6281
2.62k
        D(fprintf(stderr, "%*c> else_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_else_stmt"));
6282
2.62k
        void *invalid_else_stmt_var;
6283
2.62k
        if (
6284
2.62k
            (invalid_else_stmt_var = invalid_else_stmt_rule(p))  // invalid_else_stmt
6285
2.62k
        )
6286
0
        {
6287
0
            D(fprintf(stderr, "%*c+ else_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_else_stmt"));
6288
0
            _res = invalid_else_stmt_var;
6289
0
            goto done;
6290
0
        }
6291
2.62k
        p->mark = _mark;
6292
2.62k
        D(fprintf(stderr, "%*c%s else_block[%d-%d]: %s failed!\n", p->level, ' ',
6293
2.62k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_else_stmt"));
6294
2.62k
    }
6295
16.0k
    { // 'else' &&':' block
6296
16.0k
        if (p->error_indicator) {
6297
7
            p->level--;
6298
7
            return NULL;
6299
7
        }
6300
16.0k
        D(fprintf(stderr, "%*c> else_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else' &&':' block"));
6301
16.0k
        Token * _keyword;
6302
16.0k
        Token * _literal;
6303
16.0k
        asdl_stmt_seq* b;
6304
16.0k
        if (
6305
16.0k
            (_keyword = _PyPegen_expect_token(p, 691))  // token='else'
6306
16.0k
            &&
6307
16.0k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
6308
16.0k
            &&
6309
16.0k
            (b = block_rule(p))  // block
6310
16.0k
        )
6311
1.72k
        {
6312
1.72k
            D(fprintf(stderr, "%*c+ else_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else' &&':' block"));
6313
1.72k
            _res = b;
6314
1.72k
            if (_res == NULL && PyErr_Occurred()) {
6315
0
                p->error_indicator = 1;
6316
0
                p->level--;
6317
0
                return NULL;
6318
0
            }
6319
1.72k
            goto done;
6320
1.72k
        }
6321
14.3k
        p->mark = _mark;
6322
14.3k
        D(fprintf(stderr, "%*c%s else_block[%d-%d]: %s failed!\n", p->level, ' ',
6323
14.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else' &&':' block"));
6324
14.3k
    }
6325
0
    _res = NULL;
6326
16.0k
  done:
6327
16.0k
    p->level--;
6328
16.0k
    return _res;
6329
14.3k
}
6330
6331
// while_stmt: invalid_while_stmt | 'while' named_expression ':' block else_block?
6332
static stmt_ty
6333
while_stmt_rule(Parser *p)
6334
1.30k
{
6335
1.30k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6336
0
        _Pypegen_stack_overflow(p);
6337
0
    }
6338
1.30k
    if (p->error_indicator) {
6339
0
        p->level--;
6340
0
        return NULL;
6341
0
    }
6342
1.30k
    stmt_ty _res = NULL;
6343
1.30k
    int _mark = p->mark;
6344
1.30k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6345
0
        p->error_indicator = 1;
6346
0
        p->level--;
6347
0
        return NULL;
6348
0
    }
6349
1.30k
    int _start_lineno = p->tokens[_mark]->lineno;
6350
1.30k
    UNUSED(_start_lineno); // Only used by EXTRA macro
6351
1.30k
    int _start_col_offset = p->tokens[_mark]->col_offset;
6352
1.30k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
6353
1.30k
    if (p->call_invalid_rules) { // invalid_while_stmt
6354
372
        if (p->error_indicator) {
6355
0
            p->level--;
6356
0
            return NULL;
6357
0
        }
6358
372
        D(fprintf(stderr, "%*c> while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_while_stmt"));
6359
372
        void *invalid_while_stmt_var;
6360
372
        if (
6361
372
            (invalid_while_stmt_var = invalid_while_stmt_rule(p))  // invalid_while_stmt
6362
372
        )
6363
0
        {
6364
0
            D(fprintf(stderr, "%*c+ while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_while_stmt"));
6365
0
            _res = invalid_while_stmt_var;
6366
0
            goto done;
6367
0
        }
6368
372
        p->mark = _mark;
6369
372
        D(fprintf(stderr, "%*c%s while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6370
372
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_while_stmt"));
6371
372
    }
6372
1.30k
    { // 'while' named_expression ':' block else_block?
6373
1.30k
        if (p->error_indicator) {
6374
9
            p->level--;
6375
9
            return NULL;
6376
9
        }
6377
1.29k
        D(fprintf(stderr, "%*c> while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' block else_block?"));
6378
1.29k
        Token * _keyword;
6379
1.29k
        Token * _literal;
6380
1.29k
        expr_ty a;
6381
1.29k
        asdl_stmt_seq* b;
6382
1.29k
        void *c;
6383
1.29k
        if (
6384
1.29k
            (_keyword = _PyPegen_expect_token(p, 694))  // token='while'
6385
1.29k
            &&
6386
1.29k
            (a = named_expression_rule(p))  // named_expression
6387
1.29k
            &&
6388
1.29k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6389
1.29k
            &&
6390
1.29k
            (b = block_rule(p))  // block
6391
1.29k
            &&
6392
1.29k
            (c = else_block_rule(p), !p->error_indicator)  // else_block?
6393
1.29k
        )
6394
1.23k
        {
6395
1.23k
            D(fprintf(stderr, "%*c+ while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' block else_block?"));
6396
1.23k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6397
1.23k
            if (_token == NULL) {
6398
0
                p->level--;
6399
0
                return NULL;
6400
0
            }
6401
1.23k
            int _end_lineno = _token->end_lineno;
6402
1.23k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6403
1.23k
            int _end_col_offset = _token->end_col_offset;
6404
1.23k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6405
1.23k
            _res = _PyAST_While ( a , b , c , EXTRA );
6406
1.23k
            if (_res == NULL && PyErr_Occurred()) {
6407
0
                p->error_indicator = 1;
6408
0
                p->level--;
6409
0
                return NULL;
6410
0
            }
6411
1.23k
            goto done;
6412
1.23k
        }
6413
59
        p->mark = _mark;
6414
59
        D(fprintf(stderr, "%*c%s while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6415
59
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression ':' block else_block?"));
6416
59
    }
6417
0
    _res = NULL;
6418
1.29k
  done:
6419
1.29k
    p->level--;
6420
1.29k
    return _res;
6421
59
}
6422
6423
// for_stmt:
6424
//     | invalid_for_stmt
6425
//     | 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?
6426
//     | 'async' 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?
6427
//     | invalid_for_target
6428
static stmt_ty
6429
for_stmt_rule(Parser *p)
6430
2.29k
{
6431
2.29k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6432
0
        _Pypegen_stack_overflow(p);
6433
0
    }
6434
2.29k
    if (p->error_indicator) {
6435
0
        p->level--;
6436
0
        return NULL;
6437
0
    }
6438
2.29k
    stmt_ty _res = NULL;
6439
2.29k
    int _mark = p->mark;
6440
2.29k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6441
0
        p->error_indicator = 1;
6442
0
        p->level--;
6443
0
        return NULL;
6444
0
    }
6445
2.29k
    int _start_lineno = p->tokens[_mark]->lineno;
6446
2.29k
    UNUSED(_start_lineno); // Only used by EXTRA macro
6447
2.29k
    int _start_col_offset = p->tokens[_mark]->col_offset;
6448
2.29k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
6449
2.29k
    if (p->call_invalid_rules) { // invalid_for_stmt
6450
448
        if (p->error_indicator) {
6451
0
            p->level--;
6452
0
            return NULL;
6453
0
        }
6454
448
        D(fprintf(stderr, "%*c> for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_stmt"));
6455
448
        void *invalid_for_stmt_var;
6456
448
        if (
6457
448
            (invalid_for_stmt_var = invalid_for_stmt_rule(p))  // invalid_for_stmt
6458
448
        )
6459
0
        {
6460
0
            D(fprintf(stderr, "%*c+ for_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_stmt"));
6461
0
            _res = invalid_for_stmt_var;
6462
0
            goto done;
6463
0
        }
6464
448
        p->mark = _mark;
6465
448
        D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6466
448
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_stmt"));
6467
448
    }
6468
2.29k
    { // 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?
6469
2.29k
        if (p->error_indicator) {
6470
13
            p->level--;
6471
13
            return NULL;
6472
13
        }
6473
2.28k
        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?"));
6474
2.28k
        int _cut_var = 0;
6475
2.28k
        Token * _keyword;
6476
2.28k
        Token * _keyword_1;
6477
2.28k
        Token * _literal;
6478
2.28k
        asdl_stmt_seq* b;
6479
2.28k
        void *el;
6480
2.28k
        expr_ty ex;
6481
2.28k
        expr_ty t;
6482
2.28k
        void *tc;
6483
2.28k
        if (
6484
2.28k
            (_keyword = _PyPegen_expect_token(p, 699))  // token='for'
6485
2.28k
            &&
6486
2.28k
            (t = star_targets_rule(p))  // star_targets
6487
2.28k
            &&
6488
2.28k
            (_keyword_1 = _PyPegen_expect_token(p, 700))  // token='in'
6489
2.28k
            &&
6490
2.28k
            (_cut_var = 1)
6491
2.28k
            &&
6492
2.28k
            (ex = star_expressions_rule(p))  // star_expressions
6493
2.28k
            &&
6494
2.28k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6495
2.28k
            &&
6496
2.28k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6497
2.28k
            &&
6498
2.28k
            (b = block_rule(p))  // block
6499
2.28k
            &&
6500
2.28k
            (el = else_block_rule(p), !p->error_indicator)  // else_block?
6501
2.28k
        )
6502
1.76k
        {
6503
1.76k
            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?"));
6504
1.76k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6505
1.76k
            if (_token == NULL) {
6506
0
                p->level--;
6507
0
                return NULL;
6508
0
            }
6509
1.76k
            int _end_lineno = _token->end_lineno;
6510
1.76k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6511
1.76k
            int _end_col_offset = _token->end_col_offset;
6512
1.76k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6513
1.76k
            _res = _PyAST_For ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
6514
1.76k
            if (_res == NULL && PyErr_Occurred()) {
6515
0
                p->error_indicator = 1;
6516
0
                p->level--;
6517
0
                return NULL;
6518
0
            }
6519
1.76k
            goto done;
6520
1.76k
        }
6521
522
        p->mark = _mark;
6522
522
        D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6523
522
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?"));
6524
522
        if (_cut_var) {
6525
65
            p->level--;
6526
65
            return NULL;
6527
65
        }
6528
522
    }
6529
457
    { // 'async' 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?
6530
457
        if (p->error_indicator) {
6531
6
            p->level--;
6532
6
            return NULL;
6533
6
        }
6534
451
        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?"));
6535
451
        int _cut_var = 0;
6536
451
        Token * _keyword;
6537
451
        Token * _keyword_1;
6538
451
        Token * _keyword_2;
6539
451
        Token * _literal;
6540
451
        asdl_stmt_seq* b;
6541
451
        void *el;
6542
451
        expr_ty ex;
6543
451
        expr_ty t;
6544
451
        void *tc;
6545
451
        if (
6546
451
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
6547
451
            &&
6548
451
            (_keyword_1 = _PyPegen_expect_token(p, 699))  // token='for'
6549
451
            &&
6550
451
            (t = star_targets_rule(p))  // star_targets
6551
451
            &&
6552
451
            (_keyword_2 = _PyPegen_expect_token(p, 700))  // token='in'
6553
451
            &&
6554
451
            (_cut_var = 1)
6555
451
            &&
6556
451
            (ex = star_expressions_rule(p))  // star_expressions
6557
451
            &&
6558
451
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6559
451
            &&
6560
451
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6561
451
            &&
6562
451
            (b = block_rule(p))  // block
6563
451
            &&
6564
451
            (el = else_block_rule(p), !p->error_indicator)  // else_block?
6565
451
        )
6566
246
        {
6567
246
            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?"));
6568
246
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6569
246
            if (_token == NULL) {
6570
0
                p->level--;
6571
0
                return NULL;
6572
0
            }
6573
246
            int _end_lineno = _token->end_lineno;
6574
246
            UNUSED(_end_lineno); // Only used by EXTRA macro
6575
246
            int _end_col_offset = _token->end_col_offset;
6576
246
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6577
246
            _res = CHECK_VERSION ( stmt_ty , 5 , "Async for loops are" , _PyAST_AsyncFor ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
6578
246
            if (_res == NULL && PyErr_Occurred()) {
6579
0
                p->error_indicator = 1;
6580
0
                p->level--;
6581
0
                return NULL;
6582
0
            }
6583
246
            goto done;
6584
246
        }
6585
205
        p->mark = _mark;
6586
205
        D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6587
205
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?"));
6588
205
        if (_cut_var) {
6589
24
            p->level--;
6590
24
            return NULL;
6591
24
        }
6592
205
    }
6593
181
    if (p->call_invalid_rules) { // invalid_for_target
6594
73
        if (p->error_indicator) {
6595
0
            p->level--;
6596
0
            return NULL;
6597
0
        }
6598
73
        D(fprintf(stderr, "%*c> for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
6599
73
        void *invalid_for_target_var;
6600
73
        if (
6601
73
            (invalid_for_target_var = invalid_for_target_rule(p))  // invalid_for_target
6602
73
        )
6603
0
        {
6604
0
            D(fprintf(stderr, "%*c+ for_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
6605
0
            _res = invalid_for_target_var;
6606
0
            goto done;
6607
0
        }
6608
73
        p->mark = _mark;
6609
73
        D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6610
73
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_target"));
6611
73
    }
6612
181
    _res = NULL;
6613
2.18k
  done:
6614
2.18k
    p->level--;
6615
2.18k
    return _res;
6616
181
}
6617
6618
// with_stmt:
6619
//     | invalid_with_stmt_indent
6620
//     | 'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block
6621
//     | 'with' ','.with_item+ ':' TYPE_COMMENT? block
6622
//     | 'async' 'with' '(' ','.with_item+ ','? ')' ':' block
6623
//     | 'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block
6624
//     | invalid_with_stmt
6625
static stmt_ty
6626
with_stmt_rule(Parser *p)
6627
5.37k
{
6628
5.37k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6629
0
        _Pypegen_stack_overflow(p);
6630
0
    }
6631
5.37k
    if (p->error_indicator) {
6632
0
        p->level--;
6633
0
        return NULL;
6634
0
    }
6635
5.37k
    stmt_ty _res = NULL;
6636
5.37k
    int _mark = p->mark;
6637
5.37k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6638
0
        p->error_indicator = 1;
6639
0
        p->level--;
6640
0
        return NULL;
6641
0
    }
6642
5.37k
    int _start_lineno = p->tokens[_mark]->lineno;
6643
5.37k
    UNUSED(_start_lineno); // Only used by EXTRA macro
6644
5.37k
    int _start_col_offset = p->tokens[_mark]->col_offset;
6645
5.37k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
6646
5.37k
    if (p->call_invalid_rules) { // invalid_with_stmt_indent
6647
2.30k
        if (p->error_indicator) {
6648
0
            p->level--;
6649
0
            return NULL;
6650
0
        }
6651
2.30k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt_indent"));
6652
2.30k
        void *invalid_with_stmt_indent_var;
6653
2.30k
        if (
6654
2.30k
            (invalid_with_stmt_indent_var = invalid_with_stmt_indent_rule(p))  // invalid_with_stmt_indent
6655
2.30k
        )
6656
0
        {
6657
0
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt_indent"));
6658
0
            _res = invalid_with_stmt_indent_var;
6659
0
            goto done;
6660
0
        }
6661
2.30k
        p->mark = _mark;
6662
2.30k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6663
2.30k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_stmt_indent"));
6664
2.30k
    }
6665
5.37k
    { // 'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block
6666
5.37k
        if (p->error_indicator) {
6667
44
            p->level--;
6668
44
            return NULL;
6669
44
        }
6670
5.33k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block"));
6671
5.33k
        Token * _keyword;
6672
5.33k
        Token * _literal;
6673
5.33k
        Token * _literal_1;
6674
5.33k
        Token * _literal_2;
6675
5.33k
        void *_opt_var;
6676
5.33k
        UNUSED(_opt_var); // Silence compiler warnings
6677
5.33k
        asdl_withitem_seq* a;
6678
5.33k
        asdl_stmt_seq* b;
6679
5.33k
        void *tc;
6680
5.33k
        if (
6681
5.33k
            (_keyword = _PyPegen_expect_token(p, 652))  // token='with'
6682
5.33k
            &&
6683
5.33k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
6684
5.33k
            &&
6685
5.33k
            (a = (asdl_withitem_seq*)_gather_34_rule(p))  // ','.with_item+
6686
5.33k
            &&
6687
5.33k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
6688
5.33k
            &&
6689
5.33k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
6690
5.33k
            &&
6691
5.33k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
6692
5.33k
            &&
6693
5.33k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6694
5.33k
            &&
6695
5.33k
            (b = block_rule(p))  // block
6696
5.33k
        )
6697
1.30k
        {
6698
1.30k
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block"));
6699
1.30k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6700
1.30k
            if (_token == NULL) {
6701
0
                p->level--;
6702
0
                return NULL;
6703
0
            }
6704
1.30k
            int _end_lineno = _token->end_lineno;
6705
1.30k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6706
1.30k
            int _end_col_offset = _token->end_col_offset;
6707
1.30k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6708
1.30k
            _res = _PyAST_With ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
6709
1.30k
            if (_res == NULL && PyErr_Occurred()) {
6710
0
                p->error_indicator = 1;
6711
0
                p->level--;
6712
0
                return NULL;
6713
0
            }
6714
1.30k
            goto done;
6715
1.30k
        }
6716
4.03k
        p->mark = _mark;
6717
4.03k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6718
4.03k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block"));
6719
4.03k
    }
6720
0
    { // 'with' ','.with_item+ ':' TYPE_COMMENT? block
6721
4.03k
        if (p->error_indicator) {
6722
18
            p->level--;
6723
18
            return NULL;
6724
18
        }
6725
4.01k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6726
4.01k
        Token * _keyword;
6727
4.01k
        Token * _literal;
6728
4.01k
        asdl_withitem_seq* a;
6729
4.01k
        asdl_stmt_seq* b;
6730
4.01k
        void *tc;
6731
4.01k
        if (
6732
4.01k
            (_keyword = _PyPegen_expect_token(p, 652))  // token='with'
6733
4.01k
            &&
6734
4.01k
            (a = (asdl_withitem_seq*)_gather_34_rule(p))  // ','.with_item+
6735
4.01k
            &&
6736
4.01k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6737
4.01k
            &&
6738
4.01k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6739
4.01k
            &&
6740
4.01k
            (b = block_rule(p))  // block
6741
4.01k
        )
6742
2.32k
        {
6743
2.32k
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6744
2.32k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6745
2.32k
            if (_token == NULL) {
6746
0
                p->level--;
6747
0
                return NULL;
6748
0
            }
6749
2.32k
            int _end_lineno = _token->end_lineno;
6750
2.32k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6751
2.32k
            int _end_col_offset = _token->end_col_offset;
6752
2.32k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6753
2.32k
            _res = _PyAST_With ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
6754
2.32k
            if (_res == NULL && PyErr_Occurred()) {
6755
0
                p->error_indicator = 1;
6756
0
                p->level--;
6757
0
                return NULL;
6758
0
            }
6759
2.32k
            goto done;
6760
2.32k
        }
6761
1.69k
        p->mark = _mark;
6762
1.69k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6763
1.69k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6764
1.69k
    }
6765
0
    { // 'async' 'with' '(' ','.with_item+ ','? ')' ':' block
6766
1.69k
        if (p->error_indicator) {
6767
18
            p->level--;
6768
18
            return NULL;
6769
18
        }
6770
1.67k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async' 'with' '(' ','.with_item+ ','? ')' ':' block"));
6771
1.67k
        Token * _keyword;
6772
1.67k
        Token * _keyword_1;
6773
1.67k
        Token * _literal;
6774
1.67k
        Token * _literal_1;
6775
1.67k
        Token * _literal_2;
6776
1.67k
        void *_opt_var;
6777
1.67k
        UNUSED(_opt_var); // Silence compiler warnings
6778
1.67k
        asdl_withitem_seq* a;
6779
1.67k
        asdl_stmt_seq* b;
6780
1.67k
        if (
6781
1.67k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
6782
1.67k
            &&
6783
1.67k
            (_keyword_1 = _PyPegen_expect_token(p, 652))  // token='with'
6784
1.67k
            &&
6785
1.67k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
6786
1.67k
            &&
6787
1.67k
            (a = (asdl_withitem_seq*)_gather_34_rule(p))  // ','.with_item+
6788
1.67k
            &&
6789
1.67k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
6790
1.67k
            &&
6791
1.67k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
6792
1.67k
            &&
6793
1.67k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
6794
1.67k
            &&
6795
1.67k
            (b = block_rule(p))  // block
6796
1.67k
        )
6797
216
        {
6798
216
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async' 'with' '(' ','.with_item+ ','? ')' ':' block"));
6799
216
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6800
216
            if (_token == NULL) {
6801
0
                p->level--;
6802
0
                return NULL;
6803
0
            }
6804
216
            int _end_lineno = _token->end_lineno;
6805
216
            UNUSED(_end_lineno); // Only used by EXTRA macro
6806
216
            int _end_col_offset = _token->end_col_offset;
6807
216
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6808
216
            _res = CHECK_VERSION ( stmt_ty , 5 , "Async with statements are" , _PyAST_AsyncWith ( a , b , NULL , EXTRA ) );
6809
216
            if (_res == NULL && PyErr_Occurred()) {
6810
0
                p->error_indicator = 1;
6811
0
                p->level--;
6812
0
                return NULL;
6813
0
            }
6814
216
            goto done;
6815
216
        }
6816
1.45k
        p->mark = _mark;
6817
1.45k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6818
1.45k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'with' '(' ','.with_item+ ','? ')' ':' block"));
6819
1.45k
    }
6820
0
    { // 'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block
6821
1.45k
        if (p->error_indicator) {
6822
6
            p->level--;
6823
6
            return NULL;
6824
6
        }
6825
1.45k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6826
1.45k
        Token * _keyword;
6827
1.45k
        Token * _keyword_1;
6828
1.45k
        Token * _literal;
6829
1.45k
        asdl_withitem_seq* a;
6830
1.45k
        asdl_stmt_seq* b;
6831
1.45k
        void *tc;
6832
1.45k
        if (
6833
1.45k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
6834
1.45k
            &&
6835
1.45k
            (_keyword_1 = _PyPegen_expect_token(p, 652))  // token='with'
6836
1.45k
            &&
6837
1.45k
            (a = (asdl_withitem_seq*)_gather_34_rule(p))  // ','.with_item+
6838
1.45k
            &&
6839
1.45k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6840
1.45k
            &&
6841
1.45k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6842
1.45k
            &&
6843
1.45k
            (b = block_rule(p))  // block
6844
1.45k
        )
6845
661
        {
6846
661
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6847
661
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6848
661
            if (_token == NULL) {
6849
0
                p->level--;
6850
0
                return NULL;
6851
0
            }
6852
661
            int _end_lineno = _token->end_lineno;
6853
661
            UNUSED(_end_lineno); // Only used by EXTRA macro
6854
661
            int _end_col_offset = _token->end_col_offset;
6855
661
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6856
661
            _res = CHECK_VERSION ( stmt_ty , 5 , "Async with statements are" , _PyAST_AsyncWith ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
6857
661
            if (_res == NULL && PyErr_Occurred()) {
6858
0
                p->error_indicator = 1;
6859
0
                p->level--;
6860
0
                return NULL;
6861
0
            }
6862
661
            goto done;
6863
661
        }
6864
791
        p->mark = _mark;
6865
791
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6866
791
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6867
791
    }
6868
791
    if (p->call_invalid_rules) { // invalid_with_stmt
6869
322
        if (p->error_indicator) {
6870
4
            p->level--;
6871
4
            return NULL;
6872
4
        }
6873
318
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt"));
6874
318
        void *invalid_with_stmt_var;
6875
318
        if (
6876
318
            (invalid_with_stmt_var = invalid_with_stmt_rule(p))  // invalid_with_stmt
6877
318
        )
6878
0
        {
6879
0
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt"));
6880
0
            _res = invalid_with_stmt_var;
6881
0
            goto done;
6882
0
        }
6883
318
        p->mark = _mark;
6884
318
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6885
318
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_stmt"));
6886
318
    }
6887
787
    _res = NULL;
6888
5.28k
  done:
6889
5.28k
    p->level--;
6890
5.28k
    return _res;
6891
787
}
6892
6893
// with_item:
6894
//     | expression 'as' star_target &(',' | ')' | ':')
6895
//     | invalid_with_item
6896
//     | expression
6897
static withitem_ty
6898
with_item_rule(Parser *p)
6899
14.9k
{
6900
14.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6901
0
        _Pypegen_stack_overflow(p);
6902
0
    }
6903
14.9k
    if (p->error_indicator) {
6904
0
        p->level--;
6905
0
        return NULL;
6906
0
    }
6907
14.9k
    withitem_ty _res = NULL;
6908
14.9k
    int _mark = p->mark;
6909
14.9k
    { // expression 'as' star_target &(',' | ')' | ':')
6910
14.9k
        if (p->error_indicator) {
6911
0
            p->level--;
6912
0
            return NULL;
6913
0
        }
6914
14.9k
        D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
6915
14.9k
        Token * _keyword;
6916
14.9k
        expr_ty e;
6917
14.9k
        expr_ty t;
6918
14.9k
        if (
6919
14.9k
            (e = expression_rule(p))  // expression
6920
14.9k
            &&
6921
14.9k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
6922
14.9k
            &&
6923
14.9k
            (t = star_target_rule(p))  // star_target
6924
14.9k
            &&
6925
14.9k
            _PyPegen_lookahead(1, _tmp_35_rule, p)
6926
14.9k
        )
6927
2.10k
        {
6928
2.10k
            D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
6929
2.10k
            _res = _PyAST_withitem ( e , t , p -> arena );
6930
2.10k
            if (_res == NULL && PyErr_Occurred()) {
6931
0
                p->error_indicator = 1;
6932
0
                p->level--;
6933
0
                return NULL;
6934
0
            }
6935
2.10k
            goto done;
6936
2.10k
        }
6937
12.8k
        p->mark = _mark;
6938
12.8k
        D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
6939
12.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
6940
12.8k
    }
6941
12.8k
    if (p->call_invalid_rules) { // invalid_with_item
6942
5.65k
        if (p->error_indicator) {
6943
0
            p->level--;
6944
0
            return NULL;
6945
0
        }
6946
5.65k
        D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_item"));
6947
5.65k
        void *invalid_with_item_var;
6948
5.65k
        if (
6949
5.65k
            (invalid_with_item_var = invalid_with_item_rule(p))  // invalid_with_item
6950
5.65k
        )
6951
0
        {
6952
0
            D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_with_item"));
6953
0
            _res = invalid_with_item_var;
6954
0
            goto done;
6955
0
        }
6956
5.65k
        p->mark = _mark;
6957
5.65k
        D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
6958
5.65k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_item"));
6959
5.65k
    }
6960
12.8k
    { // expression
6961
12.8k
        if (p->error_indicator) {
6962
24
            p->level--;
6963
24
            return NULL;
6964
24
        }
6965
12.8k
        D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
6966
12.8k
        expr_ty e;
6967
12.8k
        if (
6968
12.8k
            (e = expression_rule(p))  // expression
6969
12.8k
        )
6970
10.8k
        {
6971
10.8k
            D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
6972
10.8k
            _res = _PyAST_withitem ( e , NULL , p -> arena );
6973
10.8k
            if (_res == NULL && PyErr_Occurred()) {
6974
0
                p->error_indicator = 1;
6975
0
                p->level--;
6976
0
                return NULL;
6977
0
            }
6978
10.8k
            goto done;
6979
10.8k
        }
6980
1.94k
        p->mark = _mark;
6981
1.94k
        D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
6982
1.94k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
6983
1.94k
    }
6984
0
    _res = NULL;
6985
14.9k
  done:
6986
14.9k
    p->level--;
6987
14.9k
    return _res;
6988
1.94k
}
6989
6990
// try_stmt:
6991
//     | invalid_try_stmt
6992
//     | 'try' &&':' block finally_block
6993
//     | 'try' &&':' block except_block+ else_block? finally_block?
6994
//     | 'try' &&':' block except_star_block+ else_block? finally_block?
6995
static stmt_ty
6996
try_stmt_rule(Parser *p)
6997
6.06k
{
6998
6.06k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6999
0
        _Pypegen_stack_overflow(p);
7000
0
    }
7001
6.06k
    if (p->error_indicator) {
7002
0
        p->level--;
7003
0
        return NULL;
7004
0
    }
7005
6.06k
    stmt_ty _res = NULL;
7006
6.06k
    int _mark = p->mark;
7007
6.06k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7008
0
        p->error_indicator = 1;
7009
0
        p->level--;
7010
0
        return NULL;
7011
0
    }
7012
6.06k
    int _start_lineno = p->tokens[_mark]->lineno;
7013
6.06k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7014
6.06k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7015
6.06k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7016
6.06k
    if (p->call_invalid_rules) { // invalid_try_stmt
7017
1.89k
        if (p->error_indicator) {
7018
0
            p->level--;
7019
0
            return NULL;
7020
0
        }
7021
1.89k
        D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_try_stmt"));
7022
1.89k
        void *invalid_try_stmt_var;
7023
1.89k
        if (
7024
1.89k
            (invalid_try_stmt_var = invalid_try_stmt_rule(p))  // invalid_try_stmt
7025
1.89k
        )
7026
0
        {
7027
0
            D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_try_stmt"));
7028
0
            _res = invalid_try_stmt_var;
7029
0
            goto done;
7030
0
        }
7031
1.89k
        p->mark = _mark;
7032
1.89k
        D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7033
1.89k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_try_stmt"));
7034
1.89k
    }
7035
6.06k
    { // 'try' &&':' block finally_block
7036
6.06k
        if (p->error_indicator) {
7037
135
            p->level--;
7038
135
            return NULL;
7039
135
        }
7040
5.93k
        D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block finally_block"));
7041
5.93k
        Token * _keyword;
7042
5.93k
        Token * _literal;
7043
5.93k
        asdl_stmt_seq* b;
7044
5.93k
        asdl_stmt_seq* f;
7045
5.93k
        if (
7046
5.93k
            (_keyword = _PyPegen_expect_token(p, 661))  // token='try'
7047
5.93k
            &&
7048
5.93k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
7049
5.93k
            &&
7050
5.93k
            (b = block_rule(p))  // block
7051
5.93k
            &&
7052
5.93k
            (f = finally_block_rule(p))  // finally_block
7053
5.93k
        )
7054
1.06k
        {
7055
1.06k
            D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' &&':' block finally_block"));
7056
1.06k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7057
1.06k
            if (_token == NULL) {
7058
0
                p->level--;
7059
0
                return NULL;
7060
0
            }
7061
1.06k
            int _end_lineno = _token->end_lineno;
7062
1.06k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7063
1.06k
            int _end_col_offset = _token->end_col_offset;
7064
1.06k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7065
1.06k
            _res = _PyAST_Try ( b , NULL , NULL , f , EXTRA );
7066
1.06k
            if (_res == NULL && PyErr_Occurred()) {
7067
0
                p->error_indicator = 1;
7068
0
                p->level--;
7069
0
                return NULL;
7070
0
            }
7071
1.06k
            goto done;
7072
1.06k
        }
7073
4.86k
        p->mark = _mark;
7074
4.86k
        D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7075
4.86k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block finally_block"));
7076
4.86k
    }
7077
0
    { // 'try' &&':' block except_block+ else_block? finally_block?
7078
4.86k
        if (p->error_indicator) {
7079
28
            p->level--;
7080
28
            return NULL;
7081
28
        }
7082
4.83k
        D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
7083
4.83k
        Token * _keyword;
7084
4.83k
        Token * _literal;
7085
4.83k
        asdl_stmt_seq* b;
7086
4.83k
        void *el;
7087
4.83k
        asdl_excepthandler_seq* ex;
7088
4.83k
        void *f;
7089
4.83k
        if (
7090
4.83k
            (_keyword = _PyPegen_expect_token(p, 661))  // token='try'
7091
4.83k
            &&
7092
4.83k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
7093
4.83k
            &&
7094
4.83k
            (b = block_rule(p))  // block
7095
4.83k
            &&
7096
4.83k
            (ex = (asdl_excepthandler_seq*)_loop1_36_rule(p))  // except_block+
7097
4.83k
            &&
7098
4.83k
            (el = else_block_rule(p), !p->error_indicator)  // else_block?
7099
4.83k
            &&
7100
4.83k
            (f = finally_block_rule(p), !p->error_indicator)  // finally_block?
7101
4.83k
        )
7102
2.89k
        {
7103
2.89k
            D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
7104
2.89k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7105
2.89k
            if (_token == NULL) {
7106
0
                p->level--;
7107
0
                return NULL;
7108
0
            }
7109
2.89k
            int _end_lineno = _token->end_lineno;
7110
2.89k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7111
2.89k
            int _end_col_offset = _token->end_col_offset;
7112
2.89k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7113
2.89k
            _res = _PyAST_Try ( b , ex , el , f , EXTRA );
7114
2.89k
            if (_res == NULL && PyErr_Occurred()) {
7115
0
                p->error_indicator = 1;
7116
0
                p->level--;
7117
0
                return NULL;
7118
0
            }
7119
2.89k
            goto done;
7120
2.89k
        }
7121
1.94k
        p->mark = _mark;
7122
1.94k
        D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7123
1.94k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
7124
1.94k
    }
7125
0
    { // 'try' &&':' block except_star_block+ else_block? finally_block?
7126
1.94k
        if (p->error_indicator) {
7127
14
            p->level--;
7128
14
            return NULL;
7129
14
        }
7130
1.92k
        D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_star_block+ else_block? finally_block?"));
7131
1.92k
        Token * _keyword;
7132
1.92k
        Token * _literal;
7133
1.92k
        asdl_stmt_seq* b;
7134
1.92k
        void *el;
7135
1.92k
        asdl_excepthandler_seq* ex;
7136
1.92k
        void *f;
7137
1.92k
        if (
7138
1.92k
            (_keyword = _PyPegen_expect_token(p, 661))  // token='try'
7139
1.92k
            &&
7140
1.92k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
7141
1.92k
            &&
7142
1.92k
            (b = block_rule(p))  // block
7143
1.92k
            &&
7144
1.92k
            (ex = (asdl_excepthandler_seq*)_loop1_37_rule(p))  // except_star_block+
7145
1.92k
            &&
7146
1.92k
            (el = else_block_rule(p), !p->error_indicator)  // else_block?
7147
1.92k
            &&
7148
1.92k
            (f = finally_block_rule(p), !p->error_indicator)  // finally_block?
7149
1.92k
        )
7150
1.56k
        {
7151
1.56k
            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?"));
7152
1.56k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7153
1.56k
            if (_token == NULL) {
7154
0
                p->level--;
7155
0
                return NULL;
7156
0
            }
7157
1.56k
            int _end_lineno = _token->end_lineno;
7158
1.56k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7159
1.56k
            int _end_col_offset = _token->end_col_offset;
7160
1.56k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7161
1.56k
            _res = CHECK_VERSION ( stmt_ty , 11 , "Exception groups are" , _PyAST_TryStar ( b , ex , el , f , EXTRA ) );
7162
1.56k
            if (_res == NULL && PyErr_Occurred()) {
7163
0
                p->error_indicator = 1;
7164
0
                p->level--;
7165
0
                return NULL;
7166
0
            }
7167
1.56k
            goto done;
7168
1.56k
        }
7169
367
        p->mark = _mark;
7170
367
        D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7171
367
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block except_star_block+ else_block? finally_block?"));
7172
367
    }
7173
0
    _res = NULL;
7174
5.88k
  done:
7175
5.88k
    p->level--;
7176
5.88k
    return _res;
7177
367
}
7178
7179
// except_block:
7180
//     | invalid_except_stmt_indent
7181
//     | 'except' expression ':' block
7182
//     | 'except' expression 'as' NAME ':' block
7183
//     | 'except' expressions ':' block
7184
//     | 'except' ':' block
7185
//     | invalid_except_stmt
7186
static excepthandler_ty
7187
except_block_rule(Parser *p)
7188
13.0k
{
7189
13.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7190
0
        _Pypegen_stack_overflow(p);
7191
0
    }
7192
13.0k
    if (p->error_indicator) {
7193
0
        p->level--;
7194
0
        return NULL;
7195
0
    }
7196
13.0k
    excepthandler_ty _res = NULL;
7197
13.0k
    int _mark = p->mark;
7198
13.0k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7199
2
        p->error_indicator = 1;
7200
2
        p->level--;
7201
2
        return NULL;
7202
2
    }
7203
13.0k
    int _start_lineno = p->tokens[_mark]->lineno;
7204
13.0k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7205
13.0k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7206
13.0k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7207
13.0k
    if (p->call_invalid_rules) { // invalid_except_stmt_indent
7208
6.41k
        if (p->error_indicator) {
7209
0
            p->level--;
7210
0
            return NULL;
7211
0
        }
7212
6.41k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt_indent"));
7213
6.41k
        void *invalid_except_stmt_indent_var;
7214
6.41k
        if (
7215
6.41k
            (invalid_except_stmt_indent_var = invalid_except_stmt_indent_rule(p))  // invalid_except_stmt_indent
7216
6.41k
        )
7217
0
        {
7218
0
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt_indent"));
7219
0
            _res = invalid_except_stmt_indent_var;
7220
0
            goto done;
7221
0
        }
7222
6.41k
        p->mark = _mark;
7223
6.41k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7224
6.41k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_stmt_indent"));
7225
6.41k
    }
7226
13.0k
    { // 'except' expression ':' block
7227
13.0k
        if (p->error_indicator) {
7228
5
            p->level--;
7229
5
            return NULL;
7230
5
        }
7231
13.0k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ':' block"));
7232
13.0k
        Token * _keyword;
7233
13.0k
        Token * _literal;
7234
13.0k
        asdl_stmt_seq* b;
7235
13.0k
        expr_ty e;
7236
13.0k
        if (
7237
13.0k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7238
13.0k
            &&
7239
13.0k
            (e = expression_rule(p))  // expression
7240
13.0k
            &&
7241
13.0k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7242
13.0k
            &&
7243
13.0k
            (b = block_rule(p))  // block
7244
13.0k
        )
7245
1.23k
        {
7246
1.23k
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ':' block"));
7247
1.23k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7248
1.23k
            if (_token == NULL) {
7249
0
                p->level--;
7250
0
                return NULL;
7251
0
            }
7252
1.23k
            int _end_lineno = _token->end_lineno;
7253
1.23k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7254
1.23k
            int _end_col_offset = _token->end_col_offset;
7255
1.23k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7256
1.23k
            _res = _PyAST_ExceptHandler ( e , NULL , b , EXTRA );
7257
1.23k
            if (_res == NULL && PyErr_Occurred()) {
7258
0
                p->error_indicator = 1;
7259
0
                p->level--;
7260
0
                return NULL;
7261
0
            }
7262
1.23k
            goto done;
7263
1.23k
        }
7264
11.7k
        p->mark = _mark;
7265
11.7k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7266
11.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ':' block"));
7267
11.7k
    }
7268
0
    { // 'except' expression 'as' NAME ':' block
7269
11.7k
        if (p->error_indicator) {
7270
10
            p->level--;
7271
10
            return NULL;
7272
10
        }
7273
11.7k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression 'as' NAME ':' block"));
7274
11.7k
        Token * _keyword;
7275
11.7k
        Token * _keyword_1;
7276
11.7k
        Token * _literal;
7277
11.7k
        asdl_stmt_seq* b;
7278
11.7k
        expr_ty e;
7279
11.7k
        expr_ty t;
7280
11.7k
        if (
7281
11.7k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7282
11.7k
            &&
7283
11.7k
            (e = expression_rule(p))  // expression
7284
11.7k
            &&
7285
11.7k
            (_keyword_1 = _PyPegen_expect_token(p, 685))  // token='as'
7286
11.7k
            &&
7287
11.7k
            (t = _PyPegen_name_token(p))  // NAME
7288
11.7k
            &&
7289
11.7k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7290
11.7k
            &&
7291
11.7k
            (b = block_rule(p))  // block
7292
11.7k
        )
7293
378
        {
7294
378
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression 'as' NAME ':' block"));
7295
378
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7296
378
            if (_token == NULL) {
7297
0
                p->level--;
7298
0
                return NULL;
7299
0
            }
7300
378
            int _end_lineno = _token->end_lineno;
7301
378
            UNUSED(_end_lineno); // Only used by EXTRA macro
7302
378
            int _end_col_offset = _token->end_col_offset;
7303
378
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7304
378
            _res = _PyAST_ExceptHandler ( e , ( ( expr_ty ) t ) -> v . Name . id , b , EXTRA );
7305
378
            if (_res == NULL && PyErr_Occurred()) {
7306
0
                p->error_indicator = 1;
7307
0
                p->level--;
7308
0
                return NULL;
7309
0
            }
7310
378
            goto done;
7311
378
        }
7312
11.3k
        p->mark = _mark;
7313
11.3k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7314
11.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression 'as' NAME ':' block"));
7315
11.3k
    }
7316
0
    { // 'except' expressions ':' block
7317
11.3k
        if (p->error_indicator) {
7318
4
            p->level--;
7319
4
            return NULL;
7320
4
        }
7321
11.3k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expressions ':' block"));
7322
11.3k
        Token * _keyword;
7323
11.3k
        Token * _literal;
7324
11.3k
        asdl_stmt_seq* b;
7325
11.3k
        expr_ty e;
7326
11.3k
        if (
7327
11.3k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7328
11.3k
            &&
7329
11.3k
            (e = expressions_rule(p))  // expressions
7330
11.3k
            &&
7331
11.3k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7332
11.3k
            &&
7333
11.3k
            (b = block_rule(p))  // block
7334
11.3k
        )
7335
482
        {
7336
482
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expressions ':' block"));
7337
482
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7338
482
            if (_token == NULL) {
7339
0
                p->level--;
7340
0
                return NULL;
7341
0
            }
7342
482
            int _end_lineno = _token->end_lineno;
7343
482
            UNUSED(_end_lineno); // Only used by EXTRA macro
7344
482
            int _end_col_offset = _token->end_col_offset;
7345
482
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7346
482
            _res = CHECK_VERSION ( excepthandler_ty , 14 , "except expressions without parentheses are" , _PyAST_ExceptHandler ( e , NULL , b , EXTRA ) );
7347
482
            if (_res == NULL && PyErr_Occurred()) {
7348
0
                p->error_indicator = 1;
7349
0
                p->level--;
7350
0
                return NULL;
7351
0
            }
7352
482
            goto done;
7353
482
        }
7354
10.9k
        p->mark = _mark;
7355
10.9k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7356
10.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expressions ':' block"));
7357
10.9k
    }
7358
0
    { // 'except' ':' block
7359
10.9k
        if (p->error_indicator) {
7360
2
            p->level--;
7361
2
            return NULL;
7362
2
        }
7363
10.9k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' ':' block"));
7364
10.9k
        Token * _keyword;
7365
10.9k
        Token * _literal;
7366
10.9k
        asdl_stmt_seq* b;
7367
10.9k
        if (
7368
10.9k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7369
10.9k
            &&
7370
10.9k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7371
10.9k
            &&
7372
10.9k
            (b = block_rule(p))  // block
7373
10.9k
        )
7374
4.41k
        {
7375
4.41k
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' ':' block"));
7376
4.41k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7377
4.41k
            if (_token == NULL) {
7378
0
                p->level--;
7379
0
                return NULL;
7380
0
            }
7381
4.41k
            int _end_lineno = _token->end_lineno;
7382
4.41k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7383
4.41k
            int _end_col_offset = _token->end_col_offset;
7384
4.41k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7385
4.41k
            _res = _PyAST_ExceptHandler ( NULL , NULL , b , EXTRA );
7386
4.41k
            if (_res == NULL && PyErr_Occurred()) {
7387
0
                p->error_indicator = 1;
7388
0
                p->level--;
7389
0
                return NULL;
7390
0
            }
7391
4.41k
            goto done;
7392
4.41k
        }
7393
6.48k
        p->mark = _mark;
7394
6.48k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7395
6.48k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' ':' block"));
7396
6.48k
    }
7397
6.48k
    if (p->call_invalid_rules) { // invalid_except_stmt
7398
3.17k
        if (p->error_indicator) {
7399
12
            p->level--;
7400
12
            return NULL;
7401
12
        }
7402
3.16k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt"));
7403
3.16k
        void *invalid_except_stmt_var;
7404
3.16k
        if (
7405
3.16k
            (invalid_except_stmt_var = invalid_except_stmt_rule(p))  // invalid_except_stmt
7406
3.16k
        )
7407
0
        {
7408
0
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt"));
7409
0
            _res = invalid_except_stmt_var;
7410
0
            goto done;
7411
0
        }
7412
3.16k
        p->mark = _mark;
7413
3.16k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7414
3.16k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_stmt"));
7415
3.16k
    }
7416
6.47k
    _res = NULL;
7417
12.9k
  done:
7418
12.9k
    p->level--;
7419
12.9k
    return _res;
7420
6.47k
}
7421
7422
// except_star_block:
7423
//     | invalid_except_star_stmt_indent
7424
//     | 'except' '*' expression ':' block
7425
//     | 'except' '*' expression 'as' NAME ':' block
7426
//     | 'except' '*' expressions ':' block
7427
//     | invalid_except_star_stmt
7428
static excepthandler_ty
7429
except_star_block_rule(Parser *p)
7430
7.50k
{
7431
7.50k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7432
0
        _Pypegen_stack_overflow(p);
7433
0
    }
7434
7.50k
    if (p->error_indicator) {
7435
0
        p->level--;
7436
0
        return NULL;
7437
0
    }
7438
7.50k
    excepthandler_ty _res = NULL;
7439
7.50k
    int _mark = p->mark;
7440
7.50k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7441
1
        p->error_indicator = 1;
7442
1
        p->level--;
7443
1
        return NULL;
7444
1
    }
7445
7.50k
    int _start_lineno = p->tokens[_mark]->lineno;
7446
7.50k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7447
7.50k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7448
7.50k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7449
7.50k
    if (p->call_invalid_rules) { // invalid_except_star_stmt_indent
7450
4.51k
        if (p->error_indicator) {
7451
0
            p->level--;
7452
0
            return NULL;
7453
0
        }
7454
4.51k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_star_stmt_indent"));
7455
4.51k
        void *invalid_except_star_stmt_indent_var;
7456
4.51k
        if (
7457
4.51k
            (invalid_except_star_stmt_indent_var = invalid_except_star_stmt_indent_rule(p))  // invalid_except_star_stmt_indent
7458
4.51k
        )
7459
0
        {
7460
0
            D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_star_stmt_indent"));
7461
0
            _res = invalid_except_star_stmt_indent_var;
7462
0
            goto done;
7463
0
        }
7464
4.51k
        p->mark = _mark;
7465
4.51k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7466
4.51k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_star_stmt_indent"));
7467
4.51k
    }
7468
7.50k
    { // 'except' '*' expression ':' block
7469
7.50k
        if (p->error_indicator) {
7470
5
            p->level--;
7471
5
            return NULL;
7472
5
        }
7473
7.49k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ':' block"));
7474
7.49k
        Token * _keyword;
7475
7.49k
        Token * _literal;
7476
7.49k
        Token * _literal_1;
7477
7.49k
        asdl_stmt_seq* b;
7478
7.49k
        expr_ty e;
7479
7.49k
        if (
7480
7.49k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7481
7.49k
            &&
7482
7.49k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
7483
7.49k
            &&
7484
7.49k
            (e = expression_rule(p))  // expression
7485
7.49k
            &&
7486
7.49k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
7487
7.49k
            &&
7488
7.49k
            (b = block_rule(p))  // block
7489
7.49k
        )
7490
3.20k
        {
7491
3.20k
            D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ':' block"));
7492
3.20k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7493
3.20k
            if (_token == NULL) {
7494
0
                p->level--;
7495
0
                return NULL;
7496
0
            }
7497
3.20k
            int _end_lineno = _token->end_lineno;
7498
3.20k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7499
3.20k
            int _end_col_offset = _token->end_col_offset;
7500
3.20k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7501
3.20k
            _res = _PyAST_ExceptHandler ( e , NULL , b , EXTRA );
7502
3.20k
            if (_res == NULL && PyErr_Occurred()) {
7503
0
                p->error_indicator = 1;
7504
0
                p->level--;
7505
0
                return NULL;
7506
0
            }
7507
3.20k
            goto done;
7508
3.20k
        }
7509
4.29k
        p->mark = _mark;
7510
4.29k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7511
4.29k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression ':' block"));
7512
4.29k
    }
7513
0
    { // 'except' '*' expression 'as' NAME ':' block
7514
4.29k
        if (p->error_indicator) {
7515
4
            p->level--;
7516
4
            return NULL;
7517
4
        }
7518
4.28k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression 'as' NAME ':' block"));
7519
4.28k
        Token * _keyword;
7520
4.28k
        Token * _keyword_1;
7521
4.28k
        Token * _literal;
7522
4.28k
        Token * _literal_1;
7523
4.28k
        asdl_stmt_seq* b;
7524
4.28k
        expr_ty e;
7525
4.28k
        expr_ty t;
7526
4.28k
        if (
7527
4.28k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7528
4.28k
            &&
7529
4.28k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
7530
4.28k
            &&
7531
4.28k
            (e = expression_rule(p))  // expression
7532
4.28k
            &&
7533
4.28k
            (_keyword_1 = _PyPegen_expect_token(p, 685))  // token='as'
7534
4.28k
            &&
7535
4.28k
            (t = _PyPegen_name_token(p))  // NAME
7536
4.28k
            &&
7537
4.28k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
7538
4.28k
            &&
7539
4.28k
            (b = block_rule(p))  // block
7540
4.28k
        )
7541
218
        {
7542
218
            D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expression 'as' NAME ':' block"));
7543
218
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7544
218
            if (_token == NULL) {
7545
0
                p->level--;
7546
0
                return NULL;
7547
0
            }
7548
218
            int _end_lineno = _token->end_lineno;
7549
218
            UNUSED(_end_lineno); // Only used by EXTRA macro
7550
218
            int _end_col_offset = _token->end_col_offset;
7551
218
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7552
218
            _res = _PyAST_ExceptHandler ( e , ( ( expr_ty ) t ) -> v . Name . id , b , EXTRA );
7553
218
            if (_res == NULL && PyErr_Occurred()) {
7554
0
                p->error_indicator = 1;
7555
0
                p->level--;
7556
0
                return NULL;
7557
0
            }
7558
218
            goto done;
7559
218
        }
7560
4.06k
        p->mark = _mark;
7561
4.06k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7562
4.06k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression 'as' NAME ':' block"));
7563
4.06k
    }
7564
0
    { // 'except' '*' expressions ':' block
7565
4.06k
        if (p->error_indicator) {
7566
2
            p->level--;
7567
2
            return NULL;
7568
2
        }
7569
4.06k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expressions ':' block"));
7570
4.06k
        Token * _keyword;
7571
4.06k
        Token * _literal;
7572
4.06k
        Token * _literal_1;
7573
4.06k
        asdl_stmt_seq* b;
7574
4.06k
        expr_ty e;
7575
4.06k
        if (
7576
4.06k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
7577
4.06k
            &&
7578
4.06k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
7579
4.06k
            &&
7580
4.06k
            (e = expressions_rule(p))  // expressions
7581
4.06k
            &&
7582
4.06k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
7583
4.06k
            &&
7584
4.06k
            (b = block_rule(p))  // block
7585
4.06k
        )
7586
523
        {
7587
523
            D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expressions ':' block"));
7588
523
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7589
523
            if (_token == NULL) {
7590
0
                p->level--;
7591
0
                return NULL;
7592
0
            }
7593
523
            int _end_lineno = _token->end_lineno;
7594
523
            UNUSED(_end_lineno); // Only used by EXTRA macro
7595
523
            int _end_col_offset = _token->end_col_offset;
7596
523
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7597
523
            _res = CHECK_VERSION ( excepthandler_ty , 14 , "except expressions without parentheses are" , _PyAST_ExceptHandler ( e , NULL , b , EXTRA ) );
7598
523
            if (_res == NULL && PyErr_Occurred()) {
7599
0
                p->error_indicator = 1;
7600
0
                p->level--;
7601
0
                return NULL;
7602
0
            }
7603
523
            goto done;
7604
523
        }
7605
3.54k
        p->mark = _mark;
7606
3.54k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7607
3.54k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expressions ':' block"));
7608
3.54k
    }
7609
3.54k
    if (p->call_invalid_rules) { // invalid_except_star_stmt
7610
2.40k
        if (p->error_indicator) {
7611
2
            p->level--;
7612
2
            return NULL;
7613
2
        }
7614
2.40k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_star_stmt"));
7615
2.40k
        void *invalid_except_star_stmt_var;
7616
2.40k
        if (
7617
2.40k
            (invalid_except_star_stmt_var = invalid_except_star_stmt_rule(p))  // invalid_except_star_stmt
7618
2.40k
        )
7619
0
        {
7620
0
            D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_star_stmt"));
7621
0
            _res = invalid_except_star_stmt_var;
7622
0
            goto done;
7623
0
        }
7624
2.40k
        p->mark = _mark;
7625
2.40k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7626
2.40k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_star_stmt"));
7627
2.40k
    }
7628
3.54k
    _res = NULL;
7629
7.48k
  done:
7630
7.48k
    p->level--;
7631
7.48k
    return _res;
7632
3.54k
}
7633
7634
// finally_block: invalid_finally_stmt | 'finally' &&':' block
7635
static asdl_stmt_seq*
7636
finally_block_rule(Parser *p)
7637
10.2k
{
7638
10.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7639
0
        _Pypegen_stack_overflow(p);
7640
0
    }
7641
10.2k
    if (p->error_indicator) {
7642
0
        p->level--;
7643
0
        return NULL;
7644
0
    }
7645
10.2k
    asdl_stmt_seq* _res = NULL;
7646
10.2k
    int _mark = p->mark;
7647
10.2k
    if (p->call_invalid_rules) { // invalid_finally_stmt
7648
2.98k
        if (p->error_indicator) {
7649
0
            p->level--;
7650
0
            return NULL;
7651
0
        }
7652
2.98k
        D(fprintf(stderr, "%*c> finally_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_finally_stmt"));
7653
2.98k
        void *invalid_finally_stmt_var;
7654
2.98k
        if (
7655
2.98k
            (invalid_finally_stmt_var = invalid_finally_stmt_rule(p))  // invalid_finally_stmt
7656
2.98k
        )
7657
0
        {
7658
0
            D(fprintf(stderr, "%*c+ finally_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_finally_stmt"));
7659
0
            _res = invalid_finally_stmt_var;
7660
0
            goto done;
7661
0
        }
7662
2.98k
        p->mark = _mark;
7663
2.98k
        D(fprintf(stderr, "%*c%s finally_block[%d-%d]: %s failed!\n", p->level, ' ',
7664
2.98k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_finally_stmt"));
7665
2.98k
    }
7666
10.2k
    { // 'finally' &&':' block
7667
10.2k
        if (p->error_indicator) {
7668
1
            p->level--;
7669
1
            return NULL;
7670
1
        }
7671
10.2k
        D(fprintf(stderr, "%*c> finally_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally' &&':' block"));
7672
10.2k
        Token * _keyword;
7673
10.2k
        Token * _literal;
7674
10.2k
        asdl_stmt_seq* a;
7675
10.2k
        if (
7676
10.2k
            (_keyword = _PyPegen_expect_token(p, 678))  // token='finally'
7677
10.2k
            &&
7678
10.2k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
7679
10.2k
            &&
7680
10.2k
            (a = block_rule(p))  // block
7681
10.2k
        )
7682
1.07k
        {
7683
1.07k
            D(fprintf(stderr, "%*c+ finally_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally' &&':' block"));
7684
1.07k
            _res = a;
7685
1.07k
            if (_res == NULL && PyErr_Occurred()) {
7686
0
                p->error_indicator = 1;
7687
0
                p->level--;
7688
0
                return NULL;
7689
0
            }
7690
1.07k
            goto done;
7691
1.07k
        }
7692
9.12k
        p->mark = _mark;
7693
9.12k
        D(fprintf(stderr, "%*c%s finally_block[%d-%d]: %s failed!\n", p->level, ' ',
7694
9.12k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally' &&':' block"));
7695
9.12k
    }
7696
0
    _res = NULL;
7697
10.2k
  done:
7698
10.2k
    p->level--;
7699
10.2k
    return _res;
7700
9.12k
}
7701
7702
// match_stmt:
7703
//     | "match" subject_expr ':' NEWLINE INDENT case_block+ DEDENT
7704
//     | invalid_match_stmt
7705
static stmt_ty
7706
match_stmt_rule(Parser *p)
7707
132k
{
7708
132k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7709
0
        _Pypegen_stack_overflow(p);
7710
0
    }
7711
132k
    if (p->error_indicator) {
7712
0
        p->level--;
7713
0
        return NULL;
7714
0
    }
7715
132k
    stmt_ty _res = NULL;
7716
132k
    int _mark = p->mark;
7717
132k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7718
0
        p->error_indicator = 1;
7719
0
        p->level--;
7720
0
        return NULL;
7721
0
    }
7722
132k
    int _start_lineno = p->tokens[_mark]->lineno;
7723
132k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7724
132k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7725
132k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7726
132k
    { // "match" subject_expr ':' NEWLINE INDENT case_block+ DEDENT
7727
132k
        if (p->error_indicator) {
7728
0
            p->level--;
7729
0
            return NULL;
7730
0
        }
7731
132k
        D(fprintf(stderr, "%*c> match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
7732
132k
        expr_ty _keyword;
7733
132k
        Token * _literal;
7734
132k
        asdl_match_case_seq* cases;
7735
132k
        Token * dedent_var;
7736
132k
        Token * indent_var;
7737
132k
        Token * newline_var;
7738
132k
        expr_ty subject;
7739
132k
        if (
7740
132k
            (_keyword = _PyPegen_expect_soft_keyword(p, "match"))  // soft_keyword='"match"'
7741
132k
            &&
7742
132k
            (subject = subject_expr_rule(p))  // subject_expr
7743
132k
            &&
7744
132k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7745
132k
            &&
7746
132k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
7747
132k
            &&
7748
132k
            (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
7749
132k
            &&
7750
132k
            (cases = (asdl_match_case_seq*)_loop1_38_rule(p))  // case_block+
7751
132k
            &&
7752
132k
            (dedent_var = _PyPegen_expect_token(p, DEDENT))  // token='DEDENT'
7753
132k
        )
7754
653
        {
7755
653
            D(fprintf(stderr, "%*c+ match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
7756
653
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7757
653
            if (_token == NULL) {
7758
0
                p->level--;
7759
0
                return NULL;
7760
0
            }
7761
653
            int _end_lineno = _token->end_lineno;
7762
653
            UNUSED(_end_lineno); // Only used by EXTRA macro
7763
653
            int _end_col_offset = _token->end_col_offset;
7764
653
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7765
653
            _res = CHECK_VERSION ( stmt_ty , 10 , "Pattern matching is" , _PyAST_Match ( subject , cases , EXTRA ) );
7766
653
            if (_res == NULL && PyErr_Occurred()) {
7767
0
                p->error_indicator = 1;
7768
0
                p->level--;
7769
0
                return NULL;
7770
0
            }
7771
653
            goto done;
7772
653
        }
7773
132k
        p->mark = _mark;
7774
132k
        D(fprintf(stderr, "%*c%s match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7775
132k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
7776
132k
    }
7777
132k
    if (p->call_invalid_rules) { // invalid_match_stmt
7778
21.9k
        if (p->error_indicator) {
7779
136
            p->level--;
7780
136
            return NULL;
7781
136
        }
7782
21.7k
        D(fprintf(stderr, "%*c> match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_match_stmt"));
7783
21.7k
        void *invalid_match_stmt_var;
7784
21.7k
        if (
7785
21.7k
            (invalid_match_stmt_var = invalid_match_stmt_rule(p))  // invalid_match_stmt
7786
21.7k
        )
7787
0
        {
7788
0
            D(fprintf(stderr, "%*c+ match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_match_stmt"));
7789
0
            _res = invalid_match_stmt_var;
7790
0
            goto done;
7791
0
        }
7792
21.7k
        p->mark = _mark;
7793
21.7k
        D(fprintf(stderr, "%*c%s match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7794
21.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_match_stmt"));
7795
21.7k
    }
7796
131k
    _res = NULL;
7797
132k
  done:
7798
132k
    p->level--;
7799
132k
    return _res;
7800
131k
}
7801
7802
// subject_expr: star_named_expression ',' star_named_expressions? | named_expression
7803
static expr_ty
7804
subject_expr_rule(Parser *p)
7805
6.53k
{
7806
6.53k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7807
0
        _Pypegen_stack_overflow(p);
7808
0
    }
7809
6.53k
    if (p->error_indicator) {
7810
0
        p->level--;
7811
0
        return NULL;
7812
0
    }
7813
6.53k
    expr_ty _res = NULL;
7814
6.53k
    int _mark = p->mark;
7815
6.53k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7816
1
        p->error_indicator = 1;
7817
1
        p->level--;
7818
1
        return NULL;
7819
1
    }
7820
6.53k
    int _start_lineno = p->tokens[_mark]->lineno;
7821
6.53k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7822
6.53k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7823
6.53k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7824
6.53k
    { // star_named_expression ',' star_named_expressions?
7825
6.53k
        if (p->error_indicator) {
7826
0
            p->level--;
7827
0
            return NULL;
7828
0
        }
7829
6.53k
        D(fprintf(stderr, "%*c> subject_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
7830
6.53k
        Token * _literal;
7831
6.53k
        expr_ty value;
7832
6.53k
        void *values;
7833
6.53k
        if (
7834
6.53k
            (value = star_named_expression_rule(p))  // star_named_expression
7835
6.53k
            &&
7836
6.53k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
7837
6.53k
            &&
7838
6.53k
            (values = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
7839
6.53k
        )
7840
1.05k
        {
7841
1.05k
            D(fprintf(stderr, "%*c+ subject_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
7842
1.05k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7843
1.05k
            if (_token == NULL) {
7844
0
                p->level--;
7845
0
                return NULL;
7846
0
            }
7847
1.05k
            int _end_lineno = _token->end_lineno;
7848
1.05k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7849
1.05k
            int _end_col_offset = _token->end_col_offset;
7850
1.05k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7851
1.05k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , value , values ) ) , Load , EXTRA );
7852
1.05k
            if (_res == NULL && PyErr_Occurred()) {
7853
0
                p->error_indicator = 1;
7854
0
                p->level--;
7855
0
                return NULL;
7856
0
            }
7857
1.05k
            goto done;
7858
1.05k
        }
7859
5.48k
        p->mark = _mark;
7860
5.48k
        D(fprintf(stderr, "%*c%s subject_expr[%d-%d]: %s failed!\n", p->level, ' ',
7861
5.48k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
7862
5.48k
    }
7863
0
    { // named_expression
7864
5.48k
        if (p->error_indicator) {
7865
4
            p->level--;
7866
4
            return NULL;
7867
4
        }
7868
5.48k
        D(fprintf(stderr, "%*c> subject_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
7869
5.48k
        expr_ty named_expression_var;
7870
5.48k
        if (
7871
5.48k
            (named_expression_var = named_expression_rule(p))  // named_expression
7872
5.48k
        )
7873
3.96k
        {
7874
3.96k
            D(fprintf(stderr, "%*c+ subject_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
7875
3.96k
            _res = named_expression_var;
7876
3.96k
            goto done;
7877
3.96k
        }
7878
1.51k
        p->mark = _mark;
7879
1.51k
        D(fprintf(stderr, "%*c%s subject_expr[%d-%d]: %s failed!\n", p->level, ' ',
7880
1.51k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
7881
1.51k
    }
7882
0
    _res = NULL;
7883
6.53k
  done:
7884
6.53k
    p->level--;
7885
6.53k
    return _res;
7886
1.51k
}
7887
7888
// case_block: invalid_case_block | "case" patterns guard? ':' block
7889
static match_case_ty
7890
case_block_rule(Parser *p)
7891
6.24k
{
7892
6.24k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7893
0
        _Pypegen_stack_overflow(p);
7894
0
    }
7895
6.24k
    if (p->error_indicator) {
7896
0
        p->level--;
7897
0
        return NULL;
7898
0
    }
7899
6.24k
    match_case_ty _res = NULL;
7900
6.24k
    int _mark = p->mark;
7901
6.24k
    if (p->call_invalid_rules) { // invalid_case_block
7902
2.12k
        if (p->error_indicator) {
7903
0
            p->level--;
7904
0
            return NULL;
7905
0
        }
7906
2.12k
        D(fprintf(stderr, "%*c> case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_case_block"));
7907
2.12k
        void *invalid_case_block_var;
7908
2.12k
        if (
7909
2.12k
            (invalid_case_block_var = invalid_case_block_rule(p))  // invalid_case_block
7910
2.12k
        )
7911
0
        {
7912
0
            D(fprintf(stderr, "%*c+ case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_case_block"));
7913
0
            _res = invalid_case_block_var;
7914
0
            goto done;
7915
0
        }
7916
2.12k
        p->mark = _mark;
7917
2.12k
        D(fprintf(stderr, "%*c%s case_block[%d-%d]: %s failed!\n", p->level, ' ',
7918
2.12k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_case_block"));
7919
2.12k
    }
7920
6.24k
    { // "case" patterns guard? ':' block
7921
6.24k
        if (p->error_indicator) {
7922
132
            p->level--;
7923
132
            return NULL;
7924
132
        }
7925
6.10k
        D(fprintf(stderr, "%*c> case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' block"));
7926
6.10k
        expr_ty _keyword;
7927
6.10k
        Token * _literal;
7928
6.10k
        asdl_stmt_seq* body;
7929
6.10k
        void *guard;
7930
6.10k
        pattern_ty pattern;
7931
6.10k
        if (
7932
6.10k
            (_keyword = _PyPegen_expect_soft_keyword(p, "case"))  // soft_keyword='"case"'
7933
6.10k
            &&
7934
6.10k
            (pattern = patterns_rule(p))  // patterns
7935
6.10k
            &&
7936
6.10k
            (guard = guard_rule(p), !p->error_indicator)  // guard?
7937
6.10k
            &&
7938
6.10k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7939
6.10k
            &&
7940
6.10k
            (body = block_rule(p))  // block
7941
6.10k
        )
7942
4.28k
        {
7943
4.28k
            D(fprintf(stderr, "%*c+ case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' block"));
7944
4.28k
            _res = _PyAST_match_case ( pattern , guard , body , p -> arena );
7945
4.28k
            if (_res == NULL && PyErr_Occurred()) {
7946
0
                p->error_indicator = 1;
7947
0
                p->level--;
7948
0
                return NULL;
7949
0
            }
7950
4.28k
            goto done;
7951
4.28k
        }
7952
1.82k
        p->mark = _mark;
7953
1.82k
        D(fprintf(stderr, "%*c%s case_block[%d-%d]: %s failed!\n", p->level, ' ',
7954
1.82k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"case\" patterns guard? ':' block"));
7955
1.82k
    }
7956
0
    _res = NULL;
7957
6.10k
  done:
7958
6.10k
    p->level--;
7959
6.10k
    return _res;
7960
1.82k
}
7961
7962
// guard: 'if' named_expression
7963
static expr_ty
7964
guard_rule(Parser *p)
7965
7.85k
{
7966
7.85k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7967
0
        _Pypegen_stack_overflow(p);
7968
0
    }
7969
7.85k
    if (p->error_indicator) {
7970
0
        p->level--;
7971
0
        return NULL;
7972
0
    }
7973
7.85k
    expr_ty _res = NULL;
7974
7.85k
    int _mark = p->mark;
7975
7.85k
    { // 'if' named_expression
7976
7.85k
        if (p->error_indicator) {
7977
0
            p->level--;
7978
0
            return NULL;
7979
0
        }
7980
7.85k
        D(fprintf(stderr, "%*c> guard[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression"));
7981
7.85k
        Token * _keyword;
7982
7.85k
        expr_ty guard;
7983
7.85k
        if (
7984
7.85k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
7985
7.85k
            &&
7986
7.85k
            (guard = named_expression_rule(p))  // named_expression
7987
7.85k
        )
7988
260
        {
7989
260
            D(fprintf(stderr, "%*c+ guard[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression"));
7990
260
            _res = guard;
7991
260
            if (_res == NULL && PyErr_Occurred()) {
7992
0
                p->error_indicator = 1;
7993
0
                p->level--;
7994
0
                return NULL;
7995
0
            }
7996
260
            goto done;
7997
260
        }
7998
7.59k
        p->mark = _mark;
7999
7.59k
        D(fprintf(stderr, "%*c%s guard[%d-%d]: %s failed!\n", p->level, ' ',
8000
7.59k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression"));
8001
7.59k
    }
8002
0
    _res = NULL;
8003
7.85k
  done:
8004
7.85k
    p->level--;
8005
7.85k
    return _res;
8006
7.59k
}
8007
8008
// patterns: open_sequence_pattern | pattern
8009
static pattern_ty
8010
patterns_rule(Parser *p)
8011
9.17k
{
8012
9.17k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8013
0
        _Pypegen_stack_overflow(p);
8014
0
    }
8015
9.17k
    if (p->error_indicator) {
8016
0
        p->level--;
8017
0
        return NULL;
8018
0
    }
8019
9.17k
    pattern_ty _res = NULL;
8020
9.17k
    int _mark = p->mark;
8021
9.17k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8022
1
        p->error_indicator = 1;
8023
1
        p->level--;
8024
1
        return NULL;
8025
1
    }
8026
9.17k
    int _start_lineno = p->tokens[_mark]->lineno;
8027
9.17k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8028
9.17k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8029
9.17k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8030
9.17k
    { // open_sequence_pattern
8031
9.17k
        if (p->error_indicator) {
8032
0
            p->level--;
8033
0
            return NULL;
8034
0
        }
8035
9.17k
        D(fprintf(stderr, "%*c> patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "open_sequence_pattern"));
8036
9.17k
        asdl_pattern_seq* patterns;
8037
9.17k
        if (
8038
9.17k
            (patterns = (asdl_pattern_seq*)open_sequence_pattern_rule(p))  // open_sequence_pattern
8039
9.17k
        )
8040
2.16k
        {
8041
2.16k
            D(fprintf(stderr, "%*c+ patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "open_sequence_pattern"));
8042
2.16k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8043
2.16k
            if (_token == NULL) {
8044
0
                p->level--;
8045
0
                return NULL;
8046
0
            }
8047
2.16k
            int _end_lineno = _token->end_lineno;
8048
2.16k
            UNUSED(_end_lineno); // Only used by EXTRA macro
8049
2.16k
            int _end_col_offset = _token->end_col_offset;
8050
2.16k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8051
2.16k
            _res = _PyAST_MatchSequence ( patterns , EXTRA );
8052
2.16k
            if (_res == NULL && PyErr_Occurred()) {
8053
0
                p->error_indicator = 1;
8054
0
                p->level--;
8055
0
                return NULL;
8056
0
            }
8057
2.16k
            goto done;
8058
2.16k
        }
8059
7.01k
        p->mark = _mark;
8060
7.01k
        D(fprintf(stderr, "%*c%s patterns[%d-%d]: %s failed!\n", p->level, ' ',
8061
7.01k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "open_sequence_pattern"));
8062
7.01k
    }
8063
0
    { // pattern
8064
7.01k
        if (p->error_indicator) {
8065
261
            p->level--;
8066
261
            return NULL;
8067
261
        }
8068
6.75k
        D(fprintf(stderr, "%*c> patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern"));
8069
6.75k
        pattern_ty pattern_var;
8070
6.75k
        if (
8071
6.75k
            (pattern_var = pattern_rule(p))  // pattern
8072
6.75k
        )
8073
5.69k
        {
8074
5.69k
            D(fprintf(stderr, "%*c+ patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern"));
8075
5.69k
            _res = pattern_var;
8076
5.69k
            goto done;
8077
5.69k
        }
8078
1.06k
        p->mark = _mark;
8079
1.06k
        D(fprintf(stderr, "%*c%s patterns[%d-%d]: %s failed!\n", p->level, ' ',
8080
1.06k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern"));
8081
1.06k
    }
8082
0
    _res = NULL;
8083
8.91k
  done:
8084
8.91k
    p->level--;
8085
8.91k
    return _res;
8086
1.06k
}
8087
8088
// pattern: as_pattern | or_pattern
8089
static pattern_ty
8090
pattern_rule(Parser *p)
8091
87.5k
{
8092
87.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8093
0
        _Pypegen_stack_overflow(p);
8094
0
    }
8095
87.5k
    if (p->error_indicator) {
8096
0
        p->level--;
8097
0
        return NULL;
8098
0
    }
8099
87.5k
    pattern_ty _res = NULL;
8100
87.5k
    int _mark = p->mark;
8101
87.5k
    { // as_pattern
8102
87.5k
        if (p->error_indicator) {
8103
0
            p->level--;
8104
0
            return NULL;
8105
0
        }
8106
87.5k
        D(fprintf(stderr, "%*c> pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "as_pattern"));
8107
87.5k
        pattern_ty as_pattern_var;
8108
87.5k
        if (
8109
87.5k
            (as_pattern_var = as_pattern_rule(p))  // as_pattern
8110
87.5k
        )
8111
555
        {
8112
555
            D(fprintf(stderr, "%*c+ pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "as_pattern"));
8113
555
            _res = as_pattern_var;
8114
555
            goto done;
8115
555
        }
8116
86.9k
        p->mark = _mark;
8117
86.9k
        D(fprintf(stderr, "%*c%s pattern[%d-%d]: %s failed!\n", p->level, ' ',
8118
86.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "as_pattern"));
8119
86.9k
    }
8120
0
    { // or_pattern
8121
86.9k
        if (p->error_indicator) {
8122
4.24k
            p->level--;
8123
4.24k
            return NULL;
8124
4.24k
        }
8125
82.7k
        D(fprintf(stderr, "%*c> pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern"));
8126
82.7k
        pattern_ty or_pattern_var;
8127
82.7k
        if (
8128
82.7k
            (or_pattern_var = or_pattern_rule(p))  // or_pattern
8129
82.7k
        )
8130
53.6k
        {
8131
53.6k
            D(fprintf(stderr, "%*c+ pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern"));
8132
53.6k
            _res = or_pattern_var;
8133
53.6k
            goto done;
8134
53.6k
        }
8135
29.0k
        p->mark = _mark;
8136
29.0k
        D(fprintf(stderr, "%*c%s pattern[%d-%d]: %s failed!\n", p->level, ' ',
8137
29.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern"));
8138
29.0k
    }
8139
0
    _res = NULL;
8140
83.2k
  done:
8141
83.2k
    p->level--;
8142
83.2k
    return _res;
8143
29.0k
}
8144
8145
// as_pattern: or_pattern 'as' pattern_capture_target | invalid_as_pattern
8146
static pattern_ty
8147
as_pattern_rule(Parser *p)
8148
87.5k
{
8149
87.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8150
0
        _Pypegen_stack_overflow(p);
8151
0
    }
8152
87.5k
    if (p->error_indicator) {
8153
0
        p->level--;
8154
0
        return NULL;
8155
0
    }
8156
87.5k
    pattern_ty _res = NULL;
8157
87.5k
    int _mark = p->mark;
8158
87.5k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8159
47
        p->error_indicator = 1;
8160
47
        p->level--;
8161
47
        return NULL;
8162
47
    }
8163
87.4k
    int _start_lineno = p->tokens[_mark]->lineno;
8164
87.4k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8165
87.4k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8166
87.4k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8167
87.4k
    { // or_pattern 'as' pattern_capture_target
8168
87.4k
        if (p->error_indicator) {
8169
0
            p->level--;
8170
0
            return NULL;
8171
0
        }
8172
87.4k
        D(fprintf(stderr, "%*c> as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
8173
87.4k
        Token * _keyword;
8174
87.4k
        pattern_ty pattern;
8175
87.4k
        expr_ty target;
8176
87.4k
        if (
8177
87.4k
            (pattern = or_pattern_rule(p))  // or_pattern
8178
87.4k
            &&
8179
87.4k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
8180
87.4k
            &&
8181
87.4k
            (target = pattern_capture_target_rule(p))  // pattern_capture_target
8182
87.4k
        )
8183
555
        {
8184
555
            D(fprintf(stderr, "%*c+ as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
8185
555
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8186
555
            if (_token == NULL) {
8187
0
                p->level--;
8188
0
                return NULL;
8189
0
            }
8190
555
            int _end_lineno = _token->end_lineno;
8191
555
            UNUSED(_end_lineno); // Only used by EXTRA macro
8192
555
            int _end_col_offset = _token->end_col_offset;
8193
555
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8194
555
            _res = _PyAST_MatchAs ( pattern , target -> v . Name . id , EXTRA );
8195
555
            if (_res == NULL && PyErr_Occurred()) {
8196
0
                p->error_indicator = 1;
8197
0
                p->level--;
8198
0
                return NULL;
8199
0
            }
8200
555
            goto done;
8201
555
        }
8202
86.9k
        p->mark = _mark;
8203
86.9k
        D(fprintf(stderr, "%*c%s as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8204
86.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
8205
86.9k
    }
8206
86.9k
    if (p->call_invalid_rules) { // invalid_as_pattern
8207
46.5k
        if (p->error_indicator) {
8208
1.70k
            p->level--;
8209
1.70k
            return NULL;
8210
1.70k
        }
8211
44.8k
        D(fprintf(stderr, "%*c> as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_as_pattern"));
8212
44.8k
        void *invalid_as_pattern_var;
8213
44.8k
        if (
8214
44.8k
            (invalid_as_pattern_var = invalid_as_pattern_rule(p))  // invalid_as_pattern
8215
44.8k
        )
8216
0
        {
8217
0
            D(fprintf(stderr, "%*c+ as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_as_pattern"));
8218
0
            _res = invalid_as_pattern_var;
8219
0
            goto done;
8220
0
        }
8221
44.8k
        p->mark = _mark;
8222
44.8k
        D(fprintf(stderr, "%*c%s as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8223
44.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_as_pattern"));
8224
44.8k
    }
8225
85.2k
    _res = NULL;
8226
85.7k
  done:
8227
85.7k
    p->level--;
8228
85.7k
    return _res;
8229
85.2k
}
8230
8231
// or_pattern: '|'.closed_pattern+
8232
static pattern_ty
8233
or_pattern_rule(Parser *p)
8234
259k
{
8235
259k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8236
0
        _Pypegen_stack_overflow(p);
8237
0
    }
8238
259k
    if (p->error_indicator) {
8239
0
        p->level--;
8240
0
        return NULL;
8241
0
    }
8242
259k
    pattern_ty _res = NULL;
8243
259k
    int _mark = p->mark;
8244
259k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8245
0
        p->error_indicator = 1;
8246
0
        p->level--;
8247
0
        return NULL;
8248
0
    }
8249
259k
    int _start_lineno = p->tokens[_mark]->lineno;
8250
259k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8251
259k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8252
259k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8253
259k
    { // '|'.closed_pattern+
8254
259k
        if (p->error_indicator) {
8255
0
            p->level--;
8256
0
            return NULL;
8257
0
        }
8258
259k
        D(fprintf(stderr, "%*c> or_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|'.closed_pattern+"));
8259
259k
        asdl_pattern_seq* patterns;
8260
259k
        if (
8261
259k
            (patterns = (asdl_pattern_seq*)_gather_40_rule(p))  // '|'.closed_pattern+
8262
259k
        )
8263
164k
        {
8264
164k
            D(fprintf(stderr, "%*c+ or_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'|'.closed_pattern+"));
8265
164k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8266
164k
            if (_token == NULL) {
8267
0
                p->level--;
8268
0
                return NULL;
8269
0
            }
8270
164k
            int _end_lineno = _token->end_lineno;
8271
164k
            UNUSED(_end_lineno); // Only used by EXTRA macro
8272
164k
            int _end_col_offset = _token->end_col_offset;
8273
164k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8274
164k
            _res = asdl_seq_LEN ( patterns ) == 1 ? asdl_seq_GET ( patterns , 0 ) : _PyAST_MatchOr ( patterns , EXTRA );
8275
164k
            if (_res == NULL && PyErr_Occurred()) {
8276
0
                p->error_indicator = 1;
8277
0
                p->level--;
8278
0
                return NULL;
8279
0
            }
8280
164k
            goto done;
8281
164k
        }
8282
95.8k
        p->mark = _mark;
8283
95.8k
        D(fprintf(stderr, "%*c%s or_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8284
95.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|'.closed_pattern+"));
8285
95.8k
    }
8286
0
    _res = NULL;
8287
259k
  done:
8288
259k
    p->level--;
8289
259k
    return _res;
8290
95.8k
}
8291
8292
// closed_pattern:
8293
//     | literal_pattern
8294
//     | capture_pattern
8295
//     | wildcard_pattern
8296
//     | value_pattern
8297
//     | group_pattern
8298
//     | sequence_pattern
8299
//     | mapping_pattern
8300
//     | class_pattern
8301
static pattern_ty
8302
closed_pattern_rule(Parser *p)
8303
272k
{
8304
272k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8305
0
        _Pypegen_stack_overflow(p);
8306
0
    }
8307
272k
    if (p->error_indicator) {
8308
0
        p->level--;
8309
0
        return NULL;
8310
0
    }
8311
272k
    pattern_ty _res = NULL;
8312
272k
    if (_PyPegen_is_memoized(p, closed_pattern_type, &_res)) {
8313
218k
        p->level--;
8314
218k
        return _res;
8315
218k
    }
8316
53.8k
    int _mark = p->mark;
8317
53.8k
    { // literal_pattern
8318
53.8k
        if (p->error_indicator) {
8319
0
            p->level--;
8320
0
            return NULL;
8321
0
        }
8322
53.8k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "literal_pattern"));
8323
53.8k
        pattern_ty literal_pattern_var;
8324
53.8k
        if (
8325
53.8k
            (literal_pattern_var = literal_pattern_rule(p))  // literal_pattern
8326
53.8k
        )
8327
6.09k
        {
8328
6.09k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "literal_pattern"));
8329
6.09k
            _res = literal_pattern_var;
8330
6.09k
            goto done;
8331
6.09k
        }
8332
47.7k
        p->mark = _mark;
8333
47.7k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8334
47.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "literal_pattern"));
8335
47.7k
    }
8336
0
    { // capture_pattern
8337
47.7k
        if (p->error_indicator) {
8338
21
            p->level--;
8339
21
            return NULL;
8340
21
        }
8341
47.7k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "capture_pattern"));
8342
47.7k
        pattern_ty capture_pattern_var;
8343
47.7k
        if (
8344
47.7k
            (capture_pattern_var = capture_pattern_rule(p))  // capture_pattern
8345
47.7k
        )
8346
15.1k
        {
8347
15.1k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "capture_pattern"));
8348
15.1k
            _res = capture_pattern_var;
8349
15.1k
            goto done;
8350
15.1k
        }
8351
32.5k
        p->mark = _mark;
8352
32.5k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8353
32.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "capture_pattern"));
8354
32.5k
    }
8355
0
    { // wildcard_pattern
8356
32.5k
        if (p->error_indicator) {
8357
0
            p->level--;
8358
0
            return NULL;
8359
0
        }
8360
32.5k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "wildcard_pattern"));
8361
32.5k
        pattern_ty wildcard_pattern_var;
8362
32.5k
        if (
8363
32.5k
            (wildcard_pattern_var = wildcard_pattern_rule(p))  // wildcard_pattern
8364
32.5k
        )
8365
4.67k
        {
8366
4.67k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "wildcard_pattern"));
8367
4.67k
            _res = wildcard_pattern_var;
8368
4.67k
            goto done;
8369
4.67k
        }
8370
27.9k
        p->mark = _mark;
8371
27.9k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8372
27.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "wildcard_pattern"));
8373
27.9k
    }
8374
0
    { // value_pattern
8375
27.9k
        if (p->error_indicator) {
8376
0
            p->level--;
8377
0
            return NULL;
8378
0
        }
8379
27.9k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "value_pattern"));
8380
27.9k
        pattern_ty value_pattern_var;
8381
27.9k
        if (
8382
27.9k
            (value_pattern_var = value_pattern_rule(p))  // value_pattern
8383
27.9k
        )
8384
240
        {
8385
240
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "value_pattern"));
8386
240
            _res = value_pattern_var;
8387
240
            goto done;
8388
240
        }
8389
27.6k
        p->mark = _mark;
8390
27.6k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8391
27.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "value_pattern"));
8392
27.6k
    }
8393
0
    { // group_pattern
8394
27.6k
        if (p->error_indicator) {
8395
3
            p->level--;
8396
3
            return NULL;
8397
3
        }
8398
27.6k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "group_pattern"));
8399
27.6k
        pattern_ty group_pattern_var;
8400
27.6k
        if (
8401
27.6k
            (group_pattern_var = group_pattern_rule(p))  // group_pattern
8402
27.6k
        )
8403
623
        {
8404
623
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "group_pattern"));
8405
623
            _res = group_pattern_var;
8406
623
            goto done;
8407
623
        }
8408
27.0k
        p->mark = _mark;
8409
27.0k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8410
27.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "group_pattern"));
8411
27.0k
    }
8412
0
    { // sequence_pattern
8413
27.0k
        if (p->error_indicator) {
8414
510
            p->level--;
8415
510
            return NULL;
8416
510
        }
8417
26.5k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sequence_pattern"));
8418
26.5k
        pattern_ty sequence_pattern_var;
8419
26.5k
        if (
8420
26.5k
            (sequence_pattern_var = sequence_pattern_rule(p))  // sequence_pattern
8421
26.5k
        )
8422
2.03k
        {
8423
2.03k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sequence_pattern"));
8424
2.03k
            _res = sequence_pattern_var;
8425
2.03k
            goto done;
8426
2.03k
        }
8427
24.5k
        p->mark = _mark;
8428
24.5k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8429
24.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sequence_pattern"));
8430
24.5k
    }
8431
0
    { // mapping_pattern
8432
24.5k
        if (p->error_indicator) {
8433
755
            p->level--;
8434
755
            return NULL;
8435
755
        }
8436
23.7k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "mapping_pattern"));
8437
23.7k
        pattern_ty mapping_pattern_var;
8438
23.7k
        if (
8439
23.7k
            (mapping_pattern_var = mapping_pattern_rule(p))  // mapping_pattern
8440
23.7k
        )
8441
2.73k
        {
8442
2.73k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "mapping_pattern"));
8443
2.73k
            _res = mapping_pattern_var;
8444
2.73k
            goto done;
8445
2.73k
        }
8446
21.0k
        p->mark = _mark;
8447
21.0k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8448
21.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "mapping_pattern"));
8449
21.0k
    }
8450
0
    { // class_pattern
8451
21.0k
        if (p->error_indicator) {
8452
683
            p->level--;
8453
683
            return NULL;
8454
683
        }
8455
20.3k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "class_pattern"));
8456
20.3k
        pattern_ty class_pattern_var;
8457
20.3k
        if (
8458
20.3k
            (class_pattern_var = class_pattern_rule(p))  // class_pattern
8459
20.3k
        )
8460
2.83k
        {
8461
2.83k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "class_pattern"));
8462
2.83k
            _res = class_pattern_var;
8463
2.83k
            goto done;
8464
2.83k
        }
8465
17.5k
        p->mark = _mark;
8466
17.5k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8467
17.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "class_pattern"));
8468
17.5k
    }
8469
0
    _res = NULL;
8470
51.8k
  done:
8471
51.8k
    _PyPegen_insert_memo(p, _mark, closed_pattern_type, _res);
8472
51.8k
    p->level--;
8473
51.8k
    return _res;
8474
17.5k
}
8475
8476
// literal_pattern:
8477
//     | signed_number !('+' | '-')
8478
//     | complex_number
8479
//     | strings
8480
//     | 'None'
8481
//     | 'True'
8482
//     | 'False'
8483
static pattern_ty
8484
literal_pattern_rule(Parser *p)
8485
53.8k
{
8486
53.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8487
0
        _Pypegen_stack_overflow(p);
8488
0
    }
8489
53.8k
    if (p->error_indicator) {
8490
0
        p->level--;
8491
0
        return NULL;
8492
0
    }
8493
53.8k
    pattern_ty _res = NULL;
8494
53.8k
    int _mark = p->mark;
8495
53.8k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8496
0
        p->error_indicator = 1;
8497
0
        p->level--;
8498
0
        return NULL;
8499
0
    }
8500
53.8k
    int _start_lineno = p->tokens[_mark]->lineno;
8501
53.8k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8502
53.8k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8503
53.8k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8504
53.8k
    { // signed_number !('+' | '-')
8505
53.8k
        if (p->error_indicator) {
8506
0
            p->level--;
8507
0
            return NULL;
8508
0
        }
8509
53.8k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8510
53.8k
        expr_ty value;
8511
53.8k
        if (
8512
53.8k
            (value = signed_number_rule(p))  // signed_number
8513
53.8k
            &&
8514
53.8k
            _PyPegen_lookahead(0, _tmp_41_rule, p)
8515
53.8k
        )
8516
4.73k
        {
8517
4.73k
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8518
4.73k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8519
4.73k
            if (_token == NULL) {
8520
0
                p->level--;
8521
0
                return NULL;
8522
0
            }
8523
4.73k
            int _end_lineno = _token->end_lineno;
8524
4.73k
            UNUSED(_end_lineno); // Only used by EXTRA macro
8525
4.73k
            int _end_col_offset = _token->end_col_offset;
8526
4.73k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8527
4.73k
            _res = _PyAST_MatchValue ( value , EXTRA );
8528
4.73k
            if (_res == NULL && PyErr_Occurred()) {
8529
0
                p->error_indicator = 1;
8530
0
                p->level--;
8531
0
                return NULL;
8532
0
            }
8533
4.73k
            goto done;
8534
4.73k
        }
8535
49.1k
        p->mark = _mark;
8536
49.1k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8537
49.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_number !('+' | '-')"));
8538
49.1k
    }
8539
0
    { // complex_number
8540
49.1k
        if (p->error_indicator) {
8541
1
            p->level--;
8542
1
            return NULL;
8543
1
        }
8544
49.1k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "complex_number"));
8545
49.1k
        expr_ty value;
8546
49.1k
        if (
8547
49.1k
            (value = complex_number_rule(p))  // complex_number
8548
49.1k
        )
8549
506
        {
8550
506
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "complex_number"));
8551
506
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8552
506
            if (_token == NULL) {
8553
0
                p->level--;
8554
0
                return NULL;
8555
0
            }
8556
506
            int _end_lineno = _token->end_lineno;
8557
506
            UNUSED(_end_lineno); // Only used by EXTRA macro
8558
506
            int _end_col_offset = _token->end_col_offset;
8559
506
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8560
506
            _res = _PyAST_MatchValue ( value , EXTRA );
8561
506
            if (_res == NULL && PyErr_Occurred()) {
8562
0
                p->error_indicator = 1;
8563
0
                p->level--;
8564
0
                return NULL;
8565
0
            }
8566
506
            goto done;
8567
506
        }
8568
48.6k
        p->mark = _mark;
8569
48.6k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8570
48.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "complex_number"));
8571
48.6k
    }
8572
0
    { // strings
8573
48.6k
        if (p->error_indicator) {
8574
12
            p->level--;
8575
12
            return NULL;
8576
12
        }
8577
48.6k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "strings"));
8578
48.6k
        expr_ty value;
8579
48.6k
        if (
8580
48.6k
            (value = strings_rule(p))  // strings
8581
48.6k
        )
8582
203
        {
8583
203
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "strings"));
8584
203
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8585
203
            if (_token == NULL) {
8586
0
                p->level--;
8587
0
                return NULL;
8588
0
            }
8589
203
            int _end_lineno = _token->end_lineno;
8590
203
            UNUSED(_end_lineno); // Only used by EXTRA macro
8591
203
            int _end_col_offset = _token->end_col_offset;
8592
203
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8593
203
            _res = _PyAST_MatchValue ( value , EXTRA );
8594
203
            if (_res == NULL && PyErr_Occurred()) {
8595
0
                p->error_indicator = 1;
8596
0
                p->level--;
8597
0
                return NULL;
8598
0
            }
8599
203
            goto done;
8600
203
        }
8601
48.4k
        p->mark = _mark;
8602
48.4k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8603
48.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "strings"));
8604
48.4k
    }
8605
0
    { // 'None'
8606
48.4k
        if (p->error_indicator) {
8607
8
            p->level--;
8608
8
            return NULL;
8609
8
        }
8610
48.4k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
8611
48.4k
        Token * _keyword;
8612
48.4k
        if (
8613
48.4k
            (_keyword = _PyPegen_expect_token(p, 624))  // token='None'
8614
48.4k
        )
8615
288
        {
8616
288
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
8617
288
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8618
288
            if (_token == NULL) {
8619
0
                p->level--;
8620
0
                return NULL;
8621
0
            }
8622
288
            int _end_lineno = _token->end_lineno;
8623
288
            UNUSED(_end_lineno); // Only used by EXTRA macro
8624
288
            int _end_col_offset = _token->end_col_offset;
8625
288
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8626
288
            _res = _PyAST_MatchSingleton ( Py_None , EXTRA );
8627
288
            if (_res == NULL && PyErr_Occurred()) {
8628
0
                p->error_indicator = 1;
8629
0
                p->level--;
8630
0
                return NULL;
8631
0
            }
8632
288
            goto done;
8633
288
        }
8634
48.1k
        p->mark = _mark;
8635
48.1k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8636
48.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
8637
48.1k
    }
8638
0
    { // 'True'
8639
48.1k
        if (p->error_indicator) {
8640
0
            p->level--;
8641
0
            return NULL;
8642
0
        }
8643
48.1k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
8644
48.1k
        Token * _keyword;
8645
48.1k
        if (
8646
48.1k
            (_keyword = _PyPegen_expect_token(p, 623))  // token='True'
8647
48.1k
        )
8648
75
        {
8649
75
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
8650
75
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8651
75
            if (_token == NULL) {
8652
0
                p->level--;
8653
0
                return NULL;
8654
0
            }
8655
75
            int _end_lineno = _token->end_lineno;
8656
75
            UNUSED(_end_lineno); // Only used by EXTRA macro
8657
75
            int _end_col_offset = _token->end_col_offset;
8658
75
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8659
75
            _res = _PyAST_MatchSingleton ( Py_True , EXTRA );
8660
75
            if (_res == NULL && PyErr_Occurred()) {
8661
0
                p->error_indicator = 1;
8662
0
                p->level--;
8663
0
                return NULL;
8664
0
            }
8665
75
            goto done;
8666
75
        }
8667
48.0k
        p->mark = _mark;
8668
48.0k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8669
48.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
8670
48.0k
    }
8671
0
    { // 'False'
8672
48.0k
        if (p->error_indicator) {
8673
0
            p->level--;
8674
0
            return NULL;
8675
0
        }
8676
48.0k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
8677
48.0k
        Token * _keyword;
8678
48.0k
        if (
8679
48.0k
            (_keyword = _PyPegen_expect_token(p, 625))  // token='False'
8680
48.0k
        )
8681
291
        {
8682
291
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
8683
291
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8684
291
            if (_token == NULL) {
8685
0
                p->level--;
8686
0
                return NULL;
8687
0
            }
8688
291
            int _end_lineno = _token->end_lineno;
8689
291
            UNUSED(_end_lineno); // Only used by EXTRA macro
8690
291
            int _end_col_offset = _token->end_col_offset;
8691
291
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8692
291
            _res = _PyAST_MatchSingleton ( Py_False , EXTRA );
8693
291
            if (_res == NULL && PyErr_Occurred()) {
8694
0
                p->error_indicator = 1;
8695
0
                p->level--;
8696
0
                return NULL;
8697
0
            }
8698
291
            goto done;
8699
291
        }
8700
47.7k
        p->mark = _mark;
8701
47.7k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8702
47.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
8703
47.7k
    }
8704
0
    _res = NULL;
8705
53.8k
  done:
8706
53.8k
    p->level--;
8707
53.8k
    return _res;
8708
47.7k
}
8709
8710
// literal_expr:
8711
//     | signed_number !('+' | '-')
8712
//     | complex_number
8713
//     | &(STRING | FSTRING_START | TSTRING_START) strings
8714
//     | 'None'
8715
//     | 'True'
8716
//     | 'False'
8717
static expr_ty
8718
literal_expr_rule(Parser *p)
8719
9.25k
{
8720
9.25k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8721
0
        _Pypegen_stack_overflow(p);
8722
0
    }
8723
9.25k
    if (p->error_indicator) {
8724
0
        p->level--;
8725
0
        return NULL;
8726
0
    }
8727
9.25k
    expr_ty _res = NULL;
8728
9.25k
    int _mark = p->mark;
8729
9.25k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8730
7
        p->error_indicator = 1;
8731
7
        p->level--;
8732
7
        return NULL;
8733
7
    }
8734
9.24k
    int _start_lineno = p->tokens[_mark]->lineno;
8735
9.24k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8736
9.24k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8737
9.24k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8738
9.24k
    { // signed_number !('+' | '-')
8739
9.24k
        if (p->error_indicator) {
8740
0
            p->level--;
8741
0
            return NULL;
8742
0
        }
8743
9.24k
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8744
9.24k
        expr_ty signed_number_var;
8745
9.24k
        if (
8746
9.24k
            (signed_number_var = signed_number_rule(p))  // signed_number
8747
9.24k
            &&
8748
9.24k
            _PyPegen_lookahead(0, _tmp_41_rule, p)
8749
9.24k
        )
8750
4.35k
        {
8751
4.35k
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8752
4.35k
            _res = signed_number_var;
8753
4.35k
            goto done;
8754
4.35k
        }
8755
4.89k
        p->mark = _mark;
8756
4.89k
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8757
4.89k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_number !('+' | '-')"));
8758
4.89k
    }
8759
0
    { // complex_number
8760
4.89k
        if (p->error_indicator) {
8761
2
            p->level--;
8762
2
            return NULL;
8763
2
        }
8764
4.88k
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "complex_number"));
8765
4.88k
        expr_ty complex_number_var;
8766
4.88k
        if (
8767
4.88k
            (complex_number_var = complex_number_rule(p))  // complex_number
8768
4.88k
        )
8769
505
        {
8770
505
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "complex_number"));
8771
505
            _res = complex_number_var;
8772
505
            goto done;
8773
505
        }
8774
4.38k
        p->mark = _mark;
8775
4.38k
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8776
4.38k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "complex_number"));
8777
4.38k
    }
8778
0
    { // &(STRING | FSTRING_START | TSTRING_START) strings
8779
4.38k
        if (p->error_indicator) {
8780
5
            p->level--;
8781
5
            return NULL;
8782
5
        }
8783
4.37k
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
8784
4.37k
        expr_ty strings_var;
8785
4.37k
        if (
8786
4.37k
            _PyPegen_lookahead(1, _tmp_42_rule, p)
8787
4.37k
            &&
8788
4.37k
            (strings_var = strings_rule(p))  // strings
8789
4.37k
        )
8790
3.54k
        {
8791
3.54k
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
8792
3.54k
            _res = strings_var;
8793
3.54k
            goto done;
8794
3.54k
        }
8795
833
        p->mark = _mark;
8796
833
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8797
833
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
8798
833
    }
8799
0
    { // 'None'
8800
833
        if (p->error_indicator) {
8801
6
            p->level--;
8802
6
            return NULL;
8803
6
        }
8804
827
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
8805
827
        Token * _keyword;
8806
827
        if (
8807
827
            (_keyword = _PyPegen_expect_token(p, 624))  // token='None'
8808
827
        )
8809
7
        {
8810
7
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
8811
7
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8812
7
            if (_token == NULL) {
8813
0
                p->level--;
8814
0
                return NULL;
8815
0
            }
8816
7
            int _end_lineno = _token->end_lineno;
8817
7
            UNUSED(_end_lineno); // Only used by EXTRA macro
8818
7
            int _end_col_offset = _token->end_col_offset;
8819
7
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8820
7
            _res = _PyAST_Constant ( Py_None , NULL , EXTRA );
8821
7
            if (_res == NULL && PyErr_Occurred()) {
8822
0
                p->error_indicator = 1;
8823
0
                p->level--;
8824
0
                return NULL;
8825
0
            }
8826
7
            goto done;
8827
7
        }
8828
820
        p->mark = _mark;
8829
820
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8830
820
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
8831
820
    }
8832
0
    { // 'True'
8833
820
        if (p->error_indicator) {
8834
0
            p->level--;
8835
0
            return NULL;
8836
0
        }
8837
820
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
8838
820
        Token * _keyword;
8839
820
        if (
8840
820
            (_keyword = _PyPegen_expect_token(p, 623))  // token='True'
8841
820
        )
8842
66
        {
8843
66
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
8844
66
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8845
66
            if (_token == NULL) {
8846
0
                p->level--;
8847
0
                return NULL;
8848
0
            }
8849
66
            int _end_lineno = _token->end_lineno;
8850
66
            UNUSED(_end_lineno); // Only used by EXTRA macro
8851
66
            int _end_col_offset = _token->end_col_offset;
8852
66
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8853
66
            _res = _PyAST_Constant ( Py_True , NULL , EXTRA );
8854
66
            if (_res == NULL && PyErr_Occurred()) {
8855
0
                p->error_indicator = 1;
8856
0
                p->level--;
8857
0
                return NULL;
8858
0
            }
8859
66
            goto done;
8860
66
        }
8861
754
        p->mark = _mark;
8862
754
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8863
754
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
8864
754
    }
8865
0
    { // 'False'
8866
754
        if (p->error_indicator) {
8867
0
            p->level--;
8868
0
            return NULL;
8869
0
        }
8870
754
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
8871
754
        Token * _keyword;
8872
754
        if (
8873
754
            (_keyword = _PyPegen_expect_token(p, 625))  // token='False'
8874
754
        )
8875
7
        {
8876
7
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
8877
7
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8878
7
            if (_token == NULL) {
8879
0
                p->level--;
8880
0
                return NULL;
8881
0
            }
8882
7
            int _end_lineno = _token->end_lineno;
8883
7
            UNUSED(_end_lineno); // Only used by EXTRA macro
8884
7
            int _end_col_offset = _token->end_col_offset;
8885
7
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8886
7
            _res = _PyAST_Constant ( Py_False , NULL , EXTRA );
8887
7
            if (_res == NULL && PyErr_Occurred()) {
8888
0
                p->error_indicator = 1;
8889
0
                p->level--;
8890
0
                return NULL;
8891
0
            }
8892
7
            goto done;
8893
7
        }
8894
747
        p->mark = _mark;
8895
747
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8896
747
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
8897
747
    }
8898
0
    _res = NULL;
8899
9.23k
  done:
8900
9.23k
    p->level--;
8901
9.23k
    return _res;
8902
747
}
8903
8904
// complex_number:
8905
//     | signed_real_number '+' imaginary_number
8906
//     | signed_real_number '-' imaginary_number
8907
static expr_ty
8908
complex_number_rule(Parser *p)
8909
54.0k
{
8910
54.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8911
0
        _Pypegen_stack_overflow(p);
8912
0
    }
8913
54.0k
    if (p->error_indicator) {
8914
0
        p->level--;
8915
0
        return NULL;
8916
0
    }
8917
54.0k
    expr_ty _res = NULL;
8918
54.0k
    int _mark = p->mark;
8919
54.0k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8920
0
        p->error_indicator = 1;
8921
0
        p->level--;
8922
0
        return NULL;
8923
0
    }
8924
54.0k
    int _start_lineno = p->tokens[_mark]->lineno;
8925
54.0k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8926
54.0k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8927
54.0k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8928
54.0k
    { // signed_real_number '+' imaginary_number
8929
54.0k
        if (p->error_indicator) {
8930
0
            p->level--;
8931
0
            return NULL;
8932
0
        }
8933
54.0k
        D(fprintf(stderr, "%*c> complex_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_real_number '+' imaginary_number"));
8934
54.0k
        Token * _literal;
8935
54.0k
        expr_ty imag;
8936
54.0k
        expr_ty real;
8937
54.0k
        if (
8938
54.0k
            (real = signed_real_number_rule(p))  // signed_real_number
8939
54.0k
            &&
8940
54.0k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
8941
54.0k
            &&
8942
54.0k
            (imag = imaginary_number_rule(p))  // imaginary_number
8943
54.0k
        )
8944
372
        {
8945
372
            D(fprintf(stderr, "%*c+ complex_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_real_number '+' imaginary_number"));
8946
372
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8947
372
            if (_token == NULL) {
8948
0
                p->level--;
8949
0
                return NULL;
8950
0
            }
8951
372
            int _end_lineno = _token->end_lineno;
8952
372
            UNUSED(_end_lineno); // Only used by EXTRA macro
8953
372
            int _end_col_offset = _token->end_col_offset;
8954
372
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8955
372
            _res = _PyAST_BinOp ( real , Add , imag , EXTRA );
8956
372
            if (_res == NULL && PyErr_Occurred()) {
8957
0
                p->error_indicator = 1;
8958
0
                p->level--;
8959
0
                return NULL;
8960
0
            }
8961
372
            goto done;
8962
372
        }
8963
53.6k
        p->mark = _mark;
8964
53.6k
        D(fprintf(stderr, "%*c%s complex_number[%d-%d]: %s failed!\n", p->level, ' ',
8965
53.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_real_number '+' imaginary_number"));
8966
53.6k
    }
8967
0
    { // signed_real_number '-' imaginary_number
8968
53.6k
        if (p->error_indicator) {
8969
10
            p->level--;
8970
10
            return NULL;
8971
10
        }
8972
53.6k
        D(fprintf(stderr, "%*c> complex_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_real_number '-' imaginary_number"));
8973
53.6k
        Token * _literal;
8974
53.6k
        expr_ty imag;
8975
53.6k
        expr_ty real;
8976
53.6k
        if (
8977
53.6k
            (real = signed_real_number_rule(p))  // signed_real_number
8978
53.6k
            &&
8979
53.6k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
8980
53.6k
            &&
8981
53.6k
            (imag = imaginary_number_rule(p))  // imaginary_number
8982
53.6k
        )
8983
639
        {
8984
639
            D(fprintf(stderr, "%*c+ complex_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_real_number '-' imaginary_number"));
8985
639
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8986
639
            if (_token == NULL) {
8987
0
                p->level--;
8988
0
                return NULL;
8989
0
            }
8990
639
            int _end_lineno = _token->end_lineno;
8991
639
            UNUSED(_end_lineno); // Only used by EXTRA macro
8992
639
            int _end_col_offset = _token->end_col_offset;
8993
639
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8994
639
            _res = _PyAST_BinOp ( real , Sub , imag , EXTRA );
8995
639
            if (_res == NULL && PyErr_Occurred()) {
8996
0
                p->error_indicator = 1;
8997
0
                p->level--;
8998
0
                return NULL;
8999
0
            }
9000
639
            goto done;
9001
639
        }
9002
53.0k
        p->mark = _mark;
9003
53.0k
        D(fprintf(stderr, "%*c%s complex_number[%d-%d]: %s failed!\n", p->level, ' ',
9004
53.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_real_number '-' imaginary_number"));
9005
53.0k
    }
9006
0
    _res = NULL;
9007
54.0k
  done:
9008
54.0k
    p->level--;
9009
54.0k
    return _res;
9010
53.0k
}
9011
9012
// signed_number: NUMBER | '-' NUMBER
9013
static expr_ty
9014
signed_number_rule(Parser *p)
9015
63.1k
{
9016
63.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9017
0
        _Pypegen_stack_overflow(p);
9018
0
    }
9019
63.1k
    if (p->error_indicator) {
9020
0
        p->level--;
9021
0
        return NULL;
9022
0
    }
9023
63.1k
    expr_ty _res = NULL;
9024
63.1k
    int _mark = p->mark;
9025
63.1k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9026
0
        p->error_indicator = 1;
9027
0
        p->level--;
9028
0
        return NULL;
9029
0
    }
9030
63.1k
    int _start_lineno = p->tokens[_mark]->lineno;
9031
63.1k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9032
63.1k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9033
63.1k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9034
63.1k
    { // NUMBER
9035
63.1k
        if (p->error_indicator) {
9036
0
            p->level--;
9037
0
            return NULL;
9038
0
        }
9039
63.1k
        D(fprintf(stderr, "%*c> signed_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9040
63.1k
        expr_ty number_var;
9041
63.1k
        if (
9042
63.1k
            (number_var = _PyPegen_number_token(p))  // NUMBER
9043
63.1k
        )
9044
8.64k
        {
9045
8.64k
            D(fprintf(stderr, "%*c+ signed_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9046
8.64k
            _res = number_var;
9047
8.64k
            goto done;
9048
8.64k
        }
9049
54.4k
        p->mark = _mark;
9050
54.4k
        D(fprintf(stderr, "%*c%s signed_number[%d-%d]: %s failed!\n", p->level, ' ',
9051
54.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
9052
54.4k
    }
9053
0
    { // '-' NUMBER
9054
54.4k
        if (p->error_indicator) {
9055
0
            p->level--;
9056
0
            return NULL;
9057
0
        }
9058
54.4k
        D(fprintf(stderr, "%*c> signed_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' NUMBER"));
9059
54.4k
        Token * _literal;
9060
54.4k
        expr_ty number;
9061
54.4k
        if (
9062
54.4k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
9063
54.4k
            &&
9064
54.4k
            (number = _PyPegen_number_token(p))  // NUMBER
9065
54.4k
        )
9066
1.50k
        {
9067
1.50k
            D(fprintf(stderr, "%*c+ signed_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' NUMBER"));
9068
1.50k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9069
1.50k
            if (_token == NULL) {
9070
0
                p->level--;
9071
0
                return NULL;
9072
0
            }
9073
1.50k
            int _end_lineno = _token->end_lineno;
9074
1.50k
            UNUSED(_end_lineno); // Only used by EXTRA macro
9075
1.50k
            int _end_col_offset = _token->end_col_offset;
9076
1.50k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9077
1.50k
            _res = _PyAST_UnaryOp ( USub , number , EXTRA );
9078
1.50k
            if (_res == NULL && PyErr_Occurred()) {
9079
0
                p->error_indicator = 1;
9080
0
                p->level--;
9081
0
                return NULL;
9082
0
            }
9083
1.50k
            goto done;
9084
1.50k
        }
9085
52.9k
        p->mark = _mark;
9086
52.9k
        D(fprintf(stderr, "%*c%s signed_number[%d-%d]: %s failed!\n", p->level, ' ',
9087
52.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' NUMBER"));
9088
52.9k
    }
9089
0
    _res = NULL;
9090
63.1k
  done:
9091
63.1k
    p->level--;
9092
63.1k
    return _res;
9093
52.9k
}
9094
9095
// signed_real_number: real_number | '-' real_number
9096
static expr_ty
9097
signed_real_number_rule(Parser *p)
9098
107k
{
9099
107k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9100
0
        _Pypegen_stack_overflow(p);
9101
0
    }
9102
107k
    if (p->error_indicator) {
9103
0
        p->level--;
9104
0
        return NULL;
9105
0
    }
9106
107k
    expr_ty _res = NULL;
9107
107k
    int _mark = p->mark;
9108
107k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9109
0
        p->error_indicator = 1;
9110
0
        p->level--;
9111
0
        return NULL;
9112
0
    }
9113
107k
    int _start_lineno = p->tokens[_mark]->lineno;
9114
107k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9115
107k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9116
107k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9117
107k
    { // real_number
9118
107k
        if (p->error_indicator) {
9119
0
            p->level--;
9120
0
            return NULL;
9121
0
        }
9122
107k
        D(fprintf(stderr, "%*c> signed_real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "real_number"));
9123
107k
        expr_ty real_number_var;
9124
107k
        if (
9125
107k
            (real_number_var = real_number_rule(p))  // real_number
9126
107k
        )
9127
1.15k
        {
9128
1.15k
            D(fprintf(stderr, "%*c+ signed_real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "real_number"));
9129
1.15k
            _res = real_number_var;
9130
1.15k
            goto done;
9131
1.15k
        }
9132
106k
        p->mark = _mark;
9133
106k
        D(fprintf(stderr, "%*c%s signed_real_number[%d-%d]: %s failed!\n", p->level, ' ',
9134
106k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "real_number"));
9135
106k
    }
9136
0
    { // '-' real_number
9137
106k
        if (p->error_indicator) {
9138
1
            p->level--;
9139
1
            return NULL;
9140
1
        }
9141
106k
        D(fprintf(stderr, "%*c> signed_real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' real_number"));
9142
106k
        Token * _literal;
9143
106k
        expr_ty real;
9144
106k
        if (
9145
106k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
9146
106k
            &&
9147
106k
            (real = real_number_rule(p))  // real_number
9148
106k
        )
9149
591
        {
9150
591
            D(fprintf(stderr, "%*c+ signed_real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' real_number"));
9151
591
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9152
591
            if (_token == NULL) {
9153
0
                p->level--;
9154
0
                return NULL;
9155
0
            }
9156
591
            int _end_lineno = _token->end_lineno;
9157
591
            UNUSED(_end_lineno); // Only used by EXTRA macro
9158
591
            int _end_col_offset = _token->end_col_offset;
9159
591
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9160
591
            _res = _PyAST_UnaryOp ( USub , real , EXTRA );
9161
591
            if (_res == NULL && PyErr_Occurred()) {
9162
0
                p->error_indicator = 1;
9163
0
                p->level--;
9164
0
                return NULL;
9165
0
            }
9166
591
            goto done;
9167
591
        }
9168
105k
        p->mark = _mark;
9169
105k
        D(fprintf(stderr, "%*c%s signed_real_number[%d-%d]: %s failed!\n", p->level, ' ',
9170
105k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' real_number"));
9171
105k
    }
9172
0
    _res = NULL;
9173
107k
  done:
9174
107k
    p->level--;
9175
107k
    return _res;
9176
105k
}
9177
9178
// real_number: NUMBER
9179
static expr_ty
9180
real_number_rule(Parser *p)
9181
108k
{
9182
108k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9183
0
        _Pypegen_stack_overflow(p);
9184
0
    }
9185
108k
    if (p->error_indicator) {
9186
0
        p->level--;
9187
0
        return NULL;
9188
0
    }
9189
108k
    expr_ty _res = NULL;
9190
108k
    int _mark = p->mark;
9191
108k
    { // NUMBER
9192
108k
        if (p->error_indicator) {
9193
0
            p->level--;
9194
0
            return NULL;
9195
0
        }
9196
108k
        D(fprintf(stderr, "%*c> real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9197
108k
        expr_ty real;
9198
108k
        if (
9199
108k
            (real = _PyPegen_number_token(p))  // NUMBER
9200
108k
        )
9201
1.75k
        {
9202
1.75k
            D(fprintf(stderr, "%*c+ real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9203
1.75k
            _res = _PyPegen_ensure_real ( p , real );
9204
1.75k
            if (_res == NULL && PyErr_Occurred()) {
9205
3
                p->error_indicator = 1;
9206
3
                p->level--;
9207
3
                return NULL;
9208
3
            }
9209
1.74k
            goto done;
9210
1.75k
        }
9211
106k
        p->mark = _mark;
9212
106k
        D(fprintf(stderr, "%*c%s real_number[%d-%d]: %s failed!\n", p->level, ' ',
9213
106k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
9214
106k
    }
9215
0
    _res = NULL;
9216
108k
  done:
9217
108k
    p->level--;
9218
108k
    return _res;
9219
106k
}
9220
9221
// imaginary_number: NUMBER
9222
static expr_ty
9223
imaginary_number_rule(Parser *p)
9224
1.06k
{
9225
1.06k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9226
0
        _Pypegen_stack_overflow(p);
9227
0
    }
9228
1.06k
    if (p->error_indicator) {
9229
0
        p->level--;
9230
0
        return NULL;
9231
0
    }
9232
1.06k
    expr_ty _res = NULL;
9233
1.06k
    int _mark = p->mark;
9234
1.06k
    { // NUMBER
9235
1.06k
        if (p->error_indicator) {
9236
0
            p->level--;
9237
0
            return NULL;
9238
0
        }
9239
1.06k
        D(fprintf(stderr, "%*c> imaginary_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9240
1.06k
        expr_ty imag;
9241
1.06k
        if (
9242
1.06k
            (imag = _PyPegen_number_token(p))  // NUMBER
9243
1.06k
        )
9244
1.02k
        {
9245
1.02k
            D(fprintf(stderr, "%*c+ imaginary_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9246
1.02k
            _res = _PyPegen_ensure_imaginary ( p , imag );
9247
1.02k
            if (_res == NULL && PyErr_Occurred()) {
9248
9
                p->error_indicator = 1;
9249
9
                p->level--;
9250
9
                return NULL;
9251
9
            }
9252
1.01k
            goto done;
9253
1.02k
        }
9254
44
        p->mark = _mark;
9255
44
        D(fprintf(stderr, "%*c%s imaginary_number[%d-%d]: %s failed!\n", p->level, ' ',
9256
44
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
9257
44
    }
9258
0
    _res = NULL;
9259
1.05k
  done:
9260
1.05k
    p->level--;
9261
1.05k
    return _res;
9262
44
}
9263
9264
// capture_pattern: pattern_capture_target
9265
static pattern_ty
9266
capture_pattern_rule(Parser *p)
9267
47.7k
{
9268
47.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9269
0
        _Pypegen_stack_overflow(p);
9270
0
    }
9271
47.7k
    if (p->error_indicator) {
9272
0
        p->level--;
9273
0
        return NULL;
9274
0
    }
9275
47.7k
    pattern_ty _res = NULL;
9276
47.7k
    int _mark = p->mark;
9277
47.7k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9278
0
        p->error_indicator = 1;
9279
0
        p->level--;
9280
0
        return NULL;
9281
0
    }
9282
47.7k
    int _start_lineno = p->tokens[_mark]->lineno;
9283
47.7k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9284
47.7k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9285
47.7k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9286
47.7k
    { // pattern_capture_target
9287
47.7k
        if (p->error_indicator) {
9288
0
            p->level--;
9289
0
            return NULL;
9290
0
        }
9291
47.7k
        D(fprintf(stderr, "%*c> capture_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern_capture_target"));
9292
47.7k
        expr_ty target;
9293
47.7k
        if (
9294
47.7k
            (target = pattern_capture_target_rule(p))  // pattern_capture_target
9295
47.7k
        )
9296
15.1k
        {
9297
15.1k
            D(fprintf(stderr, "%*c+ capture_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern_capture_target"));
9298
15.1k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9299
15.1k
            if (_token == NULL) {
9300
0
                p->level--;
9301
0
                return NULL;
9302
0
            }
9303
15.1k
            int _end_lineno = _token->end_lineno;
9304
15.1k
            UNUSED(_end_lineno); // Only used by EXTRA macro
9305
15.1k
            int _end_col_offset = _token->end_col_offset;
9306
15.1k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9307
15.1k
            _res = _PyAST_MatchAs ( NULL , target -> v . Name . id , EXTRA );
9308
15.1k
            if (_res == NULL && PyErr_Occurred()) {
9309
0
                p->error_indicator = 1;
9310
0
                p->level--;
9311
0
                return NULL;
9312
0
            }
9313
15.1k
            goto done;
9314
15.1k
        }
9315
32.5k
        p->mark = _mark;
9316
32.5k
        D(fprintf(stderr, "%*c%s capture_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9317
32.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern_capture_target"));
9318
32.5k
    }
9319
0
    _res = NULL;
9320
47.7k
  done:
9321
47.7k
    p->level--;
9322
47.7k
    return _res;
9323
32.5k
}
9324
9325
// pattern_capture_target: !"_" NAME !('.' | '(' | '=')
9326
static expr_ty
9327
pattern_capture_target_rule(Parser *p)
9328
50.8k
{
9329
50.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9330
0
        _Pypegen_stack_overflow(p);
9331
0
    }
9332
50.8k
    if (p->error_indicator) {
9333
0
        p->level--;
9334
0
        return NULL;
9335
0
    }
9336
50.8k
    expr_ty _res = NULL;
9337
50.8k
    int _mark = p->mark;
9338
50.8k
    { // !"_" NAME !('.' | '(' | '=')
9339
50.8k
        if (p->error_indicator) {
9340
0
            p->level--;
9341
0
            return NULL;
9342
0
        }
9343
50.8k
        D(fprintf(stderr, "%*c> pattern_capture_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
9344
50.8k
        expr_ty name;
9345
50.8k
        if (
9346
50.8k
            _PyPegen_lookahead_with_string(0, _PyPegen_expect_soft_keyword, p, "_")
9347
50.8k
            &&
9348
50.8k
            (name = _PyPegen_name_token(p))  // NAME
9349
50.8k
            &&
9350
50.8k
            _PyPegen_lookahead(0, _tmp_43_rule, p)
9351
50.8k
        )
9352
17.2k
        {
9353
17.2k
            D(fprintf(stderr, "%*c+ pattern_capture_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
9354
17.2k
            _res = _PyPegen_set_expr_context ( p , name , Store );
9355
17.2k
            if (_res == NULL && PyErr_Occurred()) {
9356
0
                p->error_indicator = 1;
9357
0
                p->level--;
9358
0
                return NULL;
9359
0
            }
9360
17.2k
            goto done;
9361
17.2k
        }
9362
33.5k
        p->mark = _mark;
9363
33.5k
        D(fprintf(stderr, "%*c%s pattern_capture_target[%d-%d]: %s failed!\n", p->level, ' ',
9364
33.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
9365
33.5k
    }
9366
0
    _res = NULL;
9367
50.8k
  done:
9368
50.8k
    p->level--;
9369
50.8k
    return _res;
9370
33.5k
}
9371
9372
// wildcard_pattern: "_"
9373
static pattern_ty
9374
wildcard_pattern_rule(Parser *p)
9375
33.5k
{
9376
33.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9377
0
        _Pypegen_stack_overflow(p);
9378
0
    }
9379
33.5k
    if (p->error_indicator) {
9380
0
        p->level--;
9381
0
        return NULL;
9382
0
    }
9383
33.5k
    pattern_ty _res = NULL;
9384
33.5k
    int _mark = p->mark;
9385
33.5k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9386
0
        p->error_indicator = 1;
9387
0
        p->level--;
9388
0
        return NULL;
9389
0
    }
9390
33.5k
    int _start_lineno = p->tokens[_mark]->lineno;
9391
33.5k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9392
33.5k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9393
33.5k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9394
33.5k
    { // "_"
9395
33.5k
        if (p->error_indicator) {
9396
0
            p->level--;
9397
0
            return NULL;
9398
0
        }
9399
33.5k
        D(fprintf(stderr, "%*c> wildcard_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"_\""));
9400
33.5k
        expr_ty _keyword;
9401
33.5k
        if (
9402
33.5k
            (_keyword = _PyPegen_expect_soft_keyword(p, "_"))  // soft_keyword='"_"'
9403
33.5k
        )
9404
5.56k
        {
9405
5.56k
            D(fprintf(stderr, "%*c+ wildcard_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"_\""));
9406
5.56k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9407
5.56k
            if (_token == NULL) {
9408
0
                p->level--;
9409
0
                return NULL;
9410
0
            }
9411
5.56k
            int _end_lineno = _token->end_lineno;
9412
5.56k
            UNUSED(_end_lineno); // Only used by EXTRA macro
9413
5.56k
            int _end_col_offset = _token->end_col_offset;
9414
5.56k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9415
5.56k
            _res = _PyAST_MatchAs ( NULL , NULL , EXTRA );
9416
5.56k
            if (_res == NULL && PyErr_Occurred()) {
9417
0
                p->error_indicator = 1;
9418
0
                p->level--;
9419
0
                return NULL;
9420
0
            }
9421
5.56k
            goto done;
9422
5.56k
        }
9423
27.9k
        p->mark = _mark;
9424
27.9k
        D(fprintf(stderr, "%*c%s wildcard_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9425
27.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"_\""));
9426
27.9k
    }
9427
0
    _res = NULL;
9428
33.5k
  done:
9429
33.5k
    p->level--;
9430
33.5k
    return _res;
9431
27.9k
}
9432
9433
// value_pattern: attr !('.' | '(' | '=')
9434
static pattern_ty
9435
value_pattern_rule(Parser *p)
9436
27.9k
{
9437
27.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9438
0
        _Pypegen_stack_overflow(p);
9439
0
    }
9440
27.9k
    if (p->error_indicator) {
9441
0
        p->level--;
9442
0
        return NULL;
9443
0
    }
9444
27.9k
    pattern_ty _res = NULL;
9445
27.9k
    int _mark = p->mark;
9446
27.9k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9447
0
        p->error_indicator = 1;
9448
0
        p->level--;
9449
0
        return NULL;
9450
0
    }
9451
27.9k
    int _start_lineno = p->tokens[_mark]->lineno;
9452
27.9k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9453
27.9k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9454
27.9k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9455
27.9k
    { // attr !('.' | '(' | '=')
9456
27.9k
        if (p->error_indicator) {
9457
0
            p->level--;
9458
0
            return NULL;
9459
0
        }
9460
27.9k
        D(fprintf(stderr, "%*c> value_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr !('.' | '(' | '=')"));
9461
27.9k
        expr_ty attr;
9462
27.9k
        if (
9463
27.9k
            (attr = attr_rule(p))  // attr
9464
27.9k
            &&
9465
27.9k
            _PyPegen_lookahead(0, _tmp_43_rule, p)
9466
27.9k
        )
9467
240
        {
9468
240
            D(fprintf(stderr, "%*c+ value_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr !('.' | '(' | '=')"));
9469
240
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9470
240
            if (_token == NULL) {
9471
0
                p->level--;
9472
0
                return NULL;
9473
0
            }
9474
240
            int _end_lineno = _token->end_lineno;
9475
240
            UNUSED(_end_lineno); // Only used by EXTRA macro
9476
240
            int _end_col_offset = _token->end_col_offset;
9477
240
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9478
240
            _res = _PyAST_MatchValue ( attr , EXTRA );
9479
240
            if (_res == NULL && PyErr_Occurred()) {
9480
0
                p->error_indicator = 1;
9481
0
                p->level--;
9482
0
                return NULL;
9483
0
            }
9484
240
            goto done;
9485
240
        }
9486
27.6k
        p->mark = _mark;
9487
27.6k
        D(fprintf(stderr, "%*c%s value_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9488
27.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr !('.' | '(' | '=')"));
9489
27.6k
    }
9490
0
    _res = NULL;
9491
27.9k
  done:
9492
27.9k
    p->level--;
9493
27.9k
    return _res;
9494
27.6k
}
9495
9496
// Left-recursive
9497
// attr: name_or_attr '.' NAME
9498
static expr_ty attr_raw(Parser *);
9499
static expr_ty
9500
attr_rule(Parser *p)
9501
139k
{
9502
139k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9503
0
        _Pypegen_stack_overflow(p);
9504
0
    }
9505
139k
    expr_ty _res = NULL;
9506
139k
    if (_PyPegen_is_memoized(p, attr_type, &_res)) {
9507
111k
        p->level--;
9508
111k
        return _res;
9509
111k
    }
9510
28.4k
    int _mark = p->mark;
9511
28.4k
    int _resmark = p->mark;
9512
29.0k
    while (1) {
9513
29.0k
        int tmpvar_1 = _PyPegen_update_memo(p, _mark, attr_type, _res);
9514
29.0k
        if (tmpvar_1) {
9515
0
            p->level--;
9516
0
            return _res;
9517
0
        }
9518
29.0k
        p->mark = _mark;
9519
29.0k
        void *_raw = attr_raw(p);
9520
29.0k
        if (p->error_indicator) {
9521
9
            p->level--;
9522
9
            return NULL;
9523
9
        }
9524
29.0k
        if (_raw == NULL || p->mark <= _resmark)
9525
28.4k
            break;
9526
578
        _resmark = p->mark;
9527
578
        _res = _raw;
9528
578
    }
9529
28.4k
    p->mark = _resmark;
9530
28.4k
    p->level--;
9531
28.4k
    return _res;
9532
28.4k
}
9533
static expr_ty
9534
attr_raw(Parser *p)
9535
29.0k
{
9536
29.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9537
0
        _Pypegen_stack_overflow(p);
9538
0
    }
9539
29.0k
    if (p->error_indicator) {
9540
0
        p->level--;
9541
0
        return NULL;
9542
0
    }
9543
29.0k
    expr_ty _res = NULL;
9544
29.0k
    int _mark = p->mark;
9545
29.0k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9546
0
        p->error_indicator = 1;
9547
0
        p->level--;
9548
0
        return NULL;
9549
0
    }
9550
29.0k
    int _start_lineno = p->tokens[_mark]->lineno;
9551
29.0k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9552
29.0k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9553
29.0k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9554
29.0k
    { // name_or_attr '.' NAME
9555
29.0k
        if (p->error_indicator) {
9556
0
            p->level--;
9557
0
            return NULL;
9558
0
        }
9559
29.0k
        D(fprintf(stderr, "%*c> attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '.' NAME"));
9560
29.0k
        Token * _literal;
9561
29.0k
        expr_ty attr;
9562
29.0k
        expr_ty value;
9563
29.0k
        if (
9564
29.0k
            (value = name_or_attr_rule(p))  // name_or_attr
9565
29.0k
            &&
9566
29.0k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
9567
29.0k
            &&
9568
29.0k
            (attr = _PyPegen_name_token(p))  // NAME
9569
29.0k
        )
9570
578
        {
9571
578
            D(fprintf(stderr, "%*c+ attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '.' NAME"));
9572
578
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9573
578
            if (_token == NULL) {
9574
0
                p->level--;
9575
0
                return NULL;
9576
0
            }
9577
578
            int _end_lineno = _token->end_lineno;
9578
578
            UNUSED(_end_lineno); // Only used by EXTRA macro
9579
578
            int _end_col_offset = _token->end_col_offset;
9580
578
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9581
578
            _res = _PyAST_Attribute ( value , attr -> v . Name . id , Load , EXTRA );
9582
578
            if (_res == NULL && PyErr_Occurred()) {
9583
0
                p->error_indicator = 1;
9584
0
                p->level--;
9585
0
                return NULL;
9586
0
            }
9587
578
            goto done;
9588
578
        }
9589
28.4k
        p->mark = _mark;
9590
28.4k
        D(fprintf(stderr, "%*c%s attr[%d-%d]: %s failed!\n", p->level, ' ',
9591
28.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '.' NAME"));
9592
28.4k
    }
9593
0
    _res = NULL;
9594
29.0k
  done:
9595
29.0k
    p->level--;
9596
29.0k
    return _res;
9597
28.4k
}
9598
9599
// Left-recursive
9600
// name_or_attr: attr | NAME
9601
static expr_ty
9602
name_or_attr_rule(Parser *p)
9603
111k
{
9604
111k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9605
0
        _Pypegen_stack_overflow(p);
9606
0
    }
9607
111k
    if (p->error_indicator) {
9608
0
        p->level--;
9609
0
        return NULL;
9610
0
    }
9611
111k
    expr_ty _res = NULL;
9612
111k
    int _mark = p->mark;
9613
111k
    { // attr
9614
111k
        if (p->error_indicator) {
9615
0
            p->level--;
9616
0
            return NULL;
9617
0
        }
9618
111k
        D(fprintf(stderr, "%*c> name_or_attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr"));
9619
111k
        expr_ty attr_var;
9620
111k
        if (
9621
111k
            (attr_var = attr_rule(p))  // attr
9622
111k
        )
9623
1.71k
        {
9624
1.71k
            D(fprintf(stderr, "%*c+ name_or_attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr"));
9625
1.71k
            _res = attr_var;
9626
1.71k
            goto done;
9627
1.71k
        }
9628
109k
        p->mark = _mark;
9629
109k
        D(fprintf(stderr, "%*c%s name_or_attr[%d-%d]: %s failed!\n", p->level, ' ',
9630
109k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr"));
9631
109k
    }
9632
0
    { // NAME
9633
109k
        if (p->error_indicator) {
9634
0
            p->level--;
9635
0
            return NULL;
9636
0
        }
9637
109k
        D(fprintf(stderr, "%*c> name_or_attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
9638
109k
        expr_ty name_var;
9639
109k
        if (
9640
109k
            (name_var = _PyPegen_name_token(p))  // NAME
9641
109k
        )
9642
65.3k
        {
9643
65.3k
            D(fprintf(stderr, "%*c+ name_or_attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
9644
65.3k
            _res = name_var;
9645
65.3k
            goto done;
9646
65.3k
        }
9647
44.1k
        p->mark = _mark;
9648
44.1k
        D(fprintf(stderr, "%*c%s name_or_attr[%d-%d]: %s failed!\n", p->level, ' ',
9649
44.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
9650
44.1k
    }
9651
0
    _res = NULL;
9652
111k
  done:
9653
111k
    p->level--;
9654
111k
    return _res;
9655
44.1k
}
9656
9657
// group_pattern: '(' pattern ')'
9658
static pattern_ty
9659
group_pattern_rule(Parser *p)
9660
27.6k
{
9661
27.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9662
0
        _Pypegen_stack_overflow(p);
9663
0
    }
9664
27.6k
    if (p->error_indicator) {
9665
0
        p->level--;
9666
0
        return NULL;
9667
0
    }
9668
27.6k
    pattern_ty _res = NULL;
9669
27.6k
    int _mark = p->mark;
9670
27.6k
    { // '(' pattern ')'
9671
27.6k
        if (p->error_indicator) {
9672
0
            p->level--;
9673
0
            return NULL;
9674
0
        }
9675
27.6k
        D(fprintf(stderr, "%*c> group_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' pattern ')'"));
9676
27.6k
        Token * _literal;
9677
27.6k
        Token * _literal_1;
9678
27.6k
        pattern_ty pattern;
9679
27.6k
        if (
9680
27.6k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
9681
27.6k
            &&
9682
27.6k
            (pattern = pattern_rule(p))  // pattern
9683
27.6k
            &&
9684
27.6k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
9685
27.6k
        )
9686
623
        {
9687
623
            D(fprintf(stderr, "%*c+ group_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' pattern ')'"));
9688
623
            _res = pattern;
9689
623
            if (_res == NULL && PyErr_Occurred()) {
9690
0
                p->error_indicator = 1;
9691
0
                p->level--;
9692
0
                return NULL;
9693
0
            }
9694
623
            goto done;
9695
623
        }
9696
27.0k
        p->mark = _mark;
9697
27.0k
        D(fprintf(stderr, "%*c%s group_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9698
27.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' pattern ')'"));
9699
27.0k
    }
9700
0
    _res = NULL;
9701
27.6k
  done:
9702
27.6k
    p->level--;
9703
27.6k
    return _res;
9704
27.0k
}
9705
9706
// sequence_pattern: '[' maybe_sequence_pattern? ']' | '(' open_sequence_pattern? ')'
9707
static pattern_ty
9708
sequence_pattern_rule(Parser *p)
9709
26.5k
{
9710
26.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9711
0
        _Pypegen_stack_overflow(p);
9712
0
    }
9713
26.5k
    if (p->error_indicator) {
9714
0
        p->level--;
9715
0
        return NULL;
9716
0
    }
9717
26.5k
    pattern_ty _res = NULL;
9718
26.5k
    int _mark = p->mark;
9719
26.5k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9720
0
        p->error_indicator = 1;
9721
0
        p->level--;
9722
0
        return NULL;
9723
0
    }
9724
26.5k
    int _start_lineno = p->tokens[_mark]->lineno;
9725
26.5k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9726
26.5k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9727
26.5k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9728
26.5k
    { // '[' maybe_sequence_pattern? ']'
9729
26.5k
        if (p->error_indicator) {
9730
0
            p->level--;
9731
0
            return NULL;
9732
0
        }
9733
26.5k
        D(fprintf(stderr, "%*c> sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
9734
26.5k
        Token * _literal;
9735
26.5k
        Token * _literal_1;
9736
26.5k
        void *patterns;
9737
26.5k
        if (
9738
26.5k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
9739
26.5k
            &&
9740
26.5k
            (patterns = maybe_sequence_pattern_rule(p), !p->error_indicator)  // maybe_sequence_pattern?
9741
26.5k
            &&
9742
26.5k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
9743
26.5k
        )
9744
227
        {
9745
227
            D(fprintf(stderr, "%*c+ sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
9746
227
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9747
227
            if (_token == NULL) {
9748
0
                p->level--;
9749
0
                return NULL;
9750
0
            }
9751
227
            int _end_lineno = _token->end_lineno;
9752
227
            UNUSED(_end_lineno); // Only used by EXTRA macro
9753
227
            int _end_col_offset = _token->end_col_offset;
9754
227
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9755
227
            _res = _PyAST_MatchSequence ( patterns , EXTRA );
9756
227
            if (_res == NULL && PyErr_Occurred()) {
9757
0
                p->error_indicator = 1;
9758
0
                p->level--;
9759
0
                return NULL;
9760
0
            }
9761
227
            goto done;
9762
227
        }
9763
26.3k
        p->mark = _mark;
9764
26.3k
        D(fprintf(stderr, "%*c%s sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9765
26.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
9766
26.3k
    }
9767
0
    { // '(' open_sequence_pattern? ')'
9768
26.3k
        if (p->error_indicator) {
9769
536
            p->level--;
9770
536
            return NULL;
9771
536
        }
9772
25.7k
        D(fprintf(stderr, "%*c> sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' open_sequence_pattern? ')'"));
9773
25.7k
        Token * _literal;
9774
25.7k
        Token * _literal_1;
9775
25.7k
        void *patterns;
9776
25.7k
        if (
9777
25.7k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
9778
25.7k
            &&
9779
25.7k
            (patterns = open_sequence_pattern_rule(p), !p->error_indicator)  // open_sequence_pattern?
9780
25.7k
            &&
9781
25.7k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
9782
25.7k
        )
9783
1.80k
        {
9784
1.80k
            D(fprintf(stderr, "%*c+ sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' open_sequence_pattern? ')'"));
9785
1.80k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9786
1.80k
            if (_token == NULL) {
9787
0
                p->level--;
9788
0
                return NULL;
9789
0
            }
9790
1.80k
            int _end_lineno = _token->end_lineno;
9791
1.80k
            UNUSED(_end_lineno); // Only used by EXTRA macro
9792
1.80k
            int _end_col_offset = _token->end_col_offset;
9793
1.80k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9794
1.80k
            _res = _PyAST_MatchSequence ( patterns , EXTRA );
9795
1.80k
            if (_res == NULL && PyErr_Occurred()) {
9796
0
                p->error_indicator = 1;
9797
0
                p->level--;
9798
0
                return NULL;
9799
0
            }
9800
1.80k
            goto done;
9801
1.80k
        }
9802
23.9k
        p->mark = _mark;
9803
23.9k
        D(fprintf(stderr, "%*c%s sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9804
23.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' open_sequence_pattern? ')'"));
9805
23.9k
    }
9806
0
    _res = NULL;
9807
26.0k
  done:
9808
26.0k
    p->level--;
9809
26.0k
    return _res;
9810
23.9k
}
9811
9812
// open_sequence_pattern: maybe_star_pattern ',' maybe_sequence_pattern?
9813
static asdl_seq*
9814
open_sequence_pattern_rule(Parser *p)
9815
12.7k
{
9816
12.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9817
0
        _Pypegen_stack_overflow(p);
9818
0
    }
9819
12.7k
    if (p->error_indicator) {
9820
0
        p->level--;
9821
0
        return NULL;
9822
0
    }
9823
12.7k
    asdl_seq* _res = NULL;
9824
12.7k
    int _mark = p->mark;
9825
12.7k
    { // maybe_star_pattern ',' maybe_sequence_pattern?
9826
12.7k
        if (p->error_indicator) {
9827
0
            p->level--;
9828
0
            return NULL;
9829
0
        }
9830
12.7k
        D(fprintf(stderr, "%*c> open_sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
9831
12.7k
        Token * _literal;
9832
12.7k
        pattern_ty pattern;
9833
12.7k
        void *patterns;
9834
12.7k
        if (
9835
12.7k
            (pattern = maybe_star_pattern_rule(p))  // maybe_star_pattern
9836
12.7k
            &&
9837
12.7k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
9838
12.7k
            &&
9839
12.7k
            (patterns = maybe_sequence_pattern_rule(p), !p->error_indicator)  // maybe_sequence_pattern?
9840
12.7k
        )
9841
2.57k
        {
9842
2.57k
            D(fprintf(stderr, "%*c+ open_sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
9843
2.57k
            _res = _PyPegen_seq_insert_in_front ( p , pattern , patterns );
9844
2.57k
            if (_res == NULL && PyErr_Occurred()) {
9845
0
                p->error_indicator = 1;
9846
0
                p->level--;
9847
0
                return NULL;
9848
0
            }
9849
2.57k
            goto done;
9850
2.57k
        }
9851
10.2k
        p->mark = _mark;
9852
10.2k
        D(fprintf(stderr, "%*c%s open_sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9853
10.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
9854
10.2k
    }
9855
0
    _res = NULL;
9856
12.7k
  done:
9857
12.7k
    p->level--;
9858
12.7k
    return _res;
9859
10.2k
}
9860
9861
// maybe_sequence_pattern: ','.maybe_star_pattern+ ','?
9862
static asdl_seq*
9863
maybe_sequence_pattern_rule(Parser *p)
9864
4.72k
{
9865
4.72k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9866
0
        _Pypegen_stack_overflow(p);
9867
0
    }
9868
4.72k
    if (p->error_indicator) {
9869
0
        p->level--;
9870
0
        return NULL;
9871
0
    }
9872
4.72k
    asdl_seq* _res = NULL;
9873
4.72k
    int _mark = p->mark;
9874
4.72k
    { // ','.maybe_star_pattern+ ','?
9875
4.72k
        if (p->error_indicator) {
9876
0
            p->level--;
9877
0
            return NULL;
9878
0
        }
9879
4.72k
        D(fprintf(stderr, "%*c> maybe_sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.maybe_star_pattern+ ','?"));
9880
4.72k
        void *_opt_var;
9881
4.72k
        UNUSED(_opt_var); // Silence compiler warnings
9882
4.72k
        asdl_seq * patterns;
9883
4.72k
        if (
9884
4.72k
            (patterns = _gather_45_rule(p))  // ','.maybe_star_pattern+
9885
4.72k
            &&
9886
4.72k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
9887
4.72k
        )
9888
2.03k
        {
9889
2.03k
            D(fprintf(stderr, "%*c+ maybe_sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.maybe_star_pattern+ ','?"));
9890
2.03k
            _res = patterns;
9891
2.03k
            if (_res == NULL && PyErr_Occurred()) {
9892
0
                p->error_indicator = 1;
9893
0
                p->level--;
9894
0
                return NULL;
9895
0
            }
9896
2.03k
            goto done;
9897
2.03k
        }
9898
2.68k
        p->mark = _mark;
9899
2.68k
        D(fprintf(stderr, "%*c%s maybe_sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9900
2.68k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.maybe_star_pattern+ ','?"));
9901
2.68k
    }
9902
0
    _res = NULL;
9903
4.72k
  done:
9904
4.72k
    p->level--;
9905
4.72k
    return _res;
9906
2.68k
}
9907
9908
// maybe_star_pattern: star_pattern | pattern
9909
static pattern_ty
9910
maybe_star_pattern_rule(Parser *p)
9911
29.3k
{
9912
29.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9913
0
        _Pypegen_stack_overflow(p);
9914
0
    }
9915
29.3k
    if (p->error_indicator) {
9916
0
        p->level--;
9917
0
        return NULL;
9918
0
    }
9919
29.3k
    pattern_ty _res = NULL;
9920
29.3k
    int _mark = p->mark;
9921
29.3k
    { // star_pattern
9922
29.3k
        if (p->error_indicator) {
9923
0
            p->level--;
9924
0
            return NULL;
9925
0
        }
9926
29.3k
        D(fprintf(stderr, "%*c> maybe_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_pattern"));
9927
29.3k
        pattern_ty star_pattern_var;
9928
29.3k
        if (
9929
29.3k
            (star_pattern_var = star_pattern_rule(p))  // star_pattern
9930
29.3k
        )
9931
2.52k
        {
9932
2.52k
            D(fprintf(stderr, "%*c+ maybe_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_pattern"));
9933
2.52k
            _res = star_pattern_var;
9934
2.52k
            goto done;
9935
2.52k
        }
9936
26.8k
        p->mark = _mark;
9937
26.8k
        D(fprintf(stderr, "%*c%s maybe_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9938
26.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_pattern"));
9939
26.8k
    }
9940
0
    { // pattern
9941
26.8k
        if (p->error_indicator) {
9942
30
            p->level--;
9943
30
            return NULL;
9944
30
        }
9945
26.8k
        D(fprintf(stderr, "%*c> maybe_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern"));
9946
26.8k
        pattern_ty pattern_var;
9947
26.8k
        if (
9948
26.8k
            (pattern_var = pattern_rule(p))  // pattern
9949
26.8k
        )
9950
19.1k
        {
9951
19.1k
            D(fprintf(stderr, "%*c+ maybe_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern"));
9952
19.1k
            _res = pattern_var;
9953
19.1k
            goto done;
9954
19.1k
        }
9955
7.68k
        p->mark = _mark;
9956
7.68k
        D(fprintf(stderr, "%*c%s maybe_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9957
7.68k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern"));
9958
7.68k
    }
9959
0
    _res = NULL;
9960
29.3k
  done:
9961
29.3k
    p->level--;
9962
29.3k
    return _res;
9963
7.68k
}
9964
9965
// star_pattern: '*' pattern_capture_target | '*' wildcard_pattern
9966
static pattern_ty
9967
star_pattern_rule(Parser *p)
9968
29.3k
{
9969
29.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9970
0
        _Pypegen_stack_overflow(p);
9971
0
    }
9972
29.3k
    if (p->error_indicator) {
9973
0
        p->level--;
9974
0
        return NULL;
9975
0
    }
9976
29.3k
    pattern_ty _res = NULL;
9977
29.3k
    if (_PyPegen_is_memoized(p, star_pattern_type, &_res)) {
9978
6.29k
        p->level--;
9979
6.29k
        return _res;
9980
6.29k
    }
9981
23.0k
    int _mark = p->mark;
9982
23.0k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9983
0
        p->error_indicator = 1;
9984
0
        p->level--;
9985
0
        return NULL;
9986
0
    }
9987
23.0k
    int _start_lineno = p->tokens[_mark]->lineno;
9988
23.0k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9989
23.0k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9990
23.0k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9991
23.0k
    { // '*' pattern_capture_target
9992
23.0k
        if (p->error_indicator) {
9993
0
            p->level--;
9994
0
            return NULL;
9995
0
        }
9996
23.0k
        D(fprintf(stderr, "%*c> star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' pattern_capture_target"));
9997
23.0k
        Token * _literal;
9998
23.0k
        expr_ty target;
9999
23.0k
        if (
10000
23.0k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
10001
23.0k
            &&
10002
23.0k
            (target = pattern_capture_target_rule(p))  // pattern_capture_target
10003
23.0k
        )
10004
716
        {
10005
716
            D(fprintf(stderr, "%*c+ star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' pattern_capture_target"));
10006
716
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10007
716
            if (_token == NULL) {
10008
0
                p->level--;
10009
0
                return NULL;
10010
0
            }
10011
716
            int _end_lineno = _token->end_lineno;
10012
716
            UNUSED(_end_lineno); // Only used by EXTRA macro
10013
716
            int _end_col_offset = _token->end_col_offset;
10014
716
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10015
716
            _res = _PyAST_MatchStar ( target -> v . Name . id , EXTRA );
10016
716
            if (_res == NULL && PyErr_Occurred()) {
10017
0
                p->error_indicator = 1;
10018
0
                p->level--;
10019
0
                return NULL;
10020
0
            }
10021
716
            goto done;
10022
716
        }
10023
22.3k
        p->mark = _mark;
10024
22.3k
        D(fprintf(stderr, "%*c%s star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10025
22.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' pattern_capture_target"));
10026
22.3k
    }
10027
0
    { // '*' wildcard_pattern
10028
22.3k
        if (p->error_indicator) {
10029
2
            p->level--;
10030
2
            return NULL;
10031
2
        }
10032
22.3k
        D(fprintf(stderr, "%*c> star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' wildcard_pattern"));
10033
22.3k
        Token * _literal;
10034
22.3k
        pattern_ty wildcard_pattern_var;
10035
22.3k
        if (
10036
22.3k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
10037
22.3k
            &&
10038
22.3k
            (wildcard_pattern_var = wildcard_pattern_rule(p))  // wildcard_pattern
10039
22.3k
        )
10040
893
        {
10041
893
            D(fprintf(stderr, "%*c+ star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' wildcard_pattern"));
10042
893
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10043
893
            if (_token == NULL) {
10044
0
                p->level--;
10045
0
                return NULL;
10046
0
            }
10047
893
            int _end_lineno = _token->end_lineno;
10048
893
            UNUSED(_end_lineno); // Only used by EXTRA macro
10049
893
            int _end_col_offset = _token->end_col_offset;
10050
893
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10051
893
            _res = _PyAST_MatchStar ( NULL , EXTRA );
10052
893
            if (_res == NULL && PyErr_Occurred()) {
10053
0
                p->error_indicator = 1;
10054
0
                p->level--;
10055
0
                return NULL;
10056
0
            }
10057
893
            goto done;
10058
893
        }
10059
21.4k
        p->mark = _mark;
10060
21.4k
        D(fprintf(stderr, "%*c%s star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10061
21.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' wildcard_pattern"));
10062
21.4k
    }
10063
0
    _res = NULL;
10064
23.0k
  done:
10065
23.0k
    _PyPegen_insert_memo(p, _mark, star_pattern_type, _res);
10066
23.0k
    p->level--;
10067
23.0k
    return _res;
10068
21.4k
}
10069
10070
// mapping_pattern:
10071
//     | '{' '}'
10072
//     | '{' double_star_pattern ','? '}'
10073
//     | '{' items_pattern ',' double_star_pattern ','? '}'
10074
//     | '{' items_pattern ','? '}'
10075
static pattern_ty
10076
mapping_pattern_rule(Parser *p)
10077
23.7k
{
10078
23.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10079
0
        _Pypegen_stack_overflow(p);
10080
0
    }
10081
23.7k
    if (p->error_indicator) {
10082
0
        p->level--;
10083
0
        return NULL;
10084
0
    }
10085
23.7k
    pattern_ty _res = NULL;
10086
23.7k
    int _mark = p->mark;
10087
23.7k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10088
0
        p->error_indicator = 1;
10089
0
        p->level--;
10090
0
        return NULL;
10091
0
    }
10092
23.7k
    int _start_lineno = p->tokens[_mark]->lineno;
10093
23.7k
    UNUSED(_start_lineno); // Only used by EXTRA macro
10094
23.7k
    int _start_col_offset = p->tokens[_mark]->col_offset;
10095
23.7k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
10096
23.7k
    { // '{' '}'
10097
23.7k
        if (p->error_indicator) {
10098
0
            p->level--;
10099
0
            return NULL;
10100
0
        }
10101
23.7k
        D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
10102
23.7k
        Token * _literal;
10103
23.7k
        Token * _literal_1;
10104
23.7k
        if (
10105
23.7k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
10106
23.7k
            &&
10107
23.7k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
10108
23.7k
        )
10109
1.08k
        {
10110
1.08k
            D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
10111
1.08k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10112
1.08k
            if (_token == NULL) {
10113
0
                p->level--;
10114
0
                return NULL;
10115
0
            }
10116
1.08k
            int _end_lineno = _token->end_lineno;
10117
1.08k
            UNUSED(_end_lineno); // Only used by EXTRA macro
10118
1.08k
            int _end_col_offset = _token->end_col_offset;
10119
1.08k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10120
1.08k
            _res = _PyAST_MatchMapping ( NULL , NULL , NULL , EXTRA );
10121
1.08k
            if (_res == NULL && PyErr_Occurred()) {
10122
0
                p->error_indicator = 1;
10123
0
                p->level--;
10124
0
                return NULL;
10125
0
            }
10126
1.08k
            goto done;
10127
1.08k
        }
10128
22.6k
        p->mark = _mark;
10129
22.6k
        D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10130
22.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '}'"));
10131
22.6k
    }
10132
0
    { // '{' double_star_pattern ','? '}'
10133
22.6k
        if (p->error_indicator) {
10134
5
            p->level--;
10135
5
            return NULL;
10136
5
        }
10137
22.6k
        D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' double_star_pattern ','? '}'"));
10138
22.6k
        Token * _literal;
10139
22.6k
        Token * _literal_1;
10140
22.6k
        void *_opt_var;
10141
22.6k
        UNUSED(_opt_var); // Silence compiler warnings
10142
22.6k
        expr_ty rest;
10143
22.6k
        if (
10144
22.6k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
10145
22.6k
            &&
10146
22.6k
            (rest = double_star_pattern_rule(p))  // double_star_pattern
10147
22.6k
            &&
10148
22.6k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10149
22.6k
            &&
10150
22.6k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
10151
22.6k
        )
10152
457
        {
10153
457
            D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' double_star_pattern ','? '}'"));
10154
457
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10155
457
            if (_token == NULL) {
10156
0
                p->level--;
10157
0
                return NULL;
10158
0
            }
10159
457
            int _end_lineno = _token->end_lineno;
10160
457
            UNUSED(_end_lineno); // Only used by EXTRA macro
10161
457
            int _end_col_offset = _token->end_col_offset;
10162
457
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10163
457
            _res = _PyAST_MatchMapping ( NULL , NULL , rest -> v . Name . id , EXTRA );
10164
457
            if (_res == NULL && PyErr_Occurred()) {
10165
0
                p->error_indicator = 1;
10166
0
                p->level--;
10167
0
                return NULL;
10168
0
            }
10169
457
            goto done;
10170
457
        }
10171
22.2k
        p->mark = _mark;
10172
22.2k
        D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10173
22.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' double_star_pattern ','? '}'"));
10174
22.2k
    }
10175
0
    { // '{' items_pattern ',' double_star_pattern ','? '}'
10176
22.2k
        if (p->error_indicator) {
10177
3
            p->level--;
10178
3
            return NULL;
10179
3
        }
10180
22.2k
        D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
10181
22.2k
        Token * _literal;
10182
22.2k
        Token * _literal_1;
10183
22.2k
        Token * _literal_2;
10184
22.2k
        void *_opt_var;
10185
22.2k
        UNUSED(_opt_var); // Silence compiler warnings
10186
22.2k
        asdl_seq* items;
10187
22.2k
        expr_ty rest;
10188
22.2k
        if (
10189
22.2k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
10190
22.2k
            &&
10191
22.2k
            (items = items_pattern_rule(p))  // items_pattern
10192
22.2k
            &&
10193
22.2k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
10194
22.2k
            &&
10195
22.2k
            (rest = double_star_pattern_rule(p))  // double_star_pattern
10196
22.2k
            &&
10197
22.2k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10198
22.2k
            &&
10199
22.2k
            (_literal_2 = _PyPegen_expect_token(p, 26))  // token='}'
10200
22.2k
        )
10201
385
        {
10202
385
            D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
10203
385
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10204
385
            if (_token == NULL) {
10205
0
                p->level--;
10206
0
                return NULL;
10207
0
            }
10208
385
            int _end_lineno = _token->end_lineno;
10209
385
            UNUSED(_end_lineno); // Only used by EXTRA macro
10210
385
            int _end_col_offset = _token->end_col_offset;
10211
385
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10212
385
            _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 );
10213
385
            if (_res == NULL && PyErr_Occurred()) {
10214
0
                p->error_indicator = 1;
10215
0
                p->level--;
10216
0
                return NULL;
10217
0
            }
10218
385
            goto done;
10219
385
        }
10220
21.8k
        p->mark = _mark;
10221
21.8k
        D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10222
21.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
10223
21.8k
    }
10224
0
    { // '{' items_pattern ','? '}'
10225
21.8k
        if (p->error_indicator) {
10226
675
            p->level--;
10227
675
            return NULL;
10228
675
        }
10229
21.1k
        D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ','? '}'"));
10230
21.1k
        Token * _literal;
10231
21.1k
        Token * _literal_1;
10232
21.1k
        void *_opt_var;
10233
21.1k
        UNUSED(_opt_var); // Silence compiler warnings
10234
21.1k
        asdl_seq* items;
10235
21.1k
        if (
10236
21.1k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
10237
21.1k
            &&
10238
21.1k
            (items = items_pattern_rule(p))  // items_pattern
10239
21.1k
            &&
10240
21.1k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10241
21.1k
            &&
10242
21.1k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
10243
21.1k
        )
10244
802
        {
10245
802
            D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ','? '}'"));
10246
802
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10247
802
            if (_token == NULL) {
10248
0
                p->level--;
10249
0
                return NULL;
10250
0
            }
10251
802
            int _end_lineno = _token->end_lineno;
10252
802
            UNUSED(_end_lineno); // Only used by EXTRA macro
10253
802
            int _end_col_offset = _token->end_col_offset;
10254
802
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10255
802
            _res = _PyAST_MatchMapping ( CHECK ( asdl_expr_seq* , _PyPegen_get_pattern_keys ( p , items ) ) , CHECK ( asdl_pattern_seq* , _PyPegen_get_patterns ( p , items ) ) , NULL , EXTRA );
10256
802
            if (_res == NULL && PyErr_Occurred()) {
10257
0
                p->error_indicator = 1;
10258
0
                p->level--;
10259
0
                return NULL;
10260
0
            }
10261
802
            goto done;
10262
802
        }
10263
20.3k
        p->mark = _mark;
10264
20.3k
        D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10265
20.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' items_pattern ','? '}'"));
10266
20.3k
    }
10267
0
    _res = NULL;
10268
23.0k
  done:
10269
23.0k
    p->level--;
10270
23.0k
    return _res;
10271
20.3k
}
10272
10273
// items_pattern: ','.key_value_pattern+
10274
static asdl_seq*
10275
items_pattern_rule(Parser *p)
10276
5.20k
{
10277
5.20k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10278
0
        _Pypegen_stack_overflow(p);
10279
0
    }
10280
5.20k
    if (p->error_indicator) {
10281
0
        p->level--;
10282
0
        return NULL;
10283
0
    }
10284
5.20k
    asdl_seq* _res = NULL;
10285
5.20k
    int _mark = p->mark;
10286
5.20k
    { // ','.key_value_pattern+
10287
5.20k
        if (p->error_indicator) {
10288
0
            p->level--;
10289
0
            return NULL;
10290
0
        }
10291
5.20k
        D(fprintf(stderr, "%*c> items_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.key_value_pattern+"));
10292
5.20k
        asdl_seq * _gather_47_var;
10293
5.20k
        if (
10294
5.20k
            (_gather_47_var = _gather_47_rule(p))  // ','.key_value_pattern+
10295
5.20k
        )
10296
3.50k
        {
10297
3.50k
            D(fprintf(stderr, "%*c+ items_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.key_value_pattern+"));
10298
3.50k
            _res = _gather_47_var;
10299
3.50k
            goto done;
10300
3.50k
        }
10301
1.70k
        p->mark = _mark;
10302
1.70k
        D(fprintf(stderr, "%*c%s items_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10303
1.70k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.key_value_pattern+"));
10304
1.70k
    }
10305
0
    _res = NULL;
10306
5.20k
  done:
10307
5.20k
    p->level--;
10308
5.20k
    return _res;
10309
1.70k
}
10310
10311
// key_value_pattern: (literal_expr | attr) ':' pattern
10312
static KeyPatternPair*
10313
key_value_pattern_rule(Parser *p)
10314
9.25k
{
10315
9.25k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10316
0
        _Pypegen_stack_overflow(p);
10317
0
    }
10318
9.25k
    if (p->error_indicator) {
10319
0
        p->level--;
10320
0
        return NULL;
10321
0
    }
10322
9.25k
    KeyPatternPair* _res = NULL;
10323
9.25k
    int _mark = p->mark;
10324
9.25k
    { // (literal_expr | attr) ':' pattern
10325
9.25k
        if (p->error_indicator) {
10326
0
            p->level--;
10327
0
            return NULL;
10328
0
        }
10329
9.25k
        D(fprintf(stderr, "%*c> key_value_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(literal_expr | attr) ':' pattern"));
10330
9.25k
        Token * _literal;
10331
9.25k
        void *key;
10332
9.25k
        pattern_ty pattern;
10333
9.25k
        if (
10334
9.25k
            (key = _tmp_48_rule(p))  // literal_expr | attr
10335
9.25k
            &&
10336
9.25k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
10337
9.25k
            &&
10338
9.25k
            (pattern = pattern_rule(p))  // pattern
10339
9.25k
        )
10340
5.49k
        {
10341
5.49k
            D(fprintf(stderr, "%*c+ key_value_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(literal_expr | attr) ':' pattern"));
10342
5.49k
            _res = _PyPegen_key_pattern_pair ( p , key , pattern );
10343
5.49k
            if (_res == NULL && PyErr_Occurred()) {
10344
0
                p->error_indicator = 1;
10345
0
                p->level--;
10346
0
                return NULL;
10347
0
            }
10348
5.49k
            goto done;
10349
5.49k
        }
10350
3.76k
        p->mark = _mark;
10351
3.76k
        D(fprintf(stderr, "%*c%s key_value_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10352
3.76k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(literal_expr | attr) ':' pattern"));
10353
3.76k
    }
10354
0
    _res = NULL;
10355
9.25k
  done:
10356
9.25k
    p->level--;
10357
9.25k
    return _res;
10358
3.76k
}
10359
10360
// double_star_pattern: '**' pattern_capture_target
10361
static expr_ty
10362
double_star_pattern_rule(Parser *p)
10363
5.02k
{
10364
5.02k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10365
0
        _Pypegen_stack_overflow(p);
10366
0
    }
10367
5.02k
    if (p->error_indicator) {
10368
413
        p->level--;
10369
413
        return NULL;
10370
413
    }
10371
4.61k
    expr_ty _res = NULL;
10372
4.61k
    int _mark = p->mark;
10373
4.61k
    { // '**' pattern_capture_target
10374
4.61k
        if (p->error_indicator) {
10375
0
            p->level--;
10376
0
            return NULL;
10377
0
        }
10378
4.61k
        D(fprintf(stderr, "%*c> double_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' pattern_capture_target"));
10379
4.61k
        Token * _literal;
10380
4.61k
        expr_ty target;
10381
4.61k
        if (
10382
4.61k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
10383
4.61k
            &&
10384
4.61k
            (target = pattern_capture_target_rule(p))  // pattern_capture_target
10385
4.61k
        )
10386
852
        {
10387
852
            D(fprintf(stderr, "%*c+ double_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' pattern_capture_target"));
10388
852
            _res = target;
10389
852
            if (_res == NULL && PyErr_Occurred()) {
10390
0
                p->error_indicator = 1;
10391
0
                p->level--;
10392
0
                return NULL;
10393
0
            }
10394
852
            goto done;
10395
852
        }
10396
3.75k
        p->mark = _mark;
10397
3.75k
        D(fprintf(stderr, "%*c%s double_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10398
3.75k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' pattern_capture_target"));
10399
3.75k
    }
10400
0
    _res = NULL;
10401
4.61k
  done:
10402
4.61k
    p->level--;
10403
4.61k
    return _res;
10404
3.75k
}
10405
10406
// class_pattern:
10407
//     | name_or_attr '(' ')'
10408
//     | name_or_attr '(' positional_patterns ','? ')'
10409
//     | name_or_attr '(' keyword_patterns ','? ')'
10410
//     | name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'
10411
//     | invalid_class_pattern
10412
static pattern_ty
10413
class_pattern_rule(Parser *p)
10414
20.3k
{
10415
20.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10416
0
        _Pypegen_stack_overflow(p);
10417
0
    }
10418
20.3k
    if (p->error_indicator) {
10419
0
        p->level--;
10420
0
        return NULL;
10421
0
    }
10422
20.3k
    pattern_ty _res = NULL;
10423
20.3k
    int _mark = p->mark;
10424
20.3k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10425
0
        p->error_indicator = 1;
10426
0
        p->level--;
10427
0
        return NULL;
10428
0
    }
10429
20.3k
    int _start_lineno = p->tokens[_mark]->lineno;
10430
20.3k
    UNUSED(_start_lineno); // Only used by EXTRA macro
10431
20.3k
    int _start_col_offset = p->tokens[_mark]->col_offset;
10432
20.3k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
10433
20.3k
    { // name_or_attr '(' ')'
10434
20.3k
        if (p->error_indicator) {
10435
0
            p->level--;
10436
0
            return NULL;
10437
0
        }
10438
20.3k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' ')'"));
10439
20.3k
        Token * _literal;
10440
20.3k
        Token * _literal_1;
10441
20.3k
        expr_ty cls;
10442
20.3k
        if (
10443
20.3k
            (cls = name_or_attr_rule(p))  // name_or_attr
10444
20.3k
            &&
10445
20.3k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
10446
20.3k
            &&
10447
20.3k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
10448
20.3k
        )
10449
1.05k
        {
10450
1.05k
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' ')'"));
10451
1.05k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10452
1.05k
            if (_token == NULL) {
10453
0
                p->level--;
10454
0
                return NULL;
10455
0
            }
10456
1.05k
            int _end_lineno = _token->end_lineno;
10457
1.05k
            UNUSED(_end_lineno); // Only used by EXTRA macro
10458
1.05k
            int _end_col_offset = _token->end_col_offset;
10459
1.05k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10460
1.05k
            _res = _PyAST_MatchClass ( cls , NULL , NULL , NULL , EXTRA );
10461
1.05k
            if (_res == NULL && PyErr_Occurred()) {
10462
0
                p->error_indicator = 1;
10463
0
                p->level--;
10464
0
                return NULL;
10465
0
            }
10466
1.05k
            goto done;
10467
1.05k
        }
10468
19.2k
        p->mark = _mark;
10469
19.2k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10470
19.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' ')'"));
10471
19.2k
    }
10472
0
    { // name_or_attr '(' positional_patterns ','? ')'
10473
19.2k
        if (p->error_indicator) {
10474
10
            p->level--;
10475
10
            return NULL;
10476
10
        }
10477
19.2k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
10478
19.2k
        Token * _literal;
10479
19.2k
        Token * _literal_1;
10480
19.2k
        void *_opt_var;
10481
19.2k
        UNUSED(_opt_var); // Silence compiler warnings
10482
19.2k
        expr_ty cls;
10483
19.2k
        asdl_pattern_seq* patterns;
10484
19.2k
        if (
10485
19.2k
            (cls = name_or_attr_rule(p))  // name_or_attr
10486
19.2k
            &&
10487
19.2k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
10488
19.2k
            &&
10489
19.2k
            (patterns = positional_patterns_rule(p))  // positional_patterns
10490
19.2k
            &&
10491
19.2k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10492
19.2k
            &&
10493
19.2k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
10494
19.2k
        )
10495
998
        {
10496
998
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
10497
998
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10498
998
            if (_token == NULL) {
10499
0
                p->level--;
10500
0
                return NULL;
10501
0
            }
10502
998
            int _end_lineno = _token->end_lineno;
10503
998
            UNUSED(_end_lineno); // Only used by EXTRA macro
10504
998
            int _end_col_offset = _token->end_col_offset;
10505
998
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10506
998
            _res = _PyAST_MatchClass ( cls , patterns , NULL , NULL , EXTRA );
10507
998
            if (_res == NULL && PyErr_Occurred()) {
10508
0
                p->error_indicator = 1;
10509
0
                p->level--;
10510
0
                return NULL;
10511
0
            }
10512
998
            goto done;
10513
998
        }
10514
18.2k
        p->mark = _mark;
10515
18.2k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10516
18.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
10517
18.2k
    }
10518
0
    { // name_or_attr '(' keyword_patterns ','? ')'
10519
18.2k
        if (p->error_indicator) {
10520
709
            p->level--;
10521
709
            return NULL;
10522
709
        }
10523
17.5k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
10524
17.5k
        Token * _literal;
10525
17.5k
        Token * _literal_1;
10526
17.5k
        void *_opt_var;
10527
17.5k
        UNUSED(_opt_var); // Silence compiler warnings
10528
17.5k
        expr_ty cls;
10529
17.5k
        asdl_seq* keywords;
10530
17.5k
        if (
10531
17.5k
            (cls = name_or_attr_rule(p))  // name_or_attr
10532
17.5k
            &&
10533
17.5k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
10534
17.5k
            &&
10535
17.5k
            (keywords = keyword_patterns_rule(p))  // keyword_patterns
10536
17.5k
            &&
10537
17.5k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10538
17.5k
            &&
10539
17.5k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
10540
17.5k
        )
10541
634
        {
10542
634
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
10543
634
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10544
634
            if (_token == NULL) {
10545
0
                p->level--;
10546
0
                return NULL;
10547
0
            }
10548
634
            int _end_lineno = _token->end_lineno;
10549
634
            UNUSED(_end_lineno); // Only used by EXTRA macro
10550
634
            int _end_col_offset = _token->end_col_offset;
10551
634
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10552
634
            _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 );
10553
634
            if (_res == NULL && PyErr_Occurred()) {
10554
0
                p->error_indicator = 1;
10555
0
                p->level--;
10556
0
                return NULL;
10557
0
            }
10558
634
            goto done;
10559
634
        }
10560
16.9k
        p->mark = _mark;
10561
16.9k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10562
16.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
10563
16.9k
    }
10564
0
    { // name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'
10565
16.9k
        if (p->error_indicator) {
10566
313
            p->level--;
10567
313
            return NULL;
10568
313
        }
10569
16.6k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
10570
16.6k
        Token * _literal;
10571
16.6k
        Token * _literal_1;
10572
16.6k
        Token * _literal_2;
10573
16.6k
        void *_opt_var;
10574
16.6k
        UNUSED(_opt_var); // Silence compiler warnings
10575
16.6k
        expr_ty cls;
10576
16.6k
        asdl_seq* keywords;
10577
16.6k
        asdl_pattern_seq* patterns;
10578
16.6k
        if (
10579
16.6k
            (cls = name_or_attr_rule(p))  // name_or_attr
10580
16.6k
            &&
10581
16.6k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
10582
16.6k
            &&
10583
16.6k
            (patterns = positional_patterns_rule(p))  // positional_patterns
10584
16.6k
            &&
10585
16.6k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
10586
16.6k
            &&
10587
16.6k
            (keywords = keyword_patterns_rule(p))  // keyword_patterns
10588
16.6k
            &&
10589
16.6k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10590
16.6k
            &&
10591
16.6k
            (_literal_2 = _PyPegen_expect_token(p, 8))  // token=')'
10592
16.6k
        )
10593
143
        {
10594
143
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
10595
143
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10596
143
            if (_token == NULL) {
10597
0
                p->level--;
10598
0
                return NULL;
10599
0
            }
10600
143
            int _end_lineno = _token->end_lineno;
10601
143
            UNUSED(_end_lineno); // Only used by EXTRA macro
10602
143
            int _end_col_offset = _token->end_col_offset;
10603
143
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10604
143
            _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 );
10605
143
            if (_res == NULL && PyErr_Occurred()) {
10606
0
                p->error_indicator = 1;
10607
0
                p->level--;
10608
0
                return NULL;
10609
0
            }
10610
143
            goto done;
10611
143
        }
10612
16.4k
        p->mark = _mark;
10613
16.4k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10614
16.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
10615
16.4k
    }
10616
16.4k
    if (p->call_invalid_rules) { // invalid_class_pattern
10617
8.60k
        if (p->error_indicator) {
10618
341
            p->level--;
10619
341
            return NULL;
10620
341
        }
10621
8.26k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_class_pattern"));
10622
8.26k
        void *invalid_class_pattern_var;
10623
8.26k
        if (
10624
8.26k
            (invalid_class_pattern_var = invalid_class_pattern_rule(p))  // invalid_class_pattern
10625
8.26k
        )
10626
0
        {
10627
0
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_class_pattern"));
10628
0
            _res = invalid_class_pattern_var;
10629
0
            goto done;
10630
0
        }
10631
8.26k
        p->mark = _mark;
10632
8.26k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10633
8.26k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_class_pattern"));
10634
8.26k
    }
10635
16.1k
    _res = NULL;
10636
18.9k
  done:
10637
18.9k
    p->level--;
10638
18.9k
    return _res;
10639
16.1k
}
10640
10641
// positional_patterns: ','.pattern+
10642
static asdl_pattern_seq*
10643
positional_patterns_rule(Parser *p)
10644
20.2k
{
10645
20.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10646
0
        _Pypegen_stack_overflow(p);
10647
0
    }
10648
20.2k
    if (p->error_indicator) {
10649
0
        p->level--;
10650
0
        return NULL;
10651
0
    }
10652
20.2k
    asdl_pattern_seq* _res = NULL;
10653
20.2k
    int _mark = p->mark;
10654
20.2k
    { // ','.pattern+
10655
20.2k
        if (p->error_indicator) {
10656
0
            p->level--;
10657
0
            return NULL;
10658
0
        }
10659
20.2k
        D(fprintf(stderr, "%*c> positional_patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.pattern+"));
10660
20.2k
        asdl_pattern_seq* args;
10661
20.2k
        if (
10662
20.2k
            (args = (asdl_pattern_seq*)_gather_50_rule(p))  // ','.pattern+
10663
20.2k
        )
10664
11.2k
        {
10665
11.2k
            D(fprintf(stderr, "%*c+ positional_patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.pattern+"));
10666
11.2k
            _res = args;
10667
11.2k
            if (_res == NULL && PyErr_Occurred()) {
10668
0
                p->error_indicator = 1;
10669
0
                p->level--;
10670
0
                return NULL;
10671
0
            }
10672
11.2k
            goto done;
10673
11.2k
        }
10674
8.98k
        p->mark = _mark;
10675
8.98k
        D(fprintf(stderr, "%*c%s positional_patterns[%d-%d]: %s failed!\n", p->level, ' ',
10676
8.98k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.pattern+"));
10677
8.98k
    }
10678
0
    _res = NULL;
10679
20.2k
  done:
10680
20.2k
    p->level--;
10681
20.2k
    return _res;
10682
8.98k
}
10683
10684
// keyword_patterns: ','.keyword_pattern+
10685
static asdl_seq*
10686
keyword_patterns_rule(Parser *p)
10687
13.0k
{
10688
13.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10689
0
        _Pypegen_stack_overflow(p);
10690
0
    }
10691
13.0k
    if (p->error_indicator) {
10692
0
        p->level--;
10693
0
        return NULL;
10694
0
    }
10695
13.0k
    asdl_seq* _res = NULL;
10696
13.0k
    int _mark = p->mark;
10697
13.0k
    { // ','.keyword_pattern+
10698
13.0k
        if (p->error_indicator) {
10699
0
            p->level--;
10700
0
            return NULL;
10701
0
        }
10702
13.0k
        D(fprintf(stderr, "%*c> keyword_patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.keyword_pattern+"));
10703
13.0k
        asdl_seq * _gather_52_var;
10704
13.0k
        if (
10705
13.0k
            (_gather_52_var = _gather_52_rule(p))  // ','.keyword_pattern+
10706
13.0k
        )
10707
4.67k
        {
10708
4.67k
            D(fprintf(stderr, "%*c+ keyword_patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.keyword_pattern+"));
10709
4.67k
            _res = _gather_52_var;
10710
4.67k
            goto done;
10711
4.67k
        }
10712
8.42k
        p->mark = _mark;
10713
8.42k
        D(fprintf(stderr, "%*c%s keyword_patterns[%d-%d]: %s failed!\n", p->level, ' ',
10714
8.42k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.keyword_pattern+"));
10715
8.42k
    }
10716
0
    _res = NULL;
10717
13.0k
  done:
10718
13.0k
    p->level--;
10719
13.0k
    return _res;
10720
8.42k
}
10721
10722
// keyword_pattern: NAME '=' pattern
10723
static KeyPatternPair*
10724
keyword_pattern_rule(Parser *p)
10725
17.7k
{
10726
17.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10727
0
        _Pypegen_stack_overflow(p);
10728
0
    }
10729
17.7k
    if (p->error_indicator) {
10730
0
        p->level--;
10731
0
        return NULL;
10732
0
    }
10733
17.7k
    KeyPatternPair* _res = NULL;
10734
17.7k
    int _mark = p->mark;
10735
17.7k
    { // NAME '=' pattern
10736
17.7k
        if (p->error_indicator) {
10737
0
            p->level--;
10738
0
            return NULL;
10739
0
        }
10740
17.7k
        D(fprintf(stderr, "%*c> keyword_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' pattern"));
10741
17.7k
        Token * _literal;
10742
17.7k
        expr_ty arg;
10743
17.7k
        pattern_ty value;
10744
17.7k
        if (
10745
17.7k
            (arg = _PyPegen_name_token(p))  // NAME
10746
17.7k
            &&
10747
17.7k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
10748
17.7k
            &&
10749
17.7k
            (value = pattern_rule(p))  // pattern
10750
17.7k
        )
10751
6.49k
        {
10752
6.49k
            D(fprintf(stderr, "%*c+ keyword_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' pattern"));
10753
6.49k
            _res = _PyPegen_key_pattern_pair ( p , arg , value );
10754
6.49k
            if (_res == NULL && PyErr_Occurred()) {
10755
0
                p->error_indicator = 1;
10756
0
                p->level--;
10757
0
                return NULL;
10758
0
            }
10759
6.49k
            goto done;
10760
6.49k
        }
10761
11.2k
        p->mark = _mark;
10762
11.2k
        D(fprintf(stderr, "%*c%s keyword_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10763
11.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' pattern"));
10764
11.2k
    }
10765
0
    _res = NULL;
10766
17.7k
  done:
10767
17.7k
    p->level--;
10768
17.7k
    return _res;
10769
11.2k
}
10770
10771
// type_alias: "type" NAME type_params? '=' expression
10772
static stmt_ty
10773
type_alias_rule(Parser *p)
10774
492
{
10775
492
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10776
0
        _Pypegen_stack_overflow(p);
10777
0
    }
10778
492
    if (p->error_indicator) {
10779
0
        p->level--;
10780
0
        return NULL;
10781
0
    }
10782
492
    stmt_ty _res = NULL;
10783
492
    int _mark = p->mark;
10784
492
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10785
0
        p->error_indicator = 1;
10786
0
        p->level--;
10787
0
        return NULL;
10788
0
    }
10789
492
    int _start_lineno = p->tokens[_mark]->lineno;
10790
492
    UNUSED(_start_lineno); // Only used by EXTRA macro
10791
492
    int _start_col_offset = p->tokens[_mark]->col_offset;
10792
492
    UNUSED(_start_col_offset); // Only used by EXTRA macro
10793
492
    { // "type" NAME type_params? '=' expression
10794
492
        if (p->error_indicator) {
10795
0
            p->level--;
10796
0
            return NULL;
10797
0
        }
10798
492
        D(fprintf(stderr, "%*c> type_alias[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"type\" NAME type_params? '=' expression"));
10799
492
        expr_ty _keyword;
10800
492
        Token * _literal;
10801
492
        expr_ty b;
10802
492
        expr_ty n;
10803
492
        void *t;
10804
492
        if (
10805
492
            (_keyword = _PyPegen_expect_soft_keyword(p, "type"))  // soft_keyword='"type"'
10806
492
            &&
10807
492
            (n = _PyPegen_name_token(p))  // NAME
10808
492
            &&
10809
492
            (t = type_params_rule(p), !p->error_indicator)  // type_params?
10810
492
            &&
10811
492
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
10812
492
            &&
10813
492
            (b = expression_rule(p))  // expression
10814
492
        )
10815
275
        {
10816
275
            D(fprintf(stderr, "%*c+ type_alias[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"type\" NAME type_params? '=' expression"));
10817
275
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10818
275
            if (_token == NULL) {
10819
0
                p->level--;
10820
0
                return NULL;
10821
0
            }
10822
275
            int _end_lineno = _token->end_lineno;
10823
275
            UNUSED(_end_lineno); // Only used by EXTRA macro
10824
275
            int _end_col_offset = _token->end_col_offset;
10825
275
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10826
275
            _res = CHECK_VERSION ( stmt_ty , 12 , "Type statement is" , _PyAST_TypeAlias ( CHECK ( expr_ty , _PyPegen_set_expr_context ( p , n , Store ) ) , t , b , EXTRA ) );
10827
275
            if (_res == NULL && PyErr_Occurred()) {
10828
0
                p->error_indicator = 1;
10829
0
                p->level--;
10830
0
                return NULL;
10831
0
            }
10832
275
            goto done;
10833
275
        }
10834
217
        p->mark = _mark;
10835
217
        D(fprintf(stderr, "%*c%s type_alias[%d-%d]: %s failed!\n", p->level, ' ',
10836
217
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"type\" NAME type_params? '=' expression"));
10837
217
    }
10838
0
    _res = NULL;
10839
492
  done:
10840
492
    p->level--;
10841
492
    return _res;
10842
217
}
10843
10844
// type_params: invalid_type_params | '[' type_param_seq ']'
10845
static asdl_type_param_seq*
10846
type_params_rule(Parser *p)
10847
21.3k
{
10848
21.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10849
0
        _Pypegen_stack_overflow(p);
10850
0
    }
10851
21.3k
    if (p->error_indicator) {
10852
0
        p->level--;
10853
0
        return NULL;
10854
0
    }
10855
21.3k
    asdl_type_param_seq* _res = NULL;
10856
21.3k
    int _mark = p->mark;
10857
21.3k
    if (p->call_invalid_rules) { // invalid_type_params
10858
8.52k
        if (p->error_indicator) {
10859
0
            p->level--;
10860
0
            return NULL;
10861
0
        }
10862
8.52k
        D(fprintf(stderr, "%*c> type_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_type_params"));
10863
8.52k
        void *invalid_type_params_var;
10864
8.52k
        if (
10865
8.52k
            (invalid_type_params_var = invalid_type_params_rule(p))  // invalid_type_params
10866
8.52k
        )
10867
0
        {
10868
0
            D(fprintf(stderr, "%*c+ type_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_type_params"));
10869
0
            _res = invalid_type_params_var;
10870
0
            goto done;
10871
0
        }
10872
8.52k
        p->mark = _mark;
10873
8.52k
        D(fprintf(stderr, "%*c%s type_params[%d-%d]: %s failed!\n", p->level, ' ',
10874
8.52k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_type_params"));
10875
8.52k
    }
10876
21.3k
    { // '[' type_param_seq ']'
10877
21.3k
        if (p->error_indicator) {
10878
3
            p->level--;
10879
3
            return NULL;
10880
3
        }
10881
21.3k
        D(fprintf(stderr, "%*c> type_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' type_param_seq ']'"));
10882
21.3k
        Token * _literal;
10883
21.3k
        Token * _literal_1;
10884
21.3k
        asdl_type_param_seq* t;
10885
21.3k
        if (
10886
21.3k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
10887
21.3k
            &&
10888
21.3k
            (t = type_param_seq_rule(p))  // type_param_seq
10889
21.3k
            &&
10890
21.3k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
10891
21.3k
        )
10892
1.36k
        {
10893
1.36k
            D(fprintf(stderr, "%*c+ type_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' type_param_seq ']'"));
10894
1.36k
            _res = CHECK_VERSION ( asdl_type_param_seq* , 12 , "Type parameter lists are" , t );
10895
1.36k
            if (_res == NULL && PyErr_Occurred()) {
10896
0
                p->error_indicator = 1;
10897
0
                p->level--;
10898
0
                return NULL;
10899
0
            }
10900
1.36k
            goto done;
10901
1.36k
        }
10902
20.0k
        p->mark = _mark;
10903
20.0k
        D(fprintf(stderr, "%*c%s type_params[%d-%d]: %s failed!\n", p->level, ' ',
10904
20.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' type_param_seq ']'"));
10905
20.0k
    }
10906
0
    _res = NULL;
10907
21.3k
  done:
10908
21.3k
    p->level--;
10909
21.3k
    return _res;
10910
20.0k
}
10911
10912
// type_param_seq: ','.type_param+ ','?
10913
static asdl_type_param_seq*
10914
type_param_seq_rule(Parser *p)
10915
1.58k
{
10916
1.58k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10917
0
        _Pypegen_stack_overflow(p);
10918
0
    }
10919
1.58k
    if (p->error_indicator) {
10920
0
        p->level--;
10921
0
        return NULL;
10922
0
    }
10923
1.58k
    asdl_type_param_seq* _res = NULL;
10924
1.58k
    int _mark = p->mark;
10925
1.58k
    { // ','.type_param+ ','?
10926
1.58k
        if (p->error_indicator) {
10927
0
            p->level--;
10928
0
            return NULL;
10929
0
        }
10930
1.58k
        D(fprintf(stderr, "%*c> type_param_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.type_param+ ','?"));
10931
1.58k
        void *_opt_var;
10932
1.58k
        UNUSED(_opt_var); // Silence compiler warnings
10933
1.58k
        asdl_type_param_seq* a;
10934
1.58k
        if (
10935
1.58k
            (a = (asdl_type_param_seq*)_gather_54_rule(p))  // ','.type_param+
10936
1.58k
            &&
10937
1.58k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10938
1.58k
        )
10939
1.53k
        {
10940
1.53k
            D(fprintf(stderr, "%*c+ type_param_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.type_param+ ','?"));
10941
1.53k
            _res = a;
10942
1.53k
            if (_res == NULL && PyErr_Occurred()) {
10943
0
                p->error_indicator = 1;
10944
0
                p->level--;
10945
0
                return NULL;
10946
0
            }
10947
1.53k
            goto done;
10948
1.53k
        }
10949
53
        p->mark = _mark;
10950
53
        D(fprintf(stderr, "%*c%s type_param_seq[%d-%d]: %s failed!\n", p->level, ' ',
10951
53
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.type_param+ ','?"));
10952
53
    }
10953
0
    _res = NULL;
10954
1.58k
  done:
10955
1.58k
    p->level--;
10956
1.58k
    return _res;
10957
53
}
10958
10959
// type_param:
10960
//     | NAME type_param_bound? type_param_default?
10961
//     | invalid_type_param
10962
//     | '*' NAME type_param_starred_default?
10963
//     | '**' NAME type_param_default?
10964
static type_param_ty
10965
type_param_rule(Parser *p)
10966
10.8k
{
10967
10.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10968
0
        _Pypegen_stack_overflow(p);
10969
0
    }
10970
10.8k
    if (p->error_indicator) {
10971
0
        p->level--;
10972
0
        return NULL;
10973
0
    }
10974
10.8k
    type_param_ty _res = NULL;
10975
10.8k
    if (_PyPegen_is_memoized(p, type_param_type, &_res)) {
10976
2.69k
        p->level--;
10977
2.69k
        return _res;
10978
2.69k
    }
10979
8.11k
    int _mark = p->mark;
10980
8.11k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10981
0
        p->error_indicator = 1;
10982
0
        p->level--;
10983
0
        return NULL;
10984
0
    }
10985
8.11k
    int _start_lineno = p->tokens[_mark]->lineno;
10986
8.11k
    UNUSED(_start_lineno); // Only used by EXTRA macro
10987
8.11k
    int _start_col_offset = p->tokens[_mark]->col_offset;
10988
8.11k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
10989
8.11k
    { // NAME type_param_bound? type_param_default?
10990
8.11k
        if (p->error_indicator) {
10991
0
            p->level--;
10992
0
            return NULL;
10993
0
        }
10994
8.11k
        D(fprintf(stderr, "%*c> type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME type_param_bound? type_param_default?"));
10995
8.11k
        expr_ty a;
10996
8.11k
        void *b;
10997
8.11k
        void *c;
10998
8.11k
        if (
10999
8.11k
            (a = _PyPegen_name_token(p))  // NAME
11000
8.11k
            &&
11001
8.11k
            (b = type_param_bound_rule(p), !p->error_indicator)  // type_param_bound?
11002
8.11k
            &&
11003
8.11k
            (c = type_param_default_rule(p), !p->error_indicator)  // type_param_default?
11004
8.11k
        )
11005
4.87k
        {
11006
4.87k
            D(fprintf(stderr, "%*c+ type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME type_param_bound? type_param_default?"));
11007
4.87k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11008
4.87k
            if (_token == NULL) {
11009
0
                p->level--;
11010
0
                return NULL;
11011
0
            }
11012
4.87k
            int _end_lineno = _token->end_lineno;
11013
4.87k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11014
4.87k
            int _end_col_offset = _token->end_col_offset;
11015
4.87k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11016
4.87k
            _res = _PyAST_TypeVar ( a -> v . Name . id , b , c , EXTRA );
11017
4.87k
            if (_res == NULL && PyErr_Occurred()) {
11018
0
                p->error_indicator = 1;
11019
0
                p->level--;
11020
0
                return NULL;
11021
0
            }
11022
4.87k
            goto done;
11023
4.87k
        }
11024
3.23k
        p->mark = _mark;
11025
3.23k
        D(fprintf(stderr, "%*c%s type_param[%d-%d]: %s failed!\n", p->level, ' ',
11026
3.23k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME type_param_bound? type_param_default?"));
11027
3.23k
    }
11028
3.23k
    if (p->call_invalid_rules) { // invalid_type_param
11029
902
        if (p->error_indicator) {
11030
2
            p->level--;
11031
2
            return NULL;
11032
2
        }
11033
900
        D(fprintf(stderr, "%*c> type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_type_param"));
11034
900
        void *invalid_type_param_var;
11035
900
        if (
11036
900
            (invalid_type_param_var = invalid_type_param_rule(p))  // invalid_type_param
11037
900
        )
11038
0
        {
11039
0
            D(fprintf(stderr, "%*c+ type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_type_param"));
11040
0
            _res = invalid_type_param_var;
11041
0
            goto done;
11042
0
        }
11043
900
        p->mark = _mark;
11044
900
        D(fprintf(stderr, "%*c%s type_param[%d-%d]: %s failed!\n", p->level, ' ',
11045
900
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_type_param"));
11046
900
    }
11047
3.23k
    { // '*' NAME type_param_starred_default?
11048
3.23k
        if (p->error_indicator) {
11049
9
            p->level--;
11050
9
            return NULL;
11051
9
        }
11052
3.22k
        D(fprintf(stderr, "%*c> type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' NAME type_param_starred_default?"));
11053
3.22k
        Token * _literal;
11054
3.22k
        expr_ty a;
11055
3.22k
        void *b;
11056
3.22k
        if (
11057
3.22k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
11058
3.22k
            &&
11059
3.22k
            (a = _PyPegen_name_token(p))  // NAME
11060
3.22k
            &&
11061
3.22k
            (b = type_param_starred_default_rule(p), !p->error_indicator)  // type_param_starred_default?
11062
3.22k
        )
11063
1.61k
        {
11064
1.61k
            D(fprintf(stderr, "%*c+ type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' NAME type_param_starred_default?"));
11065
1.61k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11066
1.61k
            if (_token == NULL) {
11067
0
                p->level--;
11068
0
                return NULL;
11069
0
            }
11070
1.61k
            int _end_lineno = _token->end_lineno;
11071
1.61k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11072
1.61k
            int _end_col_offset = _token->end_col_offset;
11073
1.61k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11074
1.61k
            _res = _PyAST_TypeVarTuple ( a -> v . Name . id , b , EXTRA );
11075
1.61k
            if (_res == NULL && PyErr_Occurred()) {
11076
0
                p->error_indicator = 1;
11077
0
                p->level--;
11078
0
                return NULL;
11079
0
            }
11080
1.61k
            goto done;
11081
1.61k
        }
11082
1.61k
        p->mark = _mark;
11083
1.61k
        D(fprintf(stderr, "%*c%s type_param[%d-%d]: %s failed!\n", p->level, ' ',
11084
1.61k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' NAME type_param_starred_default?"));
11085
1.61k
    }
11086
0
    { // '**' NAME type_param_default?
11087
1.61k
        if (p->error_indicator) {
11088
5
            p->level--;
11089
5
            return NULL;
11090
5
        }
11091
1.60k
        D(fprintf(stderr, "%*c> type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' NAME type_param_default?"));
11092
1.60k
        Token * _literal;
11093
1.60k
        expr_ty a;
11094
1.60k
        void *b;
11095
1.60k
        if (
11096
1.60k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
11097
1.60k
            &&
11098
1.60k
            (a = _PyPegen_name_token(p))  // NAME
11099
1.60k
            &&
11100
1.60k
            (b = type_param_default_rule(p), !p->error_indicator)  // type_param_default?
11101
1.60k
        )
11102
977
        {
11103
977
            D(fprintf(stderr, "%*c+ type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' NAME type_param_default?"));
11104
977
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11105
977
            if (_token == NULL) {
11106
0
                p->level--;
11107
0
                return NULL;
11108
0
            }
11109
977
            int _end_lineno = _token->end_lineno;
11110
977
            UNUSED(_end_lineno); // Only used by EXTRA macro
11111
977
            int _end_col_offset = _token->end_col_offset;
11112
977
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11113
977
            _res = _PyAST_ParamSpec ( a -> v . Name . id , b , EXTRA );
11114
977
            if (_res == NULL && PyErr_Occurred()) {
11115
0
                p->error_indicator = 1;
11116
0
                p->level--;
11117
0
                return NULL;
11118
0
            }
11119
977
            goto done;
11120
977
        }
11121
629
        p->mark = _mark;
11122
629
        D(fprintf(stderr, "%*c%s type_param[%d-%d]: %s failed!\n", p->level, ' ',
11123
629
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' NAME type_param_default?"));
11124
629
    }
11125
0
    _res = NULL;
11126
8.10k
  done:
11127
8.10k
    _PyPegen_insert_memo(p, _mark, type_param_type, _res);
11128
8.10k
    p->level--;
11129
8.10k
    return _res;
11130
629
}
11131
11132
// type_param_bound: ':' expression
11133
static expr_ty
11134
type_param_bound_rule(Parser *p)
11135
4.88k
{
11136
4.88k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11137
0
        _Pypegen_stack_overflow(p);
11138
0
    }
11139
4.88k
    if (p->error_indicator) {
11140
0
        p->level--;
11141
0
        return NULL;
11142
0
    }
11143
4.88k
    expr_ty _res = NULL;
11144
4.88k
    int _mark = p->mark;
11145
4.88k
    { // ':' expression
11146
4.88k
        if (p->error_indicator) {
11147
0
            p->level--;
11148
0
            return NULL;
11149
0
        }
11150
4.88k
        D(fprintf(stderr, "%*c> type_param_bound[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression"));
11151
4.88k
        Token * _literal;
11152
4.88k
        expr_ty e;
11153
4.88k
        if (
11154
4.88k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
11155
4.88k
            &&
11156
4.88k
            (e = expression_rule(p))  // expression
11157
4.88k
        )
11158
277
        {
11159
277
            D(fprintf(stderr, "%*c+ type_param_bound[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression"));
11160
277
            _res = e;
11161
277
            if (_res == NULL && PyErr_Occurred()) {
11162
0
                p->error_indicator = 1;
11163
0
                p->level--;
11164
0
                return NULL;
11165
0
            }
11166
277
            goto done;
11167
277
        }
11168
4.60k
        p->mark = _mark;
11169
4.60k
        D(fprintf(stderr, "%*c%s type_param_bound[%d-%d]: %s failed!\n", p->level, ' ',
11170
4.60k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression"));
11171
4.60k
    }
11172
0
    _res = NULL;
11173
4.88k
  done:
11174
4.88k
    p->level--;
11175
4.88k
    return _res;
11176
4.60k
}
11177
11178
// type_param_default: '=' expression
11179
static expr_ty
11180
type_param_default_rule(Parser *p)
11181
5.85k
{
11182
5.85k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11183
0
        _Pypegen_stack_overflow(p);
11184
0
    }
11185
5.85k
    if (p->error_indicator) {
11186
0
        p->level--;
11187
0
        return NULL;
11188
0
    }
11189
5.85k
    expr_ty _res = NULL;
11190
5.85k
    int _mark = p->mark;
11191
5.85k
    { // '=' expression
11192
5.85k
        if (p->error_indicator) {
11193
0
            p->level--;
11194
0
            return NULL;
11195
0
        }
11196
5.85k
        D(fprintf(stderr, "%*c> type_param_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' expression"));
11197
5.85k
        Token * _literal;
11198
5.85k
        expr_ty e;
11199
5.85k
        if (
11200
5.85k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
11201
5.85k
            &&
11202
5.85k
            (e = expression_rule(p))  // expression
11203
5.85k
        )
11204
960
        {
11205
960
            D(fprintf(stderr, "%*c+ type_param_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' expression"));
11206
960
            _res = CHECK_VERSION ( expr_ty , 13 , "Type parameter defaults are" , e );
11207
960
            if (_res == NULL && PyErr_Occurred()) {
11208
0
                p->error_indicator = 1;
11209
0
                p->level--;
11210
0
                return NULL;
11211
0
            }
11212
960
            goto done;
11213
960
        }
11214
4.89k
        p->mark = _mark;
11215
4.89k
        D(fprintf(stderr, "%*c%s type_param_default[%d-%d]: %s failed!\n", p->level, ' ',
11216
4.89k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' expression"));
11217
4.89k
    }
11218
0
    _res = NULL;
11219
5.85k
  done:
11220
5.85k
    p->level--;
11221
5.85k
    return _res;
11222
4.89k
}
11223
11224
// type_param_starred_default: '=' star_expression
11225
static expr_ty
11226
type_param_starred_default_rule(Parser *p)
11227
1.61k
{
11228
1.61k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11229
0
        _Pypegen_stack_overflow(p);
11230
0
    }
11231
1.61k
    if (p->error_indicator) {
11232
0
        p->level--;
11233
0
        return NULL;
11234
0
    }
11235
1.61k
    expr_ty _res = NULL;
11236
1.61k
    int _mark = p->mark;
11237
1.61k
    { // '=' star_expression
11238
1.61k
        if (p->error_indicator) {
11239
0
            p->level--;
11240
0
            return NULL;
11241
0
        }
11242
1.61k
        D(fprintf(stderr, "%*c> type_param_starred_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' star_expression"));
11243
1.61k
        Token * _literal;
11244
1.61k
        expr_ty e;
11245
1.61k
        if (
11246
1.61k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
11247
1.61k
            &&
11248
1.61k
            (e = star_expression_rule(p))  // star_expression
11249
1.61k
        )
11250
568
        {
11251
568
            D(fprintf(stderr, "%*c+ type_param_starred_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' star_expression"));
11252
568
            _res = CHECK_VERSION ( expr_ty , 13 , "Type parameter defaults are" , e );
11253
568
            if (_res == NULL && PyErr_Occurred()) {
11254
0
                p->error_indicator = 1;
11255
0
                p->level--;
11256
0
                return NULL;
11257
0
            }
11258
568
            goto done;
11259
568
        }
11260
1.05k
        p->mark = _mark;
11261
1.05k
        D(fprintf(stderr, "%*c%s type_param_starred_default[%d-%d]: %s failed!\n", p->level, ' ',
11262
1.05k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' star_expression"));
11263
1.05k
    }
11264
0
    _res = NULL;
11265
1.61k
  done:
11266
1.61k
    p->level--;
11267
1.61k
    return _res;
11268
1.05k
}
11269
11270
// expressions: expression ((',' expression))+ ','? | expression ',' | expression
11271
static expr_ty
11272
expressions_rule(Parser *p)
11273
11.7k
{
11274
11.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11275
0
        _Pypegen_stack_overflow(p);
11276
0
    }
11277
11.7k
    if (p->error_indicator) {
11278
0
        p->level--;
11279
0
        return NULL;
11280
0
    }
11281
11.7k
    expr_ty _res = NULL;
11282
11.7k
    int _mark = p->mark;
11283
11.7k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11284
8
        p->error_indicator = 1;
11285
8
        p->level--;
11286
8
        return NULL;
11287
8
    }
11288
11.7k
    int _start_lineno = p->tokens[_mark]->lineno;
11289
11.7k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11290
11.7k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11291
11.7k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11292
11.7k
    { // expression ((',' expression))+ ','?
11293
11.7k
        if (p->error_indicator) {
11294
0
            p->level--;
11295
0
            return NULL;
11296
0
        }
11297
11.7k
        D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ((',' expression))+ ','?"));
11298
11.7k
        void *_opt_var;
11299
11.7k
        UNUSED(_opt_var); // Silence compiler warnings
11300
11.7k
        expr_ty a;
11301
11.7k
        asdl_seq * b;
11302
11.7k
        if (
11303
11.7k
            (a = expression_rule(p))  // expression
11304
11.7k
            &&
11305
11.7k
            (b = _loop1_55_rule(p))  // ((',' expression))+
11306
11.7k
            &&
11307
11.7k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
11308
11.7k
        )
11309
1.29k
        {
11310
1.29k
            D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ((',' expression))+ ','?"));
11311
1.29k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11312
1.29k
            if (_token == NULL) {
11313
0
                p->level--;
11314
0
                return NULL;
11315
0
            }
11316
1.29k
            int _end_lineno = _token->end_lineno;
11317
1.29k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11318
1.29k
            int _end_col_offset = _token->end_col_offset;
11319
1.29k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11320
1.29k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
11321
1.29k
            if (_res == NULL && PyErr_Occurred()) {
11322
0
                p->error_indicator = 1;
11323
0
                p->level--;
11324
0
                return NULL;
11325
0
            }
11326
1.29k
            goto done;
11327
1.29k
        }
11328
10.4k
        p->mark = _mark;
11329
10.4k
        D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
11330
10.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ((',' expression))+ ','?"));
11331
10.4k
    }
11332
0
    { // expression ','
11333
10.4k
        if (p->error_indicator) {
11334
6
            p->level--;
11335
6
            return NULL;
11336
6
        }
11337
10.4k
        D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ','"));
11338
10.4k
        Token * _literal;
11339
10.4k
        expr_ty a;
11340
10.4k
        if (
11341
10.4k
            (a = expression_rule(p))  // expression
11342
10.4k
            &&
11343
10.4k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
11344
10.4k
        )
11345
1.91k
        {
11346
1.91k
            D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ','"));
11347
1.91k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11348
1.91k
            if (_token == NULL) {
11349
0
                p->level--;
11350
0
                return NULL;
11351
0
            }
11352
1.91k
            int _end_lineno = _token->end_lineno;
11353
1.91k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11354
1.91k
            int _end_col_offset = _token->end_col_offset;
11355
1.91k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11356
1.91k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
11357
1.91k
            if (_res == NULL && PyErr_Occurred()) {
11358
0
                p->error_indicator = 1;
11359
0
                p->level--;
11360
0
                return NULL;
11361
0
            }
11362
1.91k
            goto done;
11363
1.91k
        }
11364
8.51k
        p->mark = _mark;
11365
8.51k
        D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
11366
8.51k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ','"));
11367
8.51k
    }
11368
0
    { // expression
11369
8.51k
        if (p->error_indicator) {
11370
0
            p->level--;
11371
0
            return NULL;
11372
0
        }
11373
8.51k
        D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
11374
8.51k
        expr_ty expression_var;
11375
8.51k
        if (
11376
8.51k
            (expression_var = expression_rule(p))  // expression
11377
8.51k
        )
11378
1.09k
        {
11379
1.09k
            D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
11380
1.09k
            _res = expression_var;
11381
1.09k
            goto done;
11382
1.09k
        }
11383
7.41k
        p->mark = _mark;
11384
7.41k
        D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
11385
7.41k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
11386
7.41k
    }
11387
0
    _res = NULL;
11388
11.7k
  done:
11389
11.7k
    p->level--;
11390
11.7k
    return _res;
11391
7.41k
}
11392
11393
// expression:
11394
//     | invalid_expression
11395
//     | invalid_legacy_expression
11396
//     | disjunction 'if' disjunction 'else' expression
11397
//     | disjunction
11398
//     | lambdef
11399
static expr_ty
11400
expression_rule(Parser *p)
11401
1.78M
{
11402
1.78M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11403
1
        _Pypegen_stack_overflow(p);
11404
1
    }
11405
1.78M
    if (p->error_indicator) {
11406
2
        p->level--;
11407
2
        return NULL;
11408
2
    }
11409
1.78M
    expr_ty _res = NULL;
11410
1.78M
    if (_PyPegen_is_memoized(p, expression_type, &_res)) {
11411
1.14M
        p->level--;
11412
1.14M
        return _res;
11413
1.14M
    }
11414
646k
    int _mark = p->mark;
11415
646k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11416
0
        p->error_indicator = 1;
11417
0
        p->level--;
11418
0
        return NULL;
11419
0
    }
11420
646k
    int _start_lineno = p->tokens[_mark]->lineno;
11421
646k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11422
646k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11423
646k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11424
646k
    if (p->call_invalid_rules) { // invalid_expression
11425
224k
        if (p->error_indicator) {
11426
0
            p->level--;
11427
0
            return NULL;
11428
0
        }
11429
224k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_expression"));
11430
224k
        void *invalid_expression_var;
11431
224k
        if (
11432
224k
            (invalid_expression_var = invalid_expression_rule(p))  // invalid_expression
11433
224k
        )
11434
0
        {
11435
0
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_expression"));
11436
0
            _res = invalid_expression_var;
11437
0
            goto done;
11438
0
        }
11439
224k
        p->mark = _mark;
11440
224k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11441
224k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_expression"));
11442
224k
    }
11443
646k
    if (p->call_invalid_rules) { // invalid_legacy_expression
11444
224k
        if (p->error_indicator) {
11445
30.1k
            p->level--;
11446
30.1k
            return NULL;
11447
30.1k
        }
11448
194k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_legacy_expression"));
11449
194k
        void *invalid_legacy_expression_var;
11450
194k
        if (
11451
194k
            (invalid_legacy_expression_var = invalid_legacy_expression_rule(p))  // invalid_legacy_expression
11452
194k
        )
11453
0
        {
11454
0
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_legacy_expression"));
11455
0
            _res = invalid_legacy_expression_var;
11456
0
            goto done;
11457
0
        }
11458
194k
        p->mark = _mark;
11459
194k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11460
194k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_legacy_expression"));
11461
194k
    }
11462
616k
    { // disjunction 'if' disjunction 'else' expression
11463
616k
        if (p->error_indicator) {
11464
1.39k
            p->level--;
11465
1.39k
            return NULL;
11466
1.39k
        }
11467
614k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
11468
614k
        Token * _keyword;
11469
614k
        Token * _keyword_1;
11470
614k
        expr_ty a;
11471
614k
        expr_ty b;
11472
614k
        expr_ty c;
11473
614k
        if (
11474
614k
            (a = disjunction_rule(p))  // disjunction
11475
614k
            &&
11476
614k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
11477
614k
            &&
11478
614k
            (b = disjunction_rule(p))  // disjunction
11479
614k
            &&
11480
614k
            (_keyword_1 = _PyPegen_expect_token(p, 691))  // token='else'
11481
614k
            &&
11482
614k
            (c = expression_rule(p))  // expression
11483
614k
        )
11484
1.15k
        {
11485
1.15k
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
11486
1.15k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11487
1.15k
            if (_token == NULL) {
11488
0
                p->level--;
11489
0
                return NULL;
11490
0
            }
11491
1.15k
            int _end_lineno = _token->end_lineno;
11492
1.15k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11493
1.15k
            int _end_col_offset = _token->end_col_offset;
11494
1.15k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11495
1.15k
            _res = _PyAST_IfExp ( b , a , c , EXTRA );
11496
1.15k
            if (_res == NULL && PyErr_Occurred()) {
11497
0
                p->error_indicator = 1;
11498
0
                p->level--;
11499
0
                return NULL;
11500
0
            }
11501
1.15k
            goto done;
11502
1.15k
        }
11503
613k
        p->mark = _mark;
11504
613k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11505
613k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
11506
613k
    }
11507
0
    { // disjunction
11508
613k
        if (p->error_indicator) {
11509
8.39k
            p->level--;
11510
8.39k
            return NULL;
11511
8.39k
        }
11512
605k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction"));
11513
605k
        expr_ty disjunction_var;
11514
605k
        if (
11515
605k
            (disjunction_var = disjunction_rule(p))  // disjunction
11516
605k
        )
11517
372k
        {
11518
372k
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction"));
11519
372k
            _res = disjunction_var;
11520
372k
            goto done;
11521
372k
        }
11522
232k
        p->mark = _mark;
11523
232k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11524
232k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction"));
11525
232k
    }
11526
0
    { // lambdef
11527
232k
        if (p->error_indicator) {
11528
0
            p->level--;
11529
0
            return NULL;
11530
0
        }
11531
232k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambdef"));
11532
232k
        expr_ty lambdef_var;
11533
232k
        if (
11534
232k
            (lambdef_var = lambdef_rule(p))  // lambdef
11535
232k
        )
11536
2.76k
        {
11537
2.76k
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambdef"));
11538
2.76k
            _res = lambdef_var;
11539
2.76k
            goto done;
11540
2.76k
        }
11541
230k
        p->mark = _mark;
11542
230k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11543
230k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambdef"));
11544
230k
    }
11545
0
    _res = NULL;
11546
606k
  done:
11547
606k
    _PyPegen_insert_memo(p, _mark, expression_type, _res);
11548
606k
    p->level--;
11549
606k
    return _res;
11550
230k
}
11551
11552
// yield_expr: 'yield' 'from' expression | 'yield' star_expressions?
11553
static expr_ty
11554
yield_expr_rule(Parser *p)
11555
127k
{
11556
127k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11557
1
        _Pypegen_stack_overflow(p);
11558
1
    }
11559
127k
    if (p->error_indicator) {
11560
1
        p->level--;
11561
1
        return NULL;
11562
1
    }
11563
127k
    expr_ty _res = NULL;
11564
127k
    int _mark = p->mark;
11565
127k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11566
54
        p->error_indicator = 1;
11567
54
        p->level--;
11568
54
        return NULL;
11569
54
    }
11570
127k
    int _start_lineno = p->tokens[_mark]->lineno;
11571
127k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11572
127k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11573
127k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11574
127k
    { // 'yield' 'from' expression
11575
127k
        if (p->error_indicator) {
11576
0
            p->level--;
11577
0
            return NULL;
11578
0
        }
11579
127k
        D(fprintf(stderr, "%*c> yield_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'yield' 'from' expression"));
11580
127k
        Token * _keyword;
11581
127k
        Token * _keyword_1;
11582
127k
        expr_ty a;
11583
127k
        if (
11584
127k
            (_keyword = _PyPegen_expect_token(p, 588))  // token='yield'
11585
127k
            &&
11586
127k
            (_keyword_1 = _PyPegen_expect_token(p, 638))  // token='from'
11587
127k
            &&
11588
127k
            (a = expression_rule(p))  // expression
11589
127k
        )
11590
298
        {
11591
298
            D(fprintf(stderr, "%*c+ yield_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'yield' 'from' expression"));
11592
298
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11593
298
            if (_token == NULL) {
11594
0
                p->level--;
11595
0
                return NULL;
11596
0
            }
11597
298
            int _end_lineno = _token->end_lineno;
11598
298
            UNUSED(_end_lineno); // Only used by EXTRA macro
11599
298
            int _end_col_offset = _token->end_col_offset;
11600
298
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11601
298
            _res = _PyAST_YieldFrom ( a , EXTRA );
11602
298
            if (_res == NULL && PyErr_Occurred()) {
11603
0
                p->error_indicator = 1;
11604
0
                p->level--;
11605
0
                return NULL;
11606
0
            }
11607
298
            goto done;
11608
298
        }
11609
127k
        p->mark = _mark;
11610
127k
        D(fprintf(stderr, "%*c%s yield_expr[%d-%d]: %s failed!\n", p->level, ' ',
11611
127k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'yield' 'from' expression"));
11612
127k
    }
11613
0
    { // 'yield' star_expressions?
11614
127k
        if (p->error_indicator) {
11615
70
            p->level--;
11616
70
            return NULL;
11617
70
        }
11618
126k
        D(fprintf(stderr, "%*c> yield_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'yield' star_expressions?"));
11619
126k
        Token * _keyword;
11620
126k
        void *a;
11621
126k
        if (
11622
126k
            (_keyword = _PyPegen_expect_token(p, 588))  // token='yield'
11623
126k
            &&
11624
126k
            (a = star_expressions_rule(p), !p->error_indicator)  // star_expressions?
11625
126k
        )
11626
2.53k
        {
11627
2.53k
            D(fprintf(stderr, "%*c+ yield_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'yield' star_expressions?"));
11628
2.53k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11629
2.53k
            if (_token == NULL) {
11630
0
                p->level--;
11631
0
                return NULL;
11632
0
            }
11633
2.53k
            int _end_lineno = _token->end_lineno;
11634
2.53k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11635
2.53k
            int _end_col_offset = _token->end_col_offset;
11636
2.53k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11637
2.53k
            _res = _PyAST_Yield ( a , EXTRA );
11638
2.53k
            if (_res == NULL && PyErr_Occurred()) {
11639
0
                p->error_indicator = 1;
11640
0
                p->level--;
11641
0
                return NULL;
11642
0
            }
11643
2.53k
            goto done;
11644
2.53k
        }
11645
124k
        p->mark = _mark;
11646
124k
        D(fprintf(stderr, "%*c%s yield_expr[%d-%d]: %s failed!\n", p->level, ' ',
11647
124k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'yield' star_expressions?"));
11648
124k
    }
11649
0
    _res = NULL;
11650
127k
  done:
11651
127k
    p->level--;
11652
127k
    return _res;
11653
124k
}
11654
11655
// star_expressions:
11656
//     | star_expression ((',' star_expression))+ ','?
11657
//     | star_expression ','
11658
//     | star_expression
11659
static expr_ty
11660
star_expressions_rule(Parser *p)
11661
369k
{
11662
369k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11663
1
        _Pypegen_stack_overflow(p);
11664
1
    }
11665
369k
    if (p->error_indicator) {
11666
1
        p->level--;
11667
1
        return NULL;
11668
1
    }
11669
369k
    expr_ty _res = NULL;
11670
369k
    int _mark = p->mark;
11671
369k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11672
7
        p->error_indicator = 1;
11673
7
        p->level--;
11674
7
        return NULL;
11675
7
    }
11676
369k
    int _start_lineno = p->tokens[_mark]->lineno;
11677
369k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11678
369k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11679
369k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11680
369k
    { // star_expression ((',' star_expression))+ ','?
11681
369k
        if (p->error_indicator) {
11682
0
            p->level--;
11683
0
            return NULL;
11684
0
        }
11685
369k
        D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
11686
369k
        void *_opt_var;
11687
369k
        UNUSED(_opt_var); // Silence compiler warnings
11688
369k
        expr_ty a;
11689
369k
        asdl_seq * b;
11690
369k
        if (
11691
369k
            (a = star_expression_rule(p))  // star_expression
11692
369k
            &&
11693
369k
            (b = _loop1_56_rule(p))  // ((',' star_expression))+
11694
369k
            &&
11695
369k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
11696
369k
        )
11697
5.78k
        {
11698
5.78k
            D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
11699
5.78k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11700
5.78k
            if (_token == NULL) {
11701
0
                p->level--;
11702
0
                return NULL;
11703
0
            }
11704
5.78k
            int _end_lineno = _token->end_lineno;
11705
5.78k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11706
5.78k
            int _end_col_offset = _token->end_col_offset;
11707
5.78k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11708
5.78k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
11709
5.78k
            if (_res == NULL && PyErr_Occurred()) {
11710
0
                p->error_indicator = 1;
11711
0
                p->level--;
11712
0
                return NULL;
11713
0
            }
11714
5.78k
            goto done;
11715
5.78k
        }
11716
363k
        p->mark = _mark;
11717
363k
        D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
11718
363k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
11719
363k
    }
11720
0
    { // star_expression ','
11721
363k
        if (p->error_indicator) {
11722
5.63k
            p->level--;
11723
5.63k
            return NULL;
11724
5.63k
        }
11725
358k
        D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression ','"));
11726
358k
        Token * _literal;
11727
358k
        expr_ty a;
11728
358k
        if (
11729
358k
            (a = star_expression_rule(p))  // star_expression
11730
358k
            &&
11731
358k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
11732
358k
        )
11733
11.3k
        {
11734
11.3k
            D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression ','"));
11735
11.3k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11736
11.3k
            if (_token == NULL) {
11737
0
                p->level--;
11738
0
                return NULL;
11739
0
            }
11740
11.3k
            int _end_lineno = _token->end_lineno;
11741
11.3k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11742
11.3k
            int _end_col_offset = _token->end_col_offset;
11743
11.3k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11744
11.3k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
11745
11.3k
            if (_res == NULL && PyErr_Occurred()) {
11746
0
                p->error_indicator = 1;
11747
0
                p->level--;
11748
0
                return NULL;
11749
0
            }
11750
11.3k
            goto done;
11751
11.3k
        }
11752
346k
        p->mark = _mark;
11753
346k
        D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
11754
346k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression ','"));
11755
346k
    }
11756
0
    { // star_expression
11757
346k
        if (p->error_indicator) {
11758
0
            p->level--;
11759
0
            return NULL;
11760
0
        }
11761
346k
        D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression"));
11762
346k
        expr_ty star_expression_var;
11763
346k
        if (
11764
346k
            (star_expression_var = star_expression_rule(p))  // star_expression
11765
346k
        )
11766
198k
        {
11767
198k
            D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression"));
11768
198k
            _res = star_expression_var;
11769
198k
            goto done;
11770
198k
        }
11771
148k
        p->mark = _mark;
11772
148k
        D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
11773
148k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression"));
11774
148k
    }
11775
0
    _res = NULL;
11776
363k
  done:
11777
363k
    p->level--;
11778
363k
    return _res;
11779
148k
}
11780
11781
// star_expression: '*' bitwise_or | expression
11782
static expr_ty
11783
star_expression_rule(Parser *p)
11784
1.10M
{
11785
1.10M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11786
1
        _Pypegen_stack_overflow(p);
11787
1
    }
11788
1.10M
    if (p->error_indicator) {
11789
1
        p->level--;
11790
1
        return NULL;
11791
1
    }
11792
1.10M
    expr_ty _res = NULL;
11793
1.10M
    if (_PyPegen_is_memoized(p, star_expression_type, &_res)) {
11794
796k
        p->level--;
11795
796k
        return _res;
11796
796k
    }
11797
307k
    int _mark = p->mark;
11798
307k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11799
0
        p->error_indicator = 1;
11800
0
        p->level--;
11801
0
        return NULL;
11802
0
    }
11803
307k
    int _start_lineno = p->tokens[_mark]->lineno;
11804
307k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11805
307k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11806
307k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11807
307k
    { // '*' bitwise_or
11808
307k
        if (p->error_indicator) {
11809
0
            p->level--;
11810
0
            return NULL;
11811
0
        }
11812
307k
        D(fprintf(stderr, "%*c> star_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
11813
307k
        Token * _literal;
11814
307k
        expr_ty a;
11815
307k
        if (
11816
307k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
11817
307k
            &&
11818
307k
            (a = bitwise_or_rule(p))  // bitwise_or
11819
307k
        )
11820
2.75k
        {
11821
2.75k
            D(fprintf(stderr, "%*c+ star_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
11822
2.75k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11823
2.75k
            if (_token == NULL) {
11824
0
                p->level--;
11825
0
                return NULL;
11826
0
            }
11827
2.75k
            int _end_lineno = _token->end_lineno;
11828
2.75k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11829
2.75k
            int _end_col_offset = _token->end_col_offset;
11830
2.75k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11831
2.75k
            _res = _PyAST_Starred ( a , Load , EXTRA );
11832
2.75k
            if (_res == NULL && PyErr_Occurred()) {
11833
0
                p->error_indicator = 1;
11834
0
                p->level--;
11835
0
                return NULL;
11836
0
            }
11837
2.75k
            goto done;
11838
2.75k
        }
11839
304k
        p->mark = _mark;
11840
304k
        D(fprintf(stderr, "%*c%s star_expression[%d-%d]: %s failed!\n", p->level, ' ',
11841
304k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' bitwise_or"));
11842
304k
    }
11843
0
    { // expression
11844
304k
        if (p->error_indicator) {
11845
343
            p->level--;
11846
343
            return NULL;
11847
343
        }
11848
304k
        D(fprintf(stderr, "%*c> star_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
11849
304k
        expr_ty expression_var;
11850
304k
        if (
11851
304k
            (expression_var = expression_rule(p))  // expression
11852
304k
        )
11853
164k
        {
11854
164k
            D(fprintf(stderr, "%*c+ star_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
11855
164k
            _res = expression_var;
11856
164k
            goto done;
11857
164k
        }
11858
139k
        p->mark = _mark;
11859
139k
        D(fprintf(stderr, "%*c%s star_expression[%d-%d]: %s failed!\n", p->level, ' ',
11860
139k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
11861
139k
    }
11862
0
    _res = NULL;
11863
307k
  done:
11864
307k
    _PyPegen_insert_memo(p, _mark, star_expression_type, _res);
11865
307k
    p->level--;
11866
307k
    return _res;
11867
139k
}
11868
11869
// star_named_expressions: ','.star_named_expression+ ','?
11870
static asdl_expr_seq*
11871
star_named_expressions_rule(Parser *p)
11872
104k
{
11873
104k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11874
1
        _Pypegen_stack_overflow(p);
11875
1
    }
11876
104k
    if (p->error_indicator) {
11877
1
        p->level--;
11878
1
        return NULL;
11879
1
    }
11880
104k
    asdl_expr_seq* _res = NULL;
11881
104k
    int _mark = p->mark;
11882
104k
    { // ','.star_named_expression+ ','?
11883
104k
        if (p->error_indicator) {
11884
0
            p->level--;
11885
0
            return NULL;
11886
0
        }
11887
104k
        D(fprintf(stderr, "%*c> star_named_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.star_named_expression+ ','?"));
11888
104k
        void *_opt_var;
11889
104k
        UNUSED(_opt_var); // Silence compiler warnings
11890
104k
        asdl_expr_seq* a;
11891
104k
        if (
11892
104k
            (a = (asdl_expr_seq*)_gather_58_rule(p))  // ','.star_named_expression+
11893
104k
            &&
11894
104k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
11895
104k
        )
11896
41.8k
        {
11897
41.8k
            D(fprintf(stderr, "%*c+ star_named_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_named_expression+ ','?"));
11898
41.8k
            _res = a;
11899
41.8k
            if (_res == NULL && PyErr_Occurred()) {
11900
0
                p->error_indicator = 1;
11901
0
                p->level--;
11902
0
                return NULL;
11903
0
            }
11904
41.8k
            goto done;
11905
41.8k
        }
11906
63.0k
        p->mark = _mark;
11907
63.0k
        D(fprintf(stderr, "%*c%s star_named_expressions[%d-%d]: %s failed!\n", p->level, ' ',
11908
63.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.star_named_expression+ ','?"));
11909
63.0k
    }
11910
0
    _res = NULL;
11911
104k
  done:
11912
104k
    p->level--;
11913
104k
    return _res;
11914
63.0k
}
11915
11916
// star_named_expression: '*' bitwise_or | named_expression
11917
static expr_ty
11918
star_named_expression_rule(Parser *p)
11919
357k
{
11920
357k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11921
1
        _Pypegen_stack_overflow(p);
11922
1
    }
11923
357k
    if (p->error_indicator) {
11924
1
        p->level--;
11925
1
        return NULL;
11926
1
    }
11927
357k
    expr_ty _res = NULL;
11928
357k
    int _mark = p->mark;
11929
357k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11930
165
        p->error_indicator = 1;
11931
165
        p->level--;
11932
165
        return NULL;
11933
165
    }
11934
357k
    int _start_lineno = p->tokens[_mark]->lineno;
11935
357k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11936
357k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11937
357k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11938
357k
    { // '*' bitwise_or
11939
357k
        if (p->error_indicator) {
11940
0
            p->level--;
11941
0
            return NULL;
11942
0
        }
11943
357k
        D(fprintf(stderr, "%*c> star_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
11944
357k
        Token * _literal;
11945
357k
        expr_ty a;
11946
357k
        if (
11947
357k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
11948
357k
            &&
11949
357k
            (a = bitwise_or_rule(p))  // bitwise_or
11950
357k
        )
11951
3.70k
        {
11952
3.70k
            D(fprintf(stderr, "%*c+ star_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
11953
3.70k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11954
3.70k
            if (_token == NULL) {
11955
0
                p->level--;
11956
0
                return NULL;
11957
0
            }
11958
3.70k
            int _end_lineno = _token->end_lineno;
11959
3.70k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11960
3.70k
            int _end_col_offset = _token->end_col_offset;
11961
3.70k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11962
3.70k
            _res = _PyAST_Starred ( a , Load , EXTRA );
11963
3.70k
            if (_res == NULL && PyErr_Occurred()) {
11964
0
                p->error_indicator = 1;
11965
0
                p->level--;
11966
0
                return NULL;
11967
0
            }
11968
3.70k
            goto done;
11969
3.70k
        }
11970
353k
        p->mark = _mark;
11971
353k
        D(fprintf(stderr, "%*c%s star_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
11972
353k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' bitwise_or"));
11973
353k
    }
11974
0
    { // named_expression
11975
353k
        if (p->error_indicator) {
11976
692
            p->level--;
11977
692
            return NULL;
11978
692
        }
11979
352k
        D(fprintf(stderr, "%*c> star_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
11980
352k
        expr_ty named_expression_var;
11981
352k
        if (
11982
352k
            (named_expression_var = named_expression_rule(p))  // named_expression
11983
352k
        )
11984
185k
        {
11985
185k
            D(fprintf(stderr, "%*c+ star_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
11986
185k
            _res = named_expression_var;
11987
185k
            goto done;
11988
185k
        }
11989
167k
        p->mark = _mark;
11990
167k
        D(fprintf(stderr, "%*c%s star_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
11991
167k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
11992
167k
    }
11993
0
    _res = NULL;
11994
356k
  done:
11995
356k
    p->level--;
11996
356k
    return _res;
11997
167k
}
11998
11999
// assignment_expression: NAME ':=' ~ expression
12000
static expr_ty
12001
assignment_expression_rule(Parser *p)
12002
670k
{
12003
670k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12004
1
        _Pypegen_stack_overflow(p);
12005
1
    }
12006
670k
    if (p->error_indicator) {
12007
1
        p->level--;
12008
1
        return NULL;
12009
1
    }
12010
670k
    expr_ty _res = NULL;
12011
670k
    int _mark = p->mark;
12012
670k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12013
85
        p->error_indicator = 1;
12014
85
        p->level--;
12015
85
        return NULL;
12016
85
    }
12017
670k
    int _start_lineno = p->tokens[_mark]->lineno;
12018
670k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12019
670k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12020
670k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12021
670k
    { // NAME ':=' ~ expression
12022
670k
        if (p->error_indicator) {
12023
0
            p->level--;
12024
0
            return NULL;
12025
0
        }
12026
670k
        D(fprintf(stderr, "%*c> assignment_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ':=' ~ expression"));
12027
670k
        int _cut_var = 0;
12028
670k
        Token * _literal;
12029
670k
        expr_ty a;
12030
670k
        expr_ty b;
12031
670k
        if (
12032
670k
            (a = _PyPegen_name_token(p))  // NAME
12033
670k
            &&
12034
670k
            (_literal = _PyPegen_expect_token(p, 53))  // token=':='
12035
670k
            &&
12036
670k
            (_cut_var = 1)
12037
670k
            &&
12038
670k
            (b = expression_rule(p))  // expression
12039
670k
        )
12040
1.19k
        {
12041
1.19k
            D(fprintf(stderr, "%*c+ assignment_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ':=' ~ expression"));
12042
1.19k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12043
1.19k
            if (_token == NULL) {
12044
0
                p->level--;
12045
0
                return NULL;
12046
0
            }
12047
1.19k
            int _end_lineno = _token->end_lineno;
12048
1.19k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12049
1.19k
            int _end_col_offset = _token->end_col_offset;
12050
1.19k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12051
1.19k
            _res = CHECK_VERSION ( expr_ty , 8 , "Assignment expressions are" , _PyAST_NamedExpr ( CHECK ( expr_ty , _PyPegen_set_expr_context ( p , a , Store ) ) , b , EXTRA ) );
12052
1.19k
            if (_res == NULL && PyErr_Occurred()) {
12053
0
                p->error_indicator = 1;
12054
0
                p->level--;
12055
0
                return NULL;
12056
0
            }
12057
1.19k
            goto done;
12058
1.19k
        }
12059
669k
        p->mark = _mark;
12060
669k
        D(fprintf(stderr, "%*c%s assignment_expression[%d-%d]: %s failed!\n", p->level, ' ',
12061
669k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ':=' ~ expression"));
12062
669k
        if (_cut_var) {
12063
3.63k
            p->level--;
12064
3.63k
            return NULL;
12065
3.63k
        }
12066
669k
    }
12067
665k
    _res = NULL;
12068
666k
  done:
12069
666k
    p->level--;
12070
666k
    return _res;
12071
665k
}
12072
12073
// named_expression: assignment_expression | invalid_named_expression | expression !':='
12074
static expr_ty
12075
named_expression_rule(Parser *p)
12076
486k
{
12077
486k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12078
1
        _Pypegen_stack_overflow(p);
12079
1
    }
12080
486k
    if (p->error_indicator) {
12081
1
        p->level--;
12082
1
        return NULL;
12083
1
    }
12084
486k
    expr_ty _res = NULL;
12085
486k
    int _mark = p->mark;
12086
486k
    { // assignment_expression
12087
486k
        if (p->error_indicator) {
12088
0
            p->level--;
12089
0
            return NULL;
12090
0
        }
12091
486k
        D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
12092
486k
        expr_ty assignment_expression_var;
12093
486k
        if (
12094
486k
            (assignment_expression_var = assignment_expression_rule(p))  // assignment_expression
12095
486k
        )
12096
676
        {
12097
676
            D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
12098
676
            _res = assignment_expression_var;
12099
676
            goto done;
12100
676
        }
12101
485k
        p->mark = _mark;
12102
485k
        D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
12103
485k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression"));
12104
485k
    }
12105
485k
    if (p->call_invalid_rules) { // invalid_named_expression
12106
259k
        if (p->error_indicator) {
12107
219
            p->level--;
12108
219
            return NULL;
12109
219
        }
12110
259k
        D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_named_expression"));
12111
259k
        void *invalid_named_expression_var;
12112
259k
        if (
12113
259k
            (invalid_named_expression_var = invalid_named_expression_rule(p))  // invalid_named_expression
12114
259k
        )
12115
0
        {
12116
0
            D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_named_expression"));
12117
0
            _res = invalid_named_expression_var;
12118
0
            goto done;
12119
0
        }
12120
259k
        p->mark = _mark;
12121
259k
        D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
12122
259k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_named_expression"));
12123
259k
    }
12124
485k
    { // expression !':='
12125
485k
        if (p->error_indicator) {
12126
15.8k
            p->level--;
12127
15.8k
            return NULL;
12128
15.8k
        }
12129
469k
        D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
12130
469k
        expr_ty expression_var;
12131
469k
        if (
12132
469k
            (expression_var = expression_rule(p))  // expression
12133
469k
            &&
12134
469k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53)  // token=':='
12135
469k
        )
12136
270k
        {
12137
270k
            D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='"));
12138
270k
            _res = expression_var;
12139
270k
            goto done;
12140
270k
        }
12141
199k
        p->mark = _mark;
12142
199k
        D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
12143
199k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
12144
199k
    }
12145
0
    _res = NULL;
12146
470k
  done:
12147
470k
    p->level--;
12148
470k
    return _res;
12149
199k
}
12150
12151
// disjunction: conjunction (('or' conjunction))+ | conjunction
12152
static expr_ty
12153
disjunction_rule(Parser *p)
12154
2.03M
{
12155
2.03M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12156
1
        _Pypegen_stack_overflow(p);
12157
1
    }
12158
2.03M
    if (p->error_indicator) {
12159
25
        p->level--;
12160
25
        return NULL;
12161
25
    }
12162
2.03M
    expr_ty _res = NULL;
12163
2.03M
    if (_PyPegen_is_memoized(p, disjunction_type, &_res)) {
12164
1.34M
        p->level--;
12165
1.34M
        return _res;
12166
1.34M
    }
12167
694k
    int _mark = p->mark;
12168
694k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12169
0
        p->error_indicator = 1;
12170
0
        p->level--;
12171
0
        return NULL;
12172
0
    }
12173
694k
    int _start_lineno = p->tokens[_mark]->lineno;
12174
694k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12175
694k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12176
694k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12177
694k
    { // conjunction (('or' conjunction))+
12178
694k
        if (p->error_indicator) {
12179
0
            p->level--;
12180
0
            return NULL;
12181
0
        }
12182
694k
        D(fprintf(stderr, "%*c> disjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "conjunction (('or' conjunction))+"));
12183
694k
        expr_ty a;
12184
694k
        asdl_seq * b;
12185
694k
        if (
12186
694k
            (a = conjunction_rule(p))  // conjunction
12187
694k
            &&
12188
694k
            (b = _loop1_59_rule(p))  // (('or' conjunction))+
12189
694k
        )
12190
1.55k
        {
12191
1.55k
            D(fprintf(stderr, "%*c+ disjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "conjunction (('or' conjunction))+"));
12192
1.55k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12193
1.55k
            if (_token == NULL) {
12194
0
                p->level--;
12195
0
                return NULL;
12196
0
            }
12197
1.55k
            int _end_lineno = _token->end_lineno;
12198
1.55k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12199
1.55k
            int _end_col_offset = _token->end_col_offset;
12200
1.55k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12201
1.55k
            _res = _PyAST_BoolOp ( Or , CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
12202
1.55k
            if (_res == NULL && PyErr_Occurred()) {
12203
0
                p->error_indicator = 1;
12204
0
                p->level--;
12205
0
                return NULL;
12206
0
            }
12207
1.55k
            goto done;
12208
1.55k
        }
12209
693k
        p->mark = _mark;
12210
693k
        D(fprintf(stderr, "%*c%s disjunction[%d-%d]: %s failed!\n", p->level, ' ',
12211
693k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "conjunction (('or' conjunction))+"));
12212
693k
    }
12213
0
    { // conjunction
12214
693k
        if (p->error_indicator) {
12215
36.2k
            p->level--;
12216
36.2k
            return NULL;
12217
36.2k
        }
12218
656k
        D(fprintf(stderr, "%*c> disjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "conjunction"));
12219
656k
        expr_ty conjunction_var;
12220
656k
        if (
12221
656k
            (conjunction_var = conjunction_rule(p))  // conjunction
12222
656k
        )
12223
387k
        {
12224
387k
            D(fprintf(stderr, "%*c+ disjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "conjunction"));
12225
387k
            _res = conjunction_var;
12226
387k
            goto done;
12227
387k
        }
12228
269k
        p->mark = _mark;
12229
269k
        D(fprintf(stderr, "%*c%s disjunction[%d-%d]: %s failed!\n", p->level, ' ',
12230
269k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "conjunction"));
12231
269k
    }
12232
0
    _res = NULL;
12233
658k
  done:
12234
658k
    _PyPegen_insert_memo(p, _mark, disjunction_type, _res);
12235
658k
    p->level--;
12236
658k
    return _res;
12237
269k
}
12238
12239
// conjunction: inversion (('and' inversion))+ | inversion
12240
static expr_ty
12241
conjunction_rule(Parser *p)
12242
1.35M
{
12243
1.35M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12244
2
        _Pypegen_stack_overflow(p);
12245
2
    }
12246
1.35M
    if (p->error_indicator) {
12247
2
        p->level--;
12248
2
        return NULL;
12249
2
    }
12250
1.35M
    expr_ty _res = NULL;
12251
1.35M
    if (_PyPegen_is_memoized(p, conjunction_type, &_res)) {
12252
657k
        p->level--;
12253
657k
        return _res;
12254
657k
    }
12255
698k
    int _mark = p->mark;
12256
698k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12257
0
        p->error_indicator = 1;
12258
0
        p->level--;
12259
0
        return NULL;
12260
0
    }
12261
698k
    int _start_lineno = p->tokens[_mark]->lineno;
12262
698k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12263
698k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12264
698k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12265
698k
    { // inversion (('and' inversion))+
12266
698k
        if (p->error_indicator) {
12267
0
            p->level--;
12268
0
            return NULL;
12269
0
        }
12270
698k
        D(fprintf(stderr, "%*c> conjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "inversion (('and' inversion))+"));
12271
698k
        expr_ty a;
12272
698k
        asdl_seq * b;
12273
698k
        if (
12274
698k
            (a = inversion_rule(p))  // inversion
12275
698k
            &&
12276
698k
            (b = _loop1_60_rule(p))  // (('and' inversion))+
12277
698k
        )
12278
1.48k
        {
12279
1.48k
            D(fprintf(stderr, "%*c+ conjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "inversion (('and' inversion))+"));
12280
1.48k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12281
1.48k
            if (_token == NULL) {
12282
0
                p->level--;
12283
0
                return NULL;
12284
0
            }
12285
1.48k
            int _end_lineno = _token->end_lineno;
12286
1.48k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12287
1.48k
            int _end_col_offset = _token->end_col_offset;
12288
1.48k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12289
1.48k
            _res = _PyAST_BoolOp ( And , CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
12290
1.48k
            if (_res == NULL && PyErr_Occurred()) {
12291
0
                p->error_indicator = 1;
12292
0
                p->level--;
12293
0
                return NULL;
12294
0
            }
12295
1.48k
            goto done;
12296
1.48k
        }
12297
697k
        p->mark = _mark;
12298
697k
        D(fprintf(stderr, "%*c%s conjunction[%d-%d]: %s failed!\n", p->level, ' ',
12299
697k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "inversion (('and' inversion))+"));
12300
697k
    }
12301
0
    { // inversion
12302
697k
        if (p->error_indicator) {
12303
36.2k
            p->level--;
12304
36.2k
            return NULL;
12305
36.2k
        }
12306
661k
        D(fprintf(stderr, "%*c> conjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "inversion"));
12307
661k
        expr_ty inversion_var;
12308
661k
        if (
12309
661k
            (inversion_var = inversion_rule(p))  // inversion
12310
661k
        )
12311
391k
        {
12312
391k
            D(fprintf(stderr, "%*c+ conjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "inversion"));
12313
391k
            _res = inversion_var;
12314
391k
            goto done;
12315
391k
        }
12316
269k
        p->mark = _mark;
12317
269k
        D(fprintf(stderr, "%*c%s conjunction[%d-%d]: %s failed!\n", p->level, ' ',
12318
269k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "inversion"));
12319
269k
    }
12320
0
    _res = NULL;
12321
662k
  done:
12322
662k
    _PyPegen_insert_memo(p, _mark, conjunction_type, _res);
12323
662k
    p->level--;
12324
662k
    return _res;
12325
269k
}
12326
12327
// inversion: 'not' inversion | comparison
12328
static expr_ty
12329
inversion_rule(Parser *p)
12330
1.36M
{
12331
1.36M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12332
1
        _Pypegen_stack_overflow(p);
12333
1
    }
12334
1.36M
    if (p->error_indicator) {
12335
1
        p->level--;
12336
1
        return NULL;
12337
1
    }
12338
1.36M
    expr_ty _res = NULL;
12339
1.36M
    if (_PyPegen_is_memoized(p, inversion_type, &_res)) {
12340
661k
        p->level--;
12341
661k
        return _res;
12342
661k
    }
12343
703k
    int _mark = p->mark;
12344
703k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12345
0
        p->error_indicator = 1;
12346
0
        p->level--;
12347
0
        return NULL;
12348
0
    }
12349
703k
    int _start_lineno = p->tokens[_mark]->lineno;
12350
703k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12351
703k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12352
703k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12353
703k
    { // 'not' inversion
12354
703k
        if (p->error_indicator) {
12355
0
            p->level--;
12356
0
            return NULL;
12357
0
        }
12358
703k
        D(fprintf(stderr, "%*c> inversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'not' inversion"));
12359
703k
        Token * _keyword;
12360
703k
        expr_ty a;
12361
703k
        if (
12362
703k
            (_keyword = _PyPegen_expect_token(p, 708))  // token='not'
12363
703k
            &&
12364
703k
            (a = inversion_rule(p))  // inversion
12365
703k
        )
12366
1.72k
        {
12367
1.72k
            D(fprintf(stderr, "%*c+ inversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'not' inversion"));
12368
1.72k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12369
1.72k
            if (_token == NULL) {
12370
0
                p->level--;
12371
0
                return NULL;
12372
0
            }
12373
1.72k
            int _end_lineno = _token->end_lineno;
12374
1.72k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12375
1.72k
            int _end_col_offset = _token->end_col_offset;
12376
1.72k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12377
1.72k
            _res = _PyAST_UnaryOp ( Not , a , EXTRA );
12378
1.72k
            if (_res == NULL && PyErr_Occurred()) {
12379
0
                p->error_indicator = 1;
12380
0
                p->level--;
12381
0
                return NULL;
12382
0
            }
12383
1.72k
            goto done;
12384
1.72k
        }
12385
702k
        p->mark = _mark;
12386
702k
        D(fprintf(stderr, "%*c%s inversion[%d-%d]: %s failed!\n", p->level, ' ',
12387
702k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'not' inversion"));
12388
702k
    }
12389
0
    { // comparison
12390
702k
        if (p->error_indicator) {
12391
281
            p->level--;
12392
281
            return NULL;
12393
281
        }
12394
701k
        D(fprintf(stderr, "%*c> inversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "comparison"));
12395
701k
        expr_ty comparison_var;
12396
701k
        if (
12397
701k
            (comparison_var = comparison_rule(p))  // comparison
12398
701k
        )
12399
395k
        {
12400
395k
            D(fprintf(stderr, "%*c+ inversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "comparison"));
12401
395k
            _res = comparison_var;
12402
395k
            goto done;
12403
395k
        }
12404
306k
        p->mark = _mark;
12405
306k
        D(fprintf(stderr, "%*c%s inversion[%d-%d]: %s failed!\n", p->level, ' ',
12406
306k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "comparison"));
12407
306k
    }
12408
0
    _res = NULL;
12409
703k
  done:
12410
703k
    _PyPegen_insert_memo(p, _mark, inversion_type, _res);
12411
703k
    p->level--;
12412
703k
    return _res;
12413
306k
}
12414
12415
// comparison: bitwise_or compare_op_bitwise_or_pair+ | bitwise_or
12416
static expr_ty
12417
comparison_rule(Parser *p)
12418
701k
{
12419
701k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12420
1
        _Pypegen_stack_overflow(p);
12421
1
    }
12422
701k
    if (p->error_indicator) {
12423
1
        p->level--;
12424
1
        return NULL;
12425
1
    }
12426
701k
    expr_ty _res = NULL;
12427
701k
    int _mark = p->mark;
12428
701k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12429
0
        p->error_indicator = 1;
12430
0
        p->level--;
12431
0
        return NULL;
12432
0
    }
12433
701k
    int _start_lineno = p->tokens[_mark]->lineno;
12434
701k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12435
701k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12436
701k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12437
701k
    { // bitwise_or compare_op_bitwise_or_pair+
12438
701k
        if (p->error_indicator) {
12439
0
            p->level--;
12440
0
            return NULL;
12441
0
        }
12442
701k
        D(fprintf(stderr, "%*c> comparison[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
12443
701k
        expr_ty a;
12444
701k
        asdl_seq * b;
12445
701k
        if (
12446
701k
            (a = bitwise_or_rule(p))  // bitwise_or
12447
701k
            &&
12448
701k
            (b = _loop1_61_rule(p))  // compare_op_bitwise_or_pair+
12449
701k
        )
12450
10.2k
        {
12451
10.2k
            D(fprintf(stderr, "%*c+ comparison[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
12452
10.2k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12453
10.2k
            if (_token == NULL) {
12454
0
                p->level--;
12455
0
                return NULL;
12456
0
            }
12457
10.2k
            int _end_lineno = _token->end_lineno;
12458
10.2k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12459
10.2k
            int _end_col_offset = _token->end_col_offset;
12460
10.2k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12461
10.2k
            _res = _PyAST_Compare ( a , CHECK ( asdl_int_seq* , _PyPegen_get_cmpops ( p , b ) ) , CHECK ( asdl_expr_seq* , _PyPegen_get_exprs ( p , b ) ) , EXTRA );
12462
10.2k
            if (_res == NULL && PyErr_Occurred()) {
12463
0
                p->error_indicator = 1;
12464
0
                p->level--;
12465
0
                return NULL;
12466
0
            }
12467
10.2k
            goto done;
12468
10.2k
        }
12469
691k
        p->mark = _mark;
12470
691k
        D(fprintf(stderr, "%*c%s comparison[%d-%d]: %s failed!\n", p->level, ' ',
12471
691k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
12472
691k
    }
12473
0
    { // bitwise_or
12474
691k
        if (p->error_indicator) {
12475
36.2k
            p->level--;
12476
36.2k
            return NULL;
12477
36.2k
        }
12478
655k
        D(fprintf(stderr, "%*c> comparison[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or"));
12479
655k
        expr_ty bitwise_or_var;
12480
655k
        if (
12481
655k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
12482
655k
        )
12483
385k
        {
12484
385k
            D(fprintf(stderr, "%*c+ comparison[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or"));
12485
385k
            _res = bitwise_or_var;
12486
385k
            goto done;
12487
385k
        }
12488
270k
        p->mark = _mark;
12489
270k
        D(fprintf(stderr, "%*c%s comparison[%d-%d]: %s failed!\n", p->level, ' ',
12490
270k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or"));
12491
270k
    }
12492
0
    _res = NULL;
12493
665k
  done:
12494
665k
    p->level--;
12495
665k
    return _res;
12496
270k
}
12497
12498
// compare_op_bitwise_or_pair:
12499
//     | eq_bitwise_or
12500
//     | noteq_bitwise_or
12501
//     | lte_bitwise_or
12502
//     | lt_bitwise_or
12503
//     | gte_bitwise_or
12504
//     | gt_bitwise_or
12505
//     | notin_bitwise_or
12506
//     | in_bitwise_or
12507
//     | isnot_bitwise_or
12508
//     | is_bitwise_or
12509
static CmpopExprPair*
12510
compare_op_bitwise_or_pair_rule(Parser *p)
12511
422k
{
12512
422k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12513
0
        _Pypegen_stack_overflow(p);
12514
0
    }
12515
422k
    if (p->error_indicator) {
12516
0
        p->level--;
12517
0
        return NULL;
12518
0
    }
12519
422k
    CmpopExprPair* _res = NULL;
12520
422k
    int _mark = p->mark;
12521
422k
    { // eq_bitwise_or
12522
422k
        if (p->error_indicator) {
12523
0
            p->level--;
12524
0
            return NULL;
12525
0
        }
12526
422k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "eq_bitwise_or"));
12527
422k
        CmpopExprPair* eq_bitwise_or_var;
12528
422k
        if (
12529
422k
            (eq_bitwise_or_var = eq_bitwise_or_rule(p))  // eq_bitwise_or
12530
422k
        )
12531
2.07k
        {
12532
2.07k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "eq_bitwise_or"));
12533
2.07k
            _res = eq_bitwise_or_var;
12534
2.07k
            goto done;
12535
2.07k
        }
12536
419k
        p->mark = _mark;
12537
419k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12538
419k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "eq_bitwise_or"));
12539
419k
    }
12540
0
    { // noteq_bitwise_or
12541
419k
        if (p->error_indicator) {
12542
70
            p->level--;
12543
70
            return NULL;
12544
70
        }
12545
419k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "noteq_bitwise_or"));
12546
419k
        CmpopExprPair* noteq_bitwise_or_var;
12547
419k
        if (
12548
419k
            (noteq_bitwise_or_var = noteq_bitwise_or_rule(p))  // noteq_bitwise_or
12549
419k
        )
12550
744
        {
12551
744
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "noteq_bitwise_or"));
12552
744
            _res = noteq_bitwise_or_var;
12553
744
            goto done;
12554
744
        }
12555
419k
        p->mark = _mark;
12556
419k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12557
419k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "noteq_bitwise_or"));
12558
419k
    }
12559
0
    { // lte_bitwise_or
12560
419k
        if (p->error_indicator) {
12561
196
            p->level--;
12562
196
            return NULL;
12563
196
        }
12564
418k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lte_bitwise_or"));
12565
418k
        CmpopExprPair* lte_bitwise_or_var;
12566
418k
        if (
12567
418k
            (lte_bitwise_or_var = lte_bitwise_or_rule(p))  // lte_bitwise_or
12568
418k
        )
12569
603
        {
12570
603
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lte_bitwise_or"));
12571
603
            _res = lte_bitwise_or_var;
12572
603
            goto done;
12573
603
        }
12574
418k
        p->mark = _mark;
12575
418k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12576
418k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lte_bitwise_or"));
12577
418k
    }
12578
0
    { // lt_bitwise_or
12579
418k
        if (p->error_indicator) {
12580
198
            p->level--;
12581
198
            return NULL;
12582
198
        }
12583
418k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lt_bitwise_or"));
12584
418k
        CmpopExprPair* lt_bitwise_or_var;
12585
418k
        if (
12586
418k
            (lt_bitwise_or_var = lt_bitwise_or_rule(p))  // lt_bitwise_or
12587
418k
        )
12588
7.22k
        {
12589
7.22k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lt_bitwise_or"));
12590
7.22k
            _res = lt_bitwise_or_var;
12591
7.22k
            goto done;
12592
7.22k
        }
12593
410k
        p->mark = _mark;
12594
410k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12595
410k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lt_bitwise_or"));
12596
410k
    }
12597
0
    { // gte_bitwise_or
12598
410k
        if (p->error_indicator) {
12599
249
            p->level--;
12600
249
            return NULL;
12601
249
        }
12602
410k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "gte_bitwise_or"));
12603
410k
        CmpopExprPair* gte_bitwise_or_var;
12604
410k
        if (
12605
410k
            (gte_bitwise_or_var = gte_bitwise_or_rule(p))  // gte_bitwise_or
12606
410k
        )
12607
852
        {
12608
852
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "gte_bitwise_or"));
12609
852
            _res = gte_bitwise_or_var;
12610
852
            goto done;
12611
852
        }
12612
409k
        p->mark = _mark;
12613
409k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12614
409k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "gte_bitwise_or"));
12615
409k
    }
12616
0
    { // gt_bitwise_or
12617
409k
        if (p->error_indicator) {
12618
195
            p->level--;
12619
195
            return NULL;
12620
195
        }
12621
409k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "gt_bitwise_or"));
12622
409k
        CmpopExprPair* gt_bitwise_or_var;
12623
409k
        if (
12624
409k
            (gt_bitwise_or_var = gt_bitwise_or_rule(p))  // gt_bitwise_or
12625
409k
        )
12626
7.06k
        {
12627
7.06k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "gt_bitwise_or"));
12628
7.06k
            _res = gt_bitwise_or_var;
12629
7.06k
            goto done;
12630
7.06k
        }
12631
402k
        p->mark = _mark;
12632
402k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12633
402k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "gt_bitwise_or"));
12634
402k
    }
12635
0
    { // notin_bitwise_or
12636
402k
        if (p->error_indicator) {
12637
476
            p->level--;
12638
476
            return NULL;
12639
476
        }
12640
402k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "notin_bitwise_or"));
12641
402k
        CmpopExprPair* notin_bitwise_or_var;
12642
402k
        if (
12643
402k
            (notin_bitwise_or_var = notin_bitwise_or_rule(p))  // notin_bitwise_or
12644
402k
        )
12645
645
        {
12646
645
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "notin_bitwise_or"));
12647
645
            _res = notin_bitwise_or_var;
12648
645
            goto done;
12649
645
        }
12650
401k
        p->mark = _mark;
12651
401k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12652
401k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "notin_bitwise_or"));
12653
401k
    }
12654
0
    { // in_bitwise_or
12655
401k
        if (p->error_indicator) {
12656
281
            p->level--;
12657
281
            return NULL;
12658
281
        }
12659
401k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "in_bitwise_or"));
12660
401k
        CmpopExprPair* in_bitwise_or_var;
12661
401k
        if (
12662
401k
            (in_bitwise_or_var = in_bitwise_or_rule(p))  // in_bitwise_or
12663
401k
        )
12664
1.60k
        {
12665
1.60k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "in_bitwise_or"));
12666
1.60k
            _res = in_bitwise_or_var;
12667
1.60k
            goto done;
12668
1.60k
        }
12669
399k
        p->mark = _mark;
12670
399k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12671
399k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "in_bitwise_or"));
12672
399k
    }
12673
0
    { // isnot_bitwise_or
12674
399k
        if (p->error_indicator) {
12675
375
            p->level--;
12676
375
            return NULL;
12677
375
        }
12678
399k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "isnot_bitwise_or"));
12679
399k
        CmpopExprPair* isnot_bitwise_or_var;
12680
399k
        if (
12681
399k
            (isnot_bitwise_or_var = isnot_bitwise_or_rule(p))  // isnot_bitwise_or
12682
399k
        )
12683
975
        {
12684
975
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "isnot_bitwise_or"));
12685
975
            _res = isnot_bitwise_or_var;
12686
975
            goto done;
12687
975
        }
12688
398k
        p->mark = _mark;
12689
398k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12690
398k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "isnot_bitwise_or"));
12691
398k
    }
12692
0
    { // is_bitwise_or
12693
398k
        if (p->error_indicator) {
12694
265
            p->level--;
12695
265
            return NULL;
12696
265
        }
12697
397k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "is_bitwise_or"));
12698
397k
        CmpopExprPair* is_bitwise_or_var;
12699
397k
        if (
12700
397k
            (is_bitwise_or_var = is_bitwise_or_rule(p))  // is_bitwise_or
12701
397k
        )
12702
2.43k
        {
12703
2.43k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "is_bitwise_or"));
12704
2.43k
            _res = is_bitwise_or_var;
12705
2.43k
            goto done;
12706
2.43k
        }
12707
395k
        p->mark = _mark;
12708
395k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12709
395k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "is_bitwise_or"));
12710
395k
    }
12711
0
    _res = NULL;
12712
419k
  done:
12713
419k
    p->level--;
12714
419k
    return _res;
12715
395k
}
12716
12717
// eq_bitwise_or: '==' bitwise_or
12718
static CmpopExprPair*
12719
eq_bitwise_or_rule(Parser *p)
12720
422k
{
12721
422k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12722
0
        _Pypegen_stack_overflow(p);
12723
0
    }
12724
422k
    if (p->error_indicator) {
12725
0
        p->level--;
12726
0
        return NULL;
12727
0
    }
12728
422k
    CmpopExprPair* _res = NULL;
12729
422k
    int _mark = p->mark;
12730
422k
    { // '==' bitwise_or
12731
422k
        if (p->error_indicator) {
12732
0
            p->level--;
12733
0
            return NULL;
12734
0
        }
12735
422k
        D(fprintf(stderr, "%*c> eq_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'==' bitwise_or"));
12736
422k
        Token * _literal;
12737
422k
        expr_ty a;
12738
422k
        if (
12739
422k
            (_literal = _PyPegen_expect_token(p, 27))  // token='=='
12740
422k
            &&
12741
422k
            (a = bitwise_or_rule(p))  // bitwise_or
12742
422k
        )
12743
2.07k
        {
12744
2.07k
            D(fprintf(stderr, "%*c+ eq_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'==' bitwise_or"));
12745
2.07k
            _res = _PyPegen_cmpop_expr_pair ( p , Eq , a );
12746
2.07k
            if (_res == NULL && PyErr_Occurred()) {
12747
0
                p->error_indicator = 1;
12748
0
                p->level--;
12749
0
                return NULL;
12750
0
            }
12751
2.07k
            goto done;
12752
2.07k
        }
12753
419k
        p->mark = _mark;
12754
419k
        D(fprintf(stderr, "%*c%s eq_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12755
419k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'==' bitwise_or"));
12756
419k
    }
12757
0
    _res = NULL;
12758
422k
  done:
12759
422k
    p->level--;
12760
422k
    return _res;
12761
419k
}
12762
12763
// noteq_bitwise_or: ('!=') bitwise_or
12764
static CmpopExprPair*
12765
noteq_bitwise_or_rule(Parser *p)
12766
419k
{
12767
419k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12768
0
        _Pypegen_stack_overflow(p);
12769
0
    }
12770
419k
    if (p->error_indicator) {
12771
0
        p->level--;
12772
0
        return NULL;
12773
0
    }
12774
419k
    CmpopExprPair* _res = NULL;
12775
419k
    int _mark = p->mark;
12776
419k
    { // ('!=') bitwise_or
12777
419k
        if (p->error_indicator) {
12778
0
            p->level--;
12779
0
            return NULL;
12780
0
        }
12781
419k
        D(fprintf(stderr, "%*c> noteq_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('!=') bitwise_or"));
12782
419k
        void *_tmp_62_var;
12783
419k
        expr_ty a;
12784
419k
        if (
12785
419k
            (_tmp_62_var = _tmp_62_rule(p))  // '!='
12786
419k
            &&
12787
419k
            (a = bitwise_or_rule(p))  // bitwise_or
12788
419k
        )
12789
744
        {
12790
744
            D(fprintf(stderr, "%*c+ noteq_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('!=') bitwise_or"));
12791
744
            _res = _PyPegen_cmpop_expr_pair ( p , NotEq , a );
12792
744
            if (_res == NULL && PyErr_Occurred()) {
12793
0
                p->error_indicator = 1;
12794
0
                p->level--;
12795
0
                return NULL;
12796
0
            }
12797
744
            goto done;
12798
744
        }
12799
419k
        p->mark = _mark;
12800
419k
        D(fprintf(stderr, "%*c%s noteq_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12801
419k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('!=') bitwise_or"));
12802
419k
    }
12803
0
    _res = NULL;
12804
419k
  done:
12805
419k
    p->level--;
12806
419k
    return _res;
12807
419k
}
12808
12809
// lte_bitwise_or: '<=' bitwise_or
12810
static CmpopExprPair*
12811
lte_bitwise_or_rule(Parser *p)
12812
418k
{
12813
418k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12814
0
        _Pypegen_stack_overflow(p);
12815
0
    }
12816
418k
    if (p->error_indicator) {
12817
0
        p->level--;
12818
0
        return NULL;
12819
0
    }
12820
418k
    CmpopExprPair* _res = NULL;
12821
418k
    int _mark = p->mark;
12822
418k
    { // '<=' bitwise_or
12823
418k
        if (p->error_indicator) {
12824
0
            p->level--;
12825
0
            return NULL;
12826
0
        }
12827
418k
        D(fprintf(stderr, "%*c> lte_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<=' bitwise_or"));
12828
418k
        Token * _literal;
12829
418k
        expr_ty a;
12830
418k
        if (
12831
418k
            (_literal = _PyPegen_expect_token(p, 29))  // token='<='
12832
418k
            &&
12833
418k
            (a = bitwise_or_rule(p))  // bitwise_or
12834
418k
        )
12835
603
        {
12836
603
            D(fprintf(stderr, "%*c+ lte_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<=' bitwise_or"));
12837
603
            _res = _PyPegen_cmpop_expr_pair ( p , LtE , a );
12838
603
            if (_res == NULL && PyErr_Occurred()) {
12839
0
                p->error_indicator = 1;
12840
0
                p->level--;
12841
0
                return NULL;
12842
0
            }
12843
603
            goto done;
12844
603
        }
12845
418k
        p->mark = _mark;
12846
418k
        D(fprintf(stderr, "%*c%s lte_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12847
418k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<=' bitwise_or"));
12848
418k
    }
12849
0
    _res = NULL;
12850
418k
  done:
12851
418k
    p->level--;
12852
418k
    return _res;
12853
418k
}
12854
12855
// lt_bitwise_or: '<' bitwise_or
12856
static CmpopExprPair*
12857
lt_bitwise_or_rule(Parser *p)
12858
418k
{
12859
418k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12860
0
        _Pypegen_stack_overflow(p);
12861
0
    }
12862
418k
    if (p->error_indicator) {
12863
0
        p->level--;
12864
0
        return NULL;
12865
0
    }
12866
418k
    CmpopExprPair* _res = NULL;
12867
418k
    int _mark = p->mark;
12868
418k
    { // '<' bitwise_or
12869
418k
        if (p->error_indicator) {
12870
0
            p->level--;
12871
0
            return NULL;
12872
0
        }
12873
418k
        D(fprintf(stderr, "%*c> lt_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<' bitwise_or"));
12874
418k
        Token * _literal;
12875
418k
        expr_ty a;
12876
418k
        if (
12877
418k
            (_literal = _PyPegen_expect_token(p, 20))  // token='<'
12878
418k
            &&
12879
418k
            (a = bitwise_or_rule(p))  // bitwise_or
12880
418k
        )
12881
7.22k
        {
12882
7.22k
            D(fprintf(stderr, "%*c+ lt_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<' bitwise_or"));
12883
7.22k
            _res = _PyPegen_cmpop_expr_pair ( p , Lt , a );
12884
7.22k
            if (_res == NULL && PyErr_Occurred()) {
12885
0
                p->error_indicator = 1;
12886
0
                p->level--;
12887
0
                return NULL;
12888
0
            }
12889
7.22k
            goto done;
12890
7.22k
        }
12891
410k
        p->mark = _mark;
12892
410k
        D(fprintf(stderr, "%*c%s lt_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12893
410k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<' bitwise_or"));
12894
410k
    }
12895
0
    _res = NULL;
12896
418k
  done:
12897
418k
    p->level--;
12898
418k
    return _res;
12899
410k
}
12900
12901
// gte_bitwise_or: '>=' bitwise_or
12902
static CmpopExprPair*
12903
gte_bitwise_or_rule(Parser *p)
12904
410k
{
12905
410k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12906
0
        _Pypegen_stack_overflow(p);
12907
0
    }
12908
410k
    if (p->error_indicator) {
12909
0
        p->level--;
12910
0
        return NULL;
12911
0
    }
12912
410k
    CmpopExprPair* _res = NULL;
12913
410k
    int _mark = p->mark;
12914
410k
    { // '>=' bitwise_or
12915
410k
        if (p->error_indicator) {
12916
0
            p->level--;
12917
0
            return NULL;
12918
0
        }
12919
410k
        D(fprintf(stderr, "%*c> gte_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>=' bitwise_or"));
12920
410k
        Token * _literal;
12921
410k
        expr_ty a;
12922
410k
        if (
12923
410k
            (_literal = _PyPegen_expect_token(p, 30))  // token='>='
12924
410k
            &&
12925
410k
            (a = bitwise_or_rule(p))  // bitwise_or
12926
410k
        )
12927
852
        {
12928
852
            D(fprintf(stderr, "%*c+ gte_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>=' bitwise_or"));
12929
852
            _res = _PyPegen_cmpop_expr_pair ( p , GtE , a );
12930
852
            if (_res == NULL && PyErr_Occurred()) {
12931
0
                p->error_indicator = 1;
12932
0
                p->level--;
12933
0
                return NULL;
12934
0
            }
12935
852
            goto done;
12936
852
        }
12937
409k
        p->mark = _mark;
12938
409k
        D(fprintf(stderr, "%*c%s gte_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12939
409k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>=' bitwise_or"));
12940
409k
    }
12941
0
    _res = NULL;
12942
410k
  done:
12943
410k
    p->level--;
12944
410k
    return _res;
12945
409k
}
12946
12947
// gt_bitwise_or: '>' bitwise_or
12948
static CmpopExprPair*
12949
gt_bitwise_or_rule(Parser *p)
12950
409k
{
12951
409k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12952
0
        _Pypegen_stack_overflow(p);
12953
0
    }
12954
409k
    if (p->error_indicator) {
12955
0
        p->level--;
12956
0
        return NULL;
12957
0
    }
12958
409k
    CmpopExprPair* _res = NULL;
12959
409k
    int _mark = p->mark;
12960
409k
    { // '>' bitwise_or
12961
409k
        if (p->error_indicator) {
12962
0
            p->level--;
12963
0
            return NULL;
12964
0
        }
12965
409k
        D(fprintf(stderr, "%*c> gt_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>' bitwise_or"));
12966
409k
        Token * _literal;
12967
409k
        expr_ty a;
12968
409k
        if (
12969
409k
            (_literal = _PyPegen_expect_token(p, 21))  // token='>'
12970
409k
            &&
12971
409k
            (a = bitwise_or_rule(p))  // bitwise_or
12972
409k
        )
12973
7.06k
        {
12974
7.06k
            D(fprintf(stderr, "%*c+ gt_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>' bitwise_or"));
12975
7.06k
            _res = _PyPegen_cmpop_expr_pair ( p , Gt , a );
12976
7.06k
            if (_res == NULL && PyErr_Occurred()) {
12977
0
                p->error_indicator = 1;
12978
0
                p->level--;
12979
0
                return NULL;
12980
0
            }
12981
7.06k
            goto done;
12982
7.06k
        }
12983
402k
        p->mark = _mark;
12984
402k
        D(fprintf(stderr, "%*c%s gt_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12985
402k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>' bitwise_or"));
12986
402k
    }
12987
0
    _res = NULL;
12988
409k
  done:
12989
409k
    p->level--;
12990
409k
    return _res;
12991
402k
}
12992
12993
// notin_bitwise_or: 'not' 'in' bitwise_or
12994
static CmpopExprPair*
12995
notin_bitwise_or_rule(Parser *p)
12996
402k
{
12997
402k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12998
0
        _Pypegen_stack_overflow(p);
12999
0
    }
13000
402k
    if (p->error_indicator) {
13001
0
        p->level--;
13002
0
        return NULL;
13003
0
    }
13004
402k
    CmpopExprPair* _res = NULL;
13005
402k
    int _mark = p->mark;
13006
402k
    { // 'not' 'in' bitwise_or
13007
402k
        if (p->error_indicator) {
13008
0
            p->level--;
13009
0
            return NULL;
13010
0
        }
13011
402k
        D(fprintf(stderr, "%*c> notin_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'not' 'in' bitwise_or"));
13012
402k
        Token * _keyword;
13013
402k
        Token * _keyword_1;
13014
402k
        expr_ty a;
13015
402k
        if (
13016
402k
            (_keyword = _PyPegen_expect_token(p, 708))  // token='not'
13017
402k
            &&
13018
402k
            (_keyword_1 = _PyPegen_expect_token(p, 700))  // token='in'
13019
402k
            &&
13020
402k
            (a = bitwise_or_rule(p))  // bitwise_or
13021
402k
        )
13022
645
        {
13023
645
            D(fprintf(stderr, "%*c+ notin_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'not' 'in' bitwise_or"));
13024
645
            _res = _PyPegen_cmpop_expr_pair ( p , NotIn , a );
13025
645
            if (_res == NULL && PyErr_Occurred()) {
13026
0
                p->error_indicator = 1;
13027
0
                p->level--;
13028
0
                return NULL;
13029
0
            }
13030
645
            goto done;
13031
645
        }
13032
401k
        p->mark = _mark;
13033
401k
        D(fprintf(stderr, "%*c%s notin_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13034
401k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'not' 'in' bitwise_or"));
13035
401k
    }
13036
0
    _res = NULL;
13037
402k
  done:
13038
402k
    p->level--;
13039
402k
    return _res;
13040
401k
}
13041
13042
// in_bitwise_or: 'in' bitwise_or
13043
static CmpopExprPair*
13044
in_bitwise_or_rule(Parser *p)
13045
401k
{
13046
401k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13047
0
        _Pypegen_stack_overflow(p);
13048
0
    }
13049
401k
    if (p->error_indicator) {
13050
0
        p->level--;
13051
0
        return NULL;
13052
0
    }
13053
401k
    CmpopExprPair* _res = NULL;
13054
401k
    int _mark = p->mark;
13055
401k
    { // 'in' bitwise_or
13056
401k
        if (p->error_indicator) {
13057
0
            p->level--;
13058
0
            return NULL;
13059
0
        }
13060
401k
        D(fprintf(stderr, "%*c> in_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'in' bitwise_or"));
13061
401k
        Token * _keyword;
13062
401k
        expr_ty a;
13063
401k
        if (
13064
401k
            (_keyword = _PyPegen_expect_token(p, 700))  // token='in'
13065
401k
            &&
13066
401k
            (a = bitwise_or_rule(p))  // bitwise_or
13067
401k
        )
13068
1.60k
        {
13069
1.60k
            D(fprintf(stderr, "%*c+ in_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'in' bitwise_or"));
13070
1.60k
            _res = _PyPegen_cmpop_expr_pair ( p , In , a );
13071
1.60k
            if (_res == NULL && PyErr_Occurred()) {
13072
0
                p->error_indicator = 1;
13073
0
                p->level--;
13074
0
                return NULL;
13075
0
            }
13076
1.60k
            goto done;
13077
1.60k
        }
13078
399k
        p->mark = _mark;
13079
399k
        D(fprintf(stderr, "%*c%s in_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13080
399k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'in' bitwise_or"));
13081
399k
    }
13082
0
    _res = NULL;
13083
401k
  done:
13084
401k
    p->level--;
13085
401k
    return _res;
13086
399k
}
13087
13088
// isnot_bitwise_or: 'is' 'not' bitwise_or
13089
static CmpopExprPair*
13090
isnot_bitwise_or_rule(Parser *p)
13091
399k
{
13092
399k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13093
0
        _Pypegen_stack_overflow(p);
13094
0
    }
13095
399k
    if (p->error_indicator) {
13096
0
        p->level--;
13097
0
        return NULL;
13098
0
    }
13099
399k
    CmpopExprPair* _res = NULL;
13100
399k
    int _mark = p->mark;
13101
399k
    { // 'is' 'not' bitwise_or
13102
399k
        if (p->error_indicator) {
13103
0
            p->level--;
13104
0
            return NULL;
13105
0
        }
13106
399k
        D(fprintf(stderr, "%*c> isnot_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'is' 'not' bitwise_or"));
13107
399k
        Token * _keyword;
13108
399k
        Token * _keyword_1;
13109
399k
        expr_ty a;
13110
399k
        if (
13111
399k
            (_keyword = _PyPegen_expect_token(p, 597))  // token='is'
13112
399k
            &&
13113
399k
            (_keyword_1 = _PyPegen_expect_token(p, 708))  // token='not'
13114
399k
            &&
13115
399k
            (a = bitwise_or_rule(p))  // bitwise_or
13116
399k
        )
13117
975
        {
13118
975
            D(fprintf(stderr, "%*c+ isnot_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'is' 'not' bitwise_or"));
13119
975
            _res = _PyPegen_cmpop_expr_pair ( p , IsNot , a );
13120
975
            if (_res == NULL && PyErr_Occurred()) {
13121
0
                p->error_indicator = 1;
13122
0
                p->level--;
13123
0
                return NULL;
13124
0
            }
13125
975
            goto done;
13126
975
        }
13127
398k
        p->mark = _mark;
13128
398k
        D(fprintf(stderr, "%*c%s isnot_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13129
398k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'is' 'not' bitwise_or"));
13130
398k
    }
13131
0
    _res = NULL;
13132
399k
  done:
13133
399k
    p->level--;
13134
399k
    return _res;
13135
398k
}
13136
13137
// is_bitwise_or: 'is' bitwise_or
13138
static CmpopExprPair*
13139
is_bitwise_or_rule(Parser *p)
13140
397k
{
13141
397k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13142
0
        _Pypegen_stack_overflow(p);
13143
0
    }
13144
397k
    if (p->error_indicator) {
13145
0
        p->level--;
13146
0
        return NULL;
13147
0
    }
13148
397k
    CmpopExprPair* _res = NULL;
13149
397k
    int _mark = p->mark;
13150
397k
    { // 'is' bitwise_or
13151
397k
        if (p->error_indicator) {
13152
0
            p->level--;
13153
0
            return NULL;
13154
0
        }
13155
397k
        D(fprintf(stderr, "%*c> is_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'is' bitwise_or"));
13156
397k
        Token * _keyword;
13157
397k
        expr_ty a;
13158
397k
        if (
13159
397k
            (_keyword = _PyPegen_expect_token(p, 597))  // token='is'
13160
397k
            &&
13161
397k
            (a = bitwise_or_rule(p))  // bitwise_or
13162
397k
        )
13163
2.43k
        {
13164
2.43k
            D(fprintf(stderr, "%*c+ is_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'is' bitwise_or"));
13165
2.43k
            _res = _PyPegen_cmpop_expr_pair ( p , Is , a );
13166
2.43k
            if (_res == NULL && PyErr_Occurred()) {
13167
0
                p->error_indicator = 1;
13168
0
                p->level--;
13169
0
                return NULL;
13170
0
            }
13171
2.43k
            goto done;
13172
2.43k
        }
13173
395k
        p->mark = _mark;
13174
395k
        D(fprintf(stderr, "%*c%s is_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13175
395k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'is' bitwise_or"));
13176
395k
    }
13177
0
    _res = NULL;
13178
397k
  done:
13179
397k
    p->level--;
13180
397k
    return _res;
13181
395k
}
13182
13183
// Left-recursive
13184
// bitwise_or: bitwise_or '|' bitwise_xor | bitwise_xor
13185
static expr_ty bitwise_or_raw(Parser *);
13186
static expr_ty
13187
bitwise_or_rule(Parser *p)
13188
2.65M
{
13189
2.65M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13190
1
        _Pypegen_stack_overflow(p);
13191
1
    }
13192
2.65M
    expr_ty _res = NULL;
13193
2.65M
    if (_PyPegen_is_memoized(p, bitwise_or_type, &_res)) {
13194
1.91M
        p->level--;
13195
1.91M
        return _res;
13196
1.91M
    }
13197
741k
    int _mark = p->mark;
13198
741k
    int _resmark = p->mark;
13199
1.17M
    while (1) {
13200
1.17M
        int tmpvar_2 = _PyPegen_update_memo(p, _mark, bitwise_or_type, _res);
13201
1.17M
        if (tmpvar_2) {
13202
0
            p->level--;
13203
0
            return _res;
13204
0
        }
13205
1.17M
        p->mark = _mark;
13206
1.17M
        void *_raw = bitwise_or_raw(p);
13207
1.17M
        if (p->error_indicator) {
13208
38.5k
            p->level--;
13209
38.5k
            return NULL;
13210
38.5k
        }
13211
1.13M
        if (_raw == NULL || p->mark <= _resmark)
13212
703k
            break;
13213
429k
        _resmark = p->mark;
13214
429k
        _res = _raw;
13215
429k
    }
13216
703k
    p->mark = _resmark;
13217
703k
    p->level--;
13218
703k
    return _res;
13219
741k
}
13220
static expr_ty
13221
bitwise_or_raw(Parser *p)
13222
1.17M
{
13223
1.17M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13224
1
        _Pypegen_stack_overflow(p);
13225
1
    }
13226
1.17M
    if (p->error_indicator) {
13227
2
        p->level--;
13228
2
        return NULL;
13229
2
    }
13230
1.17M
    expr_ty _res = NULL;
13231
1.17M
    int _mark = p->mark;
13232
1.17M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13233
0
        p->error_indicator = 1;
13234
0
        p->level--;
13235
0
        return NULL;
13236
0
    }
13237
1.17M
    int _start_lineno = p->tokens[_mark]->lineno;
13238
1.17M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13239
1.17M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13240
1.17M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13241
1.17M
    { // bitwise_or '|' bitwise_xor
13242
1.17M
        if (p->error_indicator) {
13243
0
            p->level--;
13244
0
            return NULL;
13245
0
        }
13246
1.17M
        D(fprintf(stderr, "%*c> bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or '|' bitwise_xor"));
13247
1.17M
        Token * _literal;
13248
1.17M
        expr_ty a;
13249
1.17M
        expr_ty b;
13250
1.17M
        if (
13251
1.17M
            (a = bitwise_or_rule(p))  // bitwise_or
13252
1.17M
            &&
13253
1.17M
            (_literal = _PyPegen_expect_token(p, 18))  // token='|'
13254
1.17M
            &&
13255
1.17M
            (b = bitwise_xor_rule(p))  // bitwise_xor
13256
1.17M
        )
13257
1.39k
        {
13258
1.39k
            D(fprintf(stderr, "%*c+ bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or '|' bitwise_xor"));
13259
1.39k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13260
1.39k
            if (_token == NULL) {
13261
0
                p->level--;
13262
0
                return NULL;
13263
0
            }
13264
1.39k
            int _end_lineno = _token->end_lineno;
13265
1.39k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13266
1.39k
            int _end_col_offset = _token->end_col_offset;
13267
1.39k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13268
1.39k
            _res = _PyAST_BinOp ( a , BitOr , b , EXTRA );
13269
1.39k
            if (_res == NULL && PyErr_Occurred()) {
13270
0
                p->error_indicator = 1;
13271
0
                p->level--;
13272
0
                return NULL;
13273
0
            }
13274
1.39k
            goto done;
13275
1.39k
        }
13276
1.17M
        p->mark = _mark;
13277
1.17M
        D(fprintf(stderr, "%*c%s bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13278
1.17M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or '|' bitwise_xor"));
13279
1.17M
    }
13280
0
    { // bitwise_xor
13281
1.17M
        if (p->error_indicator) {
13282
309
            p->level--;
13283
309
            return NULL;
13284
309
        }
13285
1.16M
        D(fprintf(stderr, "%*c> bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_xor"));
13286
1.16M
        expr_ty bitwise_xor_var;
13287
1.16M
        if (
13288
1.16M
            (bitwise_xor_var = bitwise_xor_rule(p))  // bitwise_xor
13289
1.16M
        )
13290
856k
        {
13291
856k
            D(fprintf(stderr, "%*c+ bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_xor"));
13292
856k
            _res = bitwise_xor_var;
13293
856k
            goto done;
13294
856k
        }
13295
313k
        p->mark = _mark;
13296
313k
        D(fprintf(stderr, "%*c%s bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13297
313k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_xor"));
13298
313k
    }
13299
0
    _res = NULL;
13300
1.17M
  done:
13301
1.17M
    p->level--;
13302
1.17M
    return _res;
13303
313k
}
13304
13305
// Left-recursive
13306
// bitwise_xor: bitwise_xor '^' bitwise_and | bitwise_and
13307
static expr_ty bitwise_xor_raw(Parser *);
13308
static expr_ty
13309
bitwise_xor_rule(Parser *p)
13310
2.34M
{
13311
2.34M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13312
2
        _Pypegen_stack_overflow(p);
13313
2
    }
13314
2.34M
    expr_ty _res = NULL;
13315
2.34M
    if (_PyPegen_is_memoized(p, bitwise_xor_type, &_res)) {
13316
1.60M
        p->level--;
13317
1.60M
        return _res;
13318
1.60M
    }
13319
743k
    int _mark = p->mark;
13320
743k
    int _resmark = p->mark;
13321
1.17M
    while (1) {
13322
1.17M
        int tmpvar_3 = _PyPegen_update_memo(p, _mark, bitwise_xor_type, _res);
13323
1.17M
        if (tmpvar_3) {
13324
0
            p->level--;
13325
0
            return _res;
13326
0
        }
13327
1.17M
        p->mark = _mark;
13328
1.17M
        void *_raw = bitwise_xor_raw(p);
13329
1.17M
        if (p->error_indicator) {
13330
38.5k
            p->level--;
13331
38.5k
            return NULL;
13332
38.5k
        }
13333
1.13M
        if (_raw == NULL || p->mark <= _resmark)
13334
705k
            break;
13335
430k
        _resmark = p->mark;
13336
430k
        _res = _raw;
13337
430k
    }
13338
705k
    p->mark = _resmark;
13339
705k
    p->level--;
13340
705k
    return _res;
13341
743k
}
13342
static expr_ty
13343
bitwise_xor_raw(Parser *p)
13344
1.17M
{
13345
1.17M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13346
1
        _Pypegen_stack_overflow(p);
13347
1
    }
13348
1.17M
    if (p->error_indicator) {
13349
1
        p->level--;
13350
1
        return NULL;
13351
1
    }
13352
1.17M
    expr_ty _res = NULL;
13353
1.17M
    int _mark = p->mark;
13354
1.17M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13355
0
        p->error_indicator = 1;
13356
0
        p->level--;
13357
0
        return NULL;
13358
0
    }
13359
1.17M
    int _start_lineno = p->tokens[_mark]->lineno;
13360
1.17M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13361
1.17M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13362
1.17M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13363
1.17M
    { // bitwise_xor '^' bitwise_and
13364
1.17M
        if (p->error_indicator) {
13365
0
            p->level--;
13366
0
            return NULL;
13367
0
        }
13368
1.17M
        D(fprintf(stderr, "%*c> bitwise_xor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_xor '^' bitwise_and"));
13369
1.17M
        Token * _literal;
13370
1.17M
        expr_ty a;
13371
1.17M
        expr_ty b;
13372
1.17M
        if (
13373
1.17M
            (a = bitwise_xor_rule(p))  // bitwise_xor
13374
1.17M
            &&
13375
1.17M
            (_literal = _PyPegen_expect_token(p, 32))  // token='^'
13376
1.17M
            &&
13377
1.17M
            (b = bitwise_and_rule(p))  // bitwise_and
13378
1.17M
        )
13379
742
        {
13380
742
            D(fprintf(stderr, "%*c+ bitwise_xor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_xor '^' bitwise_and"));
13381
742
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13382
742
            if (_token == NULL) {
13383
0
                p->level--;
13384
0
                return NULL;
13385
0
            }
13386
742
            int _end_lineno = _token->end_lineno;
13387
742
            UNUSED(_end_lineno); // Only used by EXTRA macro
13388
742
            int _end_col_offset = _token->end_col_offset;
13389
742
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13390
742
            _res = _PyAST_BinOp ( a , BitXor , b , EXTRA );
13391
742
            if (_res == NULL && PyErr_Occurred()) {
13392
0
                p->error_indicator = 1;
13393
0
                p->level--;
13394
0
                return NULL;
13395
0
            }
13396
742
            goto done;
13397
742
        }
13398
1.17M
        p->mark = _mark;
13399
1.17M
        D(fprintf(stderr, "%*c%s bitwise_xor[%d-%d]: %s failed!\n", p->level, ' ',
13400
1.17M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_xor '^' bitwise_and"));
13401
1.17M
    }
13402
0
    { // bitwise_and
13403
1.17M
        if (p->error_indicator) {
13404
201
            p->level--;
13405
201
            return NULL;
13406
201
        }
13407
1.17M
        D(fprintf(stderr, "%*c> bitwise_xor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_and"));
13408
1.17M
        expr_ty bitwise_and_var;
13409
1.17M
        if (
13410
1.17M
            (bitwise_and_var = bitwise_and_rule(p))  // bitwise_and
13411
1.17M
        )
13412
859k
        {
13413
859k
            D(fprintf(stderr, "%*c+ bitwise_xor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_and"));
13414
859k
            _res = bitwise_and_var;
13415
859k
            goto done;
13416
859k
        }
13417
313k
        p->mark = _mark;
13418
313k
        D(fprintf(stderr, "%*c%s bitwise_xor[%d-%d]: %s failed!\n", p->level, ' ',
13419
313k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_and"));
13420
313k
    }
13421
0
    _res = NULL;
13422
1.17M
  done:
13423
1.17M
    p->level--;
13424
1.17M
    return _res;
13425
313k
}
13426
13427
// Left-recursive
13428
// bitwise_and: bitwise_and '&' shift_expr | shift_expr
13429
static expr_ty bitwise_and_raw(Parser *);
13430
static expr_ty
13431
bitwise_and_rule(Parser *p)
13432
2.35M
{
13433
2.35M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13434
1
        _Pypegen_stack_overflow(p);
13435
1
    }
13436
2.35M
    expr_ty _res = NULL;
13437
2.35M
    if (_PyPegen_is_memoized(p, bitwise_and_type, &_res)) {
13438
1.60M
        p->level--;
13439
1.60M
        return _res;
13440
1.60M
    }
13441
744k
    int _mark = p->mark;
13442
744k
    int _resmark = p->mark;
13443
1.17M
    while (1) {
13444
1.17M
        int tmpvar_4 = _PyPegen_update_memo(p, _mark, bitwise_and_type, _res);
13445
1.17M
        if (tmpvar_4) {
13446
0
            p->level--;
13447
0
            return _res;
13448
0
        }
13449
1.17M
        p->mark = _mark;
13450
1.17M
        void *_raw = bitwise_and_raw(p);
13451
1.17M
        if (p->error_indicator) {
13452
38.5k
            p->level--;
13453
38.5k
            return NULL;
13454
38.5k
        }
13455
1.13M
        if (_raw == NULL || p->mark <= _resmark)
13456
706k
            break;
13457
433k
        _resmark = p->mark;
13458
433k
        _res = _raw;
13459
433k
    }
13460
706k
    p->mark = _resmark;
13461
706k
    p->level--;
13462
706k
    return _res;
13463
744k
}
13464
static expr_ty
13465
bitwise_and_raw(Parser *p)
13466
1.17M
{
13467
1.17M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13468
2
        _Pypegen_stack_overflow(p);
13469
2
    }
13470
1.17M
    if (p->error_indicator) {
13471
2
        p->level--;
13472
2
        return NULL;
13473
2
    }
13474
1.17M
    expr_ty _res = NULL;
13475
1.17M
    int _mark = p->mark;
13476
1.17M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13477
0
        p->error_indicator = 1;
13478
0
        p->level--;
13479
0
        return NULL;
13480
0
    }
13481
1.17M
    int _start_lineno = p->tokens[_mark]->lineno;
13482
1.17M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13483
1.17M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13484
1.17M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13485
1.17M
    { // bitwise_and '&' shift_expr
13486
1.17M
        if (p->error_indicator) {
13487
0
            p->level--;
13488
0
            return NULL;
13489
0
        }
13490
1.17M
        D(fprintf(stderr, "%*c> bitwise_and[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_and '&' shift_expr"));
13491
1.17M
        Token * _literal;
13492
1.17M
        expr_ty a;
13493
1.17M
        expr_ty b;
13494
1.17M
        if (
13495
1.17M
            (a = bitwise_and_rule(p))  // bitwise_and
13496
1.17M
            &&
13497
1.17M
            (_literal = _PyPegen_expect_token(p, 19))  // token='&'
13498
1.17M
            &&
13499
1.17M
            (b = shift_expr_rule(p))  // shift_expr
13500
1.17M
        )
13501
2.38k
        {
13502
2.38k
            D(fprintf(stderr, "%*c+ bitwise_and[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_and '&' shift_expr"));
13503
2.38k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13504
2.38k
            if (_token == NULL) {
13505
0
                p->level--;
13506
0
                return NULL;
13507
0
            }
13508
2.38k
            int _end_lineno = _token->end_lineno;
13509
2.38k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13510
2.38k
            int _end_col_offset = _token->end_col_offset;
13511
2.38k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13512
2.38k
            _res = _PyAST_BinOp ( a , BitAnd , b , EXTRA );
13513
2.38k
            if (_res == NULL && PyErr_Occurred()) {
13514
0
                p->error_indicator = 1;
13515
0
                p->level--;
13516
0
                return NULL;
13517
0
            }
13518
2.38k
            goto done;
13519
2.38k
        }
13520
1.17M
        p->mark = _mark;
13521
1.17M
        D(fprintf(stderr, "%*c%s bitwise_and[%d-%d]: %s failed!\n", p->level, ' ',
13522
1.17M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_and '&' shift_expr"));
13523
1.17M
    }
13524
0
    { // shift_expr
13525
1.17M
        if (p->error_indicator) {
13526
320
            p->level--;
13527
320
            return NULL;
13528
320
        }
13529
1.17M
        D(fprintf(stderr, "%*c> bitwise_and[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr"));
13530
1.17M
        expr_ty shift_expr_var;
13531
1.17M
        if (
13532
1.17M
            (shift_expr_var = shift_expr_rule(p))  // shift_expr
13533
1.17M
        )
13534
861k
        {
13535
861k
            D(fprintf(stderr, "%*c+ bitwise_and[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr"));
13536
861k
            _res = shift_expr_var;
13537
861k
            goto done;
13538
861k
        }
13539
314k
        p->mark = _mark;
13540
314k
        D(fprintf(stderr, "%*c%s bitwise_and[%d-%d]: %s failed!\n", p->level, ' ',
13541
314k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr"));
13542
314k
    }
13543
0
    _res = NULL;
13544
1.17M
  done:
13545
1.17M
    p->level--;
13546
1.17M
    return _res;
13547
314k
}
13548
13549
// Left-recursive
13550
// shift_expr: shift_expr '<<' sum | shift_expr '>>' sum | invalid_arithmetic | sum
13551
static expr_ty shift_expr_raw(Parser *);
13552
static expr_ty
13553
shift_expr_rule(Parser *p)
13554
3.54M
{
13555
3.54M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13556
1
        _Pypegen_stack_overflow(p);
13557
1
    }
13558
3.54M
    expr_ty _res = NULL;
13559
3.54M
    if (_PyPegen_is_memoized(p, shift_expr_type, &_res)) {
13560
2.79M
        p->level--;
13561
2.79M
        return _res;
13562
2.79M
    }
13563
748k
    int _mark = p->mark;
13564
748k
    int _resmark = p->mark;
13565
1.18M
    while (1) {
13566
1.18M
        int tmpvar_5 = _PyPegen_update_memo(p, _mark, shift_expr_type, _res);
13567
1.18M
        if (tmpvar_5) {
13568
0
            p->level--;
13569
0
            return _res;
13570
0
        }
13571
1.18M
        p->mark = _mark;
13572
1.18M
        void *_raw = shift_expr_raw(p);
13573
1.18M
        if (p->error_indicator) {
13574
38.5k
            p->level--;
13575
38.5k
            return NULL;
13576
38.5k
        }
13577
1.14M
        if (_raw == NULL || p->mark <= _resmark)
13578
709k
            break;
13579
435k
        _resmark = p->mark;
13580
435k
        _res = _raw;
13581
435k
    }
13582
709k
    p->mark = _resmark;
13583
709k
    p->level--;
13584
709k
    return _res;
13585
748k
}
13586
static expr_ty
13587
shift_expr_raw(Parser *p)
13588
1.18M
{
13589
1.18M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13590
1
        _Pypegen_stack_overflow(p);
13591
1
    }
13592
1.18M
    if (p->error_indicator) {
13593
1
        p->level--;
13594
1
        return NULL;
13595
1
    }
13596
1.18M
    expr_ty _res = NULL;
13597
1.18M
    int _mark = p->mark;
13598
1.18M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13599
0
        p->error_indicator = 1;
13600
0
        p->level--;
13601
0
        return NULL;
13602
0
    }
13603
1.18M
    int _start_lineno = p->tokens[_mark]->lineno;
13604
1.18M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13605
1.18M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13606
1.18M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13607
1.18M
    { // shift_expr '<<' sum
13608
1.18M
        if (p->error_indicator) {
13609
0
            p->level--;
13610
0
            return NULL;
13611
0
        }
13612
1.18M
        D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr '<<' sum"));
13613
1.18M
        Token * _literal;
13614
1.18M
        expr_ty a;
13615
1.18M
        expr_ty b;
13616
1.18M
        if (
13617
1.18M
            (a = shift_expr_rule(p))  // shift_expr
13618
1.18M
            &&
13619
1.18M
            (_literal = _PyPegen_expect_token(p, 33))  // token='<<'
13620
1.18M
            &&
13621
1.18M
            (b = sum_rule(p))  // sum
13622
1.18M
        )
13623
870
        {
13624
870
            D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr '<<' sum"));
13625
870
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13626
870
            if (_token == NULL) {
13627
0
                p->level--;
13628
0
                return NULL;
13629
0
            }
13630
870
            int _end_lineno = _token->end_lineno;
13631
870
            UNUSED(_end_lineno); // Only used by EXTRA macro
13632
870
            int _end_col_offset = _token->end_col_offset;
13633
870
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13634
870
            _res = _PyAST_BinOp ( a , LShift , b , EXTRA );
13635
870
            if (_res == NULL && PyErr_Occurred()) {
13636
0
                p->error_indicator = 1;
13637
0
                p->level--;
13638
0
                return NULL;
13639
0
            }
13640
870
            goto done;
13641
870
        }
13642
1.18M
        p->mark = _mark;
13643
1.18M
        D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13644
1.18M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr '<<' sum"));
13645
1.18M
    }
13646
0
    { // shift_expr '>>' sum
13647
1.18M
        if (p->error_indicator) {
13648
212
            p->level--;
13649
212
            return NULL;
13650
212
        }
13651
1.18M
        D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr '>>' sum"));
13652
1.18M
        Token * _literal;
13653
1.18M
        expr_ty a;
13654
1.18M
        expr_ty b;
13655
1.18M
        if (
13656
1.18M
            (a = shift_expr_rule(p))  // shift_expr
13657
1.18M
            &&
13658
1.18M
            (_literal = _PyPegen_expect_token(p, 34))  // token='>>'
13659
1.18M
            &&
13660
1.18M
            (b = sum_rule(p))  // sum
13661
1.18M
        )
13662
666
        {
13663
666
            D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr '>>' sum"));
13664
666
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13665
666
            if (_token == NULL) {
13666
0
                p->level--;
13667
0
                return NULL;
13668
0
            }
13669
666
            int _end_lineno = _token->end_lineno;
13670
666
            UNUSED(_end_lineno); // Only used by EXTRA macro
13671
666
            int _end_col_offset = _token->end_col_offset;
13672
666
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13673
666
            _res = _PyAST_BinOp ( a , RShift , b , EXTRA );
13674
666
            if (_res == NULL && PyErr_Occurred()) {
13675
0
                p->error_indicator = 1;
13676
0
                p->level--;
13677
0
                return NULL;
13678
0
            }
13679
666
            goto done;
13680
666
        }
13681
1.18M
        p->mark = _mark;
13682
1.18M
        D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13683
1.18M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr '>>' sum"));
13684
1.18M
    }
13685
1.18M
    if (p->call_invalid_rules) { // invalid_arithmetic
13686
295k
        if (p->error_indicator) {
13687
88
            p->level--;
13688
88
            return NULL;
13689
88
        }
13690
295k
        D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_arithmetic"));
13691
295k
        void *invalid_arithmetic_var;
13692
295k
        if (
13693
295k
            (invalid_arithmetic_var = invalid_arithmetic_rule(p))  // invalid_arithmetic
13694
295k
        )
13695
0
        {
13696
0
            D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_arithmetic"));
13697
0
            _res = invalid_arithmetic_var;
13698
0
            goto done;
13699
0
        }
13700
295k
        p->mark = _mark;
13701
295k
        D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13702
295k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_arithmetic"));
13703
295k
    }
13704
1.18M
    { // sum
13705
1.18M
        if (p->error_indicator) {
13706
28.9k
            p->level--;
13707
28.9k
            return NULL;
13708
28.9k
        }
13709
1.15M
        D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum"));
13710
1.15M
        expr_ty sum_var;
13711
1.15M
        if (
13712
1.15M
            (sum_var = sum_rule(p))  // sum
13713
1.15M
        )
13714
866k
        {
13715
866k
            D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum"));
13716
866k
            _res = sum_var;
13717
866k
            goto done;
13718
866k
        }
13719
285k
        p->mark = _mark;
13720
285k
        D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13721
285k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum"));
13722
285k
    }
13723
0
    _res = NULL;
13724
1.15M
  done:
13725
1.15M
    p->level--;
13726
1.15M
    return _res;
13727
285k
}
13728
13729
// Left-recursive
13730
// sum: sum '+' term | sum '-' term | term
13731
static expr_ty sum_raw(Parser *);
13732
static expr_ty
13733
sum_rule(Parser *p)
13734
3.85M
{
13735
3.85M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13736
1
        _Pypegen_stack_overflow(p);
13737
1
    }
13738
3.85M
    expr_ty _res = NULL;
13739
3.85M
    if (_PyPegen_is_memoized(p, sum_type, &_res)) {
13740
3.10M
        p->level--;
13741
3.10M
        return _res;
13742
3.10M
    }
13743
750k
    int _mark = p->mark;
13744
750k
    int _resmark = p->mark;
13745
1.21M
    while (1) {
13746
1.21M
        int tmpvar_6 = _PyPegen_update_memo(p, _mark, sum_type, _res);
13747
1.21M
        if (tmpvar_6) {
13748
0
            p->level--;
13749
0
            return _res;
13750
0
        }
13751
1.21M
        p->mark = _mark;
13752
1.21M
        void *_raw = sum_raw(p);
13753
1.21M
        if (p->error_indicator) {
13754
38.4k
            p->level--;
13755
38.4k
            return NULL;
13756
38.4k
        }
13757
1.17M
        if (_raw == NULL || p->mark <= _resmark)
13758
711k
            break;
13759
459k
        _resmark = p->mark;
13760
459k
        _res = _raw;
13761
459k
    }
13762
711k
    p->mark = _resmark;
13763
711k
    p->level--;
13764
711k
    return _res;
13765
750k
}
13766
static expr_ty
13767
sum_raw(Parser *p)
13768
1.21M
{
13769
1.21M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13770
1
        _Pypegen_stack_overflow(p);
13771
1
    }
13772
1.21M
    if (p->error_indicator) {
13773
1
        p->level--;
13774
1
        return NULL;
13775
1
    }
13776
1.21M
    expr_ty _res = NULL;
13777
1.21M
    int _mark = p->mark;
13778
1.21M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13779
0
        p->error_indicator = 1;
13780
0
        p->level--;
13781
0
        return NULL;
13782
0
    }
13783
1.21M
    int _start_lineno = p->tokens[_mark]->lineno;
13784
1.21M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13785
1.21M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13786
1.21M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13787
1.21M
    { // sum '+' term
13788
1.21M
        if (p->error_indicator) {
13789
0
            p->level--;
13790
0
            return NULL;
13791
0
        }
13792
1.21M
        D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum '+' term"));
13793
1.21M
        Token * _literal;
13794
1.21M
        expr_ty a;
13795
1.21M
        expr_ty b;
13796
1.21M
        if (
13797
1.21M
            (a = sum_rule(p))  // sum
13798
1.21M
            &&
13799
1.21M
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
13800
1.21M
            &&
13801
1.21M
            (b = term_rule(p))  // term
13802
1.21M
        )
13803
10.2k
        {
13804
10.2k
            D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum '+' term"));
13805
10.2k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13806
10.2k
            if (_token == NULL) {
13807
0
                p->level--;
13808
0
                return NULL;
13809
0
            }
13810
10.2k
            int _end_lineno = _token->end_lineno;
13811
10.2k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13812
10.2k
            int _end_col_offset = _token->end_col_offset;
13813
10.2k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13814
10.2k
            _res = _PyAST_BinOp ( a , Add , b , EXTRA );
13815
10.2k
            if (_res == NULL && PyErr_Occurred()) {
13816
0
                p->error_indicator = 1;
13817
0
                p->level--;
13818
0
                return NULL;
13819
0
            }
13820
10.2k
            goto done;
13821
10.2k
        }
13822
1.19M
        p->mark = _mark;
13823
1.19M
        D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13824
1.19M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum '+' term"));
13825
1.19M
    }
13826
0
    { // sum '-' term
13827
1.19M
        if (p->error_indicator) {
13828
258
            p->level--;
13829
258
            return NULL;
13830
258
        }
13831
1.19M
        D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum '-' term"));
13832
1.19M
        Token * _literal;
13833
1.19M
        expr_ty a;
13834
1.19M
        expr_ty b;
13835
1.19M
        if (
13836
1.19M
            (a = sum_rule(p))  // sum
13837
1.19M
            &&
13838
1.19M
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
13839
1.19M
            &&
13840
1.19M
            (b = term_rule(p))  // term
13841
1.19M
        )
13842
13.3k
        {
13843
13.3k
            D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum '-' term"));
13844
13.3k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13845
13.3k
            if (_token == NULL) {
13846
0
                p->level--;
13847
0
                return NULL;
13848
0
            }
13849
13.3k
            int _end_lineno = _token->end_lineno;
13850
13.3k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13851
13.3k
            int _end_col_offset = _token->end_col_offset;
13852
13.3k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13853
13.3k
            _res = _PyAST_BinOp ( a , Sub , b , EXTRA );
13854
13.3k
            if (_res == NULL && PyErr_Occurred()) {
13855
0
                p->error_indicator = 1;
13856
0
                p->level--;
13857
0
                return NULL;
13858
0
            }
13859
13.3k
            goto done;
13860
13.3k
        }
13861
1.18M
        p->mark = _mark;
13862
1.18M
        D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13863
1.18M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum '-' term"));
13864
1.18M
    }
13865
0
    { // term
13866
1.18M
        if (p->error_indicator) {
13867
834
            p->level--;
13868
834
            return NULL;
13869
834
        }
13870
1.18M
        D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term"));
13871
1.18M
        expr_ty term_var;
13872
1.18M
        if (
13873
1.18M
            (term_var = term_rule(p))  // term
13874
1.18M
        )
13875
871k
        {
13876
871k
            D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term"));
13877
871k
            _res = term_var;
13878
871k
            goto done;
13879
871k
        }
13880
314k
        p->mark = _mark;
13881
314k
        D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13882
314k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term"));
13883
314k
    }
13884
0
    _res = NULL;
13885
1.20M
  done:
13886
1.20M
    p->level--;
13887
1.20M
    return _res;
13888
314k
}
13889
13890
// Left-recursive
13891
// term:
13892
//     | term '*' factor
13893
//     | term '/' factor
13894
//     | term '//' factor
13895
//     | term '%' factor
13896
//     | term '@' factor
13897
//     | invalid_factor
13898
//     | factor
13899
static expr_ty term_raw(Parser *);
13900
static expr_ty
13901
term_rule(Parser *p)
13902
7.43M
{
13903
7.43M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13904
1
        _Pypegen_stack_overflow(p);
13905
1
    }
13906
7.43M
    expr_ty _res = NULL;
13907
7.43M
    if (_PyPegen_is_memoized(p, term_type, &_res)) {
13908
6.65M
        p->level--;
13909
6.65M
        return _res;
13910
6.65M
    }
13911
776k
    int _mark = p->mark;
13912
776k
    int _resmark = p->mark;
13913
1.25M
    while (1) {
13914
1.25M
        int tmpvar_7 = _PyPegen_update_memo(p, _mark, term_type, _res);
13915
1.25M
        if (tmpvar_7) {
13916
0
            p->level--;
13917
0
            return _res;
13918
0
        }
13919
1.25M
        p->mark = _mark;
13920
1.25M
        void *_raw = term_raw(p);
13921
1.25M
        if (p->error_indicator) {
13922
38.4k
            p->level--;
13923
38.4k
            return NULL;
13924
38.4k
        }
13925
1.21M
        if (_raw == NULL || p->mark <= _resmark)
13926
738k
            break;
13927
475k
        _resmark = p->mark;
13928
475k
        _res = _raw;
13929
475k
    }
13930
738k
    p->mark = _resmark;
13931
738k
    p->level--;
13932
738k
    return _res;
13933
776k
}
13934
static expr_ty
13935
term_raw(Parser *p)
13936
1.25M
{
13937
1.25M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13938
1
        _Pypegen_stack_overflow(p);
13939
1
    }
13940
1.25M
    if (p->error_indicator) {
13941
1
        p->level--;
13942
1
        return NULL;
13943
1
    }
13944
1.25M
    expr_ty _res = NULL;
13945
1.25M
    int _mark = p->mark;
13946
1.25M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13947
0
        p->error_indicator = 1;
13948
0
        p->level--;
13949
0
        return NULL;
13950
0
    }
13951
1.25M
    int _start_lineno = p->tokens[_mark]->lineno;
13952
1.25M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13953
1.25M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13954
1.25M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13955
1.25M
    { // term '*' factor
13956
1.25M
        if (p->error_indicator) {
13957
0
            p->level--;
13958
0
            return NULL;
13959
0
        }
13960
1.25M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '*' factor"));
13961
1.25M
        Token * _literal;
13962
1.25M
        expr_ty a;
13963
1.25M
        expr_ty b;
13964
1.25M
        if (
13965
1.25M
            (a = term_rule(p))  // term
13966
1.25M
            &&
13967
1.25M
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
13968
1.25M
            &&
13969
1.25M
            (b = factor_rule(p))  // factor
13970
1.25M
        )
13971
5.00k
        {
13972
5.00k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '*' factor"));
13973
5.00k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13974
5.00k
            if (_token == NULL) {
13975
0
                p->level--;
13976
0
                return NULL;
13977
0
            }
13978
5.00k
            int _end_lineno = _token->end_lineno;
13979
5.00k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13980
5.00k
            int _end_col_offset = _token->end_col_offset;
13981
5.00k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13982
5.00k
            _res = _PyAST_BinOp ( a , Mult , b , EXTRA );
13983
5.00k
            if (_res == NULL && PyErr_Occurred()) {
13984
0
                p->error_indicator = 1;
13985
0
                p->level--;
13986
0
                return NULL;
13987
0
            }
13988
5.00k
            goto done;
13989
5.00k
        }
13990
1.24M
        p->mark = _mark;
13991
1.24M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
13992
1.24M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '*' factor"));
13993
1.24M
    }
13994
0
    { // term '/' factor
13995
1.24M
        if (p->error_indicator) {
13996
433
            p->level--;
13997
433
            return NULL;
13998
433
        }
13999
1.24M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '/' factor"));
14000
1.24M
        Token * _literal;
14001
1.24M
        expr_ty a;
14002
1.24M
        expr_ty b;
14003
1.24M
        if (
14004
1.24M
            (a = term_rule(p))  // term
14005
1.24M
            &&
14006
1.24M
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
14007
1.24M
            &&
14008
1.24M
            (b = factor_rule(p))  // factor
14009
1.24M
        )
14010
2.87k
        {
14011
2.87k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '/' factor"));
14012
2.87k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14013
2.87k
            if (_token == NULL) {
14014
0
                p->level--;
14015
0
                return NULL;
14016
0
            }
14017
2.87k
            int _end_lineno = _token->end_lineno;
14018
2.87k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14019
2.87k
            int _end_col_offset = _token->end_col_offset;
14020
2.87k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14021
2.87k
            _res = _PyAST_BinOp ( a , Div , b , EXTRA );
14022
2.87k
            if (_res == NULL && PyErr_Occurred()) {
14023
0
                p->error_indicator = 1;
14024
0
                p->level--;
14025
0
                return NULL;
14026
0
            }
14027
2.87k
            goto done;
14028
2.87k
        }
14029
1.24M
        p->mark = _mark;
14030
1.24M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14031
1.24M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '/' factor"));
14032
1.24M
    }
14033
0
    { // term '//' factor
14034
1.24M
        if (p->error_indicator) {
14035
220
            p->level--;
14036
220
            return NULL;
14037
220
        }
14038
1.24M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '//' factor"));
14039
1.24M
        Token * _literal;
14040
1.24M
        expr_ty a;
14041
1.24M
        expr_ty b;
14042
1.24M
        if (
14043
1.24M
            (a = term_rule(p))  // term
14044
1.24M
            &&
14045
1.24M
            (_literal = _PyPegen_expect_token(p, 47))  // token='//'
14046
1.24M
            &&
14047
1.24M
            (b = factor_rule(p))  // factor
14048
1.24M
        )
14049
550
        {
14050
550
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '//' factor"));
14051
550
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14052
550
            if (_token == NULL) {
14053
0
                p->level--;
14054
0
                return NULL;
14055
0
            }
14056
550
            int _end_lineno = _token->end_lineno;
14057
550
            UNUSED(_end_lineno); // Only used by EXTRA macro
14058
550
            int _end_col_offset = _token->end_col_offset;
14059
550
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14060
550
            _res = _PyAST_BinOp ( a , FloorDiv , b , EXTRA );
14061
550
            if (_res == NULL && PyErr_Occurred()) {
14062
0
                p->error_indicator = 1;
14063
0
                p->level--;
14064
0
                return NULL;
14065
0
            }
14066
550
            goto done;
14067
550
        }
14068
1.24M
        p->mark = _mark;
14069
1.24M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14070
1.24M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '//' factor"));
14071
1.24M
    }
14072
0
    { // term '%' factor
14073
1.24M
        if (p->error_indicator) {
14074
196
            p->level--;
14075
196
            return NULL;
14076
196
        }
14077
1.24M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '%' factor"));
14078
1.24M
        Token * _literal;
14079
1.24M
        expr_ty a;
14080
1.24M
        expr_ty b;
14081
1.24M
        if (
14082
1.24M
            (a = term_rule(p))  // term
14083
1.24M
            &&
14084
1.24M
            (_literal = _PyPegen_expect_token(p, 24))  // token='%'
14085
1.24M
            &&
14086
1.24M
            (b = factor_rule(p))  // factor
14087
1.24M
        )
14088
3.32k
        {
14089
3.32k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '%' factor"));
14090
3.32k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14091
3.32k
            if (_token == NULL) {
14092
0
                p->level--;
14093
0
                return NULL;
14094
0
            }
14095
3.32k
            int _end_lineno = _token->end_lineno;
14096
3.32k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14097
3.32k
            int _end_col_offset = _token->end_col_offset;
14098
3.32k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14099
3.32k
            _res = _PyAST_BinOp ( a , Mod , b , EXTRA );
14100
3.32k
            if (_res == NULL && PyErr_Occurred()) {
14101
0
                p->error_indicator = 1;
14102
0
                p->level--;
14103
0
                return NULL;
14104
0
            }
14105
3.32k
            goto done;
14106
3.32k
        }
14107
1.23M
        p->mark = _mark;
14108
1.23M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14109
1.23M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '%' factor"));
14110
1.23M
    }
14111
0
    { // term '@' factor
14112
1.23M
        if (p->error_indicator) {
14113
212
            p->level--;
14114
212
            return NULL;
14115
212
        }
14116
1.23M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '@' factor"));
14117
1.23M
        Token * _literal;
14118
1.23M
        expr_ty a;
14119
1.23M
        expr_ty b;
14120
1.23M
        if (
14121
1.23M
            (a = term_rule(p))  // term
14122
1.23M
            &&
14123
1.23M
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
14124
1.23M
            &&
14125
1.23M
            (b = factor_rule(p))  // factor
14126
1.23M
        )
14127
2.54k
        {
14128
2.54k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '@' factor"));
14129
2.54k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14130
2.54k
            if (_token == NULL) {
14131
0
                p->level--;
14132
0
                return NULL;
14133
0
            }
14134
2.54k
            int _end_lineno = _token->end_lineno;
14135
2.54k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14136
2.54k
            int _end_col_offset = _token->end_col_offset;
14137
2.54k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14138
2.54k
            _res = CHECK_VERSION ( expr_ty , 5 , "The '@' operator is" , _PyAST_BinOp ( a , MatMult , b , EXTRA ) );
14139
2.54k
            if (_res == NULL && PyErr_Occurred()) {
14140
0
                p->error_indicator = 1;
14141
0
                p->level--;
14142
0
                return NULL;
14143
0
            }
14144
2.54k
            goto done;
14145
2.54k
        }
14146
1.23M
        p->mark = _mark;
14147
1.23M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14148
1.23M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '@' factor"));
14149
1.23M
    }
14150
1.23M
    if (p->call_invalid_rules) { // invalid_factor
14151
305k
        if (p->error_indicator) {
14152
220
            p->level--;
14153
220
            return NULL;
14154
220
        }
14155
305k
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_factor"));
14156
305k
        void *invalid_factor_var;
14157
305k
        if (
14158
305k
            (invalid_factor_var = invalid_factor_rule(p))  // invalid_factor
14159
305k
        )
14160
0
        {
14161
0
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_factor"));
14162
0
            _res = invalid_factor_var;
14163
0
            goto done;
14164
0
        }
14165
305k
        p->mark = _mark;
14166
305k
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14167
305k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_factor"));
14168
305k
    }
14169
1.23M
    { // factor
14170
1.23M
        if (p->error_indicator) {
14171
304
            p->level--;
14172
304
            return NULL;
14173
304
        }
14174
1.23M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "factor"));
14175
1.23M
        expr_ty factor_var;
14176
1.23M
        if (
14177
1.23M
            (factor_var = factor_rule(p))  // factor
14178
1.23M
        )
14179
920k
        {
14180
920k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "factor"));
14181
920k
            _res = factor_var;
14182
920k
            goto done;
14183
920k
        }
14184
315k
        p->mark = _mark;
14185
315k
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14186
315k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "factor"));
14187
315k
    }
14188
0
    _res = NULL;
14189
1.25M
  done:
14190
1.25M
    p->level--;
14191
1.25M
    return _res;
14192
315k
}
14193
14194
// factor: '+' factor | '-' factor | '~' factor | power
14195
static expr_ty
14196
factor_rule(Parser *p)
14197
1.43M
{
14198
1.43M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14199
1
        _Pypegen_stack_overflow(p);
14200
1
    }
14201
1.43M
    if (p->error_indicator) {
14202
1
        p->level--;
14203
1
        return NULL;
14204
1
    }
14205
1.43M
    expr_ty _res = NULL;
14206
1.43M
    if (_PyPegen_is_memoized(p, factor_type, &_res)) {
14207
462k
        p->level--;
14208
462k
        return _res;
14209
462k
    }
14210
973k
    int _mark = p->mark;
14211
973k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14212
0
        p->error_indicator = 1;
14213
0
        p->level--;
14214
0
        return NULL;
14215
0
    }
14216
973k
    int _start_lineno = p->tokens[_mark]->lineno;
14217
973k
    UNUSED(_start_lineno); // Only used by EXTRA macro
14218
973k
    int _start_col_offset = p->tokens[_mark]->col_offset;
14219
973k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14220
973k
    { // '+' factor
14221
973k
        if (p->error_indicator) {
14222
0
            p->level--;
14223
0
            return NULL;
14224
0
        }
14225
973k
        D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+' factor"));
14226
973k
        Token * _literal;
14227
973k
        expr_ty a;
14228
973k
        if (
14229
973k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
14230
973k
            &&
14231
973k
            (a = factor_rule(p))  // factor
14232
973k
        )
14233
51.4k
        {
14234
51.4k
            D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+' factor"));
14235
51.4k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14236
51.4k
            if (_token == NULL) {
14237
0
                p->level--;
14238
0
                return NULL;
14239
0
            }
14240
51.4k
            int _end_lineno = _token->end_lineno;
14241
51.4k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14242
51.4k
            int _end_col_offset = _token->end_col_offset;
14243
51.4k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14244
51.4k
            _res = _PyAST_UnaryOp ( UAdd , a , EXTRA );
14245
51.4k
            if (_res == NULL && PyErr_Occurred()) {
14246
0
                p->error_indicator = 1;
14247
0
                p->level--;
14248
0
                return NULL;
14249
0
            }
14250
51.4k
            goto done;
14251
51.4k
        }
14252
922k
        p->mark = _mark;
14253
922k
        D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14254
922k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+' factor"));
14255
922k
    }
14256
0
    { // '-' factor
14257
922k
        if (p->error_indicator) {
14258
489
            p->level--;
14259
489
            return NULL;
14260
489
        }
14261
921k
        D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' factor"));
14262
921k
        Token * _literal;
14263
921k
        expr_ty a;
14264
921k
        if (
14265
921k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
14266
921k
            &&
14267
921k
            (a = factor_rule(p))  // factor
14268
921k
        )
14269
98.6k
        {
14270
98.6k
            D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' factor"));
14271
98.6k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14272
98.6k
            if (_token == NULL) {
14273
0
                p->level--;
14274
0
                return NULL;
14275
0
            }
14276
98.6k
            int _end_lineno = _token->end_lineno;
14277
98.6k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14278
98.6k
            int _end_col_offset = _token->end_col_offset;
14279
98.6k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14280
98.6k
            _res = _PyAST_UnaryOp ( USub , a , EXTRA );
14281
98.6k
            if (_res == NULL && PyErr_Occurred()) {
14282
0
                p->error_indicator = 1;
14283
0
                p->level--;
14284
0
                return NULL;
14285
0
            }
14286
98.6k
            goto done;
14287
98.6k
        }
14288
823k
        p->mark = _mark;
14289
823k
        D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14290
823k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' factor"));
14291
823k
    }
14292
0
    { // '~' factor
14293
823k
        if (p->error_indicator) {
14294
2.60k
            p->level--;
14295
2.60k
            return NULL;
14296
2.60k
        }
14297
820k
        D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'~' factor"));
14298
820k
        Token * _literal;
14299
820k
        expr_ty a;
14300
820k
        if (
14301
820k
            (_literal = _PyPegen_expect_token(p, 31))  // token='~'
14302
820k
            &&
14303
820k
            (a = factor_rule(p))  // factor
14304
820k
        )
14305
24.6k
        {
14306
24.6k
            D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'~' factor"));
14307
24.6k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14308
24.6k
            if (_token == NULL) {
14309
0
                p->level--;
14310
0
                return NULL;
14311
0
            }
14312
24.6k
            int _end_lineno = _token->end_lineno;
14313
24.6k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14314
24.6k
            int _end_col_offset = _token->end_col_offset;
14315
24.6k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14316
24.6k
            _res = _PyAST_UnaryOp ( Invert , a , EXTRA );
14317
24.6k
            if (_res == NULL && PyErr_Occurred()) {
14318
0
                p->error_indicator = 1;
14319
0
                p->level--;
14320
0
                return NULL;
14321
0
            }
14322
24.6k
            goto done;
14323
24.6k
        }
14324
796k
        p->mark = _mark;
14325
796k
        D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14326
796k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'~' factor"));
14327
796k
    }
14328
0
    { // power
14329
796k
        if (p->error_indicator) {
14330
271
            p->level--;
14331
271
            return NULL;
14332
271
        }
14333
795k
        D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "power"));
14334
795k
        expr_ty power_var;
14335
795k
        if (
14336
795k
            (power_var = power_rule(p))  // power
14337
795k
        )
14338
474k
        {
14339
474k
            D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "power"));
14340
474k
            _res = power_var;
14341
474k
            goto done;
14342
474k
        }
14343
320k
        p->mark = _mark;
14344
320k
        D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14345
320k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "power"));
14346
320k
    }
14347
0
    _res = NULL;
14348
970k
  done:
14349
970k
    _PyPegen_insert_memo(p, _mark, factor_type, _res);
14350
970k
    p->level--;
14351
970k
    return _res;
14352
320k
}
14353
14354
// power: await_primary '**' factor | await_primary
14355
static expr_ty
14356
power_rule(Parser *p)
14357
795k
{
14358
795k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14359
2
        _Pypegen_stack_overflow(p);
14360
2
    }
14361
795k
    if (p->error_indicator) {
14362
2
        p->level--;
14363
2
        return NULL;
14364
2
    }
14365
795k
    expr_ty _res = NULL;
14366
795k
    int _mark = p->mark;
14367
795k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14368
0
        p->error_indicator = 1;
14369
0
        p->level--;
14370
0
        return NULL;
14371
0
    }
14372
795k
    int _start_lineno = p->tokens[_mark]->lineno;
14373
795k
    UNUSED(_start_lineno); // Only used by EXTRA macro
14374
795k
    int _start_col_offset = p->tokens[_mark]->col_offset;
14375
795k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14376
795k
    { // await_primary '**' factor
14377
795k
        if (p->error_indicator) {
14378
0
            p->level--;
14379
0
            return NULL;
14380
0
        }
14381
795k
        D(fprintf(stderr, "%*c> power[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "await_primary '**' factor"));
14382
795k
        Token * _literal;
14383
795k
        expr_ty a;
14384
795k
        expr_ty b;
14385
795k
        if (
14386
795k
            (a = await_primary_rule(p))  // await_primary
14387
795k
            &&
14388
795k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
14389
795k
            &&
14390
795k
            (b = factor_rule(p))  // factor
14391
795k
        )
14392
1.30k
        {
14393
1.30k
            D(fprintf(stderr, "%*c+ power[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "await_primary '**' factor"));
14394
1.30k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14395
1.30k
            if (_token == NULL) {
14396
0
                p->level--;
14397
0
                return NULL;
14398
0
            }
14399
1.30k
            int _end_lineno = _token->end_lineno;
14400
1.30k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14401
1.30k
            int _end_col_offset = _token->end_col_offset;
14402
1.30k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14403
1.30k
            _res = _PyAST_BinOp ( a , Pow , b , EXTRA );
14404
1.30k
            if (_res == NULL && PyErr_Occurred()) {
14405
0
                p->error_indicator = 1;
14406
0
                p->level--;
14407
0
                return NULL;
14408
0
            }
14409
1.30k
            goto done;
14410
1.30k
        }
14411
794k
        p->mark = _mark;
14412
794k
        D(fprintf(stderr, "%*c%s power[%d-%d]: %s failed!\n", p->level, ' ',
14413
794k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "await_primary '**' factor"));
14414
794k
    }
14415
0
    { // await_primary
14416
794k
        if (p->error_indicator) {
14417
38.4k
            p->level--;
14418
38.4k
            return NULL;
14419
38.4k
        }
14420
756k
        D(fprintf(stderr, "%*c> power[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "await_primary"));
14421
756k
        expr_ty await_primary_var;
14422
756k
        if (
14423
756k
            (await_primary_var = await_primary_rule(p))  // await_primary
14424
756k
        )
14425
473k
        {
14426
473k
            D(fprintf(stderr, "%*c+ power[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "await_primary"));
14427
473k
            _res = await_primary_var;
14428
473k
            goto done;
14429
473k
        }
14430
282k
        p->mark = _mark;
14431
282k
        D(fprintf(stderr, "%*c%s power[%d-%d]: %s failed!\n", p->level, ' ',
14432
282k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "await_primary"));
14433
282k
    }
14434
0
    _res = NULL;
14435
757k
  done:
14436
757k
    p->level--;
14437
757k
    return _res;
14438
282k
}
14439
14440
// await_primary: 'await' primary | primary
14441
static expr_ty
14442
await_primary_rule(Parser *p)
14443
1.55M
{
14444
1.55M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14445
1
        _Pypegen_stack_overflow(p);
14446
1
    }
14447
1.55M
    if (p->error_indicator) {
14448
1
        p->level--;
14449
1
        return NULL;
14450
1
    }
14451
1.55M
    expr_ty _res = NULL;
14452
1.55M
    if (_PyPegen_is_memoized(p, await_primary_type, &_res)) {
14453
756k
        p->level--;
14454
756k
        return _res;
14455
756k
    }
14456
795k
    int _mark = p->mark;
14457
795k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14458
0
        p->error_indicator = 1;
14459
0
        p->level--;
14460
0
        return NULL;
14461
0
    }
14462
795k
    int _start_lineno = p->tokens[_mark]->lineno;
14463
795k
    UNUSED(_start_lineno); // Only used by EXTRA macro
14464
795k
    int _start_col_offset = p->tokens[_mark]->col_offset;
14465
795k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14466
795k
    { // 'await' primary
14467
795k
        if (p->error_indicator) {
14468
0
            p->level--;
14469
0
            return NULL;
14470
0
        }
14471
795k
        D(fprintf(stderr, "%*c> await_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'await' primary"));
14472
795k
        Token * _keyword;
14473
795k
        expr_ty a;
14474
795k
        if (
14475
795k
            (_keyword = _PyPegen_expect_token(p, 598))  // token='await'
14476
795k
            &&
14477
795k
            (a = primary_rule(p))  // primary
14478
795k
        )
14479
390
        {
14480
390
            D(fprintf(stderr, "%*c+ await_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'await' primary"));
14481
390
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14482
390
            if (_token == NULL) {
14483
0
                p->level--;
14484
0
                return NULL;
14485
0
            }
14486
390
            int _end_lineno = _token->end_lineno;
14487
390
            UNUSED(_end_lineno); // Only used by EXTRA macro
14488
390
            int _end_col_offset = _token->end_col_offset;
14489
390
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14490
390
            _res = CHECK_VERSION ( expr_ty , 5 , "Await expressions are" , _PyAST_Await ( a , EXTRA ) );
14491
390
            if (_res == NULL && PyErr_Occurred()) {
14492
0
                p->error_indicator = 1;
14493
0
                p->level--;
14494
0
                return NULL;
14495
0
            }
14496
390
            goto done;
14497
390
        }
14498
795k
        p->mark = _mark;
14499
795k
        D(fprintf(stderr, "%*c%s await_primary[%d-%d]: %s failed!\n", p->level, ' ',
14500
795k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'await' primary"));
14501
795k
    }
14502
0
    { // primary
14503
795k
        if (p->error_indicator) {
14504
194
            p->level--;
14505
194
            return NULL;
14506
194
        }
14507
795k
        D(fprintf(stderr, "%*c> await_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary"));
14508
795k
        expr_ty primary_var;
14509
795k
        if (
14510
795k
            (primary_var = primary_rule(p))  // primary
14511
795k
        )
14512
474k
        {
14513
474k
            D(fprintf(stderr, "%*c+ await_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary"));
14514
474k
            _res = primary_var;
14515
474k
            goto done;
14516
474k
        }
14517
320k
        p->mark = _mark;
14518
320k
        D(fprintf(stderr, "%*c%s await_primary[%d-%d]: %s failed!\n", p->level, ' ',
14519
320k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary"));
14520
320k
    }
14521
0
    _res = NULL;
14522
795k
  done:
14523
795k
    _PyPegen_insert_memo(p, _mark, await_primary_type, _res);
14524
795k
    p->level--;
14525
795k
    return _res;
14526
320k
}
14527
14528
// Left-recursive
14529
// primary:
14530
//     | primary '.' NAME
14531
//     | primary genexp
14532
//     | primary '(' arguments? ')'
14533
//     | primary '[' slices ']'
14534
//     | atom
14535
static expr_ty primary_raw(Parser *);
14536
static expr_ty
14537
primary_rule(Parser *p)
14538
6.04M
{
14539
6.04M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14540
2
        _Pypegen_stack_overflow(p);
14541
2
    }
14542
6.04M
    expr_ty _res = NULL;
14543
6.04M
    if (_PyPegen_is_memoized(p, primary_type, &_res)) {
14544
5.24M
        p->level--;
14545
5.24M
        return _res;
14546
5.24M
    }
14547
795k
    int _mark = p->mark;
14548
795k
    int _resmark = p->mark;
14549
1.34M
    while (1) {
14550
1.34M
        int tmpvar_8 = _PyPegen_update_memo(p, _mark, primary_type, _res);
14551
1.34M
        if (tmpvar_8) {
14552
0
            p->level--;
14553
0
            return _res;
14554
0
        }
14555
1.34M
        p->mark = _mark;
14556
1.34M
        void *_raw = primary_raw(p);
14557
1.34M
        if (p->error_indicator) {
14558
38.2k
            p->level--;
14559
38.2k
            return NULL;
14560
38.2k
        }
14561
1.30M
        if (_raw == NULL || p->mark <= _resmark)
14562
757k
            break;
14563
544k
        _resmark = p->mark;
14564
544k
        _res = _raw;
14565
544k
    }
14566
757k
    p->mark = _resmark;
14567
757k
    p->level--;
14568
757k
    return _res;
14569
795k
}
14570
static expr_ty
14571
primary_raw(Parser *p)
14572
1.34M
{
14573
1.34M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14574
1
        _Pypegen_stack_overflow(p);
14575
1
    }
14576
1.34M
    if (p->error_indicator) {
14577
2
        p->level--;
14578
2
        return NULL;
14579
2
    }
14580
1.34M
    expr_ty _res = NULL;
14581
1.34M
    int _mark = p->mark;
14582
1.34M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14583
0
        p->error_indicator = 1;
14584
0
        p->level--;
14585
0
        return NULL;
14586
0
    }
14587
1.34M
    int _start_lineno = p->tokens[_mark]->lineno;
14588
1.34M
    UNUSED(_start_lineno); // Only used by EXTRA macro
14589
1.34M
    int _start_col_offset = p->tokens[_mark]->col_offset;
14590
1.34M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14591
1.34M
    { // primary '.' NAME
14592
1.34M
        if (p->error_indicator) {
14593
0
            p->level--;
14594
0
            return NULL;
14595
0
        }
14596
1.34M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '.' NAME"));
14597
1.34M
        Token * _literal;
14598
1.34M
        expr_ty a;
14599
1.34M
        expr_ty b;
14600
1.34M
        if (
14601
1.34M
            (a = primary_rule(p))  // primary
14602
1.34M
            &&
14603
1.34M
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
14604
1.34M
            &&
14605
1.34M
            (b = _PyPegen_name_token(p))  // NAME
14606
1.34M
        )
14607
23.5k
        {
14608
23.5k
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '.' NAME"));
14609
23.5k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14610
23.5k
            if (_token == NULL) {
14611
0
                p->level--;
14612
0
                return NULL;
14613
0
            }
14614
23.5k
            int _end_lineno = _token->end_lineno;
14615
23.5k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14616
23.5k
            int _end_col_offset = _token->end_col_offset;
14617
23.5k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14618
23.5k
            _res = _PyAST_Attribute ( a , b -> v . Name . id , Load , EXTRA );
14619
23.5k
            if (_res == NULL && PyErr_Occurred()) {
14620
0
                p->error_indicator = 1;
14621
0
                p->level--;
14622
0
                return NULL;
14623
0
            }
14624
23.5k
            goto done;
14625
23.5k
        }
14626
1.31M
        p->mark = _mark;
14627
1.31M
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14628
1.31M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '.' NAME"));
14629
1.31M
    }
14630
0
    { // primary genexp
14631
1.31M
        if (p->error_indicator) {
14632
345
            p->level--;
14633
345
            return NULL;
14634
345
        }
14635
1.31M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary genexp"));
14636
1.31M
        expr_ty a;
14637
1.31M
        expr_ty b;
14638
1.31M
        if (
14639
1.31M
            (a = primary_rule(p))  // primary
14640
1.31M
            &&
14641
1.31M
            (b = genexp_rule(p))  // genexp
14642
1.31M
        )
14643
820
        {
14644
820
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary genexp"));
14645
820
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14646
820
            if (_token == NULL) {
14647
0
                p->level--;
14648
0
                return NULL;
14649
0
            }
14650
820
            int _end_lineno = _token->end_lineno;
14651
820
            UNUSED(_end_lineno); // Only used by EXTRA macro
14652
820
            int _end_col_offset = _token->end_col_offset;
14653
820
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14654
820
            _res = _PyAST_Call ( a , CHECK ( asdl_expr_seq* , ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
14655
820
            if (_res == NULL && PyErr_Occurred()) {
14656
0
                p->error_indicator = 1;
14657
0
                p->level--;
14658
0
                return NULL;
14659
0
            }
14660
820
            goto done;
14661
820
        }
14662
1.31M
        p->mark = _mark;
14663
1.31M
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14664
1.31M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary genexp"));
14665
1.31M
    }
14666
0
    { // primary '(' arguments? ')'
14667
1.31M
        if (p->error_indicator) {
14668
3.70k
            p->level--;
14669
3.70k
            return NULL;
14670
3.70k
        }
14671
1.31M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '(' arguments? ')'"));
14672
1.31M
        Token * _literal;
14673
1.31M
        Token * _literal_1;
14674
1.31M
        expr_ty a;
14675
1.31M
        void *b;
14676
1.31M
        if (
14677
1.31M
            (a = primary_rule(p))  // primary
14678
1.31M
            &&
14679
1.31M
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
14680
1.31M
            &&
14681
1.31M
            (b = arguments_rule(p), !p->error_indicator)  // arguments?
14682
1.31M
            &&
14683
1.31M
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
14684
1.31M
        )
14685
32.5k
        {
14686
32.5k
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '(' arguments? ')'"));
14687
32.5k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14688
32.5k
            if (_token == NULL) {
14689
0
                p->level--;
14690
0
                return NULL;
14691
0
            }
14692
32.5k
            int _end_lineno = _token->end_lineno;
14693
32.5k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14694
32.5k
            int _end_col_offset = _token->end_col_offset;
14695
32.5k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14696
32.5k
            _res = _PyAST_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
14697
32.5k
            if (_res == NULL && PyErr_Occurred()) {
14698
0
                p->error_indicator = 1;
14699
0
                p->level--;
14700
0
                return NULL;
14701
0
            }
14702
32.5k
            goto done;
14703
32.5k
        }
14704
1.27M
        p->mark = _mark;
14705
1.27M
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14706
1.27M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '(' arguments? ')'"));
14707
1.27M
    }
14708
0
    { // primary '[' slices ']'
14709
1.27M
        if (p->error_indicator) {
14710
2.42k
            p->level--;
14711
2.42k
            return NULL;
14712
2.42k
        }
14713
1.27M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '[' slices ']'"));
14714
1.27M
        Token * _literal;
14715
1.27M
        Token * _literal_1;
14716
1.27M
        expr_ty a;
14717
1.27M
        expr_ty b;
14718
1.27M
        if (
14719
1.27M
            (a = primary_rule(p))  // primary
14720
1.27M
            &&
14721
1.27M
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
14722
1.27M
            &&
14723
1.27M
            (b = slices_rule(p))  // slices
14724
1.27M
            &&
14725
1.27M
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
14726
1.27M
        )
14727
4.89k
        {
14728
4.89k
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '[' slices ']'"));
14729
4.89k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14730
4.89k
            if (_token == NULL) {
14731
0
                p->level--;
14732
0
                return NULL;
14733
0
            }
14734
4.89k
            int _end_lineno = _token->end_lineno;
14735
4.89k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14736
4.89k
            int _end_col_offset = _token->end_col_offset;
14737
4.89k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14738
4.89k
            _res = _PyAST_Subscript ( a , b , Load , EXTRA );
14739
4.89k
            if (_res == NULL && PyErr_Occurred()) {
14740
0
                p->error_indicator = 1;
14741
0
                p->level--;
14742
0
                return NULL;
14743
0
            }
14744
4.89k
            goto done;
14745
4.89k
        }
14746
1.27M
        p->mark = _mark;
14747
1.27M
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14748
1.27M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '[' slices ']'"));
14749
1.27M
    }
14750
0
    { // atom
14751
1.27M
        if (p->error_indicator) {
14752
940
            p->level--;
14753
940
            return NULL;
14754
940
        }
14755
1.27M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "atom"));
14756
1.27M
        expr_ty atom_var;
14757
1.27M
        if (
14758
1.27M
            (atom_var = atom_rule(p))  // atom
14759
1.27M
        )
14760
957k
        {
14761
957k
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "atom"));
14762
957k
            _res = atom_var;
14763
957k
            goto done;
14764
957k
        }
14765
313k
        p->mark = _mark;
14766
313k
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14767
313k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "atom"));
14768
313k
    }
14769
0
    _res = NULL;
14770
1.33M
  done:
14771
1.33M
    p->level--;
14772
1.33M
    return _res;
14773
313k
}
14774
14775
// slices: slice !',' | ','.(slice | starred_expression)+ ','?
14776
static expr_ty
14777
slices_rule(Parser *p)
14778
18.4k
{
14779
18.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14780
0
        _Pypegen_stack_overflow(p);
14781
0
    }
14782
18.4k
    if (p->error_indicator) {
14783
0
        p->level--;
14784
0
        return NULL;
14785
0
    }
14786
18.4k
    expr_ty _res = NULL;
14787
18.4k
    int _mark = p->mark;
14788
18.4k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14789
45
        p->error_indicator = 1;
14790
45
        p->level--;
14791
45
        return NULL;
14792
45
    }
14793
18.4k
    int _start_lineno = p->tokens[_mark]->lineno;
14794
18.4k
    UNUSED(_start_lineno); // Only used by EXTRA macro
14795
18.4k
    int _start_col_offset = p->tokens[_mark]->col_offset;
14796
18.4k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14797
18.4k
    { // slice !','
14798
18.4k
        if (p->error_indicator) {
14799
0
            p->level--;
14800
0
            return NULL;
14801
0
        }
14802
18.4k
        D(fprintf(stderr, "%*c> slices[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice !','"));
14803
18.4k
        expr_ty a;
14804
18.4k
        if (
14805
18.4k
            (a = slice_rule(p))  // slice
14806
18.4k
            &&
14807
18.4k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
14808
18.4k
        )
14809
12.6k
        {
14810
12.6k
            D(fprintf(stderr, "%*c+ slices[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice !','"));
14811
12.6k
            _res = a;
14812
12.6k
            if (_res == NULL && PyErr_Occurred()) {
14813
0
                p->error_indicator = 1;
14814
0
                p->level--;
14815
0
                return NULL;
14816
0
            }
14817
12.6k
            goto done;
14818
12.6k
        }
14819
5.76k
        p->mark = _mark;
14820
5.76k
        D(fprintf(stderr, "%*c%s slices[%d-%d]: %s failed!\n", p->level, ' ',
14821
5.76k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice !','"));
14822
5.76k
    }
14823
0
    { // ','.(slice | starred_expression)+ ','?
14824
5.76k
        if (p->error_indicator) {
14825
936
            p->level--;
14826
936
            return NULL;
14827
936
        }
14828
4.83k
        D(fprintf(stderr, "%*c> slices[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.(slice | starred_expression)+ ','?"));
14829
4.83k
        void *_opt_var;
14830
4.83k
        UNUSED(_opt_var); // Silence compiler warnings
14831
4.83k
        asdl_expr_seq* a;
14832
4.83k
        if (
14833
4.83k
            (a = (asdl_expr_seq*)_gather_64_rule(p))  // ','.(slice | starred_expression)+
14834
4.83k
            &&
14835
4.83k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
14836
4.83k
        )
14837
2.57k
        {
14838
2.57k
            D(fprintf(stderr, "%*c+ slices[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.(slice | starred_expression)+ ','?"));
14839
2.57k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14840
2.57k
            if (_token == NULL) {
14841
0
                p->level--;
14842
0
                return NULL;
14843
0
            }
14844
2.57k
            int _end_lineno = _token->end_lineno;
14845
2.57k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14846
2.57k
            int _end_col_offset = _token->end_col_offset;
14847
2.57k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14848
2.57k
            _res = _PyAST_Tuple ( a , Load , EXTRA );
14849
2.57k
            if (_res == NULL && PyErr_Occurred()) {
14850
0
                p->error_indicator = 1;
14851
0
                p->level--;
14852
0
                return NULL;
14853
0
            }
14854
2.57k
            goto done;
14855
2.57k
        }
14856
2.25k
        p->mark = _mark;
14857
2.25k
        D(fprintf(stderr, "%*c%s slices[%d-%d]: %s failed!\n", p->level, ' ',
14858
2.25k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.(slice | starred_expression)+ ','?"));
14859
2.25k
    }
14860
0
    _res = NULL;
14861
17.4k
  done:
14862
17.4k
    p->level--;
14863
17.4k
    return _res;
14864
2.25k
}
14865
14866
// slice: expression? ':' expression? [':' expression?] | named_expression
14867
static expr_ty
14868
slice_rule(Parser *p)
14869
40.6k
{
14870
40.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14871
1
        _Pypegen_stack_overflow(p);
14872
1
    }
14873
40.6k
    if (p->error_indicator) {
14874
1
        p->level--;
14875
1
        return NULL;
14876
1
    }
14877
40.6k
    expr_ty _res = NULL;
14878
40.6k
    int _mark = p->mark;
14879
40.6k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14880
15
        p->error_indicator = 1;
14881
15
        p->level--;
14882
15
        return NULL;
14883
15
    }
14884
40.6k
    int _start_lineno = p->tokens[_mark]->lineno;
14885
40.6k
    UNUSED(_start_lineno); // Only used by EXTRA macro
14886
40.6k
    int _start_col_offset = p->tokens[_mark]->col_offset;
14887
40.6k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14888
40.6k
    { // expression? ':' expression? [':' expression?]
14889
40.6k
        if (p->error_indicator) {
14890
0
            p->level--;
14891
0
            return NULL;
14892
0
        }
14893
40.6k
        D(fprintf(stderr, "%*c> slice[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14894
40.6k
        Token * _literal;
14895
40.6k
        void *a;
14896
40.6k
        void *b;
14897
40.6k
        void *c;
14898
40.6k
        if (
14899
40.6k
            (a = expression_rule(p), !p->error_indicator)  // expression?
14900
40.6k
            &&
14901
40.6k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
14902
40.6k
            &&
14903
40.6k
            (b = expression_rule(p), !p->error_indicator)  // expression?
14904
40.6k
            &&
14905
40.6k
            (c = _tmp_65_rule(p), !p->error_indicator)  // [':' expression?]
14906
40.6k
        )
14907
14.9k
        {
14908
14.9k
            D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14909
14.9k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14910
14.9k
            if (_token == NULL) {
14911
0
                p->level--;
14912
0
                return NULL;
14913
0
            }
14914
14.9k
            int _end_lineno = _token->end_lineno;
14915
14.9k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14916
14.9k
            int _end_col_offset = _token->end_col_offset;
14917
14.9k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14918
14.9k
            _res = _PyAST_Slice ( a , b , c , EXTRA );
14919
14.9k
            if (_res == NULL && PyErr_Occurred()) {
14920
0
                p->error_indicator = 1;
14921
0
                p->level--;
14922
0
                return NULL;
14923
0
            }
14924
14.9k
            goto done;
14925
14.9k
        }
14926
25.6k
        p->mark = _mark;
14927
25.6k
        D(fprintf(stderr, "%*c%s slice[%d-%d]: %s failed!\n", p->level, ' ',
14928
25.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14929
25.6k
    }
14930
0
    { // named_expression
14931
25.6k
        if (p->error_indicator) {
14932
1.12k
            p->level--;
14933
1.12k
            return NULL;
14934
1.12k
        }
14935
24.5k
        D(fprintf(stderr, "%*c> slice[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
14936
24.5k
        expr_ty a;
14937
24.5k
        if (
14938
24.5k
            (a = named_expression_rule(p))  // named_expression
14939
24.5k
        )
14940
18.5k
        {
14941
18.5k
            D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
14942
18.5k
            _res = a;
14943
18.5k
            if (_res == NULL && PyErr_Occurred()) {
14944
0
                p->error_indicator = 1;
14945
0
                p->level--;
14946
0
                return NULL;
14947
0
            }
14948
18.5k
            goto done;
14949
18.5k
        }
14950
5.98k
        p->mark = _mark;
14951
5.98k
        D(fprintf(stderr, "%*c%s slice[%d-%d]: %s failed!\n", p->level, ' ',
14952
5.98k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
14953
5.98k
    }
14954
0
    _res = NULL;
14955
39.4k
  done:
14956
39.4k
    p->level--;
14957
39.4k
    return _res;
14958
5.98k
}
14959
14960
// atom:
14961
//     | NAME
14962
//     | 'True'
14963
//     | 'False'
14964
//     | 'None'
14965
//     | &(STRING | FSTRING_START | TSTRING_START) strings
14966
//     | NUMBER
14967
//     | &'(' (tuple | group | genexp)
14968
//     | &'[' (list | listcomp)
14969
//     | &'{' (dict | set | dictcomp | setcomp)
14970
//     | '...'
14971
static expr_ty
14972
atom_rule(Parser *p)
14973
1.56M
{
14974
1.56M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14975
0
        _Pypegen_stack_overflow(p);
14976
0
    }
14977
1.56M
    if (p->error_indicator) {
14978
0
        p->level--;
14979
0
        return NULL;
14980
0
    }
14981
1.56M
    expr_ty _res = NULL;
14982
1.56M
    int _mark = p->mark;
14983
1.56M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14984
0
        p->error_indicator = 1;
14985
0
        p->level--;
14986
0
        return NULL;
14987
0
    }
14988
1.56M
    int _start_lineno = p->tokens[_mark]->lineno;
14989
1.56M
    UNUSED(_start_lineno); // Only used by EXTRA macro
14990
1.56M
    int _start_col_offset = p->tokens[_mark]->col_offset;
14991
1.56M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14992
1.56M
    { // NAME
14993
1.56M
        if (p->error_indicator) {
14994
0
            p->level--;
14995
0
            return NULL;
14996
0
        }
14997
1.56M
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
14998
1.56M
        expr_ty name_var;
14999
1.56M
        if (
15000
1.56M
            (name_var = _PyPegen_name_token(p))  // NAME
15001
1.56M
        )
15002
703k
        {
15003
703k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
15004
703k
            _res = name_var;
15005
703k
            goto done;
15006
703k
        }
15007
861k
        p->mark = _mark;
15008
861k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15009
861k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
15010
861k
    }
15011
0
    { // 'True'
15012
861k
        if (p->error_indicator) {
15013
1
            p->level--;
15014
1
            return NULL;
15015
1
        }
15016
861k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
15017
861k
        Token * _keyword;
15018
861k
        if (
15019
861k
            (_keyword = _PyPegen_expect_token(p, 623))  // token='True'
15020
861k
        )
15021
3.71k
        {
15022
3.71k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
15023
3.71k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15024
3.71k
            if (_token == NULL) {
15025
0
                p->level--;
15026
0
                return NULL;
15027
0
            }
15028
3.71k
            int _end_lineno = _token->end_lineno;
15029
3.71k
            UNUSED(_end_lineno); // Only used by EXTRA macro
15030
3.71k
            int _end_col_offset = _token->end_col_offset;
15031
3.71k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15032
3.71k
            _res = _PyAST_Constant ( Py_True , NULL , EXTRA );
15033
3.71k
            if (_res == NULL && PyErr_Occurred()) {
15034
0
                p->error_indicator = 1;
15035
0
                p->level--;
15036
0
                return NULL;
15037
0
            }
15038
3.71k
            goto done;
15039
3.71k
        }
15040
857k
        p->mark = _mark;
15041
857k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15042
857k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
15043
857k
    }
15044
0
    { // 'False'
15045
857k
        if (p->error_indicator) {
15046
0
            p->level--;
15047
0
            return NULL;
15048
0
        }
15049
857k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
15050
857k
        Token * _keyword;
15051
857k
        if (
15052
857k
            (_keyword = _PyPegen_expect_token(p, 625))  // token='False'
15053
857k
        )
15054
2.58k
        {
15055
2.58k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
15056
2.58k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15057
2.58k
            if (_token == NULL) {
15058
0
                p->level--;
15059
0
                return NULL;
15060
0
            }
15061
2.58k
            int _end_lineno = _token->end_lineno;
15062
2.58k
            UNUSED(_end_lineno); // Only used by EXTRA macro
15063
2.58k
            int _end_col_offset = _token->end_col_offset;
15064
2.58k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15065
2.58k
            _res = _PyAST_Constant ( Py_False , NULL , EXTRA );
15066
2.58k
            if (_res == NULL && PyErr_Occurred()) {
15067
0
                p->error_indicator = 1;
15068
0
                p->level--;
15069
0
                return NULL;
15070
0
            }
15071
2.58k
            goto done;
15072
2.58k
        }
15073
854k
        p->mark = _mark;
15074
854k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15075
854k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
15076
854k
    }
15077
0
    { // 'None'
15078
854k
        if (p->error_indicator) {
15079
0
            p->level--;
15080
0
            return NULL;
15081
0
        }
15082
854k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
15083
854k
        Token * _keyword;
15084
854k
        if (
15085
854k
            (_keyword = _PyPegen_expect_token(p, 624))  // token='None'
15086
854k
        )
15087
8.88k
        {
15088
8.88k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
15089
8.88k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15090
8.88k
            if (_token == NULL) {
15091
0
                p->level--;
15092
0
                return NULL;
15093
0
            }
15094
8.88k
            int _end_lineno = _token->end_lineno;
15095
8.88k
            UNUSED(_end_lineno); // Only used by EXTRA macro
15096
8.88k
            int _end_col_offset = _token->end_col_offset;
15097
8.88k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15098
8.88k
            _res = _PyAST_Constant ( Py_None , NULL , EXTRA );
15099
8.88k
            if (_res == NULL && PyErr_Occurred()) {
15100
0
                p->error_indicator = 1;
15101
0
                p->level--;
15102
0
                return NULL;
15103
0
            }
15104
8.88k
            goto done;
15105
8.88k
        }
15106
846k
        p->mark = _mark;
15107
846k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15108
846k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
15109
846k
    }
15110
0
    { // &(STRING | FSTRING_START | TSTRING_START) strings
15111
846k
        if (p->error_indicator) {
15112
0
            p->level--;
15113
0
            return NULL;
15114
0
        }
15115
846k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
15116
846k
        expr_ty strings_var;
15117
846k
        if (
15118
846k
            _PyPegen_lookahead(1, _tmp_42_rule, p)
15119
846k
            &&
15120
846k
            (strings_var = strings_rule(p))  // strings
15121
846k
        )
15122
111k
        {
15123
111k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
15124
111k
            _res = strings_var;
15125
111k
            goto done;
15126
111k
        }
15127
734k
        p->mark = _mark;
15128
734k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15129
734k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
15130
734k
    }
15131
0
    { // NUMBER
15132
734k
        if (p->error_indicator) {
15133
4.54k
            p->level--;
15134
4.54k
            return NULL;
15135
4.54k
        }
15136
730k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
15137
730k
        expr_ty number_var;
15138
730k
        if (
15139
730k
            (number_var = _PyPegen_number_token(p))  // NUMBER
15140
730k
        )
15141
240k
        {
15142
240k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
15143
240k
            _res = number_var;
15144
240k
            goto done;
15145
240k
        }
15146
490k
        p->mark = _mark;
15147
490k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15148
490k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
15149
490k
    }
15150
0
    { // &'(' (tuple | group | genexp)
15151
490k
        if (p->error_indicator) {
15152
14
            p->level--;
15153
14
            return NULL;
15154
14
        }
15155
490k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'(' (tuple | group | genexp)"));
15156
490k
        void *_tmp_66_var;
15157
490k
        if (
15158
490k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 7)  // token='('
15159
490k
            &&
15160
490k
            (_tmp_66_var = _tmp_66_rule(p))  // tuple | group | genexp
15161
490k
        )
15162
55.0k
        {
15163
55.0k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'(' (tuple | group | genexp)"));
15164
55.0k
            _res = _tmp_66_var;
15165
55.0k
            goto done;
15166
55.0k
        }
15167
435k
        p->mark = _mark;
15168
435k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15169
435k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'(' (tuple | group | genexp)"));
15170
435k
    }
15171
0
    { // &'[' (list | listcomp)
15172
435k
        if (p->error_indicator) {
15173
7.88k
            p->level--;
15174
7.88k
            return NULL;
15175
7.88k
        }
15176
427k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'[' (list | listcomp)"));
15177
427k
        void *_tmp_67_var;
15178
427k
        if (
15179
427k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 9)  // token='['
15180
427k
            &&
15181
427k
            (_tmp_67_var = _tmp_67_rule(p))  // list | listcomp
15182
427k
        )
15183
16.8k
        {
15184
16.8k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'[' (list | listcomp)"));
15185
16.8k
            _res = _tmp_67_var;
15186
16.8k
            goto done;
15187
16.8k
        }
15188
410k
        p->mark = _mark;
15189
410k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15190
410k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'[' (list | listcomp)"));
15191
410k
    }
15192
0
    { // &'{' (dict | set | dictcomp | setcomp)
15193
410k
        if (p->error_indicator) {
15194
12.6k
            p->level--;
15195
12.6k
            return NULL;
15196
12.6k
        }
15197
397k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
15198
397k
        void *_tmp_68_var;
15199
397k
        if (
15200
397k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 25)  // token='{'
15201
397k
            &&
15202
397k
            (_tmp_68_var = _tmp_68_rule(p))  // dict | set | dictcomp | setcomp
15203
397k
        )
15204
7.17k
        {
15205
7.17k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
15206
7.17k
            _res = _tmp_68_var;
15207
7.17k
            goto done;
15208
7.17k
        }
15209
390k
        p->mark = _mark;
15210
390k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15211
390k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
15212
390k
    }
15213
0
    { // '...'
15214
390k
        if (p->error_indicator) {
15215
8.76k
            p->level--;
15216
8.76k
            return NULL;
15217
8.76k
        }
15218
381k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
15219
381k
        Token * _literal;
15220
381k
        if (
15221
381k
            (_literal = _PyPegen_expect_token(p, 52))  // token='...'
15222
381k
        )
15223
1.03k
        {
15224
1.03k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
15225
1.03k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15226
1.03k
            if (_token == NULL) {
15227
0
                p->level--;
15228
0
                return NULL;
15229
0
            }
15230
1.03k
            int _end_lineno = _token->end_lineno;
15231
1.03k
            UNUSED(_end_lineno); // Only used by EXTRA macro
15232
1.03k
            int _end_col_offset = _token->end_col_offset;
15233
1.03k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15234
1.03k
            _res = _PyAST_Constant ( Py_Ellipsis , NULL , EXTRA );
15235
1.03k
            if (_res == NULL && PyErr_Occurred()) {
15236
0
                p->error_indicator = 1;
15237
0
                p->level--;
15238
0
                return NULL;
15239
0
            }
15240
1.03k
            goto done;
15241
1.03k
        }
15242
380k
        p->mark = _mark;
15243
380k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15244
380k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
15245
380k
    }
15246
0
    _res = NULL;
15247
1.53M
  done:
15248
1.53M
    p->level--;
15249
1.53M
    return _res;
15250
380k
}
15251
15252
// group: '(' (yield_expr | named_expression) ')' | invalid_group
15253
static expr_ty
15254
group_rule(Parser *p)
15255
33.9k
{
15256
33.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15257
0
        _Pypegen_stack_overflow(p);
15258
0
    }
15259
33.9k
    if (p->error_indicator) {
15260
0
        p->level--;
15261
0
        return NULL;
15262
0
    }
15263
33.9k
    expr_ty _res = NULL;
15264
33.9k
    int _mark = p->mark;
15265
33.9k
    { // '(' (yield_expr | named_expression) ')'
15266
33.9k
        if (p->error_indicator) {
15267
0
            p->level--;
15268
0
            return NULL;
15269
0
        }
15270
33.9k
        D(fprintf(stderr, "%*c> group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
15271
33.9k
        Token * _literal;
15272
33.9k
        Token * _literal_1;
15273
33.9k
        void *a;
15274
33.9k
        if (
15275
33.9k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
15276
33.9k
            &&
15277
33.9k
            (a = _tmp_69_rule(p))  // yield_expr | named_expression
15278
33.9k
            &&
15279
33.9k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
15280
33.9k
        )
15281
9.99k
        {
15282
9.99k
            D(fprintf(stderr, "%*c+ group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
15283
9.99k
            _res = a;
15284
9.99k
            if (_res == NULL && PyErr_Occurred()) {
15285
0
                p->error_indicator = 1;
15286
0
                p->level--;
15287
0
                return NULL;
15288
0
            }
15289
9.99k
            goto done;
15290
9.99k
        }
15291
23.9k
        p->mark = _mark;
15292
23.9k
        D(fprintf(stderr, "%*c%s group[%d-%d]: %s failed!\n", p->level, ' ',
15293
23.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
15294
23.9k
    }
15295
23.9k
    if (p->call_invalid_rules) { // invalid_group
15296
8.38k
        if (p->error_indicator) {
15297
265
            p->level--;
15298
265
            return NULL;
15299
265
        }
15300
8.11k
        D(fprintf(stderr, "%*c> group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_group"));
15301
8.11k
        void *invalid_group_var;
15302
8.11k
        if (
15303
8.11k
            (invalid_group_var = invalid_group_rule(p))  // invalid_group
15304
8.11k
        )
15305
0
        {
15306
0
            D(fprintf(stderr, "%*c+ group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_group"));
15307
0
            _res = invalid_group_var;
15308
0
            goto done;
15309
0
        }
15310
8.11k
        p->mark = _mark;
15311
8.11k
        D(fprintf(stderr, "%*c%s group[%d-%d]: %s failed!\n", p->level, ' ',
15312
8.11k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_group"));
15313
8.11k
    }
15314
23.6k
    _res = NULL;
15315
33.6k
  done:
15316
33.6k
    p->level--;
15317
33.6k
    return _res;
15318
23.6k
}
15319
15320
// lambdef: 'lambda' lambda_params? ':' expression
15321
static expr_ty
15322
lambdef_rule(Parser *p)
15323
320k
{
15324
320k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15325
0
        _Pypegen_stack_overflow(p);
15326
0
    }
15327
320k
    if (p->error_indicator) {
15328
0
        p->level--;
15329
0
        return NULL;
15330
0
    }
15331
320k
    expr_ty _res = NULL;
15332
320k
    int _mark = p->mark;
15333
320k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15334
0
        p->error_indicator = 1;
15335
0
        p->level--;
15336
0
        return NULL;
15337
0
    }
15338
320k
    int _start_lineno = p->tokens[_mark]->lineno;
15339
320k
    UNUSED(_start_lineno); // Only used by EXTRA macro
15340
320k
    int _start_col_offset = p->tokens[_mark]->col_offset;
15341
320k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
15342
320k
    { // 'lambda' lambda_params? ':' expression
15343
320k
        if (p->error_indicator) {
15344
0
            p->level--;
15345
0
            return NULL;
15346
0
        }
15347
320k
        D(fprintf(stderr, "%*c> lambdef[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' expression"));
15348
320k
        Token * _keyword;
15349
320k
        Token * _literal;
15350
320k
        void *a;
15351
320k
        expr_ty b;
15352
320k
        if (
15353
320k
            (_keyword = _PyPegen_expect_token(p, 622))  // token='lambda'
15354
320k
            &&
15355
320k
            (a = lambda_params_rule(p), !p->error_indicator)  // lambda_params?
15356
320k
            &&
15357
320k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
15358
320k
            &&
15359
320k
            (b = expression_rule(p))  // expression
15360
320k
        )
15361
2.84k
        {
15362
2.84k
            D(fprintf(stderr, "%*c+ lambdef[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' expression"));
15363
2.84k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15364
2.84k
            if (_token == NULL) {
15365
0
                p->level--;
15366
0
                return NULL;
15367
0
            }
15368
2.84k
            int _end_lineno = _token->end_lineno;
15369
2.84k
            UNUSED(_end_lineno); // Only used by EXTRA macro
15370
2.84k
            int _end_col_offset = _token->end_col_offset;
15371
2.84k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15372
2.84k
            _res = _PyAST_Lambda ( ( a ) ? a : CHECK ( arguments_ty , _PyPegen_empty_arguments ( p ) ) , b , EXTRA );
15373
2.84k
            if (_res == NULL && PyErr_Occurred()) {
15374
0
                p->error_indicator = 1;
15375
0
                p->level--;
15376
0
                return NULL;
15377
0
            }
15378
2.84k
            goto done;
15379
2.84k
        }
15380
317k
        p->mark = _mark;
15381
317k
        D(fprintf(stderr, "%*c%s lambdef[%d-%d]: %s failed!\n", p->level, ' ',
15382
317k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'lambda' lambda_params? ':' expression"));
15383
317k
    }
15384
0
    _res = NULL;
15385
320k
  done:
15386
320k
    p->level--;
15387
320k
    return _res;
15388
317k
}
15389
15390
// lambda_params: invalid_lambda_parameters | lambda_parameters
15391
static arguments_ty
15392
lambda_params_rule(Parser *p)
15393
13.8k
{
15394
13.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15395
0
        _Pypegen_stack_overflow(p);
15396
0
    }
15397
13.8k
    if (p->error_indicator) {
15398
0
        p->level--;
15399
0
        return NULL;
15400
0
    }
15401
13.8k
    arguments_ty _res = NULL;
15402
13.8k
    int _mark = p->mark;
15403
13.8k
    if (p->call_invalid_rules) { // invalid_lambda_parameters
15404
8.54k
        if (p->error_indicator) {
15405
0
            p->level--;
15406
0
            return NULL;
15407
0
        }
15408
8.54k
        D(fprintf(stderr, "%*c> lambda_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_parameters"));
15409
8.54k
        void *invalid_lambda_parameters_var;
15410
8.54k
        if (
15411
8.54k
            (invalid_lambda_parameters_var = invalid_lambda_parameters_rule(p))  // invalid_lambda_parameters
15412
8.54k
        )
15413
0
        {
15414
0
            D(fprintf(stderr, "%*c+ lambda_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_lambda_parameters"));
15415
0
            _res = invalid_lambda_parameters_var;
15416
0
            goto done;
15417
0
        }
15418
8.54k
        p->mark = _mark;
15419
8.54k
        D(fprintf(stderr, "%*c%s lambda_params[%d-%d]: %s failed!\n", p->level, ' ',
15420
8.54k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_parameters"));
15421
8.54k
    }
15422
13.8k
    { // lambda_parameters
15423
13.8k
        if (p->error_indicator) {
15424
697
            p->level--;
15425
697
            return NULL;
15426
697
        }
15427
13.1k
        D(fprintf(stderr, "%*c> lambda_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_parameters"));
15428
13.1k
        arguments_ty lambda_parameters_var;
15429
13.1k
        if (
15430
13.1k
            (lambda_parameters_var = lambda_parameters_rule(p))  // lambda_parameters
15431
13.1k
        )
15432
6.95k
        {
15433
6.95k
            D(fprintf(stderr, "%*c+ lambda_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_parameters"));
15434
6.95k
            _res = lambda_parameters_var;
15435
6.95k
            goto done;
15436
6.95k
        }
15437
6.17k
        p->mark = _mark;
15438
6.17k
        D(fprintf(stderr, "%*c%s lambda_params[%d-%d]: %s failed!\n", p->level, ' ',
15439
6.17k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_parameters"));
15440
6.17k
    }
15441
0
    _res = NULL;
15442
13.1k
  done:
15443
13.1k
    p->level--;
15444
13.1k
    return _res;
15445
6.17k
}
15446
15447
// lambda_parameters:
15448
//     | lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
15449
//     | lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
15450
//     | lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
15451
//     | lambda_param_with_default+ lambda_star_etc?
15452
//     | lambda_star_etc
15453
static arguments_ty
15454
lambda_parameters_rule(Parser *p)
15455
13.1k
{
15456
13.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15457
0
        _Pypegen_stack_overflow(p);
15458
0
    }
15459
13.1k
    if (p->error_indicator) {
15460
0
        p->level--;
15461
0
        return NULL;
15462
0
    }
15463
13.1k
    arguments_ty _res = NULL;
15464
13.1k
    int _mark = p->mark;
15465
13.1k
    { // lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
15466
13.1k
        if (p->error_indicator) {
15467
0
            p->level--;
15468
0
            return NULL;
15469
0
        }
15470
13.1k
        D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?"));
15471
13.1k
        asdl_arg_seq* a;
15472
13.1k
        asdl_arg_seq* b;
15473
13.1k
        asdl_seq * c;
15474
13.1k
        void *d;
15475
13.1k
        if (
15476
13.1k
            (a = lambda_slash_no_default_rule(p))  // lambda_slash_no_default
15477
13.1k
            &&
15478
13.1k
            (b = (asdl_arg_seq*)_loop0_70_rule(p))  // lambda_param_no_default*
15479
13.1k
            &&
15480
13.1k
            (c = _loop0_71_rule(p))  // lambda_param_with_default*
15481
13.1k
            &&
15482
13.1k
            (d = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
15483
13.1k
        )
15484
472
        {
15485
472
            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?"));
15486
472
            _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , a , NULL , b , c , d ) );
15487
472
            if (_res == NULL && PyErr_Occurred()) {
15488
0
                p->error_indicator = 1;
15489
0
                p->level--;
15490
0
                return NULL;
15491
0
            }
15492
472
            goto done;
15493
472
        }
15494
12.6k
        p->mark = _mark;
15495
12.6k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15496
12.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?"));
15497
12.6k
    }
15498
0
    { // lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
15499
12.6k
        if (p->error_indicator) {
15500
94
            p->level--;
15501
94
            return NULL;
15502
94
        }
15503
12.5k
        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?"));
15504
12.5k
        SlashWithDefault* a;
15505
12.5k
        asdl_seq * b;
15506
12.5k
        void *c;
15507
12.5k
        if (
15508
12.5k
            (a = lambda_slash_with_default_rule(p))  // lambda_slash_with_default
15509
12.5k
            &&
15510
12.5k
            (b = _loop0_71_rule(p))  // lambda_param_with_default*
15511
12.5k
            &&
15512
12.5k
            (c = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
15513
12.5k
        )
15514
1.10k
        {
15515
1.10k
            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?"));
15516
1.10k
            _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , NULL , a , NULL , b , c ) );
15517
1.10k
            if (_res == NULL && PyErr_Occurred()) {
15518
0
                p->error_indicator = 1;
15519
0
                p->level--;
15520
0
                return NULL;
15521
0
            }
15522
1.10k
            goto done;
15523
1.10k
        }
15524
11.4k
        p->mark = _mark;
15525
11.4k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15526
11.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default lambda_param_with_default* lambda_star_etc?"));
15527
11.4k
    }
15528
0
    { // lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
15529
11.4k
        if (p->error_indicator) {
15530
378
            p->level--;
15531
378
            return NULL;
15532
378
        }
15533
11.0k
        D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?"));
15534
11.0k
        asdl_arg_seq* a;
15535
11.0k
        asdl_seq * b;
15536
11.0k
        void *c;
15537
11.0k
        if (
15538
11.0k
            (a = (asdl_arg_seq*)_loop1_72_rule(p))  // lambda_param_no_default+
15539
11.0k
            &&
15540
11.0k
            (b = _loop0_71_rule(p))  // lambda_param_with_default*
15541
11.0k
            &&
15542
11.0k
            (c = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
15543
11.0k
        )
15544
1.71k
        {
15545
1.71k
            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?"));
15546
1.71k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
15547
1.71k
            if (_res == NULL && PyErr_Occurred()) {
15548
0
                p->error_indicator = 1;
15549
0
                p->level--;
15550
0
                return NULL;
15551
0
            }
15552
1.71k
            goto done;
15553
1.71k
        }
15554
9.37k
        p->mark = _mark;
15555
9.37k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15556
9.37k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?"));
15557
9.37k
    }
15558
0
    { // lambda_param_with_default+ lambda_star_etc?
15559
9.37k
        if (p->error_indicator) {
15560
88
            p->level--;
15561
88
            return NULL;
15562
88
        }
15563
9.28k
        D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
15564
9.28k
        asdl_seq * a;
15565
9.28k
        void *b;
15566
9.28k
        if (
15567
9.28k
            (a = _loop1_73_rule(p))  // lambda_param_with_default+
15568
9.28k
            &&
15569
9.28k
            (b = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
15570
9.28k
        )
15571
1.61k
        {
15572
1.61k
            D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
15573
1.61k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
15574
1.61k
            if (_res == NULL && PyErr_Occurred()) {
15575
0
                p->error_indicator = 1;
15576
0
                p->level--;
15577
0
                return NULL;
15578
0
            }
15579
1.61k
            goto done;
15580
1.61k
        }
15581
7.67k
        p->mark = _mark;
15582
7.67k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15583
7.67k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
15584
7.67k
    }
15585
0
    { // lambda_star_etc
15586
7.67k
        if (p->error_indicator) {
15587
142
            p->level--;
15588
142
            return NULL;
15589
142
        }
15590
7.53k
        D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_star_etc"));
15591
7.53k
        StarEtc* a;
15592
7.53k
        if (
15593
7.53k
            (a = lambda_star_etc_rule(p))  // lambda_star_etc
15594
7.53k
        )
15595
2.06k
        {
15596
2.06k
            D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_star_etc"));
15597
2.06k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
15598
2.06k
            if (_res == NULL && PyErr_Occurred()) {
15599
0
                p->error_indicator = 1;
15600
0
                p->level--;
15601
0
                return NULL;
15602
0
            }
15603
2.06k
            goto done;
15604
2.06k
        }
15605
5.47k
        p->mark = _mark;
15606
5.47k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15607
5.47k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_star_etc"));
15608
5.47k
    }
15609
0
    _res = NULL;
15610
12.4k
  done:
15611
12.4k
    p->level--;
15612
12.4k
    return _res;
15613
5.47k
}
15614
15615
// lambda_slash_no_default:
15616
//     | lambda_param_no_default+ '/' ','
15617
//     | lambda_param_no_default+ '/' &':'
15618
static asdl_arg_seq*
15619
lambda_slash_no_default_rule(Parser *p)
15620
37.8k
{
15621
37.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15622
0
        _Pypegen_stack_overflow(p);
15623
0
    }
15624
37.8k
    if (p->error_indicator) {
15625
0
        p->level--;
15626
0
        return NULL;
15627
0
    }
15628
37.8k
    asdl_arg_seq* _res = NULL;
15629
37.8k
    int _mark = p->mark;
15630
37.8k
    { // lambda_param_no_default+ '/' ','
15631
37.8k
        if (p->error_indicator) {
15632
0
            p->level--;
15633
0
            return NULL;
15634
0
        }
15635
37.8k
        D(fprintf(stderr, "%*c> lambda_slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' ','"));
15636
37.8k
        Token * _literal;
15637
37.8k
        Token * _literal_1;
15638
37.8k
        asdl_arg_seq* a;
15639
37.8k
        if (
15640
37.8k
            (a = (asdl_arg_seq*)_loop1_72_rule(p))  // lambda_param_no_default+
15641
37.8k
            &&
15642
37.8k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
15643
37.8k
            &&
15644
37.8k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
15645
37.8k
        )
15646
703
        {
15647
703
            D(fprintf(stderr, "%*c+ lambda_slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' ','"));
15648
703
            _res = a;
15649
703
            if (_res == NULL && PyErr_Occurred()) {
15650
0
                p->error_indicator = 1;
15651
0
                p->level--;
15652
0
                return NULL;
15653
0
            }
15654
703
            goto done;
15655
703
        }
15656
37.1k
        p->mark = _mark;
15657
37.1k
        D(fprintf(stderr, "%*c%s lambda_slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
15658
37.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ '/' ','"));
15659
37.1k
    }
15660
0
    { // lambda_param_no_default+ '/' &':'
15661
37.1k
        if (p->error_indicator) {
15662
14
            p->level--;
15663
14
            return NULL;
15664
14
        }
15665
37.1k
        D(fprintf(stderr, "%*c> lambda_slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
15666
37.1k
        Token * _literal;
15667
37.1k
        asdl_arg_seq* a;
15668
37.1k
        if (
15669
37.1k
            (a = (asdl_arg_seq*)_loop1_72_rule(p))  // lambda_param_no_default+
15670
37.1k
            &&
15671
37.1k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
15672
37.1k
            &&
15673
37.1k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
15674
37.1k
        )
15675
1.02k
        {
15676
1.02k
            D(fprintf(stderr, "%*c+ lambda_slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
15677
1.02k
            _res = a;
15678
1.02k
            if (_res == NULL && PyErr_Occurred()) {
15679
0
                p->error_indicator = 1;
15680
0
                p->level--;
15681
0
                return NULL;
15682
0
            }
15683
1.02k
            goto done;
15684
1.02k
        }
15685
36.1k
        p->mark = _mark;
15686
36.1k
        D(fprintf(stderr, "%*c%s lambda_slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
15687
36.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
15688
36.1k
    }
15689
0
    _res = NULL;
15690
37.8k
  done:
15691
37.8k
    p->level--;
15692
37.8k
    return _res;
15693
36.1k
}
15694
15695
// lambda_slash_with_default:
15696
//     | lambda_param_no_default* lambda_param_with_default+ '/' ','
15697
//     | lambda_param_no_default* lambda_param_with_default+ '/' &':'
15698
static SlashWithDefault*
15699
lambda_slash_with_default_rule(Parser *p)
15700
36.5k
{
15701
36.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15702
0
        _Pypegen_stack_overflow(p);
15703
0
    }
15704
36.5k
    if (p->error_indicator) {
15705
0
        p->level--;
15706
0
        return NULL;
15707
0
    }
15708
36.5k
    SlashWithDefault* _res = NULL;
15709
36.5k
    int _mark = p->mark;
15710
36.5k
    { // lambda_param_no_default* lambda_param_with_default+ '/' ','
15711
36.5k
        if (p->error_indicator) {
15712
0
            p->level--;
15713
0
            return NULL;
15714
0
        }
15715
36.5k
        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+ '/' ','"));
15716
36.5k
        Token * _literal;
15717
36.5k
        Token * _literal_1;
15718
36.5k
        asdl_seq * a;
15719
36.5k
        asdl_seq * b;
15720
36.5k
        if (
15721
36.5k
            (a = _loop0_70_rule(p))  // lambda_param_no_default*
15722
36.5k
            &&
15723
36.5k
            (b = _loop1_73_rule(p))  // lambda_param_with_default+
15724
36.5k
            &&
15725
36.5k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
15726
36.5k
            &&
15727
36.5k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
15728
36.5k
        )
15729
2.28k
        {
15730
2.28k
            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+ '/' ','"));
15731
2.28k
            _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
15732
2.28k
            if (_res == NULL && PyErr_Occurred()) {
15733
0
                p->error_indicator = 1;
15734
0
                p->level--;
15735
0
                return NULL;
15736
0
            }
15737
2.28k
            goto done;
15738
2.28k
        }
15739
34.2k
        p->mark = _mark;
15740
34.2k
        D(fprintf(stderr, "%*c%s lambda_slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
15741
34.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' ','"));
15742
34.2k
    }
15743
0
    { // lambda_param_no_default* lambda_param_with_default+ '/' &':'
15744
34.2k
        if (p->error_indicator) {
15745
581
            p->level--;
15746
581
            return NULL;
15747
581
        }
15748
33.6k
        D(fprintf(stderr, "%*c> lambda_slash_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' &':'"));
15749
33.6k
        Token * _literal;
15750
33.6k
        asdl_seq * a;
15751
33.6k
        asdl_seq * b;
15752
33.6k
        if (
15753
33.6k
            (a = _loop0_70_rule(p))  // lambda_param_no_default*
15754
33.6k
            &&
15755
33.6k
            (b = _loop1_73_rule(p))  // lambda_param_with_default+
15756
33.6k
            &&
15757
33.6k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
15758
33.6k
            &&
15759
33.6k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
15760
33.6k
        )
15761
1.24k
        {
15762
1.24k
            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+ '/' &':'"));
15763
1.24k
            _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
15764
1.24k
            if (_res == NULL && PyErr_Occurred()) {
15765
0
                p->error_indicator = 1;
15766
0
                p->level--;
15767
0
                return NULL;
15768
0
            }
15769
1.24k
            goto done;
15770
1.24k
        }
15771
32.3k
        p->mark = _mark;
15772
32.3k
        D(fprintf(stderr, "%*c%s lambda_slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
15773
32.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' &':'"));
15774
32.3k
    }
15775
0
    _res = NULL;
15776
35.9k
  done:
15777
35.9k
    p->level--;
15778
35.9k
    return _res;
15779
32.3k
}
15780
15781
// lambda_star_etc:
15782
//     | invalid_lambda_star_etc
15783
//     | '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
15784
//     | '*' ',' lambda_param_maybe_default+ lambda_kwds?
15785
//     | lambda_kwds
15786
static StarEtc*
15787
lambda_star_etc_rule(Parser *p)
15788
12.8k
{
15789
12.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15790
0
        _Pypegen_stack_overflow(p);
15791
0
    }
15792
12.8k
    if (p->error_indicator) {
15793
194
        p->level--;
15794
194
        return NULL;
15795
194
    }
15796
12.6k
    StarEtc* _res = NULL;
15797
12.6k
    int _mark = p->mark;
15798
12.6k
    if (p->call_invalid_rules) { // invalid_lambda_star_etc
15799
7.85k
        if (p->error_indicator) {
15800
0
            p->level--;
15801
0
            return NULL;
15802
0
        }
15803
7.85k
        D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_star_etc"));
15804
7.85k
        void *invalid_lambda_star_etc_var;
15805
7.85k
        if (
15806
7.85k
            (invalid_lambda_star_etc_var = invalid_lambda_star_etc_rule(p))  // invalid_lambda_star_etc
15807
7.85k
        )
15808
0
        {
15809
0
            D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_lambda_star_etc"));
15810
0
            _res = invalid_lambda_star_etc_var;
15811
0
            goto done;
15812
0
        }
15813
7.85k
        p->mark = _mark;
15814
7.85k
        D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15815
7.85k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_star_etc"));
15816
7.85k
    }
15817
12.6k
    { // '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
15818
12.6k
        if (p->error_indicator) {
15819
20
            p->level--;
15820
20
            return NULL;
15821
20
        }
15822
12.6k
        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?"));
15823
12.6k
        Token * _literal;
15824
12.6k
        arg_ty a;
15825
12.6k
        asdl_seq * b;
15826
12.6k
        void *c;
15827
12.6k
        if (
15828
12.6k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
15829
12.6k
            &&
15830
12.6k
            (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
15831
12.6k
            &&
15832
12.6k
            (b = _loop0_74_rule(p))  // lambda_param_maybe_default*
15833
12.6k
            &&
15834
12.6k
            (c = lambda_kwds_rule(p), !p->error_indicator)  // lambda_kwds?
15835
12.6k
        )
15836
1.42k
        {
15837
1.42k
            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?"));
15838
1.42k
            _res = _PyPegen_star_etc ( p , a , b , c );
15839
1.42k
            if (_res == NULL && PyErr_Occurred()) {
15840
0
                p->error_indicator = 1;
15841
0
                p->level--;
15842
0
                return NULL;
15843
0
            }
15844
1.42k
            goto done;
15845
1.42k
        }
15846
11.2k
        p->mark = _mark;
15847
11.2k
        D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15848
11.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?"));
15849
11.2k
    }
15850
0
    { // '*' ',' lambda_param_maybe_default+ lambda_kwds?
15851
11.2k
        if (p->error_indicator) {
15852
50
            p->level--;
15853
50
            return NULL;
15854
50
        }
15855
11.1k
        D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
15856
11.1k
        Token * _literal;
15857
11.1k
        Token * _literal_1;
15858
11.1k
        asdl_seq * b;
15859
11.1k
        void *c;
15860
11.1k
        if (
15861
11.1k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
15862
11.1k
            &&
15863
11.1k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
15864
11.1k
            &&
15865
11.1k
            (b = _loop1_75_rule(p))  // lambda_param_maybe_default+
15866
11.1k
            &&
15867
11.1k
            (c = lambda_kwds_rule(p), !p->error_indicator)  // lambda_kwds?
15868
11.1k
        )
15869
373
        {
15870
373
            D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
15871
373
            _res = _PyPegen_star_etc ( p , NULL , b , c );
15872
373
            if (_res == NULL && PyErr_Occurred()) {
15873
0
                p->error_indicator = 1;
15874
0
                p->level--;
15875
0
                return NULL;
15876
0
            }
15877
373
            goto done;
15878
373
        }
15879
10.7k
        p->mark = _mark;
15880
10.7k
        D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15881
10.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
15882
10.7k
    }
15883
0
    { // lambda_kwds
15884
10.7k
        if (p->error_indicator) {
15885
523
            p->level--;
15886
523
            return NULL;
15887
523
        }
15888
10.2k
        D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_kwds"));
15889
10.2k
        arg_ty a;
15890
10.2k
        if (
15891
10.2k
            (a = lambda_kwds_rule(p))  // lambda_kwds
15892
10.2k
        )
15893
464
        {
15894
464
            D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_kwds"));
15895
464
            _res = _PyPegen_star_etc ( p , NULL , NULL , a );
15896
464
            if (_res == NULL && PyErr_Occurred()) {
15897
0
                p->error_indicator = 1;
15898
0
                p->level--;
15899
0
                return NULL;
15900
0
            }
15901
464
            goto done;
15902
464
        }
15903
9.80k
        p->mark = _mark;
15904
9.80k
        D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15905
9.80k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_kwds"));
15906
9.80k
    }
15907
0
    _res = NULL;
15908
12.0k
  done:
15909
12.0k
    p->level--;
15910
12.0k
    return _res;
15911
9.80k
}
15912
15913
// lambda_kwds: invalid_lambda_kwds | '**' lambda_param_no_default
15914
static arg_ty
15915
lambda_kwds_rule(Parser *p)
15916
12.1k
{
15917
12.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15918
0
        _Pypegen_stack_overflow(p);
15919
0
    }
15920
12.1k
    if (p->error_indicator) {
15921
40
        p->level--;
15922
40
        return NULL;
15923
40
    }
15924
12.0k
    arg_ty _res = NULL;
15925
12.0k
    int _mark = p->mark;
15926
12.0k
    if (p->call_invalid_rules) { // invalid_lambda_kwds
15927
7.83k
        if (p->error_indicator) {
15928
0
            p->level--;
15929
0
            return NULL;
15930
0
        }
15931
7.83k
        D(fprintf(stderr, "%*c> lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_kwds"));
15932
7.83k
        void *invalid_lambda_kwds_var;
15933
7.83k
        if (
15934
7.83k
            (invalid_lambda_kwds_var = invalid_lambda_kwds_rule(p))  // invalid_lambda_kwds
15935
7.83k
        )
15936
0
        {
15937
0
            D(fprintf(stderr, "%*c+ lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_lambda_kwds"));
15938
0
            _res = invalid_lambda_kwds_var;
15939
0
            goto done;
15940
0
        }
15941
7.83k
        p->mark = _mark;
15942
7.83k
        D(fprintf(stderr, "%*c%s lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
15943
7.83k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_kwds"));
15944
7.83k
    }
15945
12.0k
    { // '**' lambda_param_no_default
15946
12.0k
        if (p->error_indicator) {
15947
6
            p->level--;
15948
6
            return NULL;
15949
6
        }
15950
12.0k
        D(fprintf(stderr, "%*c> lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param_no_default"));
15951
12.0k
        Token * _literal;
15952
12.0k
        arg_ty a;
15953
12.0k
        if (
15954
12.0k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
15955
12.0k
            &&
15956
12.0k
            (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
15957
12.0k
        )
15958
464
        {
15959
464
            D(fprintf(stderr, "%*c+ lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' lambda_param_no_default"));
15960
464
            _res = a;
15961
464
            if (_res == NULL && PyErr_Occurred()) {
15962
0
                p->error_indicator = 1;
15963
0
                p->level--;
15964
0
                return NULL;
15965
0
            }
15966
464
            goto done;
15967
464
        }
15968
11.6k
        p->mark = _mark;
15969
11.6k
        D(fprintf(stderr, "%*c%s lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
15970
11.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param_no_default"));
15971
11.6k
    }
15972
0
    _res = NULL;
15973
12.0k
  done:
15974
12.0k
    p->level--;
15975
12.0k
    return _res;
15976
11.6k
}
15977
15978
// lambda_param_no_default: lambda_param ',' | lambda_param &':'
15979
static arg_ty
15980
lambda_param_no_default_rule(Parser *p)
15981
295k
{
15982
295k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15983
0
        _Pypegen_stack_overflow(p);
15984
0
    }
15985
295k
    if (p->error_indicator) {
15986
0
        p->level--;
15987
0
        return NULL;
15988
0
    }
15989
295k
    arg_ty _res = NULL;
15990
295k
    int _mark = p->mark;
15991
295k
    { // lambda_param ','
15992
295k
        if (p->error_indicator) {
15993
0
            p->level--;
15994
0
            return NULL;
15995
0
        }
15996
295k
        D(fprintf(stderr, "%*c> lambda_param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param ','"));
15997
295k
        Token * _literal;
15998
295k
        arg_ty a;
15999
295k
        if (
16000
295k
            (a = lambda_param_rule(p))  // lambda_param
16001
295k
            &&
16002
295k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
16003
295k
        )
16004
100k
        {
16005
100k
            D(fprintf(stderr, "%*c+ lambda_param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param ','"));
16006
100k
            _res = a;
16007
100k
            if (_res == NULL && PyErr_Occurred()) {
16008
0
                p->error_indicator = 1;
16009
0
                p->level--;
16010
0
                return NULL;
16011
0
            }
16012
100k
            goto done;
16013
100k
        }
16014
195k
        p->mark = _mark;
16015
195k
        D(fprintf(stderr, "%*c%s lambda_param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
16016
195k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param ','"));
16017
195k
    }
16018
0
    { // lambda_param &':'
16019
195k
        if (p->error_indicator) {
16020
24
            p->level--;
16021
24
            return NULL;
16022
24
        }
16023
195k
        D(fprintf(stderr, "%*c> lambda_param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param &':'"));
16024
195k
        arg_ty a;
16025
195k
        if (
16026
195k
            (a = lambda_param_rule(p))  // lambda_param
16027
195k
            &&
16028
195k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
16029
195k
        )
16030
14.6k
        {
16031
14.6k
            D(fprintf(stderr, "%*c+ lambda_param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param &':'"));
16032
14.6k
            _res = a;
16033
14.6k
            if (_res == NULL && PyErr_Occurred()) {
16034
0
                p->error_indicator = 1;
16035
0
                p->level--;
16036
0
                return NULL;
16037
0
            }
16038
14.6k
            goto done;
16039
14.6k
        }
16040
180k
        p->mark = _mark;
16041
180k
        D(fprintf(stderr, "%*c%s lambda_param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
16042
180k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param &':'"));
16043
180k
    }
16044
0
    _res = NULL;
16045
295k
  done:
16046
295k
    p->level--;
16047
295k
    return _res;
16048
180k
}
16049
16050
// lambda_param_with_default: lambda_param default ',' | lambda_param default &':'
16051
static NameDefaultPair*
16052
lambda_param_with_default_rule(Parser *p)
16053
119k
{
16054
119k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16055
0
        _Pypegen_stack_overflow(p);
16056
0
    }
16057
119k
    if (p->error_indicator) {
16058
0
        p->level--;
16059
0
        return NULL;
16060
0
    }
16061
119k
    NameDefaultPair* _res = NULL;
16062
119k
    int _mark = p->mark;
16063
119k
    { // lambda_param default ','
16064
119k
        if (p->error_indicator) {
16065
0
            p->level--;
16066
0
            return NULL;
16067
0
        }
16068
119k
        D(fprintf(stderr, "%*c> lambda_param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default ','"));
16069
119k
        Token * _literal;
16070
119k
        arg_ty a;
16071
119k
        expr_ty c;
16072
119k
        if (
16073
119k
            (a = lambda_param_rule(p))  // lambda_param
16074
119k
            &&
16075
119k
            (c = default_rule(p))  // default
16076
119k
            &&
16077
119k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
16078
119k
        )
16079
21.0k
        {
16080
21.0k
            D(fprintf(stderr, "%*c+ lambda_param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default ','"));
16081
21.0k
            _res = _PyPegen_name_default_pair ( p , a , c , NULL );
16082
21.0k
            if (_res == NULL && PyErr_Occurred()) {
16083
0
                p->error_indicator = 1;
16084
0
                p->level--;
16085
0
                return NULL;
16086
0
            }
16087
21.0k
            goto done;
16088
21.0k
        }
16089
98.8k
        p->mark = _mark;
16090
98.8k
        D(fprintf(stderr, "%*c%s lambda_param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
16091
98.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default ','"));
16092
98.8k
    }
16093
0
    { // lambda_param default &':'
16094
98.8k
        if (p->error_indicator) {
16095
773
            p->level--;
16096
773
            return NULL;
16097
773
        }
16098
98.0k
        D(fprintf(stderr, "%*c> lambda_param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default &':'"));
16099
98.0k
        arg_ty a;
16100
98.0k
        expr_ty c;
16101
98.0k
        if (
16102
98.0k
            (a = lambda_param_rule(p))  // lambda_param
16103
98.0k
            &&
16104
98.0k
            (c = default_rule(p))  // default
16105
98.0k
            &&
16106
98.0k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
16107
98.0k
        )
16108
8.48k
        {
16109
8.48k
            D(fprintf(stderr, "%*c+ lambda_param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default &':'"));
16110
8.48k
            _res = _PyPegen_name_default_pair ( p , a , c , NULL );
16111
8.48k
            if (_res == NULL && PyErr_Occurred()) {
16112
0
                p->error_indicator = 1;
16113
0
                p->level--;
16114
0
                return NULL;
16115
0
            }
16116
8.48k
            goto done;
16117
8.48k
        }
16118
89.5k
        p->mark = _mark;
16119
89.5k
        D(fprintf(stderr, "%*c%s lambda_param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
16120
89.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default &':'"));
16121
89.5k
    }
16122
0
    _res = NULL;
16123
119k
  done:
16124
119k
    p->level--;
16125
119k
    return _res;
16126
89.5k
}
16127
16128
// lambda_param_maybe_default: lambda_param default? ',' | lambda_param default? &':'
16129
static NameDefaultPair*
16130
lambda_param_maybe_default_rule(Parser *p)
16131
46.8k
{
16132
46.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16133
0
        _Pypegen_stack_overflow(p);
16134
0
    }
16135
46.8k
    if (p->error_indicator) {
16136
0
        p->level--;
16137
0
        return NULL;
16138
0
    }
16139
46.8k
    NameDefaultPair* _res = NULL;
16140
46.8k
    int _mark = p->mark;
16141
46.8k
    { // lambda_param default? ','
16142
46.8k
        if (p->error_indicator) {
16143
0
            p->level--;
16144
0
            return NULL;
16145
0
        }
16146
46.8k
        D(fprintf(stderr, "%*c> lambda_param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default? ','"));
16147
46.8k
        Token * _literal;
16148
46.8k
        arg_ty a;
16149
46.8k
        void *c;
16150
46.8k
        if (
16151
46.8k
            (a = lambda_param_rule(p))  // lambda_param
16152
46.8k
            &&
16153
46.8k
            (c = default_rule(p), !p->error_indicator)  // default?
16154
46.8k
            &&
16155
46.8k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
16156
46.8k
        )
16157
18.0k
        {
16158
18.0k
            D(fprintf(stderr, "%*c+ lambda_param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default? ','"));
16159
18.0k
            _res = _PyPegen_name_default_pair ( p , a , c , NULL );
16160
18.0k
            if (_res == NULL && PyErr_Occurred()) {
16161
0
                p->error_indicator = 1;
16162
0
                p->level--;
16163
0
                return NULL;
16164
0
            }
16165
18.0k
            goto done;
16166
18.0k
        }
16167
28.8k
        p->mark = _mark;
16168
28.8k
        D(fprintf(stderr, "%*c%s lambda_param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
16169
28.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default? ','"));
16170
28.8k
    }
16171
0
    { // lambda_param default? &':'
16172
28.8k
        if (p->error_indicator) {
16173
910
            p->level--;
16174
910
            return NULL;
16175
910
        }
16176
27.9k
        D(fprintf(stderr, "%*c> lambda_param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default? &':'"));
16177
27.9k
        arg_ty a;
16178
27.9k
        void *c;
16179
27.9k
        if (
16180
27.9k
            (a = lambda_param_rule(p))  // lambda_param
16181
27.9k
            &&
16182
27.9k
            (c = default_rule(p), !p->error_indicator)  // default?
16183
27.9k
            &&
16184
27.9k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
16185
27.9k
        )
16186
2.82k
        {
16187
2.82k
            D(fprintf(stderr, "%*c+ lambda_param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default? &':'"));
16188
2.82k
            _res = _PyPegen_name_default_pair ( p , a , c , NULL );
16189
2.82k
            if (_res == NULL && PyErr_Occurred()) {
16190
0
                p->error_indicator = 1;
16191
0
                p->level--;
16192
0
                return NULL;
16193
0
            }
16194
2.82k
            goto done;
16195
2.82k
        }
16196
25.0k
        p->mark = _mark;
16197
25.0k
        D(fprintf(stderr, "%*c%s lambda_param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
16198
25.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default? &':'"));
16199
25.0k
    }
16200
0
    _res = NULL;
16201
45.9k
  done:
16202
45.9k
    p->level--;
16203
45.9k
    return _res;
16204
25.0k
}
16205
16206
// lambda_param: NAME
16207
static arg_ty
16208
lambda_param_rule(Parser *p)
16209
791k
{
16210
791k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16211
0
        _Pypegen_stack_overflow(p);
16212
0
    }
16213
791k
    if (p->error_indicator) {
16214
0
        p->level--;
16215
0
        return NULL;
16216
0
    }
16217
791k
    arg_ty _res = NULL;
16218
791k
    int _mark = p->mark;
16219
791k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16220
58
        p->error_indicator = 1;
16221
58
        p->level--;
16222
58
        return NULL;
16223
58
    }
16224
791k
    int _start_lineno = p->tokens[_mark]->lineno;
16225
791k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16226
791k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16227
791k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16228
791k
    { // NAME
16229
791k
        if (p->error_indicator) {
16230
0
            p->level--;
16231
0
            return NULL;
16232
0
        }
16233
791k
        D(fprintf(stderr, "%*c> lambda_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
16234
791k
        expr_ty a;
16235
791k
        if (
16236
791k
            (a = _PyPegen_name_token(p))  // NAME
16237
791k
        )
16238
360k
        {
16239
360k
            D(fprintf(stderr, "%*c+ lambda_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
16240
360k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16241
360k
            if (_token == NULL) {
16242
0
                p->level--;
16243
0
                return NULL;
16244
0
            }
16245
360k
            int _end_lineno = _token->end_lineno;
16246
360k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16247
360k
            int _end_col_offset = _token->end_col_offset;
16248
360k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16249
360k
            _res = _PyAST_arg ( a -> v . Name . id , NULL , NULL , EXTRA );
16250
360k
            if (_res == NULL && PyErr_Occurred()) {
16251
0
                p->error_indicator = 1;
16252
0
                p->level--;
16253
0
                return NULL;
16254
0
            }
16255
360k
            goto done;
16256
360k
        }
16257
430k
        p->mark = _mark;
16258
430k
        D(fprintf(stderr, "%*c%s lambda_param[%d-%d]: %s failed!\n", p->level, ' ',
16259
430k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
16260
430k
    }
16261
0
    _res = NULL;
16262
791k
  done:
16263
791k
    p->level--;
16264
791k
    return _res;
16265
430k
}
16266
16267
// fstring_middle: fstring_replacement_field | FSTRING_MIDDLE
16268
static expr_ty
16269
fstring_middle_rule(Parser *p)
16270
60.6k
{
16271
60.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16272
1
        _Pypegen_stack_overflow(p);
16273
1
    }
16274
60.6k
    if (p->error_indicator) {
16275
1
        p->level--;
16276
1
        return NULL;
16277
1
    }
16278
60.6k
    expr_ty _res = NULL;
16279
60.6k
    int _mark = p->mark;
16280
60.6k
    { // fstring_replacement_field
16281
60.6k
        if (p->error_indicator) {
16282
0
            p->level--;
16283
0
            return NULL;
16284
0
        }
16285
60.6k
        D(fprintf(stderr, "%*c> fstring_middle[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field"));
16286
60.6k
        expr_ty fstring_replacement_field_var;
16287
60.6k
        if (
16288
60.6k
            (fstring_replacement_field_var = fstring_replacement_field_rule(p))  // fstring_replacement_field
16289
60.6k
        )
16290
17.0k
        {
16291
17.0k
            D(fprintf(stderr, "%*c+ fstring_middle[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field"));
16292
17.0k
            _res = fstring_replacement_field_var;
16293
17.0k
            goto done;
16294
17.0k
        }
16295
43.6k
        p->mark = _mark;
16296
43.6k
        D(fprintf(stderr, "%*c%s fstring_middle[%d-%d]: %s failed!\n", p->level, ' ',
16297
43.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_replacement_field"));
16298
43.6k
    }
16299
0
    { // FSTRING_MIDDLE
16300
43.6k
        if (p->error_indicator) {
16301
2.40k
            p->level--;
16302
2.40k
            return NULL;
16303
2.40k
        }
16304
41.2k
        D(fprintf(stderr, "%*c> fstring_middle[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE"));
16305
41.2k
        Token * t;
16306
41.2k
        if (
16307
41.2k
            (t = _PyPegen_expect_token(p, FSTRING_MIDDLE))  // token='FSTRING_MIDDLE'
16308
41.2k
        )
16309
25.7k
        {
16310
25.7k
            D(fprintf(stderr, "%*c+ fstring_middle[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE"));
16311
25.7k
            _res = _PyPegen_constant_from_token ( p , t );
16312
25.7k
            if (_res == NULL && PyErr_Occurred()) {
16313
8
                p->error_indicator = 1;
16314
8
                p->level--;
16315
8
                return NULL;
16316
8
            }
16317
25.7k
            goto done;
16318
25.7k
        }
16319
15.5k
        p->mark = _mark;
16320
15.5k
        D(fprintf(stderr, "%*c%s fstring_middle[%d-%d]: %s failed!\n", p->level, ' ',
16321
15.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_MIDDLE"));
16322
15.5k
    }
16323
0
    _res = NULL;
16324
58.2k
  done:
16325
58.2k
    p->level--;
16326
58.2k
    return _res;
16327
15.5k
}
16328
16329
// fstring_replacement_field:
16330
//     | '{' annotated_rhs '='? fstring_conversion? fstring_full_format_spec? '}'
16331
//     | invalid_fstring_replacement_field
16332
static expr_ty
16333
fstring_replacement_field_rule(Parser *p)
16334
67.6k
{
16335
67.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16336
2
        _Pypegen_stack_overflow(p);
16337
2
    }
16338
67.6k
    if (p->error_indicator) {
16339
2
        p->level--;
16340
2
        return NULL;
16341
2
    }
16342
67.6k
    expr_ty _res = NULL;
16343
67.6k
    int _mark = p->mark;
16344
67.6k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16345
144
        p->error_indicator = 1;
16346
144
        p->level--;
16347
144
        return NULL;
16348
144
    }
16349
67.4k
    int _start_lineno = p->tokens[_mark]->lineno;
16350
67.4k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16351
67.4k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16352
67.4k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16353
67.4k
    { // '{' annotated_rhs '='? fstring_conversion? fstring_full_format_spec? '}'
16354
67.4k
        if (p->error_indicator) {
16355
0
            p->level--;
16356
0
            return NULL;
16357
0
        }
16358
67.4k
        D(fprintf(stderr, "%*c> fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? fstring_full_format_spec? '}'"));
16359
67.4k
        Token * _literal;
16360
67.4k
        expr_ty a;
16361
67.4k
        void *conversion;
16362
67.4k
        void *debug_expr;
16363
67.4k
        void *format;
16364
67.4k
        Token * rbrace;
16365
67.4k
        if (
16366
67.4k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
16367
67.4k
            &&
16368
67.4k
            (a = annotated_rhs_rule(p))  // annotated_rhs
16369
67.4k
            &&
16370
67.4k
            (debug_expr = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
16371
67.4k
            &&
16372
67.4k
            (conversion = fstring_conversion_rule(p), !p->error_indicator)  // fstring_conversion?
16373
67.4k
            &&
16374
67.4k
            (format = fstring_full_format_spec_rule(p), !p->error_indicator)  // fstring_full_format_spec?
16375
67.4k
            &&
16376
67.4k
            (rbrace = _PyPegen_expect_token(p, 26))  // token='}'
16377
67.4k
        )
16378
20.3k
        {
16379
20.3k
            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? '}'"));
16380
20.3k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16381
20.3k
            if (_token == NULL) {
16382
0
                p->level--;
16383
0
                return NULL;
16384
0
            }
16385
20.3k
            int _end_lineno = _token->end_lineno;
16386
20.3k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16387
20.3k
            int _end_col_offset = _token->end_col_offset;
16388
20.3k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16389
20.3k
            _res = _PyPegen_formatted_value ( p , a , debug_expr , conversion , format , rbrace , EXTRA );
16390
20.3k
            if (_res == NULL && PyErr_Occurred()) {
16391
1
                p->error_indicator = 1;
16392
1
                p->level--;
16393
1
                return NULL;
16394
1
            }
16395
20.3k
            goto done;
16396
20.3k
        }
16397
47.1k
        p->mark = _mark;
16398
47.1k
        D(fprintf(stderr, "%*c%s fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16399
47.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? fstring_full_format_spec? '}'"));
16400
47.1k
    }
16401
47.1k
    if (p->call_invalid_rules) { // invalid_fstring_replacement_field
16402
12.6k
        if (p->error_indicator) {
16403
1.57k
            p->level--;
16404
1.57k
            return NULL;
16405
1.57k
        }
16406
11.0k
        D(fprintf(stderr, "%*c> fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_fstring_replacement_field"));
16407
11.0k
        void *invalid_fstring_replacement_field_var;
16408
11.0k
        if (
16409
11.0k
            (invalid_fstring_replacement_field_var = invalid_fstring_replacement_field_rule(p))  // invalid_fstring_replacement_field
16410
11.0k
        )
16411
0
        {
16412
0
            D(fprintf(stderr, "%*c+ fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_fstring_replacement_field"));
16413
0
            _res = invalid_fstring_replacement_field_var;
16414
0
            goto done;
16415
0
        }
16416
11.0k
        p->mark = _mark;
16417
11.0k
        D(fprintf(stderr, "%*c%s fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16418
11.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_fstring_replacement_field"));
16419
11.0k
    }
16420
45.5k
    _res = NULL;
16421
65.9k
  done:
16422
65.9k
    p->level--;
16423
65.9k
    return _res;
16424
45.5k
}
16425
16426
// fstring_conversion: "!" NAME
16427
static ResultTokenWithMetadata*
16428
fstring_conversion_rule(Parser *p)
16429
29.1k
{
16430
29.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16431
0
        _Pypegen_stack_overflow(p);
16432
0
    }
16433
29.1k
    if (p->error_indicator) {
16434
0
        p->level--;
16435
0
        return NULL;
16436
0
    }
16437
29.1k
    ResultTokenWithMetadata* _res = NULL;
16438
29.1k
    int _mark = p->mark;
16439
29.1k
    { // "!" NAME
16440
29.1k
        if (p->error_indicator) {
16441
0
            p->level--;
16442
0
            return NULL;
16443
0
        }
16444
29.1k
        D(fprintf(stderr, "%*c> fstring_conversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"!\" NAME"));
16445
29.1k
        expr_ty conv;
16446
29.1k
        Token * conv_token;
16447
29.1k
        if (
16448
29.1k
            (conv_token = _PyPegen_expect_token(p, 54))  // token='!'
16449
29.1k
            &&
16450
29.1k
            (conv = _PyPegen_name_token(p))  // NAME
16451
29.1k
        )
16452
1.59k
        {
16453
1.59k
            D(fprintf(stderr, "%*c+ fstring_conversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"!\" NAME"));
16454
1.59k
            _res = _PyPegen_check_fstring_conversion ( p , conv_token , conv );
16455
1.59k
            if (_res == NULL && PyErr_Occurred()) {
16456
14
                p->error_indicator = 1;
16457
14
                p->level--;
16458
14
                return NULL;
16459
14
            }
16460
1.57k
            goto done;
16461
1.59k
        }
16462
27.5k
        p->mark = _mark;
16463
27.5k
        D(fprintf(stderr, "%*c%s fstring_conversion[%d-%d]: %s failed!\n", p->level, ' ',
16464
27.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"!\" NAME"));
16465
27.5k
    }
16466
0
    _res = NULL;
16467
29.1k
  done:
16468
29.1k
    p->level--;
16469
29.1k
    return _res;
16470
27.5k
}
16471
16472
// fstring_full_format_spec: ':' fstring_format_spec*
16473
static ResultTokenWithMetadata*
16474
fstring_full_format_spec_rule(Parser *p)
16475
21.8k
{
16476
21.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16477
0
        _Pypegen_stack_overflow(p);
16478
0
    }
16479
21.8k
    if (p->error_indicator) {
16480
0
        p->level--;
16481
0
        return NULL;
16482
0
    }
16483
21.8k
    ResultTokenWithMetadata* _res = NULL;
16484
21.8k
    int _mark = p->mark;
16485
21.8k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16486
2
        p->error_indicator = 1;
16487
2
        p->level--;
16488
2
        return NULL;
16489
2
    }
16490
21.8k
    int _start_lineno = p->tokens[_mark]->lineno;
16491
21.8k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16492
21.8k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16493
21.8k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16494
21.8k
    { // ':' fstring_format_spec*
16495
21.8k
        if (p->error_indicator) {
16496
0
            p->level--;
16497
0
            return NULL;
16498
0
        }
16499
21.8k
        D(fprintf(stderr, "%*c> fstring_full_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' fstring_format_spec*"));
16500
21.8k
        Token * colon;
16501
21.8k
        asdl_seq * spec;
16502
21.8k
        if (
16503
21.8k
            (colon = _PyPegen_expect_token(p, 11))  // token=':'
16504
21.8k
            &&
16505
21.8k
            (spec = _loop0_76_rule(p))  // fstring_format_spec*
16506
21.8k
        )
16507
3.47k
        {
16508
3.47k
            D(fprintf(stderr, "%*c+ fstring_full_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' fstring_format_spec*"));
16509
3.47k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16510
3.47k
            if (_token == NULL) {
16511
0
                p->level--;
16512
0
                return NULL;
16513
0
            }
16514
3.47k
            int _end_lineno = _token->end_lineno;
16515
3.47k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16516
3.47k
            int _end_col_offset = _token->end_col_offset;
16517
3.47k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16518
3.47k
            _res = _PyPegen_setup_full_format_spec ( p , colon , ( asdl_expr_seq* ) spec , EXTRA );
16519
3.47k
            if (_res == NULL && PyErr_Occurred()) {
16520
0
                p->error_indicator = 1;
16521
0
                p->level--;
16522
0
                return NULL;
16523
0
            }
16524
3.47k
            goto done;
16525
3.47k
        }
16526
18.3k
        p->mark = _mark;
16527
18.3k
        D(fprintf(stderr, "%*c%s fstring_full_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16528
18.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' fstring_format_spec*"));
16529
18.3k
    }
16530
0
    _res = NULL;
16531
21.8k
  done:
16532
21.8k
    p->level--;
16533
21.8k
    return _res;
16534
18.3k
}
16535
16536
// fstring_format_spec: FSTRING_MIDDLE | fstring_replacement_field
16537
static expr_ty
16538
fstring_format_spec_rule(Parser *p)
16539
12.7k
{
16540
12.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16541
0
        _Pypegen_stack_overflow(p);
16542
0
    }
16543
12.7k
    if (p->error_indicator) {
16544
0
        p->level--;
16545
0
        return NULL;
16546
0
    }
16547
12.7k
    expr_ty _res = NULL;
16548
12.7k
    int _mark = p->mark;
16549
12.7k
    { // FSTRING_MIDDLE
16550
12.7k
        if (p->error_indicator) {
16551
0
            p->level--;
16552
0
            return NULL;
16553
0
        }
16554
12.7k
        D(fprintf(stderr, "%*c> fstring_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE"));
16555
12.7k
        Token * t;
16556
12.7k
        if (
16557
12.7k
            (t = _PyPegen_expect_token(p, FSTRING_MIDDLE))  // token='FSTRING_MIDDLE'
16558
12.7k
        )
16559
5.77k
        {
16560
5.77k
            D(fprintf(stderr, "%*c+ fstring_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE"));
16561
5.77k
            _res = _PyPegen_decoded_constant_from_token ( p , t );
16562
5.77k
            if (_res == NULL && PyErr_Occurred()) {
16563
1
                p->error_indicator = 1;
16564
1
                p->level--;
16565
1
                return NULL;
16566
1
            }
16567
5.77k
            goto done;
16568
5.77k
        }
16569
6.97k
        p->mark = _mark;
16570
6.97k
        D(fprintf(stderr, "%*c%s fstring_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16571
6.97k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_MIDDLE"));
16572
6.97k
    }
16573
0
    { // fstring_replacement_field
16574
6.97k
        if (p->error_indicator) {
16575
9
            p->level--;
16576
9
            return NULL;
16577
9
        }
16578
6.96k
        D(fprintf(stderr, "%*c> fstring_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field"));
16579
6.96k
        expr_ty fstring_replacement_field_var;
16580
6.96k
        if (
16581
6.96k
            (fstring_replacement_field_var = fstring_replacement_field_rule(p))  // fstring_replacement_field
16582
6.96k
        )
16583
3.34k
        {
16584
3.34k
            D(fprintf(stderr, "%*c+ fstring_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field"));
16585
3.34k
            _res = fstring_replacement_field_var;
16586
3.34k
            goto done;
16587
3.34k
        }
16588
3.61k
        p->mark = _mark;
16589
3.61k
        D(fprintf(stderr, "%*c%s fstring_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16590
3.61k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_replacement_field"));
16591
3.61k
    }
16592
0
    _res = NULL;
16593
12.7k
  done:
16594
12.7k
    p->level--;
16595
12.7k
    return _res;
16596
3.61k
}
16597
16598
// fstring: FSTRING_START fstring_middle* FSTRING_END
16599
static expr_ty
16600
fstring_rule(Parser *p)
16601
225k
{
16602
225k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16603
1
        _Pypegen_stack_overflow(p);
16604
1
    }
16605
225k
    if (p->error_indicator) {
16606
1
        p->level--;
16607
1
        return NULL;
16608
1
    }
16609
225k
    expr_ty _res = NULL;
16610
225k
    int _mark = p->mark;
16611
225k
    { // FSTRING_START fstring_middle* FSTRING_END
16612
225k
        if (p->error_indicator) {
16613
0
            p->level--;
16614
0
            return NULL;
16615
0
        }
16616
225k
        D(fprintf(stderr, "%*c> fstring[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_START fstring_middle* FSTRING_END"));
16617
225k
        Token * a;
16618
225k
        asdl_seq * b;
16619
225k
        Token * c;
16620
225k
        if (
16621
225k
            (a = _PyPegen_expect_token(p, FSTRING_START))  // token='FSTRING_START'
16622
225k
            &&
16623
225k
            (b = _loop0_77_rule(p))  // fstring_middle*
16624
225k
            &&
16625
225k
            (c = _PyPegen_expect_token(p, FSTRING_END))  // token='FSTRING_END'
16626
225k
        )
16627
14.1k
        {
16628
14.1k
            D(fprintf(stderr, "%*c+ fstring[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_START fstring_middle* FSTRING_END"));
16629
14.1k
            _res = _PyPegen_joined_str ( p , a , ( asdl_expr_seq* ) b , c );
16630
14.1k
            if (_res == NULL && PyErr_Occurred()) {
16631
0
                p->error_indicator = 1;
16632
0
                p->level--;
16633
0
                return NULL;
16634
0
            }
16635
14.1k
            goto done;
16636
14.1k
        }
16637
210k
        p->mark = _mark;
16638
210k
        D(fprintf(stderr, "%*c%s fstring[%d-%d]: %s failed!\n", p->level, ' ',
16639
210k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_START fstring_middle* FSTRING_END"));
16640
210k
    }
16641
0
    _res = NULL;
16642
225k
  done:
16643
225k
    p->level--;
16644
225k
    return _res;
16645
210k
}
16646
16647
// tstring_format_spec_replacement_field:
16648
//     | '{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'
16649
//     | invalid_tstring_replacement_field
16650
static expr_ty
16651
tstring_format_spec_replacement_field_rule(Parser *p)
16652
3.51k
{
16653
3.51k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16654
0
        _Pypegen_stack_overflow(p);
16655
0
    }
16656
3.51k
    if (p->error_indicator) {
16657
0
        p->level--;
16658
0
        return NULL;
16659
0
    }
16660
3.51k
    expr_ty _res = NULL;
16661
3.51k
    int _mark = p->mark;
16662
3.51k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16663
0
        p->error_indicator = 1;
16664
0
        p->level--;
16665
0
        return NULL;
16666
0
    }
16667
3.51k
    int _start_lineno = p->tokens[_mark]->lineno;
16668
3.51k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16669
3.51k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16670
3.51k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16671
3.51k
    { // '{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'
16672
3.51k
        if (p->error_indicator) {
16673
0
            p->level--;
16674
0
            return NULL;
16675
0
        }
16676
3.51k
        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? '}'"));
16677
3.51k
        Token * _literal;
16678
3.51k
        expr_ty a;
16679
3.51k
        void *conversion;
16680
3.51k
        void *debug_expr;
16681
3.51k
        void *format;
16682
3.51k
        Token * rbrace;
16683
3.51k
        if (
16684
3.51k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
16685
3.51k
            &&
16686
3.51k
            (a = annotated_rhs_rule(p))  // annotated_rhs
16687
3.51k
            &&
16688
3.51k
            (debug_expr = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
16689
3.51k
            &&
16690
3.51k
            (conversion = fstring_conversion_rule(p), !p->error_indicator)  // fstring_conversion?
16691
3.51k
            &&
16692
3.51k
            (format = tstring_full_format_spec_rule(p), !p->error_indicator)  // tstring_full_format_spec?
16693
3.51k
            &&
16694
3.51k
            (rbrace = _PyPegen_expect_token(p, 26))  // token='}'
16695
3.51k
        )
16696
938
        {
16697
938
            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? '}'"));
16698
938
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16699
938
            if (_token == NULL) {
16700
0
                p->level--;
16701
0
                return NULL;
16702
0
            }
16703
938
            int _end_lineno = _token->end_lineno;
16704
938
            UNUSED(_end_lineno); // Only used by EXTRA macro
16705
938
            int _end_col_offset = _token->end_col_offset;
16706
938
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16707
938
            _res = _PyPegen_formatted_value ( p , a , debug_expr , conversion , format , rbrace , EXTRA );
16708
938
            if (_res == NULL && PyErr_Occurred()) {
16709
1
                p->error_indicator = 1;
16710
1
                p->level--;
16711
1
                return NULL;
16712
1
            }
16713
937
            goto done;
16714
938
        }
16715
2.57k
        p->mark = _mark;
16716
2.57k
        D(fprintf(stderr, "%*c%s tstring_format_spec_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16717
2.57k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'"));
16718
2.57k
    }
16719
2.57k
    if (p->call_invalid_rules) { // invalid_tstring_replacement_field
16720
1.02k
        if (p->error_indicator) {
16721
322
            p->level--;
16722
322
            return NULL;
16723
322
        }
16724
704
        D(fprintf(stderr, "%*c> tstring_format_spec_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_tstring_replacement_field"));
16725
704
        void *invalid_tstring_replacement_field_var;
16726
704
        if (
16727
704
            (invalid_tstring_replacement_field_var = invalid_tstring_replacement_field_rule(p))  // invalid_tstring_replacement_field
16728
704
        )
16729
0
        {
16730
0
            D(fprintf(stderr, "%*c+ tstring_format_spec_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_tstring_replacement_field"));
16731
0
            _res = invalid_tstring_replacement_field_var;
16732
0
            goto done;
16733
0
        }
16734
704
        p->mark = _mark;
16735
704
        D(fprintf(stderr, "%*c%s tstring_format_spec_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16736
704
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_tstring_replacement_field"));
16737
704
    }
16738
2.25k
    _res = NULL;
16739
3.18k
  done:
16740
3.18k
    p->level--;
16741
3.18k
    return _res;
16742
2.25k
}
16743
16744
// tstring_format_spec: TSTRING_MIDDLE | tstring_format_spec_replacement_field
16745
static expr_ty
16746
tstring_format_spec_rule(Parser *p)
16747
6.00k
{
16748
6.00k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16749
0
        _Pypegen_stack_overflow(p);
16750
0
    }
16751
6.00k
    if (p->error_indicator) {
16752
0
        p->level--;
16753
0
        return NULL;
16754
0
    }
16755
6.00k
    expr_ty _res = NULL;
16756
6.00k
    int _mark = p->mark;
16757
6.00k
    { // TSTRING_MIDDLE
16758
6.00k
        if (p->error_indicator) {
16759
0
            p->level--;
16760
0
            return NULL;
16761
0
        }
16762
6.00k
        D(fprintf(stderr, "%*c> tstring_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TSTRING_MIDDLE"));
16763
6.00k
        Token * t;
16764
6.00k
        if (
16765
6.00k
            (t = _PyPegen_expect_token(p, TSTRING_MIDDLE))  // token='TSTRING_MIDDLE'
16766
6.00k
        )
16767
2.47k
        {
16768
2.47k
            D(fprintf(stderr, "%*c+ tstring_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TSTRING_MIDDLE"));
16769
2.47k
            _res = _PyPegen_decoded_constant_from_token ( p , t );
16770
2.47k
            if (_res == NULL && PyErr_Occurred()) {
16771
1
                p->error_indicator = 1;
16772
1
                p->level--;
16773
1
                return NULL;
16774
1
            }
16775
2.47k
            goto done;
16776
2.47k
        }
16777
3.52k
        p->mark = _mark;
16778
3.52k
        D(fprintf(stderr, "%*c%s tstring_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16779
3.52k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TSTRING_MIDDLE"));
16780
3.52k
    }
16781
0
    { // tstring_format_spec_replacement_field
16782
3.52k
        if (p->error_indicator) {
16783
10
            p->level--;
16784
10
            return NULL;
16785
10
        }
16786
3.51k
        D(fprintf(stderr, "%*c> tstring_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring_format_spec_replacement_field"));
16787
3.51k
        expr_ty tstring_format_spec_replacement_field_var;
16788
3.51k
        if (
16789
3.51k
            (tstring_format_spec_replacement_field_var = tstring_format_spec_replacement_field_rule(p))  // tstring_format_spec_replacement_field
16790
3.51k
        )
16791
937
        {
16792
937
            D(fprintf(stderr, "%*c+ tstring_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tstring_format_spec_replacement_field"));
16793
937
            _res = tstring_format_spec_replacement_field_var;
16794
937
            goto done;
16795
937
        }
16796
2.57k
        p->mark = _mark;
16797
2.57k
        D(fprintf(stderr, "%*c%s tstring_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16798
2.57k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring_format_spec_replacement_field"));
16799
2.57k
    }
16800
0
    _res = NULL;
16801
5.99k
  done:
16802
5.99k
    p->level--;
16803
5.99k
    return _res;
16804
2.57k
}
16805
16806
// tstring_full_format_spec: ':' tstring_format_spec*
16807
static ResultTokenWithMetadata*
16808
tstring_full_format_spec_rule(Parser *p)
16809
7.29k
{
16810
7.29k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16811
0
        _Pypegen_stack_overflow(p);
16812
0
    }
16813
7.29k
    if (p->error_indicator) {
16814
0
        p->level--;
16815
0
        return NULL;
16816
0
    }
16817
7.29k
    ResultTokenWithMetadata* _res = NULL;
16818
7.29k
    int _mark = p->mark;
16819
7.29k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16820
1
        p->error_indicator = 1;
16821
1
        p->level--;
16822
1
        return NULL;
16823
1
    }
16824
7.29k
    int _start_lineno = p->tokens[_mark]->lineno;
16825
7.29k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16826
7.29k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16827
7.29k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16828
7.29k
    { // ':' tstring_format_spec*
16829
7.29k
        if (p->error_indicator) {
16830
0
            p->level--;
16831
0
            return NULL;
16832
0
        }
16833
7.29k
        D(fprintf(stderr, "%*c> tstring_full_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' tstring_format_spec*"));
16834
7.29k
        Token * colon;
16835
7.29k
        asdl_seq * spec;
16836
7.29k
        if (
16837
7.29k
            (colon = _PyPegen_expect_token(p, 11))  // token=':'
16838
7.29k
            &&
16839
7.29k
            (spec = _loop0_78_rule(p))  // tstring_format_spec*
16840
7.29k
        )
16841
2.58k
        {
16842
2.58k
            D(fprintf(stderr, "%*c+ tstring_full_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' tstring_format_spec*"));
16843
2.58k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16844
2.58k
            if (_token == NULL) {
16845
0
                p->level--;
16846
0
                return NULL;
16847
0
            }
16848
2.58k
            int _end_lineno = _token->end_lineno;
16849
2.58k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16850
2.58k
            int _end_col_offset = _token->end_col_offset;
16851
2.58k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16852
2.58k
            _res = _PyPegen_setup_full_format_spec ( p , colon , ( asdl_expr_seq* ) spec , EXTRA );
16853
2.58k
            if (_res == NULL && PyErr_Occurred()) {
16854
0
                p->error_indicator = 1;
16855
0
                p->level--;
16856
0
                return NULL;
16857
0
            }
16858
2.58k
            goto done;
16859
2.58k
        }
16860
4.70k
        p->mark = _mark;
16861
4.70k
        D(fprintf(stderr, "%*c%s tstring_full_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16862
4.70k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' tstring_format_spec*"));
16863
4.70k
    }
16864
0
    _res = NULL;
16865
7.29k
  done:
16866
7.29k
    p->level--;
16867
7.29k
    return _res;
16868
4.70k
}
16869
16870
// tstring_replacement_field:
16871
//     | '{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'
16872
//     | invalid_tstring_replacement_field
16873
static expr_ty
16874
tstring_replacement_field_rule(Parser *p)
16875
18.2k
{
16876
18.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16877
1
        _Pypegen_stack_overflow(p);
16878
1
    }
16879
18.2k
    if (p->error_indicator) {
16880
1
        p->level--;
16881
1
        return NULL;
16882
1
    }
16883
18.2k
    expr_ty _res = NULL;
16884
18.2k
    int _mark = p->mark;
16885
18.2k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16886
157
        p->error_indicator = 1;
16887
157
        p->level--;
16888
157
        return NULL;
16889
157
    }
16890
18.0k
    int _start_lineno = p->tokens[_mark]->lineno;
16891
18.0k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16892
18.0k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16893
18.0k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16894
18.0k
    { // '{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'
16895
18.0k
        if (p->error_indicator) {
16896
0
            p->level--;
16897
0
            return NULL;
16898
0
        }
16899
18.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? '}'"));
16900
18.0k
        Token * _literal;
16901
18.0k
        expr_ty a;
16902
18.0k
        void *conversion;
16903
18.0k
        void *debug_expr;
16904
18.0k
        void *format;
16905
18.0k
        Token * rbrace;
16906
18.0k
        if (
16907
18.0k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
16908
18.0k
            &&
16909
18.0k
            (a = annotated_rhs_rule(p))  // annotated_rhs
16910
18.0k
            &&
16911
18.0k
            (debug_expr = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
16912
18.0k
            &&
16913
18.0k
            (conversion = fstring_conversion_rule(p), !p->error_indicator)  // fstring_conversion?
16914
18.0k
            &&
16915
18.0k
            (format = tstring_full_format_spec_rule(p), !p->error_indicator)  // tstring_full_format_spec?
16916
18.0k
            &&
16917
18.0k
            (rbrace = _PyPegen_expect_token(p, 26))  // token='}'
16918
18.0k
        )
16919
5.11k
        {
16920
5.11k
            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? '}'"));
16921
5.11k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16922
5.11k
            if (_token == NULL) {
16923
0
                p->level--;
16924
0
                return NULL;
16925
0
            }
16926
5.11k
            int _end_lineno = _token->end_lineno;
16927
5.11k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16928
5.11k
            int _end_col_offset = _token->end_col_offset;
16929
5.11k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16930
5.11k
            _res = _PyPegen_interpolation ( p , a , debug_expr , conversion , format , rbrace , EXTRA );
16931
5.11k
            if (_res == NULL && PyErr_Occurred()) {
16932
0
                p->error_indicator = 1;
16933
0
                p->level--;
16934
0
                return NULL;
16935
0
            }
16936
5.11k
            goto done;
16937
5.11k
        }
16938
12.9k
        p->mark = _mark;
16939
12.9k
        D(fprintf(stderr, "%*c%s tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16940
12.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'"));
16941
12.9k
    }
16942
12.9k
    if (p->call_invalid_rules) { // invalid_tstring_replacement_field
16943
5.74k
        if (p->error_indicator) {
16944
1.29k
            p->level--;
16945
1.29k
            return NULL;
16946
1.29k
        }
16947
4.44k
        D(fprintf(stderr, "%*c> tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_tstring_replacement_field"));
16948
4.44k
        void *invalid_tstring_replacement_field_var;
16949
4.44k
        if (
16950
4.44k
            (invalid_tstring_replacement_field_var = invalid_tstring_replacement_field_rule(p))  // invalid_tstring_replacement_field
16951
4.44k
        )
16952
0
        {
16953
0
            D(fprintf(stderr, "%*c+ tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_tstring_replacement_field"));
16954
0
            _res = invalid_tstring_replacement_field_var;
16955
0
            goto done;
16956
0
        }
16957
4.44k
        p->mark = _mark;
16958
4.44k
        D(fprintf(stderr, "%*c%s tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16959
4.44k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_tstring_replacement_field"));
16960
4.44k
    }
16961
11.6k
    _res = NULL;
16962
16.7k
  done:
16963
16.7k
    p->level--;
16964
16.7k
    return _res;
16965
11.6k
}
16966
16967
// tstring_middle: tstring_replacement_field | TSTRING_MIDDLE
16968
static expr_ty
16969
tstring_middle_rule(Parser *p)
16970
18.2k
{
16971
18.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16972
1
        _Pypegen_stack_overflow(p);
16973
1
    }
16974
18.2k
    if (p->error_indicator) {
16975
1
        p->level--;
16976
1
        return NULL;
16977
1
    }
16978
18.2k
    expr_ty _res = NULL;
16979
18.2k
    int _mark = p->mark;
16980
18.2k
    { // tstring_replacement_field
16981
18.2k
        if (p->error_indicator) {
16982
0
            p->level--;
16983
0
            return NULL;
16984
0
        }
16985
18.2k
        D(fprintf(stderr, "%*c> tstring_middle[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring_replacement_field"));
16986
18.2k
        expr_ty tstring_replacement_field_var;
16987
18.2k
        if (
16988
18.2k
            (tstring_replacement_field_var = tstring_replacement_field_rule(p))  // tstring_replacement_field
16989
18.2k
        )
16990
5.11k
        {
16991
5.11k
            D(fprintf(stderr, "%*c+ tstring_middle[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tstring_replacement_field"));
16992
5.11k
            _res = tstring_replacement_field_var;
16993
5.11k
            goto done;
16994
5.11k
        }
16995
13.1k
        p->mark = _mark;
16996
13.1k
        D(fprintf(stderr, "%*c%s tstring_middle[%d-%d]: %s failed!\n", p->level, ' ',
16997
13.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring_replacement_field"));
16998
13.1k
    }
16999
0
    { // TSTRING_MIDDLE
17000
13.1k
        if (p->error_indicator) {
17001
1.66k
            p->level--;
17002
1.66k
            return NULL;
17003
1.66k
        }
17004
11.4k
        D(fprintf(stderr, "%*c> tstring_middle[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TSTRING_MIDDLE"));
17005
11.4k
        Token * t;
17006
11.4k
        if (
17007
11.4k
            (t = _PyPegen_expect_token(p, TSTRING_MIDDLE))  // token='TSTRING_MIDDLE'
17008
11.4k
        )
17009
6.66k
        {
17010
6.66k
            D(fprintf(stderr, "%*c+ tstring_middle[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TSTRING_MIDDLE"));
17011
6.66k
            _res = _PyPegen_constant_from_token ( p , t );
17012
6.66k
            if (_res == NULL && PyErr_Occurred()) {
17013
3
                p->error_indicator = 1;
17014
3
                p->level--;
17015
3
                return NULL;
17016
3
            }
17017
6.65k
            goto done;
17018
6.66k
        }
17019
4.78k
        p->mark = _mark;
17020
4.78k
        D(fprintf(stderr, "%*c%s tstring_middle[%d-%d]: %s failed!\n", p->level, ' ',
17021
4.78k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TSTRING_MIDDLE"));
17022
4.78k
    }
17023
0
    _res = NULL;
17024
16.5k
  done:
17025
16.5k
    p->level--;
17026
16.5k
    return _res;
17027
4.78k
}
17028
17029
// tstring: TSTRING_START tstring_middle* TSTRING_END
17030
static expr_ty
17031
tstring_rule(Parser *p)
17032
92.6k
{
17033
92.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17034
0
        _Pypegen_stack_overflow(p);
17035
0
    }
17036
92.6k
    if (p->error_indicator) {
17037
1
        p->level--;
17038
1
        return NULL;
17039
1
    }
17040
92.6k
    expr_ty _res = NULL;
17041
92.6k
    if (_PyPegen_is_memoized(p, tstring_type, &_res)) {
17042
22.7k
        p->level--;
17043
22.7k
        return _res;
17044
22.7k
    }
17045
69.8k
    int _mark = p->mark;
17046
69.8k
    { // TSTRING_START tstring_middle* TSTRING_END
17047
69.8k
        if (p->error_indicator) {
17048
0
            p->level--;
17049
0
            return NULL;
17050
0
        }
17051
69.8k
        D(fprintf(stderr, "%*c> tstring[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TSTRING_START tstring_middle* TSTRING_END"));
17052
69.8k
        Token * a;
17053
69.8k
        asdl_seq * b;
17054
69.8k
        Token * c;
17055
69.8k
        if (
17056
69.8k
            (a = _PyPegen_expect_token(p, TSTRING_START))  // token='TSTRING_START'
17057
69.8k
            &&
17058
69.8k
            (b = _loop0_79_rule(p))  // tstring_middle*
17059
69.8k
            &&
17060
69.8k
            (c = _PyPegen_expect_token(p, TSTRING_END))  // token='TSTRING_END'
17061
69.8k
        )
17062
3.83k
        {
17063
3.83k
            D(fprintf(stderr, "%*c+ tstring[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TSTRING_START tstring_middle* TSTRING_END"));
17064
3.83k
            _res = CHECK_VERSION ( expr_ty , 14 , "t-strings are" , _PyPegen_template_str ( p , a , ( asdl_expr_seq* ) b , c ) );
17065
3.83k
            if (_res == NULL && PyErr_Occurred()) {
17066
0
                p->error_indicator = 1;
17067
0
                p->level--;
17068
0
                return NULL;
17069
0
            }
17070
3.83k
            goto done;
17071
3.83k
        }
17072
65.9k
        p->mark = _mark;
17073
65.9k
        D(fprintf(stderr, "%*c%s tstring[%d-%d]: %s failed!\n", p->level, ' ',
17074
65.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TSTRING_START tstring_middle* TSTRING_END"));
17075
65.9k
    }
17076
0
    _res = NULL;
17077
69.8k
  done:
17078
69.8k
    _PyPegen_insert_memo(p, _mark, tstring_type, _res);
17079
69.8k
    p->level--;
17080
69.8k
    return _res;
17081
65.9k
}
17082
17083
// string: STRING
17084
static expr_ty
17085
string_rule(Parser *p)
17086
208k
{
17087
208k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17088
0
        _Pypegen_stack_overflow(p);
17089
0
    }
17090
208k
    if (p->error_indicator) {
17091
0
        p->level--;
17092
0
        return NULL;
17093
0
    }
17094
208k
    expr_ty _res = NULL;
17095
208k
    int _mark = p->mark;
17096
208k
    { // STRING
17097
208k
        if (p->error_indicator) {
17098
0
            p->level--;
17099
0
            return NULL;
17100
0
        }
17101
208k
        D(fprintf(stderr, "%*c> string[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING"));
17102
208k
        Token* s;
17103
208k
        if (
17104
208k
            (s = (Token*)_PyPegen_string_token(p))  // STRING
17105
208k
        )
17106
75.9k
        {
17107
75.9k
            D(fprintf(stderr, "%*c+ string[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING"));
17108
75.9k
            _res = _PyPegen_constant_from_string ( p , s );
17109
75.9k
            if (_res == NULL && PyErr_Occurred()) {
17110
381
                p->error_indicator = 1;
17111
381
                p->level--;
17112
381
                return NULL;
17113
381
            }
17114
75.5k
            goto done;
17115
75.9k
        }
17116
132k
        p->mark = _mark;
17117
132k
        D(fprintf(stderr, "%*c%s string[%d-%d]: %s failed!\n", p->level, ' ',
17118
132k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING"));
17119
132k
    }
17120
0
    _res = NULL;
17121
208k
  done:
17122
208k
    p->level--;
17123
208k
    return _res;
17124
132k
}
17125
17126
// strings: invalid_string_tstring_concat | ((fstring | string))+ | tstring+
17127
static expr_ty
17128
strings_rule(Parser *p)
17129
170k
{
17130
170k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17131
0
        _Pypegen_stack_overflow(p);
17132
0
    }
17133
170k
    if (p->error_indicator) {
17134
0
        p->level--;
17135
0
        return NULL;
17136
0
    }
17137
170k
    expr_ty _res = NULL;
17138
170k
    if (_PyPegen_is_memoized(p, strings_type, &_res)) {
17139
63.0k
        p->level--;
17140
63.0k
        return _res;
17141
63.0k
    }
17142
107k
    int _mark = p->mark;
17143
107k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17144
0
        p->error_indicator = 1;
17145
0
        p->level--;
17146
0
        return NULL;
17147
0
    }
17148
107k
    int _start_lineno = p->tokens[_mark]->lineno;
17149
107k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17150
107k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17151
107k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17152
107k
    if (p->call_invalid_rules) { // invalid_string_tstring_concat
17153
29.8k
        if (p->error_indicator) {
17154
0
            p->level--;
17155
0
            return NULL;
17156
0
        }
17157
29.8k
        D(fprintf(stderr, "%*c> strings[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_string_tstring_concat"));
17158
29.8k
        void *invalid_string_tstring_concat_var;
17159
29.8k
        if (
17160
29.8k
            (invalid_string_tstring_concat_var = invalid_string_tstring_concat_rule(p))  // invalid_string_tstring_concat
17161
29.8k
        )
17162
0
        {
17163
0
            D(fprintf(stderr, "%*c+ strings[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_string_tstring_concat"));
17164
0
            _res = invalid_string_tstring_concat_var;
17165
0
            goto done;
17166
0
        }
17167
29.8k
        p->mark = _mark;
17168
29.8k
        D(fprintf(stderr, "%*c%s strings[%d-%d]: %s failed!\n", p->level, ' ',
17169
29.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_string_tstring_concat"));
17170
29.8k
    }
17171
107k
    { // ((fstring | string))+
17172
107k
        if (p->error_indicator) {
17173
3.08k
            p->level--;
17174
3.08k
            return NULL;
17175
3.08k
        }
17176
104k
        D(fprintf(stderr, "%*c> strings[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((fstring | string))+"));
17177
104k
        asdl_expr_seq* a;
17178
104k
        if (
17179
104k
            (a = (asdl_expr_seq*)_loop1_80_rule(p))  // ((fstring | string))+
17180
104k
        )
17181
49.5k
        {
17182
49.5k
            D(fprintf(stderr, "%*c+ strings[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((fstring | string))+"));
17183
49.5k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17184
49.5k
            if (_token == NULL) {
17185
0
                p->level--;
17186
0
                return NULL;
17187
0
            }
17188
49.5k
            int _end_lineno = _token->end_lineno;
17189
49.5k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17190
49.5k
            int _end_col_offset = _token->end_col_offset;
17191
49.5k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17192
49.5k
            _res = _PyPegen_concatenate_strings ( p , a , EXTRA );
17193
49.5k
            if (_res == NULL && PyErr_Occurred()) {
17194
6
                p->error_indicator = 1;
17195
6
                p->level--;
17196
6
                return NULL;
17197
6
            }
17198
49.5k
            goto done;
17199
49.5k
        }
17200
54.5k
        p->mark = _mark;
17201
54.5k
        D(fprintf(stderr, "%*c%s strings[%d-%d]: %s failed!\n", p->level, ' ',
17202
54.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((fstring | string))+"));
17203
54.5k
    }
17204
0
    { // tstring+
17205
54.5k
        if (p->error_indicator) {
17206
1.21k
            p->level--;
17207
1.21k
            return NULL;
17208
1.21k
        }
17209
53.3k
        D(fprintf(stderr, "%*c> strings[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring+"));
17210
53.3k
        asdl_expr_seq* a;
17211
53.3k
        if (
17212
53.3k
            (a = (asdl_expr_seq*)_loop1_81_rule(p))  // tstring+
17213
53.3k
        )
17214
2.96k
        {
17215
2.96k
            D(fprintf(stderr, "%*c+ strings[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tstring+"));
17216
2.96k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17217
2.96k
            if (_token == NULL) {
17218
0
                p->level--;
17219
0
                return NULL;
17220
0
            }
17221
2.96k
            int _end_lineno = _token->end_lineno;
17222
2.96k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17223
2.96k
            int _end_col_offset = _token->end_col_offset;
17224
2.96k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17225
2.96k
            _res = _PyPegen_concatenate_tstrings ( p , a , EXTRA );
17226
2.96k
            if (_res == NULL && PyErr_Occurred()) {
17227
0
                p->error_indicator = 1;
17228
0
                p->level--;
17229
0
                return NULL;
17230
0
            }
17231
2.96k
            goto done;
17232
2.96k
        }
17233
50.4k
        p->mark = _mark;
17234
50.4k
        D(fprintf(stderr, "%*c%s strings[%d-%d]: %s failed!\n", p->level, ' ',
17235
50.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring+"));
17236
50.4k
    }
17237
0
    _res = NULL;
17238
102k
  done:
17239
102k
    _PyPegen_insert_memo(p, _mark, strings_type, _res);
17240
102k
    p->level--;
17241
102k
    return _res;
17242
50.4k
}
17243
17244
// list: '[' star_named_expressions? ']'
17245
static expr_ty
17246
list_rule(Parser *p)
17247
188k
{
17248
188k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17249
1
        _Pypegen_stack_overflow(p);
17250
1
    }
17251
188k
    if (p->error_indicator) {
17252
1
        p->level--;
17253
1
        return NULL;
17254
1
    }
17255
188k
    expr_ty _res = NULL;
17256
188k
    int _mark = p->mark;
17257
188k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17258
0
        p->error_indicator = 1;
17259
0
        p->level--;
17260
0
        return NULL;
17261
0
    }
17262
188k
    int _start_lineno = p->tokens[_mark]->lineno;
17263
188k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17264
188k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17265
188k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17266
188k
    { // '[' star_named_expressions? ']'
17267
188k
        if (p->error_indicator) {
17268
0
            p->level--;
17269
0
            return NULL;
17270
0
        }
17271
188k
        D(fprintf(stderr, "%*c> list[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' star_named_expressions? ']'"));
17272
188k
        Token * _literal;
17273
188k
        Token * _literal_1;
17274
188k
        void *a;
17275
188k
        if (
17276
188k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
17277
188k
            &&
17278
188k
            (a = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
17279
188k
            &&
17280
188k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
17281
188k
        )
17282
16.4k
        {
17283
16.4k
            D(fprintf(stderr, "%*c+ list[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' star_named_expressions? ']'"));
17284
16.4k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17285
16.4k
            if (_token == NULL) {
17286
0
                p->level--;
17287
0
                return NULL;
17288
0
            }
17289
16.4k
            int _end_lineno = _token->end_lineno;
17290
16.4k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17291
16.4k
            int _end_col_offset = _token->end_col_offset;
17292
16.4k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17293
16.4k
            _res = _PyAST_List ( a , Load , EXTRA );
17294
16.4k
            if (_res == NULL && PyErr_Occurred()) {
17295
0
                p->error_indicator = 1;
17296
0
                p->level--;
17297
0
                return NULL;
17298
0
            }
17299
16.4k
            goto done;
17300
16.4k
        }
17301
172k
        p->mark = _mark;
17302
172k
        D(fprintf(stderr, "%*c%s list[%d-%d]: %s failed!\n", p->level, ' ',
17303
172k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' star_named_expressions? ']'"));
17304
172k
    }
17305
0
    _res = NULL;
17306
188k
  done:
17307
188k
    p->level--;
17308
188k
    return _res;
17309
172k
}
17310
17311
// tuple: '(' [star_named_expression ',' star_named_expressions?] ')'
17312
static expr_ty
17313
tuple_rule(Parser *p)
17314
208k
{
17315
208k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17316
1
        _Pypegen_stack_overflow(p);
17317
1
    }
17318
208k
    if (p->error_indicator) {
17319
1
        p->level--;
17320
1
        return NULL;
17321
1
    }
17322
208k
    expr_ty _res = NULL;
17323
208k
    int _mark = p->mark;
17324
208k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17325
0
        p->error_indicator = 1;
17326
0
        p->level--;
17327
0
        return NULL;
17328
0
    }
17329
208k
    int _start_lineno = p->tokens[_mark]->lineno;
17330
208k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17331
208k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17332
208k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17333
208k
    { // '(' [star_named_expression ',' star_named_expressions?] ')'
17334
208k
        if (p->error_indicator) {
17335
0
            p->level--;
17336
0
            return NULL;
17337
0
        }
17338
208k
        D(fprintf(stderr, "%*c> tuple[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
17339
208k
        Token * _literal;
17340
208k
        Token * _literal_1;
17341
208k
        void *a;
17342
208k
        if (
17343
208k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
17344
208k
            &&
17345
208k
            (a = _tmp_82_rule(p), !p->error_indicator)  // [star_named_expression ',' star_named_expressions?]
17346
208k
            &&
17347
208k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
17348
208k
        )
17349
46.5k
        {
17350
46.5k
            D(fprintf(stderr, "%*c+ tuple[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
17351
46.5k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17352
46.5k
            if (_token == NULL) {
17353
0
                p->level--;
17354
0
                return NULL;
17355
0
            }
17356
46.5k
            int _end_lineno = _token->end_lineno;
17357
46.5k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17358
46.5k
            int _end_col_offset = _token->end_col_offset;
17359
46.5k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17360
46.5k
            _res = _PyAST_Tuple ( a , Load , EXTRA );
17361
46.5k
            if (_res == NULL && PyErr_Occurred()) {
17362
0
                p->error_indicator = 1;
17363
0
                p->level--;
17364
0
                return NULL;
17365
0
            }
17366
46.5k
            goto done;
17367
46.5k
        }
17368
162k
        p->mark = _mark;
17369
162k
        D(fprintf(stderr, "%*c%s tuple[%d-%d]: %s failed!\n", p->level, ' ',
17370
162k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
17371
162k
    }
17372
0
    _res = NULL;
17373
208k
  done:
17374
208k
    p->level--;
17375
208k
    return _res;
17376
162k
}
17377
17378
// set: '{' star_named_expressions '}'
17379
static expr_ty
17380
set_rule(Parser *p)
17381
13.4k
{
17382
13.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17383
0
        _Pypegen_stack_overflow(p);
17384
0
    }
17385
13.4k
    if (p->error_indicator) {
17386
0
        p->level--;
17387
0
        return NULL;
17388
0
    }
17389
13.4k
    expr_ty _res = NULL;
17390
13.4k
    int _mark = p->mark;
17391
13.4k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17392
0
        p->error_indicator = 1;
17393
0
        p->level--;
17394
0
        return NULL;
17395
0
    }
17396
13.4k
    int _start_lineno = p->tokens[_mark]->lineno;
17397
13.4k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17398
13.4k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17399
13.4k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17400
13.4k
    { // '{' star_named_expressions '}'
17401
13.4k
        if (p->error_indicator) {
17402
0
            p->level--;
17403
0
            return NULL;
17404
0
        }
17405
13.4k
        D(fprintf(stderr, "%*c> set[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' star_named_expressions '}'"));
17406
13.4k
        Token * _literal;
17407
13.4k
        Token * _literal_1;
17408
13.4k
        asdl_expr_seq* a;
17409
13.4k
        if (
17410
13.4k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
17411
13.4k
            &&
17412
13.4k
            (a = star_named_expressions_rule(p))  // star_named_expressions
17413
13.4k
            &&
17414
13.4k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
17415
13.4k
        )
17416
1.67k
        {
17417
1.67k
            D(fprintf(stderr, "%*c+ set[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' star_named_expressions '}'"));
17418
1.67k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17419
1.67k
            if (_token == NULL) {
17420
0
                p->level--;
17421
0
                return NULL;
17422
0
            }
17423
1.67k
            int _end_lineno = _token->end_lineno;
17424
1.67k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17425
1.67k
            int _end_col_offset = _token->end_col_offset;
17426
1.67k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17427
1.67k
            _res = _PyAST_Set ( a , EXTRA );
17428
1.67k
            if (_res == NULL && PyErr_Occurred()) {
17429
0
                p->error_indicator = 1;
17430
0
                p->level--;
17431
0
                return NULL;
17432
0
            }
17433
1.67k
            goto done;
17434
1.67k
        }
17435
11.7k
        p->mark = _mark;
17436
11.7k
        D(fprintf(stderr, "%*c%s set[%d-%d]: %s failed!\n", p->level, ' ',
17437
11.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' star_named_expressions '}'"));
17438
11.7k
    }
17439
0
    _res = NULL;
17440
13.4k
  done:
17441
13.4k
    p->level--;
17442
13.4k
    return _res;
17443
11.7k
}
17444
17445
// dict: '{' double_starred_kvpairs? '}' | '{' invalid_double_starred_kvpairs '}'
17446
static expr_ty
17447
dict_rule(Parser *p)
17448
25.5k
{
17449
25.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17450
1
        _Pypegen_stack_overflow(p);
17451
1
    }
17452
25.5k
    if (p->error_indicator) {
17453
1
        p->level--;
17454
1
        return NULL;
17455
1
    }
17456
25.5k
    expr_ty _res = NULL;
17457
25.5k
    int _mark = p->mark;
17458
25.5k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17459
0
        p->error_indicator = 1;
17460
0
        p->level--;
17461
0
        return NULL;
17462
0
    }
17463
25.5k
    int _start_lineno = p->tokens[_mark]->lineno;
17464
25.5k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17465
25.5k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17466
25.5k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17467
25.5k
    { // '{' double_starred_kvpairs? '}'
17468
25.5k
        if (p->error_indicator) {
17469
0
            p->level--;
17470
0
            return NULL;
17471
0
        }
17472
25.5k
        D(fprintf(stderr, "%*c> dict[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
17473
25.5k
        Token * _literal;
17474
25.5k
        Token * _literal_1;
17475
25.5k
        void *a;
17476
25.5k
        if (
17477
25.5k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
17478
25.5k
            &&
17479
25.5k
            (a = double_starred_kvpairs_rule(p), !p->error_indicator)  // double_starred_kvpairs?
17480
25.5k
            &&
17481
25.5k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
17482
25.5k
        )
17483
4.04k
        {
17484
4.04k
            D(fprintf(stderr, "%*c+ dict[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
17485
4.04k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17486
4.04k
            if (_token == NULL) {
17487
0
                p->level--;
17488
0
                return NULL;
17489
0
            }
17490
4.04k
            int _end_lineno = _token->end_lineno;
17491
4.04k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17492
4.04k
            int _end_col_offset = _token->end_col_offset;
17493
4.04k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17494
4.04k
            _res = _PyAST_Dict ( CHECK ( asdl_expr_seq* , _PyPegen_get_keys ( p , a ) ) , CHECK ( asdl_expr_seq* , _PyPegen_get_values ( p , a ) ) , EXTRA );
17495
4.04k
            if (_res == NULL && PyErr_Occurred()) {
17496
0
                p->error_indicator = 1;
17497
0
                p->level--;
17498
0
                return NULL;
17499
0
            }
17500
4.04k
            goto done;
17501
4.04k
        }
17502
21.5k
        p->mark = _mark;
17503
21.5k
        D(fprintf(stderr, "%*c%s dict[%d-%d]: %s failed!\n", p->level, ' ',
17504
21.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
17505
21.5k
    }
17506
0
    { // '{' invalid_double_starred_kvpairs '}'
17507
21.5k
        if (p->error_indicator) {
17508
7.75k
            p->level--;
17509
7.75k
            return NULL;
17510
7.75k
        }
17511
13.7k
        D(fprintf(stderr, "%*c> dict[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
17512
13.7k
        Token * _literal;
17513
13.7k
        Token * _literal_1;
17514
13.7k
        void *invalid_double_starred_kvpairs_var;
17515
13.7k
        if (
17516
13.7k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
17517
13.7k
            &&
17518
13.7k
            (invalid_double_starred_kvpairs_var = invalid_double_starred_kvpairs_rule(p))  // invalid_double_starred_kvpairs
17519
13.7k
            &&
17520
13.7k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
17521
13.7k
        )
17522
0
        {
17523
0
            D(fprintf(stderr, "%*c+ dict[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
17524
0
            _res = _PyPegen_dummy_name(p, _literal, invalid_double_starred_kvpairs_var, _literal_1);
17525
0
            goto done;
17526
0
        }
17527
13.7k
        p->mark = _mark;
17528
13.7k
        D(fprintf(stderr, "%*c%s dict[%d-%d]: %s failed!\n", p->level, ' ',
17529
13.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
17530
13.7k
    }
17531
0
    _res = NULL;
17532
17.8k
  done:
17533
17.8k
    p->level--;
17534
17.8k
    return _res;
17535
13.7k
}
17536
17537
// double_starred_kvpairs: ','.double_starred_kvpair+ ','?
17538
static asdl_seq*
17539
double_starred_kvpairs_rule(Parser *p)
17540
25.5k
{
17541
25.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17542
1
        _Pypegen_stack_overflow(p);
17543
1
    }
17544
25.5k
    if (p->error_indicator) {
17545
1
        p->level--;
17546
1
        return NULL;
17547
1
    }
17548
25.5k
    asdl_seq* _res = NULL;
17549
25.5k
    int _mark = p->mark;
17550
25.5k
    { // ','.double_starred_kvpair+ ','?
17551
25.5k
        if (p->error_indicator) {
17552
0
            p->level--;
17553
0
            return NULL;
17554
0
        }
17555
25.5k
        D(fprintf(stderr, "%*c> double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ','?"));
17556
25.5k
        void *_opt_var;
17557
25.5k
        UNUSED(_opt_var); // Silence compiler warnings
17558
25.5k
        asdl_seq * a;
17559
25.5k
        if (
17560
25.5k
            (a = _gather_84_rule(p))  // ','.double_starred_kvpair+
17561
25.5k
            &&
17562
25.5k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
17563
25.5k
        )
17564
5.81k
        {
17565
5.81k
            D(fprintf(stderr, "%*c+ double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ','?"));
17566
5.81k
            _res = a;
17567
5.81k
            if (_res == NULL && PyErr_Occurred()) {
17568
0
                p->error_indicator = 1;
17569
0
                p->level--;
17570
0
                return NULL;
17571
0
            }
17572
5.81k
            goto done;
17573
5.81k
        }
17574
19.7k
        p->mark = _mark;
17575
19.7k
        D(fprintf(stderr, "%*c%s double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
17576
19.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.double_starred_kvpair+ ','?"));
17577
19.7k
    }
17578
0
    _res = NULL;
17579
25.5k
  done:
17580
25.5k
    p->level--;
17581
25.5k
    return _res;
17582
19.7k
}
17583
17584
// double_starred_kvpair: '**' bitwise_or | kvpair
17585
static KeyValuePair*
17586
double_starred_kvpair_rule(Parser *p)
17587
79.3k
{
17588
79.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17589
1
        _Pypegen_stack_overflow(p);
17590
1
    }
17591
79.3k
    if (p->error_indicator) {
17592
1
        p->level--;
17593
1
        return NULL;
17594
1
    }
17595
79.3k
    KeyValuePair* _res = NULL;
17596
79.3k
    int _mark = p->mark;
17597
79.3k
    { // '**' bitwise_or
17598
79.3k
        if (p->error_indicator) {
17599
0
            p->level--;
17600
0
            return NULL;
17601
0
        }
17602
79.3k
        D(fprintf(stderr, "%*c> double_starred_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' bitwise_or"));
17603
79.3k
        Token * _literal;
17604
79.3k
        expr_ty a;
17605
79.3k
        if (
17606
79.3k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
17607
79.3k
            &&
17608
79.3k
            (a = bitwise_or_rule(p))  // bitwise_or
17609
79.3k
        )
17610
1.85k
        {
17611
1.85k
            D(fprintf(stderr, "%*c+ double_starred_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' bitwise_or"));
17612
1.85k
            _res = _PyPegen_key_value_pair ( p , NULL , a );
17613
1.85k
            if (_res == NULL && PyErr_Occurred()) {
17614
0
                p->error_indicator = 1;
17615
0
                p->level--;
17616
0
                return NULL;
17617
0
            }
17618
1.85k
            goto done;
17619
1.85k
        }
17620
77.5k
        p->mark = _mark;
17621
77.5k
        D(fprintf(stderr, "%*c%s double_starred_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
17622
77.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' bitwise_or"));
17623
77.5k
    }
17624
0
    { // kvpair
17625
77.5k
        if (p->error_indicator) {
17626
481
            p->level--;
17627
481
            return NULL;
17628
481
        }
17629
77.0k
        D(fprintf(stderr, "%*c> double_starred_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kvpair"));
17630
77.0k
        KeyValuePair* kvpair_var;
17631
77.0k
        if (
17632
77.0k
            (kvpair_var = kvpair_rule(p))  // kvpair
17633
77.0k
        )
17634
44.1k
        {
17635
44.1k
            D(fprintf(stderr, "%*c+ double_starred_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kvpair"));
17636
44.1k
            _res = kvpair_var;
17637
44.1k
            goto done;
17638
44.1k
        }
17639
32.8k
        p->mark = _mark;
17640
32.8k
        D(fprintf(stderr, "%*c%s double_starred_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
17641
32.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kvpair"));
17642
32.8k
    }
17643
0
    _res = NULL;
17644
78.8k
  done:
17645
78.8k
    p->level--;
17646
78.8k
    return _res;
17647
32.8k
}
17648
17649
// kvpair: expression ':' expression
17650
static KeyValuePair*
17651
kvpair_rule(Parser *p)
17652
88.5k
{
17653
88.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17654
1
        _Pypegen_stack_overflow(p);
17655
1
    }
17656
88.5k
    if (p->error_indicator) {
17657
1
        p->level--;
17658
1
        return NULL;
17659
1
    }
17660
88.5k
    KeyValuePair* _res = NULL;
17661
88.5k
    int _mark = p->mark;
17662
88.5k
    { // expression ':' expression
17663
88.5k
        if (p->error_indicator) {
17664
0
            p->level--;
17665
0
            return NULL;
17666
0
        }
17667
88.5k
        D(fprintf(stderr, "%*c> kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
17668
88.5k
        Token * _literal;
17669
88.5k
        expr_ty a;
17670
88.5k
        expr_ty b;
17671
88.5k
        if (
17672
88.5k
            (a = expression_rule(p))  // expression
17673
88.5k
            &&
17674
88.5k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
17675
88.5k
            &&
17676
88.5k
            (b = expression_rule(p))  // expression
17677
88.5k
        )
17678
47.1k
        {
17679
47.1k
            D(fprintf(stderr, "%*c+ kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
17680
47.1k
            _res = _PyPegen_key_value_pair ( p , a , b );
17681
47.1k
            if (_res == NULL && PyErr_Occurred()) {
17682
0
                p->error_indicator = 1;
17683
0
                p->level--;
17684
0
                return NULL;
17685
0
            }
17686
47.1k
            goto done;
17687
47.1k
        }
17688
41.3k
        p->mark = _mark;
17689
41.3k
        D(fprintf(stderr, "%*c%s kvpair[%d-%d]: %s failed!\n", p->level, ' ',
17690
41.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' expression"));
17691
41.3k
    }
17692
0
    _res = NULL;
17693
88.5k
  done:
17694
88.5k
    p->level--;
17695
88.5k
    return _res;
17696
41.3k
}
17697
17698
// for_if_clauses: for_if_clause+
17699
static asdl_comprehension_seq*
17700
for_if_clauses_rule(Parser *p)
17701
96.3k
{
17702
96.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17703
0
        _Pypegen_stack_overflow(p);
17704
0
    }
17705
96.3k
    if (p->error_indicator) {
17706
0
        p->level--;
17707
0
        return NULL;
17708
0
    }
17709
96.3k
    asdl_comprehension_seq* _res = NULL;
17710
96.3k
    int _mark = p->mark;
17711
96.3k
    { // for_if_clause+
17712
96.3k
        if (p->error_indicator) {
17713
0
            p->level--;
17714
0
            return NULL;
17715
0
        }
17716
96.3k
        D(fprintf(stderr, "%*c> for_if_clauses[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause+"));
17717
96.3k
        asdl_comprehension_seq* a;
17718
96.3k
        if (
17719
96.3k
            (a = (asdl_comprehension_seq*)_loop1_85_rule(p))  // for_if_clause+
17720
96.3k
        )
17721
9.92k
        {
17722
9.92k
            D(fprintf(stderr, "%*c+ for_if_clauses[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "for_if_clause+"));
17723
9.92k
            _res = a;
17724
9.92k
            if (_res == NULL && PyErr_Occurred()) {
17725
0
                p->error_indicator = 1;
17726
0
                p->level--;
17727
0
                return NULL;
17728
0
            }
17729
9.92k
            goto done;
17730
9.92k
        }
17731
86.4k
        p->mark = _mark;
17732
86.4k
        D(fprintf(stderr, "%*c%s for_if_clauses[%d-%d]: %s failed!\n", p->level, ' ',
17733
86.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause+"));
17734
86.4k
    }
17735
0
    _res = NULL;
17736
96.3k
  done:
17737
96.3k
    p->level--;
17738
96.3k
    return _res;
17739
86.4k
}
17740
17741
// for_if_clause:
17742
//     | 'async' 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
17743
//     | 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
17744
//     | invalid_for_if_clause
17745
//     | invalid_for_target
17746
static comprehension_ty
17747
for_if_clause_rule(Parser *p)
17748
107k
{
17749
107k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17750
0
        _Pypegen_stack_overflow(p);
17751
0
    }
17752
107k
    if (p->error_indicator) {
17753
225
        p->level--;
17754
225
        return NULL;
17755
225
    }
17756
107k
    comprehension_ty _res = NULL;
17757
107k
    int _mark = p->mark;
17758
107k
    { // 'async' 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
17759
107k
        if (p->error_indicator) {
17760
0
            p->level--;
17761
0
            return NULL;
17762
0
        }
17763
107k
        D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async' 'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
17764
107k
        int _cut_var = 0;
17765
107k
        Token * _keyword;
17766
107k
        Token * _keyword_1;
17767
107k
        Token * _keyword_2;
17768
107k
        expr_ty a;
17769
107k
        expr_ty b;
17770
107k
        asdl_expr_seq* c;
17771
107k
        if (
17772
107k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
17773
107k
            &&
17774
107k
            (_keyword_1 = _PyPegen_expect_token(p, 699))  // token='for'
17775
107k
            &&
17776
107k
            (a = star_targets_rule(p))  // star_targets
17777
107k
            &&
17778
107k
            (_keyword_2 = _PyPegen_expect_token(p, 700))  // token='in'
17779
107k
            &&
17780
107k
            (_cut_var = 1)
17781
107k
            &&
17782
107k
            (b = disjunction_rule(p))  // disjunction
17783
107k
            &&
17784
107k
            (c = (asdl_expr_seq*)_loop0_86_rule(p))  // (('if' disjunction))*
17785
107k
        )
17786
414
        {
17787
414
            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))*"));
17788
414
            _res = CHECK_VERSION ( comprehension_ty , 6 , "Async comprehensions are" , _PyAST_comprehension ( a , b , c , 1 , p -> arena ) );
17789
414
            if (_res == NULL && PyErr_Occurred()) {
17790
0
                p->error_indicator = 1;
17791
0
                p->level--;
17792
0
                return NULL;
17793
0
            }
17794
414
            goto done;
17795
414
        }
17796
106k
        p->mark = _mark;
17797
106k
        D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
17798
106k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
17799
106k
        if (_cut_var) {
17800
67
            p->level--;
17801
67
            return NULL;
17802
67
        }
17803
106k
    }
17804
106k
    { // 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
17805
106k
        if (p->error_indicator) {
17806
196
            p->level--;
17807
196
            return NULL;
17808
196
        }
17809
106k
        D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
17810
106k
        int _cut_var = 0;
17811
106k
        Token * _keyword;
17812
106k
        Token * _keyword_1;
17813
106k
        expr_ty a;
17814
106k
        expr_ty b;
17815
106k
        asdl_expr_seq* c;
17816
106k
        if (
17817
106k
            (_keyword = _PyPegen_expect_token(p, 699))  // token='for'
17818
106k
            &&
17819
106k
            (a = star_targets_rule(p))  // star_targets
17820
106k
            &&
17821
106k
            (_keyword_1 = _PyPegen_expect_token(p, 700))  // token='in'
17822
106k
            &&
17823
106k
            (_cut_var = 1)
17824
106k
            &&
17825
106k
            (b = disjunction_rule(p))  // disjunction
17826
106k
            &&
17827
106k
            (c = (asdl_expr_seq*)_loop0_86_rule(p))  // (('if' disjunction))*
17828
106k
        )
17829
10.4k
        {
17830
10.4k
            D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
17831
10.4k
            _res = _PyAST_comprehension ( a , b , c , 0 , p -> arena );
17832
10.4k
            if (_res == NULL && PyErr_Occurred()) {
17833
0
                p->error_indicator = 1;
17834
0
                p->level--;
17835
0
                return NULL;
17836
0
            }
17837
10.4k
            goto done;
17838
10.4k
        }
17839
95.8k
        p->mark = _mark;
17840
95.8k
        D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
17841
95.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
17842
95.8k
        if (_cut_var) {
17843
223
            p->level--;
17844
223
            return NULL;
17845
223
        }
17846
95.8k
    }
17847
95.6k
    if (p->call_invalid_rules) { // invalid_for_if_clause
17848
46.6k
        if (p->error_indicator) {
17849
745
            p->level--;
17850
745
            return NULL;
17851
745
        }
17852
45.9k
        D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_if_clause"));
17853
45.9k
        void *invalid_for_if_clause_var;
17854
45.9k
        if (
17855
45.9k
            (invalid_for_if_clause_var = invalid_for_if_clause_rule(p))  // invalid_for_if_clause
17856
45.9k
        )
17857
0
        {
17858
0
            D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_if_clause"));
17859
0
            _res = invalid_for_if_clause_var;
17860
0
            goto done;
17861
0
        }
17862
45.9k
        p->mark = _mark;
17863
45.9k
        D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
17864
45.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_if_clause"));
17865
45.9k
    }
17866
94.9k
    if (p->call_invalid_rules) { // invalid_for_target
17867
45.9k
        if (p->error_indicator) {
17868
464
            p->level--;
17869
464
            return NULL;
17870
464
        }
17871
45.4k
        D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
17872
45.4k
        void *invalid_for_target_var;
17873
45.4k
        if (
17874
45.4k
            (invalid_for_target_var = invalid_for_target_rule(p))  // invalid_for_target
17875
45.4k
        )
17876
0
        {
17877
0
            D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
17878
0
            _res = invalid_for_target_var;
17879
0
            goto done;
17880
0
        }
17881
45.4k
        p->mark = _mark;
17882
45.4k
        D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
17883
45.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_target"));
17884
45.4k
    }
17885
94.4k
    _res = NULL;
17886
105k
  done:
17887
105k
    p->level--;
17888
105k
    return _res;
17889
94.4k
}
17890
17891
// listcomp: '[' named_expression for_if_clauses ']' | invalid_comprehension
17892
static expr_ty
17893
listcomp_rule(Parser *p)
17894
33.0k
{
17895
33.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17896
0
        _Pypegen_stack_overflow(p);
17897
0
    }
17898
33.0k
    if (p->error_indicator) {
17899
0
        p->level--;
17900
0
        return NULL;
17901
0
    }
17902
33.0k
    expr_ty _res = NULL;
17903
33.0k
    int _mark = p->mark;
17904
33.0k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17905
0
        p->error_indicator = 1;
17906
0
        p->level--;
17907
0
        return NULL;
17908
0
    }
17909
33.0k
    int _start_lineno = p->tokens[_mark]->lineno;
17910
33.0k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17911
33.0k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17912
33.0k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17913
33.0k
    { // '[' named_expression for_if_clauses ']'
17914
33.0k
        if (p->error_indicator) {
17915
0
            p->level--;
17916
0
            return NULL;
17917
0
        }
17918
33.0k
        D(fprintf(stderr, "%*c> listcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
17919
33.0k
        Token * _literal;
17920
33.0k
        Token * _literal_1;
17921
33.0k
        expr_ty a;
17922
33.0k
        asdl_comprehension_seq* b;
17923
33.0k
        if (
17924
33.0k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
17925
33.0k
            &&
17926
33.0k
            (a = named_expression_rule(p))  // named_expression
17927
33.0k
            &&
17928
33.0k
            (b = for_if_clauses_rule(p))  // for_if_clauses
17929
33.0k
            &&
17930
33.0k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
17931
33.0k
        )
17932
1.48k
        {
17933
1.48k
            D(fprintf(stderr, "%*c+ listcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
17934
1.48k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17935
1.48k
            if (_token == NULL) {
17936
0
                p->level--;
17937
0
                return NULL;
17938
0
            }
17939
1.48k
            int _end_lineno = _token->end_lineno;
17940
1.48k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17941
1.48k
            int _end_col_offset = _token->end_col_offset;
17942
1.48k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17943
1.48k
            _res = _PyAST_ListComp ( a , b , EXTRA );
17944
1.48k
            if (_res == NULL && PyErr_Occurred()) {
17945
0
                p->error_indicator = 1;
17946
0
                p->level--;
17947
0
                return NULL;
17948
0
            }
17949
1.48k
            goto done;
17950
1.48k
        }
17951
31.5k
        p->mark = _mark;
17952
31.5k
        D(fprintf(stderr, "%*c%s listcomp[%d-%d]: %s failed!\n", p->level, ' ',
17953
31.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
17954
31.5k
    }
17955
31.5k
    if (p->call_invalid_rules) { // invalid_comprehension
17956
10.9k
        if (p->error_indicator) {
17957
407
            p->level--;
17958
407
            return NULL;
17959
407
        }
17960
10.5k
        D(fprintf(stderr, "%*c> listcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
17961
10.5k
        void *invalid_comprehension_var;
17962
10.5k
        if (
17963
10.5k
            (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
17964
10.5k
        )
17965
0
        {
17966
0
            D(fprintf(stderr, "%*c+ listcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
17967
0
            _res = invalid_comprehension_var;
17968
0
            goto done;
17969
0
        }
17970
10.5k
        p->mark = _mark;
17971
10.5k
        D(fprintf(stderr, "%*c%s listcomp[%d-%d]: %s failed!\n", p->level, ' ',
17972
10.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
17973
10.5k
    }
17974
31.1k
    _res = NULL;
17975
32.6k
  done:
17976
32.6k
    p->level--;
17977
32.6k
    return _res;
17978
31.1k
}
17979
17980
// setcomp: '{' named_expression for_if_clauses '}' | invalid_comprehension
17981
static expr_ty
17982
setcomp_rule(Parser *p)
17983
10.0k
{
17984
10.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17985
0
        _Pypegen_stack_overflow(p);
17986
0
    }
17987
10.0k
    if (p->error_indicator) {
17988
0
        p->level--;
17989
0
        return NULL;
17990
0
    }
17991
10.0k
    expr_ty _res = NULL;
17992
10.0k
    int _mark = p->mark;
17993
10.0k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17994
0
        p->error_indicator = 1;
17995
0
        p->level--;
17996
0
        return NULL;
17997
0
    }
17998
10.0k
    int _start_lineno = p->tokens[_mark]->lineno;
17999
10.0k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18000
10.0k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18001
10.0k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18002
10.0k
    { // '{' named_expression for_if_clauses '}'
18003
10.0k
        if (p->error_indicator) {
18004
0
            p->level--;
18005
0
            return NULL;
18006
0
        }
18007
10.0k
        D(fprintf(stderr, "%*c> setcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
18008
10.0k
        Token * _literal;
18009
10.0k
        Token * _literal_1;
18010
10.0k
        expr_ty a;
18011
10.0k
        asdl_comprehension_seq* b;
18012
10.0k
        if (
18013
10.0k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
18014
10.0k
            &&
18015
10.0k
            (a = named_expression_rule(p))  // named_expression
18016
10.0k
            &&
18017
10.0k
            (b = for_if_clauses_rule(p))  // for_if_clauses
18018
10.0k
            &&
18019
10.0k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
18020
10.0k
        )
18021
224
        {
18022
224
            D(fprintf(stderr, "%*c+ setcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
18023
224
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18024
224
            if (_token == NULL) {
18025
0
                p->level--;
18026
0
                return NULL;
18027
0
            }
18028
224
            int _end_lineno = _token->end_lineno;
18029
224
            UNUSED(_end_lineno); // Only used by EXTRA macro
18030
224
            int _end_col_offset = _token->end_col_offset;
18031
224
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18032
224
            _res = _PyAST_SetComp ( a , b , EXTRA );
18033
224
            if (_res == NULL && PyErr_Occurred()) {
18034
0
                p->error_indicator = 1;
18035
0
                p->level--;
18036
0
                return NULL;
18037
0
            }
18038
224
            goto done;
18039
224
        }
18040
9.77k
        p->mark = _mark;
18041
9.77k
        D(fprintf(stderr, "%*c%s setcomp[%d-%d]: %s failed!\n", p->level, ' ',
18042
9.77k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
18043
9.77k
    }
18044
9.77k
    if (p->call_invalid_rules) { // invalid_comprehension
18045
3.99k
        if (p->error_indicator) {
18046
94
            p->level--;
18047
94
            return NULL;
18048
94
        }
18049
3.90k
        D(fprintf(stderr, "%*c> setcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
18050
3.90k
        void *invalid_comprehension_var;
18051
3.90k
        if (
18052
3.90k
            (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
18053
3.90k
        )
18054
0
        {
18055
0
            D(fprintf(stderr, "%*c+ setcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
18056
0
            _res = invalid_comprehension_var;
18057
0
            goto done;
18058
0
        }
18059
3.90k
        p->mark = _mark;
18060
3.90k
        D(fprintf(stderr, "%*c%s setcomp[%d-%d]: %s failed!\n", p->level, ' ',
18061
3.90k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
18062
3.90k
    }
18063
9.68k
    _res = NULL;
18064
9.90k
  done:
18065
9.90k
    p->level--;
18066
9.90k
    return _res;
18067
9.68k
}
18068
18069
// genexp:
18070
//     | '(' (assignment_expression | expression !':=') for_if_clauses ')'
18071
//     | invalid_comprehension
18072
static expr_ty
18073
genexp_rule(Parser *p)
18074
652k
{
18075
652k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18076
0
        _Pypegen_stack_overflow(p);
18077
0
    }
18078
652k
    if (p->error_indicator) {
18079
0
        p->level--;
18080
0
        return NULL;
18081
0
    }
18082
652k
    expr_ty _res = NULL;
18083
652k
    int _mark = p->mark;
18084
652k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18085
0
        p->error_indicator = 1;
18086
0
        p->level--;
18087
0
        return NULL;
18088
0
    }
18089
652k
    int _start_lineno = p->tokens[_mark]->lineno;
18090
652k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18091
652k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18092
652k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18093
652k
    { // '(' (assignment_expression | expression !':=') for_if_clauses ')'
18094
652k
        if (p->error_indicator) {
18095
0
            p->level--;
18096
0
            return NULL;
18097
0
        }
18098
652k
        D(fprintf(stderr, "%*c> genexp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
18099
652k
        Token * _literal;
18100
652k
        Token * _literal_1;
18101
652k
        void *a;
18102
652k
        asdl_comprehension_seq* b;
18103
652k
        if (
18104
652k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
18105
652k
            &&
18106
652k
            (a = _tmp_87_rule(p))  // assignment_expression | expression !':='
18107
652k
            &&
18108
652k
            (b = for_if_clauses_rule(p))  // for_if_clauses
18109
652k
            &&
18110
652k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
18111
652k
        )
18112
4.97k
        {
18113
4.97k
            D(fprintf(stderr, "%*c+ genexp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
18114
4.97k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18115
4.97k
            if (_token == NULL) {
18116
0
                p->level--;
18117
0
                return NULL;
18118
0
            }
18119
4.97k
            int _end_lineno = _token->end_lineno;
18120
4.97k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18121
4.97k
            int _end_col_offset = _token->end_col_offset;
18122
4.97k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18123
4.97k
            _res = _PyAST_GeneratorExp ( a , b , EXTRA );
18124
4.97k
            if (_res == NULL && PyErr_Occurred()) {
18125
0
                p->error_indicator = 1;
18126
0
                p->level--;
18127
0
                return NULL;
18128
0
            }
18129
4.97k
            goto done;
18130
4.97k
        }
18131
647k
        p->mark = _mark;
18132
647k
        D(fprintf(stderr, "%*c%s genexp[%d-%d]: %s failed!\n", p->level, ' ',
18133
647k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
18134
647k
    }
18135
647k
    if (p->call_invalid_rules) { // invalid_comprehension
18136
212k
        if (p->error_indicator) {
18137
1.97k
            p->level--;
18138
1.97k
            return NULL;
18139
1.97k
        }
18140
210k
        D(fprintf(stderr, "%*c> genexp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
18141
210k
        void *invalid_comprehension_var;
18142
210k
        if (
18143
210k
            (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
18144
210k
        )
18145
0
        {
18146
0
            D(fprintf(stderr, "%*c+ genexp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
18147
0
            _res = invalid_comprehension_var;
18148
0
            goto done;
18149
0
        }
18150
210k
        p->mark = _mark;
18151
210k
        D(fprintf(stderr, "%*c%s genexp[%d-%d]: %s failed!\n", p->level, ' ',
18152
210k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
18153
210k
    }
18154
645k
    _res = NULL;
18155
650k
  done:
18156
650k
    p->level--;
18157
650k
    return _res;
18158
645k
}
18159
18160
// dictcomp: '{' kvpair for_if_clauses '}' | invalid_dict_comprehension
18161
static expr_ty
18162
dictcomp_rule(Parser *p)
18163
11.4k
{
18164
11.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18165
0
        _Pypegen_stack_overflow(p);
18166
0
    }
18167
11.4k
    if (p->error_indicator) {
18168
0
        p->level--;
18169
0
        return NULL;
18170
0
    }
18171
11.4k
    expr_ty _res = NULL;
18172
11.4k
    int _mark = p->mark;
18173
11.4k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18174
0
        p->error_indicator = 1;
18175
0
        p->level--;
18176
0
        return NULL;
18177
0
    }
18178
11.4k
    int _start_lineno = p->tokens[_mark]->lineno;
18179
11.4k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18180
11.4k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18181
11.4k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18182
11.4k
    { // '{' kvpair for_if_clauses '}'
18183
11.4k
        if (p->error_indicator) {
18184
0
            p->level--;
18185
0
            return NULL;
18186
0
        }
18187
11.4k
        D(fprintf(stderr, "%*c> dictcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
18188
11.4k
        Token * _literal;
18189
11.4k
        Token * _literal_1;
18190
11.4k
        KeyValuePair* a;
18191
11.4k
        asdl_comprehension_seq* b;
18192
11.4k
        if (
18193
11.4k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
18194
11.4k
            &&
18195
11.4k
            (a = kvpair_rule(p))  // kvpair
18196
11.4k
            &&
18197
11.4k
            (b = for_if_clauses_rule(p))  // for_if_clauses
18198
11.4k
            &&
18199
11.4k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
18200
11.4k
        )
18201
1.23k
        {
18202
1.23k
            D(fprintf(stderr, "%*c+ dictcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
18203
1.23k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18204
1.23k
            if (_token == NULL) {
18205
0
                p->level--;
18206
0
                return NULL;
18207
0
            }
18208
1.23k
            int _end_lineno = _token->end_lineno;
18209
1.23k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18210
1.23k
            int _end_col_offset = _token->end_col_offset;
18211
1.23k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18212
1.23k
            _res = _PyAST_DictComp ( a -> key , a -> value , b , EXTRA );
18213
1.23k
            if (_res == NULL && PyErr_Occurred()) {
18214
0
                p->error_indicator = 1;
18215
0
                p->level--;
18216
0
                return NULL;
18217
0
            }
18218
1.23k
            goto done;
18219
1.23k
        }
18220
10.2k
        p->mark = _mark;
18221
10.2k
        D(fprintf(stderr, "%*c%s dictcomp[%d-%d]: %s failed!\n", p->level, ' ',
18222
10.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
18223
10.2k
    }
18224
10.2k
    if (p->call_invalid_rules) { // invalid_dict_comprehension
18225
4.26k
        if (p->error_indicator) {
18226
232
            p->level--;
18227
232
            return NULL;
18228
232
        }
18229
4.02k
        D(fprintf(stderr, "%*c> dictcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_dict_comprehension"));
18230
4.02k
        void *invalid_dict_comprehension_var;
18231
4.02k
        if (
18232
4.02k
            (invalid_dict_comprehension_var = invalid_dict_comprehension_rule(p))  // invalid_dict_comprehension
18233
4.02k
        )
18234
0
        {
18235
0
            D(fprintf(stderr, "%*c+ dictcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_dict_comprehension"));
18236
0
            _res = invalid_dict_comprehension_var;
18237
0
            goto done;
18238
0
        }
18239
4.02k
        p->mark = _mark;
18240
4.02k
        D(fprintf(stderr, "%*c%s dictcomp[%d-%d]: %s failed!\n", p->level, ' ',
18241
4.02k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_dict_comprehension"));
18242
4.02k
    }
18243
10.0k
    _res = NULL;
18244
11.2k
  done:
18245
11.2k
    p->level--;
18246
11.2k
    return _res;
18247
10.0k
}
18248
18249
// arguments: args ','? &')' | invalid_arguments
18250
static expr_ty
18251
arguments_rule(Parser *p)
18252
61.5k
{
18253
61.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18254
0
        _Pypegen_stack_overflow(p);
18255
0
    }
18256
61.5k
    if (p->error_indicator) {
18257
0
        p->level--;
18258
0
        return NULL;
18259
0
    }
18260
61.5k
    expr_ty _res = NULL;
18261
61.5k
    if (_PyPegen_is_memoized(p, arguments_type, &_res)) {
18262
15.8k
        p->level--;
18263
15.8k
        return _res;
18264
15.8k
    }
18265
45.6k
    int _mark = p->mark;
18266
45.6k
    { // args ','? &')'
18267
45.6k
        if (p->error_indicator) {
18268
0
            p->level--;
18269
0
            return NULL;
18270
0
        }
18271
45.6k
        D(fprintf(stderr, "%*c> arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ','? &')'"));
18272
45.6k
        void *_opt_var;
18273
45.6k
        UNUSED(_opt_var); // Silence compiler warnings
18274
45.6k
        expr_ty a;
18275
45.6k
        if (
18276
45.6k
            (a = args_rule(p))  // args
18277
45.6k
            &&
18278
45.6k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
18279
45.6k
            &&
18280
45.6k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
18281
45.6k
        )
18282
19.9k
        {
18283
19.9k
            D(fprintf(stderr, "%*c+ arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ','? &')'"));
18284
19.9k
            _res = a;
18285
19.9k
            if (_res == NULL && PyErr_Occurred()) {
18286
0
                p->error_indicator = 1;
18287
0
                p->level--;
18288
0
                return NULL;
18289
0
            }
18290
19.9k
            goto done;
18291
19.9k
        }
18292
25.7k
        p->mark = _mark;
18293
25.7k
        D(fprintf(stderr, "%*c%s arguments[%d-%d]: %s failed!\n", p->level, ' ',
18294
25.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ','? &')'"));
18295
25.7k
    }
18296
25.7k
    if (p->call_invalid_rules) { // invalid_arguments
18297
8.65k
        if (p->error_indicator) {
18298
930
            p->level--;
18299
930
            return NULL;
18300
930
        }
18301
7.72k
        D(fprintf(stderr, "%*c> arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_arguments"));
18302
7.72k
        void *invalid_arguments_var;
18303
7.72k
        if (
18304
7.72k
            (invalid_arguments_var = invalid_arguments_rule(p))  // invalid_arguments
18305
7.72k
        )
18306
0
        {
18307
0
            D(fprintf(stderr, "%*c+ arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_arguments"));
18308
0
            _res = invalid_arguments_var;
18309
0
            goto done;
18310
0
        }
18311
7.72k
        p->mark = _mark;
18312
7.72k
        D(fprintf(stderr, "%*c%s arguments[%d-%d]: %s failed!\n", p->level, ' ',
18313
7.72k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_arguments"));
18314
7.72k
    }
18315
24.8k
    _res = NULL;
18316
44.7k
  done:
18317
44.7k
    _PyPegen_insert_memo(p, _mark, arguments_type, _res);
18318
44.7k
    p->level--;
18319
44.7k
    return _res;
18320
24.8k
}
18321
18322
// args:
18323
//     | ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]
18324
//     | kwargs
18325
static expr_ty
18326
args_rule(Parser *p)
18327
73.6k
{
18328
73.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18329
0
        _Pypegen_stack_overflow(p);
18330
0
    }
18331
73.6k
    if (p->error_indicator) {
18332
0
        p->level--;
18333
0
        return NULL;
18334
0
    }
18335
73.6k
    expr_ty _res = NULL;
18336
73.6k
    int _mark = p->mark;
18337
73.6k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18338
1
        p->error_indicator = 1;
18339
1
        p->level--;
18340
1
        return NULL;
18341
1
    }
18342
73.6k
    int _start_lineno = p->tokens[_mark]->lineno;
18343
73.6k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18344
73.6k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18345
73.6k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18346
73.6k
    { // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]
18347
73.6k
        if (p->error_indicator) {
18348
0
            p->level--;
18349
0
            return NULL;
18350
0
        }
18351
73.6k
        D(fprintf(stderr, "%*c> args[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
18352
73.6k
        asdl_expr_seq* a;
18353
73.6k
        void *b;
18354
73.6k
        if (
18355
73.6k
            (a = (asdl_expr_seq*)_gather_89_rule(p))  // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+
18356
73.6k
            &&
18357
73.6k
            (b = _tmp_90_rule(p), !p->error_indicator)  // [',' kwargs]
18358
73.6k
        )
18359
34.8k
        {
18360
34.8k
            D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
18361
34.8k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18362
34.8k
            if (_token == NULL) {
18363
0
                p->level--;
18364
0
                return NULL;
18365
0
            }
18366
34.8k
            int _end_lineno = _token->end_lineno;
18367
34.8k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18368
34.8k
            int _end_col_offset = _token->end_col_offset;
18369
34.8k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18370
34.8k
            _res = _PyPegen_collect_call_seqs ( p , a , b , EXTRA );
18371
34.8k
            if (_res == NULL && PyErr_Occurred()) {
18372
0
                p->error_indicator = 1;
18373
0
                p->level--;
18374
0
                return NULL;
18375
0
            }
18376
34.8k
            goto done;
18377
34.8k
        }
18378
38.7k
        p->mark = _mark;
18379
38.7k
        D(fprintf(stderr, "%*c%s args[%d-%d]: %s failed!\n", p->level, ' ',
18380
38.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
18381
38.7k
    }
18382
0
    { // kwargs
18383
38.7k
        if (p->error_indicator) {
18384
875
            p->level--;
18385
875
            return NULL;
18386
875
        }
18387
37.8k
        D(fprintf(stderr, "%*c> args[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwargs"));
18388
37.8k
        asdl_seq* a;
18389
37.8k
        if (
18390
37.8k
            (a = kwargs_rule(p))  // kwargs
18391
37.8k
        )
18392
6.70k
        {
18393
6.70k
            D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwargs"));
18394
6.70k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18395
6.70k
            if (_token == NULL) {
18396
0
                p->level--;
18397
0
                return NULL;
18398
0
            }
18399
6.70k
            int _end_lineno = _token->end_lineno;
18400
6.70k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18401
6.70k
            int _end_col_offset = _token->end_col_offset;
18402
6.70k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18403
6.70k
            _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 );
18404
6.70k
            if (_res == NULL && PyErr_Occurred()) {
18405
0
                p->error_indicator = 1;
18406
0
                p->level--;
18407
0
                return NULL;
18408
0
            }
18409
6.70k
            goto done;
18410
6.70k
        }
18411
31.1k
        p->mark = _mark;
18412
31.1k
        D(fprintf(stderr, "%*c%s args[%d-%d]: %s failed!\n", p->level, ' ',
18413
31.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwargs"));
18414
31.1k
    }
18415
0
    _res = NULL;
18416
72.7k
  done:
18417
72.7k
    p->level--;
18418
72.7k
    return _res;
18419
31.1k
}
18420
18421
// kwargs:
18422
//     | ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
18423
//     | ','.kwarg_or_starred+
18424
//     | ','.kwarg_or_double_starred+
18425
static asdl_seq*
18426
kwargs_rule(Parser *p)
18427
50.2k
{
18428
50.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18429
0
        _Pypegen_stack_overflow(p);
18430
0
    }
18431
50.2k
    if (p->error_indicator) {
18432
0
        p->level--;
18433
0
        return NULL;
18434
0
    }
18435
50.2k
    asdl_seq* _res = NULL;
18436
50.2k
    int _mark = p->mark;
18437
50.2k
    { // ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
18438
50.2k
        if (p->error_indicator) {
18439
0
            p->level--;
18440
0
            return NULL;
18441
0
        }
18442
50.2k
        D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
18443
50.2k
        Token * _literal;
18444
50.2k
        asdl_seq * a;
18445
50.2k
        asdl_seq * b;
18446
50.2k
        if (
18447
50.2k
            (a = _gather_92_rule(p))  // ','.kwarg_or_starred+
18448
50.2k
            &&
18449
50.2k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
18450
50.2k
            &&
18451
50.2k
            (b = _gather_94_rule(p))  // ','.kwarg_or_double_starred+
18452
50.2k
        )
18453
349
        {
18454
349
            D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
18455
349
            _res = _PyPegen_join_sequences ( p , a , b );
18456
349
            if (_res == NULL && PyErr_Occurred()) {
18457
0
                p->error_indicator = 1;
18458
0
                p->level--;
18459
0
                return NULL;
18460
0
            }
18461
349
            goto done;
18462
349
        }
18463
49.8k
        p->mark = _mark;
18464
49.8k
        D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
18465
49.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
18466
49.8k
    }
18467
0
    { // ','.kwarg_or_starred+
18468
49.8k
        if (p->error_indicator) {
18469
781
            p->level--;
18470
781
            return NULL;
18471
781
        }
18472
49.0k
        D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+"));
18473
49.0k
        asdl_seq * _gather_92_var;
18474
49.0k
        if (
18475
49.0k
            (_gather_92_var = _gather_92_rule(p))  // ','.kwarg_or_starred+
18476
49.0k
        )
18477
8.14k
        {
18478
8.14k
            D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+"));
18479
8.14k
            _res = _gather_92_var;
18480
8.14k
            goto done;
18481
8.14k
        }
18482
40.9k
        p->mark = _mark;
18483
40.9k
        D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
18484
40.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_starred+"));
18485
40.9k
    }
18486
0
    { // ','.kwarg_or_double_starred+
18487
40.9k
        if (p->error_indicator) {
18488
0
            p->level--;
18489
0
            return NULL;
18490
0
        }
18491
40.9k
        D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_double_starred+"));
18492
40.9k
        asdl_seq * _gather_94_var;
18493
40.9k
        if (
18494
40.9k
            (_gather_94_var = _gather_94_rule(p))  // ','.kwarg_or_double_starred+
18495
40.9k
        )
18496
3.58k
        {
18497
3.58k
            D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_double_starred+"));
18498
3.58k
            _res = _gather_94_var;
18499
3.58k
            goto done;
18500
3.58k
        }
18501
37.3k
        p->mark = _mark;
18502
37.3k
        D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
18503
37.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_double_starred+"));
18504
37.3k
    }
18505
0
    _res = NULL;
18506
49.4k
  done:
18507
49.4k
    p->level--;
18508
49.4k
    return _res;
18509
37.3k
}
18510
18511
// starred_expression:
18512
//     | invalid_starred_expression_unpacking
18513
//     | '*' expression
18514
//     | invalid_starred_expression
18515
static expr_ty
18516
starred_expression_rule(Parser *p)
18517
253k
{
18518
253k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18519
0
        _Pypegen_stack_overflow(p);
18520
0
    }
18521
253k
    if (p->error_indicator) {
18522
0
        p->level--;
18523
0
        return NULL;
18524
0
    }
18525
253k
    expr_ty _res = NULL;
18526
253k
    int _mark = p->mark;
18527
253k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18528
200
        p->error_indicator = 1;
18529
200
        p->level--;
18530
200
        return NULL;
18531
200
    }
18532
253k
    int _start_lineno = p->tokens[_mark]->lineno;
18533
253k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18534
253k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18535
253k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18536
253k
    if (p->call_invalid_rules) { // invalid_starred_expression_unpacking
18537
175k
        if (p->error_indicator) {
18538
0
            p->level--;
18539
0
            return NULL;
18540
0
        }
18541
175k
        D(fprintf(stderr, "%*c> starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_starred_expression_unpacking"));
18542
175k
        void *invalid_starred_expression_unpacking_var;
18543
175k
        if (
18544
175k
            (invalid_starred_expression_unpacking_var = invalid_starred_expression_unpacking_rule(p))  // invalid_starred_expression_unpacking
18545
175k
        )
18546
0
        {
18547
0
            D(fprintf(stderr, "%*c+ starred_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_starred_expression_unpacking"));
18548
0
            _res = invalid_starred_expression_unpacking_var;
18549
0
            goto done;
18550
0
        }
18551
175k
        p->mark = _mark;
18552
175k
        D(fprintf(stderr, "%*c%s starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
18553
175k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_starred_expression_unpacking"));
18554
175k
    }
18555
253k
    { // '*' expression
18556
253k
        if (p->error_indicator) {
18557
1.34k
            p->level--;
18558
1.34k
            return NULL;
18559
1.34k
        }
18560
252k
        D(fprintf(stderr, "%*c> starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression"));
18561
252k
        Token * _literal;
18562
252k
        expr_ty a;
18563
252k
        if (
18564
252k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
18565
252k
            &&
18566
252k
            (a = expression_rule(p))  // expression
18567
252k
        )
18568
12.7k
        {
18569
12.7k
            D(fprintf(stderr, "%*c+ starred_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression"));
18570
12.7k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18571
12.7k
            if (_token == NULL) {
18572
0
                p->level--;
18573
0
                return NULL;
18574
0
            }
18575
12.7k
            int _end_lineno = _token->end_lineno;
18576
12.7k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18577
12.7k
            int _end_col_offset = _token->end_col_offset;
18578
12.7k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18579
12.7k
            _res = _PyAST_Starred ( a , Load , EXTRA );
18580
12.7k
            if (_res == NULL && PyErr_Occurred()) {
18581
0
                p->error_indicator = 1;
18582
0
                p->level--;
18583
0
                return NULL;
18584
0
            }
18585
12.7k
            goto done;
18586
12.7k
        }
18587
239k
        p->mark = _mark;
18588
239k
        D(fprintf(stderr, "%*c%s starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
18589
239k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression"));
18590
239k
    }
18591
239k
    if (p->call_invalid_rules) { // invalid_starred_expression
18592
163k
        if (p->error_indicator) {
18593
0
            p->level--;
18594
0
            return NULL;
18595
0
        }
18596
163k
        D(fprintf(stderr, "%*c> starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_starred_expression"));
18597
163k
        void *invalid_starred_expression_var;
18598
163k
        if (
18599
163k
            (invalid_starred_expression_var = invalid_starred_expression_rule(p))  // invalid_starred_expression
18600
163k
        )
18601
0
        {
18602
0
            D(fprintf(stderr, "%*c+ starred_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_starred_expression"));
18603
0
            _res = invalid_starred_expression_var;
18604
0
            goto done;
18605
0
        }
18606
163k
        p->mark = _mark;
18607
163k
        D(fprintf(stderr, "%*c%s starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
18608
163k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_starred_expression"));
18609
163k
    }
18610
239k
    _res = NULL;
18611
252k
  done:
18612
252k
    p->level--;
18613
252k
    return _res;
18614
239k
}
18615
18616
// kwarg_or_starred: invalid_kwarg | NAME '=' expression | starred_expression
18617
static KeywordOrStarred*
18618
kwarg_or_starred_rule(Parser *p)
18619
114k
{
18620
114k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18621
0
        _Pypegen_stack_overflow(p);
18622
0
    }
18623
114k
    if (p->error_indicator) {
18624
0
        p->level--;
18625
0
        return NULL;
18626
0
    }
18627
114k
    KeywordOrStarred* _res = NULL;
18628
114k
    int _mark = p->mark;
18629
114k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18630
11
        p->error_indicator = 1;
18631
11
        p->level--;
18632
11
        return NULL;
18633
11
    }
18634
114k
    int _start_lineno = p->tokens[_mark]->lineno;
18635
114k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18636
114k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18637
114k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18638
114k
    if (p->call_invalid_rules) { // invalid_kwarg
18639
79.7k
        if (p->error_indicator) {
18640
0
            p->level--;
18641
0
            return NULL;
18642
0
        }
18643
79.7k
        D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
18644
79.7k
        void *invalid_kwarg_var;
18645
79.7k
        if (
18646
79.7k
            (invalid_kwarg_var = invalid_kwarg_rule(p))  // invalid_kwarg
18647
79.7k
        )
18648
0
        {
18649
0
            D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
18650
0
            _res = invalid_kwarg_var;
18651
0
            goto done;
18652
0
        }
18653
79.7k
        p->mark = _mark;
18654
79.7k
        D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
18655
79.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwarg"));
18656
79.7k
    }
18657
114k
    { // NAME '=' expression
18658
114k
        if (p->error_indicator) {
18659
562
            p->level--;
18660
562
            return NULL;
18661
562
        }
18662
113k
        D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
18663
113k
        Token * _literal;
18664
113k
        expr_ty a;
18665
113k
        expr_ty b;
18666
113k
        if (
18667
113k
            (a = _PyPegen_name_token(p))  // NAME
18668
113k
            &&
18669
113k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
18670
113k
            &&
18671
113k
            (b = expression_rule(p))  // expression
18672
113k
        )
18673
21.9k
        {
18674
21.9k
            D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
18675
21.9k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18676
21.9k
            if (_token == NULL) {
18677
0
                p->level--;
18678
0
                return NULL;
18679
0
            }
18680
21.9k
            int _end_lineno = _token->end_lineno;
18681
21.9k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18682
21.9k
            int _end_col_offset = _token->end_col_offset;
18683
21.9k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18684
21.9k
            _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
18685
21.9k
            if (_res == NULL && PyErr_Occurred()) {
18686
0
                p->error_indicator = 1;
18687
0
                p->level--;
18688
0
                return NULL;
18689
0
            }
18690
21.9k
            goto done;
18691
21.9k
        }
18692
91.9k
        p->mark = _mark;
18693
91.9k
        D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
18694
91.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression"));
18695
91.9k
    }
18696
0
    { // starred_expression
18697
91.9k
        if (p->error_indicator) {
18698
203
            p->level--;
18699
203
            return NULL;
18700
203
        }
18701
91.7k
        D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
18702
91.7k
        expr_ty a;
18703
91.7k
        if (
18704
91.7k
            (a = starred_expression_rule(p))  // starred_expression
18705
91.7k
        )
18706
4.11k
        {
18707
4.11k
            D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
18708
4.11k
            _res = _PyPegen_keyword_or_starred ( p , a , 0 );
18709
4.11k
            if (_res == NULL && PyErr_Occurred()) {
18710
0
                p->error_indicator = 1;
18711
0
                p->level--;
18712
0
                return NULL;
18713
0
            }
18714
4.11k
            goto done;
18715
4.11k
        }
18716
87.6k
        p->mark = _mark;
18717
87.6k
        D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
18718
87.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
18719
87.6k
    }
18720
0
    _res = NULL;
18721
113k
  done:
18722
113k
    p->level--;
18723
113k
    return _res;
18724
87.6k
}
18725
18726
// kwarg_or_double_starred: invalid_kwarg | NAME '=' expression | '**' expression
18727
static KeywordOrStarred*
18728
kwarg_or_double_starred_rule(Parser *p)
18729
52.1k
{
18730
52.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18731
0
        _Pypegen_stack_overflow(p);
18732
0
    }
18733
52.1k
    if (p->error_indicator) {
18734
0
        p->level--;
18735
0
        return NULL;
18736
0
    }
18737
52.1k
    KeywordOrStarred* _res = NULL;
18738
52.1k
    int _mark = p->mark;
18739
52.1k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18740
7
        p->error_indicator = 1;
18741
7
        p->level--;
18742
7
        return NULL;
18743
7
    }
18744
52.1k
    int _start_lineno = p->tokens[_mark]->lineno;
18745
52.1k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18746
52.1k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18747
52.1k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18748
52.1k
    if (p->call_invalid_rules) { // invalid_kwarg
18749
35.7k
        if (p->error_indicator) {
18750
0
            p->level--;
18751
0
            return NULL;
18752
0
        }
18753
35.7k
        D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
18754
35.7k
        void *invalid_kwarg_var;
18755
35.7k
        if (
18756
35.7k
            (invalid_kwarg_var = invalid_kwarg_rule(p))  // invalid_kwarg
18757
35.7k
        )
18758
0
        {
18759
0
            D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
18760
0
            _res = invalid_kwarg_var;
18761
0
            goto done;
18762
0
        }
18763
35.7k
        p->mark = _mark;
18764
35.7k
        D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
18765
35.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwarg"));
18766
35.7k
    }
18767
52.1k
    { // NAME '=' expression
18768
52.1k
        if (p->error_indicator) {
18769
281
            p->level--;
18770
281
            return NULL;
18771
281
        }
18772
51.8k
        D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
18773
51.8k
        Token * _literal;
18774
51.8k
        expr_ty a;
18775
51.8k
        expr_ty b;
18776
51.8k
        if (
18777
51.8k
            (a = _PyPegen_name_token(p))  // NAME
18778
51.8k
            &&
18779
51.8k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
18780
51.8k
            &&
18781
51.8k
            (b = expression_rule(p))  // expression
18782
51.8k
        )
18783
2.36k
        {
18784
2.36k
            D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
18785
2.36k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18786
2.36k
            if (_token == NULL) {
18787
0
                p->level--;
18788
0
                return NULL;
18789
0
            }
18790
2.36k
            int _end_lineno = _token->end_lineno;
18791
2.36k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18792
2.36k
            int _end_col_offset = _token->end_col_offset;
18793
2.36k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18794
2.36k
            _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
18795
2.36k
            if (_res == NULL && PyErr_Occurred()) {
18796
0
                p->error_indicator = 1;
18797
0
                p->level--;
18798
0
                return NULL;
18799
0
            }
18800
2.36k
            goto done;
18801
2.36k
        }
18802
49.5k
        p->mark = _mark;
18803
49.5k
        D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
18804
49.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression"));
18805
49.5k
    }
18806
0
    { // '**' expression
18807
49.5k
        if (p->error_indicator) {
18808
66
            p->level--;
18809
66
            return NULL;
18810
66
        }
18811
49.4k
        D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' expression"));
18812
49.4k
        Token * _literal;
18813
49.4k
        expr_ty a;
18814
49.4k
        if (
18815
49.4k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
18816
49.4k
            &&
18817
49.4k
            (a = expression_rule(p))  // expression
18818
49.4k
        )
18819
7.62k
        {
18820
7.62k
            D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' expression"));
18821
7.62k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18822
7.62k
            if (_token == NULL) {
18823
0
                p->level--;
18824
0
                return NULL;
18825
0
            }
18826
7.62k
            int _end_lineno = _token->end_lineno;
18827
7.62k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18828
7.62k
            int _end_col_offset = _token->end_col_offset;
18829
7.62k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18830
7.62k
            _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( NULL , a , EXTRA ) ) , 1 );
18831
7.62k
            if (_res == NULL && PyErr_Occurred()) {
18832
0
                p->error_indicator = 1;
18833
0
                p->level--;
18834
0
                return NULL;
18835
0
            }
18836
7.62k
            goto done;
18837
7.62k
        }
18838
41.8k
        p->mark = _mark;
18839
41.8k
        D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
18840
41.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression"));
18841
41.8k
    }
18842
0
    _res = NULL;
18843
51.8k
  done:
18844
51.8k
    p->level--;
18845
51.8k
    return _res;
18846
41.8k
}
18847
18848
// star_targets: star_target !',' | star_target ((',' star_target))* ','?
18849
static expr_ty
18850
star_targets_rule(Parser *p)
18851
297k
{
18852
297k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18853
0
        _Pypegen_stack_overflow(p);
18854
0
    }
18855
297k
    if (p->error_indicator) {
18856
0
        p->level--;
18857
0
        return NULL;
18858
0
    }
18859
297k
    expr_ty _res = NULL;
18860
297k
    int _mark = p->mark;
18861
297k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18862
42
        p->error_indicator = 1;
18863
42
        p->level--;
18864
42
        return NULL;
18865
42
    }
18866
297k
    int _start_lineno = p->tokens[_mark]->lineno;
18867
297k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18868
297k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18869
297k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18870
297k
    { // star_target !','
18871
297k
        if (p->error_indicator) {
18872
0
            p->level--;
18873
0
            return NULL;
18874
0
        }
18875
297k
        D(fprintf(stderr, "%*c> star_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target !','"));
18876
297k
        expr_ty a;
18877
297k
        if (
18878
297k
            (a = star_target_rule(p))  // star_target
18879
297k
            &&
18880
297k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
18881
297k
        )
18882
143k
        {
18883
143k
            D(fprintf(stderr, "%*c+ star_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target !','"));
18884
143k
            _res = a;
18885
143k
            if (_res == NULL && PyErr_Occurred()) {
18886
0
                p->error_indicator = 1;
18887
0
                p->level--;
18888
0
                return NULL;
18889
0
            }
18890
143k
            goto done;
18891
143k
        }
18892
154k
        p->mark = _mark;
18893
154k
        D(fprintf(stderr, "%*c%s star_targets[%d-%d]: %s failed!\n", p->level, ' ',
18894
154k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target !','"));
18895
154k
    }
18896
0
    { // star_target ((',' star_target))* ','?
18897
154k
        if (p->error_indicator) {
18898
1.37k
            p->level--;
18899
1.37k
            return NULL;
18900
1.37k
        }
18901
152k
        D(fprintf(stderr, "%*c> star_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))* ','?"));
18902
152k
        void *_opt_var;
18903
152k
        UNUSED(_opt_var); // Silence compiler warnings
18904
152k
        expr_ty a;
18905
152k
        asdl_seq * b;
18906
152k
        if (
18907
152k
            (a = star_target_rule(p))  // star_target
18908
152k
            &&
18909
152k
            (b = _loop0_95_rule(p))  // ((',' star_target))*
18910
152k
            &&
18911
152k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
18912
152k
        )
18913
14.7k
        {
18914
14.7k
            D(fprintf(stderr, "%*c+ star_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))* ','?"));
18915
14.7k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18916
14.7k
            if (_token == NULL) {
18917
0
                p->level--;
18918
0
                return NULL;
18919
0
            }
18920
14.7k
            int _end_lineno = _token->end_lineno;
18921
14.7k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18922
14.7k
            int _end_col_offset = _token->end_col_offset;
18923
14.7k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18924
14.7k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Store , EXTRA );
18925
14.7k
            if (_res == NULL && PyErr_Occurred()) {
18926
0
                p->error_indicator = 1;
18927
0
                p->level--;
18928
0
                return NULL;
18929
0
            }
18930
14.7k
            goto done;
18931
14.7k
        }
18932
138k
        p->mark = _mark;
18933
138k
        D(fprintf(stderr, "%*c%s star_targets[%d-%d]: %s failed!\n", p->level, ' ',
18934
138k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ((',' star_target))* ','?"));
18935
138k
    }
18936
0
    _res = NULL;
18937
296k
  done:
18938
296k
    p->level--;
18939
296k
    return _res;
18940
138k
}
18941
18942
// star_targets_list_seq: ','.star_target+ ','?
18943
static asdl_expr_seq*
18944
star_targets_list_seq_rule(Parser *p)
18945
11.1k
{
18946
11.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18947
0
        _Pypegen_stack_overflow(p);
18948
0
    }
18949
11.1k
    if (p->error_indicator) {
18950
0
        p->level--;
18951
0
        return NULL;
18952
0
    }
18953
11.1k
    asdl_expr_seq* _res = NULL;
18954
11.1k
    int _mark = p->mark;
18955
11.1k
    { // ','.star_target+ ','?
18956
11.1k
        if (p->error_indicator) {
18957
0
            p->level--;
18958
0
            return NULL;
18959
0
        }
18960
11.1k
        D(fprintf(stderr, "%*c> star_targets_list_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.star_target+ ','?"));
18961
11.1k
        void *_opt_var;
18962
11.1k
        UNUSED(_opt_var); // Silence compiler warnings
18963
11.1k
        asdl_expr_seq* a;
18964
11.1k
        if (
18965
11.1k
            (a = (asdl_expr_seq*)_gather_97_rule(p))  // ','.star_target+
18966
11.1k
            &&
18967
11.1k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
18968
11.1k
        )
18969
2.74k
        {
18970
2.74k
            D(fprintf(stderr, "%*c+ star_targets_list_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_target+ ','?"));
18971
2.74k
            _res = a;
18972
2.74k
            if (_res == NULL && PyErr_Occurred()) {
18973
0
                p->error_indicator = 1;
18974
0
                p->level--;
18975
0
                return NULL;
18976
0
            }
18977
2.74k
            goto done;
18978
2.74k
        }
18979
8.43k
        p->mark = _mark;
18980
8.43k
        D(fprintf(stderr, "%*c%s star_targets_list_seq[%d-%d]: %s failed!\n", p->level, ' ',
18981
8.43k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.star_target+ ','?"));
18982
8.43k
    }
18983
0
    _res = NULL;
18984
11.1k
  done:
18985
11.1k
    p->level--;
18986
11.1k
    return _res;
18987
8.43k
}
18988
18989
// star_targets_tuple_seq: star_target ((',' star_target))+ ','? | star_target ','
18990
static asdl_expr_seq*
18991
star_targets_tuple_seq_rule(Parser *p)
18992
10.8k
{
18993
10.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18994
0
        _Pypegen_stack_overflow(p);
18995
0
    }
18996
10.8k
    if (p->error_indicator) {
18997
0
        p->level--;
18998
0
        return NULL;
18999
0
    }
19000
10.8k
    asdl_expr_seq* _res = NULL;
19001
10.8k
    int _mark = p->mark;
19002
10.8k
    { // star_target ((',' star_target))+ ','?
19003
10.8k
        if (p->error_indicator) {
19004
0
            p->level--;
19005
0
            return NULL;
19006
0
        }
19007
10.8k
        D(fprintf(stderr, "%*c> star_targets_tuple_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))+ ','?"));
19008
10.8k
        void *_opt_var;
19009
10.8k
        UNUSED(_opt_var); // Silence compiler warnings
19010
10.8k
        expr_ty a;
19011
10.8k
        asdl_seq * b;
19012
10.8k
        if (
19013
10.8k
            (a = star_target_rule(p))  // star_target
19014
10.8k
            &&
19015
10.8k
            (b = _loop1_98_rule(p))  // ((',' star_target))+
19016
10.8k
            &&
19017
10.8k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
19018
10.8k
        )
19019
546
        {
19020
546
            D(fprintf(stderr, "%*c+ star_targets_tuple_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))+ ','?"));
19021
546
            _res = ( asdl_expr_seq* ) _PyPegen_seq_insert_in_front ( p , a , b );
19022
546
            if (_res == NULL && PyErr_Occurred()) {
19023
0
                p->error_indicator = 1;
19024
0
                p->level--;
19025
0
                return NULL;
19026
0
            }
19027
546
            goto done;
19028
546
        }
19029
10.3k
        p->mark = _mark;
19030
10.3k
        D(fprintf(stderr, "%*c%s star_targets_tuple_seq[%d-%d]: %s failed!\n", p->level, ' ',
19031
10.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ((',' star_target))+ ','?"));
19032
10.3k
    }
19033
0
    { // star_target ','
19034
10.3k
        if (p->error_indicator) {
19035
0
            p->level--;
19036
0
            return NULL;
19037
0
        }
19038
10.3k
        D(fprintf(stderr, "%*c> star_targets_tuple_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ','"));
19039
10.3k
        Token * _literal;
19040
10.3k
        expr_ty a;
19041
10.3k
        if (
19042
10.3k
            (a = star_target_rule(p))  // star_target
19043
10.3k
            &&
19044
10.3k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
19045
10.3k
        )
19046
1.22k
        {
19047
1.22k
            D(fprintf(stderr, "%*c+ star_targets_tuple_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ','"));
19048
1.22k
            _res = ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , a );
19049
1.22k
            if (_res == NULL && PyErr_Occurred()) {
19050
0
                p->error_indicator = 1;
19051
0
                p->level--;
19052
0
                return NULL;
19053
0
            }
19054
1.22k
            goto done;
19055
1.22k
        }
19056
9.07k
        p->mark = _mark;
19057
9.07k
        D(fprintf(stderr, "%*c%s star_targets_tuple_seq[%d-%d]: %s failed!\n", p->level, ' ',
19058
9.07k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ','"));
19059
9.07k
    }
19060
0
    _res = NULL;
19061
10.8k
  done:
19062
10.8k
    p->level--;
19063
10.8k
    return _res;
19064
9.07k
}
19065
19066
// star_target: '*' (!'*' star_target) | target_with_star_atom
19067
static expr_ty
19068
star_target_rule(Parser *p)
19069
514k
{
19070
514k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19071
0
        _Pypegen_stack_overflow(p);
19072
0
    }
19073
514k
    if (p->error_indicator) {
19074
14
        p->level--;
19075
14
        return NULL;
19076
14
    }
19077
514k
    expr_ty _res = NULL;
19078
514k
    if (_PyPegen_is_memoized(p, star_target_type, &_res)) {
19079
256k
        p->level--;
19080
256k
        return _res;
19081
256k
    }
19082
257k
    int _mark = p->mark;
19083
257k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
19084
0
        p->error_indicator = 1;
19085
0
        p->level--;
19086
0
        return NULL;
19087
0
    }
19088
257k
    int _start_lineno = p->tokens[_mark]->lineno;
19089
257k
    UNUSED(_start_lineno); // Only used by EXTRA macro
19090
257k
    int _start_col_offset = p->tokens[_mark]->col_offset;
19091
257k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
19092
257k
    { // '*' (!'*' star_target)
19093
257k
        if (p->error_indicator) {
19094
0
            p->level--;
19095
0
            return NULL;
19096
0
        }
19097
257k
        D(fprintf(stderr, "%*c> star_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (!'*' star_target)"));
19098
257k
        Token * _literal;
19099
257k
        void *a;
19100
257k
        if (
19101
257k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
19102
257k
            &&
19103
257k
            (a = _tmp_99_rule(p))  // !'*' star_target
19104
257k
        )
19105
1.95k
        {
19106
1.95k
            D(fprintf(stderr, "%*c+ star_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (!'*' star_target)"));
19107
1.95k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19108
1.95k
            if (_token == NULL) {
19109
0
                p->level--;
19110
0
                return NULL;
19111
0
            }
19112
1.95k
            int _end_lineno = _token->end_lineno;
19113
1.95k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19114
1.95k
            int _end_col_offset = _token->end_col_offset;
19115
1.95k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19116
1.95k
            _res = _PyAST_Starred ( CHECK ( expr_ty , _PyPegen_set_expr_context ( p , a , Store ) ) , Store , EXTRA );
19117
1.95k
            if (_res == NULL && PyErr_Occurred()) {
19118
0
                p->error_indicator = 1;
19119
0
                p->level--;
19120
0
                return NULL;
19121
0
            }
19122
1.95k
            goto done;
19123
1.95k
        }
19124
255k
        p->mark = _mark;
19125
255k
        D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
19126
255k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (!'*' star_target)"));
19127
255k
    }
19128
0
    { // target_with_star_atom
19129
255k
        if (p->error_indicator) {
19130
479
            p->level--;
19131
479
            return NULL;
19132
479
        }
19133
254k
        D(fprintf(stderr, "%*c> star_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "target_with_star_atom"));
19134
254k
        expr_ty target_with_star_atom_var;
19135
254k
        if (
19136
254k
            (target_with_star_atom_var = target_with_star_atom_rule(p))  // target_with_star_atom
19137
254k
        )
19138
125k
        {
19139
125k
            D(fprintf(stderr, "%*c+ star_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "target_with_star_atom"));
19140
125k
            _res = target_with_star_atom_var;
19141
125k
            goto done;
19142
125k
        }
19143
129k
        p->mark = _mark;
19144
129k
        D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
19145
129k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "target_with_star_atom"));
19146
129k
    }
19147
0
    _res = NULL;
19148
256k
  done:
19149
256k
    _PyPegen_insert_memo(p, _mark, star_target_type, _res);
19150
256k
    p->level--;
19151
256k
    return _res;
19152
129k
}
19153
19154
// target_with_star_atom:
19155
//     | t_primary '.' NAME !t_lookahead
19156
//     | t_primary '[' slices ']' !t_lookahead
19157
//     | star_atom
19158
static expr_ty
19159
target_with_star_atom_rule(Parser *p)
19160
267k
{
19161
267k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19162
0
        _Pypegen_stack_overflow(p);
19163
0
    }
19164
267k
    if (p->error_indicator) {
19165
0
        p->level--;
19166
0
        return NULL;
19167
0
    }
19168
267k
    expr_ty _res = NULL;
19169
267k
    if (_PyPegen_is_memoized(p, target_with_star_atom_type, &_res)) {
19170
10.7k
        p->level--;
19171
10.7k
        return _res;
19172
10.7k
    }
19173
256k
    int _mark = p->mark;
19174
256k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
19175
0
        p->error_indicator = 1;
19176
0
        p->level--;
19177
0
        return NULL;
19178
0
    }
19179
256k
    int _start_lineno = p->tokens[_mark]->lineno;
19180
256k
    UNUSED(_start_lineno); // Only used by EXTRA macro
19181
256k
    int _start_col_offset = p->tokens[_mark]->col_offset;
19182
256k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
19183
256k
    { // t_primary '.' NAME !t_lookahead
19184
256k
        if (p->error_indicator) {
19185
0
            p->level--;
19186
0
            return NULL;
19187
0
        }
19188
256k
        D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19189
256k
        Token * _literal;
19190
256k
        expr_ty a;
19191
256k
        expr_ty b;
19192
256k
        if (
19193
256k
            (a = t_primary_rule(p))  // t_primary
19194
256k
            &&
19195
256k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
19196
256k
            &&
19197
256k
            (b = _PyPegen_name_token(p))  // NAME
19198
256k
            &&
19199
256k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
19200
256k
        )
19201
4.69k
        {
19202
4.69k
            D(fprintf(stderr, "%*c+ target_with_star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19203
4.69k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19204
4.69k
            if (_token == NULL) {
19205
0
                p->level--;
19206
0
                return NULL;
19207
0
            }
19208
4.69k
            int _end_lineno = _token->end_lineno;
19209
4.69k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19210
4.69k
            int _end_col_offset = _token->end_col_offset;
19211
4.69k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19212
4.69k
            _res = _PyAST_Attribute ( a , b -> v . Name . id , Store , EXTRA );
19213
4.69k
            if (_res == NULL && PyErr_Occurred()) {
19214
0
                p->error_indicator = 1;
19215
0
                p->level--;
19216
0
                return NULL;
19217
0
            }
19218
4.69k
            goto done;
19219
4.69k
        }
19220
252k
        p->mark = _mark;
19221
252k
        D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19222
252k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19223
252k
    }
19224
0
    { // t_primary '[' slices ']' !t_lookahead
19225
252k
        if (p->error_indicator) {
19226
1.44k
            p->level--;
19227
1.44k
            return NULL;
19228
1.44k
        }
19229
250k
        D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19230
250k
        Token * _literal;
19231
250k
        Token * _literal_1;
19232
250k
        expr_ty a;
19233
250k
        expr_ty b;
19234
250k
        if (
19235
250k
            (a = t_primary_rule(p))  // t_primary
19236
250k
            &&
19237
250k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
19238
250k
            &&
19239
250k
            (b = slices_rule(p))  // slices
19240
250k
            &&
19241
250k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
19242
250k
            &&
19243
250k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
19244
250k
        )
19245
2.22k
        {
19246
2.22k
            D(fprintf(stderr, "%*c+ target_with_star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19247
2.22k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19248
2.22k
            if (_token == NULL) {
19249
0
                p->level--;
19250
0
                return NULL;
19251
0
            }
19252
2.22k
            int _end_lineno = _token->end_lineno;
19253
2.22k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19254
2.22k
            int _end_col_offset = _token->end_col_offset;
19255
2.22k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19256
2.22k
            _res = _PyAST_Subscript ( a , b , Store , EXTRA );
19257
2.22k
            if (_res == NULL && PyErr_Occurred()) {
19258
0
                p->error_indicator = 1;
19259
0
                p->level--;
19260
0
                return NULL;
19261
0
            }
19262
2.22k
            goto done;
19263
2.22k
        }
19264
248k
        p->mark = _mark;
19265
248k
        D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19266
248k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19267
248k
    }
19268
0
    { // star_atom
19269
248k
        if (p->error_indicator) {
19270
0
            p->level--;
19271
0
            return NULL;
19272
0
        }
19273
248k
        D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_atom"));
19274
248k
        expr_ty star_atom_var;
19275
248k
        if (
19276
248k
            (star_atom_var = star_atom_rule(p))  // star_atom
19277
248k
        )
19278
120k
        {
19279
120k
            D(fprintf(stderr, "%*c+ target_with_star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_atom"));
19280
120k
            _res = star_atom_var;
19281
120k
            goto done;
19282
120k
        }
19283
128k
        p->mark = _mark;
19284
128k
        D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19285
128k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_atom"));
19286
128k
    }
19287
0
    _res = NULL;
19288
255k
  done:
19289
255k
    _PyPegen_insert_memo(p, _mark, target_with_star_atom_type, _res);
19290
255k
    p->level--;
19291
255k
    return _res;
19292
128k
}
19293
19294
// star_atom:
19295
//     | NAME
19296
//     | '(' target_with_star_atom ')'
19297
//     | '(' star_targets_tuple_seq? ')'
19298
//     | '[' star_targets_list_seq? ']'
19299
static expr_ty
19300
star_atom_rule(Parser *p)
19301
248k
{
19302
248k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19303
0
        _Pypegen_stack_overflow(p);
19304
0
    }
19305
248k
    if (p->error_indicator) {
19306
0
        p->level--;
19307
0
        return NULL;
19308
0
    }
19309
248k
    expr_ty _res = NULL;
19310
248k
    int _mark = p->mark;
19311
248k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
19312
0
        p->error_indicator = 1;
19313
0
        p->level--;
19314
0
        return NULL;
19315
0
    }
19316
248k
    int _start_lineno = p->tokens[_mark]->lineno;
19317
248k
    UNUSED(_start_lineno); // Only used by EXTRA macro
19318
248k
    int _start_col_offset = p->tokens[_mark]->col_offset;
19319
248k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
19320
248k
    { // NAME
19321
248k
        if (p->error_indicator) {
19322
0
            p->level--;
19323
0
            return NULL;
19324
0
        }
19325
248k
        D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
19326
248k
        expr_ty a;
19327
248k
        if (
19328
248k
            (a = _PyPegen_name_token(p))  // NAME
19329
248k
        )
19330
110k
        {
19331
110k
            D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
19332
110k
            _res = _PyPegen_set_expr_context ( p , a , Store );
19333
110k
            if (_res == NULL && PyErr_Occurred()) {
19334
0
                p->error_indicator = 1;
19335
0
                p->level--;
19336
0
                return NULL;
19337
0
            }
19338
110k
            goto done;
19339
110k
        }
19340
138k
        p->mark = _mark;
19341
138k
        D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19342
138k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
19343
138k
    }
19344
0
    { // '(' target_with_star_atom ')'
19345
138k
        if (p->error_indicator) {
19346
0
            p->level--;
19347
0
            return NULL;
19348
0
        }
19349
138k
        D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' target_with_star_atom ')'"));
19350
138k
        Token * _literal;
19351
138k
        Token * _literal_1;
19352
138k
        expr_ty a;
19353
138k
        if (
19354
138k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
19355
138k
            &&
19356
138k
            (a = target_with_star_atom_rule(p))  // target_with_star_atom
19357
138k
            &&
19358
138k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19359
138k
        )
19360
1.88k
        {
19361
1.88k
            D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' target_with_star_atom ')'"));
19362
1.88k
            _res = _PyPegen_set_expr_context ( p , a , Store );
19363
1.88k
            if (_res == NULL && PyErr_Occurred()) {
19364
0
                p->error_indicator = 1;
19365
0
                p->level--;
19366
0
                return NULL;
19367
0
            }
19368
1.88k
            goto done;
19369
1.88k
        }
19370
136k
        p->mark = _mark;
19371
136k
        D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19372
136k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' target_with_star_atom ')'"));
19373
136k
    }
19374
0
    { // '(' star_targets_tuple_seq? ')'
19375
136k
        if (p->error_indicator) {
19376
0
            p->level--;
19377
0
            return NULL;
19378
0
        }
19379
136k
        D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
19380
136k
        Token * _literal;
19381
136k
        Token * _literal_1;
19382
136k
        void *a;
19383
136k
        if (
19384
136k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
19385
136k
            &&
19386
136k
            (a = star_targets_tuple_seq_rule(p), !p->error_indicator)  // star_targets_tuple_seq?
19387
136k
            &&
19388
136k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19389
136k
        )
19390
5.40k
        {
19391
5.40k
            D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
19392
5.40k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19393
5.40k
            if (_token == NULL) {
19394
0
                p->level--;
19395
0
                return NULL;
19396
0
            }
19397
5.40k
            int _end_lineno = _token->end_lineno;
19398
5.40k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19399
5.40k
            int _end_col_offset = _token->end_col_offset;
19400
5.40k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19401
5.40k
            _res = _PyAST_Tuple ( a , Store , EXTRA );
19402
5.40k
            if (_res == NULL && PyErr_Occurred()) {
19403
0
                p->error_indicator = 1;
19404
0
                p->level--;
19405
0
                return NULL;
19406
0
            }
19407
5.40k
            goto done;
19408
5.40k
        }
19409
130k
        p->mark = _mark;
19410
130k
        D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19411
130k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
19412
130k
    }
19413
0
    { // '[' star_targets_list_seq? ']'
19414
130k
        if (p->error_indicator) {
19415
0
            p->level--;
19416
0
            return NULL;
19417
0
        }
19418
130k
        D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' star_targets_list_seq? ']'"));
19419
130k
        Token * _literal;
19420
130k
        Token * _literal_1;
19421
130k
        void *a;
19422
130k
        if (
19423
130k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
19424
130k
            &&
19425
130k
            (a = star_targets_list_seq_rule(p), !p->error_indicator)  // star_targets_list_seq?
19426
130k
            &&
19427
130k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
19428
130k
        )
19429
2.59k
        {
19430
2.59k
            D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' star_targets_list_seq? ']'"));
19431
2.59k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19432
2.59k
            if (_token == NULL) {
19433
0
                p->level--;
19434
0
                return NULL;
19435
0
            }
19436
2.59k
            int _end_lineno = _token->end_lineno;
19437
2.59k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19438
2.59k
            int _end_col_offset = _token->end_col_offset;
19439
2.59k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19440
2.59k
            _res = _PyAST_List ( a , Store , EXTRA );
19441
2.59k
            if (_res == NULL && PyErr_Occurred()) {
19442
0
                p->error_indicator = 1;
19443
0
                p->level--;
19444
0
                return NULL;
19445
0
            }
19446
2.59k
            goto done;
19447
2.59k
        }
19448
128k
        p->mark = _mark;
19449
128k
        D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19450
128k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' star_targets_list_seq? ']'"));
19451
128k
    }
19452
0
    _res = NULL;
19453
248k
  done:
19454
248k
    p->level--;
19455
248k
    return _res;
19456
128k
}
19457
19458
// single_target: single_subscript_attribute_target | NAME | '(' single_target ')'
19459
static expr_ty
19460
single_target_rule(Parser *p)
19461
182k
{
19462
182k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19463
0
        _Pypegen_stack_overflow(p);
19464
0
    }
19465
182k
    if (p->error_indicator) {
19466
0
        p->level--;
19467
0
        return NULL;
19468
0
    }
19469
182k
    expr_ty _res = NULL;
19470
182k
    int _mark = p->mark;
19471
182k
    { // single_subscript_attribute_target
19472
182k
        if (p->error_indicator) {
19473
0
            p->level--;
19474
0
            return NULL;
19475
0
        }
19476
182k
        D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
19477
182k
        expr_ty single_subscript_attribute_target_var;
19478
182k
        if (
19479
182k
            (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p))  // single_subscript_attribute_target
19480
182k
        )
19481
1.77k
        {
19482
1.77k
            D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
19483
1.77k
            _res = single_subscript_attribute_target_var;
19484
1.77k
            goto done;
19485
1.77k
        }
19486
180k
        p->mark = _mark;
19487
180k
        D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
19488
180k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_subscript_attribute_target"));
19489
180k
    }
19490
0
    { // NAME
19491
180k
        if (p->error_indicator) {
19492
166
            p->level--;
19493
166
            return NULL;
19494
166
        }
19495
180k
        D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
19496
180k
        expr_ty a;
19497
180k
        if (
19498
180k
            (a = _PyPegen_name_token(p))  // NAME
19499
180k
        )
19500
73.6k
        {
19501
73.6k
            D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
19502
73.6k
            _res = _PyPegen_set_expr_context ( p , a , Store );
19503
73.6k
            if (_res == NULL && PyErr_Occurred()) {
19504
0
                p->error_indicator = 1;
19505
0
                p->level--;
19506
0
                return NULL;
19507
0
            }
19508
73.6k
            goto done;
19509
73.6k
        }
19510
106k
        p->mark = _mark;
19511
106k
        D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
19512
106k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
19513
106k
    }
19514
0
    { // '(' single_target ')'
19515
106k
        if (p->error_indicator) {
19516
0
            p->level--;
19517
0
            return NULL;
19518
0
        }
19519
106k
        D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
19520
106k
        Token * _literal;
19521
106k
        Token * _literal_1;
19522
106k
        expr_ty a;
19523
106k
        if (
19524
106k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
19525
106k
            &&
19526
106k
            (a = single_target_rule(p))  // single_target
19527
106k
            &&
19528
106k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19529
106k
        )
19530
656
        {
19531
656
            D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
19532
656
            _res = a;
19533
656
            if (_res == NULL && PyErr_Occurred()) {
19534
0
                p->error_indicator = 1;
19535
0
                p->level--;
19536
0
                return NULL;
19537
0
            }
19538
656
            goto done;
19539
656
        }
19540
105k
        p->mark = _mark;
19541
105k
        D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
19542
105k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' single_target ')'"));
19543
105k
    }
19544
0
    _res = NULL;
19545
181k
  done:
19546
181k
    p->level--;
19547
181k
    return _res;
19548
105k
}
19549
19550
// single_subscript_attribute_target:
19551
//     | t_primary '.' NAME !t_lookahead
19552
//     | t_primary '[' slices ']' !t_lookahead
19553
static expr_ty
19554
single_subscript_attribute_target_rule(Parser *p)
19555
368k
{
19556
368k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19557
0
        _Pypegen_stack_overflow(p);
19558
0
    }
19559
368k
    if (p->error_indicator) {
19560
0
        p->level--;
19561
0
        return NULL;
19562
0
    }
19563
368k
    expr_ty _res = NULL;
19564
368k
    int _mark = p->mark;
19565
368k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
19566
28
        p->error_indicator = 1;
19567
28
        p->level--;
19568
28
        return NULL;
19569
28
    }
19570
368k
    int _start_lineno = p->tokens[_mark]->lineno;
19571
368k
    UNUSED(_start_lineno); // Only used by EXTRA macro
19572
368k
    int _start_col_offset = p->tokens[_mark]->col_offset;
19573
368k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
19574
368k
    { // t_primary '.' NAME !t_lookahead
19575
368k
        if (p->error_indicator) {
19576
0
            p->level--;
19577
0
            return NULL;
19578
0
        }
19579
368k
        D(fprintf(stderr, "%*c> single_subscript_attribute_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19580
368k
        Token * _literal;
19581
368k
        expr_ty a;
19582
368k
        expr_ty b;
19583
368k
        if (
19584
368k
            (a = t_primary_rule(p))  // t_primary
19585
368k
            &&
19586
368k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
19587
368k
            &&
19588
368k
            (b = _PyPegen_name_token(p))  // NAME
19589
368k
            &&
19590
368k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
19591
368k
        )
19592
5.68k
        {
19593
5.68k
            D(fprintf(stderr, "%*c+ single_subscript_attribute_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19594
5.68k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19595
5.68k
            if (_token == NULL) {
19596
0
                p->level--;
19597
0
                return NULL;
19598
0
            }
19599
5.68k
            int _end_lineno = _token->end_lineno;
19600
5.68k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19601
5.68k
            int _end_col_offset = _token->end_col_offset;
19602
5.68k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19603
5.68k
            _res = _PyAST_Attribute ( a , b -> v . Name . id , Store , EXTRA );
19604
5.68k
            if (_res == NULL && PyErr_Occurred()) {
19605
0
                p->error_indicator = 1;
19606
0
                p->level--;
19607
0
                return NULL;
19608
0
            }
19609
5.68k
            goto done;
19610
5.68k
        }
19611
362k
        p->mark = _mark;
19612
362k
        D(fprintf(stderr, "%*c%s single_subscript_attribute_target[%d-%d]: %s failed!\n", p->level, ' ',
19613
362k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19614
362k
    }
19615
0
    { // t_primary '[' slices ']' !t_lookahead
19616
362k
        if (p->error_indicator) {
19617
2.82k
            p->level--;
19618
2.82k
            return NULL;
19619
2.82k
        }
19620
359k
        D(fprintf(stderr, "%*c> single_subscript_attribute_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19621
359k
        Token * _literal;
19622
359k
        Token * _literal_1;
19623
359k
        expr_ty a;
19624
359k
        expr_ty b;
19625
359k
        if (
19626
359k
            (a = t_primary_rule(p))  // t_primary
19627
359k
            &&
19628
359k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
19629
359k
            &&
19630
359k
            (b = slices_rule(p))  // slices
19631
359k
            &&
19632
359k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
19633
359k
            &&
19634
359k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
19635
359k
        )
19636
1.15k
        {
19637
1.15k
            D(fprintf(stderr, "%*c+ single_subscript_attribute_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19638
1.15k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19639
1.15k
            if (_token == NULL) {
19640
0
                p->level--;
19641
0
                return NULL;
19642
0
            }
19643
1.15k
            int _end_lineno = _token->end_lineno;
19644
1.15k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19645
1.15k
            int _end_col_offset = _token->end_col_offset;
19646
1.15k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19647
1.15k
            _res = _PyAST_Subscript ( a , b , Store , EXTRA );
19648
1.15k
            if (_res == NULL && PyErr_Occurred()) {
19649
0
                p->error_indicator = 1;
19650
0
                p->level--;
19651
0
                return NULL;
19652
0
            }
19653
1.15k
            goto done;
19654
1.15k
        }
19655
358k
        p->mark = _mark;
19656
358k
        D(fprintf(stderr, "%*c%s single_subscript_attribute_target[%d-%d]: %s failed!\n", p->level, ' ',
19657
358k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19658
358k
    }
19659
0
    _res = NULL;
19660
365k
  done:
19661
365k
    p->level--;
19662
365k
    return _res;
19663
358k
}
19664
19665
// Left-recursive
19666
// t_primary:
19667
//     | t_primary '.' NAME &t_lookahead
19668
//     | t_primary '[' slices ']' &t_lookahead
19669
//     | t_primary genexp &t_lookahead
19670
//     | t_primary '(' arguments? ')' &t_lookahead
19671
//     | atom &t_lookahead
19672
static expr_ty t_primary_raw(Parser *);
19673
static expr_ty
19674
t_primary_rule(Parser *p)
19675
2.45M
{
19676
2.45M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19677
0
        _Pypegen_stack_overflow(p);
19678
0
    }
19679
2.45M
    expr_ty _res = NULL;
19680
2.45M
    if (_PyPegen_is_memoized(p, t_primary_type, &_res)) {
19681
2.18M
        p->level--;
19682
2.18M
        return _res;
19683
2.18M
    }
19684
270k
    int _mark = p->mark;
19685
270k
    int _resmark = p->mark;
19686
306k
    while (1) {
19687
306k
        int tmpvar_9 = _PyPegen_update_memo(p, _mark, t_primary_type, _res);
19688
306k
        if (tmpvar_9) {
19689
0
            p->level--;
19690
0
            return _res;
19691
0
        }
19692
306k
        p->mark = _mark;
19693
306k
        void *_raw = t_primary_raw(p);
19694
306k
        if (p->error_indicator) {
19695
4.38k
            p->level--;
19696
4.38k
            return NULL;
19697
4.38k
        }
19698
302k
        if (_raw == NULL || p->mark <= _resmark)
19699
266k
            break;
19700
35.7k
        _resmark = p->mark;
19701
35.7k
        _res = _raw;
19702
35.7k
    }
19703
266k
    p->mark = _resmark;
19704
266k
    p->level--;
19705
266k
    return _res;
19706
270k
}
19707
static expr_ty
19708
t_primary_raw(Parser *p)
19709
306k
{
19710
306k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19711
0
        _Pypegen_stack_overflow(p);
19712
0
    }
19713
306k
    if (p->error_indicator) {
19714
0
        p->level--;
19715
0
        return NULL;
19716
0
    }
19717
306k
    expr_ty _res = NULL;
19718
306k
    int _mark = p->mark;
19719
306k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
19720
0
        p->error_indicator = 1;
19721
0
        p->level--;
19722
0
        return NULL;
19723
0
    }
19724
306k
    int _start_lineno = p->tokens[_mark]->lineno;
19725
306k
    UNUSED(_start_lineno); // Only used by EXTRA macro
19726
306k
    int _start_col_offset = p->tokens[_mark]->col_offset;
19727
306k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
19728
306k
    { // t_primary '.' NAME &t_lookahead
19729
306k
        if (p->error_indicator) {
19730
0
            p->level--;
19731
0
            return NULL;
19732
0
        }
19733
306k
        D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
19734
306k
        Token * _literal;
19735
306k
        expr_ty a;
19736
306k
        expr_ty b;
19737
306k
        if (
19738
306k
            (a = t_primary_rule(p))  // t_primary
19739
306k
            &&
19740
306k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
19741
306k
            &&
19742
306k
            (b = _PyPegen_name_token(p))  // NAME
19743
306k
            &&
19744
306k
            _PyPegen_lookahead(1, t_lookahead_rule, p)
19745
306k
        )
19746
7.26k
        {
19747
7.26k
            D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
19748
7.26k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19749
7.26k
            if (_token == NULL) {
19750
0
                p->level--;
19751
0
                return NULL;
19752
0
            }
19753
7.26k
            int _end_lineno = _token->end_lineno;
19754
7.26k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19755
7.26k
            int _end_col_offset = _token->end_col_offset;
19756
7.26k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19757
7.26k
            _res = _PyAST_Attribute ( a , b -> v . Name . id , Load , EXTRA );
19758
7.26k
            if (_res == NULL && PyErr_Occurred()) {
19759
0
                p->error_indicator = 1;
19760
0
                p->level--;
19761
0
                return NULL;
19762
0
            }
19763
7.26k
            goto done;
19764
7.26k
        }
19765
299k
        p->mark = _mark;
19766
299k
        D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
19767
299k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
19768
299k
    }
19769
0
    { // t_primary '[' slices ']' &t_lookahead
19770
299k
        if (p->error_indicator) {
19771
18
            p->level--;
19772
18
            return NULL;
19773
18
        }
19774
299k
        D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
19775
299k
        Token * _literal;
19776
299k
        Token * _literal_1;
19777
299k
        expr_ty a;
19778
299k
        expr_ty b;
19779
299k
        if (
19780
299k
            (a = t_primary_rule(p))  // t_primary
19781
299k
            &&
19782
299k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
19783
299k
            &&
19784
299k
            (b = slices_rule(p))  // slices
19785
299k
            &&
19786
299k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
19787
299k
            &&
19788
299k
            _PyPegen_lookahead(1, t_lookahead_rule, p)
19789
299k
        )
19790
863
        {
19791
863
            D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
19792
863
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19793
863
            if (_token == NULL) {
19794
0
                p->level--;
19795
0
                return NULL;
19796
0
            }
19797
863
            int _end_lineno = _token->end_lineno;
19798
863
            UNUSED(_end_lineno); // Only used by EXTRA macro
19799
863
            int _end_col_offset = _token->end_col_offset;
19800
863
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19801
863
            _res = _PyAST_Subscript ( a , b , Load , EXTRA );
19802
863
            if (_res == NULL && PyErr_Occurred()) {
19803
0
                p->error_indicator = 1;
19804
0
                p->level--;
19805
0
                return NULL;
19806
0
            }
19807
863
            goto done;
19808
863
        }
19809
298k
        p->mark = _mark;
19810
298k
        D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
19811
298k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
19812
298k
    }
19813
0
    { // t_primary genexp &t_lookahead
19814
298k
        if (p->error_indicator) {
19815
258
            p->level--;
19816
258
            return NULL;
19817
258
        }
19818
298k
        D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary genexp &t_lookahead"));
19819
298k
        expr_ty a;
19820
298k
        expr_ty b;
19821
298k
        if (
19822
298k
            (a = t_primary_rule(p))  // t_primary
19823
298k
            &&
19824
298k
            (b = genexp_rule(p))  // genexp
19825
298k
            &&
19826
298k
            _PyPegen_lookahead(1, t_lookahead_rule, p)
19827
298k
        )
19828
398
        {
19829
398
            D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary genexp &t_lookahead"));
19830
398
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19831
398
            if (_token == NULL) {
19832
0
                p->level--;
19833
0
                return NULL;
19834
0
            }
19835
398
            int _end_lineno = _token->end_lineno;
19836
398
            UNUSED(_end_lineno); // Only used by EXTRA macro
19837
398
            int _end_col_offset = _token->end_col_offset;
19838
398
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19839
398
            _res = _PyAST_Call ( a , CHECK ( asdl_expr_seq* , ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
19840
398
            if (_res == NULL && PyErr_Occurred()) {
19841
0
                p->error_indicator = 1;
19842
0
                p->level--;
19843
0
                return NULL;
19844
0
            }
19845
398
            goto done;
19846
398
        }
19847
297k
        p->mark = _mark;
19848
297k
        D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
19849
297k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary genexp &t_lookahead"));
19850
297k
    }
19851
0
    { // t_primary '(' arguments? ')' &t_lookahead
19852
297k
        if (p->error_indicator) {
19853
358
            p->level--;
19854
358
            return NULL;
19855
358
        }
19856
297k
        D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
19857
297k
        Token * _literal;
19858
297k
        Token * _literal_1;
19859
297k
        expr_ty a;
19860
297k
        void *b;
19861
297k
        if (
19862
297k
            (a = t_primary_rule(p))  // t_primary
19863
297k
            &&
19864
297k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
19865
297k
            &&
19866
297k
            (b = arguments_rule(p), !p->error_indicator)  // arguments?
19867
297k
            &&
19868
297k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19869
297k
            &&
19870
297k
            _PyPegen_lookahead(1, t_lookahead_rule, p)
19871
297k
        )
19872
2.74k
        {
19873
2.74k
            D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
19874
2.74k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19875
2.74k
            if (_token == NULL) {
19876
0
                p->level--;
19877
0
                return NULL;
19878
0
            }
19879
2.74k
            int _end_lineno = _token->end_lineno;
19880
2.74k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19881
2.74k
            int _end_col_offset = _token->end_col_offset;
19882
2.74k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19883
2.74k
            _res = _PyAST_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
19884
2.74k
            if (_res == NULL && PyErr_Occurred()) {
19885
0
                p->error_indicator = 1;
19886
0
                p->level--;
19887
0
                return NULL;
19888
0
            }
19889
2.74k
            goto done;
19890
2.74k
        }
19891
294k
        p->mark = _mark;
19892
294k
        D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
19893
294k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
19894
294k
    }
19895
0
    { // atom &t_lookahead
19896
294k
        if (p->error_indicator) {
19897
437
            p->level--;
19898
437
            return NULL;
19899
437
        }
19900
294k
        D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "atom &t_lookahead"));
19901
294k
        expr_ty a;
19902
294k
        if (
19903
294k
            (a = atom_rule(p))  // atom
19904
294k
            &&
19905
294k
            _PyPegen_lookahead(1, t_lookahead_rule, p)
19906
294k
        )
19907
47.8k
        {
19908
47.8k
            D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "atom &t_lookahead"));
19909
47.8k
            _res = a;
19910
47.8k
            if (_res == NULL && PyErr_Occurred()) {
19911
0
                p->error_indicator = 1;
19912
0
                p->level--;
19913
0
                return NULL;
19914
0
            }
19915
47.8k
            goto done;
19916
47.8k
        }
19917
246k
        p->mark = _mark;
19918
246k
        D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
19919
246k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "atom &t_lookahead"));
19920
246k
    }
19921
0
    _res = NULL;
19922
305k
  done:
19923
305k
    p->level--;
19924
305k
    return _res;
19925
246k
}
19926
19927
// t_lookahead: '(' | '[' | '.'
19928
static void *
19929
t_lookahead_rule(Parser *p)
19930
238k
{
19931
238k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19932
0
        _Pypegen_stack_overflow(p);
19933
0
    }
19934
238k
    if (p->error_indicator) {
19935
0
        p->level--;
19936
0
        return NULL;
19937
0
    }
19938
238k
    void * _res = NULL;
19939
238k
    int _mark = p->mark;
19940
238k
    { // '('
19941
238k
        if (p->error_indicator) {
19942
0
            p->level--;
19943
0
            return NULL;
19944
0
        }
19945
238k
        D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
19946
238k
        Token * _literal;
19947
238k
        if (
19948
238k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
19949
238k
        )
19950
26.5k
        {
19951
26.5k
            D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
19952
26.5k
            _res = _literal;
19953
26.5k
            goto done;
19954
26.5k
        }
19955
211k
        p->mark = _mark;
19956
211k
        D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
19957
211k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
19958
211k
    }
19959
0
    { // '['
19960
211k
        if (p->error_indicator) {
19961
227
            p->level--;
19962
227
            return NULL;
19963
227
        }
19964
211k
        D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
19965
211k
        Token * _literal;
19966
211k
        if (
19967
211k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
19968
211k
        )
19969
7.61k
        {
19970
7.61k
            D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
19971
7.61k
            _res = _literal;
19972
7.61k
            goto done;
19973
7.61k
        }
19974
203k
        p->mark = _mark;
19975
203k
        D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
19976
203k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
19977
203k
    }
19978
0
    { // '.'
19979
203k
        if (p->error_indicator) {
19980
0
            p->level--;
19981
0
            return NULL;
19982
0
        }
19983
203k
        D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
19984
203k
        Token * _literal;
19985
203k
        if (
19986
203k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
19987
203k
        )
19988
24.9k
        {
19989
24.9k
            D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
19990
24.9k
            _res = _literal;
19991
24.9k
            goto done;
19992
24.9k
        }
19993
179k
        p->mark = _mark;
19994
179k
        D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
19995
179k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
19996
179k
    }
19997
0
    _res = NULL;
19998
238k
  done:
19999
238k
    p->level--;
20000
238k
    return _res;
20001
179k
}
20002
20003
// del_targets: ','.del_target+ ','?
20004
static asdl_expr_seq*
20005
del_targets_rule(Parser *p)
20006
4.89k
{
20007
4.89k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20008
0
        _Pypegen_stack_overflow(p);
20009
0
    }
20010
4.89k
    if (p->error_indicator) {
20011
0
        p->level--;
20012
0
        return NULL;
20013
0
    }
20014
4.89k
    asdl_expr_seq* _res = NULL;
20015
4.89k
    int _mark = p->mark;
20016
4.89k
    { // ','.del_target+ ','?
20017
4.89k
        if (p->error_indicator) {
20018
0
            p->level--;
20019
0
            return NULL;
20020
0
        }
20021
4.89k
        D(fprintf(stderr, "%*c> del_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.del_target+ ','?"));
20022
4.89k
        void *_opt_var;
20023
4.89k
        UNUSED(_opt_var); // Silence compiler warnings
20024
4.89k
        asdl_expr_seq* a;
20025
4.89k
        if (
20026
4.89k
            (a = (asdl_expr_seq*)_gather_101_rule(p))  // ','.del_target+
20027
4.89k
            &&
20028
4.89k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
20029
4.89k
        )
20030
2.41k
        {
20031
2.41k
            D(fprintf(stderr, "%*c+ del_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.del_target+ ','?"));
20032
2.41k
            _res = a;
20033
2.41k
            if (_res == NULL && PyErr_Occurred()) {
20034
0
                p->error_indicator = 1;
20035
0
                p->level--;
20036
0
                return NULL;
20037
0
            }
20038
2.41k
            goto done;
20039
2.41k
        }
20040
2.48k
        p->mark = _mark;
20041
2.48k
        D(fprintf(stderr, "%*c%s del_targets[%d-%d]: %s failed!\n", p->level, ' ',
20042
2.48k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.del_target+ ','?"));
20043
2.48k
    }
20044
0
    _res = NULL;
20045
4.89k
  done:
20046
4.89k
    p->level--;
20047
4.89k
    return _res;
20048
2.48k
}
20049
20050
// del_target:
20051
//     | t_primary '.' NAME !t_lookahead
20052
//     | t_primary '[' slices ']' !t_lookahead
20053
//     | del_t_atom
20054
static expr_ty
20055
del_target_rule(Parser *p)
20056
12.2k
{
20057
12.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20058
0
        _Pypegen_stack_overflow(p);
20059
0
    }
20060
12.2k
    if (p->error_indicator) {
20061
0
        p->level--;
20062
0
        return NULL;
20063
0
    }
20064
12.2k
    expr_ty _res = NULL;
20065
12.2k
    if (_PyPegen_is_memoized(p, del_target_type, &_res)) {
20066
2.74k
        p->level--;
20067
2.74k
        return _res;
20068
2.74k
    }
20069
9.53k
    int _mark = p->mark;
20070
9.53k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
20071
0
        p->error_indicator = 1;
20072
0
        p->level--;
20073
0
        return NULL;
20074
0
    }
20075
9.53k
    int _start_lineno = p->tokens[_mark]->lineno;
20076
9.53k
    UNUSED(_start_lineno); // Only used by EXTRA macro
20077
9.53k
    int _start_col_offset = p->tokens[_mark]->col_offset;
20078
9.53k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
20079
9.53k
    { // t_primary '.' NAME !t_lookahead
20080
9.53k
        if (p->error_indicator) {
20081
0
            p->level--;
20082
0
            return NULL;
20083
0
        }
20084
9.53k
        D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
20085
9.53k
        Token * _literal;
20086
9.53k
        expr_ty a;
20087
9.53k
        expr_ty b;
20088
9.53k
        if (
20089
9.53k
            (a = t_primary_rule(p))  // t_primary
20090
9.53k
            &&
20091
9.53k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
20092
9.53k
            &&
20093
9.53k
            (b = _PyPegen_name_token(p))  // NAME
20094
9.53k
            &&
20095
9.53k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
20096
9.53k
        )
20097
217
        {
20098
217
            D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
20099
217
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
20100
217
            if (_token == NULL) {
20101
0
                p->level--;
20102
0
                return NULL;
20103
0
            }
20104
217
            int _end_lineno = _token->end_lineno;
20105
217
            UNUSED(_end_lineno); // Only used by EXTRA macro
20106
217
            int _end_col_offset = _token->end_col_offset;
20107
217
            UNUSED(_end_col_offset); // Only used by EXTRA macro
20108
217
            _res = _PyAST_Attribute ( a , b -> v . Name . id , Del , EXTRA );
20109
217
            if (_res == NULL && PyErr_Occurred()) {
20110
0
                p->error_indicator = 1;
20111
0
                p->level--;
20112
0
                return NULL;
20113
0
            }
20114
217
            goto done;
20115
217
        }
20116
9.31k
        p->mark = _mark;
20117
9.31k
        D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
20118
9.31k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
20119
9.31k
    }
20120
0
    { // t_primary '[' slices ']' !t_lookahead
20121
9.31k
        if (p->error_indicator) {
20122
114
            p->level--;
20123
114
            return NULL;
20124
114
        }
20125
9.20k
        D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
20126
9.20k
        Token * _literal;
20127
9.20k
        Token * _literal_1;
20128
9.20k
        expr_ty a;
20129
9.20k
        expr_ty b;
20130
9.20k
        if (
20131
9.20k
            (a = t_primary_rule(p))  // t_primary
20132
9.20k
            &&
20133
9.20k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
20134
9.20k
            &&
20135
9.20k
            (b = slices_rule(p))  // slices
20136
9.20k
            &&
20137
9.20k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
20138
9.20k
            &&
20139
9.20k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
20140
9.20k
        )
20141
147
        {
20142
147
            D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
20143
147
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
20144
147
            if (_token == NULL) {
20145
0
                p->level--;
20146
0
                return NULL;
20147
0
            }
20148
147
            int _end_lineno = _token->end_lineno;
20149
147
            UNUSED(_end_lineno); // Only used by EXTRA macro
20150
147
            int _end_col_offset = _token->end_col_offset;
20151
147
            UNUSED(_end_col_offset); // Only used by EXTRA macro
20152
147
            _res = _PyAST_Subscript ( a , b , Del , EXTRA );
20153
147
            if (_res == NULL && PyErr_Occurred()) {
20154
0
                p->error_indicator = 1;
20155
0
                p->level--;
20156
0
                return NULL;
20157
0
            }
20158
147
            goto done;
20159
147
        }
20160
9.05k
        p->mark = _mark;
20161
9.05k
        D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
20162
9.05k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
20163
9.05k
    }
20164
0
    { // del_t_atom
20165
9.05k
        if (p->error_indicator) {
20166
0
            p->level--;
20167
0
            return NULL;
20168
0
        }
20169
9.05k
        D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "del_t_atom"));
20170
9.05k
        expr_ty del_t_atom_var;
20171
9.05k
        if (
20172
9.05k
            (del_t_atom_var = del_t_atom_rule(p))  // del_t_atom
20173
9.05k
        )
20174
5.98k
        {
20175
5.98k
            D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "del_t_atom"));
20176
5.98k
            _res = del_t_atom_var;
20177
5.98k
            goto done;
20178
5.98k
        }
20179
3.07k
        p->mark = _mark;
20180
3.07k
        D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
20181
3.07k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_t_atom"));
20182
3.07k
    }
20183
0
    _res = NULL;
20184
9.42k
  done:
20185
9.42k
    _PyPegen_insert_memo(p, _mark, del_target_type, _res);
20186
9.42k
    p->level--;
20187
9.42k
    return _res;
20188
3.07k
}
20189
20190
// del_t_atom: NAME | '(' del_target ')' | '(' del_targets? ')' | '[' del_targets? ']'
20191
static expr_ty
20192
del_t_atom_rule(Parser *p)
20193
9.05k
{
20194
9.05k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20195
0
        _Pypegen_stack_overflow(p);
20196
0
    }
20197
9.05k
    if (p->error_indicator) {
20198
0
        p->level--;
20199
0
        return NULL;
20200
0
    }
20201
9.05k
    expr_ty _res = NULL;
20202
9.05k
    int _mark = p->mark;
20203
9.05k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
20204
0
        p->error_indicator = 1;
20205
0
        p->level--;
20206
0
        return NULL;
20207
0
    }
20208
9.05k
    int _start_lineno = p->tokens[_mark]->lineno;
20209
9.05k
    UNUSED(_start_lineno); // Only used by EXTRA macro
20210
9.05k
    int _start_col_offset = p->tokens[_mark]->col_offset;
20211
9.05k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
20212
9.05k
    { // NAME
20213
9.05k
        if (p->error_indicator) {
20214
0
            p->level--;
20215
0
            return NULL;
20216
0
        }
20217
9.05k
        D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
20218
9.05k
        expr_ty a;
20219
9.05k
        if (
20220
9.05k
            (a = _PyPegen_name_token(p))  // NAME
20221
9.05k
        )
20222
3.11k
        {
20223
3.11k
            D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
20224
3.11k
            _res = _PyPegen_set_expr_context ( p , a , Del );
20225
3.11k
            if (_res == NULL && PyErr_Occurred()) {
20226
0
                p->error_indicator = 1;
20227
0
                p->level--;
20228
0
                return NULL;
20229
0
            }
20230
3.11k
            goto done;
20231
3.11k
        }
20232
5.94k
        p->mark = _mark;
20233
5.94k
        D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
20234
5.94k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
20235
5.94k
    }
20236
0
    { // '(' del_target ')'
20237
5.94k
        if (p->error_indicator) {
20238
0
            p->level--;
20239
0
            return NULL;
20240
0
        }
20241
5.94k
        D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' del_target ')'"));
20242
5.94k
        Token * _literal;
20243
5.94k
        Token * _literal_1;
20244
5.94k
        expr_ty a;
20245
5.94k
        if (
20246
5.94k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
20247
5.94k
            &&
20248
5.94k
            (a = del_target_rule(p))  // del_target
20249
5.94k
            &&
20250
5.94k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
20251
5.94k
        )
20252
180
        {
20253
180
            D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' del_target ')'"));
20254
180
            _res = _PyPegen_set_expr_context ( p , a , Del );
20255
180
            if (_res == NULL && PyErr_Occurred()) {
20256
0
                p->error_indicator = 1;
20257
0
                p->level--;
20258
0
                return NULL;
20259
0
            }
20260
180
            goto done;
20261
180
        }
20262
5.76k
        p->mark = _mark;
20263
5.76k
        D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
20264
5.76k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' del_target ')'"));
20265
5.76k
    }
20266
0
    { // '(' del_targets? ')'
20267
5.76k
        if (p->error_indicator) {
20268
0
            p->level--;
20269
0
            return NULL;
20270
0
        }
20271
5.76k
        D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' del_targets? ')'"));
20272
5.76k
        Token * _literal;
20273
5.76k
        Token * _literal_1;
20274
5.76k
        void *a;
20275
5.76k
        if (
20276
5.76k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
20277
5.76k
            &&
20278
5.76k
            (a = del_targets_rule(p), !p->error_indicator)  // del_targets?
20279
5.76k
            &&
20280
5.76k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
20281
5.76k
        )
20282
2.19k
        {
20283
2.19k
            D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' del_targets? ')'"));
20284
2.19k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
20285
2.19k
            if (_token == NULL) {
20286
0
                p->level--;
20287
0
                return NULL;
20288
0
            }
20289
2.19k
            int _end_lineno = _token->end_lineno;
20290
2.19k
            UNUSED(_end_lineno); // Only used by EXTRA macro
20291
2.19k
            int _end_col_offset = _token->end_col_offset;
20292
2.19k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
20293
2.19k
            _res = _PyAST_Tuple ( a , Del , EXTRA );
20294
2.19k
            if (_res == NULL && PyErr_Occurred()) {
20295
0
                p->error_indicator = 1;
20296
0
                p->level--;
20297
0
                return NULL;
20298
0
            }
20299
2.19k
            goto done;
20300
2.19k
        }
20301
3.57k
        p->mark = _mark;
20302
3.57k
        D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
20303
3.57k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' del_targets? ')'"));
20304
3.57k
    }
20305
0
    { // '[' del_targets? ']'
20306
3.57k
        if (p->error_indicator) {
20307
0
            p->level--;
20308
0
            return NULL;
20309
0
        }
20310
3.57k
        D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' del_targets? ']'"));
20311
3.57k
        Token * _literal;
20312
3.57k
        Token * _literal_1;
20313
3.57k
        void *a;
20314
3.57k
        if (
20315
3.57k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
20316
3.57k
            &&
20317
3.57k
            (a = del_targets_rule(p), !p->error_indicator)  // del_targets?
20318
3.57k
            &&
20319
3.57k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
20320
3.57k
        )
20321
497
        {
20322
497
            D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' del_targets? ']'"));
20323
497
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
20324
497
            if (_token == NULL) {
20325
0
                p->level--;
20326
0
                return NULL;
20327
0
            }
20328
497
            int _end_lineno = _token->end_lineno;
20329
497
            UNUSED(_end_lineno); // Only used by EXTRA macro
20330
497
            int _end_col_offset = _token->end_col_offset;
20331
497
            UNUSED(_end_col_offset); // Only used by EXTRA macro
20332
497
            _res = _PyAST_List ( a , Del , EXTRA );
20333
497
            if (_res == NULL && PyErr_Occurred()) {
20334
0
                p->error_indicator = 1;
20335
0
                p->level--;
20336
0
                return NULL;
20337
0
            }
20338
497
            goto done;
20339
497
        }
20340
3.07k
        p->mark = _mark;
20341
3.07k
        D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
20342
3.07k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' del_targets? ']'"));
20343
3.07k
    }
20344
0
    _res = NULL;
20345
9.05k
  done:
20346
9.05k
    p->level--;
20347
9.05k
    return _res;
20348
3.07k
}
20349
20350
// type_expressions:
20351
//     | ','.expression+ ',' '*' expression ',' '**' expression
20352
//     | ','.expression+ ',' '*' expression
20353
//     | ','.expression+ ',' '**' expression
20354
//     | '*' expression ',' '**' expression
20355
//     | '*' expression
20356
//     | '**' expression
20357
//     | ','.expression+
20358
static asdl_expr_seq*
20359
type_expressions_rule(Parser *p)
20360
0
{
20361
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20362
0
        _Pypegen_stack_overflow(p);
20363
0
    }
20364
0
    if (p->error_indicator) {
20365
0
        p->level--;
20366
0
        return NULL;
20367
0
    }
20368
0
    asdl_expr_seq* _res = NULL;
20369
0
    int _mark = p->mark;
20370
0
    { // ','.expression+ ',' '*' expression ',' '**' expression
20371
0
        if (p->error_indicator) {
20372
0
            p->level--;
20373
0
            return NULL;
20374
0
        }
20375
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
20376
0
        Token * _literal;
20377
0
        Token * _literal_1;
20378
0
        Token * _literal_2;
20379
0
        Token * _literal_3;
20380
0
        asdl_seq * a;
20381
0
        expr_ty b;
20382
0
        expr_ty c;
20383
0
        if (
20384
0
            (a = _gather_103_rule(p))  // ','.expression+
20385
0
            &&
20386
0
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20387
0
            &&
20388
0
            (_literal_1 = _PyPegen_expect_token(p, 16))  // token='*'
20389
0
            &&
20390
0
            (b = expression_rule(p))  // expression
20391
0
            &&
20392
0
            (_literal_2 = _PyPegen_expect_token(p, 12))  // token=','
20393
0
            &&
20394
0
            (_literal_3 = _PyPegen_expect_token(p, 35))  // token='**'
20395
0
            &&
20396
0
            (c = expression_rule(p))  // expression
20397
0
        )
20398
0
        {
20399
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
20400
0
            _res = ( asdl_expr_seq* ) _PyPegen_seq_append_to_end ( p , CHECK ( asdl_seq* , _PyPegen_seq_append_to_end ( p , a , b ) ) , c );
20401
0
            if (_res == NULL && PyErr_Occurred()) {
20402
0
                p->error_indicator = 1;
20403
0
                p->level--;
20404
0
                return NULL;
20405
0
            }
20406
0
            goto done;
20407
0
        }
20408
0
        p->mark = _mark;
20409
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
20410
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
20411
0
    }
20412
0
    { // ','.expression+ ',' '*' expression
20413
0
        if (p->error_indicator) {
20414
0
            p->level--;
20415
0
            return NULL;
20416
0
        }
20417
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression"));
20418
0
        Token * _literal;
20419
0
        Token * _literal_1;
20420
0
        asdl_seq * a;
20421
0
        expr_ty b;
20422
0
        if (
20423
0
            (a = _gather_103_rule(p))  // ','.expression+
20424
0
            &&
20425
0
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20426
0
            &&
20427
0
            (_literal_1 = _PyPegen_expect_token(p, 16))  // token='*'
20428
0
            &&
20429
0
            (b = expression_rule(p))  // expression
20430
0
        )
20431
0
        {
20432
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression"));
20433
0
            _res = ( asdl_expr_seq* ) _PyPegen_seq_append_to_end ( p , a , b );
20434
0
            if (_res == NULL && PyErr_Occurred()) {
20435
0
                p->error_indicator = 1;
20436
0
                p->level--;
20437
0
                return NULL;
20438
0
            }
20439
0
            goto done;
20440
0
        }
20441
0
        p->mark = _mark;
20442
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
20443
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '*' expression"));
20444
0
    }
20445
0
    { // ','.expression+ ',' '**' expression
20446
0
        if (p->error_indicator) {
20447
0
            p->level--;
20448
0
            return NULL;
20449
0
        }
20450
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '**' expression"));
20451
0
        Token * _literal;
20452
0
        Token * _literal_1;
20453
0
        asdl_seq * a;
20454
0
        expr_ty b;
20455
0
        if (
20456
0
            (a = _gather_103_rule(p))  // ','.expression+
20457
0
            &&
20458
0
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20459
0
            &&
20460
0
            (_literal_1 = _PyPegen_expect_token(p, 35))  // token='**'
20461
0
            &&
20462
0
            (b = expression_rule(p))  // expression
20463
0
        )
20464
0
        {
20465
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '**' expression"));
20466
0
            _res = ( asdl_expr_seq* ) _PyPegen_seq_append_to_end ( p , a , b );
20467
0
            if (_res == NULL && PyErr_Occurred()) {
20468
0
                p->error_indicator = 1;
20469
0
                p->level--;
20470
0
                return NULL;
20471
0
            }
20472
0
            goto done;
20473
0
        }
20474
0
        p->mark = _mark;
20475
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
20476
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '**' expression"));
20477
0
    }
20478
0
    { // '*' expression ',' '**' expression
20479
0
        if (p->error_indicator) {
20480
0
            p->level--;
20481
0
            return NULL;
20482
0
        }
20483
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression ',' '**' expression"));
20484
0
        Token * _literal;
20485
0
        Token * _literal_1;
20486
0
        Token * _literal_2;
20487
0
        expr_ty a;
20488
0
        expr_ty b;
20489
0
        if (
20490
0
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
20491
0
            &&
20492
0
            (a = expression_rule(p))  // expression
20493
0
            &&
20494
0
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
20495
0
            &&
20496
0
            (_literal_2 = _PyPegen_expect_token(p, 35))  // token='**'
20497
0
            &&
20498
0
            (b = expression_rule(p))  // expression
20499
0
        )
20500
0
        {
20501
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression ',' '**' expression"));
20502
0
            _res = ( asdl_expr_seq* ) _PyPegen_seq_append_to_end ( p , CHECK ( asdl_seq* , _PyPegen_singleton_seq ( p , a ) ) , b );
20503
0
            if (_res == NULL && PyErr_Occurred()) {
20504
0
                p->error_indicator = 1;
20505
0
                p->level--;
20506
0
                return NULL;
20507
0
            }
20508
0
            goto done;
20509
0
        }
20510
0
        p->mark = _mark;
20511
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
20512
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression ',' '**' expression"));
20513
0
    }
20514
0
    { // '*' expression
20515
0
        if (p->error_indicator) {
20516
0
            p->level--;
20517
0
            return NULL;
20518
0
        }
20519
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression"));
20520
0
        Token * _literal;
20521
0
        expr_ty a;
20522
0
        if (
20523
0
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
20524
0
            &&
20525
0
            (a = expression_rule(p))  // expression
20526
0
        )
20527
0
        {
20528
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression"));
20529
0
            _res = ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , a );
20530
0
            if (_res == NULL && PyErr_Occurred()) {
20531
0
                p->error_indicator = 1;
20532
0
                p->level--;
20533
0
                return NULL;
20534
0
            }
20535
0
            goto done;
20536
0
        }
20537
0
        p->mark = _mark;
20538
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
20539
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression"));
20540
0
    }
20541
0
    { // '**' expression
20542
0
        if (p->error_indicator) {
20543
0
            p->level--;
20544
0
            return NULL;
20545
0
        }
20546
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' expression"));
20547
0
        Token * _literal;
20548
0
        expr_ty a;
20549
0
        if (
20550
0
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
20551
0
            &&
20552
0
            (a = expression_rule(p))  // expression
20553
0
        )
20554
0
        {
20555
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' expression"));
20556
0
            _res = ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , a );
20557
0
            if (_res == NULL && PyErr_Occurred()) {
20558
0
                p->error_indicator = 1;
20559
0
                p->level--;
20560
0
                return NULL;
20561
0
            }
20562
0
            goto done;
20563
0
        }
20564
0
        p->mark = _mark;
20565
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
20566
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression"));
20567
0
    }
20568
0
    { // ','.expression+
20569
0
        if (p->error_indicator) {
20570
0
            p->level--;
20571
0
            return NULL;
20572
0
        }
20573
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+"));
20574
0
        asdl_expr_seq* a;
20575
0
        if (
20576
0
            (a = (asdl_expr_seq*)_gather_103_rule(p))  // ','.expression+
20577
0
        )
20578
0
        {
20579
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+"));
20580
0
            _res = a;
20581
0
            if (_res == NULL && PyErr_Occurred()) {
20582
0
                p->error_indicator = 1;
20583
0
                p->level--;
20584
0
                return NULL;
20585
0
            }
20586
0
            goto done;
20587
0
        }
20588
0
        p->mark = _mark;
20589
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
20590
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+"));
20591
0
    }
20592
0
    _res = NULL;
20593
0
  done:
20594
0
    p->level--;
20595
0
    return _res;
20596
0
}
20597
20598
// func_type_comment:
20599
//     | NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
20600
//     | invalid_double_type_comments
20601
//     | TYPE_COMMENT
20602
static Token*
20603
func_type_comment_rule(Parser *p)
20604
11.6k
{
20605
11.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20606
0
        _Pypegen_stack_overflow(p);
20607
0
    }
20608
11.6k
    if (p->error_indicator) {
20609
0
        p->level--;
20610
0
        return NULL;
20611
0
    }
20612
11.6k
    Token* _res = NULL;
20613
11.6k
    int _mark = p->mark;
20614
11.6k
    { // NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
20615
11.6k
        if (p->error_indicator) {
20616
0
            p->level--;
20617
0
            return NULL;
20618
0
        }
20619
11.6k
        D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
20620
11.6k
        Token * newline_var;
20621
11.6k
        Token * t;
20622
11.6k
        if (
20623
11.6k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20624
11.6k
            &&
20625
11.6k
            (t = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
20626
11.6k
            &&
20627
11.6k
            _PyPegen_lookahead(1, _tmp_104_rule, p)
20628
11.6k
        )
20629
0
        {
20630
0
            D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
20631
0
            _res = t;
20632
0
            if (_res == NULL && PyErr_Occurred()) {
20633
0
                p->error_indicator = 1;
20634
0
                p->level--;
20635
0
                return NULL;
20636
0
            }
20637
0
            goto done;
20638
0
        }
20639
11.6k
        p->mark = _mark;
20640
11.6k
        D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
20641
11.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
20642
11.6k
    }
20643
11.6k
    if (p->call_invalid_rules) { // invalid_double_type_comments
20644
2.27k
        if (p->error_indicator) {
20645
0
            p->level--;
20646
0
            return NULL;
20647
0
        }
20648
2.27k
        D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_double_type_comments"));
20649
2.27k
        void *invalid_double_type_comments_var;
20650
2.27k
        if (
20651
2.27k
            (invalid_double_type_comments_var = invalid_double_type_comments_rule(p))  // invalid_double_type_comments
20652
2.27k
        )
20653
0
        {
20654
0
            D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_double_type_comments"));
20655
0
            _res = invalid_double_type_comments_var;
20656
0
            goto done;
20657
0
        }
20658
2.27k
        p->mark = _mark;
20659
2.27k
        D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
20660
2.27k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_double_type_comments"));
20661
2.27k
    }
20662
11.6k
    { // TYPE_COMMENT
20663
11.6k
        if (p->error_indicator) {
20664
2
            p->level--;
20665
2
            return NULL;
20666
2
        }
20667
11.6k
        D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT"));
20668
11.6k
        Token * type_comment_var;
20669
11.6k
        if (
20670
11.6k
            (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
20671
11.6k
        )
20672
0
        {
20673
0
            D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT"));
20674
0
            _res = type_comment_var;
20675
0
            goto done;
20676
0
        }
20677
11.6k
        p->mark = _mark;
20678
11.6k
        D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
20679
11.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TYPE_COMMENT"));
20680
11.6k
    }
20681
0
    _res = NULL;
20682
11.6k
  done:
20683
11.6k
    p->level--;
20684
11.6k
    return _res;
20685
11.6k
}
20686
20687
// invalid_arguments:
20688
//     | ((','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs) | kwargs) ',' ','.(starred_expression !'=')+
20689
//     | expression for_if_clauses ',' [args | expression for_if_clauses]
20690
//     | NAME '=' expression for_if_clauses
20691
//     | [(args ',')] NAME '=' &(',' | ')')
20692
//     | args for_if_clauses
20693
//     | args ',' expression for_if_clauses
20694
//     | args ',' args
20695
static void *
20696
invalid_arguments_rule(Parser *p)
20697
7.72k
{
20698
7.72k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20699
0
        _Pypegen_stack_overflow(p);
20700
0
    }
20701
7.72k
    if (p->error_indicator) {
20702
0
        p->level--;
20703
0
        return NULL;
20704
0
    }
20705
7.72k
    void * _res = NULL;
20706
7.72k
    int _mark = p->mark;
20707
7.72k
    { // ((','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs) | kwargs) ',' ','.(starred_expression !'=')+
20708
7.72k
        if (p->error_indicator) {
20709
0
            p->level--;
20710
0
            return NULL;
20711
0
        }
20712
7.72k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs) | kwargs) ',' ','.(starred_expression !'=')+"));
20713
7.72k
        asdl_seq * _gather_107_var;
20714
7.72k
        void *_tmp_105_var;
20715
7.72k
        Token * a;
20716
7.72k
        if (
20717
7.72k
            (_tmp_105_var = _tmp_105_rule(p))  // (','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs) | kwargs
20718
7.72k
            &&
20719
7.72k
            (a = _PyPegen_expect_token(p, 12))  // token=','
20720
7.72k
            &&
20721
7.72k
            (_gather_107_var = _gather_107_rule(p))  // ','.(starred_expression !'=')+
20722
7.72k
        )
20723
415
        {
20724
415
            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 !'=')+"));
20725
415
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "iterable argument unpacking follows keyword argument unpacking" );
20726
415
            if (_res == NULL && PyErr_Occurred()) {
20727
415
                p->error_indicator = 1;
20728
415
                p->level--;
20729
415
                return NULL;
20730
415
            }
20731
0
            goto done;
20732
415
        }
20733
7.31k
        p->mark = _mark;
20734
7.31k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20735
7.31k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs) | kwargs) ',' ','.(starred_expression !'=')+"));
20736
7.31k
    }
20737
0
    { // expression for_if_clauses ',' [args | expression for_if_clauses]
20738
7.31k
        if (p->error_indicator) {
20739
202
            p->level--;
20740
202
            return NULL;
20741
202
        }
20742
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]"));
20743
7.11k
        Token * _literal;
20744
7.11k
        void *_opt_var;
20745
7.11k
        UNUSED(_opt_var); // Silence compiler warnings
20746
7.11k
        expr_ty a;
20747
7.11k
        asdl_comprehension_seq* b;
20748
7.11k
        if (
20749
7.11k
            (a = expression_rule(p))  // expression
20750
7.11k
            &&
20751
7.11k
            (b = for_if_clauses_rule(p))  // for_if_clauses
20752
7.11k
            &&
20753
7.11k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20754
7.11k
            &&
20755
7.11k
            (_opt_var = _tmp_108_rule(p), !p->error_indicator)  // [args | expression for_if_clauses]
20756
7.11k
        )
20757
5
        {
20758
5
            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]"));
20759
5
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , _PyPegen_get_last_comprehension_item ( PyPegen_last_item ( b , comprehension_ty ) ) , "Generator expression must be parenthesized" );
20760
5
            if (_res == NULL && PyErr_Occurred()) {
20761
5
                p->error_indicator = 1;
20762
5
                p->level--;
20763
5
                return NULL;
20764
5
            }
20765
0
            goto done;
20766
5
        }
20767
7.10k
        p->mark = _mark;
20768
7.10k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20769
7.10k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]"));
20770
7.10k
    }
20771
0
    { // NAME '=' expression for_if_clauses
20772
7.10k
        if (p->error_indicator) {
20773
52
            p->level--;
20774
52
            return NULL;
20775
52
        }
20776
7.05k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
20777
7.05k
        expr_ty a;
20778
7.05k
        Token * b;
20779
7.05k
        expr_ty expression_var;
20780
7.05k
        asdl_comprehension_seq* for_if_clauses_var;
20781
7.05k
        if (
20782
7.05k
            (a = _PyPegen_name_token(p))  // NAME
20783
7.05k
            &&
20784
7.05k
            (b = _PyPegen_expect_token(p, 22))  // token='='
20785
7.05k
            &&
20786
7.05k
            (expression_var = expression_rule(p))  // expression
20787
7.05k
            &&
20788
7.05k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
20789
7.05k
        )
20790
0
        {
20791
0
            D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
20792
0
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "invalid syntax. Maybe you meant '==' or ':=' instead of '='?" );
20793
0
            if (_res == NULL && PyErr_Occurred()) {
20794
0
                p->error_indicator = 1;
20795
0
                p->level--;
20796
0
                return NULL;
20797
0
            }
20798
0
            goto done;
20799
0
        }
20800
7.05k
        p->mark = _mark;
20801
7.05k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20802
7.05k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression for_if_clauses"));
20803
7.05k
    }
20804
0
    { // [(args ',')] NAME '=' &(',' | ')')
20805
7.05k
        if (p->error_indicator) {
20806
0
            p->level--;
20807
0
            return NULL;
20808
0
        }
20809
7.05k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "[(args ',')] NAME '=' &(',' | ')')"));
20810
7.05k
        void *_opt_var;
20811
7.05k
        UNUSED(_opt_var); // Silence compiler warnings
20812
7.05k
        expr_ty a;
20813
7.05k
        Token * b;
20814
7.05k
        if (
20815
7.05k
            (_opt_var = _tmp_109_rule(p), !p->error_indicator)  // [(args ',')]
20816
7.05k
            &&
20817
7.05k
            (a = _PyPegen_name_token(p))  // NAME
20818
7.05k
            &&
20819
7.05k
            (b = _PyPegen_expect_token(p, 22))  // token='='
20820
7.05k
            &&
20821
7.05k
            _PyPegen_lookahead(1, _tmp_110_rule, p)
20822
7.05k
        )
20823
15
        {
20824
15
            D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "[(args ',')] NAME '=' &(',' | ')')"));
20825
15
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "expected argument value expression" );
20826
15
            if (_res == NULL && PyErr_Occurred()) {
20827
15
                p->error_indicator = 1;
20828
15
                p->level--;
20829
15
                return NULL;
20830
15
            }
20831
0
            goto done;
20832
15
        }
20833
7.03k
        p->mark = _mark;
20834
7.03k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20835
7.03k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "[(args ',')] NAME '=' &(',' | ')')"));
20836
7.03k
    }
20837
0
    { // args for_if_clauses
20838
7.03k
        if (p->error_indicator) {
20839
0
            p->level--;
20840
0
            return NULL;
20841
0
        }
20842
7.03k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args for_if_clauses"));
20843
7.03k
        expr_ty a;
20844
7.03k
        asdl_comprehension_seq* b;
20845
7.03k
        if (
20846
7.03k
            (a = args_rule(p))  // args
20847
7.03k
            &&
20848
7.03k
            (b = for_if_clauses_rule(p))  // for_if_clauses
20849
7.03k
        )
20850
294
        {
20851
294
            D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args for_if_clauses"));
20852
294
            _res = _PyPegen_nonparen_genexp_in_call ( p , a , b );
20853
294
            if (_res == NULL && PyErr_Occurred()) {
20854
3
                p->error_indicator = 1;
20855
3
                p->level--;
20856
3
                return NULL;
20857
3
            }
20858
291
            goto done;
20859
294
        }
20860
6.74k
        p->mark = _mark;
20861
6.74k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20862
6.74k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args for_if_clauses"));
20863
6.74k
    }
20864
0
    { // args ',' expression for_if_clauses
20865
6.74k
        if (p->error_indicator) {
20866
101
            p->level--;
20867
101
            return NULL;
20868
101
        }
20869
6.64k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' expression for_if_clauses"));
20870
6.64k
        Token * _literal;
20871
6.64k
        expr_ty a;
20872
6.64k
        expr_ty args_var;
20873
6.64k
        asdl_comprehension_seq* b;
20874
6.64k
        if (
20875
6.64k
            (args_var = args_rule(p))  // args
20876
6.64k
            &&
20877
6.64k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20878
6.64k
            &&
20879
6.64k
            (a = expression_rule(p))  // expression
20880
6.64k
            &&
20881
6.64k
            (b = for_if_clauses_rule(p))  // for_if_clauses
20882
6.64k
        )
20883
1
        {
20884
1
            D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' expression for_if_clauses"));
20885
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , _PyPegen_get_last_comprehension_item ( PyPegen_last_item ( b , comprehension_ty ) ) , "Generator expression must be parenthesized" );
20886
1
            if (_res == NULL && PyErr_Occurred()) {
20887
1
                p->error_indicator = 1;
20888
1
                p->level--;
20889
1
                return NULL;
20890
1
            }
20891
0
            goto done;
20892
1
        }
20893
6.64k
        p->mark = _mark;
20894
6.64k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20895
6.64k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' expression for_if_clauses"));
20896
6.64k
    }
20897
0
    { // args ',' args
20898
6.64k
        if (p->error_indicator) {
20899
87
            p->level--;
20900
87
            return NULL;
20901
87
        }
20902
6.55k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' args"));
20903
6.55k
        Token * _literal;
20904
6.55k
        expr_ty a;
20905
6.55k
        expr_ty args_var;
20906
6.55k
        if (
20907
6.55k
            (a = args_rule(p))  // args
20908
6.55k
            &&
20909
6.55k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20910
6.55k
            &&
20911
6.55k
            (args_var = args_rule(p))  // args
20912
6.55k
        )
20913
35
        {
20914
35
            D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' args"));
20915
35
            _res = _PyPegen_arguments_parsing_error ( p , a );
20916
35
            if (_res == NULL && PyErr_Occurred()) {
20917
35
                p->error_indicator = 1;
20918
35
                p->level--;
20919
35
                return NULL;
20920
35
            }
20921
0
            goto done;
20922
35
        }
20923
6.52k
        p->mark = _mark;
20924
6.52k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20925
6.52k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' args"));
20926
6.52k
    }
20927
0
    _res = NULL;
20928
6.81k
  done:
20929
6.81k
    p->level--;
20930
6.81k
    return _res;
20931
6.52k
}
20932
20933
// invalid_kwarg:
20934
//     | ('True' | 'False' | 'None') '='
20935
//     | NAME '=' expression for_if_clauses
20936
//     | !(NAME '=') expression '='
20937
//     | '**' expression '=' expression
20938
static void *
20939
invalid_kwarg_rule(Parser *p)
20940
115k
{
20941
115k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20942
0
        _Pypegen_stack_overflow(p);
20943
0
    }
20944
115k
    if (p->error_indicator) {
20945
0
        p->level--;
20946
0
        return NULL;
20947
0
    }
20948
115k
    void * _res = NULL;
20949
115k
    int _mark = p->mark;
20950
115k
    { // ('True' | 'False' | 'None') '='
20951
115k
        if (p->error_indicator) {
20952
0
            p->level--;
20953
0
            return NULL;
20954
0
        }
20955
115k
        D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('True' | 'False' | 'None') '='"));
20956
115k
        Token* a;
20957
115k
        Token * b;
20958
115k
        if (
20959
115k
            (a = (Token*)_tmp_111_rule(p))  // 'True' | 'False' | 'None'
20960
115k
            &&
20961
115k
            (b = _PyPegen_expect_token(p, 22))  // token='='
20962
115k
        )
20963
4
        {
20964
4
            D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('True' | 'False' | 'None') '='"));
20965
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "cannot assign to %s" , PyBytes_AS_STRING ( a -> bytes ) );
20966
4
            if (_res == NULL && PyErr_Occurred()) {
20967
4
                p->error_indicator = 1;
20968
4
                p->level--;
20969
4
                return NULL;
20970
4
            }
20971
0
            goto done;
20972
4
        }
20973
115k
        p->mark = _mark;
20974
115k
        D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
20975
115k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('True' | 'False' | 'None') '='"));
20976
115k
    }
20977
0
    { // NAME '=' expression for_if_clauses
20978
115k
        if (p->error_indicator) {
20979
3
            p->level--;
20980
3
            return NULL;
20981
3
        }
20982
115k
        D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
20983
115k
        expr_ty a;
20984
115k
        Token * b;
20985
115k
        expr_ty expression_var;
20986
115k
        asdl_comprehension_seq* for_if_clauses_var;
20987
115k
        if (
20988
115k
            (a = _PyPegen_name_token(p))  // NAME
20989
115k
            &&
20990
115k
            (b = _PyPegen_expect_token(p, 22))  // token='='
20991
115k
            &&
20992
115k
            (expression_var = expression_rule(p))  // expression
20993
115k
            &&
20994
115k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
20995
115k
        )
20996
1
        {
20997
1
            D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
20998
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "invalid syntax. Maybe you meant '==' or ':=' instead of '='?" );
20999
1
            if (_res == NULL && PyErr_Occurred()) {
21000
1
                p->error_indicator = 1;
21001
1
                p->level--;
21002
1
                return NULL;
21003
1
            }
21004
0
            goto done;
21005
1
        }
21006
115k
        p->mark = _mark;
21007
115k
        D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
21008
115k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression for_if_clauses"));
21009
115k
    }
21010
0
    { // !(NAME '=') expression '='
21011
115k
        if (p->error_indicator) {
21012
234
            p->level--;
21013
234
            return NULL;
21014
234
        }
21015
115k
        D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!(NAME '=') expression '='"));
21016
115k
        expr_ty a;
21017
115k
        Token * b;
21018
115k
        if (
21019
115k
            _PyPegen_lookahead(0, _tmp_112_rule, p)
21020
115k
            &&
21021
115k
            (a = expression_rule(p))  // expression
21022
115k
            &&
21023
115k
            (b = _PyPegen_expect_token(p, 22))  // token='='
21024
115k
        )
21025
6
        {
21026
6
            D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!(NAME '=') expression '='"));
21027
6
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "expression cannot contain assignment, perhaps you meant \"==\"?" );
21028
6
            if (_res == NULL && PyErr_Occurred()) {
21029
6
                p->error_indicator = 1;
21030
6
                p->level--;
21031
6
                return NULL;
21032
6
            }
21033
0
            goto done;
21034
6
        }
21035
115k
        p->mark = _mark;
21036
115k
        D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
21037
115k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(NAME '=') expression '='"));
21038
115k
    }
21039
0
    { // '**' expression '=' expression
21040
115k
        if (p->error_indicator) {
21041
465
            p->level--;
21042
465
            return NULL;
21043
465
        }
21044
114k
        D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' expression '=' expression"));
21045
114k
        Token * _literal;
21046
114k
        Token * a;
21047
114k
        expr_ty b;
21048
114k
        expr_ty expression_var;
21049
114k
        if (
21050
114k
            (a = _PyPegen_expect_token(p, 35))  // token='**'
21051
114k
            &&
21052
114k
            (expression_var = expression_rule(p))  // expression
21053
114k
            &&
21054
114k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
21055
114k
            &&
21056
114k
            (b = expression_rule(p))  // expression
21057
114k
        )
21058
1
        {
21059
1
            D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' expression '=' expression"));
21060
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "cannot assign to keyword argument unpacking" );
21061
1
            if (_res == NULL && PyErr_Occurred()) {
21062
1
                p->error_indicator = 1;
21063
1
                p->level--;
21064
1
                return NULL;
21065
1
            }
21066
0
            goto done;
21067
1
        }
21068
114k
        p->mark = _mark;
21069
114k
        D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
21070
114k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression '=' expression"));
21071
114k
    }
21072
0
    _res = NULL;
21073
114k
  done:
21074
114k
    p->level--;
21075
114k
    return _res;
21076
114k
}
21077
21078
// expression_without_invalid:
21079
//     | disjunction 'if' disjunction 'else' expression
21080
//     | disjunction
21081
//     | lambdef
21082
static expr_ty
21083
expression_without_invalid_rule(Parser *p)
21084
94.5k
{
21085
94.5k
    int _prev_call_invalid = p->call_invalid_rules;
21086
94.5k
    p->call_invalid_rules = 0;
21087
94.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21088
1
        _Pypegen_stack_overflow(p);
21089
1
    }
21090
94.5k
    if (p->error_indicator) {
21091
21
        p->call_invalid_rules = _prev_call_invalid;
21092
21
        p->level--;
21093
21
        return NULL;
21094
21
    }
21095
94.5k
    expr_ty _res = NULL;
21096
94.5k
    int _mark = p->mark;
21097
94.5k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
21098
0
        p->error_indicator = 1;
21099
0
        p->call_invalid_rules = _prev_call_invalid;
21100
0
        p->level--;
21101
0
        return NULL;
21102
0
    }
21103
94.5k
    int _start_lineno = p->tokens[_mark]->lineno;
21104
94.5k
    UNUSED(_start_lineno); // Only used by EXTRA macro
21105
94.5k
    int _start_col_offset = p->tokens[_mark]->col_offset;
21106
94.5k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
21107
94.5k
    { // disjunction 'if' disjunction 'else' expression
21108
94.5k
        if (p->error_indicator) {
21109
0
            p->call_invalid_rules = _prev_call_invalid;
21110
0
            p->level--;
21111
0
            return NULL;
21112
0
        }
21113
94.5k
        D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
21114
94.5k
        Token * _keyword;
21115
94.5k
        Token * _keyword_1;
21116
94.5k
        expr_ty a;
21117
94.5k
        expr_ty b;
21118
94.5k
        expr_ty c;
21119
94.5k
        if (
21120
94.5k
            (a = disjunction_rule(p))  // disjunction
21121
94.5k
            &&
21122
94.5k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
21123
94.5k
            &&
21124
94.5k
            (b = disjunction_rule(p))  // disjunction
21125
94.5k
            &&
21126
94.5k
            (_keyword_1 = _PyPegen_expect_token(p, 691))  // token='else'
21127
94.5k
            &&
21128
94.5k
            (c = expression_rule(p))  // expression
21129
94.5k
        )
21130
67
        {
21131
67
            D(fprintf(stderr, "%*c+ expression_without_invalid[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
21132
67
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
21133
67
            if (_token == NULL) {
21134
0
                p->call_invalid_rules = _prev_call_invalid;
21135
0
                p->level--;
21136
0
                return NULL;
21137
0
            }
21138
67
            int _end_lineno = _token->end_lineno;
21139
67
            UNUSED(_end_lineno); // Only used by EXTRA macro
21140
67
            int _end_col_offset = _token->end_col_offset;
21141
67
            UNUSED(_end_col_offset); // Only used by EXTRA macro
21142
67
            _res = _PyAST_IfExp ( b , a , c , EXTRA );
21143
67
            if (_res == NULL && PyErr_Occurred()) {
21144
0
                p->error_indicator = 1;
21145
0
                p->call_invalid_rules = _prev_call_invalid;
21146
0
                p->level--;
21147
0
                return NULL;
21148
0
            }
21149
67
            goto done;
21150
67
        }
21151
94.4k
        p->mark = _mark;
21152
94.4k
        D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
21153
94.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
21154
94.4k
    }
21155
0
    { // disjunction
21156
94.4k
        if (p->error_indicator) {
21157
361
            p->call_invalid_rules = _prev_call_invalid;
21158
361
            p->level--;
21159
361
            return NULL;
21160
361
        }
21161
94.1k
        D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction"));
21162
94.1k
        expr_ty disjunction_var;
21163
94.1k
        if (
21164
94.1k
            (disjunction_var = disjunction_rule(p))  // disjunction
21165
94.1k
        )
21166
6.62k
        {
21167
6.62k
            D(fprintf(stderr, "%*c+ expression_without_invalid[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction"));
21168
6.62k
            _res = disjunction_var;
21169
6.62k
            goto done;
21170
6.62k
        }
21171
87.5k
        p->mark = _mark;
21172
87.5k
        D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
21173
87.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction"));
21174
87.5k
    }
21175
0
    { // lambdef
21176
87.5k
        if (p->error_indicator) {
21177
0
            p->call_invalid_rules = _prev_call_invalid;
21178
0
            p->level--;
21179
0
            return NULL;
21180
0
        }
21181
87.5k
        D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambdef"));
21182
87.5k
        expr_ty lambdef_var;
21183
87.5k
        if (
21184
87.5k
            (lambdef_var = lambdef_rule(p))  // lambdef
21185
87.5k
        )
21186
77
        {
21187
77
            D(fprintf(stderr, "%*c+ expression_without_invalid[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambdef"));
21188
77
            _res = lambdef_var;
21189
77
            goto done;
21190
77
        }
21191
87.4k
        p->mark = _mark;
21192
87.4k
        D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
21193
87.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambdef"));
21194
87.4k
    }
21195
0
    _res = NULL;
21196
94.2k
  done:
21197
94.2k
    p->call_invalid_rules = _prev_call_invalid;
21198
94.2k
    p->level--;
21199
94.2k
    return _res;
21200
87.4k
}
21201
21202
// invalid_legacy_expression: NAME !'(' star_expressions
21203
static void *
21204
invalid_legacy_expression_rule(Parser *p)
21205
194k
{
21206
194k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21207
0
        _Pypegen_stack_overflow(p);
21208
0
    }
21209
194k
    if (p->error_indicator) {
21210
0
        p->level--;
21211
0
        return NULL;
21212
0
    }
21213
194k
    void * _res = NULL;
21214
194k
    int _mark = p->mark;
21215
194k
    { // NAME !'(' star_expressions
21216
194k
        if (p->error_indicator) {
21217
0
            p->level--;
21218
0
            return NULL;
21219
0
        }
21220
194k
        D(fprintf(stderr, "%*c> invalid_legacy_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME !'(' star_expressions"));
21221
194k
        expr_ty a;
21222
194k
        expr_ty b;
21223
194k
        if (
21224
194k
            (a = _PyPegen_name_token(p))  // NAME
21225
194k
            &&
21226
194k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 7)  // token='('
21227
194k
            &&
21228
194k
            (b = star_expressions_rule(p))  // star_expressions
21229
194k
        )
21230
3.65k
        {
21231
3.65k
            D(fprintf(stderr, "%*c+ invalid_legacy_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME !'(' star_expressions"));
21232
3.65k
            _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;
21233
3.65k
            if (_res == NULL && PyErr_Occurred()) {
21234
20
                p->error_indicator = 1;
21235
20
                p->level--;
21236
20
                return NULL;
21237
20
            }
21238
3.63k
            goto done;
21239
3.65k
        }
21240
191k
        p->mark = _mark;
21241
191k
        D(fprintf(stderr, "%*c%s invalid_legacy_expression[%d-%d]: %s failed!\n", p->level, ' ',
21242
191k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME !'(' star_expressions"));
21243
191k
    }
21244
0
    _res = NULL;
21245
194k
  done:
21246
194k
    p->level--;
21247
194k
    return _res;
21248
191k
}
21249
21250
// invalid_type_param: '*' NAME ':' expression | '**' NAME ':' expression
21251
static void *
21252
invalid_type_param_rule(Parser *p)
21253
900
{
21254
900
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21255
0
        _Pypegen_stack_overflow(p);
21256
0
    }
21257
900
    if (p->error_indicator) {
21258
0
        p->level--;
21259
0
        return NULL;
21260
0
    }
21261
900
    void * _res = NULL;
21262
900
    int _mark = p->mark;
21263
900
    { // '*' NAME ':' expression
21264
900
        if (p->error_indicator) {
21265
0
            p->level--;
21266
0
            return NULL;
21267
0
        }
21268
900
        D(fprintf(stderr, "%*c> invalid_type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' NAME ':' expression"));
21269
900
        Token * _literal;
21270
900
        expr_ty a;
21271
900
        Token * colon;
21272
900
        expr_ty e;
21273
900
        if (
21274
900
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
21275
900
            &&
21276
900
            (a = _PyPegen_name_token(p))  // NAME
21277
900
            &&
21278
900
            (colon = _PyPegen_expect_token(p, 11))  // token=':'
21279
900
            &&
21280
900
            (e = expression_rule(p))  // expression
21281
900
        )
21282
1
        {
21283
1
            D(fprintf(stderr, "%*c+ invalid_type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' NAME ':' expression"));
21284
1
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( colon , e -> kind == Tuple_kind ? "cannot use constraints with TypeVarTuple" : "cannot use bound with TypeVarTuple" );
21285
1
            if (_res == NULL && PyErr_Occurred()) {
21286
1
                p->error_indicator = 1;
21287
1
                p->level--;
21288
1
                return NULL;
21289
1
            }
21290
0
            goto done;
21291
1
        }
21292
899
        p->mark = _mark;
21293
899
        D(fprintf(stderr, "%*c%s invalid_type_param[%d-%d]: %s failed!\n", p->level, ' ',
21294
899
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' NAME ':' expression"));
21295
899
    }
21296
0
    { // '**' NAME ':' expression
21297
899
        if (p->error_indicator) {
21298
1
            p->level--;
21299
1
            return NULL;
21300
1
        }
21301
898
        D(fprintf(stderr, "%*c> invalid_type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' NAME ':' expression"));
21302
898
        Token * _literal;
21303
898
        expr_ty a;
21304
898
        Token * colon;
21305
898
        expr_ty e;
21306
898
        if (
21307
898
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
21308
898
            &&
21309
898
            (a = _PyPegen_name_token(p))  // NAME
21310
898
            &&
21311
898
            (colon = _PyPegen_expect_token(p, 11))  // token=':'
21312
898
            &&
21313
898
            (e = expression_rule(p))  // expression
21314
898
        )
21315
1
        {
21316
1
            D(fprintf(stderr, "%*c+ invalid_type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' NAME ':' expression"));
21317
1
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( colon , e -> kind == Tuple_kind ? "cannot use constraints with ParamSpec" : "cannot use bound with ParamSpec" );
21318
1
            if (_res == NULL && PyErr_Occurred()) {
21319
1
                p->error_indicator = 1;
21320
1
                p->level--;
21321
1
                return NULL;
21322
1
            }
21323
0
            goto done;
21324
1
        }
21325
897
        p->mark = _mark;
21326
897
        D(fprintf(stderr, "%*c%s invalid_type_param[%d-%d]: %s failed!\n", p->level, ' ',
21327
897
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' NAME ':' expression"));
21328
897
    }
21329
0
    _res = NULL;
21330
897
  done:
21331
897
    p->level--;
21332
897
    return _res;
21333
897
}
21334
21335
// invalid_expression:
21336
//     | STRING ((!STRING expression_without_invalid))+ STRING
21337
//     | !(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid
21338
//     | disjunction 'if' disjunction !('else' | ':')
21339
//     | disjunction 'if' disjunction 'else' !expression
21340
//     | (pass_stmt | break_stmt | continue_stmt) 'if' disjunction 'else' simple_stmt
21341
//     | 'lambda' lambda_params? ':' &FSTRING_MIDDLE
21342
//     | 'lambda' lambda_params? ':' &TSTRING_MIDDLE
21343
static void *
21344
invalid_expression_rule(Parser *p)
21345
224k
{
21346
224k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21347
1
        _Pypegen_stack_overflow(p);
21348
1
    }
21349
224k
    if (p->error_indicator) {
21350
1
        p->level--;
21351
1
        return NULL;
21352
1
    }
21353
224k
    void * _res = NULL;
21354
224k
    int _mark = p->mark;
21355
224k
    { // STRING ((!STRING expression_without_invalid))+ STRING
21356
224k
        if (p->error_indicator) {
21357
0
            p->level--;
21358
0
            return NULL;
21359
0
        }
21360
224k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING ((!STRING expression_without_invalid))+ STRING"));
21361
224k
        asdl_seq * a;
21362
224k
        expr_ty string_var;
21363
224k
        expr_ty string_var_1;
21364
224k
        if (
21365
224k
            (string_var = _PyPegen_string_token(p))  // STRING
21366
224k
            &&
21367
224k
            (a = _loop1_113_rule(p))  // ((!STRING expression_without_invalid))+
21368
224k
            &&
21369
224k
            (string_var_1 = _PyPegen_string_token(p))  // STRING
21370
224k
        )
21371
12
        {
21372
12
            D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING ((!STRING expression_without_invalid))+ STRING"));
21373
12
            _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?" );
21374
12
            if (_res == NULL && PyErr_Occurred()) {
21375
12
                p->error_indicator = 1;
21376
12
                p->level--;
21377
12
                return NULL;
21378
12
            }
21379
0
            goto done;
21380
12
        }
21381
224k
        p->mark = _mark;
21382
224k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21383
224k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING ((!STRING expression_without_invalid))+ STRING"));
21384
224k
    }
21385
0
    { // !(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid
21386
224k
        if (p->error_indicator) {
21387
104
            p->level--;
21388
104
            return NULL;
21389
104
        }
21390
224k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid"));
21391
224k
        expr_ty a;
21392
224k
        expr_ty b;
21393
224k
        if (
21394
224k
            _PyPegen_lookahead(0, _tmp_114_rule, p)
21395
224k
            &&
21396
224k
            (a = disjunction_rule(p))  // disjunction
21397
224k
            &&
21398
224k
            (b = expression_without_invalid_rule(p))  // expression_without_invalid
21399
224k
        )
21400
4.81k
        {
21401
4.81k
            D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid"));
21402
4.81k
            _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?" );
21403
4.81k
            if (_res == NULL && PyErr_Occurred()) {
21404
123
                p->error_indicator = 1;
21405
123
                p->level--;
21406
123
                return NULL;
21407
123
            }
21408
4.69k
            goto done;
21409
4.81k
        }
21410
220k
        p->mark = _mark;
21411
220k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21412
220k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid"));
21413
220k
    }
21414
0
    { // disjunction 'if' disjunction !('else' | ':')
21415
220k
        if (p->error_indicator) {
21416
26.8k
            p->level--;
21417
26.8k
            return NULL;
21418
26.8k
        }
21419
193k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')"));
21420
193k
        Token * _keyword;
21421
193k
        expr_ty a;
21422
193k
        expr_ty b;
21423
193k
        if (
21424
193k
            (a = disjunction_rule(p))  // disjunction
21425
193k
            &&
21426
193k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
21427
193k
            &&
21428
193k
            (b = disjunction_rule(p))  // disjunction
21429
193k
            &&
21430
193k
            _PyPegen_lookahead(0, _tmp_115_rule, p)
21431
193k
        )
21432
21
        {
21433
21
            D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')"));
21434
21
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "expected 'else' after 'if' expression" );
21435
21
            if (_res == NULL && PyErr_Occurred()) {
21436
21
                p->error_indicator = 1;
21437
21
                p->level--;
21438
21
                return NULL;
21439
21
            }
21440
0
            goto done;
21441
21
        }
21442
193k
        p->mark = _mark;
21443
193k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21444
193k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')"));
21445
193k
    }
21446
0
    { // disjunction 'if' disjunction 'else' !expression
21447
193k
        if (p->error_indicator) {
21448
660
            p->level--;
21449
660
            return NULL;
21450
660
        }
21451
192k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' !expression"));
21452
192k
        Token * _keyword;
21453
192k
        Token * _keyword_1;
21454
192k
        expr_ty a;
21455
192k
        expr_ty b;
21456
192k
        if (
21457
192k
            (a = disjunction_rule(p))  // disjunction
21458
192k
            &&
21459
192k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
21460
192k
            &&
21461
192k
            (b = disjunction_rule(p))  // disjunction
21462
192k
            &&
21463
192k
            (_keyword_1 = _PyPegen_expect_token(p, 691))  // token='else'
21464
192k
            &&
21465
192k
            _PyPegen_lookahead_for_expr(0, expression_rule, p)
21466
192k
        )
21467
233
        {
21468
233
            D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' !expression"));
21469
233
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "expected expression after 'else', but statement is given" );
21470
233
            if (_res == NULL && PyErr_Occurred()) {
21471
233
                p->error_indicator = 1;
21472
233
                p->level--;
21473
233
                return NULL;
21474
233
            }
21475
0
            goto done;
21476
233
        }
21477
192k
        p->mark = _mark;
21478
192k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21479
192k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' !expression"));
21480
192k
    }
21481
0
    { // (pass_stmt | break_stmt | continue_stmt) 'if' disjunction 'else' simple_stmt
21482
192k
        if (p->error_indicator) {
21483
0
            p->level--;
21484
0
            return NULL;
21485
0
        }
21486
192k
        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"));
21487
192k
        Token * _keyword;
21488
192k
        Token * _keyword_1;
21489
192k
        stmt_ty a;
21490
192k
        expr_ty b;
21491
192k
        stmt_ty c;
21492
192k
        if (
21493
192k
            (a = (stmt_ty)_tmp_116_rule(p))  // pass_stmt | break_stmt | continue_stmt
21494
192k
            &&
21495
192k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
21496
192k
            &&
21497
192k
            (b = disjunction_rule(p))  // disjunction
21498
192k
            &&
21499
192k
            (_keyword_1 = _PyPegen_expect_token(p, 691))  // token='else'
21500
192k
            &&
21501
192k
            (c = simple_stmt_rule(p))  // simple_stmt
21502
192k
        )
21503
13
        {
21504
13
            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"));
21505
13
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expected expression before 'if', but statement is given" );
21506
13
            if (_res == NULL && PyErr_Occurred()) {
21507
13
                p->error_indicator = 1;
21508
13
                p->level--;
21509
13
                return NULL;
21510
13
            }
21511
0
            goto done;
21512
13
        }
21513
192k
        p->mark = _mark;
21514
192k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21515
192k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(pass_stmt | break_stmt | continue_stmt) 'if' disjunction 'else' simple_stmt"));
21516
192k
    }
21517
0
    { // 'lambda' lambda_params? ':' &FSTRING_MIDDLE
21518
192k
        if (p->error_indicator) {
21519
1.40k
            p->level--;
21520
1.40k
            return NULL;
21521
1.40k
        }
21522
190k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' &FSTRING_MIDDLE"));
21523
190k
        void *_opt_var;
21524
190k
        UNUSED(_opt_var); // Silence compiler warnings
21525
190k
        Token * a;
21526
190k
        Token * b;
21527
190k
        if (
21528
190k
            (a = _PyPegen_expect_token(p, 622))  // token='lambda'
21529
190k
            &&
21530
190k
            (_opt_var = lambda_params_rule(p), !p->error_indicator)  // lambda_params?
21531
190k
            &&
21532
190k
            (b = _PyPegen_expect_token(p, 11))  // token=':'
21533
190k
            &&
21534
190k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, FSTRING_MIDDLE)  // token=FSTRING_MIDDLE
21535
190k
        )
21536
1
        {
21537
1
            D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' &FSTRING_MIDDLE"));
21538
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "f-string: lambda expressions are not allowed without parentheses" );
21539
1
            if (_res == NULL && PyErr_Occurred()) {
21540
1
                p->error_indicator = 1;
21541
1
                p->level--;
21542
1
                return NULL;
21543
1
            }
21544
0
            goto done;
21545
1
        }
21546
190k
        p->mark = _mark;
21547
190k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21548
190k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'lambda' lambda_params? ':' &FSTRING_MIDDLE"));
21549
190k
    }
21550
0
    { // 'lambda' lambda_params? ':' &TSTRING_MIDDLE
21551
190k
        if (p->error_indicator) {
21552
730
            p->level--;
21553
730
            return NULL;
21554
730
        }
21555
190k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' &TSTRING_MIDDLE"));
21556
190k
        void *_opt_var;
21557
190k
        UNUSED(_opt_var); // Silence compiler warnings
21558
190k
        Token * a;
21559
190k
        Token * b;
21560
190k
        if (
21561
190k
            (a = _PyPegen_expect_token(p, 622))  // token='lambda'
21562
190k
            &&
21563
190k
            (_opt_var = lambda_params_rule(p), !p->error_indicator)  // lambda_params?
21564
190k
            &&
21565
190k
            (b = _PyPegen_expect_token(p, 11))  // token=':'
21566
190k
            &&
21567
190k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, TSTRING_MIDDLE)  // token=TSTRING_MIDDLE
21568
190k
        )
21569
8
        {
21570
8
            D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' &TSTRING_MIDDLE"));
21571
8
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "t-string: lambda expressions are not allowed without parentheses" );
21572
8
            if (_res == NULL && PyErr_Occurred()) {
21573
8
                p->error_indicator = 1;
21574
8
                p->level--;
21575
8
                return NULL;
21576
8
            }
21577
0
            goto done;
21578
8
        }
21579
190k
        p->mark = _mark;
21580
190k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21581
190k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'lambda' lambda_params? ':' &TSTRING_MIDDLE"));
21582
190k
    }
21583
0
    _res = NULL;
21584
194k
  done:
21585
194k
    p->level--;
21586
194k
    return _res;
21587
190k
}
21588
21589
// invalid_named_expression:
21590
//     | expression ':=' expression
21591
//     | NAME '=' bitwise_or !('=' | ':=')
21592
//     | !(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')
21593
static void *
21594
invalid_named_expression_rule(Parser *p)
21595
259k
{
21596
259k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21597
0
        _Pypegen_stack_overflow(p);
21598
0
    }
21599
259k
    if (p->error_indicator) {
21600
0
        p->level--;
21601
0
        return NULL;
21602
0
    }
21603
259k
    void * _res = NULL;
21604
259k
    if (_PyPegen_is_memoized(p, invalid_named_expression_type, &_res)) {
21605
157k
        p->level--;
21606
157k
        return _res;
21607
157k
    }
21608
101k
    int _mark = p->mark;
21609
101k
    { // expression ':=' expression
21610
101k
        if (p->error_indicator) {
21611
0
            p->level--;
21612
0
            return NULL;
21613
0
        }
21614
101k
        D(fprintf(stderr, "%*c> invalid_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':=' expression"));
21615
101k
        Token * _literal;
21616
101k
        expr_ty a;
21617
101k
        expr_ty expression_var;
21618
101k
        if (
21619
101k
            (a = expression_rule(p))  // expression
21620
101k
            &&
21621
101k
            (_literal = _PyPegen_expect_token(p, 53))  // token=':='
21622
101k
            &&
21623
101k
            (expression_var = expression_rule(p))  // expression
21624
101k
        )
21625
3
        {
21626
3
            D(fprintf(stderr, "%*c+ invalid_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':=' expression"));
21627
3
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use assignment expressions with %s" , _PyPegen_get_expr_name ( a ) );
21628
3
            if (_res == NULL && PyErr_Occurred()) {
21629
3
                p->error_indicator = 1;
21630
3
                p->level--;
21631
3
                return NULL;
21632
3
            }
21633
0
            goto done;
21634
3
        }
21635
101k
        p->mark = _mark;
21636
101k
        D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
21637
101k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':=' expression"));
21638
101k
    }
21639
0
    { // NAME '=' bitwise_or !('=' | ':=')
21640
101k
        if (p->error_indicator) {
21641
14.9k
            p->level--;
21642
14.9k
            return NULL;
21643
14.9k
        }
21644
86.7k
        D(fprintf(stderr, "%*c> invalid_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
21645
86.7k
        Token * _literal;
21646
86.7k
        expr_ty a;
21647
86.7k
        expr_ty b;
21648
86.7k
        if (
21649
86.7k
            (a = _PyPegen_name_token(p))  // NAME
21650
86.7k
            &&
21651
86.7k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
21652
86.7k
            &&
21653
86.7k
            (b = bitwise_or_rule(p))  // bitwise_or
21654
86.7k
            &&
21655
86.7k
            _PyPegen_lookahead(0, _tmp_117_rule, p)
21656
86.7k
        )
21657
5
        {
21658
5
            D(fprintf(stderr, "%*c+ invalid_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
21659
5
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "invalid syntax. Maybe you meant '==' or ':=' instead of '='?" );
21660
5
            if (_res == NULL && PyErr_Occurred()) {
21661
5
                p->error_indicator = 1;
21662
5
                p->level--;
21663
5
                return NULL;
21664
5
            }
21665
0
            goto done;
21666
5
        }
21667
86.7k
        p->mark = _mark;
21668
86.7k
        D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
21669
86.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
21670
86.7k
    }
21671
0
    { // !(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')
21672
86.7k
        if (p->error_indicator) {
21673
264
            p->level--;
21674
264
            return NULL;
21675
264
        }
21676
86.4k
        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 !('=' | ':=')"));
21677
86.4k
        expr_ty a;
21678
86.4k
        Token * b;
21679
86.4k
        expr_ty bitwise_or_var;
21680
86.4k
        if (
21681
86.4k
            _PyPegen_lookahead(0, _tmp_118_rule, p)
21682
86.4k
            &&
21683
86.4k
            (a = bitwise_or_rule(p))  // bitwise_or
21684
86.4k
            &&
21685
86.4k
            (b = _PyPegen_expect_token(p, 22))  // token='='
21686
86.4k
            &&
21687
86.4k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
21688
86.4k
            &&
21689
86.4k
            _PyPegen_lookahead(0, _tmp_117_rule, p)
21690
86.4k
        )
21691
12
        {
21692
12
            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 !('=' | ':=')"));
21693
12
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot assign to %s here. Maybe you meant '==' instead of '='?" , _PyPegen_get_expr_name ( a ) );
21694
12
            if (_res == NULL && PyErr_Occurred()) {
21695
12
                p->error_indicator = 1;
21696
12
                p->level--;
21697
12
                return NULL;
21698
12
            }
21699
0
            goto done;
21700
12
        }
21701
86.4k
        p->mark = _mark;
21702
86.4k
        D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
21703
86.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')"));
21704
86.4k
    }
21705
0
    _res = NULL;
21706
86.4k
  done:
21707
86.4k
    _PyPegen_insert_memo(p, _mark, invalid_named_expression_type, _res);
21708
86.4k
    p->level--;
21709
86.4k
    return _res;
21710
86.4k
}
21711
21712
// invalid_assignment:
21713
//     | invalid_ann_assign_target ':' expression
21714
//     | star_named_expression ',' star_named_expressions* ':' expression
21715
//     | expression ':' expression
21716
//     | ((star_targets '='))* star_expressions '='
21717
//     | ((star_targets '='))* yield_expr '='
21718
//     | star_expressions augassign annotated_rhs
21719
static void *
21720
invalid_assignment_rule(Parser *p)
21721
39.5k
{
21722
39.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21723
0
        _Pypegen_stack_overflow(p);
21724
0
    }
21725
39.5k
    if (p->error_indicator) {
21726
0
        p->level--;
21727
0
        return NULL;
21728
0
    }
21729
39.5k
    void * _res = NULL;
21730
39.5k
    int _mark = p->mark;
21731
39.5k
    { // invalid_ann_assign_target ':' expression
21732
39.5k
        if (p->error_indicator) {
21733
0
            p->level--;
21734
0
            return NULL;
21735
0
        }
21736
39.5k
        D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_ann_assign_target ':' expression"));
21737
39.5k
        Token * _literal;
21738
39.5k
        expr_ty a;
21739
39.5k
        expr_ty expression_var;
21740
39.5k
        if (
21741
39.5k
            (a = invalid_ann_assign_target_rule(p))  // invalid_ann_assign_target
21742
39.5k
            &&
21743
39.5k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21744
39.5k
            &&
21745
39.5k
            (expression_var = expression_rule(p))  // expression
21746
39.5k
        )
21747
3
        {
21748
3
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_ann_assign_target ':' expression"));
21749
3
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not %s) can be annotated" , _PyPegen_get_expr_name ( a ) );
21750
3
            if (_res == NULL && PyErr_Occurred()) {
21751
3
                p->error_indicator = 1;
21752
3
                p->level--;
21753
3
                return NULL;
21754
3
            }
21755
0
            goto done;
21756
3
        }
21757
39.5k
        p->mark = _mark;
21758
39.5k
        D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
21759
39.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_ann_assign_target ':' expression"));
21760
39.5k
    }
21761
0
    { // star_named_expression ',' star_named_expressions* ':' expression
21762
39.5k
        if (p->error_indicator) {
21763
89
            p->level--;
21764
89
            return NULL;
21765
89
        }
21766
39.4k
        D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression"));
21767
39.4k
        Token * _literal;
21768
39.4k
        Token * _literal_1;
21769
39.4k
        asdl_seq * _loop0_119_var;
21770
39.4k
        expr_ty a;
21771
39.4k
        expr_ty expression_var;
21772
39.4k
        if (
21773
39.4k
            (a = star_named_expression_rule(p))  // star_named_expression
21774
39.4k
            &&
21775
39.4k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
21776
39.4k
            &&
21777
39.4k
            (_loop0_119_var = _loop0_119_rule(p))  // star_named_expressions*
21778
39.4k
            &&
21779
39.4k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
21780
39.4k
            &&
21781
39.4k
            (expression_var = expression_rule(p))  // expression
21782
39.4k
        )
21783
11
        {
21784
11
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression"));
21785
11
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
21786
11
            if (_res == NULL && PyErr_Occurred()) {
21787
11
                p->error_indicator = 1;
21788
11
                p->level--;
21789
11
                return NULL;
21790
11
            }
21791
0
            goto done;
21792
11
        }
21793
39.4k
        p->mark = _mark;
21794
39.4k
        D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
21795
39.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression"));
21796
39.4k
    }
21797
0
    { // expression ':' expression
21798
39.4k
        if (p->error_indicator) {
21799
779
            p->level--;
21800
779
            return NULL;
21801
779
        }
21802
38.6k
        D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
21803
38.6k
        Token * _literal;
21804
38.6k
        expr_ty a;
21805
38.6k
        expr_ty expression_var;
21806
38.6k
        if (
21807
38.6k
            (a = expression_rule(p))  // expression
21808
38.6k
            &&
21809
38.6k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21810
38.6k
            &&
21811
38.6k
            (expression_var = expression_rule(p))  // expression
21812
38.6k
        )
21813
35
        {
21814
35
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
21815
35
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "illegal target for annotation" );
21816
35
            if (_res == NULL && PyErr_Occurred()) {
21817
35
                p->error_indicator = 1;
21818
35
                p->level--;
21819
35
                return NULL;
21820
35
            }
21821
0
            goto done;
21822
35
        }
21823
38.6k
        p->mark = _mark;
21824
38.6k
        D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
21825
38.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' expression"));
21826
38.6k
    }
21827
0
    { // ((star_targets '='))* star_expressions '='
21828
38.6k
        if (p->error_indicator) {
21829
97
            p->level--;
21830
97
            return NULL;
21831
97
        }
21832
38.5k
        D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* star_expressions '='"));
21833
38.5k
        Token * _literal;
21834
38.5k
        asdl_seq * _loop0_120_var;
21835
38.5k
        expr_ty a;
21836
38.5k
        if (
21837
38.5k
            (_loop0_120_var = _loop0_120_rule(p))  // ((star_targets '='))*
21838
38.5k
            &&
21839
38.5k
            (a = star_expressions_rule(p))  // star_expressions
21840
38.5k
            &&
21841
38.5k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
21842
38.5k
        )
21843
112
        {
21844
112
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* star_expressions '='"));
21845
112
            _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( STAR_TARGETS , a );
21846
112
            if (_res == NULL && PyErr_Occurred()) {
21847
112
                p->error_indicator = 1;
21848
112
                p->level--;
21849
112
                return NULL;
21850
112
            }
21851
0
            goto done;
21852
112
        }
21853
38.4k
        p->mark = _mark;
21854
38.4k
        D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
21855
38.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))* star_expressions '='"));
21856
38.4k
    }
21857
0
    { // ((star_targets '='))* yield_expr '='
21858
38.4k
        if (p->error_indicator) {
21859
0
            p->level--;
21860
0
            return NULL;
21861
0
        }
21862
38.4k
        D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* yield_expr '='"));
21863
38.4k
        Token * _literal;
21864
38.4k
        asdl_seq * _loop0_120_var;
21865
38.4k
        expr_ty a;
21866
38.4k
        if (
21867
38.4k
            (_loop0_120_var = _loop0_120_rule(p))  // ((star_targets '='))*
21868
38.4k
            &&
21869
38.4k
            (a = yield_expr_rule(p))  // yield_expr
21870
38.4k
            &&
21871
38.4k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
21872
38.4k
        )
21873
4
        {
21874
4
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* yield_expr '='"));
21875
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "assignment to yield expression not possible" );
21876
4
            if (_res == NULL && PyErr_Occurred()) {
21877
4
                p->error_indicator = 1;
21878
4
                p->level--;
21879
4
                return NULL;
21880
4
            }
21881
0
            goto done;
21882
4
        }
21883
38.4k
        p->mark = _mark;
21884
38.4k
        D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
21885
38.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))* yield_expr '='"));
21886
38.4k
    }
21887
0
    { // star_expressions augassign annotated_rhs
21888
38.4k
        if (p->error_indicator) {
21889
66
            p->level--;
21890
66
            return NULL;
21891
66
        }
21892
38.3k
        D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions augassign annotated_rhs"));
21893
38.3k
        expr_ty a;
21894
38.3k
        expr_ty annotated_rhs_var;
21895
38.3k
        AugOperator* augassign_var;
21896
38.3k
        if (
21897
38.3k
            (a = star_expressions_rule(p))  // star_expressions
21898
38.3k
            &&
21899
38.3k
            (augassign_var = augassign_rule(p))  // augassign
21900
38.3k
            &&
21901
38.3k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
21902
38.3k
        )
21903
13
        {
21904
13
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions augassign annotated_rhs"));
21905
13
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "'%s' is an illegal expression for augmented assignment" , _PyPegen_get_expr_name ( a ) );
21906
13
            if (_res == NULL && PyErr_Occurred()) {
21907
13
                p->error_indicator = 1;
21908
13
                p->level--;
21909
13
                return NULL;
21910
13
            }
21911
0
            goto done;
21912
13
        }
21913
38.3k
        p->mark = _mark;
21914
38.3k
        D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
21915
38.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions augassign annotated_rhs"));
21916
38.3k
    }
21917
0
    _res = NULL;
21918
38.3k
  done:
21919
38.3k
    p->level--;
21920
38.3k
    return _res;
21921
38.3k
}
21922
21923
// invalid_ann_assign_target: list | tuple | '(' invalid_ann_assign_target ')'
21924
static expr_ty
21925
invalid_ann_assign_target_rule(Parser *p)
21926
41.6k
{
21927
41.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21928
0
        _Pypegen_stack_overflow(p);
21929
0
    }
21930
41.6k
    if (p->error_indicator) {
21931
0
        p->level--;
21932
0
        return NULL;
21933
0
    }
21934
41.6k
    expr_ty _res = NULL;
21935
41.6k
    int _mark = p->mark;
21936
41.6k
    { // list
21937
41.6k
        if (p->error_indicator) {
21938
0
            p->level--;
21939
0
            return NULL;
21940
0
        }
21941
41.6k
        D(fprintf(stderr, "%*c> invalid_ann_assign_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
21942
41.6k
        expr_ty list_var;
21943
41.6k
        if (
21944
41.6k
            (list_var = list_rule(p))  // list
21945
41.6k
        )
21946
97
        {
21947
97
            D(fprintf(stderr, "%*c+ invalid_ann_assign_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
21948
97
            _res = list_var;
21949
97
            goto done;
21950
97
        }
21951
41.5k
        p->mark = _mark;
21952
41.5k
        D(fprintf(stderr, "%*c%s invalid_ann_assign_target[%d-%d]: %s failed!\n", p->level, ' ',
21953
41.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
21954
41.5k
    }
21955
0
    { // tuple
21956
41.5k
        if (p->error_indicator) {
21957
0
            p->level--;
21958
0
            return NULL;
21959
0
        }
21960
41.5k
        D(fprintf(stderr, "%*c> invalid_ann_assign_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
21961
41.5k
        expr_ty tuple_var;
21962
41.5k
        if (
21963
41.5k
            (tuple_var = tuple_rule(p))  // tuple
21964
41.5k
        )
21965
783
        {
21966
783
            D(fprintf(stderr, "%*c+ invalid_ann_assign_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
21967
783
            _res = tuple_var;
21968
783
            goto done;
21969
783
        }
21970
40.7k
        p->mark = _mark;
21971
40.7k
        D(fprintf(stderr, "%*c%s invalid_ann_assign_target[%d-%d]: %s failed!\n", p->level, ' ',
21972
40.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
21973
40.7k
    }
21974
0
    { // '(' invalid_ann_assign_target ')'
21975
40.7k
        if (p->error_indicator) {
21976
0
            p->level--;
21977
0
            return NULL;
21978
0
        }
21979
40.7k
        D(fprintf(stderr, "%*c> invalid_ann_assign_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' invalid_ann_assign_target ')'"));
21980
40.7k
        Token * _literal;
21981
40.7k
        Token * _literal_1;
21982
40.7k
        expr_ty a;
21983
40.7k
        if (
21984
40.7k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
21985
40.7k
            &&
21986
40.7k
            (a = invalid_ann_assign_target_rule(p))  // invalid_ann_assign_target
21987
40.7k
            &&
21988
40.7k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
21989
40.7k
        )
21990
529
        {
21991
529
            D(fprintf(stderr, "%*c+ invalid_ann_assign_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' invalid_ann_assign_target ')'"));
21992
529
            _res = a;
21993
529
            if (_res == NULL && PyErr_Occurred()) {
21994
0
                p->error_indicator = 1;
21995
0
                p->level--;
21996
0
                return NULL;
21997
0
            }
21998
529
            goto done;
21999
529
        }
22000
40.2k
        p->mark = _mark;
22001
40.2k
        D(fprintf(stderr, "%*c%s invalid_ann_assign_target[%d-%d]: %s failed!\n", p->level, ' ',
22002
40.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' invalid_ann_assign_target ')'"));
22003
40.2k
    }
22004
0
    _res = NULL;
22005
41.6k
  done:
22006
41.6k
    p->level--;
22007
41.6k
    return _res;
22008
40.2k
}
22009
22010
// invalid_raise_stmt: 'raise' 'from' | 'raise' expression 'from'
22011
static void *
22012
invalid_raise_stmt_rule(Parser *p)
22013
576
{
22014
576
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22015
0
        _Pypegen_stack_overflow(p);
22016
0
    }
22017
576
    if (p->error_indicator) {
22018
0
        p->level--;
22019
0
        return NULL;
22020
0
    }
22021
576
    void * _res = NULL;
22022
576
    int _mark = p->mark;
22023
576
    { // 'raise' 'from'
22024
576
        if (p->error_indicator) {
22025
0
            p->level--;
22026
0
            return NULL;
22027
0
        }
22028
576
        D(fprintf(stderr, "%*c> invalid_raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' 'from'"));
22029
576
        Token * a;
22030
576
        Token * b;
22031
576
        if (
22032
576
            (a = _PyPegen_expect_token(p, 628))  // token='raise'
22033
576
            &&
22034
576
            (b = _PyPegen_expect_token(p, 638))  // token='from'
22035
576
        )
22036
1
        {
22037
1
            D(fprintf(stderr, "%*c+ invalid_raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' 'from'"));
22038
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "did you forget an expression between 'raise' and 'from'?" );
22039
1
            if (_res == NULL && PyErr_Occurred()) {
22040
1
                p->error_indicator = 1;
22041
1
                p->level--;
22042
1
                return NULL;
22043
1
            }
22044
0
            goto done;
22045
1
        }
22046
575
        p->mark = _mark;
22047
575
        D(fprintf(stderr, "%*c%s invalid_raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22048
575
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' 'from'"));
22049
575
    }
22050
0
    { // 'raise' expression 'from'
22051
575
        if (p->error_indicator) {
22052
0
            p->level--;
22053
0
            return NULL;
22054
0
        }
22055
575
        D(fprintf(stderr, "%*c> invalid_raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' expression 'from'"));
22056
575
        Token * _keyword;
22057
575
        Token * a;
22058
575
        expr_ty expression_var;
22059
575
        if (
22060
575
            (_keyword = _PyPegen_expect_token(p, 628))  // token='raise'
22061
575
            &&
22062
575
            (expression_var = expression_rule(p))  // expression
22063
575
            &&
22064
575
            (a = _PyPegen_expect_token(p, 638))  // token='from'
22065
575
        )
22066
2
        {
22067
2
            D(fprintf(stderr, "%*c+ invalid_raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' expression 'from'"));
22068
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "did you forget an expression after 'from'?" );
22069
2
            if (_res == NULL && PyErr_Occurred()) {
22070
2
                p->error_indicator = 1;
22071
2
                p->level--;
22072
2
                return NULL;
22073
2
            }
22074
0
            goto done;
22075
2
        }
22076
573
        p->mark = _mark;
22077
573
        D(fprintf(stderr, "%*c%s invalid_raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22078
573
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' expression 'from'"));
22079
573
    }
22080
0
    _res = NULL;
22081
573
  done:
22082
573
    p->level--;
22083
573
    return _res;
22084
573
}
22085
22086
// invalid_del_stmt: 'del' star_expressions
22087
static void *
22088
invalid_del_stmt_rule(Parser *p)
22089
295
{
22090
295
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22091
0
        _Pypegen_stack_overflow(p);
22092
0
    }
22093
295
    if (p->error_indicator) {
22094
0
        p->level--;
22095
0
        return NULL;
22096
0
    }
22097
295
    void * _res = NULL;
22098
295
    int _mark = p->mark;
22099
295
    { // 'del' star_expressions
22100
295
        if (p->error_indicator) {
22101
0
            p->level--;
22102
0
            return NULL;
22103
0
        }
22104
295
        D(fprintf(stderr, "%*c> invalid_del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'del' star_expressions"));
22105
295
        Token * _keyword;
22106
295
        expr_ty a;
22107
295
        if (
22108
295
            (_keyword = _PyPegen_expect_token(p, 630))  // token='del'
22109
295
            &&
22110
295
            (a = star_expressions_rule(p))  // star_expressions
22111
295
        )
22112
155
        {
22113
155
            D(fprintf(stderr, "%*c+ invalid_del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'del' star_expressions"));
22114
155
            _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( DEL_TARGETS , a );
22115
155
            if (_res == NULL && PyErr_Occurred()) {
22116
11
                p->error_indicator = 1;
22117
11
                p->level--;
22118
11
                return NULL;
22119
11
            }
22120
144
            goto done;
22121
155
        }
22122
140
        p->mark = _mark;
22123
140
        D(fprintf(stderr, "%*c%s invalid_del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22124
140
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'del' star_expressions"));
22125
140
    }
22126
0
    _res = NULL;
22127
284
  done:
22128
284
    p->level--;
22129
284
    return _res;
22130
140
}
22131
22132
// invalid_block: NEWLINE !INDENT
22133
static void *
22134
invalid_block_rule(Parser *p)
22135
2.14k
{
22136
2.14k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22137
0
        _Pypegen_stack_overflow(p);
22138
0
    }
22139
2.14k
    if (p->error_indicator) {
22140
0
        p->level--;
22141
0
        return NULL;
22142
0
    }
22143
2.14k
    void * _res = NULL;
22144
2.14k
    int _mark = p->mark;
22145
2.14k
    { // NEWLINE !INDENT
22146
2.14k
        if (p->error_indicator) {
22147
0
            p->level--;
22148
0
            return NULL;
22149
0
        }
22150
2.14k
        D(fprintf(stderr, "%*c> invalid_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE !INDENT"));
22151
2.14k
        Token * newline_var;
22152
2.14k
        if (
22153
2.14k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
22154
2.14k
            &&
22155
2.14k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
22156
2.14k
        )
22157
5
        {
22158
5
            D(fprintf(stderr, "%*c+ invalid_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE !INDENT"));
22159
5
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block" );
22160
5
            if (_res == NULL && PyErr_Occurred()) {
22161
5
                p->error_indicator = 1;
22162
5
                p->level--;
22163
5
                return NULL;
22164
5
            }
22165
0
            goto done;
22166
5
        }
22167
2.13k
        p->mark = _mark;
22168
2.13k
        D(fprintf(stderr, "%*c%s invalid_block[%d-%d]: %s failed!\n", p->level, ' ',
22169
2.13k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE !INDENT"));
22170
2.13k
    }
22171
0
    _res = NULL;
22172
2.13k
  done:
22173
2.13k
    p->level--;
22174
2.13k
    return _res;
22175
2.13k
}
22176
22177
// invalid_comprehension:
22178
//     | ('[' | '(' | '{') starred_expression for_if_clauses
22179
//     | ('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses
22180
//     | ('[' | '{') star_named_expression ',' for_if_clauses
22181
static void *
22182
invalid_comprehension_rule(Parser *p)
22183
225k
{
22184
225k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22185
1
        _Pypegen_stack_overflow(p);
22186
1
    }
22187
225k
    if (p->error_indicator) {
22188
1
        p->level--;
22189
1
        return NULL;
22190
1
    }
22191
225k
    void * _res = NULL;
22192
225k
    int _mark = p->mark;
22193
225k
    { // ('[' | '(' | '{') starred_expression for_if_clauses
22194
225k
        if (p->error_indicator) {
22195
0
            p->level--;
22196
0
            return NULL;
22197
0
        }
22198
225k
        D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
22199
225k
        void *_tmp_121_var;
22200
225k
        expr_ty a;
22201
225k
        asdl_comprehension_seq* for_if_clauses_var;
22202
225k
        if (
22203
225k
            (_tmp_121_var = _tmp_121_rule(p))  // '[' | '(' | '{'
22204
225k
            &&
22205
225k
            (a = starred_expression_rule(p))  // starred_expression
22206
225k
            &&
22207
225k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
22208
225k
        )
22209
1
        {
22210
1
            D(fprintf(stderr, "%*c+ invalid_comprehension[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
22211
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "iterable unpacking cannot be used in comprehension" );
22212
1
            if (_res == NULL && PyErr_Occurred()) {
22213
1
                p->error_indicator = 1;
22214
1
                p->level--;
22215
1
                return NULL;
22216
1
            }
22217
0
            goto done;
22218
1
        }
22219
225k
        p->mark = _mark;
22220
225k
        D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
22221
225k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
22222
225k
    }
22223
0
    { // ('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses
22224
225k
        if (p->error_indicator) {
22225
670
            p->level--;
22226
670
            return NULL;
22227
670
        }
22228
224k
        D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses"));
22229
224k
        Token * _literal;
22230
224k
        void *_tmp_122_var;
22231
224k
        expr_ty a;
22232
224k
        asdl_expr_seq* b;
22233
224k
        asdl_comprehension_seq* for_if_clauses_var;
22234
224k
        if (
22235
224k
            (_tmp_122_var = _tmp_122_rule(p))  // '[' | '{'
22236
224k
            &&
22237
224k
            (a = star_named_expression_rule(p))  // star_named_expression
22238
224k
            &&
22239
224k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
22240
224k
            &&
22241
224k
            (b = star_named_expressions_rule(p))  // star_named_expressions
22242
224k
            &&
22243
224k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
22244
224k
        )
22245
1
        {
22246
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"));
22247
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , PyPegen_last_item ( b , expr_ty ) , "did you forget parentheses around the comprehension target?" );
22248
1
            if (_res == NULL && PyErr_Occurred()) {
22249
1
                p->error_indicator = 1;
22250
1
                p->level--;
22251
1
                return NULL;
22252
1
            }
22253
0
            goto done;
22254
1
        }
22255
224k
        p->mark = _mark;
22256
224k
        D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
22257
224k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses"));
22258
224k
    }
22259
0
    { // ('[' | '{') star_named_expression ',' for_if_clauses
22260
224k
        if (p->error_indicator) {
22261
1.68k
            p->level--;
22262
1.68k
            return NULL;
22263
1.68k
        }
22264
222k
        D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses"));
22265
222k
        void *_tmp_122_var;
22266
222k
        expr_ty a;
22267
222k
        Token * b;
22268
222k
        asdl_comprehension_seq* for_if_clauses_var;
22269
222k
        if (
22270
222k
            (_tmp_122_var = _tmp_122_rule(p))  // '[' | '{'
22271
222k
            &&
22272
222k
            (a = star_named_expression_rule(p))  // star_named_expression
22273
222k
            &&
22274
222k
            (b = _PyPegen_expect_token(p, 12))  // token=','
22275
222k
            &&
22276
222k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
22277
222k
        )
22278
1
        {
22279
1
            D(fprintf(stderr, "%*c+ invalid_comprehension[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses"));
22280
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "did you forget parentheses around the comprehension target?" );
22281
1
            if (_res == NULL && PyErr_Occurred()) {
22282
1
                p->error_indicator = 1;
22283
1
                p->level--;
22284
1
                return NULL;
22285
1
            }
22286
0
            goto done;
22287
1
        }
22288
222k
        p->mark = _mark;
22289
222k
        D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
22290
222k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses"));
22291
222k
    }
22292
0
    _res = NULL;
22293
222k
  done:
22294
222k
    p->level--;
22295
222k
    return _res;
22296
222k
}
22297
22298
// invalid_dict_comprehension: '{' '**' bitwise_or for_if_clauses '}'
22299
static void *
22300
invalid_dict_comprehension_rule(Parser *p)
22301
4.02k
{
22302
4.02k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22303
0
        _Pypegen_stack_overflow(p);
22304
0
    }
22305
4.02k
    if (p->error_indicator) {
22306
0
        p->level--;
22307
0
        return NULL;
22308
0
    }
22309
4.02k
    void * _res = NULL;
22310
4.02k
    int _mark = p->mark;
22311
4.02k
    { // '{' '**' bitwise_or for_if_clauses '}'
22312
4.02k
        if (p->error_indicator) {
22313
0
            p->level--;
22314
0
            return NULL;
22315
0
        }
22316
4.02k
        D(fprintf(stderr, "%*c> invalid_dict_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
22317
4.02k
        Token * _literal;
22318
4.02k
        Token * _literal_1;
22319
4.02k
        Token * a;
22320
4.02k
        expr_ty bitwise_or_var;
22321
4.02k
        asdl_comprehension_seq* for_if_clauses_var;
22322
4.02k
        if (
22323
4.02k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
22324
4.02k
            &&
22325
4.02k
            (a = _PyPegen_expect_token(p, 35))  // token='**'
22326
4.02k
            &&
22327
4.02k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
22328
4.02k
            &&
22329
4.02k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
22330
4.02k
            &&
22331
4.02k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
22332
4.02k
        )
22333
1
        {
22334
1
            D(fprintf(stderr, "%*c+ invalid_dict_comprehension[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
22335
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "dict unpacking cannot be used in dict comprehension" );
22336
1
            if (_res == NULL && PyErr_Occurred()) {
22337
1
                p->error_indicator = 1;
22338
1
                p->level--;
22339
1
                return NULL;
22340
1
            }
22341
0
            goto done;
22342
1
        }
22343
4.02k
        p->mark = _mark;
22344
4.02k
        D(fprintf(stderr, "%*c%s invalid_dict_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
22345
4.02k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
22346
4.02k
    }
22347
0
    _res = NULL;
22348
4.02k
  done:
22349
4.02k
    p->level--;
22350
4.02k
    return _res;
22351
4.02k
}
22352
22353
// invalid_parameters:
22354
//     | "/" ','
22355
//     | (slash_no_default | slash_with_default) param_maybe_default* '/'
22356
//     | slash_no_default? param_no_default* invalid_parameters_helper param_no_default
22357
//     | param_no_default* '(' param_no_default+ ','? ')'
22358
//     | [(slash_no_default | slash_with_default)] param_maybe_default* '*' (',' | param_no_default) param_maybe_default* '/'
22359
//     | param_maybe_default+ '/' '*'
22360
static void *
22361
invalid_parameters_rule(Parser *p)
22362
5.07k
{
22363
5.07k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22364
0
        _Pypegen_stack_overflow(p);
22365
0
    }
22366
5.07k
    if (p->error_indicator) {
22367
0
        p->level--;
22368
0
        return NULL;
22369
0
    }
22370
5.07k
    void * _res = NULL;
22371
5.07k
    int _mark = p->mark;
22372
5.07k
    { // "/" ','
22373
5.07k
        if (p->error_indicator) {
22374
0
            p->level--;
22375
0
            return NULL;
22376
0
        }
22377
5.07k
        D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"/\" ','"));
22378
5.07k
        Token * _literal;
22379
5.07k
        Token * a;
22380
5.07k
        if (
22381
5.07k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
22382
5.07k
            &&
22383
5.07k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
22384
5.07k
        )
22385
1
        {
22386
1
            D(fprintf(stderr, "%*c+ invalid_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"/\" ','"));
22387
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "at least one parameter must precede /" );
22388
1
            if (_res == NULL && PyErr_Occurred()) {
22389
1
                p->error_indicator = 1;
22390
1
                p->level--;
22391
1
                return NULL;
22392
1
            }
22393
0
            goto done;
22394
1
        }
22395
5.07k
        p->mark = _mark;
22396
5.07k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22397
5.07k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"/\" ','"));
22398
5.07k
    }
22399
0
    { // (slash_no_default | slash_with_default) param_maybe_default* '/'
22400
5.07k
        if (p->error_indicator) {
22401
1
            p->level--;
22402
1
            return NULL;
22403
1
        }
22404
5.07k
        D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(slash_no_default | slash_with_default) param_maybe_default* '/'"));
22405
5.07k
        asdl_seq * _loop0_31_var;
22406
5.07k
        void *_tmp_123_var;
22407
5.07k
        Token * a;
22408
5.07k
        if (
22409
5.07k
            (_tmp_123_var = _tmp_123_rule(p))  // slash_no_default | slash_with_default
22410
5.07k
            &&
22411
5.07k
            (_loop0_31_var = _loop0_31_rule(p))  // param_maybe_default*
22412
5.07k
            &&
22413
5.07k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
22414
5.07k
        )
22415
2
        {
22416
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* '/'"));
22417
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "/ may appear only once" );
22418
2
            if (_res == NULL && PyErr_Occurred()) {
22419
2
                p->error_indicator = 1;
22420
2
                p->level--;
22421
2
                return NULL;
22422
2
            }
22423
0
            goto done;
22424
2
        }
22425
5.07k
        p->mark = _mark;
22426
5.07k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22427
5.07k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(slash_no_default | slash_with_default) param_maybe_default* '/'"));
22428
5.07k
    }
22429
0
    { // slash_no_default? param_no_default* invalid_parameters_helper param_no_default
22430
5.07k
        if (p->error_indicator) {
22431
6
            p->level--;
22432
6
            return NULL;
22433
6
        }
22434
5.06k
        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"));
22435
5.06k
        asdl_seq * _loop0_27_var;
22436
5.06k
        void *_opt_var;
22437
5.06k
        UNUSED(_opt_var); // Silence compiler warnings
22438
5.06k
        arg_ty a;
22439
5.06k
        void *invalid_parameters_helper_var;
22440
5.06k
        if (
22441
5.06k
            (_opt_var = slash_no_default_rule(p), !p->error_indicator)  // slash_no_default?
22442
5.06k
            &&
22443
5.06k
            (_loop0_27_var = _loop0_27_rule(p))  // param_no_default*
22444
5.06k
            &&
22445
5.06k
            (invalid_parameters_helper_var = invalid_parameters_helper_rule(p))  // invalid_parameters_helper
22446
5.06k
            &&
22447
5.06k
            (a = param_no_default_rule(p))  // param_no_default
22448
5.06k
        )
22449
4
        {
22450
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"));
22451
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "parameter without a default follows parameter with a default" );
22452
4
            if (_res == NULL && PyErr_Occurred()) {
22453
4
                p->error_indicator = 1;
22454
4
                p->level--;
22455
4
                return NULL;
22456
4
            }
22457
0
            goto done;
22458
4
        }
22459
5.06k
        p->mark = _mark;
22460
5.06k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22461
5.06k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_no_default? param_no_default* invalid_parameters_helper param_no_default"));
22462
5.06k
    }
22463
0
    { // param_no_default* '(' param_no_default+ ','? ')'
22464
5.06k
        if (p->error_indicator) {
22465
1
            p->level--;
22466
1
            return NULL;
22467
1
        }
22468
5.05k
        D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* '(' param_no_default+ ','? ')'"));
22469
5.05k
        asdl_seq * _loop0_27_var;
22470
5.05k
        asdl_seq * _loop1_29_var;
22471
5.05k
        void *_opt_var;
22472
5.05k
        UNUSED(_opt_var); // Silence compiler warnings
22473
5.05k
        Token * a;
22474
5.05k
        Token * b;
22475
5.05k
        if (
22476
5.05k
            (_loop0_27_var = _loop0_27_rule(p))  // param_no_default*
22477
5.05k
            &&
22478
5.05k
            (a = _PyPegen_expect_token(p, 7))  // token='('
22479
5.05k
            &&
22480
5.05k
            (_loop1_29_var = _loop1_29_rule(p))  // param_no_default+
22481
5.05k
            &&
22482
5.05k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
22483
5.05k
            &&
22484
5.05k
            (b = _PyPegen_expect_token(p, 8))  // token=')'
22485
5.05k
        )
22486
1
        {
22487
1
            D(fprintf(stderr, "%*c+ invalid_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* '(' param_no_default+ ','? ')'"));
22488
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "Function parameters cannot be parenthesized" );
22489
1
            if (_res == NULL && PyErr_Occurred()) {
22490
1
                p->error_indicator = 1;
22491
1
                p->level--;
22492
1
                return NULL;
22493
1
            }
22494
0
            goto done;
22495
1
        }
22496
5.05k
        p->mark = _mark;
22497
5.05k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22498
5.05k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* '(' param_no_default+ ','? ')'"));
22499
5.05k
    }
22500
0
    { // [(slash_no_default | slash_with_default)] param_maybe_default* '*' (',' | param_no_default) param_maybe_default* '/'
22501
5.05k
        if (p->error_indicator) {
22502
4
            p->level--;
22503
4
            return NULL;
22504
4
        }
22505
5.05k
        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* '/'"));
22506
5.05k
        Token * _literal;
22507
5.05k
        asdl_seq * _loop0_31_var;
22508
5.05k
        asdl_seq * _loop0_31_var_1;
22509
5.05k
        void *_opt_var;
22510
5.05k
        UNUSED(_opt_var); // Silence compiler warnings
22511
5.05k
        void *_tmp_124_var;
22512
5.05k
        Token * a;
22513
5.05k
        if (
22514
5.05k
            (_opt_var = _tmp_123_rule(p), !p->error_indicator)  // [(slash_no_default | slash_with_default)]
22515
5.05k
            &&
22516
5.05k
            (_loop0_31_var = _loop0_31_rule(p))  // param_maybe_default*
22517
5.05k
            &&
22518
5.05k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
22519
5.05k
            &&
22520
5.05k
            (_tmp_124_var = _tmp_124_rule(p))  // ',' | param_no_default
22521
5.05k
            &&
22522
5.05k
            (_loop0_31_var_1 = _loop0_31_rule(p))  // param_maybe_default*
22523
5.05k
            &&
22524
5.05k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
22525
5.05k
        )
22526
2
        {
22527
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* '*' (',' | param_no_default) param_maybe_default* '/'"));
22528
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "/ must be ahead of *" );
22529
2
            if (_res == NULL && PyErr_Occurred()) {
22530
2
                p->error_indicator = 1;
22531
2
                p->level--;
22532
2
                return NULL;
22533
2
            }
22534
0
            goto done;
22535
2
        }
22536
5.05k
        p->mark = _mark;
22537
5.05k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22538
5.05k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "[(slash_no_default | slash_with_default)] param_maybe_default* '*' (',' | param_no_default) param_maybe_default* '/'"));
22539
5.05k
    }
22540
0
    { // param_maybe_default+ '/' '*'
22541
5.05k
        if (p->error_indicator) {
22542
3
            p->level--;
22543
3
            return NULL;
22544
3
        }
22545
5.04k
        D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default+ '/' '*'"));
22546
5.04k
        Token * _literal;
22547
5.04k
        asdl_seq * _loop1_32_var;
22548
5.04k
        Token * a;
22549
5.04k
        if (
22550
5.04k
            (_loop1_32_var = _loop1_32_rule(p))  // param_maybe_default+
22551
5.04k
            &&
22552
5.04k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
22553
5.04k
            &&
22554
5.04k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
22555
5.04k
        )
22556
2
        {
22557
2
            D(fprintf(stderr, "%*c+ invalid_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_maybe_default+ '/' '*'"));
22558
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expected comma between / and *" );
22559
2
            if (_res == NULL && PyErr_Occurred()) {
22560
2
                p->error_indicator = 1;
22561
2
                p->level--;
22562
2
                return NULL;
22563
2
            }
22564
0
            goto done;
22565
2
        }
22566
5.04k
        p->mark = _mark;
22567
5.04k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22568
5.04k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default+ '/' '*'"));
22569
5.04k
    }
22570
0
    _res = NULL;
22571
5.04k
  done:
22572
5.04k
    p->level--;
22573
5.04k
    return _res;
22574
5.04k
}
22575
22576
// invalid_default: '=' &(')' | ',')
22577
static void *
22578
invalid_default_rule(Parser *p)
22579
55.3k
{
22580
55.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22581
0
        _Pypegen_stack_overflow(p);
22582
0
    }
22583
55.3k
    if (p->error_indicator) {
22584
0
        p->level--;
22585
0
        return NULL;
22586
0
    }
22587
55.3k
    void * _res = NULL;
22588
55.3k
    int _mark = p->mark;
22589
55.3k
    { // '=' &(')' | ',')
22590
55.3k
        if (p->error_indicator) {
22591
0
            p->level--;
22592
0
            return NULL;
22593
0
        }
22594
55.3k
        D(fprintf(stderr, "%*c> invalid_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' &(')' | ',')"));
22595
55.3k
        Token * a;
22596
55.3k
        if (
22597
55.3k
            (a = _PyPegen_expect_token(p, 22))  // token='='
22598
55.3k
            &&
22599
55.3k
            _PyPegen_lookahead(1, _tmp_125_rule, p)
22600
55.3k
        )
22601
14
        {
22602
14
            D(fprintf(stderr, "%*c+ invalid_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' &(')' | ',')"));
22603
14
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expected default value expression" );
22604
14
            if (_res == NULL && PyErr_Occurred()) {
22605
14
                p->error_indicator = 1;
22606
14
                p->level--;
22607
14
                return NULL;
22608
14
            }
22609
0
            goto done;
22610
14
        }
22611
55.2k
        p->mark = _mark;
22612
55.2k
        D(fprintf(stderr, "%*c%s invalid_default[%d-%d]: %s failed!\n", p->level, ' ',
22613
55.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' &(')' | ',')"));
22614
55.2k
    }
22615
0
    _res = NULL;
22616
55.2k
  done:
22617
55.2k
    p->level--;
22618
55.2k
    return _res;
22619
55.2k
}
22620
22621
// invalid_star_etc:
22622
//     | '*' (')' | ',' (')' | '**'))
22623
//     | '*' ',' TYPE_COMMENT
22624
//     | '*' param '='
22625
//     | '*' (param_no_default | ',') param_maybe_default* '*' (param_no_default | ',')
22626
static void *
22627
invalid_star_etc_rule(Parser *p)
22628
5.04k
{
22629
5.04k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22630
0
        _Pypegen_stack_overflow(p);
22631
0
    }
22632
5.04k
    if (p->error_indicator) {
22633
0
        p->level--;
22634
0
        return NULL;
22635
0
    }
22636
5.04k
    void * _res = NULL;
22637
5.04k
    int _mark = p->mark;
22638
5.04k
    { // '*' (')' | ',' (')' | '**'))
22639
5.04k
        if (p->error_indicator) {
22640
0
            p->level--;
22641
0
            return NULL;
22642
0
        }
22643
5.04k
        D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
22644
5.04k
        void *_tmp_126_var;
22645
5.04k
        Token * a;
22646
5.04k
        if (
22647
5.04k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
22648
5.04k
            &&
22649
5.04k
            (_tmp_126_var = _tmp_126_rule(p))  // ')' | ',' (')' | '**')
22650
5.04k
        )
22651
3
        {
22652
3
            D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
22653
3
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "named parameters must follow bare *" );
22654
3
            if (_res == NULL && PyErr_Occurred()) {
22655
3
                p->error_indicator = 1;
22656
3
                p->level--;
22657
3
                return NULL;
22658
3
            }
22659
0
            goto done;
22660
3
        }
22661
5.04k
        p->mark = _mark;
22662
5.04k
        D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
22663
5.04k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
22664
5.04k
    }
22665
0
    { // '*' ',' TYPE_COMMENT
22666
5.04k
        if (p->error_indicator) {
22667
0
            p->level--;
22668
0
            return NULL;
22669
0
        }
22670
5.04k
        D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' TYPE_COMMENT"));
22671
5.04k
        Token * _literal;
22672
5.04k
        Token * _literal_1;
22673
5.04k
        Token * type_comment_var;
22674
5.04k
        if (
22675
5.04k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
22676
5.04k
            &&
22677
5.04k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
22678
5.04k
            &&
22679
5.04k
            (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
22680
5.04k
        )
22681
0
        {
22682
0
            D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' TYPE_COMMENT"));
22683
0
            _res = RAISE_SYNTAX_ERROR ( "bare * has associated type comment" );
22684
0
            if (_res == NULL && PyErr_Occurred()) {
22685
0
                p->error_indicator = 1;
22686
0
                p->level--;
22687
0
                return NULL;
22688
0
            }
22689
0
            goto done;
22690
0
        }
22691
5.04k
        p->mark = _mark;
22692
5.04k
        D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
22693
5.04k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' TYPE_COMMENT"));
22694
5.04k
    }
22695
0
    { // '*' param '='
22696
5.04k
        if (p->error_indicator) {
22697
0
            p->level--;
22698
0
            return NULL;
22699
0
        }
22700
5.04k
        D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' param '='"));
22701
5.04k
        Token * _literal;
22702
5.04k
        Token * a;
22703
5.04k
        arg_ty param_var;
22704
5.04k
        if (
22705
5.04k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
22706
5.04k
            &&
22707
5.04k
            (param_var = param_rule(p))  // param
22708
5.04k
            &&
22709
5.04k
            (a = _PyPegen_expect_token(p, 22))  // token='='
22710
5.04k
        )
22711
2
        {
22712
2
            D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' param '='"));
22713
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "var-positional parameter cannot have default value" );
22714
2
            if (_res == NULL && PyErr_Occurred()) {
22715
2
                p->error_indicator = 1;
22716
2
                p->level--;
22717
2
                return NULL;
22718
2
            }
22719
0
            goto done;
22720
2
        }
22721
5.04k
        p->mark = _mark;
22722
5.04k
        D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
22723
5.04k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' param '='"));
22724
5.04k
    }
22725
0
    { // '*' (param_no_default | ',') param_maybe_default* '*' (param_no_default | ',')
22726
5.04k
        if (p->error_indicator) {
22727
0
            p->level--;
22728
0
            return NULL;
22729
0
        }
22730
5.04k
        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 | ',')"));
22731
5.04k
        Token * _literal;
22732
5.04k
        asdl_seq * _loop0_31_var;
22733
5.04k
        void *_tmp_127_var;
22734
5.04k
        void *_tmp_127_var_1;
22735
5.04k
        Token * a;
22736
5.04k
        if (
22737
5.04k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
22738
5.04k
            &&
22739
5.04k
            (_tmp_127_var = _tmp_127_rule(p))  // param_no_default | ','
22740
5.04k
            &&
22741
5.04k
            (_loop0_31_var = _loop0_31_rule(p))  // param_maybe_default*
22742
5.04k
            &&
22743
5.04k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
22744
5.04k
            &&
22745
5.04k
            (_tmp_127_var_1 = _tmp_127_rule(p))  // param_no_default | ','
22746
5.04k
        )
22747
2
        {
22748
2
            D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (param_no_default | ',') param_maybe_default* '*' (param_no_default | ',')"));
22749
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "* may appear only once" );
22750
2
            if (_res == NULL && PyErr_Occurred()) {
22751
2
                p->error_indicator = 1;
22752
2
                p->level--;
22753
2
                return NULL;
22754
2
            }
22755
0
            goto done;
22756
2
        }
22757
5.04k
        p->mark = _mark;
22758
5.04k
        D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
22759
5.04k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (param_no_default | ',') param_maybe_default* '*' (param_no_default | ',')"));
22760
5.04k
    }
22761
0
    _res = NULL;
22762
5.04k
  done:
22763
5.04k
    p->level--;
22764
5.04k
    return _res;
22765
5.04k
}
22766
22767
// invalid_kwds: '**' param '=' | '**' param ',' param | '**' param ',' ('*' | '**' | '/')
22768
static void *
22769
invalid_kwds_rule(Parser *p)
22770
5.03k
{
22771
5.03k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22772
0
        _Pypegen_stack_overflow(p);
22773
0
    }
22774
5.03k
    if (p->error_indicator) {
22775
0
        p->level--;
22776
0
        return NULL;
22777
0
    }
22778
5.03k
    void * _res = NULL;
22779
5.03k
    int _mark = p->mark;
22780
5.03k
    { // '**' param '='
22781
5.03k
        if (p->error_indicator) {
22782
0
            p->level--;
22783
0
            return NULL;
22784
0
        }
22785
5.03k
        D(fprintf(stderr, "%*c> invalid_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param '='"));
22786
5.03k
        Token * _literal;
22787
5.03k
        Token * a;
22788
5.03k
        arg_ty param_var;
22789
5.03k
        if (
22790
5.03k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
22791
5.03k
            &&
22792
5.03k
            (param_var = param_rule(p))  // param
22793
5.03k
            &&
22794
5.03k
            (a = _PyPegen_expect_token(p, 22))  // token='='
22795
5.03k
        )
22796
1
        {
22797
1
            D(fprintf(stderr, "%*c+ invalid_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' param '='"));
22798
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "var-keyword parameter cannot have default value" );
22799
1
            if (_res == NULL && PyErr_Occurred()) {
22800
1
                p->error_indicator = 1;
22801
1
                p->level--;
22802
1
                return NULL;
22803
1
            }
22804
0
            goto done;
22805
1
        }
22806
5.03k
        p->mark = _mark;
22807
5.03k
        D(fprintf(stderr, "%*c%s invalid_kwds[%d-%d]: %s failed!\n", p->level, ' ',
22808
5.03k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param '='"));
22809
5.03k
    }
22810
0
    { // '**' param ',' param
22811
5.03k
        if (p->error_indicator) {
22812
1
            p->level--;
22813
1
            return NULL;
22814
1
        }
22815
5.03k
        D(fprintf(stderr, "%*c> invalid_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param ',' param"));
22816
5.03k
        Token * _literal;
22817
5.03k
        Token * _literal_1;
22818
5.03k
        arg_ty a;
22819
5.03k
        arg_ty param_var;
22820
5.03k
        if (
22821
5.03k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
22822
5.03k
            &&
22823
5.03k
            (param_var = param_rule(p))  // param
22824
5.03k
            &&
22825
5.03k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
22826
5.03k
            &&
22827
5.03k
            (a = param_rule(p))  // param
22828
5.03k
        )
22829
1
        {
22830
1
            D(fprintf(stderr, "%*c+ invalid_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' param ',' param"));
22831
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "parameters cannot follow var-keyword parameter" );
22832
1
            if (_res == NULL && PyErr_Occurred()) {
22833
1
                p->error_indicator = 1;
22834
1
                p->level--;
22835
1
                return NULL;
22836
1
            }
22837
0
            goto done;
22838
1
        }
22839
5.03k
        p->mark = _mark;
22840
5.03k
        D(fprintf(stderr, "%*c%s invalid_kwds[%d-%d]: %s failed!\n", p->level, ' ',
22841
5.03k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param ',' param"));
22842
5.03k
    }
22843
0
    { // '**' param ',' ('*' | '**' | '/')
22844
5.03k
        if (p->error_indicator) {
22845
1
            p->level--;
22846
1
            return NULL;
22847
1
        }
22848
5.03k
        D(fprintf(stderr, "%*c> invalid_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param ',' ('*' | '**' | '/')"));
22849
5.03k
        Token * _literal;
22850
5.03k
        Token * _literal_1;
22851
5.03k
        Token* a;
22852
5.03k
        arg_ty param_var;
22853
5.03k
        if (
22854
5.03k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
22855
5.03k
            &&
22856
5.03k
            (param_var = param_rule(p))  // param
22857
5.03k
            &&
22858
5.03k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
22859
5.03k
            &&
22860
5.03k
            (a = (Token*)_tmp_128_rule(p))  // '*' | '**' | '/'
22861
5.03k
        )
22862
2
        {
22863
2
            D(fprintf(stderr, "%*c+ invalid_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' param ',' ('*' | '**' | '/')"));
22864
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "parameters cannot follow var-keyword parameter" );
22865
2
            if (_res == NULL && PyErr_Occurred()) {
22866
2
                p->error_indicator = 1;
22867
2
                p->level--;
22868
2
                return NULL;
22869
2
            }
22870
0
            goto done;
22871
2
        }
22872
5.03k
        p->mark = _mark;
22873
5.03k
        D(fprintf(stderr, "%*c%s invalid_kwds[%d-%d]: %s failed!\n", p->level, ' ',
22874
5.03k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param ',' ('*' | '**' | '/')"));
22875
5.03k
    }
22876
0
    _res = NULL;
22877
5.03k
  done:
22878
5.03k
    p->level--;
22879
5.03k
    return _res;
22880
5.03k
}
22881
22882
// invalid_parameters_helper: slash_with_default | param_with_default+
22883
static void *
22884
invalid_parameters_helper_rule(Parser *p)
22885
5.06k
{
22886
5.06k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22887
0
        _Pypegen_stack_overflow(p);
22888
0
    }
22889
5.06k
    if (p->error_indicator) {
22890
0
        p->level--;
22891
0
        return NULL;
22892
0
    }
22893
5.06k
    void * _res = NULL;
22894
5.06k
    int _mark = p->mark;
22895
5.06k
    { // slash_with_default
22896
5.06k
        if (p->error_indicator) {
22897
0
            p->level--;
22898
0
            return NULL;
22899
0
        }
22900
5.06k
        D(fprintf(stderr, "%*c> invalid_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
22901
5.06k
        SlashWithDefault* a;
22902
5.06k
        if (
22903
5.06k
            (a = slash_with_default_rule(p))  // slash_with_default
22904
5.06k
        )
22905
438
        {
22906
438
            D(fprintf(stderr, "%*c+ invalid_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
22907
438
            _res = _PyPegen_singleton_seq ( p , a );
22908
438
            if (_res == NULL && PyErr_Occurred()) {
22909
0
                p->error_indicator = 1;
22910
0
                p->level--;
22911
0
                return NULL;
22912
0
            }
22913
438
            goto done;
22914
438
        }
22915
4.62k
        p->mark = _mark;
22916
4.62k
        D(fprintf(stderr, "%*c%s invalid_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
22917
4.62k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default"));
22918
4.62k
    }
22919
0
    { // param_with_default+
22920
4.62k
        if (p->error_indicator) {
22921
0
            p->level--;
22922
0
            return NULL;
22923
0
        }
22924
4.62k
        D(fprintf(stderr, "%*c> invalid_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+"));
22925
4.62k
        asdl_seq * _loop1_30_var;
22926
4.62k
        if (
22927
4.62k
            (_loop1_30_var = _loop1_30_rule(p))  // param_with_default+
22928
4.62k
        )
22929
537
        {
22930
537
            D(fprintf(stderr, "%*c+ invalid_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+"));
22931
537
            _res = _loop1_30_var;
22932
537
            goto done;
22933
537
        }
22934
4.08k
        p->mark = _mark;
22935
4.08k
        D(fprintf(stderr, "%*c%s invalid_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
22936
4.08k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default+"));
22937
4.08k
    }
22938
0
    _res = NULL;
22939
5.06k
  done:
22940
5.06k
    p->level--;
22941
5.06k
    return _res;
22942
4.08k
}
22943
22944
// invalid_lambda_parameters:
22945
//     | "/" ','
22946
//     | (lambda_slash_no_default | lambda_slash_with_default) lambda_param_maybe_default* '/'
22947
//     | lambda_slash_no_default? lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default
22948
//     | lambda_param_no_default* '(' ','.lambda_param+ ','? ')'
22949
//     | [(lambda_slash_no_default | lambda_slash_with_default)] lambda_param_maybe_default* '*' (',' | lambda_param_no_default) lambda_param_maybe_default* '/'
22950
//     | lambda_param_maybe_default+ '/' '*'
22951
static void *
22952
invalid_lambda_parameters_rule(Parser *p)
22953
8.54k
{
22954
8.54k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22955
0
        _Pypegen_stack_overflow(p);
22956
0
    }
22957
8.54k
    if (p->error_indicator) {
22958
0
        p->level--;
22959
0
        return NULL;
22960
0
    }
22961
8.54k
    void * _res = NULL;
22962
8.54k
    int _mark = p->mark;
22963
8.54k
    { // "/" ','
22964
8.54k
        if (p->error_indicator) {
22965
0
            p->level--;
22966
0
            return NULL;
22967
0
        }
22968
8.54k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"/\" ','"));
22969
8.54k
        Token * _literal;
22970
8.54k
        Token * a;
22971
8.54k
        if (
22972
8.54k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
22973
8.54k
            &&
22974
8.54k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
22975
8.54k
        )
22976
1
        {
22977
1
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"/\" ','"));
22978
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "at least one parameter must precede /" );
22979
1
            if (_res == NULL && PyErr_Occurred()) {
22980
1
                p->error_indicator = 1;
22981
1
                p->level--;
22982
1
                return NULL;
22983
1
            }
22984
0
            goto done;
22985
1
        }
22986
8.54k
        p->mark = _mark;
22987
8.54k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22988
8.54k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"/\" ','"));
22989
8.54k
    }
22990
0
    { // (lambda_slash_no_default | lambda_slash_with_default) lambda_param_maybe_default* '/'
22991
8.54k
        if (p->error_indicator) {
22992
1
            p->level--;
22993
1
            return NULL;
22994
1
        }
22995
8.54k
        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* '/'"));
22996
8.54k
        asdl_seq * _loop0_74_var;
22997
8.54k
        void *_tmp_129_var;
22998
8.54k
        Token * a;
22999
8.54k
        if (
23000
8.54k
            (_tmp_129_var = _tmp_129_rule(p))  // lambda_slash_no_default | lambda_slash_with_default
23001
8.54k
            &&
23002
8.54k
            (_loop0_74_var = _loop0_74_rule(p))  // lambda_param_maybe_default*
23003
8.54k
            &&
23004
8.54k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
23005
8.54k
        )
23006
4
        {
23007
4
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(lambda_slash_no_default | lambda_slash_with_default) lambda_param_maybe_default* '/'"));
23008
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "/ may appear only once" );
23009
4
            if (_res == NULL && PyErr_Occurred()) {
23010
4
                p->error_indicator = 1;
23011
4
                p->level--;
23012
4
                return NULL;
23013
4
            }
23014
0
            goto done;
23015
4
        }
23016
8.54k
        p->mark = _mark;
23017
8.54k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
23018
8.54k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(lambda_slash_no_default | lambda_slash_with_default) lambda_param_maybe_default* '/'"));
23019
8.54k
    }
23020
0
    { // lambda_slash_no_default? lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default
23021
8.54k
        if (p->error_indicator) {
23022
445
            p->level--;
23023
445
            return NULL;
23024
445
        }
23025
8.09k
        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"));
23026
8.09k
        asdl_seq * _loop0_70_var;
23027
8.09k
        void *_opt_var;
23028
8.09k
        UNUSED(_opt_var); // Silence compiler warnings
23029
8.09k
        arg_ty a;
23030
8.09k
        void *invalid_lambda_parameters_helper_var;
23031
8.09k
        if (
23032
8.09k
            (_opt_var = lambda_slash_no_default_rule(p), !p->error_indicator)  // lambda_slash_no_default?
23033
8.09k
            &&
23034
8.09k
            (_loop0_70_var = _loop0_70_rule(p))  // lambda_param_no_default*
23035
8.09k
            &&
23036
8.09k
            (invalid_lambda_parameters_helper_var = invalid_lambda_parameters_helper_rule(p))  // invalid_lambda_parameters_helper
23037
8.09k
            &&
23038
8.09k
            (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
23039
8.09k
        )
23040
3
        {
23041
3
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default? lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default"));
23042
3
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "parameter without a default follows parameter with a default" );
23043
3
            if (_res == NULL && PyErr_Occurred()) {
23044
3
                p->error_indicator = 1;
23045
3
                p->level--;
23046
3
                return NULL;
23047
3
            }
23048
0
            goto done;
23049
3
        }
23050
8.09k
        p->mark = _mark;
23051
8.09k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
23052
8.09k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_no_default? lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default"));
23053
8.09k
    }
23054
0
    { // lambda_param_no_default* '(' ','.lambda_param+ ','? ')'
23055
8.09k
        if (p->error_indicator) {
23056
0
            p->level--;
23057
0
            return NULL;
23058
0
        }
23059
8.09k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* '(' ','.lambda_param+ ','? ')'"));
23060
8.09k
        asdl_seq * _gather_131_var;
23061
8.09k
        asdl_seq * _loop0_70_var;
23062
8.09k
        void *_opt_var;
23063
8.09k
        UNUSED(_opt_var); // Silence compiler warnings
23064
8.09k
        Token * a;
23065
8.09k
        Token * b;
23066
8.09k
        if (
23067
8.09k
            (_loop0_70_var = _loop0_70_rule(p))  // lambda_param_no_default*
23068
8.09k
            &&
23069
8.09k
            (a = _PyPegen_expect_token(p, 7))  // token='('
23070
8.09k
            &&
23071
8.09k
            (_gather_131_var = _gather_131_rule(p))  // ','.lambda_param+
23072
8.09k
            &&
23073
8.09k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
23074
8.09k
            &&
23075
8.09k
            (b = _PyPegen_expect_token(p, 8))  // token=')'
23076
8.09k
        )
23077
1
        {
23078
1
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* '(' ','.lambda_param+ ','? ')'"));
23079
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "Lambda expression parameters cannot be parenthesized" );
23080
1
            if (_res == NULL && PyErr_Occurred()) {
23081
1
                p->error_indicator = 1;
23082
1
                p->level--;
23083
1
                return NULL;
23084
1
            }
23085
0
            goto done;
23086
1
        }
23087
8.09k
        p->mark = _mark;
23088
8.09k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
23089
8.09k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* '(' ','.lambda_param+ ','? ')'"));
23090
8.09k
    }
23091
0
    { // [(lambda_slash_no_default | lambda_slash_with_default)] lambda_param_maybe_default* '*' (',' | lambda_param_no_default) lambda_param_maybe_default* '/'
23092
8.09k
        if (p->error_indicator) {
23093
9
            p->level--;
23094
9
            return NULL;
23095
9
        }
23096
8.08k
        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* '/'"));
23097
8.08k
        Token * _literal;
23098
8.08k
        asdl_seq * _loop0_74_var;
23099
8.08k
        asdl_seq * _loop0_74_var_1;
23100
8.08k
        void *_opt_var;
23101
8.08k
        UNUSED(_opt_var); // Silence compiler warnings
23102
8.08k
        void *_tmp_132_var;
23103
8.08k
        Token * a;
23104
8.08k
        if (
23105
8.08k
            (_opt_var = _tmp_129_rule(p), !p->error_indicator)  // [(lambda_slash_no_default | lambda_slash_with_default)]
23106
8.08k
            &&
23107
8.08k
            (_loop0_74_var = _loop0_74_rule(p))  // lambda_param_maybe_default*
23108
8.08k
            &&
23109
8.08k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
23110
8.08k
            &&
23111
8.08k
            (_tmp_132_var = _tmp_132_rule(p))  // ',' | lambda_param_no_default
23112
8.08k
            &&
23113
8.08k
            (_loop0_74_var_1 = _loop0_74_rule(p))  // lambda_param_maybe_default*
23114
8.08k
            &&
23115
8.08k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
23116
8.08k
        )
23117
4
        {
23118
4
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "[(lambda_slash_no_default | lambda_slash_with_default)] lambda_param_maybe_default* '*' (',' | lambda_param_no_default) lambda_param_maybe_default* '/'"));
23119
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "/ must be ahead of *" );
23120
4
            if (_res == NULL && PyErr_Occurred()) {
23121
4
                p->error_indicator = 1;
23122
4
                p->level--;
23123
4
                return NULL;
23124
4
            }
23125
0
            goto done;
23126
4
        }
23127
8.07k
        p->mark = _mark;
23128
8.07k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
23129
8.07k
                  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* '/'"));
23130
8.07k
    }
23131
0
    { // lambda_param_maybe_default+ '/' '*'
23132
8.07k
        if (p->error_indicator) {
23133
225
            p->level--;
23134
225
            return NULL;
23135
225
        }
23136
7.85k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default+ '/' '*'"));
23137
7.85k
        Token * _literal;
23138
7.85k
        asdl_seq * _loop1_75_var;
23139
7.85k
        Token * a;
23140
7.85k
        if (
23141
7.85k
            (_loop1_75_var = _loop1_75_rule(p))  // lambda_param_maybe_default+
23142
7.85k
            &&
23143
7.85k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
23144
7.85k
            &&
23145
7.85k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
23146
7.85k
        )
23147
4
        {
23148
4
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default+ '/' '*'"));
23149
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expected comma between / and *" );
23150
4
            if (_res == NULL && PyErr_Occurred()) {
23151
4
                p->error_indicator = 1;
23152
4
                p->level--;
23153
4
                return NULL;
23154
4
            }
23155
0
            goto done;
23156
4
        }
23157
7.85k
        p->mark = _mark;
23158
7.85k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
23159
7.85k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default+ '/' '*'"));
23160
7.85k
    }
23161
0
    _res = NULL;
23162
7.85k
  done:
23163
7.85k
    p->level--;
23164
7.85k
    return _res;
23165
7.85k
}
23166
23167
// invalid_lambda_parameters_helper:
23168
//     | lambda_slash_with_default
23169
//     | lambda_param_with_default+
23170
static void *
23171
invalid_lambda_parameters_helper_rule(Parser *p)
23172
8.09k
{
23173
8.09k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23174
0
        _Pypegen_stack_overflow(p);
23175
0
    }
23176
8.09k
    if (p->error_indicator) {
23177
0
        p->level--;
23178
0
        return NULL;
23179
0
    }
23180
8.09k
    void * _res = NULL;
23181
8.09k
    int _mark = p->mark;
23182
8.09k
    { // lambda_slash_with_default
23183
8.09k
        if (p->error_indicator) {
23184
0
            p->level--;
23185
0
            return NULL;
23186
0
        }
23187
8.09k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
23188
8.09k
        SlashWithDefault* a;
23189
8.09k
        if (
23190
8.09k
            (a = lambda_slash_with_default_rule(p))  // lambda_slash_with_default
23191
8.09k
        )
23192
732
        {
23193
732
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
23194
732
            _res = _PyPegen_singleton_seq ( p , a );
23195
732
            if (_res == NULL && PyErr_Occurred()) {
23196
0
                p->error_indicator = 1;
23197
0
                p->level--;
23198
0
                return NULL;
23199
0
            }
23200
732
            goto done;
23201
732
        }
23202
7.36k
        p->mark = _mark;
23203
7.36k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
23204
7.36k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default"));
23205
7.36k
    }
23206
0
    { // lambda_param_with_default+
23207
7.36k
        if (p->error_indicator) {
23208
0
            p->level--;
23209
0
            return NULL;
23210
0
        }
23211
7.36k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+"));
23212
7.36k
        asdl_seq * _loop1_73_var;
23213
7.36k
        if (
23214
7.36k
            (_loop1_73_var = _loop1_73_rule(p))  // lambda_param_with_default+
23215
7.36k
        )
23216
1.59k
        {
23217
1.59k
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+"));
23218
1.59k
            _res = _loop1_73_var;
23219
1.59k
            goto done;
23220
1.59k
        }
23221
5.76k
        p->mark = _mark;
23222
5.76k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
23223
5.76k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default+"));
23224
5.76k
    }
23225
0
    _res = NULL;
23226
8.09k
  done:
23227
8.09k
    p->level--;
23228
8.09k
    return _res;
23229
5.76k
}
23230
23231
// invalid_lambda_star_etc:
23232
//     | '*' (':' | ',' (':' | '**'))
23233
//     | '*' lambda_param '='
23234
//     | '*' (lambda_param_no_default | ',') lambda_param_maybe_default* '*' (lambda_param_no_default | ',')
23235
static void *
23236
invalid_lambda_star_etc_rule(Parser *p)
23237
7.85k
{
23238
7.85k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23239
0
        _Pypegen_stack_overflow(p);
23240
0
    }
23241
7.85k
    if (p->error_indicator) {
23242
0
        p->level--;
23243
0
        return NULL;
23244
0
    }
23245
7.85k
    void * _res = NULL;
23246
7.85k
    int _mark = p->mark;
23247
7.85k
    { // '*' (':' | ',' (':' | '**'))
23248
7.85k
        if (p->error_indicator) {
23249
0
            p->level--;
23250
0
            return NULL;
23251
0
        }
23252
7.85k
        D(fprintf(stderr, "%*c> invalid_lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
23253
7.85k
        Token * _literal;
23254
7.85k
        void *_tmp_133_var;
23255
7.85k
        if (
23256
7.85k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
23257
7.85k
            &&
23258
7.85k
            (_tmp_133_var = _tmp_133_rule(p))  // ':' | ',' (':' | '**')
23259
7.85k
        )
23260
7
        {
23261
7
            D(fprintf(stderr, "%*c+ invalid_lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
23262
7
            _res = RAISE_SYNTAX_ERROR ( "named parameters must follow bare *" );
23263
7
            if (_res == NULL && PyErr_Occurred()) {
23264
7
                p->error_indicator = 1;
23265
7
                p->level--;
23266
7
                return NULL;
23267
7
            }
23268
0
            goto done;
23269
7
        }
23270
7.84k
        p->mark = _mark;
23271
7.84k
        D(fprintf(stderr, "%*c%s invalid_lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
23272
7.84k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
23273
7.84k
    }
23274
0
    { // '*' lambda_param '='
23275
7.84k
        if (p->error_indicator) {
23276
0
            p->level--;
23277
0
            return NULL;
23278
0
        }
23279
7.84k
        D(fprintf(stderr, "%*c> invalid_lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' lambda_param '='"));
23280
7.84k
        Token * _literal;
23281
7.84k
        Token * a;
23282
7.84k
        arg_ty lambda_param_var;
23283
7.84k
        if (
23284
7.84k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
23285
7.84k
            &&
23286
7.84k
            (lambda_param_var = lambda_param_rule(p))  // lambda_param
23287
7.84k
            &&
23288
7.84k
            (a = _PyPegen_expect_token(p, 22))  // token='='
23289
7.84k
        )
23290
8
        {
23291
8
            D(fprintf(stderr, "%*c+ invalid_lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' lambda_param '='"));
23292
8
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "var-positional parameter cannot have default value" );
23293
8
            if (_res == NULL && PyErr_Occurred()) {
23294
8
                p->error_indicator = 1;
23295
8
                p->level--;
23296
8
                return NULL;
23297
8
            }
23298
0
            goto done;
23299
8
        }
23300
7.83k
        p->mark = _mark;
23301
7.83k
        D(fprintf(stderr, "%*c%s invalid_lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
23302
7.83k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' lambda_param '='"));
23303
7.83k
    }
23304
0
    { // '*' (lambda_param_no_default | ',') lambda_param_maybe_default* '*' (lambda_param_no_default | ',')
23305
7.83k
        if (p->error_indicator) {
23306
0
            p->level--;
23307
0
            return NULL;
23308
0
        }
23309
7.83k
        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 | ',')"));
23310
7.83k
        Token * _literal;
23311
7.83k
        asdl_seq * _loop0_74_var;
23312
7.83k
        void *_tmp_134_var;
23313
7.83k
        void *_tmp_134_var_1;
23314
7.83k
        Token * a;
23315
7.83k
        if (
23316
7.83k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
23317
7.83k
            &&
23318
7.83k
            (_tmp_134_var = _tmp_134_rule(p))  // lambda_param_no_default | ','
23319
7.83k
            &&
23320
7.83k
            (_loop0_74_var = _loop0_74_rule(p))  // lambda_param_maybe_default*
23321
7.83k
            &&
23322
7.83k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
23323
7.83k
            &&
23324
7.83k
            (_tmp_134_var_1 = _tmp_134_rule(p))  // lambda_param_no_default | ','
23325
7.83k
        )
23326
4
        {
23327
4
            D(fprintf(stderr, "%*c+ invalid_lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (lambda_param_no_default | ',') lambda_param_maybe_default* '*' (lambda_param_no_default | ',')"));
23328
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "* may appear only once" );
23329
4
            if (_res == NULL && PyErr_Occurred()) {
23330
4
                p->error_indicator = 1;
23331
4
                p->level--;
23332
4
                return NULL;
23333
4
            }
23334
0
            goto done;
23335
4
        }
23336
7.83k
        p->mark = _mark;
23337
7.83k
        D(fprintf(stderr, "%*c%s invalid_lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
23338
7.83k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (lambda_param_no_default | ',') lambda_param_maybe_default* '*' (lambda_param_no_default | ',')"));
23339
7.83k
    }
23340
0
    _res = NULL;
23341
7.83k
  done:
23342
7.83k
    p->level--;
23343
7.83k
    return _res;
23344
7.83k
}
23345
23346
// invalid_lambda_kwds:
23347
//     | '**' lambda_param '='
23348
//     | '**' lambda_param ',' lambda_param
23349
//     | '**' lambda_param ',' ('*' | '**' | '/')
23350
static void *
23351
invalid_lambda_kwds_rule(Parser *p)
23352
7.83k
{
23353
7.83k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23354
0
        _Pypegen_stack_overflow(p);
23355
0
    }
23356
7.83k
    if (p->error_indicator) {
23357
0
        p->level--;
23358
0
        return NULL;
23359
0
    }
23360
7.83k
    void * _res = NULL;
23361
7.83k
    int _mark = p->mark;
23362
7.83k
    { // '**' lambda_param '='
23363
7.83k
        if (p->error_indicator) {
23364
0
            p->level--;
23365
0
            return NULL;
23366
0
        }
23367
7.83k
        D(fprintf(stderr, "%*c> invalid_lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param '='"));
23368
7.83k
        Token * _literal;
23369
7.83k
        Token * a;
23370
7.83k
        arg_ty lambda_param_var;
23371
7.83k
        if (
23372
7.83k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
23373
7.83k
            &&
23374
7.83k
            (lambda_param_var = lambda_param_rule(p))  // lambda_param
23375
7.83k
            &&
23376
7.83k
            (a = _PyPegen_expect_token(p, 22))  // token='='
23377
7.83k
        )
23378
1
        {
23379
1
            D(fprintf(stderr, "%*c+ invalid_lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' lambda_param '='"));
23380
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "var-keyword parameter cannot have default value" );
23381
1
            if (_res == NULL && PyErr_Occurred()) {
23382
1
                p->error_indicator = 1;
23383
1
                p->level--;
23384
1
                return NULL;
23385
1
            }
23386
0
            goto done;
23387
1
        }
23388
7.82k
        p->mark = _mark;
23389
7.82k
        D(fprintf(stderr, "%*c%s invalid_lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
23390
7.82k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param '='"));
23391
7.82k
    }
23392
0
    { // '**' lambda_param ',' lambda_param
23393
7.82k
        if (p->error_indicator) {
23394
1
            p->level--;
23395
1
            return NULL;
23396
1
        }
23397
7.82k
        D(fprintf(stderr, "%*c> invalid_lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param ',' lambda_param"));
23398
7.82k
        Token * _literal;
23399
7.82k
        Token * _literal_1;
23400
7.82k
        arg_ty a;
23401
7.82k
        arg_ty lambda_param_var;
23402
7.82k
        if (
23403
7.82k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
23404
7.82k
            &&
23405
7.82k
            (lambda_param_var = lambda_param_rule(p))  // lambda_param
23406
7.82k
            &&
23407
7.82k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
23408
7.82k
            &&
23409
7.82k
            (a = lambda_param_rule(p))  // lambda_param
23410
7.82k
        )
23411
1
        {
23412
1
            D(fprintf(stderr, "%*c+ invalid_lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' lambda_param ',' lambda_param"));
23413
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "parameters cannot follow var-keyword parameter" );
23414
1
            if (_res == NULL && PyErr_Occurred()) {
23415
1
                p->error_indicator = 1;
23416
1
                p->level--;
23417
1
                return NULL;
23418
1
            }
23419
0
            goto done;
23420
1
        }
23421
7.82k
        p->mark = _mark;
23422
7.82k
        D(fprintf(stderr, "%*c%s invalid_lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
23423
7.82k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param ',' lambda_param"));
23424
7.82k
    }
23425
0
    { // '**' lambda_param ',' ('*' | '**' | '/')
23426
7.82k
        if (p->error_indicator) {
23427
1
            p->level--;
23428
1
            return NULL;
23429
1
        }
23430
7.82k
        D(fprintf(stderr, "%*c> invalid_lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param ',' ('*' | '**' | '/')"));
23431
7.82k
        Token * _literal;
23432
7.82k
        Token * _literal_1;
23433
7.82k
        Token* a;
23434
7.82k
        arg_ty lambda_param_var;
23435
7.82k
        if (
23436
7.82k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
23437
7.82k
            &&
23438
7.82k
            (lambda_param_var = lambda_param_rule(p))  // lambda_param
23439
7.82k
            &&
23440
7.82k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
23441
7.82k
            &&
23442
7.82k
            (a = (Token*)_tmp_128_rule(p))  // '*' | '**' | '/'
23443
7.82k
        )
23444
2
        {
23445
2
            D(fprintf(stderr, "%*c+ invalid_lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' lambda_param ',' ('*' | '**' | '/')"));
23446
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "parameters cannot follow var-keyword parameter" );
23447
2
            if (_res == NULL && PyErr_Occurred()) {
23448
2
                p->error_indicator = 1;
23449
2
                p->level--;
23450
2
                return NULL;
23451
2
            }
23452
0
            goto done;
23453
2
        }
23454
7.82k
        p->mark = _mark;
23455
7.82k
        D(fprintf(stderr, "%*c%s invalid_lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
23456
7.82k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param ',' ('*' | '**' | '/')"));
23457
7.82k
    }
23458
0
    _res = NULL;
23459
7.82k
  done:
23460
7.82k
    p->level--;
23461
7.82k
    return _res;
23462
7.82k
}
23463
23464
// invalid_double_type_comments: TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
23465
static void *
23466
invalid_double_type_comments_rule(Parser *p)
23467
2.27k
{
23468
2.27k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23469
0
        _Pypegen_stack_overflow(p);
23470
0
    }
23471
2.27k
    if (p->error_indicator) {
23472
0
        p->level--;
23473
0
        return NULL;
23474
0
    }
23475
2.27k
    void * _res = NULL;
23476
2.27k
    int _mark = p->mark;
23477
2.27k
    { // TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
23478
2.27k
        if (p->error_indicator) {
23479
0
            p->level--;
23480
0
            return NULL;
23481
0
        }
23482
2.27k
        D(fprintf(stderr, "%*c> invalid_double_type_comments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT"));
23483
2.27k
        Token * indent_var;
23484
2.27k
        Token * newline_var;
23485
2.27k
        Token * newline_var_1;
23486
2.27k
        Token * type_comment_var;
23487
2.27k
        Token * type_comment_var_1;
23488
2.27k
        if (
23489
2.27k
            (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
23490
2.27k
            &&
23491
2.27k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23492
2.27k
            &&
23493
2.27k
            (type_comment_var_1 = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
23494
2.27k
            &&
23495
2.27k
            (newline_var_1 = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23496
2.27k
            &&
23497
2.27k
            (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
23498
2.27k
        )
23499
0
        {
23500
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"));
23501
0
            _res = RAISE_SYNTAX_ERROR ( "Cannot have two type comments on def" );
23502
0
            if (_res == NULL && PyErr_Occurred()) {
23503
0
                p->error_indicator = 1;
23504
0
                p->level--;
23505
0
                return NULL;
23506
0
            }
23507
0
            goto done;
23508
0
        }
23509
2.27k
        p->mark = _mark;
23510
2.27k
        D(fprintf(stderr, "%*c%s invalid_double_type_comments[%d-%d]: %s failed!\n", p->level, ' ',
23511
2.27k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT"));
23512
2.27k
    }
23513
0
    _res = NULL;
23514
2.27k
  done:
23515
2.27k
    p->level--;
23516
2.27k
    return _res;
23517
2.27k
}
23518
23519
// invalid_with_item: expression 'as' expression &(',' | ')' | ':')
23520
static void *
23521
invalid_with_item_rule(Parser *p)
23522
5.65k
{
23523
5.65k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23524
0
        _Pypegen_stack_overflow(p);
23525
0
    }
23526
5.65k
    if (p->error_indicator) {
23527
0
        p->level--;
23528
0
        return NULL;
23529
0
    }
23530
5.65k
    void * _res = NULL;
23531
5.65k
    int _mark = p->mark;
23532
5.65k
    { // expression 'as' expression &(',' | ')' | ':')
23533
5.65k
        if (p->error_indicator) {
23534
0
            p->level--;
23535
0
            return NULL;
23536
0
        }
23537
5.65k
        D(fprintf(stderr, "%*c> invalid_with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')"));
23538
5.65k
        Token * _keyword;
23539
5.65k
        expr_ty a;
23540
5.65k
        expr_ty expression_var;
23541
5.65k
        if (
23542
5.65k
            (expression_var = expression_rule(p))  // expression
23543
5.65k
            &&
23544
5.65k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
23545
5.65k
            &&
23546
5.65k
            (a = expression_rule(p))  // expression
23547
5.65k
            &&
23548
5.65k
            _PyPegen_lookahead(1, _tmp_35_rule, p)
23549
5.65k
        )
23550
2
        {
23551
2
            D(fprintf(stderr, "%*c+ invalid_with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')"));
23552
2
            _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( STAR_TARGETS , a );
23553
2
            if (_res == NULL && PyErr_Occurred()) {
23554
2
                p->error_indicator = 1;
23555
2
                p->level--;
23556
2
                return NULL;
23557
2
            }
23558
0
            goto done;
23559
2
        }
23560
5.65k
        p->mark = _mark;
23561
5.65k
        D(fprintf(stderr, "%*c%s invalid_with_item[%d-%d]: %s failed!\n", p->level, ' ',
23562
5.65k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')"));
23563
5.65k
    }
23564
0
    _res = NULL;
23565
5.65k
  done:
23566
5.65k
    p->level--;
23567
5.65k
    return _res;
23568
5.65k
}
23569
23570
// invalid_for_if_clause: 'async'? 'for' (bitwise_or ((',' bitwise_or))* ','?) !'in'
23571
static void *
23572
invalid_for_if_clause_rule(Parser *p)
23573
45.9k
{
23574
45.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23575
0
        _Pypegen_stack_overflow(p);
23576
0
    }
23577
45.9k
    if (p->error_indicator) {
23578
0
        p->level--;
23579
0
        return NULL;
23580
0
    }
23581
45.9k
    void * _res = NULL;
23582
45.9k
    int _mark = p->mark;
23583
45.9k
    { // 'async'? 'for' (bitwise_or ((',' bitwise_or))* ','?) !'in'
23584
45.9k
        if (p->error_indicator) {
23585
0
            p->level--;
23586
0
            return NULL;
23587
0
        }
23588
45.9k
        D(fprintf(stderr, "%*c> invalid_for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'? 'for' (bitwise_or ((',' bitwise_or))* ','?) !'in'"));
23589
45.9k
        Token * _keyword;
23590
45.9k
        void *_opt_var;
23591
45.9k
        UNUSED(_opt_var); // Silence compiler warnings
23592
45.9k
        void *_tmp_135_var;
23593
45.9k
        if (
23594
45.9k
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
23595
45.9k
            &&
23596
45.9k
            (_keyword = _PyPegen_expect_token(p, 699))  // token='for'
23597
45.9k
            &&
23598
45.9k
            (_tmp_135_var = _tmp_135_rule(p))  // bitwise_or ((',' bitwise_or))* ','?
23599
45.9k
            &&
23600
45.9k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 700)  // token='in'
23601
45.9k
        )
23602
20
        {
23603
20
            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'"));
23604
20
            _res = RAISE_SYNTAX_ERROR ( "'in' expected after for-loop variables" );
23605
20
            if (_res == NULL && PyErr_Occurred()) {
23606
20
                p->error_indicator = 1;
23607
20
                p->level--;
23608
20
                return NULL;
23609
20
            }
23610
0
            goto done;
23611
20
        }
23612
45.8k
        p->mark = _mark;
23613
45.8k
        D(fprintf(stderr, "%*c%s invalid_for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
23614
45.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'for' (bitwise_or ((',' bitwise_or))* ','?) !'in'"));
23615
45.8k
    }
23616
0
    _res = NULL;
23617
45.8k
  done:
23618
45.8k
    p->level--;
23619
45.8k
    return _res;
23620
45.8k
}
23621
23622
// invalid_for_target: 'async'? 'for' star_expressions
23623
static void *
23624
invalid_for_target_rule(Parser *p)
23625
45.5k
{
23626
45.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23627
0
        _Pypegen_stack_overflow(p);
23628
0
    }
23629
45.5k
    if (p->error_indicator) {
23630
0
        p->level--;
23631
0
        return NULL;
23632
0
    }
23633
45.5k
    void * _res = NULL;
23634
45.5k
    int _mark = p->mark;
23635
45.5k
    { // 'async'? 'for' star_expressions
23636
45.5k
        if (p->error_indicator) {
23637
0
            p->level--;
23638
0
            return NULL;
23639
0
        }
23640
45.5k
        D(fprintf(stderr, "%*c> invalid_for_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'? 'for' star_expressions"));
23641
45.5k
        Token * _keyword;
23642
45.5k
        void *_opt_var;
23643
45.5k
        UNUSED(_opt_var); // Silence compiler warnings
23644
45.5k
        expr_ty a;
23645
45.5k
        if (
23646
45.5k
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
23647
45.5k
            &&
23648
45.5k
            (_keyword = _PyPegen_expect_token(p, 699))  // token='for'
23649
45.5k
            &&
23650
45.5k
            (a = star_expressions_rule(p))  // star_expressions
23651
45.5k
        )
23652
1.94k
        {
23653
1.94k
            D(fprintf(stderr, "%*c+ invalid_for_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'? 'for' star_expressions"));
23654
1.94k
            _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( FOR_TARGETS , a );
23655
1.94k
            if (_res == NULL && PyErr_Occurred()) {
23656
7
                p->error_indicator = 1;
23657
7
                p->level--;
23658
7
                return NULL;
23659
7
            }
23660
1.94k
            goto done;
23661
1.94k
        }
23662
43.5k
        p->mark = _mark;
23663
43.5k
        D(fprintf(stderr, "%*c%s invalid_for_target[%d-%d]: %s failed!\n", p->level, ' ',
23664
43.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'for' star_expressions"));
23665
43.5k
    }
23666
0
    _res = NULL;
23667
45.5k
  done:
23668
45.5k
    p->level--;
23669
45.5k
    return _res;
23670
43.5k
}
23671
23672
// invalid_group: '(' starred_expression ')' | '(' '**' expression ')'
23673
static void *
23674
invalid_group_rule(Parser *p)
23675
8.11k
{
23676
8.11k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23677
0
        _Pypegen_stack_overflow(p);
23678
0
    }
23679
8.11k
    if (p->error_indicator) {
23680
0
        p->level--;
23681
0
        return NULL;
23682
0
    }
23683
8.11k
    void * _res = NULL;
23684
8.11k
    int _mark = p->mark;
23685
8.11k
    { // '(' starred_expression ')'
23686
8.11k
        if (p->error_indicator) {
23687
0
            p->level--;
23688
0
            return NULL;
23689
0
        }
23690
8.11k
        D(fprintf(stderr, "%*c> invalid_group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' starred_expression ')'"));
23691
8.11k
        Token * _literal;
23692
8.11k
        Token * _literal_1;
23693
8.11k
        expr_ty a;
23694
8.11k
        if (
23695
8.11k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
23696
8.11k
            &&
23697
8.11k
            (a = starred_expression_rule(p))  // starred_expression
23698
8.11k
            &&
23699
8.11k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
23700
8.11k
        )
23701
3
        {
23702
3
            D(fprintf(stderr, "%*c+ invalid_group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' starred_expression ')'"));
23703
3
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use starred expression here" );
23704
3
            if (_res == NULL && PyErr_Occurred()) {
23705
3
                p->error_indicator = 1;
23706
3
                p->level--;
23707
3
                return NULL;
23708
3
            }
23709
0
            goto done;
23710
3
        }
23711
8.11k
        p->mark = _mark;
23712
8.11k
        D(fprintf(stderr, "%*c%s invalid_group[%d-%d]: %s failed!\n", p->level, ' ',
23713
8.11k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' starred_expression ')'"));
23714
8.11k
    }
23715
0
    { // '(' '**' expression ')'
23716
8.11k
        if (p->error_indicator) {
23717
288
            p->level--;
23718
288
            return NULL;
23719
288
        }
23720
7.82k
        D(fprintf(stderr, "%*c> invalid_group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' '**' expression ')'"));
23721
7.82k
        Token * _literal;
23722
7.82k
        Token * _literal_1;
23723
7.82k
        Token * a;
23724
7.82k
        expr_ty expression_var;
23725
7.82k
        if (
23726
7.82k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
23727
7.82k
            &&
23728
7.82k
            (a = _PyPegen_expect_token(p, 35))  // token='**'
23729
7.82k
            &&
23730
7.82k
            (expression_var = expression_rule(p))  // expression
23731
7.82k
            &&
23732
7.82k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
23733
7.82k
        )
23734
1
        {
23735
1
            D(fprintf(stderr, "%*c+ invalid_group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' '**' expression ')'"));
23736
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use double starred expression here" );
23737
1
            if (_res == NULL && PyErr_Occurred()) {
23738
1
                p->error_indicator = 1;
23739
1
                p->level--;
23740
1
                return NULL;
23741
1
            }
23742
0
            goto done;
23743
1
        }
23744
7.82k
        p->mark = _mark;
23745
7.82k
        D(fprintf(stderr, "%*c%s invalid_group[%d-%d]: %s failed!\n", p->level, ' ',
23746
7.82k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' '**' expression ')'"));
23747
7.82k
    }
23748
0
    _res = NULL;
23749
7.82k
  done:
23750
7.82k
    p->level--;
23751
7.82k
    return _res;
23752
7.82k
}
23753
23754
// invalid_import: 'import' ','.dotted_name+ 'from' dotted_name | 'import' NEWLINE
23755
static void *
23756
invalid_import_rule(Parser *p)
23757
1.67k
{
23758
1.67k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23759
0
        _Pypegen_stack_overflow(p);
23760
0
    }
23761
1.67k
    if (p->error_indicator) {
23762
0
        p->level--;
23763
0
        return NULL;
23764
0
    }
23765
1.67k
    void * _res = NULL;
23766
1.67k
    int _mark = p->mark;
23767
1.67k
    { // 'import' ','.dotted_name+ 'from' dotted_name
23768
1.67k
        if (p->error_indicator) {
23769
0
            p->level--;
23770
0
            return NULL;
23771
0
        }
23772
1.67k
        D(fprintf(stderr, "%*c> invalid_import[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import' ','.dotted_name+ 'from' dotted_name"));
23773
1.67k
        asdl_seq * _gather_137_var;
23774
1.67k
        Token * _keyword;
23775
1.67k
        Token * a;
23776
1.67k
        expr_ty dotted_name_var;
23777
1.67k
        if (
23778
1.67k
            (a = _PyPegen_expect_token(p, 639))  // token='import'
23779
1.67k
            &&
23780
1.67k
            (_gather_137_var = _gather_137_rule(p))  // ','.dotted_name+
23781
1.67k
            &&
23782
1.67k
            (_keyword = _PyPegen_expect_token(p, 638))  // token='from'
23783
1.67k
            &&
23784
1.67k
            (dotted_name_var = dotted_name_rule(p))  // dotted_name
23785
1.67k
        )
23786
1
        {
23787
1
            D(fprintf(stderr, "%*c+ invalid_import[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import' ','.dotted_name+ 'from' dotted_name"));
23788
1
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "Did you mean to use 'from ... import ...' instead?" );
23789
1
            if (_res == NULL && PyErr_Occurred()) {
23790
1
                p->error_indicator = 1;
23791
1
                p->level--;
23792
1
                return NULL;
23793
1
            }
23794
0
            goto done;
23795
1
        }
23796
1.67k
        p->mark = _mark;
23797
1.67k
        D(fprintf(stderr, "%*c%s invalid_import[%d-%d]: %s failed!\n", p->level, ' ',
23798
1.67k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import' ','.dotted_name+ 'from' dotted_name"));
23799
1.67k
    }
23800
0
    { // 'import' NEWLINE
23801
1.67k
        if (p->error_indicator) {
23802
2
            p->level--;
23803
2
            return NULL;
23804
2
        }
23805
1.67k
        D(fprintf(stderr, "%*c> invalid_import[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import' NEWLINE"));
23806
1.67k
        Token * _keyword;
23807
1.67k
        Token * token;
23808
1.67k
        if (
23809
1.67k
            (_keyword = _PyPegen_expect_token(p, 639))  // token='import'
23810
1.67k
            &&
23811
1.67k
            (token = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23812
1.67k
        )
23813
3
        {
23814
3
            D(fprintf(stderr, "%*c+ invalid_import[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import' NEWLINE"));
23815
3
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( token , "Expected one or more names after 'import'" );
23816
3
            if (_res == NULL && PyErr_Occurred()) {
23817
3
                p->error_indicator = 1;
23818
3
                p->level--;
23819
3
                return NULL;
23820
3
            }
23821
0
            goto done;
23822
3
        }
23823
1.67k
        p->mark = _mark;
23824
1.67k
        D(fprintf(stderr, "%*c%s invalid_import[%d-%d]: %s failed!\n", p->level, ' ',
23825
1.67k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import' NEWLINE"));
23826
1.67k
    }
23827
0
    _res = NULL;
23828
1.67k
  done:
23829
1.67k
    p->level--;
23830
1.67k
    return _res;
23831
1.67k
}
23832
23833
// invalid_dotted_as_name: dotted_name 'as' !(NAME (',' | ')' | NEWLINE)) expression
23834
static void *
23835
invalid_dotted_as_name_rule(Parser *p)
23836
2.88k
{
23837
2.88k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23838
0
        _Pypegen_stack_overflow(p);
23839
0
    }
23840
2.88k
    if (p->error_indicator) {
23841
0
        p->level--;
23842
0
        return NULL;
23843
0
    }
23844
2.88k
    void * _res = NULL;
23845
2.88k
    int _mark = p->mark;
23846
2.88k
    { // dotted_name 'as' !(NAME (',' | ')' | NEWLINE)) expression
23847
2.88k
        if (p->error_indicator) {
23848
0
            p->level--;
23849
0
            return NULL;
23850
0
        }
23851
2.88k
        D(fprintf(stderr, "%*c> invalid_dotted_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name 'as' !(NAME (',' | ')' | NEWLINE)) expression"));
23852
2.88k
        Token * _keyword;
23853
2.88k
        expr_ty a;
23854
2.88k
        expr_ty dotted_name_var;
23855
2.88k
        if (
23856
2.88k
            (dotted_name_var = dotted_name_rule(p))  // dotted_name
23857
2.88k
            &&
23858
2.88k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
23859
2.88k
            &&
23860
2.88k
            _PyPegen_lookahead(0, _tmp_138_rule, p)
23861
2.88k
            &&
23862
2.88k
            (a = expression_rule(p))  // expression
23863
2.88k
        )
23864
3
        {
23865
3
            D(fprintf(stderr, "%*c+ invalid_dotted_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name 'as' !(NAME (',' | ')' | NEWLINE)) expression"));
23866
3
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use %s as import target" , _PyPegen_get_expr_name ( a ) );
23867
3
            if (_res == NULL && PyErr_Occurred()) {
23868
3
                p->error_indicator = 1;
23869
3
                p->level--;
23870
3
                return NULL;
23871
3
            }
23872
0
            goto done;
23873
3
        }
23874
2.88k
        p->mark = _mark;
23875
2.88k
        D(fprintf(stderr, "%*c%s invalid_dotted_as_name[%d-%d]: %s failed!\n", p->level, ' ',
23876
2.88k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name 'as' !(NAME (',' | ')' | NEWLINE)) expression"));
23877
2.88k
    }
23878
0
    _res = NULL;
23879
2.88k
  done:
23880
2.88k
    p->level--;
23881
2.88k
    return _res;
23882
2.88k
}
23883
23884
// invalid_import_from_as_name: NAME 'as' !(NAME (',' | ')' | NEWLINE)) expression
23885
static void *
23886
invalid_import_from_as_name_rule(Parser *p)
23887
2.20k
{
23888
2.20k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23889
0
        _Pypegen_stack_overflow(p);
23890
0
    }
23891
2.20k
    if (p->error_indicator) {
23892
0
        p->level--;
23893
0
        return NULL;
23894
0
    }
23895
2.20k
    void * _res = NULL;
23896
2.20k
    int _mark = p->mark;
23897
2.20k
    { // NAME 'as' !(NAME (',' | ')' | NEWLINE)) expression
23898
2.20k
        if (p->error_indicator) {
23899
0
            p->level--;
23900
0
            return NULL;
23901
0
        }
23902
2.20k
        D(fprintf(stderr, "%*c> invalid_import_from_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME 'as' !(NAME (',' | ')' | NEWLINE)) expression"));
23903
2.20k
        Token * _keyword;
23904
2.20k
        expr_ty a;
23905
2.20k
        expr_ty name_var;
23906
2.20k
        if (
23907
2.20k
            (name_var = _PyPegen_name_token(p))  // NAME
23908
2.20k
            &&
23909
2.20k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
23910
2.20k
            &&
23911
2.20k
            _PyPegen_lookahead(0, _tmp_138_rule, p)
23912
2.20k
            &&
23913
2.20k
            (a = expression_rule(p))  // expression
23914
2.20k
        )
23915
1
        {
23916
1
            D(fprintf(stderr, "%*c+ invalid_import_from_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME 'as' !(NAME (',' | ')' | NEWLINE)) expression"));
23917
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use %s as import target" , _PyPegen_get_expr_name ( a ) );
23918
1
            if (_res == NULL && PyErr_Occurred()) {
23919
1
                p->error_indicator = 1;
23920
1
                p->level--;
23921
1
                return NULL;
23922
1
            }
23923
0
            goto done;
23924
1
        }
23925
2.20k
        p->mark = _mark;
23926
2.20k
        D(fprintf(stderr, "%*c%s invalid_import_from_as_name[%d-%d]: %s failed!\n", p->level, ' ',
23927
2.20k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME 'as' !(NAME (',' | ')' | NEWLINE)) expression"));
23928
2.20k
    }
23929
0
    _res = NULL;
23930
2.20k
  done:
23931
2.20k
    p->level--;
23932
2.20k
    return _res;
23933
2.20k
}
23934
23935
// invalid_import_from_targets: import_from_as_names ',' NEWLINE | NEWLINE
23936
static void *
23937
invalid_import_from_targets_rule(Parser *p)
23938
32
{
23939
32
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23940
0
        _Pypegen_stack_overflow(p);
23941
0
    }
23942
32
    if (p->error_indicator) {
23943
0
        p->level--;
23944
0
        return NULL;
23945
0
    }
23946
32
    void * _res = NULL;
23947
32
    int _mark = p->mark;
23948
32
    { // import_from_as_names ',' NEWLINE
23949
32
        if (p->error_indicator) {
23950
0
            p->level--;
23951
0
            return NULL;
23952
0
        }
23953
32
        D(fprintf(stderr, "%*c> invalid_import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_names ',' NEWLINE"));
23954
32
        Token * _literal;
23955
32
        asdl_alias_seq* import_from_as_names_var;
23956
32
        Token * newline_var;
23957
32
        if (
23958
32
            (import_from_as_names_var = import_from_as_names_rule(p))  // import_from_as_names
23959
32
            &&
23960
32
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
23961
32
            &&
23962
32
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23963
32
        )
23964
14
        {
23965
14
            D(fprintf(stderr, "%*c+ invalid_import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_names ',' NEWLINE"));
23966
14
            _res = RAISE_SYNTAX_ERROR ( "trailing comma not allowed without surrounding parentheses" );
23967
14
            if (_res == NULL && PyErr_Occurred()) {
23968
14
                p->error_indicator = 1;
23969
14
                p->level--;
23970
14
                return NULL;
23971
14
            }
23972
0
            goto done;
23973
14
        }
23974
18
        p->mark = _mark;
23975
18
        D(fprintf(stderr, "%*c%s invalid_import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
23976
18
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_names ',' NEWLINE"));
23977
18
    }
23978
0
    { // NEWLINE
23979
18
        if (p->error_indicator) {
23980
0
            p->level--;
23981
0
            return NULL;
23982
0
        }
23983
18
        D(fprintf(stderr, "%*c> invalid_import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
23984
18
        Token * token;
23985
18
        if (
23986
18
            (token = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23987
18
        )
23988
6
        {
23989
6
            D(fprintf(stderr, "%*c+ invalid_import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
23990
6
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( token , "Expected one or more names after 'import'" );
23991
6
            if (_res == NULL && PyErr_Occurred()) {
23992
6
                p->error_indicator = 1;
23993
6
                p->level--;
23994
6
                return NULL;
23995
6
            }
23996
0
            goto done;
23997
6
        }
23998
12
        p->mark = _mark;
23999
12
        D(fprintf(stderr, "%*c%s invalid_import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
24000
12
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
24001
12
    }
24002
0
    _res = NULL;
24003
12
  done:
24004
12
    p->level--;
24005
12
    return _res;
24006
12
}
24007
24008
// invalid_with_stmt:
24009
//     | 'async'? 'with' ','.(expression ['as' star_target])+ NEWLINE
24010
//     | 'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE
24011
static void *
24012
invalid_with_stmt_rule(Parser *p)
24013
318
{
24014
318
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24015
0
        _Pypegen_stack_overflow(p);
24016
0
    }
24017
318
    if (p->error_indicator) {
24018
0
        p->level--;
24019
0
        return NULL;
24020
0
    }
24021
318
    void * _res = NULL;
24022
318
    int _mark = p->mark;
24023
318
    { // 'async'? 'with' ','.(expression ['as' star_target])+ NEWLINE
24024
318
        if (p->error_indicator) {
24025
0
            p->level--;
24026
0
            return NULL;
24027
0
        }
24028
318
        D(fprintf(stderr, "%*c> invalid_with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'? 'with' ','.(expression ['as' star_target])+ NEWLINE"));
24029
318
        asdl_seq * _gather_140_var;
24030
318
        Token * _keyword;
24031
318
        void *_opt_var;
24032
318
        UNUSED(_opt_var); // Silence compiler warnings
24033
318
        Token * newline_var;
24034
318
        if (
24035
318
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
24036
318
            &&
24037
318
            (_keyword = _PyPegen_expect_token(p, 652))  // token='with'
24038
318
            &&
24039
318
            (_gather_140_var = _gather_140_rule(p))  // ','.(expression ['as' star_target])+
24040
318
            &&
24041
318
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24042
318
        )
24043
43
        {
24044
43
            D(fprintf(stderr, "%*c+ invalid_with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'? 'with' ','.(expression ['as' star_target])+ NEWLINE"));
24045
43
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
24046
43
            if (_res == NULL && PyErr_Occurred()) {
24047
43
                p->error_indicator = 1;
24048
43
                p->level--;
24049
43
                return NULL;
24050
43
            }
24051
0
            goto done;
24052
43
        }
24053
275
        p->mark = _mark;
24054
275
        D(fprintf(stderr, "%*c%s invalid_with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24055
275
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'with' ','.(expression ['as' star_target])+ NEWLINE"));
24056
275
    }
24057
0
    { // 'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE
24058
275
        if (p->error_indicator) {
24059
0
            p->level--;
24060
0
            return NULL;
24061
0
        }
24062
275
        D(fprintf(stderr, "%*c> invalid_with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE"));
24063
275
        asdl_seq * _gather_142_var;
24064
275
        Token * _keyword;
24065
275
        Token * _literal;
24066
275
        Token * _literal_1;
24067
275
        void *_opt_var;
24068
275
        UNUSED(_opt_var); // Silence compiler warnings
24069
275
        void *_opt_var_1;
24070
275
        UNUSED(_opt_var_1); // Silence compiler warnings
24071
275
        Token * newline_var;
24072
275
        if (
24073
275
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
24074
275
            &&
24075
275
            (_keyword = _PyPegen_expect_token(p, 652))  // token='with'
24076
275
            &&
24077
275
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
24078
275
            &&
24079
275
            (_gather_142_var = _gather_142_rule(p))  // ','.(expressions ['as' star_target])+
24080
275
            &&
24081
275
            (_opt_var_1 = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
24082
275
            &&
24083
275
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
24084
275
            &&
24085
275
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24086
275
        )
24087
9
        {
24088
9
            D(fprintf(stderr, "%*c+ invalid_with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE"));
24089
9
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
24090
9
            if (_res == NULL && PyErr_Occurred()) {
24091
9
                p->error_indicator = 1;
24092
9
                p->level--;
24093
9
                return NULL;
24094
9
            }
24095
0
            goto done;
24096
9
        }
24097
266
        p->mark = _mark;
24098
266
        D(fprintf(stderr, "%*c%s invalid_with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24099
266
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE"));
24100
266
    }
24101
0
    _res = NULL;
24102
266
  done:
24103
266
    p->level--;
24104
266
    return _res;
24105
266
}
24106
24107
// invalid_with_stmt_indent:
24108
//     | 'async'? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT
24109
//     | 'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT
24110
static void *
24111
invalid_with_stmt_indent_rule(Parser *p)
24112
2.30k
{
24113
2.30k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24114
0
        _Pypegen_stack_overflow(p);
24115
0
    }
24116
2.30k
    if (p->error_indicator) {
24117
0
        p->level--;
24118
0
        return NULL;
24119
0
    }
24120
2.30k
    void * _res = NULL;
24121
2.30k
    int _mark = p->mark;
24122
2.30k
    { // 'async'? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT
24123
2.30k
        if (p->error_indicator) {
24124
0
            p->level--;
24125
0
            return NULL;
24126
0
        }
24127
2.30k
        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"));
24128
2.30k
        asdl_seq * _gather_140_var;
24129
2.30k
        Token * _literal;
24130
2.30k
        void *_opt_var;
24131
2.30k
        UNUSED(_opt_var); // Silence compiler warnings
24132
2.30k
        Token * a;
24133
2.30k
        Token * newline_var;
24134
2.30k
        if (
24135
2.30k
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
24136
2.30k
            &&
24137
2.30k
            (a = _PyPegen_expect_token(p, 652))  // token='with'
24138
2.30k
            &&
24139
2.30k
            (_gather_140_var = _gather_140_rule(p))  // ','.(expression ['as' star_target])+
24140
2.30k
            &&
24141
2.30k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24142
2.30k
            &&
24143
2.30k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24144
2.30k
            &&
24145
2.30k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24146
2.30k
        )
24147
17
        {
24148
17
            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"));
24149
17
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'with' statement on line %d" , a -> lineno );
24150
17
            if (_res == NULL && PyErr_Occurred()) {
24151
17
                p->error_indicator = 1;
24152
17
                p->level--;
24153
17
                return NULL;
24154
17
            }
24155
0
            goto done;
24156
17
        }
24157
2.29k
        p->mark = _mark;
24158
2.29k
        D(fprintf(stderr, "%*c%s invalid_with_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
24159
2.29k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT"));
24160
2.29k
    }
24161
0
    { // 'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT
24162
2.29k
        if (p->error_indicator) {
24163
10
            p->level--;
24164
10
            return NULL;
24165
10
        }
24166
2.28k
        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"));
24167
2.28k
        asdl_seq * _gather_142_var;
24168
2.28k
        Token * _literal;
24169
2.28k
        Token * _literal_1;
24170
2.28k
        Token * _literal_2;
24171
2.28k
        void *_opt_var;
24172
2.28k
        UNUSED(_opt_var); // Silence compiler warnings
24173
2.28k
        void *_opt_var_1;
24174
2.28k
        UNUSED(_opt_var_1); // Silence compiler warnings
24175
2.28k
        Token * a;
24176
2.28k
        Token * newline_var;
24177
2.28k
        if (
24178
2.28k
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
24179
2.28k
            &&
24180
2.28k
            (a = _PyPegen_expect_token(p, 652))  // token='with'
24181
2.28k
            &&
24182
2.28k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
24183
2.28k
            &&
24184
2.28k
            (_gather_142_var = _gather_142_rule(p))  // ','.(expressions ['as' star_target])+
24185
2.28k
            &&
24186
2.28k
            (_opt_var_1 = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
24187
2.28k
            &&
24188
2.28k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
24189
2.28k
            &&
24190
2.28k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
24191
2.28k
            &&
24192
2.28k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24193
2.28k
            &&
24194
2.28k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24195
2.28k
        )
24196
2
        {
24197
2
            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"));
24198
2
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'with' statement on line %d" , a -> lineno );
24199
2
            if (_res == NULL && PyErr_Occurred()) {
24200
2
                p->error_indicator = 1;
24201
2
                p->level--;
24202
2
                return NULL;
24203
2
            }
24204
0
            goto done;
24205
2
        }
24206
2.27k
        p->mark = _mark;
24207
2.27k
        D(fprintf(stderr, "%*c%s invalid_with_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
24208
2.27k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT"));
24209
2.27k
    }
24210
0
    _res = NULL;
24211
2.27k
  done:
24212
2.27k
    p->level--;
24213
2.27k
    return _res;
24214
2.27k
}
24215
24216
// invalid_try_stmt:
24217
//     | 'try' ':' NEWLINE !INDENT
24218
//     | 'try' ':' block !('except' | 'finally')
24219
//     | 'try' ':' block* except_block+ 'except' '*' expression ['as' NAME] ':'
24220
//     | 'try' ':' block* except_star_block+ 'except' [expression ['as' NAME]] ':'
24221
static void *
24222
invalid_try_stmt_rule(Parser *p)
24223
1.89k
{
24224
1.89k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24225
0
        _Pypegen_stack_overflow(p);
24226
0
    }
24227
1.89k
    if (p->error_indicator) {
24228
0
        p->level--;
24229
0
        return NULL;
24230
0
    }
24231
1.89k
    void * _res = NULL;
24232
1.89k
    int _mark = p->mark;
24233
1.89k
    { // 'try' ':' NEWLINE !INDENT
24234
1.89k
        if (p->error_indicator) {
24235
0
            p->level--;
24236
0
            return NULL;
24237
0
        }
24238
1.89k
        D(fprintf(stderr, "%*c> invalid_try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' NEWLINE !INDENT"));
24239
1.89k
        Token * _literal;
24240
1.89k
        Token * a;
24241
1.89k
        Token * newline_var;
24242
1.89k
        if (
24243
1.89k
            (a = _PyPegen_expect_token(p, 661))  // token='try'
24244
1.89k
            &&
24245
1.89k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24246
1.89k
            &&
24247
1.89k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24248
1.89k
            &&
24249
1.89k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24250
1.89k
        )
24251
6
        {
24252
6
            D(fprintf(stderr, "%*c+ invalid_try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' NEWLINE !INDENT"));
24253
6
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'try' statement on line %d" , a -> lineno );
24254
6
            if (_res == NULL && PyErr_Occurred()) {
24255
6
                p->error_indicator = 1;
24256
6
                p->level--;
24257
6
                return NULL;
24258
6
            }
24259
0
            goto done;
24260
6
        }
24261
1.88k
        p->mark = _mark;
24262
1.88k
        D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24263
1.88k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' NEWLINE !INDENT"));
24264
1.88k
    }
24265
0
    { // 'try' ':' block !('except' | 'finally')
24266
1.88k
        if (p->error_indicator) {
24267
1
            p->level--;
24268
1
            return NULL;
24269
1
        }
24270
1.88k
        D(fprintf(stderr, "%*c> invalid_try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
24271
1.88k
        Token * _keyword;
24272
1.88k
        Token * _literal;
24273
1.88k
        asdl_stmt_seq* block_var;
24274
1.88k
        if (
24275
1.88k
            (_keyword = _PyPegen_expect_token(p, 661))  // token='try'
24276
1.88k
            &&
24277
1.88k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24278
1.88k
            &&
24279
1.88k
            (block_var = block_rule(p))  // block
24280
1.88k
            &&
24281
1.88k
            _PyPegen_lookahead(0, _tmp_143_rule, p)
24282
1.88k
        )
24283
35
        {
24284
35
            D(fprintf(stderr, "%*c+ invalid_try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
24285
35
            _res = RAISE_SYNTAX_ERROR ( "expected 'except' or 'finally' block" );
24286
35
            if (_res == NULL && PyErr_Occurred()) {
24287
35
                p->error_indicator = 1;
24288
35
                p->level--;
24289
35
                return NULL;
24290
35
            }
24291
0
            goto done;
24292
35
        }
24293
1.85k
        p->mark = _mark;
24294
1.85k
        D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24295
1.85k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
24296
1.85k
    }
24297
0
    { // 'try' ':' block* except_block+ 'except' '*' expression ['as' NAME] ':'
24298
1.85k
        if (p->error_indicator) {
24299
14
            p->level--;
24300
14
            return NULL;
24301
14
        }
24302
1.83k
        D(fprintf(stderr, "%*c> invalid_try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' block* except_block+ 'except' '*' expression ['as' NAME] ':'"));
24303
1.83k
        Token * _keyword;
24304
1.83k
        Token * _literal;
24305
1.83k
        Token * _literal_1;
24306
1.83k
        asdl_seq * _loop0_144_var;
24307
1.83k
        asdl_seq * _loop1_36_var;
24308
1.83k
        void *_opt_var;
24309
1.83k
        UNUSED(_opt_var); // Silence compiler warnings
24310
1.83k
        Token * a;
24311
1.83k
        Token * b;
24312
1.83k
        expr_ty expression_var;
24313
1.83k
        if (
24314
1.83k
            (_keyword = _PyPegen_expect_token(p, 661))  // token='try'
24315
1.83k
            &&
24316
1.83k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24317
1.83k
            &&
24318
1.83k
            (_loop0_144_var = _loop0_144_rule(p))  // block*
24319
1.83k
            &&
24320
1.83k
            (_loop1_36_var = _loop1_36_rule(p))  // except_block+
24321
1.83k
            &&
24322
1.83k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24323
1.83k
            &&
24324
1.83k
            (b = _PyPegen_expect_token(p, 16))  // token='*'
24325
1.83k
            &&
24326
1.83k
            (expression_var = expression_rule(p))  // expression
24327
1.83k
            &&
24328
1.83k
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
24329
1.83k
            &&
24330
1.83k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
24331
1.83k
        )
24332
1
        {
24333
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] ':'"));
24334
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "cannot have both 'except' and 'except*' on the same 'try'" );
24335
1
            if (_res == NULL && PyErr_Occurred()) {
24336
1
                p->error_indicator = 1;
24337
1
                p->level--;
24338
1
                return NULL;
24339
1
            }
24340
0
            goto done;
24341
1
        }
24342
1.83k
        p->mark = _mark;
24343
1.83k
        D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24344
1.83k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block* except_block+ 'except' '*' expression ['as' NAME] ':'"));
24345
1.83k
    }
24346
0
    { // 'try' ':' block* except_star_block+ 'except' [expression ['as' NAME]] ':'
24347
1.83k
        if (p->error_indicator) {
24348
45
            p->level--;
24349
45
            return NULL;
24350
45
        }
24351
1.79k
        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]] ':'"));
24352
1.79k
        Token * _keyword;
24353
1.79k
        Token * _literal;
24354
1.79k
        Token * _literal_1;
24355
1.79k
        asdl_seq * _loop0_144_var;
24356
1.79k
        asdl_seq * _loop1_37_var;
24357
1.79k
        void *_opt_var;
24358
1.79k
        UNUSED(_opt_var); // Silence compiler warnings
24359
1.79k
        Token * a;
24360
1.79k
        if (
24361
1.79k
            (_keyword = _PyPegen_expect_token(p, 661))  // token='try'
24362
1.79k
            &&
24363
1.79k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24364
1.79k
            &&
24365
1.79k
            (_loop0_144_var = _loop0_144_rule(p))  // block*
24366
1.79k
            &&
24367
1.79k
            (_loop1_37_var = _loop1_37_rule(p))  // except_star_block+
24368
1.79k
            &&
24369
1.79k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24370
1.79k
            &&
24371
1.79k
            (_opt_var = _tmp_145_rule(p), !p->error_indicator)  // [expression ['as' NAME]]
24372
1.79k
            &&
24373
1.79k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
24374
1.79k
        )
24375
3
        {
24376
3
            D(fprintf(stderr, "%*c+ invalid_try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' block* except_star_block+ 'except' [expression ['as' NAME]] ':'"));
24377
3
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot have both 'except' and 'except*' on the same 'try'" );
24378
3
            if (_res == NULL && PyErr_Occurred()) {
24379
3
                p->error_indicator = 1;
24380
3
                p->level--;
24381
3
                return NULL;
24382
3
            }
24383
0
            goto done;
24384
3
        }
24385
1.78k
        p->mark = _mark;
24386
1.78k
        D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24387
1.78k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block* except_star_block+ 'except' [expression ['as' NAME]] ':'"));
24388
1.78k
    }
24389
0
    _res = NULL;
24390
1.78k
  done:
24391
1.78k
    p->level--;
24392
1.78k
    return _res;
24393
1.78k
}
24394
24395
// invalid_except_stmt:
24396
//     | 'except' expression ',' expressions 'as' NAME ':'
24397
//     | 'except' expression ['as' NAME] NEWLINE
24398
//     | 'except' NEWLINE
24399
//     | 'except' expression 'as' expression ':' block
24400
static void *
24401
invalid_except_stmt_rule(Parser *p)
24402
3.16k
{
24403
3.16k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24404
0
        _Pypegen_stack_overflow(p);
24405
0
    }
24406
3.16k
    if (p->error_indicator) {
24407
0
        p->level--;
24408
0
        return NULL;
24409
0
    }
24410
3.16k
    void * _res = NULL;
24411
3.16k
    int _mark = p->mark;
24412
3.16k
    { // 'except' expression ',' expressions 'as' NAME ':'
24413
3.16k
        if (p->error_indicator) {
24414
0
            p->level--;
24415
0
            return NULL;
24416
0
        }
24417
3.16k
        D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ',' expressions 'as' NAME ':'"));
24418
3.16k
        Token * _keyword;
24419
3.16k
        Token * _keyword_1;
24420
3.16k
        Token * _literal;
24421
3.16k
        Token * _literal_1;
24422
3.16k
        expr_ty a;
24423
3.16k
        expr_ty expressions_var;
24424
3.16k
        expr_ty name_var;
24425
3.16k
        if (
24426
3.16k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
24427
3.16k
            &&
24428
3.16k
            (a = expression_rule(p))  // expression
24429
3.16k
            &&
24430
3.16k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
24431
3.16k
            &&
24432
3.16k
            (expressions_var = expressions_rule(p))  // expressions
24433
3.16k
            &&
24434
3.16k
            (_keyword_1 = _PyPegen_expect_token(p, 685))  // token='as'
24435
3.16k
            &&
24436
3.16k
            (name_var = _PyPegen_name_token(p))  // NAME
24437
3.16k
            &&
24438
3.16k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
24439
3.16k
        )
24440
1
        {
24441
1
            D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ',' expressions 'as' NAME ':'"));
24442
1
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "multiple exception types must be parenthesized when using 'as'" );
24443
1
            if (_res == NULL && PyErr_Occurred()) {
24444
1
                p->error_indicator = 1;
24445
1
                p->level--;
24446
1
                return NULL;
24447
1
            }
24448
0
            goto done;
24449
1
        }
24450
3.16k
        p->mark = _mark;
24451
3.16k
        D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24452
3.16k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ',' expressions 'as' NAME ':'"));
24453
3.16k
    }
24454
0
    { // 'except' expression ['as' NAME] NEWLINE
24455
3.16k
        if (p->error_indicator) {
24456
1
            p->level--;
24457
1
            return NULL;
24458
1
        }
24459
3.16k
        D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] NEWLINE"));
24460
3.16k
        void *_opt_var;
24461
3.16k
        UNUSED(_opt_var); // Silence compiler warnings
24462
3.16k
        Token * a;
24463
3.16k
        expr_ty expression_var;
24464
3.16k
        Token * newline_var;
24465
3.16k
        if (
24466
3.16k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24467
3.16k
            &&
24468
3.16k
            (expression_var = expression_rule(p))  // expression
24469
3.16k
            &&
24470
3.16k
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
24471
3.16k
            &&
24472
3.16k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24473
3.16k
        )
24474
4
        {
24475
4
            D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] NEWLINE"));
24476
4
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
24477
4
            if (_res == NULL && PyErr_Occurred()) {
24478
4
                p->error_indicator = 1;
24479
4
                p->level--;
24480
4
                return NULL;
24481
4
            }
24482
0
            goto done;
24483
4
        }
24484
3.15k
        p->mark = _mark;
24485
3.15k
        D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24486
3.15k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ['as' NAME] NEWLINE"));
24487
3.15k
    }
24488
0
    { // 'except' NEWLINE
24489
3.15k
        if (p->error_indicator) {
24490
0
            p->level--;
24491
0
            return NULL;
24492
0
        }
24493
3.15k
        D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' NEWLINE"));
24494
3.15k
        Token * a;
24495
3.15k
        Token * newline_var;
24496
3.15k
        if (
24497
3.15k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24498
3.15k
            &&
24499
3.15k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24500
3.15k
        )
24501
10
        {
24502
10
            D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' NEWLINE"));
24503
10
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
24504
10
            if (_res == NULL && PyErr_Occurred()) {
24505
10
                p->error_indicator = 1;
24506
10
                p->level--;
24507
10
                return NULL;
24508
10
            }
24509
0
            goto done;
24510
10
        }
24511
3.14k
        p->mark = _mark;
24512
3.14k
        D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24513
3.14k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' NEWLINE"));
24514
3.14k
    }
24515
0
    { // 'except' expression 'as' expression ':' block
24516
3.14k
        if (p->error_indicator) {
24517
0
            p->level--;
24518
0
            return NULL;
24519
0
        }
24520
3.14k
        D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression 'as' expression ':' block"));
24521
3.14k
        Token * _keyword;
24522
3.14k
        Token * _keyword_1;
24523
3.14k
        Token * _literal;
24524
3.14k
        expr_ty a;
24525
3.14k
        asdl_stmt_seq* block_var;
24526
3.14k
        expr_ty expression_var;
24527
3.14k
        if (
24528
3.14k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
24529
3.14k
            &&
24530
3.14k
            (expression_var = expression_rule(p))  // expression
24531
3.14k
            &&
24532
3.14k
            (_keyword_1 = _PyPegen_expect_token(p, 685))  // token='as'
24533
3.14k
            &&
24534
3.14k
            (a = expression_rule(p))  // expression
24535
3.14k
            &&
24536
3.14k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24537
3.14k
            &&
24538
3.14k
            (block_var = block_rule(p))  // block
24539
3.14k
        )
24540
1
        {
24541
1
            D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression 'as' expression ':' block"));
24542
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use except statement with %s" , _PyPegen_get_expr_name ( a ) );
24543
1
            if (_res == NULL && PyErr_Occurred()) {
24544
1
                p->error_indicator = 1;
24545
1
                p->level--;
24546
1
                return NULL;
24547
1
            }
24548
0
            goto done;
24549
1
        }
24550
3.14k
        p->mark = _mark;
24551
3.14k
        D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24552
3.14k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression 'as' expression ':' block"));
24553
3.14k
    }
24554
0
    _res = NULL;
24555
3.14k
  done:
24556
3.14k
    p->level--;
24557
3.14k
    return _res;
24558
3.14k
}
24559
24560
// invalid_except_star_stmt:
24561
//     | 'except' '*' expression ',' expressions 'as' NAME ':'
24562
//     | 'except' '*' expression ['as' NAME] NEWLINE
24563
//     | 'except' '*' (NEWLINE | ':')
24564
//     | 'except' '*' expression 'as' expression ':' block
24565
static void *
24566
invalid_except_star_stmt_rule(Parser *p)
24567
2.40k
{
24568
2.40k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24569
0
        _Pypegen_stack_overflow(p);
24570
0
    }
24571
2.40k
    if (p->error_indicator) {
24572
0
        p->level--;
24573
0
        return NULL;
24574
0
    }
24575
2.40k
    void * _res = NULL;
24576
2.40k
    int _mark = p->mark;
24577
2.40k
    { // 'except' '*' expression ',' expressions 'as' NAME ':'
24578
2.40k
        if (p->error_indicator) {
24579
0
            p->level--;
24580
0
            return NULL;
24581
0
        }
24582
2.40k
        D(fprintf(stderr, "%*c> invalid_except_star_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ',' expressions 'as' NAME ':'"));
24583
2.40k
        Token * _keyword;
24584
2.40k
        Token * _keyword_1;
24585
2.40k
        Token * _literal;
24586
2.40k
        Token * _literal_1;
24587
2.40k
        Token * _literal_2;
24588
2.40k
        expr_ty a;
24589
2.40k
        expr_ty expressions_var;
24590
2.40k
        expr_ty name_var;
24591
2.40k
        if (
24592
2.40k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
24593
2.40k
            &&
24594
2.40k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
24595
2.40k
            &&
24596
2.40k
            (a = expression_rule(p))  // expression
24597
2.40k
            &&
24598
2.40k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
24599
2.40k
            &&
24600
2.40k
            (expressions_var = expressions_rule(p))  // expressions
24601
2.40k
            &&
24602
2.40k
            (_keyword_1 = _PyPegen_expect_token(p, 685))  // token='as'
24603
2.40k
            &&
24604
2.40k
            (name_var = _PyPegen_name_token(p))  // NAME
24605
2.40k
            &&
24606
2.40k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
24607
2.40k
        )
24608
1
        {
24609
1
            D(fprintf(stderr, "%*c+ invalid_except_star_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ',' expressions 'as' NAME ':'"));
24610
1
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "multiple exception types must be parenthesized when using 'as'" );
24611
1
            if (_res == NULL && PyErr_Occurred()) {
24612
1
                p->error_indicator = 1;
24613
1
                p->level--;
24614
1
                return NULL;
24615
1
            }
24616
0
            goto done;
24617
1
        }
24618
2.40k
        p->mark = _mark;
24619
2.40k
        D(fprintf(stderr, "%*c%s invalid_except_star_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24620
2.40k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression ',' expressions 'as' NAME ':'"));
24621
2.40k
    }
24622
0
    { // 'except' '*' expression ['as' NAME] NEWLINE
24623
2.40k
        if (p->error_indicator) {
24624
1
            p->level--;
24625
1
            return NULL;
24626
1
        }
24627
2.40k
        D(fprintf(stderr, "%*c> invalid_except_star_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ['as' NAME] NEWLINE"));
24628
2.40k
        Token * _literal;
24629
2.40k
        void *_opt_var;
24630
2.40k
        UNUSED(_opt_var); // Silence compiler warnings
24631
2.40k
        Token * a;
24632
2.40k
        expr_ty expression_var;
24633
2.40k
        Token * newline_var;
24634
2.40k
        if (
24635
2.40k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24636
2.40k
            &&
24637
2.40k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
24638
2.40k
            &&
24639
2.40k
            (expression_var = expression_rule(p))  // expression
24640
2.40k
            &&
24641
2.40k
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
24642
2.40k
            &&
24643
2.40k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24644
2.40k
        )
24645
4
        {
24646
4
            D(fprintf(stderr, "%*c+ invalid_except_star_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ['as' NAME] NEWLINE"));
24647
4
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
24648
4
            if (_res == NULL && PyErr_Occurred()) {
24649
4
                p->error_indicator = 1;
24650
4
                p->level--;
24651
4
                return NULL;
24652
4
            }
24653
0
            goto done;
24654
4
        }
24655
2.40k
        p->mark = _mark;
24656
2.40k
        D(fprintf(stderr, "%*c%s invalid_except_star_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24657
2.40k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression ['as' NAME] NEWLINE"));
24658
2.40k
    }
24659
0
    { // 'except' '*' (NEWLINE | ':')
24660
2.40k
        if (p->error_indicator) {
24661
0
            p->level--;
24662
0
            return NULL;
24663
0
        }
24664
2.40k
        D(fprintf(stderr, "%*c> invalid_except_star_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' (NEWLINE | ':')"));
24665
2.40k
        Token * _literal;
24666
2.40k
        void *_tmp_146_var;
24667
2.40k
        Token * a;
24668
2.40k
        if (
24669
2.40k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24670
2.40k
            &&
24671
2.40k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
24672
2.40k
            &&
24673
2.40k
            (_tmp_146_var = _tmp_146_rule(p))  // NEWLINE | ':'
24674
2.40k
        )
24675
7
        {
24676
7
            D(fprintf(stderr, "%*c+ invalid_except_star_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' (NEWLINE | ':')"));
24677
7
            _res = RAISE_SYNTAX_ERROR ( "expected one or more exception types" );
24678
7
            if (_res == NULL && PyErr_Occurred()) {
24679
7
                p->error_indicator = 1;
24680
7
                p->level--;
24681
7
                return NULL;
24682
7
            }
24683
0
            goto done;
24684
7
        }
24685
2.39k
        p->mark = _mark;
24686
2.39k
        D(fprintf(stderr, "%*c%s invalid_except_star_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24687
2.39k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' (NEWLINE | ':')"));
24688
2.39k
    }
24689
0
    { // 'except' '*' expression 'as' expression ':' block
24690
2.39k
        if (p->error_indicator) {
24691
0
            p->level--;
24692
0
            return NULL;
24693
0
        }
24694
2.39k
        D(fprintf(stderr, "%*c> invalid_except_star_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression 'as' expression ':' block"));
24695
2.39k
        Token * _keyword;
24696
2.39k
        Token * _keyword_1;
24697
2.39k
        Token * _literal;
24698
2.39k
        Token * _literal_1;
24699
2.39k
        expr_ty a;
24700
2.39k
        asdl_stmt_seq* block_var;
24701
2.39k
        expr_ty expression_var;
24702
2.39k
        if (
24703
2.39k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
24704
2.39k
            &&
24705
2.39k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
24706
2.39k
            &&
24707
2.39k
            (expression_var = expression_rule(p))  // expression
24708
2.39k
            &&
24709
2.39k
            (_keyword_1 = _PyPegen_expect_token(p, 685))  // token='as'
24710
2.39k
            &&
24711
2.39k
            (a = expression_rule(p))  // expression
24712
2.39k
            &&
24713
2.39k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
24714
2.39k
            &&
24715
2.39k
            (block_var = block_rule(p))  // block
24716
2.39k
        )
24717
1
        {
24718
1
            D(fprintf(stderr, "%*c+ invalid_except_star_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expression 'as' expression ':' block"));
24719
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use except* statement with %s" , _PyPegen_get_expr_name ( a ) );
24720
1
            if (_res == NULL && PyErr_Occurred()) {
24721
1
                p->error_indicator = 1;
24722
1
                p->level--;
24723
1
                return NULL;
24724
1
            }
24725
0
            goto done;
24726
1
        }
24727
2.39k
        p->mark = _mark;
24728
2.39k
        D(fprintf(stderr, "%*c%s invalid_except_star_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24729
2.39k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression 'as' expression ':' block"));
24730
2.39k
    }
24731
0
    _res = NULL;
24732
2.39k
  done:
24733
2.39k
    p->level--;
24734
2.39k
    return _res;
24735
2.39k
}
24736
24737
// invalid_finally_stmt: 'finally' ':' NEWLINE !INDENT
24738
static void *
24739
invalid_finally_stmt_rule(Parser *p)
24740
2.98k
{
24741
2.98k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24742
0
        _Pypegen_stack_overflow(p);
24743
0
    }
24744
2.98k
    if (p->error_indicator) {
24745
0
        p->level--;
24746
0
        return NULL;
24747
0
    }
24748
2.98k
    void * _res = NULL;
24749
2.98k
    int _mark = p->mark;
24750
2.98k
    { // 'finally' ':' NEWLINE !INDENT
24751
2.98k
        if (p->error_indicator) {
24752
0
            p->level--;
24753
0
            return NULL;
24754
0
        }
24755
2.98k
        D(fprintf(stderr, "%*c> invalid_finally_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally' ':' NEWLINE !INDENT"));
24756
2.98k
        Token * _literal;
24757
2.98k
        Token * a;
24758
2.98k
        Token * newline_var;
24759
2.98k
        if (
24760
2.98k
            (a = _PyPegen_expect_token(p, 678))  // token='finally'
24761
2.98k
            &&
24762
2.98k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24763
2.98k
            &&
24764
2.98k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24765
2.98k
            &&
24766
2.98k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24767
2.98k
        )
24768
1
        {
24769
1
            D(fprintf(stderr, "%*c+ invalid_finally_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally' ':' NEWLINE !INDENT"));
24770
1
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'finally' statement on line %d" , a -> lineno );
24771
1
            if (_res == NULL && PyErr_Occurred()) {
24772
1
                p->error_indicator = 1;
24773
1
                p->level--;
24774
1
                return NULL;
24775
1
            }
24776
0
            goto done;
24777
1
        }
24778
2.98k
        p->mark = _mark;
24779
2.98k
        D(fprintf(stderr, "%*c%s invalid_finally_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24780
2.98k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally' ':' NEWLINE !INDENT"));
24781
2.98k
    }
24782
0
    _res = NULL;
24783
2.98k
  done:
24784
2.98k
    p->level--;
24785
2.98k
    return _res;
24786
2.98k
}
24787
24788
// invalid_except_stmt_indent:
24789
//     | 'except' expression ['as' NAME] ':' NEWLINE !INDENT
24790
//     | 'except' ':' NEWLINE !INDENT
24791
static void *
24792
invalid_except_stmt_indent_rule(Parser *p)
24793
6.41k
{
24794
6.41k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24795
0
        _Pypegen_stack_overflow(p);
24796
0
    }
24797
6.41k
    if (p->error_indicator) {
24798
0
        p->level--;
24799
0
        return NULL;
24800
0
    }
24801
6.41k
    void * _res = NULL;
24802
6.41k
    int _mark = p->mark;
24803
6.41k
    { // 'except' expression ['as' NAME] ':' NEWLINE !INDENT
24804
6.41k
        if (p->error_indicator) {
24805
0
            p->level--;
24806
0
            return NULL;
24807
0
        }
24808
6.41k
        D(fprintf(stderr, "%*c> invalid_except_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] ':' NEWLINE !INDENT"));
24809
6.41k
        Token * _literal;
24810
6.41k
        void *_opt_var;
24811
6.41k
        UNUSED(_opt_var); // Silence compiler warnings
24812
6.41k
        Token * a;
24813
6.41k
        expr_ty expression_var;
24814
6.41k
        Token * newline_var;
24815
6.41k
        if (
24816
6.41k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24817
6.41k
            &&
24818
6.41k
            (expression_var = expression_rule(p))  // expression
24819
6.41k
            &&
24820
6.41k
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
24821
6.41k
            &&
24822
6.41k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24823
6.41k
            &&
24824
6.41k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24825
6.41k
            &&
24826
6.41k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24827
6.41k
        )
24828
1
        {
24829
1
            D(fprintf(stderr, "%*c+ invalid_except_stmt_indent[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] ':' NEWLINE !INDENT"));
24830
1
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'except' statement on line %d" , a -> lineno );
24831
1
            if (_res == NULL && PyErr_Occurred()) {
24832
1
                p->error_indicator = 1;
24833
1
                p->level--;
24834
1
                return NULL;
24835
1
            }
24836
0
            goto done;
24837
1
        }
24838
6.41k
        p->mark = _mark;
24839
6.41k
        D(fprintf(stderr, "%*c%s invalid_except_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
24840
6.41k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ['as' NAME] ':' NEWLINE !INDENT"));
24841
6.41k
    }
24842
0
    { // 'except' ':' NEWLINE !INDENT
24843
6.41k
        if (p->error_indicator) {
24844
2
            p->level--;
24845
2
            return NULL;
24846
2
        }
24847
6.41k
        D(fprintf(stderr, "%*c> invalid_except_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
24848
6.41k
        Token * _literal;
24849
6.41k
        Token * a;
24850
6.41k
        Token * newline_var;
24851
6.41k
        if (
24852
6.41k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24853
6.41k
            &&
24854
6.41k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24855
6.41k
            &&
24856
6.41k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24857
6.41k
            &&
24858
6.41k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24859
6.41k
        )
24860
2
        {
24861
2
            D(fprintf(stderr, "%*c+ invalid_except_stmt_indent[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
24862
2
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'except' statement on line %d" , a -> lineno );
24863
2
            if (_res == NULL && PyErr_Occurred()) {
24864
2
                p->error_indicator = 1;
24865
2
                p->level--;
24866
2
                return NULL;
24867
2
            }
24868
0
            goto done;
24869
2
        }
24870
6.41k
        p->mark = _mark;
24871
6.41k
        D(fprintf(stderr, "%*c%s invalid_except_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
24872
6.41k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
24873
6.41k
    }
24874
0
    _res = NULL;
24875
6.41k
  done:
24876
6.41k
    p->level--;
24877
6.41k
    return _res;
24878
6.41k
}
24879
24880
// invalid_except_star_stmt_indent:
24881
//     | 'except' '*' expression ['as' NAME] ':' NEWLINE !INDENT
24882
static void *
24883
invalid_except_star_stmt_indent_rule(Parser *p)
24884
4.51k
{
24885
4.51k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24886
0
        _Pypegen_stack_overflow(p);
24887
0
    }
24888
4.51k
    if (p->error_indicator) {
24889
0
        p->level--;
24890
0
        return NULL;
24891
0
    }
24892
4.51k
    void * _res = NULL;
24893
4.51k
    int _mark = p->mark;
24894
4.51k
    { // 'except' '*' expression ['as' NAME] ':' NEWLINE !INDENT
24895
4.51k
        if (p->error_indicator) {
24896
0
            p->level--;
24897
0
            return NULL;
24898
0
        }
24899
4.51k
        D(fprintf(stderr, "%*c> invalid_except_star_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ['as' NAME] ':' NEWLINE !INDENT"));
24900
4.51k
        Token * _literal;
24901
4.51k
        Token * _literal_1;
24902
4.51k
        void *_opt_var;
24903
4.51k
        UNUSED(_opt_var); // Silence compiler warnings
24904
4.51k
        Token * a;
24905
4.51k
        expr_ty expression_var;
24906
4.51k
        Token * newline_var;
24907
4.51k
        if (
24908
4.51k
            (a = _PyPegen_expect_token(p, 682))  // token='except'
24909
4.51k
            &&
24910
4.51k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
24911
4.51k
            &&
24912
4.51k
            (expression_var = expression_rule(p))  // expression
24913
4.51k
            &&
24914
4.51k
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
24915
4.51k
            &&
24916
4.51k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
24917
4.51k
            &&
24918
4.51k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24919
4.51k
            &&
24920
4.51k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24921
4.51k
        )
24922
3
        {
24923
3
            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"));
24924
3
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'except*' statement on line %d" , a -> lineno );
24925
3
            if (_res == NULL && PyErr_Occurred()) {
24926
3
                p->error_indicator = 1;
24927
3
                p->level--;
24928
3
                return NULL;
24929
3
            }
24930
0
            goto done;
24931
3
        }
24932
4.51k
        p->mark = _mark;
24933
4.51k
        D(fprintf(stderr, "%*c%s invalid_except_star_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
24934
4.51k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression ['as' NAME] ':' NEWLINE !INDENT"));
24935
4.51k
    }
24936
0
    _res = NULL;
24937
4.51k
  done:
24938
4.51k
    p->level--;
24939
4.51k
    return _res;
24940
4.51k
}
24941
24942
// invalid_match_stmt:
24943
//     | "match" subject_expr NEWLINE
24944
//     | "match" subject_expr ':' NEWLINE !INDENT
24945
static void *
24946
invalid_match_stmt_rule(Parser *p)
24947
21.7k
{
24948
21.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24949
0
        _Pypegen_stack_overflow(p);
24950
0
    }
24951
21.7k
    if (p->error_indicator) {
24952
0
        p->level--;
24953
0
        return NULL;
24954
0
    }
24955
21.7k
    void * _res = NULL;
24956
21.7k
    int _mark = p->mark;
24957
21.7k
    { // "match" subject_expr NEWLINE
24958
21.7k
        if (p->error_indicator) {
24959
0
            p->level--;
24960
0
            return NULL;
24961
0
        }
24962
21.7k
        D(fprintf(stderr, "%*c> invalid_match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr NEWLINE"));
24963
21.7k
        expr_ty _keyword;
24964
21.7k
        Token * newline_var;
24965
21.7k
        expr_ty subject_expr_var;
24966
21.7k
        if (
24967
21.7k
            (_keyword = _PyPegen_expect_soft_keyword(p, "match"))  // soft_keyword='"match"'
24968
21.7k
            &&
24969
21.7k
            (subject_expr_var = subject_expr_rule(p))  // subject_expr
24970
21.7k
            &&
24971
21.7k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24972
21.7k
        )
24973
9
        {
24974
9
            D(fprintf(stderr, "%*c+ invalid_match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr NEWLINE"));
24975
9
            _res = CHECK_VERSION ( void* , 10 , "Pattern matching is" , RAISE_SYNTAX_ERROR ( "expected ':'" ) );
24976
9
            if (_res == NULL && PyErr_Occurred()) {
24977
9
                p->error_indicator = 1;
24978
9
                p->level--;
24979
9
                return NULL;
24980
9
            }
24981
0
            goto done;
24982
9
        }
24983
21.7k
        p->mark = _mark;
24984
21.7k
        D(fprintf(stderr, "%*c%s invalid_match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24985
21.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr NEWLINE"));
24986
21.7k
    }
24987
0
    { // "match" subject_expr ':' NEWLINE !INDENT
24988
21.7k
        if (p->error_indicator) {
24989
0
            p->level--;
24990
0
            return NULL;
24991
0
        }
24992
21.7k
        D(fprintf(stderr, "%*c> invalid_match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE !INDENT"));
24993
21.7k
        Token * _literal;
24994
21.7k
        expr_ty a;
24995
21.7k
        Token * newline_var;
24996
21.7k
        expr_ty subject;
24997
21.7k
        if (
24998
21.7k
            (a = _PyPegen_expect_soft_keyword(p, "match"))  // soft_keyword='"match"'
24999
21.7k
            &&
25000
21.7k
            (subject = subject_expr_rule(p))  // subject_expr
25001
21.7k
            &&
25002
21.7k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25003
21.7k
            &&
25004
21.7k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25005
21.7k
            &&
25006
21.7k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25007
21.7k
        )
25008
2
        {
25009
2
            D(fprintf(stderr, "%*c+ invalid_match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE !INDENT"));
25010
2
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'match' statement on line %d" , a -> lineno );
25011
2
            if (_res == NULL && PyErr_Occurred()) {
25012
2
                p->error_indicator = 1;
25013
2
                p->level--;
25014
2
                return NULL;
25015
2
            }
25016
0
            goto done;
25017
2
        }
25018
21.7k
        p->mark = _mark;
25019
21.7k
        D(fprintf(stderr, "%*c%s invalid_match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25020
21.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr ':' NEWLINE !INDENT"));
25021
21.7k
    }
25022
0
    _res = NULL;
25023
21.7k
  done:
25024
21.7k
    p->level--;
25025
21.7k
    return _res;
25026
21.7k
}
25027
25028
// invalid_case_block:
25029
//     | "case" patterns guard? NEWLINE
25030
//     | "case" patterns guard? ':' NEWLINE !INDENT
25031
static void *
25032
invalid_case_block_rule(Parser *p)
25033
2.12k
{
25034
2.12k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25035
0
        _Pypegen_stack_overflow(p);
25036
0
    }
25037
2.12k
    if (p->error_indicator) {
25038
0
        p->level--;
25039
0
        return NULL;
25040
0
    }
25041
2.12k
    void * _res = NULL;
25042
2.12k
    int _mark = p->mark;
25043
2.12k
    { // "case" patterns guard? NEWLINE
25044
2.12k
        if (p->error_indicator) {
25045
0
            p->level--;
25046
0
            return NULL;
25047
0
        }
25048
2.12k
        D(fprintf(stderr, "%*c> invalid_case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? NEWLINE"));
25049
2.12k
        expr_ty _keyword;
25050
2.12k
        void *_opt_var;
25051
2.12k
        UNUSED(_opt_var); // Silence compiler warnings
25052
2.12k
        Token * newline_var;
25053
2.12k
        pattern_ty patterns_var;
25054
2.12k
        if (
25055
2.12k
            (_keyword = _PyPegen_expect_soft_keyword(p, "case"))  // soft_keyword='"case"'
25056
2.12k
            &&
25057
2.12k
            (patterns_var = patterns_rule(p))  // patterns
25058
2.12k
            &&
25059
2.12k
            (_opt_var = guard_rule(p), !p->error_indicator)  // guard?
25060
2.12k
            &&
25061
2.12k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25062
2.12k
        )
25063
68
        {
25064
68
            D(fprintf(stderr, "%*c+ invalid_case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? NEWLINE"));
25065
68
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
25066
68
            if (_res == NULL && PyErr_Occurred()) {
25067
68
                p->error_indicator = 1;
25068
68
                p->level--;
25069
68
                return NULL;
25070
68
            }
25071
0
            goto done;
25072
68
        }
25073
2.05k
        p->mark = _mark;
25074
2.05k
        D(fprintf(stderr, "%*c%s invalid_case_block[%d-%d]: %s failed!\n", p->level, ' ',
25075
2.05k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"case\" patterns guard? NEWLINE"));
25076
2.05k
    }
25077
0
    { // "case" patterns guard? ':' NEWLINE !INDENT
25078
2.05k
        if (p->error_indicator) {
25079
53
            p->level--;
25080
53
            return NULL;
25081
53
        }
25082
2.00k
        D(fprintf(stderr, "%*c> invalid_case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' NEWLINE !INDENT"));
25083
2.00k
        Token * _literal;
25084
2.00k
        void *_opt_var;
25085
2.00k
        UNUSED(_opt_var); // Silence compiler warnings
25086
2.00k
        expr_ty a;
25087
2.00k
        Token * newline_var;
25088
2.00k
        pattern_ty patterns_var;
25089
2.00k
        if (
25090
2.00k
            (a = _PyPegen_expect_soft_keyword(p, "case"))  // soft_keyword='"case"'
25091
2.00k
            &&
25092
2.00k
            (patterns_var = patterns_rule(p))  // patterns
25093
2.00k
            &&
25094
2.00k
            (_opt_var = guard_rule(p), !p->error_indicator)  // guard?
25095
2.00k
            &&
25096
2.00k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25097
2.00k
            &&
25098
2.00k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25099
2.00k
            &&
25100
2.00k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25101
2.00k
        )
25102
11
        {
25103
11
            D(fprintf(stderr, "%*c+ invalid_case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' NEWLINE !INDENT"));
25104
11
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'case' statement on line %d" , a -> lineno );
25105
11
            if (_res == NULL && PyErr_Occurred()) {
25106
11
                p->error_indicator = 1;
25107
11
                p->level--;
25108
11
                return NULL;
25109
11
            }
25110
0
            goto done;
25111
11
        }
25112
1.99k
        p->mark = _mark;
25113
1.99k
        D(fprintf(stderr, "%*c%s invalid_case_block[%d-%d]: %s failed!\n", p->level, ' ',
25114
1.99k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"case\" patterns guard? ':' NEWLINE !INDENT"));
25115
1.99k
    }
25116
0
    _res = NULL;
25117
1.99k
  done:
25118
1.99k
    p->level--;
25119
1.99k
    return _res;
25120
1.99k
}
25121
25122
// invalid_as_pattern: or_pattern 'as' "_" | or_pattern 'as' expression
25123
static void *
25124
invalid_as_pattern_rule(Parser *p)
25125
44.8k
{
25126
44.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25127
0
        _Pypegen_stack_overflow(p);
25128
0
    }
25129
44.8k
    if (p->error_indicator) {
25130
0
        p->level--;
25131
0
        return NULL;
25132
0
    }
25133
44.8k
    void * _res = NULL;
25134
44.8k
    int _mark = p->mark;
25135
44.8k
    { // or_pattern 'as' "_"
25136
44.8k
        if (p->error_indicator) {
25137
0
            p->level--;
25138
0
            return NULL;
25139
0
        }
25140
44.8k
        D(fprintf(stderr, "%*c> invalid_as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' \"_\""));
25141
44.8k
        Token * _keyword;
25142
44.8k
        expr_ty a;
25143
44.8k
        pattern_ty or_pattern_var;
25144
44.8k
        if (
25145
44.8k
            (or_pattern_var = or_pattern_rule(p))  // or_pattern
25146
44.8k
            &&
25147
44.8k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
25148
44.8k
            &&
25149
44.8k
            (a = _PyPegen_expect_soft_keyword(p, "_"))  // soft_keyword='"_"'
25150
44.8k
        )
25151
1
        {
25152
1
            D(fprintf(stderr, "%*c+ invalid_as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' \"_\""));
25153
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use '_' as a target" );
25154
1
            if (_res == NULL && PyErr_Occurred()) {
25155
1
                p->error_indicator = 1;
25156
1
                p->level--;
25157
1
                return NULL;
25158
1
            }
25159
0
            goto done;
25160
1
        }
25161
44.8k
        p->mark = _mark;
25162
44.8k
        D(fprintf(stderr, "%*c%s invalid_as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
25163
44.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' \"_\""));
25164
44.8k
    }
25165
0
    { // or_pattern 'as' expression
25166
44.8k
        if (p->error_indicator) {
25167
0
            p->level--;
25168
0
            return NULL;
25169
0
        }
25170
44.8k
        D(fprintf(stderr, "%*c> invalid_as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' expression"));
25171
44.8k
        Token * _keyword;
25172
44.8k
        expr_ty a;
25173
44.8k
        pattern_ty or_pattern_var;
25174
44.8k
        if (
25175
44.8k
            (or_pattern_var = or_pattern_rule(p))  // or_pattern
25176
44.8k
            &&
25177
44.8k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
25178
44.8k
            &&
25179
44.8k
            (a = expression_rule(p))  // expression
25180
44.8k
        )
25181
1
        {
25182
1
            D(fprintf(stderr, "%*c+ invalid_as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' expression"));
25183
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use %s as pattern target" , _PyPegen_get_expr_name ( a ) );
25184
1
            if (_res == NULL && PyErr_Occurred()) {
25185
1
                p->error_indicator = 1;
25186
1
                p->level--;
25187
1
                return NULL;
25188
1
            }
25189
0
            goto done;
25190
1
        }
25191
44.8k
        p->mark = _mark;
25192
44.8k
        D(fprintf(stderr, "%*c%s invalid_as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
25193
44.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' expression"));
25194
44.8k
    }
25195
0
    _res = NULL;
25196
44.8k
  done:
25197
44.8k
    p->level--;
25198
44.8k
    return _res;
25199
44.8k
}
25200
25201
// invalid_class_pattern: name_or_attr '(' invalid_class_argument_pattern
25202
static void *
25203
invalid_class_pattern_rule(Parser *p)
25204
8.26k
{
25205
8.26k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25206
0
        _Pypegen_stack_overflow(p);
25207
0
    }
25208
8.26k
    if (p->error_indicator) {
25209
0
        p->level--;
25210
0
        return NULL;
25211
0
    }
25212
8.26k
    void * _res = NULL;
25213
8.26k
    int _mark = p->mark;
25214
8.26k
    { // name_or_attr '(' invalid_class_argument_pattern
25215
8.26k
        if (p->error_indicator) {
25216
0
            p->level--;
25217
0
            return NULL;
25218
0
        }
25219
8.26k
        D(fprintf(stderr, "%*c> invalid_class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern"));
25220
8.26k
        Token * _literal;
25221
8.26k
        asdl_pattern_seq* a;
25222
8.26k
        expr_ty name_or_attr_var;
25223
8.26k
        if (
25224
8.26k
            (name_or_attr_var = name_or_attr_rule(p))  // name_or_attr
25225
8.26k
            &&
25226
8.26k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
25227
8.26k
            &&
25228
8.26k
            (a = invalid_class_argument_pattern_rule(p))  // invalid_class_argument_pattern
25229
8.26k
        )
25230
620
        {
25231
620
            D(fprintf(stderr, "%*c+ invalid_class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern"));
25232
620
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( PyPegen_first_item ( a , pattern_ty ) , PyPegen_last_item ( a , pattern_ty ) , "positional patterns follow keyword patterns" );
25233
620
            if (_res == NULL && PyErr_Occurred()) {
25234
620
                p->error_indicator = 1;
25235
620
                p->level--;
25236
620
                return NULL;
25237
620
            }
25238
0
            goto done;
25239
620
        }
25240
7.64k
        p->mark = _mark;
25241
7.64k
        D(fprintf(stderr, "%*c%s invalid_class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
25242
7.64k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern"));
25243
7.64k
    }
25244
0
    _res = NULL;
25245
7.64k
  done:
25246
7.64k
    p->level--;
25247
7.64k
    return _res;
25248
7.64k
}
25249
25250
// invalid_class_argument_pattern:
25251
//     | [positional_patterns ','] keyword_patterns ',' positional_patterns
25252
static asdl_pattern_seq*
25253
invalid_class_argument_pattern_rule(Parser *p)
25254
3.41k
{
25255
3.41k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25256
0
        _Pypegen_stack_overflow(p);
25257
0
    }
25258
3.41k
    if (p->error_indicator) {
25259
0
        p->level--;
25260
0
        return NULL;
25261
0
    }
25262
3.41k
    asdl_pattern_seq* _res = NULL;
25263
3.41k
    int _mark = p->mark;
25264
3.41k
    { // [positional_patterns ','] keyword_patterns ',' positional_patterns
25265
3.41k
        if (p->error_indicator) {
25266
0
            p->level--;
25267
0
            return NULL;
25268
0
        }
25269
3.41k
        D(fprintf(stderr, "%*c> invalid_class_argument_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns"));
25270
3.41k
        Token * _literal;
25271
3.41k
        void *_opt_var;
25272
3.41k
        UNUSED(_opt_var); // Silence compiler warnings
25273
3.41k
        asdl_pattern_seq* a;
25274
3.41k
        asdl_seq* keyword_patterns_var;
25275
3.41k
        if (
25276
3.41k
            (_opt_var = _tmp_147_rule(p), !p->error_indicator)  // [positional_patterns ',']
25277
3.41k
            &&
25278
3.41k
            (keyword_patterns_var = keyword_patterns_rule(p))  // keyword_patterns
25279
3.41k
            &&
25280
3.41k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
25281
3.41k
            &&
25282
3.41k
            (a = positional_patterns_rule(p))  // positional_patterns
25283
3.41k
        )
25284
620
        {
25285
620
            D(fprintf(stderr, "%*c+ invalid_class_argument_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns"));
25286
620
            _res = a;
25287
620
            if (_res == NULL && PyErr_Occurred()) {
25288
0
                p->error_indicator = 1;
25289
0
                p->level--;
25290
0
                return NULL;
25291
0
            }
25292
620
            goto done;
25293
620
        }
25294
2.79k
        p->mark = _mark;
25295
2.79k
        D(fprintf(stderr, "%*c%s invalid_class_argument_pattern[%d-%d]: %s failed!\n", p->level, ' ',
25296
2.79k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns"));
25297
2.79k
    }
25298
0
    _res = NULL;
25299
3.41k
  done:
25300
3.41k
    p->level--;
25301
3.41k
    return _res;
25302
2.79k
}
25303
25304
// invalid_if_stmt:
25305
//     | 'if' named_expression NEWLINE
25306
//     | 'if' named_expression ':' NEWLINE !INDENT
25307
static void *
25308
invalid_if_stmt_rule(Parser *p)
25309
744
{
25310
744
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25311
0
        _Pypegen_stack_overflow(p);
25312
0
    }
25313
744
    if (p->error_indicator) {
25314
0
        p->level--;
25315
0
        return NULL;
25316
0
    }
25317
744
    void * _res = NULL;
25318
744
    int _mark = p->mark;
25319
744
    { // 'if' named_expression NEWLINE
25320
744
        if (p->error_indicator) {
25321
0
            p->level--;
25322
0
            return NULL;
25323
0
        }
25324
744
        D(fprintf(stderr, "%*c> invalid_if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression NEWLINE"));
25325
744
        Token * _keyword;
25326
744
        expr_ty named_expression_var;
25327
744
        Token * newline_var;
25328
744
        if (
25329
744
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
25330
744
            &&
25331
744
            (named_expression_var = named_expression_rule(p))  // named_expression
25332
744
            &&
25333
744
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25334
744
        )
25335
4
        {
25336
4
            D(fprintf(stderr, "%*c+ invalid_if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression NEWLINE"));
25337
4
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
25338
4
            if (_res == NULL && PyErr_Occurred()) {
25339
4
                p->error_indicator = 1;
25340
4
                p->level--;
25341
4
                return NULL;
25342
4
            }
25343
0
            goto done;
25344
4
        }
25345
740
        p->mark = _mark;
25346
740
        D(fprintf(stderr, "%*c%s invalid_if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25347
740
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression NEWLINE"));
25348
740
    }
25349
0
    { // 'if' named_expression ':' NEWLINE !INDENT
25350
740
        if (p->error_indicator) {
25351
1
            p->level--;
25352
1
            return NULL;
25353
1
        }
25354
739
        D(fprintf(stderr, "%*c> invalid_if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' NEWLINE !INDENT"));
25355
739
        Token * _literal;
25356
739
        Token * a;
25357
739
        expr_ty a_1;
25358
739
        Token * newline_var;
25359
739
        if (
25360
739
            (a = _PyPegen_expect_token(p, 687))  // token='if'
25361
739
            &&
25362
739
            (a_1 = named_expression_rule(p))  // named_expression
25363
739
            &&
25364
739
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25365
739
            &&
25366
739
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25367
739
            &&
25368
739
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25369
739
        )
25370
4
        {
25371
4
            D(fprintf(stderr, "%*c+ invalid_if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' NEWLINE !INDENT"));
25372
4
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'if' statement on line %d" , a -> lineno );
25373
4
            if (_res == NULL && PyErr_Occurred()) {
25374
4
                p->error_indicator = 1;
25375
4
                p->level--;
25376
4
                return NULL;
25377
4
            }
25378
0
            goto done;
25379
4
        }
25380
735
        p->mark = _mark;
25381
735
        D(fprintf(stderr, "%*c%s invalid_if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25382
735
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' NEWLINE !INDENT"));
25383
735
    }
25384
0
    _res = NULL;
25385
735
  done:
25386
735
    p->level--;
25387
735
    return _res;
25388
735
}
25389
25390
// invalid_elif_stmt:
25391
//     | 'elif' named_expression NEWLINE
25392
//     | 'elif' named_expression ':' NEWLINE !INDENT
25393
static void *
25394
invalid_elif_stmt_rule(Parser *p)
25395
1.03k
{
25396
1.03k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25397
0
        _Pypegen_stack_overflow(p);
25398
0
    }
25399
1.03k
    if (p->error_indicator) {
25400
0
        p->level--;
25401
0
        return NULL;
25402
0
    }
25403
1.03k
    void * _res = NULL;
25404
1.03k
    int _mark = p->mark;
25405
1.03k
    { // 'elif' named_expression NEWLINE
25406
1.03k
        if (p->error_indicator) {
25407
0
            p->level--;
25408
0
            return NULL;
25409
0
        }
25410
1.03k
        D(fprintf(stderr, "%*c> invalid_elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression NEWLINE"));
25411
1.03k
        Token * _keyword;
25412
1.03k
        expr_ty named_expression_var;
25413
1.03k
        Token * newline_var;
25414
1.03k
        if (
25415
1.03k
            (_keyword = _PyPegen_expect_token(p, 692))  // token='elif'
25416
1.03k
            &&
25417
1.03k
            (named_expression_var = named_expression_rule(p))  // named_expression
25418
1.03k
            &&
25419
1.03k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25420
1.03k
        )
25421
2
        {
25422
2
            D(fprintf(stderr, "%*c+ invalid_elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression NEWLINE"));
25423
2
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
25424
2
            if (_res == NULL && PyErr_Occurred()) {
25425
2
                p->error_indicator = 1;
25426
2
                p->level--;
25427
2
                return NULL;
25428
2
            }
25429
0
            goto done;
25430
2
        }
25431
1.03k
        p->mark = _mark;
25432
1.03k
        D(fprintf(stderr, "%*c%s invalid_elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25433
1.03k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression NEWLINE"));
25434
1.03k
    }
25435
0
    { // 'elif' named_expression ':' NEWLINE !INDENT
25436
1.03k
        if (p->error_indicator) {
25437
1
            p->level--;
25438
1
            return NULL;
25439
1
        }
25440
1.03k
        D(fprintf(stderr, "%*c> invalid_elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' NEWLINE !INDENT"));
25441
1.03k
        Token * _literal;
25442
1.03k
        Token * a;
25443
1.03k
        expr_ty named_expression_var;
25444
1.03k
        Token * newline_var;
25445
1.03k
        if (
25446
1.03k
            (a = _PyPegen_expect_token(p, 692))  // token='elif'
25447
1.03k
            &&
25448
1.03k
            (named_expression_var = named_expression_rule(p))  // named_expression
25449
1.03k
            &&
25450
1.03k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25451
1.03k
            &&
25452
1.03k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25453
1.03k
            &&
25454
1.03k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25455
1.03k
        )
25456
8
        {
25457
8
            D(fprintf(stderr, "%*c+ invalid_elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' NEWLINE !INDENT"));
25458
8
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'elif' statement on line %d" , a -> lineno );
25459
8
            if (_res == NULL && PyErr_Occurred()) {
25460
8
                p->error_indicator = 1;
25461
8
                p->level--;
25462
8
                return NULL;
25463
8
            }
25464
0
            goto done;
25465
8
        }
25466
1.02k
        p->mark = _mark;
25467
1.02k
        D(fprintf(stderr, "%*c%s invalid_elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25468
1.02k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' NEWLINE !INDENT"));
25469
1.02k
    }
25470
0
    _res = NULL;
25471
1.02k
  done:
25472
1.02k
    p->level--;
25473
1.02k
    return _res;
25474
1.02k
}
25475
25476
// invalid_else_stmt: 'else' ':' NEWLINE !INDENT | 'else' ':' block 'elif'
25477
static void *
25478
invalid_else_stmt_rule(Parser *p)
25479
2.62k
{
25480
2.62k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25481
0
        _Pypegen_stack_overflow(p);
25482
0
    }
25483
2.62k
    if (p->error_indicator) {
25484
0
        p->level--;
25485
0
        return NULL;
25486
0
    }
25487
2.62k
    void * _res = NULL;
25488
2.62k
    int _mark = p->mark;
25489
2.62k
    { // 'else' ':' NEWLINE !INDENT
25490
2.62k
        if (p->error_indicator) {
25491
0
            p->level--;
25492
0
            return NULL;
25493
0
        }
25494
2.62k
        D(fprintf(stderr, "%*c> invalid_else_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else' ':' NEWLINE !INDENT"));
25495
2.62k
        Token * _literal;
25496
2.62k
        Token * a;
25497
2.62k
        Token * newline_var;
25498
2.62k
        if (
25499
2.62k
            (a = _PyPegen_expect_token(p, 691))  // token='else'
25500
2.62k
            &&
25501
2.62k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25502
2.62k
            &&
25503
2.62k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25504
2.62k
            &&
25505
2.62k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25506
2.62k
        )
25507
4
        {
25508
4
            D(fprintf(stderr, "%*c+ invalid_else_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else' ':' NEWLINE !INDENT"));
25509
4
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'else' statement on line %d" , a -> lineno );
25510
4
            if (_res == NULL && PyErr_Occurred()) {
25511
4
                p->error_indicator = 1;
25512
4
                p->level--;
25513
4
                return NULL;
25514
4
            }
25515
0
            goto done;
25516
4
        }
25517
2.62k
        p->mark = _mark;
25518
2.62k
        D(fprintf(stderr, "%*c%s invalid_else_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25519
2.62k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else' ':' NEWLINE !INDENT"));
25520
2.62k
    }
25521
0
    { // 'else' ':' block 'elif'
25522
2.62k
        if (p->error_indicator) {
25523
1
            p->level--;
25524
1
            return NULL;
25525
1
        }
25526
2.62k
        D(fprintf(stderr, "%*c> invalid_else_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else' ':' block 'elif'"));
25527
2.62k
        Token * _keyword;
25528
2.62k
        Token * _keyword_1;
25529
2.62k
        Token * _literal;
25530
2.62k
        asdl_stmt_seq* block_var;
25531
2.62k
        if (
25532
2.62k
            (_keyword = _PyPegen_expect_token(p, 691))  // token='else'
25533
2.62k
            &&
25534
2.62k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25535
2.62k
            &&
25536
2.62k
            (block_var = block_rule(p))  // block
25537
2.62k
            &&
25538
2.62k
            (_keyword_1 = _PyPegen_expect_token(p, 692))  // token='elif'
25539
2.62k
        )
25540
1
        {
25541
1
            D(fprintf(stderr, "%*c+ invalid_else_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else' ':' block 'elif'"));
25542
1
            _res = RAISE_SYNTAX_ERROR ( "'elif' block follows an 'else' block" );
25543
1
            if (_res == NULL && PyErr_Occurred()) {
25544
1
                p->error_indicator = 1;
25545
1
                p->level--;
25546
1
                return NULL;
25547
1
            }
25548
0
            goto done;
25549
1
        }
25550
2.61k
        p->mark = _mark;
25551
2.61k
        D(fprintf(stderr, "%*c%s invalid_else_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25552
2.61k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else' ':' block 'elif'"));
25553
2.61k
    }
25554
0
    _res = NULL;
25555
2.61k
  done:
25556
2.61k
    p->level--;
25557
2.61k
    return _res;
25558
2.61k
}
25559
25560
// invalid_while_stmt:
25561
//     | 'while' named_expression NEWLINE
25562
//     | 'while' named_expression ':' NEWLINE !INDENT
25563
static void *
25564
invalid_while_stmt_rule(Parser *p)
25565
372
{
25566
372
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25567
0
        _Pypegen_stack_overflow(p);
25568
0
    }
25569
372
    if (p->error_indicator) {
25570
0
        p->level--;
25571
0
        return NULL;
25572
0
    }
25573
372
    void * _res = NULL;
25574
372
    int _mark = p->mark;
25575
372
    { // 'while' named_expression NEWLINE
25576
372
        if (p->error_indicator) {
25577
0
            p->level--;
25578
0
            return NULL;
25579
0
        }
25580
372
        D(fprintf(stderr, "%*c> invalid_while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression NEWLINE"));
25581
372
        Token * _keyword;
25582
372
        expr_ty named_expression_var;
25583
372
        Token * newline_var;
25584
372
        if (
25585
372
            (_keyword = _PyPegen_expect_token(p, 694))  // token='while'
25586
372
            &&
25587
372
            (named_expression_var = named_expression_rule(p))  // named_expression
25588
372
            &&
25589
372
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25590
372
        )
25591
5
        {
25592
5
            D(fprintf(stderr, "%*c+ invalid_while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'while' named_expression NEWLINE"));
25593
5
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
25594
5
            if (_res == NULL && PyErr_Occurred()) {
25595
5
                p->error_indicator = 1;
25596
5
                p->level--;
25597
5
                return NULL;
25598
5
            }
25599
0
            goto done;
25600
5
        }
25601
367
        p->mark = _mark;
25602
367
        D(fprintf(stderr, "%*c%s invalid_while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25603
367
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression NEWLINE"));
25604
367
    }
25605
0
    { // 'while' named_expression ':' NEWLINE !INDENT
25606
367
        if (p->error_indicator) {
25607
1
            p->level--;
25608
1
            return NULL;
25609
1
        }
25610
366
        D(fprintf(stderr, "%*c> invalid_while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' NEWLINE !INDENT"));
25611
366
        Token * _literal;
25612
366
        Token * a;
25613
366
        expr_ty named_expression_var;
25614
366
        Token * newline_var;
25615
366
        if (
25616
366
            (a = _PyPegen_expect_token(p, 694))  // token='while'
25617
366
            &&
25618
366
            (named_expression_var = named_expression_rule(p))  // named_expression
25619
366
            &&
25620
366
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25621
366
            &&
25622
366
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25623
366
            &&
25624
366
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25625
366
        )
25626
3
        {
25627
3
            D(fprintf(stderr, "%*c+ invalid_while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' NEWLINE !INDENT"));
25628
3
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'while' statement on line %d" , a -> lineno );
25629
3
            if (_res == NULL && PyErr_Occurred()) {
25630
3
                p->error_indicator = 1;
25631
3
                p->level--;
25632
3
                return NULL;
25633
3
            }
25634
0
            goto done;
25635
3
        }
25636
363
        p->mark = _mark;
25637
363
        D(fprintf(stderr, "%*c%s invalid_while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25638
363
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression ':' NEWLINE !INDENT"));
25639
363
    }
25640
0
    _res = NULL;
25641
363
  done:
25642
363
    p->level--;
25643
363
    return _res;
25644
363
}
25645
25646
// invalid_for_stmt:
25647
//     | 'async'? 'for' star_targets 'in' star_expressions NEWLINE
25648
//     | 'async'? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT
25649
static void *
25650
invalid_for_stmt_rule(Parser *p)
25651
448
{
25652
448
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25653
0
        _Pypegen_stack_overflow(p);
25654
0
    }
25655
448
    if (p->error_indicator) {
25656
0
        p->level--;
25657
0
        return NULL;
25658
0
    }
25659
448
    void * _res = NULL;
25660
448
    int _mark = p->mark;
25661
448
    { // 'async'? 'for' star_targets 'in' star_expressions NEWLINE
25662
448
        if (p->error_indicator) {
25663
0
            p->level--;
25664
0
            return NULL;
25665
0
        }
25666
448
        D(fprintf(stderr, "%*c> invalid_for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'? 'for' star_targets 'in' star_expressions NEWLINE"));
25667
448
        Token * _keyword;
25668
448
        Token * _keyword_1;
25669
448
        void *_opt_var;
25670
448
        UNUSED(_opt_var); // Silence compiler warnings
25671
448
        Token * newline_var;
25672
448
        expr_ty star_expressions_var;
25673
448
        expr_ty star_targets_var;
25674
448
        if (
25675
448
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
25676
448
            &&
25677
448
            (_keyword = _PyPegen_expect_token(p, 699))  // token='for'
25678
448
            &&
25679
448
            (star_targets_var = star_targets_rule(p))  // star_targets
25680
448
            &&
25681
448
            (_keyword_1 = _PyPegen_expect_token(p, 700))  // token='in'
25682
448
            &&
25683
448
            (star_expressions_var = star_expressions_rule(p))  // star_expressions
25684
448
            &&
25685
448
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25686
448
        )
25687
3
        {
25688
3
            D(fprintf(stderr, "%*c+ invalid_for_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'? 'for' star_targets 'in' star_expressions NEWLINE"));
25689
3
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
25690
3
            if (_res == NULL && PyErr_Occurred()) {
25691
3
                p->error_indicator = 1;
25692
3
                p->level--;
25693
3
                return NULL;
25694
3
            }
25695
0
            goto done;
25696
3
        }
25697
445
        p->mark = _mark;
25698
445
        D(fprintf(stderr, "%*c%s invalid_for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25699
445
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'for' star_targets 'in' star_expressions NEWLINE"));
25700
445
    }
25701
0
    { // 'async'? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT
25702
445
        if (p->error_indicator) {
25703
6
            p->level--;
25704
6
            return NULL;
25705
6
        }
25706
439
        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"));
25707
439
        Token * _keyword;
25708
439
        Token * _literal;
25709
439
        void *_opt_var;
25710
439
        UNUSED(_opt_var); // Silence compiler warnings
25711
439
        Token * a;
25712
439
        Token * newline_var;
25713
439
        expr_ty star_expressions_var;
25714
439
        expr_ty star_targets_var;
25715
439
        if (
25716
439
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
25717
439
            &&
25718
439
            (a = _PyPegen_expect_token(p, 699))  // token='for'
25719
439
            &&
25720
439
            (star_targets_var = star_targets_rule(p))  // star_targets
25721
439
            &&
25722
439
            (_keyword = _PyPegen_expect_token(p, 700))  // token='in'
25723
439
            &&
25724
439
            (star_expressions_var = star_expressions_rule(p))  // star_expressions
25725
439
            &&
25726
439
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25727
439
            &&
25728
439
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25729
439
            &&
25730
439
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25731
439
        )
25732
4
        {
25733
4
            D(fprintf(stderr, "%*c+ invalid_for_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT"));
25734
4
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'for' statement on line %d" , a -> lineno );
25735
4
            if (_res == NULL && PyErr_Occurred()) {
25736
4
                p->error_indicator = 1;
25737
4
                p->level--;
25738
4
                return NULL;
25739
4
            }
25740
0
            goto done;
25741
4
        }
25742
435
        p->mark = _mark;
25743
435
        D(fprintf(stderr, "%*c%s invalid_for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25744
435
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT"));
25745
435
    }
25746
0
    _res = NULL;
25747
435
  done:
25748
435
    p->level--;
25749
435
    return _res;
25750
435
}
25751
25752
// invalid_def_raw:
25753
//     | 'async'? 'def' NAME type_params? '(' params? ')' ['->' expression] ':' NEWLINE !INDENT
25754
//     | 'async'? 'def' NAME type_params? &&'(' params? ')' ['->' expression] &&':' func_type_comment? block
25755
static void *
25756
invalid_def_raw_rule(Parser *p)
25757
3.61k
{
25758
3.61k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25759
0
        _Pypegen_stack_overflow(p);
25760
0
    }
25761
3.61k
    if (p->error_indicator) {
25762
0
        p->level--;
25763
0
        return NULL;
25764
0
    }
25765
3.61k
    void * _res = NULL;
25766
3.61k
    int _mark = p->mark;
25767
3.61k
    { // 'async'? 'def' NAME type_params? '(' params? ')' ['->' expression] ':' NEWLINE !INDENT
25768
3.61k
        if (p->error_indicator) {
25769
0
            p->level--;
25770
0
            return NULL;
25771
0
        }
25772
3.61k
        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"));
25773
3.61k
        Token * _literal;
25774
3.61k
        Token * _literal_1;
25775
3.61k
        Token * _literal_2;
25776
3.61k
        void *_opt_var;
25777
3.61k
        UNUSED(_opt_var); // Silence compiler warnings
25778
3.61k
        void *_opt_var_1;
25779
3.61k
        UNUSED(_opt_var_1); // Silence compiler warnings
25780
3.61k
        void *_opt_var_2;
25781
3.61k
        UNUSED(_opt_var_2); // Silence compiler warnings
25782
3.61k
        void *_opt_var_3;
25783
3.61k
        UNUSED(_opt_var_3); // Silence compiler warnings
25784
3.61k
        Token * a;
25785
3.61k
        expr_ty name_var;
25786
3.61k
        Token * newline_var;
25787
3.61k
        if (
25788
3.61k
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
25789
3.61k
            &&
25790
3.61k
            (a = _PyPegen_expect_token(p, 704))  // token='def'
25791
3.61k
            &&
25792
3.61k
            (name_var = _PyPegen_name_token(p))  // NAME
25793
3.61k
            &&
25794
3.61k
            (_opt_var_1 = type_params_rule(p), !p->error_indicator)  // type_params?
25795
3.61k
            &&
25796
3.61k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
25797
3.61k
            &&
25798
3.61k
            (_opt_var_2 = params_rule(p), !p->error_indicator)  // params?
25799
3.61k
            &&
25800
3.61k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
25801
3.61k
            &&
25802
3.61k
            (_opt_var_3 = _tmp_26_rule(p), !p->error_indicator)  // ['->' expression]
25803
3.61k
            &&
25804
3.61k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
25805
3.61k
            &&
25806
3.61k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25807
3.61k
            &&
25808
3.61k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25809
3.61k
        )
25810
23
        {
25811
23
            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"));
25812
23
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after function definition on line %d" , a -> lineno );
25813
23
            if (_res == NULL && PyErr_Occurred()) {
25814
23
                p->error_indicator = 1;
25815
23
                p->level--;
25816
23
                return NULL;
25817
23
            }
25818
0
            goto done;
25819
23
        }
25820
3.59k
        p->mark = _mark;
25821
3.59k
        D(fprintf(stderr, "%*c%s invalid_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
25822
3.59k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'def' NAME type_params? '(' params? ')' ['->' expression] ':' NEWLINE !INDENT"));
25823
3.59k
    }
25824
0
    { // 'async'? 'def' NAME type_params? &&'(' params? ')' ['->' expression] &&':' func_type_comment? block
25825
3.59k
        if (p->error_indicator) {
25826
53
            p->level--;
25827
53
            return NULL;
25828
53
        }
25829
3.53k
        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"));
25830
3.53k
        Token * _keyword;
25831
3.53k
        Token * _literal;
25832
3.53k
        Token * _literal_1;
25833
3.53k
        Token * _literal_2;
25834
3.53k
        void *_opt_var;
25835
3.53k
        UNUSED(_opt_var); // Silence compiler warnings
25836
3.53k
        void *_opt_var_1;
25837
3.53k
        UNUSED(_opt_var_1); // Silence compiler warnings
25838
3.53k
        void *_opt_var_2;
25839
3.53k
        UNUSED(_opt_var_2); // Silence compiler warnings
25840
3.53k
        void *_opt_var_3;
25841
3.53k
        UNUSED(_opt_var_3); // Silence compiler warnings
25842
3.53k
        void *_opt_var_4;
25843
3.53k
        UNUSED(_opt_var_4); // Silence compiler warnings
25844
3.53k
        asdl_stmt_seq* block_var;
25845
3.53k
        expr_ty name_var;
25846
3.53k
        if (
25847
3.53k
            (_opt_var = _PyPegen_expect_token(p, 703), !p->error_indicator)  // 'async'?
25848
3.53k
            &&
25849
3.53k
            (_keyword = _PyPegen_expect_token(p, 704))  // token='def'
25850
3.53k
            &&
25851
3.53k
            (name_var = _PyPegen_name_token(p))  // NAME
25852
3.53k
            &&
25853
3.53k
            (_opt_var_1 = type_params_rule(p), !p->error_indicator)  // type_params?
25854
3.53k
            &&
25855
3.53k
            (_literal = _PyPegen_expect_forced_token(p, 7, "("))  // forced_token='('
25856
3.53k
            &&
25857
3.53k
            (_opt_var_2 = params_rule(p), !p->error_indicator)  // params?
25858
3.53k
            &&
25859
3.53k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
25860
3.53k
            &&
25861
3.53k
            (_opt_var_3 = _tmp_26_rule(p), !p->error_indicator)  // ['->' expression]
25862
3.53k
            &&
25863
3.53k
            (_literal_2 = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
25864
3.53k
            &&
25865
3.53k
            (_opt_var_4 = func_type_comment_rule(p), !p->error_indicator)  // func_type_comment?
25866
3.53k
            &&
25867
3.53k
            (block_var = block_rule(p))  // block
25868
3.53k
        )
25869
2.10k
        {
25870
2.10k
            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"));
25871
2.10k
            _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);
25872
2.10k
            goto done;
25873
2.10k
        }
25874
1.43k
        p->mark = _mark;
25875
1.43k
        D(fprintf(stderr, "%*c%s invalid_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
25876
1.43k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'def' NAME type_params? &&'(' params? ')' ['->' expression] &&':' func_type_comment? block"));
25877
1.43k
    }
25878
0
    _res = NULL;
25879
3.53k
  done:
25880
3.53k
    p->level--;
25881
3.53k
    return _res;
25882
1.43k
}
25883
25884
// invalid_class_def_raw:
25885
//     | 'class' NAME type_params? ['(' arguments? ')'] NEWLINE
25886
//     | 'class' NAME type_params? ['(' arguments? ')'] ':' NEWLINE !INDENT
25887
static void *
25888
invalid_class_def_raw_rule(Parser *p)
25889
1.30k
{
25890
1.30k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25891
0
        _Pypegen_stack_overflow(p);
25892
0
    }
25893
1.30k
    if (p->error_indicator) {
25894
0
        p->level--;
25895
0
        return NULL;
25896
0
    }
25897
1.30k
    void * _res = NULL;
25898
1.30k
    int _mark = p->mark;
25899
1.30k
    { // 'class' NAME type_params? ['(' arguments? ')'] NEWLINE
25900
1.30k
        if (p->error_indicator) {
25901
0
            p->level--;
25902
0
            return NULL;
25903
0
        }
25904
1.30k
        D(fprintf(stderr, "%*c> invalid_class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] NEWLINE"));
25905
1.30k
        Token * _keyword;
25906
1.30k
        void *_opt_var;
25907
1.30k
        UNUSED(_opt_var); // Silence compiler warnings
25908
1.30k
        void *_opt_var_1;
25909
1.30k
        UNUSED(_opt_var_1); // Silence compiler warnings
25910
1.30k
        expr_ty name_var;
25911
1.30k
        Token * newline_var;
25912
1.30k
        if (
25913
1.30k
            (_keyword = _PyPegen_expect_token(p, 706))  // token='class'
25914
1.30k
            &&
25915
1.30k
            (name_var = _PyPegen_name_token(p))  // NAME
25916
1.30k
            &&
25917
1.30k
            (_opt_var = type_params_rule(p), !p->error_indicator)  // type_params?
25918
1.30k
            &&
25919
1.30k
            (_opt_var_1 = _tmp_25_rule(p), !p->error_indicator)  // ['(' arguments? ')']
25920
1.30k
            &&
25921
1.30k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25922
1.30k
        )
25923
7
        {
25924
7
            D(fprintf(stderr, "%*c+ invalid_class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] NEWLINE"));
25925
7
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
25926
7
            if (_res == NULL && PyErr_Occurred()) {
25927
7
                p->error_indicator = 1;
25928
7
                p->level--;
25929
7
                return NULL;
25930
7
            }
25931
0
            goto done;
25932
7
        }
25933
1.30k
        p->mark = _mark;
25934
1.30k
        D(fprintf(stderr, "%*c%s invalid_class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
25935
1.30k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] NEWLINE"));
25936
1.30k
    }
25937
0
    { // 'class' NAME type_params? ['(' arguments? ')'] ':' NEWLINE !INDENT
25938
1.30k
        if (p->error_indicator) {
25939
4
            p->level--;
25940
4
            return NULL;
25941
4
        }
25942
1.29k
        D(fprintf(stderr, "%*c> invalid_class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] ':' NEWLINE !INDENT"));
25943
1.29k
        Token * _literal;
25944
1.29k
        void *_opt_var;
25945
1.29k
        UNUSED(_opt_var); // Silence compiler warnings
25946
1.29k
        void *_opt_var_1;
25947
1.29k
        UNUSED(_opt_var_1); // Silence compiler warnings
25948
1.29k
        Token * a;
25949
1.29k
        expr_ty name_var;
25950
1.29k
        Token * newline_var;
25951
1.29k
        if (
25952
1.29k
            (a = _PyPegen_expect_token(p, 706))  // token='class'
25953
1.29k
            &&
25954
1.29k
            (name_var = _PyPegen_name_token(p))  // NAME
25955
1.29k
            &&
25956
1.29k
            (_opt_var = type_params_rule(p), !p->error_indicator)  // type_params?
25957
1.29k
            &&
25958
1.29k
            (_opt_var_1 = _tmp_25_rule(p), !p->error_indicator)  // ['(' arguments? ')']
25959
1.29k
            &&
25960
1.29k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25961
1.29k
            &&
25962
1.29k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25963
1.29k
            &&
25964
1.29k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25965
1.29k
        )
25966
6
        {
25967
6
            D(fprintf(stderr, "%*c+ invalid_class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] ':' NEWLINE !INDENT"));
25968
6
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after class definition on line %d" , a -> lineno );
25969
6
            if (_res == NULL && PyErr_Occurred()) {
25970
6
                p->error_indicator = 1;
25971
6
                p->level--;
25972
6
                return NULL;
25973
6
            }
25974
0
            goto done;
25975
6
        }
25976
1.29k
        p->mark = _mark;
25977
1.29k
        D(fprintf(stderr, "%*c%s invalid_class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
25978
1.29k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] ':' NEWLINE !INDENT"));
25979
1.29k
    }
25980
0
    _res = NULL;
25981
1.29k
  done:
25982
1.29k
    p->level--;
25983
1.29k
    return _res;
25984
1.29k
}
25985
25986
// invalid_double_starred_kvpairs:
25987
//     | ','.double_starred_kvpair+ ',' invalid_kvpair
25988
//     | expression ':' '*' bitwise_or
25989
//     | expression ':' &('}' | ',')
25990
static void *
25991
invalid_double_starred_kvpairs_rule(Parser *p)
25992
13.7k
{
25993
13.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25994
0
        _Pypegen_stack_overflow(p);
25995
0
    }
25996
13.7k
    if (p->error_indicator) {
25997
0
        p->level--;
25998
0
        return NULL;
25999
0
    }
26000
13.7k
    void * _res = NULL;
26001
13.7k
    int _mark = p->mark;
26002
13.7k
    { // ','.double_starred_kvpair+ ',' invalid_kvpair
26003
13.7k
        if (p->error_indicator) {
26004
0
            p->level--;
26005
0
            return NULL;
26006
0
        }
26007
13.7k
        D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair"));
26008
13.7k
        asdl_seq * _gather_84_var;
26009
13.7k
        Token * _literal;
26010
13.7k
        void *invalid_kvpair_var;
26011
13.7k
        if (
26012
13.7k
            (_gather_84_var = _gather_84_rule(p))  // ','.double_starred_kvpair+
26013
13.7k
            &&
26014
13.7k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
26015
13.7k
            &&
26016
13.7k
            (invalid_kvpair_var = invalid_kvpair_rule(p))  // invalid_kvpair
26017
13.7k
        )
26018
0
        {
26019
0
            D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair"));
26020
0
            _res = _PyPegen_dummy_name(p, _gather_84_var, _literal, invalid_kvpair_var);
26021
0
            goto done;
26022
0
        }
26023
13.7k
        p->mark = _mark;
26024
13.7k
        D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
26025
13.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair"));
26026
13.7k
    }
26027
0
    { // expression ':' '*' bitwise_or
26028
13.7k
        if (p->error_indicator) {
26029
75
            p->level--;
26030
75
            return NULL;
26031
75
        }
26032
13.7k
        D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
26033
13.7k
        Token * _literal;
26034
13.7k
        Token * a;
26035
13.7k
        expr_ty bitwise_or_var;
26036
13.7k
        expr_ty expression_var;
26037
13.7k
        if (
26038
13.7k
            (expression_var = expression_rule(p))  // expression
26039
13.7k
            &&
26040
13.7k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
26041
13.7k
            &&
26042
13.7k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
26043
13.7k
            &&
26044
13.7k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
26045
13.7k
        )
26046
1
        {
26047
1
            D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
26048
1
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "cannot use a starred expression in a dictionary value" );
26049
1
            if (_res == NULL && PyErr_Occurred()) {
26050
1
                p->error_indicator = 1;
26051
1
                p->level--;
26052
1
                return NULL;
26053
1
            }
26054
0
            goto done;
26055
1
        }
26056
13.7k
        p->mark = _mark;
26057
13.7k
        D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
26058
13.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' '*' bitwise_or"));
26059
13.7k
    }
26060
0
    { // expression ':' &('}' | ',')
26061
13.7k
        if (p->error_indicator) {
26062
261
            p->level--;
26063
261
            return NULL;
26064
261
        }
26065
13.4k
        D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
26066
13.4k
        Token * a;
26067
13.4k
        expr_ty expression_var;
26068
13.4k
        if (
26069
13.4k
            (expression_var = expression_rule(p))  // expression
26070
13.4k
            &&
26071
13.4k
            (a = _PyPegen_expect_token(p, 11))  // token=':'
26072
13.4k
            &&
26073
13.4k
            _PyPegen_lookahead(1, _tmp_148_rule, p)
26074
13.4k
        )
26075
2
        {
26076
2
            D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
26077
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expression expected after dictionary key and ':'" );
26078
2
            if (_res == NULL && PyErr_Occurred()) {
26079
2
                p->error_indicator = 1;
26080
2
                p->level--;
26081
2
                return NULL;
26082
2
            }
26083
0
            goto done;
26084
2
        }
26085
13.4k
        p->mark = _mark;
26086
13.4k
        D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
26087
13.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' &('}' | ',')"));
26088
13.4k
    }
26089
0
    _res = NULL;
26090
13.4k
  done:
26091
13.4k
    p->level--;
26092
13.4k
    return _res;
26093
13.4k
}
26094
26095
// invalid_kvpair:
26096
//     | expression !(':')
26097
//     | expression ':' '*' bitwise_or
26098
//     | expression ':' &('}' | ',')
26099
static void *
26100
invalid_kvpair_rule(Parser *p)
26101
1.58k
{
26102
1.58k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26103
0
        _Pypegen_stack_overflow(p);
26104
0
    }
26105
1.58k
    if (p->error_indicator) {
26106
0
        p->level--;
26107
0
        return NULL;
26108
0
    }
26109
1.58k
    void * _res = NULL;
26110
1.58k
    int _mark = p->mark;
26111
1.58k
    { // expression !(':')
26112
1.58k
        if (p->error_indicator) {
26113
0
            p->level--;
26114
0
            return NULL;
26115
0
        }
26116
1.58k
        D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !(':')"));
26117
1.58k
        expr_ty a;
26118
1.58k
        if (
26119
1.58k
            (a = expression_rule(p))  // expression
26120
1.58k
            &&
26121
1.58k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 11)  // token=(':')
26122
1.58k
        )
26123
4
        {
26124
4
            D(fprintf(stderr, "%*c+ invalid_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !(':')"));
26125
4
            _res = RAISE_ERROR_KNOWN_LOCATION ( p , PyExc_SyntaxError , a -> lineno , a -> end_col_offset - 1 , a -> end_lineno , - 1 , "':' expected after dictionary key" );
26126
4
            if (_res == NULL && PyErr_Occurred()) {
26127
4
                p->error_indicator = 1;
26128
4
                p->level--;
26129
4
                return NULL;
26130
4
            }
26131
0
            goto done;
26132
4
        }
26133
1.58k
        p->mark = _mark;
26134
1.58k
        D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
26135
1.58k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !(':')"));
26136
1.58k
    }
26137
0
    { // expression ':' '*' bitwise_or
26138
1.58k
        if (p->error_indicator) {
26139
0
            p->level--;
26140
0
            return NULL;
26141
0
        }
26142
1.58k
        D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
26143
1.58k
        Token * _literal;
26144
1.58k
        Token * a;
26145
1.58k
        expr_ty bitwise_or_var;
26146
1.58k
        expr_ty expression_var;
26147
1.58k
        if (
26148
1.58k
            (expression_var = expression_rule(p))  // expression
26149
1.58k
            &&
26150
1.58k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
26151
1.58k
            &&
26152
1.58k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
26153
1.58k
            &&
26154
1.58k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
26155
1.58k
        )
26156
1
        {
26157
1
            D(fprintf(stderr, "%*c+ invalid_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
26158
1
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "cannot use a starred expression in a dictionary value" );
26159
1
            if (_res == NULL && PyErr_Occurred()) {
26160
1
                p->error_indicator = 1;
26161
1
                p->level--;
26162
1
                return NULL;
26163
1
            }
26164
0
            goto done;
26165
1
        }
26166
1.58k
        p->mark = _mark;
26167
1.58k
        D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
26168
1.58k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' '*' bitwise_or"));
26169
1.58k
    }
26170
0
    { // expression ':' &('}' | ',')
26171
1.58k
        if (p->error_indicator) {
26172
69
            p->level--;
26173
69
            return NULL;
26174
69
        }
26175
1.51k
        D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
26176
1.51k
        Token * a;
26177
1.51k
        expr_ty expression_var;
26178
1.51k
        if (
26179
1.51k
            (expression_var = expression_rule(p))  // expression
26180
1.51k
            &&
26181
1.51k
            (a = _PyPegen_expect_token(p, 11))  // token=':'
26182
1.51k
            &&
26183
1.51k
            _PyPegen_lookahead(1, _tmp_148_rule, p)
26184
1.51k
        )
26185
1
        {
26186
1
            D(fprintf(stderr, "%*c+ invalid_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
26187
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expression expected after dictionary key and ':'" );
26188
1
            if (_res == NULL && PyErr_Occurred()) {
26189
1
                p->error_indicator = 1;
26190
1
                p->level--;
26191
1
                return NULL;
26192
1
            }
26193
0
            goto done;
26194
1
        }
26195
1.51k
        p->mark = _mark;
26196
1.51k
        D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
26197
1.51k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' &('}' | ',')"));
26198
1.51k
    }
26199
0
    _res = NULL;
26200
1.51k
  done:
26201
1.51k
    p->level--;
26202
1.51k
    return _res;
26203
1.51k
}
26204
26205
// invalid_starred_expression_unpacking: '*' expression '=' expression
26206
static void *
26207
invalid_starred_expression_unpacking_rule(Parser *p)
26208
175k
{
26209
175k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26210
1
        _Pypegen_stack_overflow(p);
26211
1
    }
26212
175k
    if (p->error_indicator) {
26213
1
        p->level--;
26214
1
        return NULL;
26215
1
    }
26216
175k
    void * _res = NULL;
26217
175k
    int _mark = p->mark;
26218
175k
    { // '*' expression '=' expression
26219
175k
        if (p->error_indicator) {
26220
0
            p->level--;
26221
0
            return NULL;
26222
0
        }
26223
175k
        D(fprintf(stderr, "%*c> invalid_starred_expression_unpacking[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression '=' expression"));
26224
175k
        Token * _literal;
26225
175k
        Token * a;
26226
175k
        expr_ty b;
26227
175k
        expr_ty expression_var;
26228
175k
        if (
26229
175k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
26230
175k
            &&
26231
175k
            (expression_var = expression_rule(p))  // expression
26232
175k
            &&
26233
175k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
26234
175k
            &&
26235
175k
            (b = expression_rule(p))  // expression
26236
175k
        )
26237
1
        {
26238
1
            D(fprintf(stderr, "%*c+ invalid_starred_expression_unpacking[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression '=' expression"));
26239
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "cannot assign to iterable argument unpacking" );
26240
1
            if (_res == NULL && PyErr_Occurred()) {
26241
1
                p->error_indicator = 1;
26242
1
                p->level--;
26243
1
                return NULL;
26244
1
            }
26245
0
            goto done;
26246
1
        }
26247
175k
        p->mark = _mark;
26248
175k
        D(fprintf(stderr, "%*c%s invalid_starred_expression_unpacking[%d-%d]: %s failed!\n", p->level, ' ',
26249
175k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression '=' expression"));
26250
175k
    }
26251
0
    _res = NULL;
26252
175k
  done:
26253
175k
    p->level--;
26254
175k
    return _res;
26255
175k
}
26256
26257
// invalid_starred_expression: '*'
26258
static void *
26259
invalid_starred_expression_rule(Parser *p)
26260
163k
{
26261
163k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26262
0
        _Pypegen_stack_overflow(p);
26263
0
    }
26264
163k
    if (p->error_indicator) {
26265
0
        p->level--;
26266
0
        return NULL;
26267
0
    }
26268
163k
    void * _res = NULL;
26269
163k
    int _mark = p->mark;
26270
163k
    { // '*'
26271
163k
        if (p->error_indicator) {
26272
0
            p->level--;
26273
0
            return NULL;
26274
0
        }
26275
163k
        D(fprintf(stderr, "%*c> invalid_starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
26276
163k
        Token * _literal;
26277
163k
        if (
26278
163k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
26279
163k
        )
26280
55
        {
26281
55
            D(fprintf(stderr, "%*c+ invalid_starred_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
26282
55
            _res = RAISE_SYNTAX_ERROR ( "Invalid star expression" );
26283
55
            if (_res == NULL && PyErr_Occurred()) {
26284
55
                p->error_indicator = 1;
26285
55
                p->level--;
26286
55
                return NULL;
26287
55
            }
26288
0
            goto done;
26289
55
        }
26290
163k
        p->mark = _mark;
26291
163k
        D(fprintf(stderr, "%*c%s invalid_starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
26292
163k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
26293
163k
    }
26294
0
    _res = NULL;
26295
163k
  done:
26296
163k
    p->level--;
26297
163k
    return _res;
26298
163k
}
26299
26300
// invalid_fstring_replacement_field:
26301
//     | '{' '='
26302
//     | '{' '!'
26303
//     | '{' ':'
26304
//     | '{' '}'
26305
//     | '{' !annotated_rhs
26306
//     | '{' annotated_rhs !('=' | '!' | ':' | '}')
26307
//     | '{' annotated_rhs '=' !('!' | ':' | '}')
26308
//     | '{' annotated_rhs '='? invalid_fstring_conversion_character
26309
//     | '{' annotated_rhs '='? ['!' NAME] !(':' | '}')
26310
//     | '{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'
26311
//     | '{' annotated_rhs '='? ['!' NAME] !'}'
26312
static void *
26313
invalid_fstring_replacement_field_rule(Parser *p)
26314
11.0k
{
26315
11.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26316
1
        _Pypegen_stack_overflow(p);
26317
1
    }
26318
11.0k
    if (p->error_indicator) {
26319
1
        p->level--;
26320
1
        return NULL;
26321
1
    }
26322
11.0k
    void * _res = NULL;
26323
11.0k
    int _mark = p->mark;
26324
11.0k
    { // '{' '='
26325
11.0k
        if (p->error_indicator) {
26326
0
            p->level--;
26327
0
            return NULL;
26328
0
        }
26329
11.0k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '='"));
26330
11.0k
        Token * _literal;
26331
11.0k
        Token * a;
26332
11.0k
        if (
26333
11.0k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26334
11.0k
            &&
26335
11.0k
            (a = _PyPegen_expect_token(p, 22))  // token='='
26336
11.0k
        )
26337
24
        {
26338
24
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '='"));
26339
24
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "f-string: valid expression required before '='" );
26340
24
            if (_res == NULL && PyErr_Occurred()) {
26341
24
                p->error_indicator = 1;
26342
24
                p->level--;
26343
24
                return NULL;
26344
24
            }
26345
0
            goto done;
26346
24
        }
26347
11.0k
        p->mark = _mark;
26348
11.0k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26349
11.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '='"));
26350
11.0k
    }
26351
0
    { // '{' '!'
26352
11.0k
        if (p->error_indicator) {
26353
0
            p->level--;
26354
0
            return NULL;
26355
0
        }
26356
11.0k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '!'"));
26357
11.0k
        Token * _literal;
26358
11.0k
        Token * a;
26359
11.0k
        if (
26360
11.0k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26361
11.0k
            &&
26362
11.0k
            (a = _PyPegen_expect_token(p, 54))  // token='!'
26363
11.0k
        )
26364
10
        {
26365
10
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '!'"));
26366
10
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "f-string: valid expression required before '!'" );
26367
10
            if (_res == NULL && PyErr_Occurred()) {
26368
10
                p->error_indicator = 1;
26369
10
                p->level--;
26370
10
                return NULL;
26371
10
            }
26372
0
            goto done;
26373
10
        }
26374
11.0k
        p->mark = _mark;
26375
11.0k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26376
11.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '!'"));
26377
11.0k
    }
26378
0
    { // '{' ':'
26379
11.0k
        if (p->error_indicator) {
26380
0
            p->level--;
26381
0
            return NULL;
26382
0
        }
26383
11.0k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' ':'"));
26384
11.0k
        Token * _literal;
26385
11.0k
        Token * a;
26386
11.0k
        if (
26387
11.0k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26388
11.0k
            &&
26389
11.0k
            (a = _PyPegen_expect_token(p, 11))  // token=':'
26390
11.0k
        )
26391
92
        {
26392
92
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' ':'"));
26393
92
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "f-string: valid expression required before ':'" );
26394
92
            if (_res == NULL && PyErr_Occurred()) {
26395
92
                p->error_indicator = 1;
26396
92
                p->level--;
26397
92
                return NULL;
26398
92
            }
26399
0
            goto done;
26400
92
        }
26401
10.9k
        p->mark = _mark;
26402
10.9k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26403
10.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' ':'"));
26404
10.9k
    }
26405
0
    { // '{' '}'
26406
10.9k
        if (p->error_indicator) {
26407
0
            p->level--;
26408
0
            return NULL;
26409
0
        }
26410
10.9k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
26411
10.9k
        Token * _literal;
26412
10.9k
        Token * a;
26413
10.9k
        if (
26414
10.9k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26415
10.9k
            &&
26416
10.9k
            (a = _PyPegen_expect_token(p, 26))  // token='}'
26417
10.9k
        )
26418
16
        {
26419
16
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
26420
16
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "f-string: valid expression required before '}'" );
26421
16
            if (_res == NULL && PyErr_Occurred()) {
26422
16
                p->error_indicator = 1;
26423
16
                p->level--;
26424
16
                return NULL;
26425
16
            }
26426
0
            goto done;
26427
16
        }
26428
10.9k
        p->mark = _mark;
26429
10.9k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26430
10.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '}'"));
26431
10.9k
    }
26432
0
    { // '{' !annotated_rhs
26433
10.9k
        if (p->error_indicator) {
26434
0
            p->level--;
26435
0
            return NULL;
26436
0
        }
26437
10.9k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' !annotated_rhs"));
26438
10.9k
        Token * _literal;
26439
10.9k
        if (
26440
10.9k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26441
10.9k
            &&
26442
10.9k
            _PyPegen_lookahead_for_expr(0, annotated_rhs_rule, p)
26443
10.9k
        )
26444
36
        {
26445
36
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' !annotated_rhs"));
26446
36
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting a valid expression after '{'" );
26447
36
            if (_res == NULL && PyErr_Occurred()) {
26448
36
                p->error_indicator = 1;
26449
36
                p->level--;
26450
36
                return NULL;
26451
36
            }
26452
0
            goto done;
26453
36
        }
26454
10.9k
        p->mark = _mark;
26455
10.9k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26456
10.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' !annotated_rhs"));
26457
10.9k
    }
26458
0
    { // '{' annotated_rhs !('=' | '!' | ':' | '}')
26459
10.9k
        if (p->error_indicator) {
26460
0
            p->level--;
26461
0
            return NULL;
26462
0
        }
26463
10.9k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
26464
10.9k
        Token * _literal;
26465
10.9k
        expr_ty annotated_rhs_var;
26466
10.9k
        if (
26467
10.9k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26468
10.9k
            &&
26469
10.9k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26470
10.9k
            &&
26471
10.9k
            _PyPegen_lookahead(0, _tmp_149_rule, p)
26472
10.9k
        )
26473
26
        {
26474
26
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
26475
26
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting '=', or '!', or ':', or '}'" );
26476
26
            if (_res == NULL && PyErr_Occurred()) {
26477
26
                p->error_indicator = 1;
26478
26
                p->level--;
26479
26
                return NULL;
26480
26
            }
26481
0
            goto done;
26482
26
        }
26483
10.8k
        p->mark = _mark;
26484
10.8k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26485
10.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
26486
10.8k
    }
26487
0
    { // '{' annotated_rhs '=' !('!' | ':' | '}')
26488
10.8k
        if (p->error_indicator) {
26489
0
            p->level--;
26490
0
            return NULL;
26491
0
        }
26492
10.8k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
26493
10.8k
        Token * _literal;
26494
10.8k
        Token * _literal_1;
26495
10.8k
        expr_ty annotated_rhs_var;
26496
10.8k
        if (
26497
10.8k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26498
10.8k
            &&
26499
10.8k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26500
10.8k
            &&
26501
10.8k
            (_literal_1 = _PyPegen_expect_token(p, 22))  // token='='
26502
10.8k
            &&
26503
10.8k
            _PyPegen_lookahead(0, _tmp_150_rule, p)
26504
10.8k
        )
26505
10
        {
26506
10
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
26507
10
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting '!', or ':', or '}'" );
26508
10
            if (_res == NULL && PyErr_Occurred()) {
26509
10
                p->error_indicator = 1;
26510
10
                p->level--;
26511
10
                return NULL;
26512
10
            }
26513
0
            goto done;
26514
10
        }
26515
10.8k
        p->mark = _mark;
26516
10.8k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26517
10.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
26518
10.8k
    }
26519
0
    { // '{' annotated_rhs '='? invalid_fstring_conversion_character
26520
10.8k
        if (p->error_indicator) {
26521
0
            p->level--;
26522
0
            return NULL;
26523
0
        }
26524
10.8k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? invalid_fstring_conversion_character"));
26525
10.8k
        Token * _literal;
26526
10.8k
        void *_opt_var;
26527
10.8k
        UNUSED(_opt_var); // Silence compiler warnings
26528
10.8k
        expr_ty annotated_rhs_var;
26529
10.8k
        void *invalid_fstring_conversion_character_var;
26530
10.8k
        if (
26531
10.8k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26532
10.8k
            &&
26533
10.8k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26534
10.8k
            &&
26535
10.8k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26536
10.8k
            &&
26537
10.8k
            (invalid_fstring_conversion_character_var = invalid_fstring_conversion_character_rule(p))  // invalid_fstring_conversion_character
26538
10.8k
        )
26539
0
        {
26540
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"));
26541
0
            _res = _PyPegen_dummy_name(p, _literal, annotated_rhs_var, _opt_var, invalid_fstring_conversion_character_var);
26542
0
            goto done;
26543
0
        }
26544
10.8k
        p->mark = _mark;
26545
10.8k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26546
10.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? invalid_fstring_conversion_character"));
26547
10.8k
    }
26548
0
    { // '{' annotated_rhs '='? ['!' NAME] !(':' | '}')
26549
10.8k
        if (p->error_indicator) {
26550
12
            p->level--;
26551
12
            return NULL;
26552
12
        }
26553
10.8k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
26554
10.8k
        Token * _literal;
26555
10.8k
        void *_opt_var;
26556
10.8k
        UNUSED(_opt_var); // Silence compiler warnings
26557
10.8k
        void *_opt_var_1;
26558
10.8k
        UNUSED(_opt_var_1); // Silence compiler warnings
26559
10.8k
        expr_ty annotated_rhs_var;
26560
10.8k
        if (
26561
10.8k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26562
10.8k
            &&
26563
10.8k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26564
10.8k
            &&
26565
10.8k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26566
10.8k
            &&
26567
10.8k
            (_opt_var_1 = _tmp_151_rule(p), !p->error_indicator)  // ['!' NAME]
26568
10.8k
            &&
26569
10.8k
            _PyPegen_lookahead(0, _tmp_152_rule, p)
26570
10.8k
        )
26571
4
        {
26572
4
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
26573
4
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting ':' or '}'" );
26574
4
            if (_res == NULL && PyErr_Occurred()) {
26575
4
                p->error_indicator = 1;
26576
4
                p->level--;
26577
4
                return NULL;
26578
4
            }
26579
0
            goto done;
26580
4
        }
26581
10.8k
        p->mark = _mark;
26582
10.8k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26583
10.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
26584
10.8k
    }
26585
0
    { // '{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'
26586
10.8k
        if (p->error_indicator) {
26587
0
            p->level--;
26588
0
            return NULL;
26589
0
        }
26590
10.8k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'"));
26591
10.8k
        Token * _literal;
26592
10.8k
        Token * _literal_1;
26593
10.8k
        asdl_seq * _loop0_76_var;
26594
10.8k
        void *_opt_var;
26595
10.8k
        UNUSED(_opt_var); // Silence compiler warnings
26596
10.8k
        void *_opt_var_1;
26597
10.8k
        UNUSED(_opt_var_1); // Silence compiler warnings
26598
10.8k
        expr_ty annotated_rhs_var;
26599
10.8k
        if (
26600
10.8k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26601
10.8k
            &&
26602
10.8k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26603
10.8k
            &&
26604
10.8k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26605
10.8k
            &&
26606
10.8k
            (_opt_var_1 = _tmp_151_rule(p), !p->error_indicator)  // ['!' NAME]
26607
10.8k
            &&
26608
10.8k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
26609
10.8k
            &&
26610
10.8k
            (_loop0_76_var = _loop0_76_rule(p))  // fstring_format_spec*
26611
10.8k
            &&
26612
10.8k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 26)  // token='}'
26613
10.8k
        )
26614
131
        {
26615
131
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'"));
26616
131
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting '}', or format specs" );
26617
131
            if (_res == NULL && PyErr_Occurred()) {
26618
131
                p->error_indicator = 1;
26619
131
                p->level--;
26620
131
                return NULL;
26621
131
            }
26622
0
            goto done;
26623
131
        }
26624
10.7k
        p->mark = _mark;
26625
10.7k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26626
10.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'"));
26627
10.7k
    }
26628
0
    { // '{' annotated_rhs '='? ['!' NAME] !'}'
26629
10.7k
        if (p->error_indicator) {
26630
0
            p->level--;
26631
0
            return NULL;
26632
0
        }
26633
10.7k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
26634
10.7k
        Token * _literal;
26635
10.7k
        void *_opt_var;
26636
10.7k
        UNUSED(_opt_var); // Silence compiler warnings
26637
10.7k
        void *_opt_var_1;
26638
10.7k
        UNUSED(_opt_var_1); // Silence compiler warnings
26639
10.7k
        expr_ty annotated_rhs_var;
26640
10.7k
        if (
26641
10.7k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26642
10.7k
            &&
26643
10.7k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26644
10.7k
            &&
26645
10.7k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26646
10.7k
            &&
26647
10.7k
            (_opt_var_1 = _tmp_151_rule(p), !p->error_indicator)  // ['!' NAME]
26648
10.7k
            &&
26649
10.7k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 26)  // token='}'
26650
10.7k
        )
26651
0
        {
26652
0
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
26653
0
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting '}'" );
26654
0
            if (_res == NULL && PyErr_Occurred()) {
26655
0
                p->error_indicator = 1;
26656
0
                p->level--;
26657
0
                return NULL;
26658
0
            }
26659
0
            goto done;
26660
0
        }
26661
10.7k
        p->mark = _mark;
26662
10.7k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26663
10.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
26664
10.7k
    }
26665
0
    _res = NULL;
26666
10.7k
  done:
26667
10.7k
    p->level--;
26668
10.7k
    return _res;
26669
10.7k
}
26670
26671
// invalid_fstring_conversion_character: '!' &(':' | '}') | '!' !NAME
26672
static void *
26673
invalid_fstring_conversion_character_rule(Parser *p)
26674
147
{
26675
147
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26676
0
        _Pypegen_stack_overflow(p);
26677
0
    }
26678
147
    if (p->error_indicator) {
26679
0
        p->level--;
26680
0
        return NULL;
26681
0
    }
26682
147
    void * _res = NULL;
26683
147
    int _mark = p->mark;
26684
147
    { // '!' &(':' | '}')
26685
147
        if (p->error_indicator) {
26686
0
            p->level--;
26687
0
            return NULL;
26688
0
        }
26689
147
        D(fprintf(stderr, "%*c> invalid_fstring_conversion_character[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' &(':' | '}')"));
26690
147
        Token * _literal;
26691
147
        if (
26692
147
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
26693
147
            &&
26694
147
            _PyPegen_lookahead(1, _tmp_152_rule, p)
26695
147
        )
26696
3
        {
26697
3
            D(fprintf(stderr, "%*c+ invalid_fstring_conversion_character[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!' &(':' | '}')"));
26698
3
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: missing conversion character" );
26699
3
            if (_res == NULL && PyErr_Occurred()) {
26700
3
                p->error_indicator = 1;
26701
3
                p->level--;
26702
3
                return NULL;
26703
3
            }
26704
0
            goto done;
26705
3
        }
26706
144
        p->mark = _mark;
26707
144
        D(fprintf(stderr, "%*c%s invalid_fstring_conversion_character[%d-%d]: %s failed!\n", p->level, ' ',
26708
144
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' &(':' | '}')"));
26709
144
    }
26710
0
    { // '!' !NAME
26711
144
        if (p->error_indicator) {
26712
0
            p->level--;
26713
0
            return NULL;
26714
0
        }
26715
144
        D(fprintf(stderr, "%*c> invalid_fstring_conversion_character[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' !NAME"));
26716
144
        Token * _literal;
26717
144
        if (
26718
144
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
26719
144
            &&
26720
144
            _PyPegen_lookahead_for_expr(0, _PyPegen_name_token, p)
26721
144
        )
26722
9
        {
26723
9
            D(fprintf(stderr, "%*c+ invalid_fstring_conversion_character[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!' !NAME"));
26724
9
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: invalid conversion character" );
26725
9
            if (_res == NULL && PyErr_Occurred()) {
26726
9
                p->error_indicator = 1;
26727
9
                p->level--;
26728
9
                return NULL;
26729
9
            }
26730
0
            goto done;
26731
9
        }
26732
135
        p->mark = _mark;
26733
135
        D(fprintf(stderr, "%*c%s invalid_fstring_conversion_character[%d-%d]: %s failed!\n", p->level, ' ',
26734
135
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' !NAME"));
26735
135
    }
26736
0
    _res = NULL;
26737
135
  done:
26738
135
    p->level--;
26739
135
    return _res;
26740
135
}
26741
26742
// invalid_tstring_replacement_field:
26743
//     | '{' '='
26744
//     | '{' '!'
26745
//     | '{' ':'
26746
//     | '{' '}'
26747
//     | '{' !annotated_rhs
26748
//     | '{' annotated_rhs !('=' | '!' | ':' | '}')
26749
//     | '{' annotated_rhs '=' !('!' | ':' | '}')
26750
//     | '{' annotated_rhs '='? invalid_tstring_conversion_character
26751
//     | '{' annotated_rhs '='? ['!' NAME] !(':' | '}')
26752
//     | '{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'
26753
//     | '{' annotated_rhs '='? ['!' NAME] !'}'
26754
static void *
26755
invalid_tstring_replacement_field_rule(Parser *p)
26756
5.15k
{
26757
5.15k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26758
1
        _Pypegen_stack_overflow(p);
26759
1
    }
26760
5.15k
    if (p->error_indicator) {
26761
1
        p->level--;
26762
1
        return NULL;
26763
1
    }
26764
5.15k
    void * _res = NULL;
26765
5.15k
    int _mark = p->mark;
26766
5.15k
    { // '{' '='
26767
5.15k
        if (p->error_indicator) {
26768
0
            p->level--;
26769
0
            return NULL;
26770
0
        }
26771
5.15k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '='"));
26772
5.15k
        Token * _literal;
26773
5.15k
        Token * a;
26774
5.15k
        if (
26775
5.15k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26776
5.15k
            &&
26777
5.15k
            (a = _PyPegen_expect_token(p, 22))  // token='='
26778
5.15k
        )
26779
5
        {
26780
5
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '='"));
26781
5
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "t-string: valid expression required before '='" );
26782
5
            if (_res == NULL && PyErr_Occurred()) {
26783
5
                p->error_indicator = 1;
26784
5
                p->level--;
26785
5
                return NULL;
26786
5
            }
26787
0
            goto done;
26788
5
        }
26789
5.14k
        p->mark = _mark;
26790
5.14k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26791
5.14k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '='"));
26792
5.14k
    }
26793
0
    { // '{' '!'
26794
5.14k
        if (p->error_indicator) {
26795
0
            p->level--;
26796
0
            return NULL;
26797
0
        }
26798
5.14k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '!'"));
26799
5.14k
        Token * _literal;
26800
5.14k
        Token * a;
26801
5.14k
        if (
26802
5.14k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26803
5.14k
            &&
26804
5.14k
            (a = _PyPegen_expect_token(p, 54))  // token='!'
26805
5.14k
        )
26806
12
        {
26807
12
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '!'"));
26808
12
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "t-string: valid expression required before '!'" );
26809
12
            if (_res == NULL && PyErr_Occurred()) {
26810
12
                p->error_indicator = 1;
26811
12
                p->level--;
26812
12
                return NULL;
26813
12
            }
26814
0
            goto done;
26815
12
        }
26816
5.13k
        p->mark = _mark;
26817
5.13k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26818
5.13k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '!'"));
26819
5.13k
    }
26820
0
    { // '{' ':'
26821
5.13k
        if (p->error_indicator) {
26822
0
            p->level--;
26823
0
            return NULL;
26824
0
        }
26825
5.13k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' ':'"));
26826
5.13k
        Token * _literal;
26827
5.13k
        Token * a;
26828
5.13k
        if (
26829
5.13k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26830
5.13k
            &&
26831
5.13k
            (a = _PyPegen_expect_token(p, 11))  // token=':'
26832
5.13k
        )
26833
18
        {
26834
18
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' ':'"));
26835
18
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "t-string: valid expression required before ':'" );
26836
18
            if (_res == NULL && PyErr_Occurred()) {
26837
18
                p->error_indicator = 1;
26838
18
                p->level--;
26839
18
                return NULL;
26840
18
            }
26841
0
            goto done;
26842
18
        }
26843
5.11k
        p->mark = _mark;
26844
5.11k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26845
5.11k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' ':'"));
26846
5.11k
    }
26847
0
    { // '{' '}'
26848
5.11k
        if (p->error_indicator) {
26849
0
            p->level--;
26850
0
            return NULL;
26851
0
        }
26852
5.11k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
26853
5.11k
        Token * _literal;
26854
5.11k
        Token * a;
26855
5.11k
        if (
26856
5.11k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26857
5.11k
            &&
26858
5.11k
            (a = _PyPegen_expect_token(p, 26))  // token='}'
26859
5.11k
        )
26860
14
        {
26861
14
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
26862
14
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "t-string: valid expression required before '}'" );
26863
14
            if (_res == NULL && PyErr_Occurred()) {
26864
14
                p->error_indicator = 1;
26865
14
                p->level--;
26866
14
                return NULL;
26867
14
            }
26868
0
            goto done;
26869
14
        }
26870
5.10k
        p->mark = _mark;
26871
5.10k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26872
5.10k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '}'"));
26873
5.10k
    }
26874
0
    { // '{' !annotated_rhs
26875
5.10k
        if (p->error_indicator) {
26876
0
            p->level--;
26877
0
            return NULL;
26878
0
        }
26879
5.10k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' !annotated_rhs"));
26880
5.10k
        Token * _literal;
26881
5.10k
        if (
26882
5.10k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26883
5.10k
            &&
26884
5.10k
            _PyPegen_lookahead_for_expr(0, annotated_rhs_rule, p)
26885
5.10k
        )
26886
25
        {
26887
25
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' !annotated_rhs"));
26888
25
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting a valid expression after '{'" );
26889
25
            if (_res == NULL && PyErr_Occurred()) {
26890
25
                p->error_indicator = 1;
26891
25
                p->level--;
26892
25
                return NULL;
26893
25
            }
26894
0
            goto done;
26895
25
        }
26896
5.07k
        p->mark = _mark;
26897
5.07k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26898
5.07k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' !annotated_rhs"));
26899
5.07k
    }
26900
0
    { // '{' annotated_rhs !('=' | '!' | ':' | '}')
26901
5.07k
        if (p->error_indicator) {
26902
0
            p->level--;
26903
0
            return NULL;
26904
0
        }
26905
5.07k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
26906
5.07k
        Token * _literal;
26907
5.07k
        expr_ty annotated_rhs_var;
26908
5.07k
        if (
26909
5.07k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26910
5.07k
            &&
26911
5.07k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26912
5.07k
            &&
26913
5.07k
            _PyPegen_lookahead(0, _tmp_149_rule, p)
26914
5.07k
        )
26915
17
        {
26916
17
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
26917
17
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting '=', or '!', or ':', or '}'" );
26918
17
            if (_res == NULL && PyErr_Occurred()) {
26919
17
                p->error_indicator = 1;
26920
17
                p->level--;
26921
17
                return NULL;
26922
17
            }
26923
0
            goto done;
26924
17
        }
26925
5.06k
        p->mark = _mark;
26926
5.06k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26927
5.06k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
26928
5.06k
    }
26929
0
    { // '{' annotated_rhs '=' !('!' | ':' | '}')
26930
5.06k
        if (p->error_indicator) {
26931
0
            p->level--;
26932
0
            return NULL;
26933
0
        }
26934
5.06k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
26935
5.06k
        Token * _literal;
26936
5.06k
        Token * _literal_1;
26937
5.06k
        expr_ty annotated_rhs_var;
26938
5.06k
        if (
26939
5.06k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26940
5.06k
            &&
26941
5.06k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26942
5.06k
            &&
26943
5.06k
            (_literal_1 = _PyPegen_expect_token(p, 22))  // token='='
26944
5.06k
            &&
26945
5.06k
            _PyPegen_lookahead(0, _tmp_150_rule, p)
26946
5.06k
        )
26947
8
        {
26948
8
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
26949
8
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting '!', or ':', or '}'" );
26950
8
            if (_res == NULL && PyErr_Occurred()) {
26951
8
                p->error_indicator = 1;
26952
8
                p->level--;
26953
8
                return NULL;
26954
8
            }
26955
0
            goto done;
26956
8
        }
26957
5.05k
        p->mark = _mark;
26958
5.05k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26959
5.05k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
26960
5.05k
    }
26961
0
    { // '{' annotated_rhs '='? invalid_tstring_conversion_character
26962
5.05k
        if (p->error_indicator) {
26963
0
            p->level--;
26964
0
            return NULL;
26965
0
        }
26966
5.05k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? invalid_tstring_conversion_character"));
26967
5.05k
        Token * _literal;
26968
5.05k
        void *_opt_var;
26969
5.05k
        UNUSED(_opt_var); // Silence compiler warnings
26970
5.05k
        expr_ty annotated_rhs_var;
26971
5.05k
        void *invalid_tstring_conversion_character_var;
26972
5.05k
        if (
26973
5.05k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26974
5.05k
            &&
26975
5.05k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26976
5.05k
            &&
26977
5.05k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26978
5.05k
            &&
26979
5.05k
            (invalid_tstring_conversion_character_var = invalid_tstring_conversion_character_rule(p))  // invalid_tstring_conversion_character
26980
5.05k
        )
26981
0
        {
26982
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"));
26983
0
            _res = _PyPegen_dummy_name(p, _literal, annotated_rhs_var, _opt_var, invalid_tstring_conversion_character_var);
26984
0
            goto done;
26985
0
        }
26986
5.05k
        p->mark = _mark;
26987
5.05k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26988
5.05k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? invalid_tstring_conversion_character"));
26989
5.05k
    }
26990
0
    { // '{' annotated_rhs '='? ['!' NAME] !(':' | '}')
26991
5.05k
        if (p->error_indicator) {
26992
8
            p->level--;
26993
8
            return NULL;
26994
8
        }
26995
5.04k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
26996
5.04k
        Token * _literal;
26997
5.04k
        void *_opt_var;
26998
5.04k
        UNUSED(_opt_var); // Silence compiler warnings
26999
5.04k
        void *_opt_var_1;
27000
5.04k
        UNUSED(_opt_var_1); // Silence compiler warnings
27001
5.04k
        expr_ty annotated_rhs_var;
27002
5.04k
        if (
27003
5.04k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
27004
5.04k
            &&
27005
5.04k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
27006
5.04k
            &&
27007
5.04k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
27008
5.04k
            &&
27009
5.04k
            (_opt_var_1 = _tmp_151_rule(p), !p->error_indicator)  // ['!' NAME]
27010
5.04k
            &&
27011
5.04k
            _PyPegen_lookahead(0, _tmp_152_rule, p)
27012
5.04k
        )
27013
4
        {
27014
4
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
27015
4
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting ':' or '}'" );
27016
4
            if (_res == NULL && PyErr_Occurred()) {
27017
4
                p->error_indicator = 1;
27018
4
                p->level--;
27019
4
                return NULL;
27020
4
            }
27021
0
            goto done;
27022
4
        }
27023
5.04k
        p->mark = _mark;
27024
5.04k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
27025
5.04k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
27026
5.04k
    }
27027
0
    { // '{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'
27028
5.04k
        if (p->error_indicator) {
27029
0
            p->level--;
27030
0
            return NULL;
27031
0
        }
27032
5.04k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'"));
27033
5.04k
        Token * _literal;
27034
5.04k
        Token * _literal_1;
27035
5.04k
        asdl_seq * _loop0_76_var;
27036
5.04k
        void *_opt_var;
27037
5.04k
        UNUSED(_opt_var); // Silence compiler warnings
27038
5.04k
        void *_opt_var_1;
27039
5.04k
        UNUSED(_opt_var_1); // Silence compiler warnings
27040
5.04k
        expr_ty annotated_rhs_var;
27041
5.04k
        if (
27042
5.04k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
27043
5.04k
            &&
27044
5.04k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
27045
5.04k
            &&
27046
5.04k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
27047
5.04k
            &&
27048
5.04k
            (_opt_var_1 = _tmp_151_rule(p), !p->error_indicator)  // ['!' NAME]
27049
5.04k
            &&
27050
5.04k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
27051
5.04k
            &&
27052
5.04k
            (_loop0_76_var = _loop0_76_rule(p))  // fstring_format_spec*
27053
5.04k
            &&
27054
5.04k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 26)  // token='}'
27055
5.04k
        )
27056
19
        {
27057
19
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'"));
27058
19
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting '}', or format specs" );
27059
19
            if (_res == NULL && PyErr_Occurred()) {
27060
19
                p->error_indicator = 1;
27061
19
                p->level--;
27062
19
                return NULL;
27063
19
            }
27064
0
            goto done;
27065
19
        }
27066
5.02k
        p->mark = _mark;
27067
5.02k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
27068
5.02k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'"));
27069
5.02k
    }
27070
0
    { // '{' annotated_rhs '='? ['!' NAME] !'}'
27071
5.02k
        if (p->error_indicator) {
27072
0
            p->level--;
27073
0
            return NULL;
27074
0
        }
27075
5.02k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
27076
5.02k
        Token * _literal;
27077
5.02k
        void *_opt_var;
27078
5.02k
        UNUSED(_opt_var); // Silence compiler warnings
27079
5.02k
        void *_opt_var_1;
27080
5.02k
        UNUSED(_opt_var_1); // Silence compiler warnings
27081
5.02k
        expr_ty annotated_rhs_var;
27082
5.02k
        if (
27083
5.02k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
27084
5.02k
            &&
27085
5.02k
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
27086
5.02k
            &&
27087
5.02k
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
27088
5.02k
            &&
27089
5.02k
            (_opt_var_1 = _tmp_151_rule(p), !p->error_indicator)  // ['!' NAME]
27090
5.02k
            &&
27091
5.02k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 26)  // token='}'
27092
5.02k
        )
27093
0
        {
27094
0
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
27095
0
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting '}'" );
27096
0
            if (_res == NULL && PyErr_Occurred()) {
27097
0
                p->error_indicator = 1;
27098
0
                p->level--;
27099
0
                return NULL;
27100
0
            }
27101
0
            goto done;
27102
0
        }
27103
5.02k
        p->mark = _mark;
27104
5.02k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
27105
5.02k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
27106
5.02k
    }
27107
0
    _res = NULL;
27108
5.02k
  done:
27109
5.02k
    p->level--;
27110
5.02k
    return _res;
27111
5.02k
}
27112
27113
// invalid_tstring_conversion_character: '!' &(':' | '}') | '!' !NAME
27114
static void *
27115
invalid_tstring_conversion_character_rule(Parser *p)
27116
31
{
27117
31
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27118
0
        _Pypegen_stack_overflow(p);
27119
0
    }
27120
31
    if (p->error_indicator) {
27121
0
        p->level--;
27122
0
        return NULL;
27123
0
    }
27124
31
    void * _res = NULL;
27125
31
    int _mark = p->mark;
27126
31
    { // '!' &(':' | '}')
27127
31
        if (p->error_indicator) {
27128
0
            p->level--;
27129
0
            return NULL;
27130
0
        }
27131
31
        D(fprintf(stderr, "%*c> invalid_tstring_conversion_character[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' &(':' | '}')"));
27132
31
        Token * _literal;
27133
31
        if (
27134
31
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
27135
31
            &&
27136
31
            _PyPegen_lookahead(1, _tmp_152_rule, p)
27137
31
        )
27138
4
        {
27139
4
            D(fprintf(stderr, "%*c+ invalid_tstring_conversion_character[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!' &(':' | '}')"));
27140
4
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: missing conversion character" );
27141
4
            if (_res == NULL && PyErr_Occurred()) {
27142
4
                p->error_indicator = 1;
27143
4
                p->level--;
27144
4
                return NULL;
27145
4
            }
27146
0
            goto done;
27147
4
        }
27148
27
        p->mark = _mark;
27149
27
        D(fprintf(stderr, "%*c%s invalid_tstring_conversion_character[%d-%d]: %s failed!\n", p->level, ' ',
27150
27
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' &(':' | '}')"));
27151
27
    }
27152
0
    { // '!' !NAME
27153
27
        if (p->error_indicator) {
27154
0
            p->level--;
27155
0
            return NULL;
27156
0
        }
27157
27
        D(fprintf(stderr, "%*c> invalid_tstring_conversion_character[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' !NAME"));
27158
27
        Token * _literal;
27159
27
        if (
27160
27
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
27161
27
            &&
27162
27
            _PyPegen_lookahead_for_expr(0, _PyPegen_name_token, p)
27163
27
        )
27164
4
        {
27165
4
            D(fprintf(stderr, "%*c+ invalid_tstring_conversion_character[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!' !NAME"));
27166
4
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: invalid conversion character" );
27167
4
            if (_res == NULL && PyErr_Occurred()) {
27168
4
                p->error_indicator = 1;
27169
4
                p->level--;
27170
4
                return NULL;
27171
4
            }
27172
0
            goto done;
27173
4
        }
27174
23
        p->mark = _mark;
27175
23
        D(fprintf(stderr, "%*c%s invalid_tstring_conversion_character[%d-%d]: %s failed!\n", p->level, ' ',
27176
23
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' !NAME"));
27177
23
    }
27178
0
    _res = NULL;
27179
23
  done:
27180
23
    p->level--;
27181
23
    return _res;
27182
23
}
27183
27184
// invalid_string_tstring_concat:
27185
//     | ((fstring | string))+ tstring
27186
//     | tstring+ (fstring | string)
27187
static void *
27188
invalid_string_tstring_concat_rule(Parser *p)
27189
29.8k
{
27190
29.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27191
1
        _Pypegen_stack_overflow(p);
27192
1
    }
27193
29.8k
    if (p->error_indicator) {
27194
1
        p->level--;
27195
1
        return NULL;
27196
1
    }
27197
29.8k
    void * _res = NULL;
27198
29.8k
    int _mark = p->mark;
27199
29.8k
    { // ((fstring | string))+ tstring
27200
29.8k
        if (p->error_indicator) {
27201
0
            p->level--;
27202
0
            return NULL;
27203
0
        }
27204
29.8k
        D(fprintf(stderr, "%*c> invalid_string_tstring_concat[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((fstring | string))+ tstring"));
27205
29.8k
        asdl_seq * a;
27206
29.8k
        expr_ty b;
27207
29.8k
        if (
27208
29.8k
            (a = _loop1_80_rule(p))  // ((fstring | string))+
27209
29.8k
            &&
27210
29.8k
            (b = (expr_ty)tstring_rule(p))  // tstring
27211
29.8k
        )
27212
8
        {
27213
8
            D(fprintf(stderr, "%*c+ invalid_string_tstring_concat[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((fstring | string))+ tstring"));
27214
8
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( PyPegen_last_item ( a , expr_ty ) , b , "cannot mix t-string literals with string or bytes literals" );
27215
8
            if (_res == NULL && PyErr_Occurred()) {
27216
8
                p->error_indicator = 1;
27217
8
                p->level--;
27218
8
                return NULL;
27219
8
            }
27220
0
            goto done;
27221
8
        }
27222
29.8k
        p->mark = _mark;
27223
29.8k
        D(fprintf(stderr, "%*c%s invalid_string_tstring_concat[%d-%d]: %s failed!\n", p->level, ' ',
27224
29.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((fstring | string))+ tstring"));
27225
29.8k
    }
27226
0
    { // tstring+ (fstring | string)
27227
29.8k
        if (p->error_indicator) {
27228
1.64k
            p->level--;
27229
1.64k
            return NULL;
27230
1.64k
        }
27231
28.2k
        D(fprintf(stderr, "%*c> invalid_string_tstring_concat[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring+ (fstring | string)"));
27232
28.2k
        asdl_seq * a;
27233
28.2k
        expr_ty b;
27234
28.2k
        if (
27235
28.2k
            (a = _loop1_81_rule(p))  // tstring+
27236
28.2k
            &&
27237
28.2k
            (b = (expr_ty)_tmp_153_rule(p))  // fstring | string
27238
28.2k
        )
27239
16
        {
27240
16
            D(fprintf(stderr, "%*c+ invalid_string_tstring_concat[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tstring+ (fstring | string)"));
27241
16
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( PyPegen_last_item ( a , expr_ty ) , b , "cannot mix t-string literals with string or bytes literals" );
27242
16
            if (_res == NULL && PyErr_Occurred()) {
27243
16
                p->error_indicator = 1;
27244
16
                p->level--;
27245
16
                return NULL;
27246
16
            }
27247
0
            goto done;
27248
16
        }
27249
28.2k
        p->mark = _mark;
27250
28.2k
        D(fprintf(stderr, "%*c%s invalid_string_tstring_concat[%d-%d]: %s failed!\n", p->level, ' ',
27251
28.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring+ (fstring | string)"));
27252
28.2k
    }
27253
0
    _res = NULL;
27254
28.2k
  done:
27255
28.2k
    p->level--;
27256
28.2k
    return _res;
27257
28.2k
}
27258
27259
// invalid_arithmetic: sum ('+' | '-' | '*' | '/' | '%' | '//' | '@') 'not' inversion
27260
static void *
27261
invalid_arithmetic_rule(Parser *p)
27262
295k
{
27263
295k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27264
0
        _Pypegen_stack_overflow(p);
27265
0
    }
27266
295k
    if (p->error_indicator) {
27267
0
        p->level--;
27268
0
        return NULL;
27269
0
    }
27270
295k
    void * _res = NULL;
27271
295k
    int _mark = p->mark;
27272
295k
    { // sum ('+' | '-' | '*' | '/' | '%' | '//' | '@') 'not' inversion
27273
295k
        if (p->error_indicator) {
27274
0
            p->level--;
27275
0
            return NULL;
27276
0
        }
27277
295k
        D(fprintf(stderr, "%*c> invalid_arithmetic[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum ('+' | '-' | '*' | '/' | '%' | '//' | '@') 'not' inversion"));
27278
295k
        void *_tmp_154_var;
27279
295k
        Token * a;
27280
295k
        expr_ty b;
27281
295k
        expr_ty sum_var;
27282
295k
        if (
27283
295k
            (sum_var = sum_rule(p))  // sum
27284
295k
            &&
27285
295k
            (_tmp_154_var = _tmp_154_rule(p))  // '+' | '-' | '*' | '/' | '%' | '//' | '@'
27286
295k
            &&
27287
295k
            (a = _PyPegen_expect_token(p, 708))  // token='not'
27288
295k
            &&
27289
295k
            (b = inversion_rule(p))  // inversion
27290
295k
        )
27291
8
        {
27292
8
            D(fprintf(stderr, "%*c+ invalid_arithmetic[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum ('+' | '-' | '*' | '/' | '%' | '//' | '@') 'not' inversion"));
27293
8
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "'not' after an operator must be parenthesized" );
27294
8
            if (_res == NULL && PyErr_Occurred()) {
27295
8
                p->error_indicator = 1;
27296
8
                p->level--;
27297
8
                return NULL;
27298
8
            }
27299
0
            goto done;
27300
8
        }
27301
295k
        p->mark = _mark;
27302
295k
        D(fprintf(stderr, "%*c%s invalid_arithmetic[%d-%d]: %s failed!\n", p->level, ' ',
27303
295k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum ('+' | '-' | '*' | '/' | '%' | '//' | '@') 'not' inversion"));
27304
295k
    }
27305
0
    _res = NULL;
27306
295k
  done:
27307
295k
    p->level--;
27308
295k
    return _res;
27309
295k
}
27310
27311
// invalid_factor: ('+' | '-' | '~') 'not' factor
27312
static void *
27313
invalid_factor_rule(Parser *p)
27314
305k
{
27315
305k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27316
0
        _Pypegen_stack_overflow(p);
27317
0
    }
27318
305k
    if (p->error_indicator) {
27319
0
        p->level--;
27320
0
        return NULL;
27321
0
    }
27322
305k
    void * _res = NULL;
27323
305k
    int _mark = p->mark;
27324
305k
    { // ('+' | '-' | '~') 'not' factor
27325
305k
        if (p->error_indicator) {
27326
0
            p->level--;
27327
0
            return NULL;
27328
0
        }
27329
305k
        D(fprintf(stderr, "%*c> invalid_factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('+' | '-' | '~') 'not' factor"));
27330
305k
        void *_tmp_155_var;
27331
305k
        Token * a;
27332
305k
        expr_ty b;
27333
305k
        if (
27334
305k
            (_tmp_155_var = _tmp_155_rule(p))  // '+' | '-' | '~'
27335
305k
            &&
27336
305k
            (a = _PyPegen_expect_token(p, 708))  // token='not'
27337
305k
            &&
27338
305k
            (b = factor_rule(p))  // factor
27339
305k
        )
27340
1
        {
27341
1
            D(fprintf(stderr, "%*c+ invalid_factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('+' | '-' | '~') 'not' factor"));
27342
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "'not' after an operator must be parenthesized" );
27343
1
            if (_res == NULL && PyErr_Occurred()) {
27344
1
                p->error_indicator = 1;
27345
1
                p->level--;
27346
1
                return NULL;
27347
1
            }
27348
0
            goto done;
27349
1
        }
27350
305k
        p->mark = _mark;
27351
305k
        D(fprintf(stderr, "%*c%s invalid_factor[%d-%d]: %s failed!\n", p->level, ' ',
27352
305k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('+' | '-' | '~') 'not' factor"));
27353
305k
    }
27354
0
    _res = NULL;
27355
305k
  done:
27356
305k
    p->level--;
27357
305k
    return _res;
27358
305k
}
27359
27360
// invalid_type_params: '[' ']'
27361
static void *
27362
invalid_type_params_rule(Parser *p)
27363
8.52k
{
27364
8.52k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27365
0
        _Pypegen_stack_overflow(p);
27366
0
    }
27367
8.52k
    if (p->error_indicator) {
27368
0
        p->level--;
27369
0
        return NULL;
27370
0
    }
27371
8.52k
    void * _res = NULL;
27372
8.52k
    int _mark = p->mark;
27373
8.52k
    { // '[' ']'
27374
8.52k
        if (p->error_indicator) {
27375
0
            p->level--;
27376
0
            return NULL;
27377
0
        }
27378
8.52k
        D(fprintf(stderr, "%*c> invalid_type_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' ']'"));
27379
8.52k
        Token * _literal;
27380
8.52k
        Token * token;
27381
8.52k
        if (
27382
8.52k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
27383
8.52k
            &&
27384
8.52k
            (token = _PyPegen_expect_token(p, 10))  // token=']'
27385
8.52k
        )
27386
3
        {
27387
3
            D(fprintf(stderr, "%*c+ invalid_type_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' ']'"));
27388
3
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( token , "Type parameter list cannot be empty" );
27389
3
            if (_res == NULL && PyErr_Occurred()) {
27390
3
                p->error_indicator = 1;
27391
3
                p->level--;
27392
3
                return NULL;
27393
3
            }
27394
0
            goto done;
27395
3
        }
27396
8.52k
        p->mark = _mark;
27397
8.52k
        D(fprintf(stderr, "%*c%s invalid_type_params[%d-%d]: %s failed!\n", p->level, ' ',
27398
8.52k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' ']'"));
27399
8.52k
    }
27400
0
    _res = NULL;
27401
8.52k
  done:
27402
8.52k
    p->level--;
27403
8.52k
    return _res;
27404
8.52k
}
27405
27406
// _loop0_1: NEWLINE
27407
static asdl_seq *
27408
_loop0_1_rule(Parser *p)
27409
66
{
27410
66
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27411
0
        _Pypegen_stack_overflow(p);
27412
0
    }
27413
66
    if (p->error_indicator) {
27414
0
        p->level--;
27415
0
        return NULL;
27416
0
    }
27417
66
    void *_res = NULL;
27418
66
    int _mark = p->mark;
27419
66
    void **_children = PyMem_Malloc(sizeof(void *));
27420
66
    if (!_children) {
27421
0
        p->error_indicator = 1;
27422
0
        PyErr_NoMemory();
27423
0
        p->level--;
27424
0
        return NULL;
27425
0
    }
27426
66
    Py_ssize_t _children_capacity = 1;
27427
66
    Py_ssize_t _n = 0;
27428
66
    { // NEWLINE
27429
66
        if (p->error_indicator) {
27430
0
            p->level--;
27431
0
            return NULL;
27432
0
        }
27433
66
        D(fprintf(stderr, "%*c> _loop0_1[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
27434
66
        Token * newline_var;
27435
66
        while (
27436
66
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
27437
66
        )
27438
0
        {
27439
0
            _res = newline_var;
27440
0
            if (_n == _children_capacity) {
27441
0
                _children_capacity *= 2;
27442
0
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27443
0
                if (!_new_children) {
27444
0
                    PyMem_Free(_children);
27445
0
                    p->error_indicator = 1;
27446
0
                    PyErr_NoMemory();
27447
0
                    p->level--;
27448
0
                    return NULL;
27449
0
                }
27450
0
                _children = _new_children;
27451
0
            }
27452
0
            _children[_n++] = _res;
27453
0
            _mark = p->mark;
27454
0
        }
27455
66
        p->mark = _mark;
27456
66
        D(fprintf(stderr, "%*c%s _loop0_1[%d-%d]: %s failed!\n", p->level, ' ',
27457
66
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
27458
66
    }
27459
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27460
66
    if (!_seq) {
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
66
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27468
66
    PyMem_Free(_children);
27469
66
    p->level--;
27470
66
    return _seq;
27471
66
}
27472
27473
// _loop1_2: statement
27474
static asdl_seq *
27475
_loop1_2_rule(Parser *p)
27476
52.1k
{
27477
52.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27478
0
        _Pypegen_stack_overflow(p);
27479
0
    }
27480
52.1k
    if (p->error_indicator) {
27481
0
        p->level--;
27482
0
        return NULL;
27483
0
    }
27484
52.1k
    void *_res = NULL;
27485
52.1k
    int _mark = p->mark;
27486
52.1k
    void **_children = PyMem_Malloc(sizeof(void *));
27487
52.1k
    if (!_children) {
27488
0
        p->error_indicator = 1;
27489
0
        PyErr_NoMemory();
27490
0
        p->level--;
27491
0
        return NULL;
27492
0
    }
27493
52.1k
    Py_ssize_t _children_capacity = 1;
27494
52.1k
    Py_ssize_t _n = 0;
27495
52.1k
    { // statement
27496
52.1k
        if (p->error_indicator) {
27497
0
            p->level--;
27498
0
            return NULL;
27499
0
        }
27500
52.1k
        D(fprintf(stderr, "%*c> _loop1_2[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement"));
27501
52.1k
        asdl_stmt_seq* statement_var;
27502
52.1k
        while (
27503
171k
            (statement_var = statement_rule(p))  // statement
27504
52.1k
        )
27505
119k
        {
27506
119k
            _res = statement_var;
27507
119k
            if (_n == _children_capacity) {
27508
24.3k
                _children_capacity *= 2;
27509
24.3k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27510
24.3k
                if (!_new_children) {
27511
0
                    PyMem_Free(_children);
27512
0
                    p->error_indicator = 1;
27513
0
                    PyErr_NoMemory();
27514
0
                    p->level--;
27515
0
                    return NULL;
27516
0
                }
27517
24.3k
                _children = _new_children;
27518
24.3k
            }
27519
119k
            _children[_n++] = _res;
27520
119k
            _mark = p->mark;
27521
119k
        }
27522
52.1k
        p->mark = _mark;
27523
52.1k
        D(fprintf(stderr, "%*c%s _loop1_2[%d-%d]: %s failed!\n", p->level, ' ',
27524
52.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement"));
27525
52.1k
    }
27526
52.1k
    if (_n == 0 || p->error_indicator) {
27527
22.5k
        PyMem_Free(_children);
27528
22.5k
        p->level--;
27529
22.5k
        return NULL;
27530
22.5k
    }
27531
29.5k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27532
29.5k
    if (!_seq) {
27533
0
        PyMem_Free(_children);
27534
0
        p->error_indicator = 1;
27535
0
        PyErr_NoMemory();
27536
0
        p->level--;
27537
0
        return NULL;
27538
0
    }
27539
145k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27540
29.5k
    PyMem_Free(_children);
27541
29.5k
    p->level--;
27542
29.5k
    return _seq;
27543
29.5k
}
27544
27545
// _loop0_3: ';' simple_stmt
27546
static asdl_seq *
27547
_loop0_3_rule(Parser *p)
27548
12.9k
{
27549
12.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27550
0
        _Pypegen_stack_overflow(p);
27551
0
    }
27552
12.9k
    if (p->error_indicator) {
27553
0
        p->level--;
27554
0
        return NULL;
27555
0
    }
27556
12.9k
    void *_res = NULL;
27557
12.9k
    int _mark = p->mark;
27558
12.9k
    void **_children = PyMem_Malloc(sizeof(void *));
27559
12.9k
    if (!_children) {
27560
0
        p->error_indicator = 1;
27561
0
        PyErr_NoMemory();
27562
0
        p->level--;
27563
0
        return NULL;
27564
0
    }
27565
12.9k
    Py_ssize_t _children_capacity = 1;
27566
12.9k
    Py_ssize_t _n = 0;
27567
12.9k
    { // ';' simple_stmt
27568
12.9k
        if (p->error_indicator) {
27569
0
            p->level--;
27570
0
            return NULL;
27571
0
        }
27572
12.9k
        D(fprintf(stderr, "%*c> _loop0_3[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';' simple_stmt"));
27573
12.9k
        Token * _literal;
27574
12.9k
        stmt_ty elem;
27575
12.9k
        while (
27576
32.0k
            (_literal = _PyPegen_expect_token(p, 13))  // token=';'
27577
32.0k
            &&
27578
32.0k
            (elem = simple_stmt_rule(p))  // simple_stmt
27579
12.9k
        )
27580
19.0k
        {
27581
19.0k
            _res = elem;
27582
19.0k
            if (_res == NULL && PyErr_Occurred()) {
27583
0
                p->error_indicator = 1;
27584
0
                PyMem_Free(_children);
27585
0
                p->level--;
27586
0
                return NULL;
27587
0
            }
27588
19.0k
            if (_n == _children_capacity) {
27589
3.21k
                _children_capacity *= 2;
27590
3.21k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27591
3.21k
                if (!_new_children) {
27592
0
                    PyMem_Free(_children);
27593
0
                    p->error_indicator = 1;
27594
0
                    PyErr_NoMemory();
27595
0
                    p->level--;
27596
0
                    return NULL;
27597
0
                }
27598
3.21k
                _children = _new_children;
27599
3.21k
            }
27600
19.0k
            _children[_n++] = _res;
27601
19.0k
            _mark = p->mark;
27602
19.0k
        }
27603
12.9k
        p->mark = _mark;
27604
12.9k
        D(fprintf(stderr, "%*c%s _loop0_3[%d-%d]: %s failed!\n", p->level, ' ',
27605
12.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';' simple_stmt"));
27606
12.9k
    }
27607
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27608
12.9k
    if (!_seq) {
27609
0
        PyMem_Free(_children);
27610
0
        p->error_indicator = 1;
27611
0
        PyErr_NoMemory();
27612
0
        p->level--;
27613
0
        return NULL;
27614
0
    }
27615
32.0k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27616
12.9k
    PyMem_Free(_children);
27617
12.9k
    p->level--;
27618
12.9k
    return _seq;
27619
12.9k
}
27620
27621
// _gather_4: simple_stmt _loop0_3
27622
static asdl_seq *
27623
_gather_4_rule(Parser *p)
27624
50.6k
{
27625
50.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27626
0
        _Pypegen_stack_overflow(p);
27627
0
    }
27628
50.6k
    if (p->error_indicator) {
27629
0
        p->level--;
27630
0
        return NULL;
27631
0
    }
27632
50.6k
    asdl_seq * _res = NULL;
27633
50.6k
    int _mark = p->mark;
27634
50.6k
    { // simple_stmt _loop0_3
27635
50.6k
        if (p->error_indicator) {
27636
0
            p->level--;
27637
0
            return NULL;
27638
0
        }
27639
50.6k
        D(fprintf(stderr, "%*c> _gather_4[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt _loop0_3"));
27640
50.6k
        stmt_ty elem;
27641
50.6k
        asdl_seq * seq;
27642
50.6k
        if (
27643
50.6k
            (elem = simple_stmt_rule(p))  // simple_stmt
27644
50.6k
            &&
27645
50.6k
            (seq = _loop0_3_rule(p))  // _loop0_3
27646
50.6k
        )
27647
12.9k
        {
27648
12.9k
            D(fprintf(stderr, "%*c+ _gather_4[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt _loop0_3"));
27649
12.9k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
27650
12.9k
            goto done;
27651
12.9k
        }
27652
37.6k
        p->mark = _mark;
27653
37.6k
        D(fprintf(stderr, "%*c%s _gather_4[%d-%d]: %s failed!\n", p->level, ' ',
27654
37.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt _loop0_3"));
27655
37.6k
    }
27656
0
    _res = NULL;
27657
50.6k
  done:
27658
50.6k
    p->level--;
27659
50.6k
    return _res;
27660
37.6k
}
27661
27662
// _tmp_5: 'import' | 'from'
27663
static void *
27664
_tmp_5_rule(Parser *p)
27665
56.9k
{
27666
56.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27667
0
        _Pypegen_stack_overflow(p);
27668
0
    }
27669
56.9k
    if (p->error_indicator) {
27670
0
        p->level--;
27671
0
        return NULL;
27672
0
    }
27673
56.9k
    void * _res = NULL;
27674
56.9k
    int _mark = p->mark;
27675
56.9k
    { // 'import'
27676
56.9k
        if (p->error_indicator) {
27677
0
            p->level--;
27678
0
            return NULL;
27679
0
        }
27680
56.9k
        D(fprintf(stderr, "%*c> _tmp_5[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import'"));
27681
56.9k
        Token * _keyword;
27682
56.9k
        if (
27683
56.9k
            (_keyword = _PyPegen_expect_token(p, 639))  // token='import'
27684
56.9k
        )
27685
2.43k
        {
27686
2.43k
            D(fprintf(stderr, "%*c+ _tmp_5[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import'"));
27687
2.43k
            _res = _keyword;
27688
2.43k
            goto done;
27689
2.43k
        }
27690
54.4k
        p->mark = _mark;
27691
54.4k
        D(fprintf(stderr, "%*c%s _tmp_5[%d-%d]: %s failed!\n", p->level, ' ',
27692
54.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import'"));
27693
54.4k
    }
27694
0
    { // 'from'
27695
54.4k
        if (p->error_indicator) {
27696
0
            p->level--;
27697
0
            return NULL;
27698
0
        }
27699
54.4k
        D(fprintf(stderr, "%*c> _tmp_5[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from'"));
27700
54.4k
        Token * _keyword;
27701
54.4k
        if (
27702
54.4k
            (_keyword = _PyPegen_expect_token(p, 638))  // token='from'
27703
54.4k
        )
27704
3.20k
        {
27705
3.20k
            D(fprintf(stderr, "%*c+ _tmp_5[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from'"));
27706
3.20k
            _res = _keyword;
27707
3.20k
            goto done;
27708
3.20k
        }
27709
51.2k
        p->mark = _mark;
27710
51.2k
        D(fprintf(stderr, "%*c%s _tmp_5[%d-%d]: %s failed!\n", p->level, ' ',
27711
51.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from'"));
27712
51.2k
    }
27713
0
    _res = NULL;
27714
56.9k
  done:
27715
56.9k
    p->level--;
27716
56.9k
    return _res;
27717
51.2k
}
27718
27719
// _tmp_6: 'def' | '@' | 'async'
27720
static void *
27721
_tmp_6_rule(Parser *p)
27722
171k
{
27723
171k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27724
0
        _Pypegen_stack_overflow(p);
27725
0
    }
27726
171k
    if (p->error_indicator) {
27727
0
        p->level--;
27728
0
        return NULL;
27729
0
    }
27730
171k
    void * _res = NULL;
27731
171k
    int _mark = p->mark;
27732
171k
    { // 'def'
27733
171k
        if (p->error_indicator) {
27734
0
            p->level--;
27735
0
            return NULL;
27736
0
        }
27737
171k
        D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'def'"));
27738
171k
        Token * _keyword;
27739
171k
        if (
27740
171k
            (_keyword = _PyPegen_expect_token(p, 704))  // token='def'
27741
171k
        )
27742
10.8k
        {
27743
10.8k
            D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'def'"));
27744
10.8k
            _res = _keyword;
27745
10.8k
            goto done;
27746
10.8k
        }
27747
160k
        p->mark = _mark;
27748
160k
        D(fprintf(stderr, "%*c%s _tmp_6[%d-%d]: %s failed!\n", p->level, ' ',
27749
160k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'def'"));
27750
160k
    }
27751
0
    { // '@'
27752
160k
        if (p->error_indicator) {
27753
1.31k
            p->level--;
27754
1.31k
            return NULL;
27755
1.31k
        }
27756
159k
        D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
27757
159k
        Token * _literal;
27758
159k
        if (
27759
159k
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
27760
159k
        )
27761
1.70k
        {
27762
1.70k
            D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
27763
1.70k
            _res = _literal;
27764
1.70k
            goto done;
27765
1.70k
        }
27766
157k
        p->mark = _mark;
27767
157k
        D(fprintf(stderr, "%*c%s _tmp_6[%d-%d]: %s failed!\n", p->level, ' ',
27768
157k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
27769
157k
    }
27770
0
    { // 'async'
27771
157k
        if (p->error_indicator) {
27772
0
            p->level--;
27773
0
            return NULL;
27774
0
        }
27775
157k
        D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'"));
27776
157k
        Token * _keyword;
27777
157k
        if (
27778
157k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
27779
157k
        )
27780
1.74k
        {
27781
1.74k
            D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'"));
27782
1.74k
            _res = _keyword;
27783
1.74k
            goto done;
27784
1.74k
        }
27785
156k
        p->mark = _mark;
27786
156k
        D(fprintf(stderr, "%*c%s _tmp_6[%d-%d]: %s failed!\n", p->level, ' ',
27787
156k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'"));
27788
156k
    }
27789
0
    _res = NULL;
27790
170k
  done:
27791
170k
    p->level--;
27792
170k
    return _res;
27793
156k
}
27794
27795
// _tmp_7: 'class' | '@'
27796
static void *
27797
_tmp_7_rule(Parser *p)
27798
150k
{
27799
150k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27800
0
        _Pypegen_stack_overflow(p);
27801
0
    }
27802
150k
    if (p->error_indicator) {
27803
0
        p->level--;
27804
0
        return NULL;
27805
0
    }
27806
150k
    void * _res = NULL;
27807
150k
    int _mark = p->mark;
27808
150k
    { // 'class'
27809
150k
        if (p->error_indicator) {
27810
0
            p->level--;
27811
0
            return NULL;
27812
0
        }
27813
150k
        D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class'"));
27814
150k
        Token * _keyword;
27815
150k
        if (
27816
150k
            (_keyword = _PyPegen_expect_token(p, 706))  // token='class'
27817
150k
        )
27818
3.66k
        {
27819
3.66k
            D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class'"));
27820
3.66k
            _res = _keyword;
27821
3.66k
            goto done;
27822
3.66k
        }
27823
146k
        p->mark = _mark;
27824
146k
        D(fprintf(stderr, "%*c%s _tmp_7[%d-%d]: %s failed!\n", p->level, ' ',
27825
146k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class'"));
27826
146k
    }
27827
0
    { // '@'
27828
146k
        if (p->error_indicator) {
27829
0
            p->level--;
27830
0
            return NULL;
27831
0
        }
27832
146k
        D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
27833
146k
        Token * _literal;
27834
146k
        if (
27835
146k
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
27836
146k
        )
27837
660
        {
27838
660
            D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
27839
660
            _res = _literal;
27840
660
            goto done;
27841
660
        }
27842
145k
        p->mark = _mark;
27843
145k
        D(fprintf(stderr, "%*c%s _tmp_7[%d-%d]: %s failed!\n", p->level, ' ',
27844
145k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
27845
145k
    }
27846
0
    _res = NULL;
27847
150k
  done:
27848
150k
    p->level--;
27849
150k
    return _res;
27850
145k
}
27851
27852
// _tmp_8: 'with' | 'async'
27853
static void *
27854
_tmp_8_rule(Parser *p)
27855
146k
{
27856
146k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27857
0
        _Pypegen_stack_overflow(p);
27858
0
    }
27859
146k
    if (p->error_indicator) {
27860
0
        p->level--;
27861
0
        return NULL;
27862
0
    }
27863
146k
    void * _res = NULL;
27864
146k
    int _mark = p->mark;
27865
146k
    { // 'with'
27866
146k
        if (p->error_indicator) {
27867
0
            p->level--;
27868
0
            return NULL;
27869
0
        }
27870
146k
        D(fprintf(stderr, "%*c> _tmp_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with'"));
27871
146k
        Token * _keyword;
27872
146k
        if (
27873
146k
            (_keyword = _PyPegen_expect_token(p, 652))  // token='with'
27874
146k
        )
27875
4.07k
        {
27876
4.07k
            D(fprintf(stderr, "%*c+ _tmp_8[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with'"));
27877
4.07k
            _res = _keyword;
27878
4.07k
            goto done;
27879
4.07k
        }
27880
142k
        p->mark = _mark;
27881
142k
        D(fprintf(stderr, "%*c%s _tmp_8[%d-%d]: %s failed!\n", p->level, ' ',
27882
142k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with'"));
27883
142k
    }
27884
0
    { // 'async'
27885
142k
        if (p->error_indicator) {
27886
0
            p->level--;
27887
0
            return NULL;
27888
0
        }
27889
142k
        D(fprintf(stderr, "%*c> _tmp_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'"));
27890
142k
        Token * _keyword;
27891
142k
        if (
27892
142k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
27893
142k
        )
27894
1.30k
        {
27895
1.30k
            D(fprintf(stderr, "%*c+ _tmp_8[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'"));
27896
1.30k
            _res = _keyword;
27897
1.30k
            goto done;
27898
1.30k
        }
27899
140k
        p->mark = _mark;
27900
140k
        D(fprintf(stderr, "%*c%s _tmp_8[%d-%d]: %s failed!\n", p->level, ' ',
27901
140k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'"));
27902
140k
    }
27903
0
    _res = NULL;
27904
146k
  done:
27905
146k
    p->level--;
27906
146k
    return _res;
27907
140k
}
27908
27909
// _tmp_9: 'for' | 'async'
27910
static void *
27911
_tmp_9_rule(Parser *p)
27912
141k
{
27913
141k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27914
0
        _Pypegen_stack_overflow(p);
27915
0
    }
27916
141k
    if (p->error_indicator) {
27917
0
        p->level--;
27918
0
        return NULL;
27919
0
    }
27920
141k
    void * _res = NULL;
27921
141k
    int _mark = p->mark;
27922
141k
    { // 'for'
27923
141k
        if (p->error_indicator) {
27924
0
            p->level--;
27925
0
            return NULL;
27926
0
        }
27927
141k
        D(fprintf(stderr, "%*c> _tmp_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for'"));
27928
141k
        Token * _keyword;
27929
141k
        if (
27930
141k
            (_keyword = _PyPegen_expect_token(p, 699))  // token='for'
27931
141k
        )
27932
1.89k
        {
27933
1.89k
            D(fprintf(stderr, "%*c+ _tmp_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for'"));
27934
1.89k
            _res = _keyword;
27935
1.89k
            goto done;
27936
1.89k
        }
27937
139k
        p->mark = _mark;
27938
139k
        D(fprintf(stderr, "%*c%s _tmp_9[%d-%d]: %s failed!\n", p->level, ' ',
27939
139k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for'"));
27940
139k
    }
27941
0
    { // 'async'
27942
139k
        if (p->error_indicator) {
27943
0
            p->level--;
27944
0
            return NULL;
27945
0
        }
27946
139k
        D(fprintf(stderr, "%*c> _tmp_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'"));
27947
139k
        Token * _keyword;
27948
139k
        if (
27949
139k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='async'
27950
139k
        )
27951
402
        {
27952
402
            D(fprintf(stderr, "%*c+ _tmp_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'"));
27953
402
            _res = _keyword;
27954
402
            goto done;
27955
402
        }
27956
139k
        p->mark = _mark;
27957
139k
        D(fprintf(stderr, "%*c%s _tmp_9[%d-%d]: %s failed!\n", p->level, ' ',
27958
139k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'"));
27959
139k
    }
27960
0
    _res = NULL;
27961
141k
  done:
27962
141k
    p->level--;
27963
141k
    return _res;
27964
139k
}
27965
27966
// _tmp_10: '=' annotated_rhs
27967
static void *
27968
_tmp_10_rule(Parser *p)
27969
3.27k
{
27970
3.27k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27971
0
        _Pypegen_stack_overflow(p);
27972
0
    }
27973
3.27k
    if (p->error_indicator) {
27974
0
        p->level--;
27975
0
        return NULL;
27976
0
    }
27977
3.27k
    void * _res = NULL;
27978
3.27k
    int _mark = p->mark;
27979
3.27k
    { // '=' annotated_rhs
27980
3.27k
        if (p->error_indicator) {
27981
0
            p->level--;
27982
0
            return NULL;
27983
0
        }
27984
3.27k
        D(fprintf(stderr, "%*c> _tmp_10[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
27985
3.27k
        Token * _literal;
27986
3.27k
        expr_ty d;
27987
3.27k
        if (
27988
3.27k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
27989
3.27k
            &&
27990
3.27k
            (d = annotated_rhs_rule(p))  // annotated_rhs
27991
3.27k
        )
27992
549
        {
27993
549
            D(fprintf(stderr, "%*c+ _tmp_10[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
27994
549
            _res = d;
27995
549
            if (_res == NULL && PyErr_Occurred()) {
27996
0
                p->error_indicator = 1;
27997
0
                p->level--;
27998
0
                return NULL;
27999
0
            }
28000
549
            goto done;
28001
549
        }
28002
2.72k
        p->mark = _mark;
28003
2.72k
        D(fprintf(stderr, "%*c%s _tmp_10[%d-%d]: %s failed!\n", p->level, ' ',
28004
2.72k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' annotated_rhs"));
28005
2.72k
    }
28006
0
    _res = NULL;
28007
3.27k
  done:
28008
3.27k
    p->level--;
28009
3.27k
    return _res;
28010
2.72k
}
28011
28012
// _tmp_11: '(' single_target ')' | single_subscript_attribute_target
28013
static void *
28014
_tmp_11_rule(Parser *p)
28015
186k
{
28016
186k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28017
0
        _Pypegen_stack_overflow(p);
28018
0
    }
28019
186k
    if (p->error_indicator) {
28020
0
        p->level--;
28021
0
        return NULL;
28022
0
    }
28023
186k
    void * _res = NULL;
28024
186k
    int _mark = p->mark;
28025
186k
    { // '(' single_target ')'
28026
186k
        if (p->error_indicator) {
28027
0
            p->level--;
28028
0
            return NULL;
28029
0
        }
28030
186k
        D(fprintf(stderr, "%*c> _tmp_11[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
28031
186k
        Token * _literal;
28032
186k
        Token * _literal_1;
28033
186k
        expr_ty b;
28034
186k
        if (
28035
186k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
28036
186k
            &&
28037
186k
            (b = single_target_rule(p))  // single_target
28038
186k
            &&
28039
186k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
28040
186k
        )
28041
362
        {
28042
362
            D(fprintf(stderr, "%*c+ _tmp_11[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
28043
362
            _res = b;
28044
362
            if (_res == NULL && PyErr_Occurred()) {
28045
0
                p->error_indicator = 1;
28046
0
                p->level--;
28047
0
                return NULL;
28048
0
            }
28049
362
            goto done;
28050
362
        }
28051
186k
        p->mark = _mark;
28052
186k
        D(fprintf(stderr, "%*c%s _tmp_11[%d-%d]: %s failed!\n", p->level, ' ',
28053
186k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' single_target ')'"));
28054
186k
    }
28055
0
    { // single_subscript_attribute_target
28056
186k
        if (p->error_indicator) {
28057
166
            p->level--;
28058
166
            return NULL;
28059
166
        }
28060
186k
        D(fprintf(stderr, "%*c> _tmp_11[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
28061
186k
        expr_ty single_subscript_attribute_target_var;
28062
186k
        if (
28063
186k
            (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p))  // single_subscript_attribute_target
28064
186k
        )
28065
5.06k
        {
28066
5.06k
            D(fprintf(stderr, "%*c+ _tmp_11[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
28067
5.06k
            _res = single_subscript_attribute_target_var;
28068
5.06k
            goto done;
28069
5.06k
        }
28070
181k
        p->mark = _mark;
28071
181k
        D(fprintf(stderr, "%*c%s _tmp_11[%d-%d]: %s failed!\n", p->level, ' ',
28072
181k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_subscript_attribute_target"));
28073
181k
    }
28074
0
    _res = NULL;
28075
186k
  done:
28076
186k
    p->level--;
28077
186k
    return _res;
28078
181k
}
28079
28080
// _loop1_12: (star_targets '=')
28081
static asdl_seq *
28082
_loop1_12_rule(Parser *p)
28083
182k
{
28084
182k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28085
0
        _Pypegen_stack_overflow(p);
28086
0
    }
28087
182k
    if (p->error_indicator) {
28088
0
        p->level--;
28089
0
        return NULL;
28090
0
    }
28091
182k
    void *_res = NULL;
28092
182k
    int _mark = p->mark;
28093
182k
    void **_children = PyMem_Malloc(sizeof(void *));
28094
182k
    if (!_children) {
28095
0
        p->error_indicator = 1;
28096
0
        PyErr_NoMemory();
28097
0
        p->level--;
28098
0
        return NULL;
28099
0
    }
28100
182k
    Py_ssize_t _children_capacity = 1;
28101
182k
    Py_ssize_t _n = 0;
28102
182k
    { // (star_targets '=')
28103
182k
        if (p->error_indicator) {
28104
0
            p->level--;
28105
0
            return NULL;
28106
0
        }
28107
182k
        D(fprintf(stderr, "%*c> _loop1_12[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
28108
182k
        void *_tmp_156_var;
28109
182k
        while (
28110
199k
            (_tmp_156_var = _tmp_156_rule(p))  // star_targets '='
28111
182k
        )
28112
16.3k
        {
28113
16.3k
            _res = _tmp_156_var;
28114
16.3k
            if (_n == _children_capacity) {
28115
496
                _children_capacity *= 2;
28116
496
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28117
496
                if (!_new_children) {
28118
0
                    PyMem_Free(_children);
28119
0
                    p->error_indicator = 1;
28120
0
                    PyErr_NoMemory();
28121
0
                    p->level--;
28122
0
                    return NULL;
28123
0
                }
28124
496
                _children = _new_children;
28125
496
            }
28126
16.3k
            _children[_n++] = _res;
28127
16.3k
            _mark = p->mark;
28128
16.3k
        }
28129
182k
        p->mark = _mark;
28130
182k
        D(fprintf(stderr, "%*c%s _loop1_12[%d-%d]: %s failed!\n", p->level, ' ',
28131
182k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
28132
182k
    }
28133
182k
    if (_n == 0 || p->error_indicator) {
28134
168k
        PyMem_Free(_children);
28135
168k
        p->level--;
28136
168k
        return NULL;
28137
168k
    }
28138
14.8k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28139
14.8k
    if (!_seq) {
28140
0
        PyMem_Free(_children);
28141
0
        p->error_indicator = 1;
28142
0
        PyErr_NoMemory();
28143
0
        p->level--;
28144
0
        return NULL;
28145
0
    }
28146
31.1k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28147
14.8k
    PyMem_Free(_children);
28148
14.8k
    p->level--;
28149
14.8k
    return _seq;
28150
14.8k
}
28151
28152
// _loop0_13: ',' NAME
28153
static asdl_seq *
28154
_loop0_13_rule(Parser *p)
28155
1.30k
{
28156
1.30k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28157
0
        _Pypegen_stack_overflow(p);
28158
0
    }
28159
1.30k
    if (p->error_indicator) {
28160
0
        p->level--;
28161
0
        return NULL;
28162
0
    }
28163
1.30k
    void *_res = NULL;
28164
1.30k
    int _mark = p->mark;
28165
1.30k
    void **_children = PyMem_Malloc(sizeof(void *));
28166
1.30k
    if (!_children) {
28167
0
        p->error_indicator = 1;
28168
0
        PyErr_NoMemory();
28169
0
        p->level--;
28170
0
        return NULL;
28171
0
    }
28172
1.30k
    Py_ssize_t _children_capacity = 1;
28173
1.30k
    Py_ssize_t _n = 0;
28174
1.30k
    { // ',' NAME
28175
1.30k
        if (p->error_indicator) {
28176
0
            p->level--;
28177
0
            return NULL;
28178
0
        }
28179
1.30k
        D(fprintf(stderr, "%*c> _loop0_13[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' NAME"));
28180
1.30k
        Token * _literal;
28181
1.30k
        expr_ty elem;
28182
1.30k
        while (
28183
4.20k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
28184
4.20k
            &&
28185
4.20k
            (elem = _PyPegen_name_token(p))  // NAME
28186
1.30k
        )
28187
2.89k
        {
28188
2.89k
            _res = elem;
28189
2.89k
            if (_res == NULL && PyErr_Occurred()) {
28190
0
                p->error_indicator = 1;
28191
0
                PyMem_Free(_children);
28192
0
                p->level--;
28193
0
                return NULL;
28194
0
            }
28195
2.89k
            if (_n == _children_capacity) {
28196
872
                _children_capacity *= 2;
28197
872
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28198
872
                if (!_new_children) {
28199
0
                    PyMem_Free(_children);
28200
0
                    p->error_indicator = 1;
28201
0
                    PyErr_NoMemory();
28202
0
                    p->level--;
28203
0
                    return NULL;
28204
0
                }
28205
872
                _children = _new_children;
28206
872
            }
28207
2.89k
            _children[_n++] = _res;
28208
2.89k
            _mark = p->mark;
28209
2.89k
        }
28210
1.30k
        p->mark = _mark;
28211
1.30k
        D(fprintf(stderr, "%*c%s _loop0_13[%d-%d]: %s failed!\n", p->level, ' ',
28212
1.30k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' NAME"));
28213
1.30k
    }
28214
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28215
1.30k
    if (!_seq) {
28216
0
        PyMem_Free(_children);
28217
0
        p->error_indicator = 1;
28218
0
        PyErr_NoMemory();
28219
0
        p->level--;
28220
0
        return NULL;
28221
0
    }
28222
4.20k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28223
1.30k
    PyMem_Free(_children);
28224
1.30k
    p->level--;
28225
1.30k
    return _seq;
28226
1.30k
}
28227
28228
// _gather_14: NAME _loop0_13
28229
static asdl_seq *
28230
_gather_14_rule(Parser *p)
28231
1.31k
{
28232
1.31k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28233
0
        _Pypegen_stack_overflow(p);
28234
0
    }
28235
1.31k
    if (p->error_indicator) {
28236
0
        p->level--;
28237
0
        return NULL;
28238
0
    }
28239
1.31k
    asdl_seq * _res = NULL;
28240
1.31k
    int _mark = p->mark;
28241
1.31k
    { // NAME _loop0_13
28242
1.31k
        if (p->error_indicator) {
28243
0
            p->level--;
28244
0
            return NULL;
28245
0
        }
28246
1.31k
        D(fprintf(stderr, "%*c> _gather_14[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME _loop0_13"));
28247
1.31k
        expr_ty elem;
28248
1.31k
        asdl_seq * seq;
28249
1.31k
        if (
28250
1.31k
            (elem = _PyPegen_name_token(p))  // NAME
28251
1.31k
            &&
28252
1.31k
            (seq = _loop0_13_rule(p))  // _loop0_13
28253
1.31k
        )
28254
1.30k
        {
28255
1.30k
            D(fprintf(stderr, "%*c+ _gather_14[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME _loop0_13"));
28256
1.30k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28257
1.30k
            goto done;
28258
1.30k
        }
28259
8
        p->mark = _mark;
28260
8
        D(fprintf(stderr, "%*c%s _gather_14[%d-%d]: %s failed!\n", p->level, ' ',
28261
8
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME _loop0_13"));
28262
8
    }
28263
0
    _res = NULL;
28264
1.31k
  done:
28265
1.31k
    p->level--;
28266
1.31k
    return _res;
28267
8
}
28268
28269
// _tmp_15: ';' | NEWLINE
28270
static void *
28271
_tmp_15_rule(Parser *p)
28272
1.08k
{
28273
1.08k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28274
0
        _Pypegen_stack_overflow(p);
28275
0
    }
28276
1.08k
    if (p->error_indicator) {
28277
0
        p->level--;
28278
0
        return NULL;
28279
0
    }
28280
1.08k
    void * _res = NULL;
28281
1.08k
    int _mark = p->mark;
28282
1.08k
    { // ';'
28283
1.08k
        if (p->error_indicator) {
28284
0
            p->level--;
28285
0
            return NULL;
28286
0
        }
28287
1.08k
        D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';'"));
28288
1.08k
        Token * _literal;
28289
1.08k
        if (
28290
1.08k
            (_literal = _PyPegen_expect_token(p, 13))  // token=';'
28291
1.08k
        )
28292
322
        {
28293
322
            D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "';'"));
28294
322
            _res = _literal;
28295
322
            goto done;
28296
322
        }
28297
760
        p->mark = _mark;
28298
760
        D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
28299
760
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';'"));
28300
760
    }
28301
0
    { // NEWLINE
28302
760
        if (p->error_indicator) {
28303
0
            p->level--;
28304
0
            return NULL;
28305
0
        }
28306
760
        D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
28307
760
        Token * newline_var;
28308
760
        if (
28309
760
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
28310
760
        )
28311
466
        {
28312
466
            D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
28313
466
            _res = newline_var;
28314
466
            goto done;
28315
466
        }
28316
294
        p->mark = _mark;
28317
294
        D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
28318
294
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
28319
294
    }
28320
0
    _res = NULL;
28321
1.08k
  done:
28322
1.08k
    p->level--;
28323
1.08k
    return _res;
28324
294
}
28325
28326
// _tmp_16: ',' expression
28327
static void *
28328
_tmp_16_rule(Parser *p)
28329
6.97k
{
28330
6.97k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28331
0
        _Pypegen_stack_overflow(p);
28332
0
    }
28333
6.97k
    if (p->error_indicator) {
28334
0
        p->level--;
28335
0
        return NULL;
28336
0
    }
28337
6.97k
    void * _res = NULL;
28338
6.97k
    int _mark = p->mark;
28339
6.97k
    { // ',' expression
28340
6.97k
        if (p->error_indicator) {
28341
0
            p->level--;
28342
0
            return NULL;
28343
0
        }
28344
6.97k
        D(fprintf(stderr, "%*c> _tmp_16[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
28345
6.97k
        Token * _literal;
28346
6.97k
        expr_ty z;
28347
6.97k
        if (
28348
6.97k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
28349
6.97k
            &&
28350
6.97k
            (z = expression_rule(p))  // expression
28351
6.97k
        )
28352
2.14k
        {
28353
2.14k
            D(fprintf(stderr, "%*c+ _tmp_16[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression"));
28354
2.14k
            _res = z;
28355
2.14k
            if (_res == NULL && PyErr_Occurred()) {
28356
0
                p->error_indicator = 1;
28357
0
                p->level--;
28358
0
                return NULL;
28359
0
            }
28360
2.14k
            goto done;
28361
2.14k
        }
28362
4.83k
        p->mark = _mark;
28363
4.83k
        D(fprintf(stderr, "%*c%s _tmp_16[%d-%d]: %s failed!\n", p->level, ' ',
28364
4.83k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
28365
4.83k
    }
28366
0
    _res = NULL;
28367
6.97k
  done:
28368
6.97k
    p->level--;
28369
6.97k
    return _res;
28370
4.83k
}
28371
28372
// _loop0_17: ('.' | '...')
28373
static asdl_seq *
28374
_loop0_17_rule(Parser *p)
28375
3.20k
{
28376
3.20k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28377
0
        _Pypegen_stack_overflow(p);
28378
0
    }
28379
3.20k
    if (p->error_indicator) {
28380
0
        p->level--;
28381
0
        return NULL;
28382
0
    }
28383
3.20k
    void *_res = NULL;
28384
3.20k
    int _mark = p->mark;
28385
3.20k
    void **_children = PyMem_Malloc(sizeof(void *));
28386
3.20k
    if (!_children) {
28387
0
        p->error_indicator = 1;
28388
0
        PyErr_NoMemory();
28389
0
        p->level--;
28390
0
        return NULL;
28391
0
    }
28392
3.20k
    Py_ssize_t _children_capacity = 1;
28393
3.20k
    Py_ssize_t _n = 0;
28394
3.20k
    { // ('.' | '...')
28395
3.20k
        if (p->error_indicator) {
28396
0
            p->level--;
28397
0
            return NULL;
28398
0
        }
28399
3.20k
        D(fprintf(stderr, "%*c> _loop0_17[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')"));
28400
3.20k
        void *_tmp_157_var;
28401
3.20k
        while (
28402
7.81k
            (_tmp_157_var = _tmp_157_rule(p))  // '.' | '...'
28403
3.20k
        )
28404
4.60k
        {
28405
4.60k
            _res = _tmp_157_var;
28406
4.60k
            if (_n == _children_capacity) {
28407
802
                _children_capacity *= 2;
28408
802
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28409
802
                if (!_new_children) {
28410
0
                    PyMem_Free(_children);
28411
0
                    p->error_indicator = 1;
28412
0
                    PyErr_NoMemory();
28413
0
                    p->level--;
28414
0
                    return NULL;
28415
0
                }
28416
802
                _children = _new_children;
28417
802
            }
28418
4.60k
            _children[_n++] = _res;
28419
4.60k
            _mark = p->mark;
28420
4.60k
        }
28421
3.20k
        p->mark = _mark;
28422
3.20k
        D(fprintf(stderr, "%*c%s _loop0_17[%d-%d]: %s failed!\n", p->level, ' ',
28423
3.20k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('.' | '...')"));
28424
3.20k
    }
28425
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28426
3.20k
    if (!_seq) {
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
7.81k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28434
3.20k
    PyMem_Free(_children);
28435
3.20k
    p->level--;
28436
3.20k
    return _seq;
28437
3.20k
}
28438
28439
// _loop1_18: ('.' | '...')
28440
static asdl_seq *
28441
_loop1_18_rule(Parser *p)
28442
1.27k
{
28443
1.27k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28444
0
        _Pypegen_stack_overflow(p);
28445
0
    }
28446
1.27k
    if (p->error_indicator) {
28447
0
        p->level--;
28448
0
        return NULL;
28449
0
    }
28450
1.27k
    void *_res = NULL;
28451
1.27k
    int _mark = p->mark;
28452
1.27k
    void **_children = PyMem_Malloc(sizeof(void *));
28453
1.27k
    if (!_children) {
28454
0
        p->error_indicator = 1;
28455
0
        PyErr_NoMemory();
28456
0
        p->level--;
28457
0
        return NULL;
28458
0
    }
28459
1.27k
    Py_ssize_t _children_capacity = 1;
28460
1.27k
    Py_ssize_t _n = 0;
28461
1.27k
    { // ('.' | '...')
28462
1.27k
        if (p->error_indicator) {
28463
0
            p->level--;
28464
0
            return NULL;
28465
0
        }
28466
1.27k
        D(fprintf(stderr, "%*c> _loop1_18[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')"));
28467
1.27k
        void *_tmp_157_var;
28468
1.27k
        while (
28469
5.29k
            (_tmp_157_var = _tmp_157_rule(p))  // '.' | '...'
28470
1.27k
        )
28471
4.01k
        {
28472
4.01k
            _res = _tmp_157_var;
28473
4.01k
            if (_n == _children_capacity) {
28474
788
                _children_capacity *= 2;
28475
788
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28476
788
                if (!_new_children) {
28477
0
                    PyMem_Free(_children);
28478
0
                    p->error_indicator = 1;
28479
0
                    PyErr_NoMemory();
28480
0
                    p->level--;
28481
0
                    return NULL;
28482
0
                }
28483
788
                _children = _new_children;
28484
788
            }
28485
4.01k
            _children[_n++] = _res;
28486
4.01k
            _mark = p->mark;
28487
4.01k
        }
28488
1.27k
        p->mark = _mark;
28489
1.27k
        D(fprintf(stderr, "%*c%s _loop1_18[%d-%d]: %s failed!\n", p->level, ' ',
28490
1.27k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('.' | '...')"));
28491
1.27k
    }
28492
1.27k
    if (_n == 0 || p->error_indicator) {
28493
68
        PyMem_Free(_children);
28494
68
        p->level--;
28495
68
        return NULL;
28496
68
    }
28497
1.20k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28498
1.20k
    if (!_seq) {
28499
0
        PyMem_Free(_children);
28500
0
        p->error_indicator = 1;
28501
0
        PyErr_NoMemory();
28502
0
        p->level--;
28503
0
        return NULL;
28504
0
    }
28505
5.22k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28506
1.20k
    PyMem_Free(_children);
28507
1.20k
    p->level--;
28508
1.20k
    return _seq;
28509
1.20k
}
28510
28511
// _loop0_19: ',' import_from_as_name
28512
static asdl_seq *
28513
_loop0_19_rule(Parser *p)
28514
2.47k
{
28515
2.47k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28516
0
        _Pypegen_stack_overflow(p);
28517
0
    }
28518
2.47k
    if (p->error_indicator) {
28519
0
        p->level--;
28520
0
        return NULL;
28521
0
    }
28522
2.47k
    void *_res = NULL;
28523
2.47k
    int _mark = p->mark;
28524
2.47k
    void **_children = PyMem_Malloc(sizeof(void *));
28525
2.47k
    if (!_children) {
28526
0
        p->error_indicator = 1;
28527
0
        PyErr_NoMemory();
28528
0
        p->level--;
28529
0
        return NULL;
28530
0
    }
28531
2.47k
    Py_ssize_t _children_capacity = 1;
28532
2.47k
    Py_ssize_t _n = 0;
28533
2.47k
    { // ',' import_from_as_name
28534
2.47k
        if (p->error_indicator) {
28535
0
            p->level--;
28536
0
            return NULL;
28537
0
        }
28538
2.47k
        D(fprintf(stderr, "%*c> _loop0_19[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' import_from_as_name"));
28539
2.47k
        Token * _literal;
28540
2.47k
        alias_ty elem;
28541
2.47k
        while (
28542
5.45k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
28543
5.45k
            &&
28544
5.45k
            (elem = import_from_as_name_rule(p))  // import_from_as_name
28545
2.47k
        )
28546
2.98k
        {
28547
2.98k
            _res = elem;
28548
2.98k
            if (_res == NULL && PyErr_Occurred()) {
28549
0
                p->error_indicator = 1;
28550
0
                PyMem_Free(_children);
28551
0
                p->level--;
28552
0
                return NULL;
28553
0
            }
28554
2.98k
            if (_n == _children_capacity) {
28555
549
                _children_capacity *= 2;
28556
549
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28557
549
                if (!_new_children) {
28558
0
                    PyMem_Free(_children);
28559
0
                    p->error_indicator = 1;
28560
0
                    PyErr_NoMemory();
28561
0
                    p->level--;
28562
0
                    return NULL;
28563
0
                }
28564
549
                _children = _new_children;
28565
549
            }
28566
2.98k
            _children[_n++] = _res;
28567
2.98k
            _mark = p->mark;
28568
2.98k
        }
28569
2.47k
        p->mark = _mark;
28570
2.47k
        D(fprintf(stderr, "%*c%s _loop0_19[%d-%d]: %s failed!\n", p->level, ' ',
28571
2.47k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' import_from_as_name"));
28572
2.47k
    }
28573
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28574
2.47k
    if (!_seq) {
28575
0
        PyMem_Free(_children);
28576
0
        p->error_indicator = 1;
28577
0
        PyErr_NoMemory();
28578
0
        p->level--;
28579
0
        return NULL;
28580
0
    }
28581
5.45k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28582
2.47k
    PyMem_Free(_children);
28583
2.47k
    p->level--;
28584
2.47k
    return _seq;
28585
2.47k
}
28586
28587
// _gather_20: import_from_as_name _loop0_19
28588
static asdl_seq *
28589
_gather_20_rule(Parser *p)
28590
3.11k
{
28591
3.11k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28592
0
        _Pypegen_stack_overflow(p);
28593
0
    }
28594
3.11k
    if (p->error_indicator) {
28595
0
        p->level--;
28596
0
        return NULL;
28597
0
    }
28598
3.11k
    asdl_seq * _res = NULL;
28599
3.11k
    int _mark = p->mark;
28600
3.11k
    { // import_from_as_name _loop0_19
28601
3.11k
        if (p->error_indicator) {
28602
0
            p->level--;
28603
0
            return NULL;
28604
0
        }
28605
3.11k
        D(fprintf(stderr, "%*c> _gather_20[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_name _loop0_19"));
28606
3.11k
        alias_ty elem;
28607
3.11k
        asdl_seq * seq;
28608
3.11k
        if (
28609
3.11k
            (elem = import_from_as_name_rule(p))  // import_from_as_name
28610
3.11k
            &&
28611
3.11k
            (seq = _loop0_19_rule(p))  // _loop0_19
28612
3.11k
        )
28613
2.47k
        {
28614
2.47k
            D(fprintf(stderr, "%*c+ _gather_20[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_name _loop0_19"));
28615
2.47k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28616
2.47k
            goto done;
28617
2.47k
        }
28618
646
        p->mark = _mark;
28619
646
        D(fprintf(stderr, "%*c%s _gather_20[%d-%d]: %s failed!\n", p->level, ' ',
28620
646
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_name _loop0_19"));
28621
646
    }
28622
0
    _res = NULL;
28623
3.11k
  done:
28624
3.11k
    p->level--;
28625
3.11k
    return _res;
28626
646
}
28627
28628
// _tmp_21: 'as' NAME
28629
static void *
28630
_tmp_21_rule(Parser *p)
28631
16.1k
{
28632
16.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28633
0
        _Pypegen_stack_overflow(p);
28634
0
    }
28635
16.1k
    if (p->error_indicator) {
28636
0
        p->level--;
28637
0
        return NULL;
28638
0
    }
28639
16.1k
    void * _res = NULL;
28640
16.1k
    int _mark = p->mark;
28641
16.1k
    { // 'as' NAME
28642
16.1k
        if (p->error_indicator) {
28643
0
            p->level--;
28644
0
            return NULL;
28645
0
        }
28646
16.1k
        D(fprintf(stderr, "%*c> _tmp_21[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
28647
16.1k
        Token * _keyword;
28648
16.1k
        expr_ty z;
28649
16.1k
        if (
28650
16.1k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
28651
16.1k
            &&
28652
16.1k
            (z = _PyPegen_name_token(p))  // NAME
28653
16.1k
        )
28654
1.76k
        {
28655
1.76k
            D(fprintf(stderr, "%*c+ _tmp_21[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
28656
1.76k
            _res = z;
28657
1.76k
            if (_res == NULL && PyErr_Occurred()) {
28658
0
                p->error_indicator = 1;
28659
0
                p->level--;
28660
0
                return NULL;
28661
0
            }
28662
1.76k
            goto done;
28663
1.76k
        }
28664
14.3k
        p->mark = _mark;
28665
14.3k
        D(fprintf(stderr, "%*c%s _tmp_21[%d-%d]: %s failed!\n", p->level, ' ',
28666
14.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
28667
14.3k
    }
28668
0
    _res = NULL;
28669
16.1k
  done:
28670
16.1k
    p->level--;
28671
16.1k
    return _res;
28672
14.3k
}
28673
28674
// _loop0_22: ',' dotted_as_name
28675
static asdl_seq *
28676
_loop0_22_rule(Parser *p)
28677
2.39k
{
28678
2.39k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28679
0
        _Pypegen_stack_overflow(p);
28680
0
    }
28681
2.39k
    if (p->error_indicator) {
28682
0
        p->level--;
28683
0
        return NULL;
28684
0
    }
28685
2.39k
    void *_res = NULL;
28686
2.39k
    int _mark = p->mark;
28687
2.39k
    void **_children = PyMem_Malloc(sizeof(void *));
28688
2.39k
    if (!_children) {
28689
0
        p->error_indicator = 1;
28690
0
        PyErr_NoMemory();
28691
0
        p->level--;
28692
0
        return NULL;
28693
0
    }
28694
2.39k
    Py_ssize_t _children_capacity = 1;
28695
2.39k
    Py_ssize_t _n = 0;
28696
2.39k
    { // ',' dotted_as_name
28697
2.39k
        if (p->error_indicator) {
28698
0
            p->level--;
28699
0
            return NULL;
28700
0
        }
28701
2.39k
        D(fprintf(stderr, "%*c> _loop0_22[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' dotted_as_name"));
28702
2.39k
        Token * _literal;
28703
2.39k
        alias_ty elem;
28704
2.39k
        while (
28705
7.41k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
28706
7.41k
            &&
28707
7.41k
            (elem = dotted_as_name_rule(p))  // dotted_as_name
28708
2.39k
        )
28709
5.01k
        {
28710
5.01k
            _res = elem;
28711
5.01k
            if (_res == NULL && PyErr_Occurred()) {
28712
0
                p->error_indicator = 1;
28713
0
                PyMem_Free(_children);
28714
0
                p->level--;
28715
0
                return NULL;
28716
0
            }
28717
5.01k
            if (_n == _children_capacity) {
28718
1.28k
                _children_capacity *= 2;
28719
1.28k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28720
1.28k
                if (!_new_children) {
28721
0
                    PyMem_Free(_children);
28722
0
                    p->error_indicator = 1;
28723
0
                    PyErr_NoMemory();
28724
0
                    p->level--;
28725
0
                    return NULL;
28726
0
                }
28727
1.28k
                _children = _new_children;
28728
1.28k
            }
28729
5.01k
            _children[_n++] = _res;
28730
5.01k
            _mark = p->mark;
28731
5.01k
        }
28732
2.39k
        p->mark = _mark;
28733
2.39k
        D(fprintf(stderr, "%*c%s _loop0_22[%d-%d]: %s failed!\n", p->level, ' ',
28734
2.39k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' dotted_as_name"));
28735
2.39k
    }
28736
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28737
2.39k
    if (!_seq) {
28738
0
        PyMem_Free(_children);
28739
0
        p->error_indicator = 1;
28740
0
        PyErr_NoMemory();
28741
0
        p->level--;
28742
0
        return NULL;
28743
0
    }
28744
7.41k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28745
2.39k
    PyMem_Free(_children);
28746
2.39k
    p->level--;
28747
2.39k
    return _seq;
28748
2.39k
}
28749
28750
// _gather_23: dotted_as_name _loop0_22
28751
static asdl_seq *
28752
_gather_23_rule(Parser *p)
28753
2.43k
{
28754
2.43k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28755
0
        _Pypegen_stack_overflow(p);
28756
0
    }
28757
2.43k
    if (p->error_indicator) {
28758
0
        p->level--;
28759
0
        return NULL;
28760
0
    }
28761
2.43k
    asdl_seq * _res = NULL;
28762
2.43k
    int _mark = p->mark;
28763
2.43k
    { // dotted_as_name _loop0_22
28764
2.43k
        if (p->error_indicator) {
28765
0
            p->level--;
28766
0
            return NULL;
28767
0
        }
28768
2.43k
        D(fprintf(stderr, "%*c> _gather_23[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_as_name _loop0_22"));
28769
2.43k
        alias_ty elem;
28770
2.43k
        asdl_seq * seq;
28771
2.43k
        if (
28772
2.43k
            (elem = dotted_as_name_rule(p))  // dotted_as_name
28773
2.43k
            &&
28774
2.43k
            (seq = _loop0_22_rule(p))  // _loop0_22
28775
2.43k
        )
28776
2.39k
        {
28777
2.39k
            D(fprintf(stderr, "%*c+ _gather_23[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_as_name _loop0_22"));
28778
2.39k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28779
2.39k
            goto done;
28780
2.39k
        }
28781
33
        p->mark = _mark;
28782
33
        D(fprintf(stderr, "%*c%s _gather_23[%d-%d]: %s failed!\n", p->level, ' ',
28783
33
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_as_name _loop0_22"));
28784
33
    }
28785
0
    _res = NULL;
28786
2.43k
  done:
28787
2.43k
    p->level--;
28788
2.43k
    return _res;
28789
33
}
28790
28791
// _loop1_24: ('@' named_expression NEWLINE)
28792
static asdl_seq *
28793
_loop1_24_rule(Parser *p)
28794
18.5k
{
28795
18.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28796
0
        _Pypegen_stack_overflow(p);
28797
0
    }
28798
18.5k
    if (p->error_indicator) {
28799
0
        p->level--;
28800
0
        return NULL;
28801
0
    }
28802
18.5k
    void *_res = NULL;
28803
18.5k
    int _mark = p->mark;
28804
18.5k
    void **_children = PyMem_Malloc(sizeof(void *));
28805
18.5k
    if (!_children) {
28806
0
        p->error_indicator = 1;
28807
0
        PyErr_NoMemory();
28808
0
        p->level--;
28809
0
        return NULL;
28810
0
    }
28811
18.5k
    Py_ssize_t _children_capacity = 1;
28812
18.5k
    Py_ssize_t _n = 0;
28813
18.5k
    { // ('@' named_expression NEWLINE)
28814
18.5k
        if (p->error_indicator) {
28815
0
            p->level--;
28816
0
            return NULL;
28817
0
        }
28818
18.5k
        D(fprintf(stderr, "%*c> _loop1_24[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('@' named_expression NEWLINE)"));
28819
18.5k
        void *_tmp_158_var;
28820
18.5k
        while (
28821
22.6k
            (_tmp_158_var = _tmp_158_rule(p))  // '@' named_expression NEWLINE
28822
18.5k
        )
28823
4.12k
        {
28824
4.12k
            _res = _tmp_158_var;
28825
4.12k
            if (_n == _children_capacity) {
28826
655
                _children_capacity *= 2;
28827
655
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28828
655
                if (!_new_children) {
28829
0
                    PyMem_Free(_children);
28830
0
                    p->error_indicator = 1;
28831
0
                    PyErr_NoMemory();
28832
0
                    p->level--;
28833
0
                    return NULL;
28834
0
                }
28835
655
                _children = _new_children;
28836
655
            }
28837
4.12k
            _children[_n++] = _res;
28838
4.12k
            _mark = p->mark;
28839
4.12k
        }
28840
18.5k
        p->mark = _mark;
28841
18.5k
        D(fprintf(stderr, "%*c%s _loop1_24[%d-%d]: %s failed!\n", p->level, ' ',
28842
18.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('@' named_expression NEWLINE)"));
28843
18.5k
    }
28844
18.5k
    if (_n == 0 || p->error_indicator) {
28845
16.4k
        PyMem_Free(_children);
28846
16.4k
        p->level--;
28847
16.4k
        return NULL;
28848
16.4k
    }
28849
2.17k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28850
2.17k
    if (!_seq) {
28851
0
        PyMem_Free(_children);
28852
0
        p->error_indicator = 1;
28853
0
        PyErr_NoMemory();
28854
0
        p->level--;
28855
0
        return NULL;
28856
0
    }
28857
6.28k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28858
2.17k
    PyMem_Free(_children);
28859
2.17k
    p->level--;
28860
2.17k
    return _seq;
28861
2.17k
}
28862
28863
// _tmp_25: '(' arguments? ')'
28864
static void *
28865
_tmp_25_rule(Parser *p)
28866
6.16k
{
28867
6.16k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28868
0
        _Pypegen_stack_overflow(p);
28869
0
    }
28870
6.16k
    if (p->error_indicator) {
28871
0
        p->level--;
28872
0
        return NULL;
28873
0
    }
28874
6.16k
    void * _res = NULL;
28875
6.16k
    int _mark = p->mark;
28876
6.16k
    { // '(' arguments? ')'
28877
6.16k
        if (p->error_indicator) {
28878
0
            p->level--;
28879
0
            return NULL;
28880
0
        }
28881
6.16k
        D(fprintf(stderr, "%*c> _tmp_25[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
28882
6.16k
        Token * _literal;
28883
6.16k
        Token * _literal_1;
28884
6.16k
        void *z;
28885
6.16k
        if (
28886
6.16k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
28887
6.16k
            &&
28888
6.16k
            (z = arguments_rule(p), !p->error_indicator)  // arguments?
28889
6.16k
            &&
28890
6.16k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
28891
6.16k
        )
28892
2.15k
        {
28893
2.15k
            D(fprintf(stderr, "%*c+ _tmp_25[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
28894
2.15k
            _res = z;
28895
2.15k
            if (_res == NULL && PyErr_Occurred()) {
28896
0
                p->error_indicator = 1;
28897
0
                p->level--;
28898
0
                return NULL;
28899
0
            }
28900
2.15k
            goto done;
28901
2.15k
        }
28902
4.00k
        p->mark = _mark;
28903
4.00k
        D(fprintf(stderr, "%*c%s _tmp_25[%d-%d]: %s failed!\n", p->level, ' ',
28904
4.00k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'"));
28905
4.00k
    }
28906
0
    _res = NULL;
28907
6.16k
  done:
28908
6.16k
    p->level--;
28909
6.16k
    return _res;
28910
4.00k
}
28911
28912
// _tmp_26: '->' expression
28913
static void *
28914
_tmp_26_rule(Parser *p)
28915
14.0k
{
28916
14.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28917
0
        _Pypegen_stack_overflow(p);
28918
0
    }
28919
14.0k
    if (p->error_indicator) {
28920
0
        p->level--;
28921
0
        return NULL;
28922
0
    }
28923
14.0k
    void * _res = NULL;
28924
14.0k
    int _mark = p->mark;
28925
14.0k
    { // '->' expression
28926
14.0k
        if (p->error_indicator) {
28927
0
            p->level--;
28928
0
            return NULL;
28929
0
        }
28930
14.0k
        D(fprintf(stderr, "%*c> _tmp_26[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression"));
28931
14.0k
        Token * _literal;
28932
14.0k
        expr_ty z;
28933
14.0k
        if (
28934
14.0k
            (_literal = _PyPegen_expect_token(p, 51))  // token='->'
28935
14.0k
            &&
28936
14.0k
            (z = expression_rule(p))  // expression
28937
14.0k
        )
28938
648
        {
28939
648
            D(fprintf(stderr, "%*c+ _tmp_26[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression"));
28940
648
            _res = z;
28941
648
            if (_res == NULL && PyErr_Occurred()) {
28942
0
                p->error_indicator = 1;
28943
0
                p->level--;
28944
0
                return NULL;
28945
0
            }
28946
648
            goto done;
28947
648
        }
28948
13.3k
        p->mark = _mark;
28949
13.3k
        D(fprintf(stderr, "%*c%s _tmp_26[%d-%d]: %s failed!\n", p->level, ' ',
28950
13.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression"));
28951
13.3k
    }
28952
0
    _res = NULL;
28953
14.0k
  done:
28954
14.0k
    p->level--;
28955
14.0k
    return _res;
28956
13.3k
}
28957
28958
// _loop0_27: param_no_default
28959
static asdl_seq *
28960
_loop0_27_rule(Parser *p)
28961
66.7k
{
28962
66.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28963
0
        _Pypegen_stack_overflow(p);
28964
0
    }
28965
66.7k
    if (p->error_indicator) {
28966
0
        p->level--;
28967
0
        return NULL;
28968
0
    }
28969
66.7k
    void *_res = NULL;
28970
66.7k
    int _mark = p->mark;
28971
66.7k
    void **_children = PyMem_Malloc(sizeof(void *));
28972
66.7k
    if (!_children) {
28973
0
        p->error_indicator = 1;
28974
0
        PyErr_NoMemory();
28975
0
        p->level--;
28976
0
        return NULL;
28977
0
    }
28978
66.7k
    Py_ssize_t _children_capacity = 1;
28979
66.7k
    Py_ssize_t _n = 0;
28980
66.7k
    { // param_no_default
28981
66.7k
        if (p->error_indicator) {
28982
0
            p->level--;
28983
0
            return NULL;
28984
0
        }
28985
66.7k
        D(fprintf(stderr, "%*c> _loop0_27[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
28986
66.7k
        arg_ty param_no_default_var;
28987
66.7k
        while (
28988
96.9k
            (param_no_default_var = param_no_default_rule(p))  // param_no_default
28989
66.7k
        )
28990
30.2k
        {
28991
30.2k
            _res = param_no_default_var;
28992
30.2k
            if (_n == _children_capacity) {
28993
8.14k
                _children_capacity *= 2;
28994
8.14k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28995
8.14k
                if (!_new_children) {
28996
0
                    PyMem_Free(_children);
28997
0
                    p->error_indicator = 1;
28998
0
                    PyErr_NoMemory();
28999
0
                    p->level--;
29000
0
                    return NULL;
29001
0
                }
29002
8.14k
                _children = _new_children;
29003
8.14k
            }
29004
30.2k
            _children[_n++] = _res;
29005
30.2k
            _mark = p->mark;
29006
30.2k
        }
29007
66.7k
        p->mark = _mark;
29008
66.7k
        D(fprintf(stderr, "%*c%s _loop0_27[%d-%d]: %s failed!\n", p->level, ' ',
29009
66.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
29010
66.7k
    }
29011
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29012
66.7k
    if (!_seq) {
29013
0
        PyMem_Free(_children);
29014
0
        p->error_indicator = 1;
29015
0
        PyErr_NoMemory();
29016
0
        p->level--;
29017
0
        return NULL;
29018
0
    }
29019
96.9k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29020
66.7k
    PyMem_Free(_children);
29021
66.7k
    p->level--;
29022
66.7k
    return _seq;
29023
66.7k
}
29024
29025
// _loop0_28: param_with_default
29026
static asdl_seq *
29027
_loop0_28_rule(Parser *p)
29028
8.22k
{
29029
8.22k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29030
0
        _Pypegen_stack_overflow(p);
29031
0
    }
29032
8.22k
    if (p->error_indicator) {
29033
2
        p->level--;
29034
2
        return NULL;
29035
2
    }
29036
8.22k
    void *_res = NULL;
29037
8.22k
    int _mark = p->mark;
29038
8.22k
    void **_children = PyMem_Malloc(sizeof(void *));
29039
8.22k
    if (!_children) {
29040
0
        p->error_indicator = 1;
29041
0
        PyErr_NoMemory();
29042
0
        p->level--;
29043
0
        return NULL;
29044
0
    }
29045
8.22k
    Py_ssize_t _children_capacity = 1;
29046
8.22k
    Py_ssize_t _n = 0;
29047
8.22k
    { // param_with_default
29048
8.22k
        if (p->error_indicator) {
29049
0
            p->level--;
29050
0
            return NULL;
29051
0
        }
29052
8.22k
        D(fprintf(stderr, "%*c> _loop0_28[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
29053
8.22k
        NameDefaultPair* param_with_default_var;
29054
8.22k
        while (
29055
10.6k
            (param_with_default_var = param_with_default_rule(p))  // param_with_default
29056
8.22k
        )
29057
2.44k
        {
29058
2.44k
            _res = param_with_default_var;
29059
2.44k
            if (_n == _children_capacity) {
29060
484
                _children_capacity *= 2;
29061
484
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29062
484
                if (!_new_children) {
29063
0
                    PyMem_Free(_children);
29064
0
                    p->error_indicator = 1;
29065
0
                    PyErr_NoMemory();
29066
0
                    p->level--;
29067
0
                    return NULL;
29068
0
                }
29069
484
                _children = _new_children;
29070
484
            }
29071
2.44k
            _children[_n++] = _res;
29072
2.44k
            _mark = p->mark;
29073
2.44k
        }
29074
8.22k
        p->mark = _mark;
29075
8.22k
        D(fprintf(stderr, "%*c%s _loop0_28[%d-%d]: %s failed!\n", p->level, ' ',
29076
8.22k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
29077
8.22k
    }
29078
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29079
8.22k
    if (!_seq) {
29080
0
        PyMem_Free(_children);
29081
0
        p->error_indicator = 1;
29082
0
        PyErr_NoMemory();
29083
0
        p->level--;
29084
0
        return NULL;
29085
0
    }
29086
10.6k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29087
8.22k
    PyMem_Free(_children);
29088
8.22k
    p->level--;
29089
8.22k
    return _seq;
29090
8.22k
}
29091
29092
// _loop1_29: param_no_default
29093
static asdl_seq *
29094
_loop1_29_rule(Parser *p)
29095
72.0k
{
29096
72.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29097
0
        _Pypegen_stack_overflow(p);
29098
0
    }
29099
72.0k
    if (p->error_indicator) {
29100
0
        p->level--;
29101
0
        return NULL;
29102
0
    }
29103
72.0k
    void *_res = NULL;
29104
72.0k
    int _mark = p->mark;
29105
72.0k
    void **_children = PyMem_Malloc(sizeof(void *));
29106
72.0k
    if (!_children) {
29107
0
        p->error_indicator = 1;
29108
0
        PyErr_NoMemory();
29109
0
        p->level--;
29110
0
        return NULL;
29111
0
    }
29112
72.0k
    Py_ssize_t _children_capacity = 1;
29113
72.0k
    Py_ssize_t _n = 0;
29114
72.0k
    { // param_no_default
29115
72.0k
        if (p->error_indicator) {
29116
0
            p->level--;
29117
0
            return NULL;
29118
0
        }
29119
72.0k
        D(fprintf(stderr, "%*c> _loop1_29[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
29120
72.0k
        arg_ty param_no_default_var;
29121
72.0k
        while (
29122
116k
            (param_no_default_var = param_no_default_rule(p))  // param_no_default
29123
72.0k
        )
29124
44.8k
        {
29125
44.8k
            _res = param_no_default_var;
29126
44.8k
            if (_n == _children_capacity) {
29127
11.5k
                _children_capacity *= 2;
29128
11.5k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29129
11.5k
                if (!_new_children) {
29130
0
                    PyMem_Free(_children);
29131
0
                    p->error_indicator = 1;
29132
0
                    PyErr_NoMemory();
29133
0
                    p->level--;
29134
0
                    return NULL;
29135
0
                }
29136
11.5k
                _children = _new_children;
29137
11.5k
            }
29138
44.8k
            _children[_n++] = _res;
29139
44.8k
            _mark = p->mark;
29140
44.8k
        }
29141
72.0k
        p->mark = _mark;
29142
72.0k
        D(fprintf(stderr, "%*c%s _loop1_29[%d-%d]: %s failed!\n", p->level, ' ',
29143
72.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
29144
72.0k
    }
29145
72.0k
    if (_n == 0 || p->error_indicator) {
29146
43.3k
        PyMem_Free(_children);
29147
43.3k
        p->level--;
29148
43.3k
        return NULL;
29149
43.3k
    }
29150
28.6k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29151
28.6k
    if (!_seq) {
29152
0
        PyMem_Free(_children);
29153
0
        p->error_indicator = 1;
29154
0
        PyErr_NoMemory();
29155
0
        p->level--;
29156
0
        return NULL;
29157
0
    }
29158
73.4k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29159
28.6k
    PyMem_Free(_children);
29160
28.6k
    p->level--;
29161
28.6k
    return _seq;
29162
28.6k
}
29163
29164
// _loop1_30: param_with_default
29165
static asdl_seq *
29166
_loop1_30_rule(Parser *p)
29167
66.7k
{
29168
66.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29169
0
        _Pypegen_stack_overflow(p);
29170
0
    }
29171
66.7k
    if (p->error_indicator) {
29172
0
        p->level--;
29173
0
        return NULL;
29174
0
    }
29175
66.7k
    void *_res = NULL;
29176
66.7k
    int _mark = p->mark;
29177
66.7k
    void **_children = PyMem_Malloc(sizeof(void *));
29178
66.7k
    if (!_children) {
29179
0
        p->error_indicator = 1;
29180
0
        PyErr_NoMemory();
29181
0
        p->level--;
29182
0
        return NULL;
29183
0
    }
29184
66.7k
    Py_ssize_t _children_capacity = 1;
29185
66.7k
    Py_ssize_t _n = 0;
29186
66.7k
    { // param_with_default
29187
66.7k
        if (p->error_indicator) {
29188
0
            p->level--;
29189
0
            return NULL;
29190
0
        }
29191
66.7k
        D(fprintf(stderr, "%*c> _loop1_30[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
29192
66.7k
        NameDefaultPair* param_with_default_var;
29193
66.7k
        while (
29194
88.2k
            (param_with_default_var = param_with_default_rule(p))  // param_with_default
29195
66.7k
        )
29196
21.5k
        {
29197
21.5k
            _res = param_with_default_var;
29198
21.5k
            if (_n == _children_capacity) {
29199
2.13k
                _children_capacity *= 2;
29200
2.13k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29201
2.13k
                if (!_new_children) {
29202
0
                    PyMem_Free(_children);
29203
0
                    p->error_indicator = 1;
29204
0
                    PyErr_NoMemory();
29205
0
                    p->level--;
29206
0
                    return NULL;
29207
0
                }
29208
2.13k
                _children = _new_children;
29209
2.13k
            }
29210
21.5k
            _children[_n++] = _res;
29211
21.5k
            _mark = p->mark;
29212
21.5k
        }
29213
66.7k
        p->mark = _mark;
29214
66.7k
        D(fprintf(stderr, "%*c%s _loop1_30[%d-%d]: %s failed!\n", p->level, ' ',
29215
66.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
29216
66.7k
    }
29217
66.7k
    if (_n == 0 || p->error_indicator) {
29218
52.9k
        PyMem_Free(_children);
29219
52.9k
        p->level--;
29220
52.9k
        return NULL;
29221
52.9k
    }
29222
13.7k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29223
13.7k
    if (!_seq) {
29224
0
        PyMem_Free(_children);
29225
0
        p->error_indicator = 1;
29226
0
        PyErr_NoMemory();
29227
0
        p->level--;
29228
0
        return NULL;
29229
0
    }
29230
35.2k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29231
13.7k
    PyMem_Free(_children);
29232
13.7k
    p->level--;
29233
13.7k
    return _seq;
29234
13.7k
}
29235
29236
// _loop0_31: param_maybe_default
29237
static asdl_seq *
29238
_loop0_31_rule(Parser *p)
29239
9.77k
{
29240
9.77k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29241
0
        _Pypegen_stack_overflow(p);
29242
0
    }
29243
9.77k
    if (p->error_indicator) {
29244
0
        p->level--;
29245
0
        return NULL;
29246
0
    }
29247
9.77k
    void *_res = NULL;
29248
9.77k
    int _mark = p->mark;
29249
9.77k
    void **_children = PyMem_Malloc(sizeof(void *));
29250
9.77k
    if (!_children) {
29251
0
        p->error_indicator = 1;
29252
0
        PyErr_NoMemory();
29253
0
        p->level--;
29254
0
        return NULL;
29255
0
    }
29256
9.77k
    Py_ssize_t _children_capacity = 1;
29257
9.77k
    Py_ssize_t _n = 0;
29258
9.77k
    { // param_maybe_default
29259
9.77k
        if (p->error_indicator) {
29260
0
            p->level--;
29261
0
            return NULL;
29262
0
        }
29263
9.77k
        D(fprintf(stderr, "%*c> _loop0_31[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
29264
9.77k
        NameDefaultPair* param_maybe_default_var;
29265
9.77k
        while (
29266
15.8k
            (param_maybe_default_var = param_maybe_default_rule(p))  // param_maybe_default
29267
9.77k
        )
29268
6.08k
        {
29269
6.08k
            _res = param_maybe_default_var;
29270
6.08k
            if (_n == _children_capacity) {
29271
1.64k
                _children_capacity *= 2;
29272
1.64k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29273
1.64k
                if (!_new_children) {
29274
0
                    PyMem_Free(_children);
29275
0
                    p->error_indicator = 1;
29276
0
                    PyErr_NoMemory();
29277
0
                    p->level--;
29278
0
                    return NULL;
29279
0
                }
29280
1.64k
                _children = _new_children;
29281
1.64k
            }
29282
6.08k
            _children[_n++] = _res;
29283
6.08k
            _mark = p->mark;
29284
6.08k
        }
29285
9.77k
        p->mark = _mark;
29286
9.77k
        D(fprintf(stderr, "%*c%s _loop0_31[%d-%d]: %s failed!\n", p->level, ' ',
29287
9.77k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
29288
9.77k
    }
29289
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29290
9.77k
    if (!_seq) {
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
15.8k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29298
9.77k
    PyMem_Free(_children);
29299
9.77k
    p->level--;
29300
9.77k
    return _seq;
29301
9.77k
}
29302
29303
// _loop1_32: param_maybe_default
29304
static asdl_seq *
29305
_loop1_32_rule(Parser *p)
29306
6.09k
{
29307
6.09k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29308
0
        _Pypegen_stack_overflow(p);
29309
0
    }
29310
6.09k
    if (p->error_indicator) {
29311
0
        p->level--;
29312
0
        return NULL;
29313
0
    }
29314
6.09k
    void *_res = NULL;
29315
6.09k
    int _mark = p->mark;
29316
6.09k
    void **_children = PyMem_Malloc(sizeof(void *));
29317
6.09k
    if (!_children) {
29318
0
        p->error_indicator = 1;
29319
0
        PyErr_NoMemory();
29320
0
        p->level--;
29321
0
        return NULL;
29322
0
    }
29323
6.09k
    Py_ssize_t _children_capacity = 1;
29324
6.09k
    Py_ssize_t _n = 0;
29325
6.09k
    { // param_maybe_default
29326
6.09k
        if (p->error_indicator) {
29327
0
            p->level--;
29328
0
            return NULL;
29329
0
        }
29330
6.09k
        D(fprintf(stderr, "%*c> _loop1_32[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
29331
6.09k
        NameDefaultPair* param_maybe_default_var;
29332
6.09k
        while (
29333
11.3k
            (param_maybe_default_var = param_maybe_default_rule(p))  // param_maybe_default
29334
6.09k
        )
29335
5.27k
        {
29336
5.27k
            _res = param_maybe_default_var;
29337
5.27k
            if (_n == _children_capacity) {
29338
869
                _children_capacity *= 2;
29339
869
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29340
869
                if (!_new_children) {
29341
0
                    PyMem_Free(_children);
29342
0
                    p->error_indicator = 1;
29343
0
                    PyErr_NoMemory();
29344
0
                    p->level--;
29345
0
                    return NULL;
29346
0
                }
29347
869
                _children = _new_children;
29348
869
            }
29349
5.27k
            _children[_n++] = _res;
29350
5.27k
            _mark = p->mark;
29351
5.27k
        }
29352
6.09k
        p->mark = _mark;
29353
6.09k
        D(fprintf(stderr, "%*c%s _loop1_32[%d-%d]: %s failed!\n", p->level, ' ',
29354
6.09k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
29355
6.09k
    }
29356
6.09k
    if (_n == 0 || p->error_indicator) {
29357
2.95k
        PyMem_Free(_children);
29358
2.95k
        p->level--;
29359
2.95k
        return NULL;
29360
2.95k
    }
29361
3.14k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29362
3.14k
    if (!_seq) {
29363
0
        PyMem_Free(_children);
29364
0
        p->error_indicator = 1;
29365
0
        PyErr_NoMemory();
29366
0
        p->level--;
29367
0
        return NULL;
29368
0
    }
29369
8.41k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29370
3.14k
    PyMem_Free(_children);
29371
3.14k
    p->level--;
29372
3.14k
    return _seq;
29373
3.14k
}
29374
29375
// _loop0_33: ',' with_item
29376
static asdl_seq *
29377
_loop0_33_rule(Parser *p)
29378
5.70k
{
29379
5.70k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29380
0
        _Pypegen_stack_overflow(p);
29381
0
    }
29382
5.70k
    if (p->error_indicator) {
29383
0
        p->level--;
29384
0
        return NULL;
29385
0
    }
29386
5.70k
    void *_res = NULL;
29387
5.70k
    int _mark = p->mark;
29388
5.70k
    void **_children = PyMem_Malloc(sizeof(void *));
29389
5.70k
    if (!_children) {
29390
0
        p->error_indicator = 1;
29391
0
        PyErr_NoMemory();
29392
0
        p->level--;
29393
0
        return NULL;
29394
0
    }
29395
5.70k
    Py_ssize_t _children_capacity = 1;
29396
5.70k
    Py_ssize_t _n = 0;
29397
5.70k
    { // ',' with_item
29398
5.70k
        if (p->error_indicator) {
29399
0
            p->level--;
29400
0
            return NULL;
29401
0
        }
29402
5.70k
        D(fprintf(stderr, "%*c> _loop0_33[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
29403
5.70k
        Token * _literal;
29404
5.70k
        withitem_ty elem;
29405
5.70k
        while (
29406
12.9k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
29407
12.9k
            &&
29408
12.9k
            (elem = with_item_rule(p))  // with_item
29409
5.70k
        )
29410
7.26k
        {
29411
7.26k
            _res = elem;
29412
7.26k
            if (_res == NULL && PyErr_Occurred()) {
29413
0
                p->error_indicator = 1;
29414
0
                PyMem_Free(_children);
29415
0
                p->level--;
29416
0
                return NULL;
29417
0
            }
29418
7.26k
            if (_n == _children_capacity) {
29419
2.61k
                _children_capacity *= 2;
29420
2.61k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29421
2.61k
                if (!_new_children) {
29422
0
                    PyMem_Free(_children);
29423
0
                    p->error_indicator = 1;
29424
0
                    PyErr_NoMemory();
29425
0
                    p->level--;
29426
0
                    return NULL;
29427
0
                }
29428
2.61k
                _children = _new_children;
29429
2.61k
            }
29430
7.26k
            _children[_n++] = _res;
29431
7.26k
            _mark = p->mark;
29432
7.26k
        }
29433
5.70k
        p->mark = _mark;
29434
5.70k
        D(fprintf(stderr, "%*c%s _loop0_33[%d-%d]: %s failed!\n", p->level, ' ',
29435
5.70k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
29436
5.70k
    }
29437
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29438
5.70k
    if (!_seq) {
29439
0
        PyMem_Free(_children);
29440
0
        p->error_indicator = 1;
29441
0
        PyErr_NoMemory();
29442
0
        p->level--;
29443
0
        return NULL;
29444
0
    }
29445
12.9k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29446
5.70k
    PyMem_Free(_children);
29447
5.70k
    p->level--;
29448
5.70k
    return _seq;
29449
5.70k
}
29450
29451
// _gather_34: with_item _loop0_33
29452
static asdl_seq *
29453
_gather_34_rule(Parser *p)
29454
7.03k
{
29455
7.03k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29456
0
        _Pypegen_stack_overflow(p);
29457
0
    }
29458
7.03k
    if (p->error_indicator) {
29459
0
        p->level--;
29460
0
        return NULL;
29461
0
    }
29462
7.03k
    asdl_seq * _res = NULL;
29463
7.03k
    int _mark = p->mark;
29464
7.03k
    { // with_item _loop0_33
29465
7.03k
        if (p->error_indicator) {
29466
0
            p->level--;
29467
0
            return NULL;
29468
0
        }
29469
7.03k
        D(fprintf(stderr, "%*c> _gather_34[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_33"));
29470
7.03k
        withitem_ty elem;
29471
7.03k
        asdl_seq * seq;
29472
7.03k
        if (
29473
7.03k
            (elem = with_item_rule(p))  // with_item
29474
7.03k
            &&
29475
7.03k
            (seq = _loop0_33_rule(p))  // _loop0_33
29476
7.03k
        )
29477
5.70k
        {
29478
5.70k
            D(fprintf(stderr, "%*c+ _gather_34[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_33"));
29479
5.70k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
29480
5.70k
            goto done;
29481
5.70k
        }
29482
1.32k
        p->mark = _mark;
29483
1.32k
        D(fprintf(stderr, "%*c%s _gather_34[%d-%d]: %s failed!\n", p->level, ' ',
29484
1.32k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_33"));
29485
1.32k
    }
29486
0
    _res = NULL;
29487
7.03k
  done:
29488
7.03k
    p->level--;
29489
7.03k
    return _res;
29490
1.32k
}
29491
29492
// _tmp_35: ',' | ')' | ':'
29493
static void *
29494
_tmp_35_rule(Parser *p)
29495
2.12k
{
29496
2.12k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29497
0
        _Pypegen_stack_overflow(p);
29498
0
    }
29499
2.12k
    if (p->error_indicator) {
29500
0
        p->level--;
29501
0
        return NULL;
29502
0
    }
29503
2.12k
    void * _res = NULL;
29504
2.12k
    int _mark = p->mark;
29505
2.12k
    { // ','
29506
2.12k
        if (p->error_indicator) {
29507
0
            p->level--;
29508
0
            return NULL;
29509
0
        }
29510
2.12k
        D(fprintf(stderr, "%*c> _tmp_35[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
29511
2.12k
        Token * _literal;
29512
2.12k
        if (
29513
2.12k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
29514
2.12k
        )
29515
1.18k
        {
29516
1.18k
            D(fprintf(stderr, "%*c+ _tmp_35[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
29517
1.18k
            _res = _literal;
29518
1.18k
            goto done;
29519
1.18k
        }
29520
935
        p->mark = _mark;
29521
935
        D(fprintf(stderr, "%*c%s _tmp_35[%d-%d]: %s failed!\n", p->level, ' ',
29522
935
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
29523
935
    }
29524
0
    { // ')'
29525
935
        if (p->error_indicator) {
29526
0
            p->level--;
29527
0
            return NULL;
29528
0
        }
29529
935
        D(fprintf(stderr, "%*c> _tmp_35[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
29530
935
        Token * _literal;
29531
935
        if (
29532
935
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
29533
935
        )
29534
586
        {
29535
586
            D(fprintf(stderr, "%*c+ _tmp_35[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
29536
586
            _res = _literal;
29537
586
            goto done;
29538
586
        }
29539
349
        p->mark = _mark;
29540
349
        D(fprintf(stderr, "%*c%s _tmp_35[%d-%d]: %s failed!\n", p->level, ' ',
29541
349
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
29542
349
    }
29543
0
    { // ':'
29544
349
        if (p->error_indicator) {
29545
0
            p->level--;
29546
0
            return NULL;
29547
0
        }
29548
349
        D(fprintf(stderr, "%*c> _tmp_35[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
29549
349
        Token * _literal;
29550
349
        if (
29551
349
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
29552
349
        )
29553
337
        {
29554
337
            D(fprintf(stderr, "%*c+ _tmp_35[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
29555
337
            _res = _literal;
29556
337
            goto done;
29557
337
        }
29558
12
        p->mark = _mark;
29559
12
        D(fprintf(stderr, "%*c%s _tmp_35[%d-%d]: %s failed!\n", p->level, ' ',
29560
12
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
29561
12
    }
29562
0
    _res = NULL;
29563
2.12k
  done:
29564
2.12k
    p->level--;
29565
2.12k
    return _res;
29566
12
}
29567
29568
// _loop1_36: except_block
29569
static asdl_seq *
29570
_loop1_36_rule(Parser *p)
29571
6.51k
{
29572
6.51k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29573
0
        _Pypegen_stack_overflow(p);
29574
0
    }
29575
6.51k
    if (p->error_indicator) {
29576
0
        p->level--;
29577
0
        return NULL;
29578
0
    }
29579
6.51k
    void *_res = NULL;
29580
6.51k
    int _mark = p->mark;
29581
6.51k
    void **_children = PyMem_Malloc(sizeof(void *));
29582
6.51k
    if (!_children) {
29583
0
        p->error_indicator = 1;
29584
0
        PyErr_NoMemory();
29585
0
        p->level--;
29586
0
        return NULL;
29587
0
    }
29588
6.51k
    Py_ssize_t _children_capacity = 1;
29589
6.51k
    Py_ssize_t _n = 0;
29590
6.51k
    { // except_block
29591
6.51k
        if (p->error_indicator) {
29592
0
            p->level--;
29593
0
            return NULL;
29594
0
        }
29595
6.51k
        D(fprintf(stderr, "%*c> _loop1_36[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_block"));
29596
6.51k
        excepthandler_ty except_block_var;
29597
6.51k
        while (
29598
13.0k
            (except_block_var = except_block_rule(p))  // except_block
29599
6.51k
        )
29600
6.50k
        {
29601
6.50k
            _res = except_block_var;
29602
6.50k
            if (_n == _children_capacity) {
29603
1.07k
                _children_capacity *= 2;
29604
1.07k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29605
1.07k
                if (!_new_children) {
29606
0
                    PyMem_Free(_children);
29607
0
                    p->error_indicator = 1;
29608
0
                    PyErr_NoMemory();
29609
0
                    p->level--;
29610
0
                    return NULL;
29611
0
                }
29612
1.07k
                _children = _new_children;
29613
1.07k
            }
29614
6.50k
            _children[_n++] = _res;
29615
6.50k
            _mark = p->mark;
29616
6.50k
        }
29617
6.51k
        p->mark = _mark;
29618
6.51k
        D(fprintf(stderr, "%*c%s _loop1_36[%d-%d]: %s failed!\n", p->level, ' ',
29619
6.51k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_block"));
29620
6.51k
    }
29621
6.51k
    if (_n == 0 || p->error_indicator) {
29622
2.87k
        PyMem_Free(_children);
29623
2.87k
        p->level--;
29624
2.87k
        return NULL;
29625
2.87k
    }
29626
3.63k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29627
3.63k
    if (!_seq) {
29628
0
        PyMem_Free(_children);
29629
0
        p->error_indicator = 1;
29630
0
        PyErr_NoMemory();
29631
0
        p->level--;
29632
0
        return NULL;
29633
0
    }
29634
10.1k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29635
3.63k
    PyMem_Free(_children);
29636
3.63k
    p->level--;
29637
3.63k
    return _seq;
29638
3.63k
}
29639
29640
// _loop1_37: except_star_block
29641
static asdl_seq *
29642
_loop1_37_rule(Parser *p)
29643
3.55k
{
29644
3.55k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29645
0
        _Pypegen_stack_overflow(p);
29646
0
    }
29647
3.55k
    if (p->error_indicator) {
29648
0
        p->level--;
29649
0
        return NULL;
29650
0
    }
29651
3.55k
    void *_res = NULL;
29652
3.55k
    int _mark = p->mark;
29653
3.55k
    void **_children = PyMem_Malloc(sizeof(void *));
29654
3.55k
    if (!_children) {
29655
0
        p->error_indicator = 1;
29656
0
        PyErr_NoMemory();
29657
0
        p->level--;
29658
0
        return NULL;
29659
0
    }
29660
3.55k
    Py_ssize_t _children_capacity = 1;
29661
3.55k
    Py_ssize_t _n = 0;
29662
3.55k
    { // except_star_block
29663
3.55k
        if (p->error_indicator) {
29664
0
            p->level--;
29665
0
            return NULL;
29666
0
        }
29667
3.55k
        D(fprintf(stderr, "%*c> _loop1_37[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_star_block"));
29668
3.55k
        excepthandler_ty except_star_block_var;
29669
3.55k
        while (
29670
7.50k
            (except_star_block_var = except_star_block_rule(p))  // except_star_block
29671
3.55k
        )
29672
3.94k
        {
29673
3.94k
            _res = except_star_block_var;
29674
3.94k
            if (_n == _children_capacity) {
29675
429
                _children_capacity *= 2;
29676
429
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29677
429
                if (!_new_children) {
29678
0
                    PyMem_Free(_children);
29679
0
                    p->error_indicator = 1;
29680
0
                    PyErr_NoMemory();
29681
0
                    p->level--;
29682
0
                    return NULL;
29683
0
                }
29684
429
                _children = _new_children;
29685
429
            }
29686
3.94k
            _children[_n++] = _res;
29687
3.94k
            _mark = p->mark;
29688
3.94k
        }
29689
3.55k
        p->mark = _mark;
29690
3.55k
        D(fprintf(stderr, "%*c%s _loop1_37[%d-%d]: %s failed!\n", p->level, ' ',
29691
3.55k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_star_block"));
29692
3.55k
    }
29693
3.55k
    if (_n == 0 || p->error_indicator) {
29694
1.42k
        PyMem_Free(_children);
29695
1.42k
        p->level--;
29696
1.42k
        return NULL;
29697
1.42k
    }
29698
2.13k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29699
2.13k
    if (!_seq) {
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
6.07k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29707
2.13k
    PyMem_Free(_children);
29708
2.13k
    p->level--;
29709
2.13k
    return _seq;
29710
2.13k
}
29711
29712
// _loop1_38: case_block
29713
static asdl_seq *
29714
_loop1_38_rule(Parser *p)
29715
1.95k
{
29716
1.95k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29717
0
        _Pypegen_stack_overflow(p);
29718
0
    }
29719
1.95k
    if (p->error_indicator) {
29720
0
        p->level--;
29721
0
        return NULL;
29722
0
    }
29723
1.95k
    void *_res = NULL;
29724
1.95k
    int _mark = p->mark;
29725
1.95k
    void **_children = PyMem_Malloc(sizeof(void *));
29726
1.95k
    if (!_children) {
29727
0
        p->error_indicator = 1;
29728
0
        PyErr_NoMemory();
29729
0
        p->level--;
29730
0
        return NULL;
29731
0
    }
29732
1.95k
    Py_ssize_t _children_capacity = 1;
29733
1.95k
    Py_ssize_t _n = 0;
29734
1.95k
    { // case_block
29735
1.95k
        if (p->error_indicator) {
29736
0
            p->level--;
29737
0
            return NULL;
29738
0
        }
29739
1.95k
        D(fprintf(stderr, "%*c> _loop1_38[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "case_block"));
29740
1.95k
        match_case_ty case_block_var;
29741
1.95k
        while (
29742
6.24k
            (case_block_var = case_block_rule(p))  // case_block
29743
1.95k
        )
29744
4.28k
        {
29745
4.28k
            _res = case_block_var;
29746
4.28k
            if (_n == _children_capacity) {
29747
747
                _children_capacity *= 2;
29748
747
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29749
747
                if (!_new_children) {
29750
0
                    PyMem_Free(_children);
29751
0
                    p->error_indicator = 1;
29752
0
                    PyErr_NoMemory();
29753
0
                    p->level--;
29754
0
                    return NULL;
29755
0
                }
29756
747
                _children = _new_children;
29757
747
            }
29758
4.28k
            _children[_n++] = _res;
29759
4.28k
            _mark = p->mark;
29760
4.28k
        }
29761
1.95k
        p->mark = _mark;
29762
1.95k
        D(fprintf(stderr, "%*c%s _loop1_38[%d-%d]: %s failed!\n", p->level, ' ',
29763
1.95k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "case_block"));
29764
1.95k
    }
29765
1.95k
    if (_n == 0 || p->error_indicator) {
29766
1.18k
        PyMem_Free(_children);
29767
1.18k
        p->level--;
29768
1.18k
        return NULL;
29769
1.18k
    }
29770
774
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29771
774
    if (!_seq) {
29772
0
        PyMem_Free(_children);
29773
0
        p->error_indicator = 1;
29774
0
        PyErr_NoMemory();
29775
0
        p->level--;
29776
0
        return NULL;
29777
0
    }
29778
5.00k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29779
774
    PyMem_Free(_children);
29780
774
    p->level--;
29781
774
    return _seq;
29782
774
}
29783
29784
// _loop0_39: '|' closed_pattern
29785
static asdl_seq *
29786
_loop0_39_rule(Parser *p)
29787
164k
{
29788
164k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29789
0
        _Pypegen_stack_overflow(p);
29790
0
    }
29791
164k
    if (p->error_indicator) {
29792
31
        p->level--;
29793
31
        return NULL;
29794
31
    }
29795
164k
    void *_res = NULL;
29796
164k
    int _mark = p->mark;
29797
164k
    void **_children = PyMem_Malloc(sizeof(void *));
29798
164k
    if (!_children) {
29799
0
        p->error_indicator = 1;
29800
0
        PyErr_NoMemory();
29801
0
        p->level--;
29802
0
        return NULL;
29803
0
    }
29804
164k
    Py_ssize_t _children_capacity = 1;
29805
164k
    Py_ssize_t _n = 0;
29806
164k
    { // '|' closed_pattern
29807
164k
        if (p->error_indicator) {
29808
0
            p->level--;
29809
0
            return NULL;
29810
0
        }
29811
164k
        D(fprintf(stderr, "%*c> _loop0_39[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|' closed_pattern"));
29812
164k
        Token * _literal;
29813
164k
        pattern_ty elem;
29814
164k
        while (
29815
172k
            (_literal = _PyPegen_expect_token(p, 18))  // token='|'
29816
172k
            &&
29817
172k
            (elem = closed_pattern_rule(p))  // closed_pattern
29818
164k
        )
29819
8.73k
        {
29820
8.73k
            _res = elem;
29821
8.73k
            if (_res == NULL && PyErr_Occurred()) {
29822
0
                p->error_indicator = 1;
29823
0
                PyMem_Free(_children);
29824
0
                p->level--;
29825
0
                return NULL;
29826
0
            }
29827
8.73k
            if (_n == _children_capacity) {
29828
1.57k
                _children_capacity *= 2;
29829
1.57k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29830
1.57k
                if (!_new_children) {
29831
0
                    PyMem_Free(_children);
29832
0
                    p->error_indicator = 1;
29833
0
                    PyErr_NoMemory();
29834
0
                    p->level--;
29835
0
                    return NULL;
29836
0
                }
29837
1.57k
                _children = _new_children;
29838
1.57k
            }
29839
8.73k
            _children[_n++] = _res;
29840
8.73k
            _mark = p->mark;
29841
8.73k
        }
29842
164k
        p->mark = _mark;
29843
164k
        D(fprintf(stderr, "%*c%s _loop0_39[%d-%d]: %s failed!\n", p->level, ' ',
29844
164k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|' closed_pattern"));
29845
164k
    }
29846
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29847
164k
    if (!_seq) {
29848
0
        PyMem_Free(_children);
29849
0
        p->error_indicator = 1;
29850
0
        PyErr_NoMemory();
29851
0
        p->level--;
29852
0
        return NULL;
29853
0
    }
29854
172k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29855
164k
    PyMem_Free(_children);
29856
164k
    p->level--;
29857
164k
    return _seq;
29858
164k
}
29859
29860
// _gather_40: closed_pattern _loop0_39
29861
static asdl_seq *
29862
_gather_40_rule(Parser *p)
29863
259k
{
29864
259k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29865
0
        _Pypegen_stack_overflow(p);
29866
0
    }
29867
259k
    if (p->error_indicator) {
29868
0
        p->level--;
29869
0
        return NULL;
29870
0
    }
29871
259k
    asdl_seq * _res = NULL;
29872
259k
    int _mark = p->mark;
29873
259k
    { // closed_pattern _loop0_39
29874
259k
        if (p->error_indicator) {
29875
0
            p->level--;
29876
0
            return NULL;
29877
0
        }
29878
259k
        D(fprintf(stderr, "%*c> _gather_40[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "closed_pattern _loop0_39"));
29879
259k
        pattern_ty elem;
29880
259k
        asdl_seq * seq;
29881
259k
        if (
29882
259k
            (elem = closed_pattern_rule(p))  // closed_pattern
29883
259k
            &&
29884
259k
            (seq = _loop0_39_rule(p))  // _loop0_39
29885
259k
        )
29886
164k
        {
29887
164k
            D(fprintf(stderr, "%*c+ _gather_40[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "closed_pattern _loop0_39"));
29888
164k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
29889
164k
            goto done;
29890
164k
        }
29891
95.8k
        p->mark = _mark;
29892
95.8k
        D(fprintf(stderr, "%*c%s _gather_40[%d-%d]: %s failed!\n", p->level, ' ',
29893
95.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "closed_pattern _loop0_39"));
29894
95.8k
    }
29895
0
    _res = NULL;
29896
259k
  done:
29897
259k
    p->level--;
29898
259k
    return _res;
29899
95.8k
}
29900
29901
// _tmp_41: '+' | '-'
29902
static void *
29903
_tmp_41_rule(Parser *p)
29904
10.1k
{
29905
10.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29906
0
        _Pypegen_stack_overflow(p);
29907
0
    }
29908
10.1k
    if (p->error_indicator) {
29909
0
        p->level--;
29910
0
        return NULL;
29911
0
    }
29912
10.1k
    void * _res = NULL;
29913
10.1k
    int _mark = p->mark;
29914
10.1k
    { // '+'
29915
10.1k
        if (p->error_indicator) {
29916
0
            p->level--;
29917
0
            return NULL;
29918
0
        }
29919
10.1k
        D(fprintf(stderr, "%*c> _tmp_41[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+'"));
29920
10.1k
        Token * _literal;
29921
10.1k
        if (
29922
10.1k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
29923
10.1k
        )
29924
389
        {
29925
389
            D(fprintf(stderr, "%*c+ _tmp_41[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+'"));
29926
389
            _res = _literal;
29927
389
            goto done;
29928
389
        }
29929
9.76k
        p->mark = _mark;
29930
9.76k
        D(fprintf(stderr, "%*c%s _tmp_41[%d-%d]: %s failed!\n", p->level, ' ',
29931
9.76k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+'"));
29932
9.76k
    }
29933
0
    { // '-'
29934
9.76k
        if (p->error_indicator) {
29935
11
            p->level--;
29936
11
            return NULL;
29937
11
        }
29938
9.75k
        D(fprintf(stderr, "%*c> _tmp_41[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-'"));
29939
9.75k
        Token * _literal;
29940
9.75k
        if (
29941
9.75k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
29942
9.75k
        )
29943
678
        {
29944
678
            D(fprintf(stderr, "%*c+ _tmp_41[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-'"));
29945
678
            _res = _literal;
29946
678
            goto done;
29947
678
        }
29948
9.07k
        p->mark = _mark;
29949
9.07k
        D(fprintf(stderr, "%*c%s _tmp_41[%d-%d]: %s failed!\n", p->level, ' ',
29950
9.07k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-'"));
29951
9.07k
    }
29952
0
    _res = NULL;
29953
10.1k
  done:
29954
10.1k
    p->level--;
29955
10.1k
    return _res;
29956
9.07k
}
29957
29958
// _tmp_42: STRING | FSTRING_START | TSTRING_START
29959
static void *
29960
_tmp_42_rule(Parser *p)
29961
850k
{
29962
850k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29963
1
        _Pypegen_stack_overflow(p);
29964
1
    }
29965
850k
    if (p->error_indicator) {
29966
1
        p->level--;
29967
1
        return NULL;
29968
1
    }
29969
850k
    void * _res = NULL;
29970
850k
    int _mark = p->mark;
29971
850k
    { // STRING
29972
850k
        if (p->error_indicator) {
29973
0
            p->level--;
29974
0
            return NULL;
29975
0
        }
29976
850k
        D(fprintf(stderr, "%*c> _tmp_42[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING"));
29977
850k
        expr_ty string_var;
29978
850k
        if (
29979
850k
            (string_var = _PyPegen_string_token(p))  // STRING
29980
850k
        )
29981
91.5k
        {
29982
91.5k
            D(fprintf(stderr, "%*c+ _tmp_42[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING"));
29983
91.5k
            _res = string_var;
29984
91.5k
            goto done;
29985
91.5k
        }
29986
758k
        p->mark = _mark;
29987
758k
        D(fprintf(stderr, "%*c%s _tmp_42[%d-%d]: %s failed!\n", p->level, ' ',
29988
758k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING"));
29989
758k
    }
29990
0
    { // FSTRING_START
29991
758k
        if (p->error_indicator) {
29992
0
            p->level--;
29993
0
            return NULL;
29994
0
        }
29995
758k
        D(fprintf(stderr, "%*c> _tmp_42[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_START"));
29996
758k
        Token * fstring_start_var;
29997
758k
        if (
29998
758k
            (fstring_start_var = _PyPegen_expect_token(p, FSTRING_START))  // token='FSTRING_START'
29999
758k
        )
30000
21.2k
        {
30001
21.2k
            D(fprintf(stderr, "%*c+ _tmp_42[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_START"));
30002
21.2k
            _res = fstring_start_var;
30003
21.2k
            goto done;
30004
21.2k
        }
30005
737k
        p->mark = _mark;
30006
737k
        D(fprintf(stderr, "%*c%s _tmp_42[%d-%d]: %s failed!\n", p->level, ' ',
30007
737k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_START"));
30008
737k
    }
30009
0
    { // TSTRING_START
30010
737k
        if (p->error_indicator) {
30011
0
            p->level--;
30012
0
            return NULL;
30013
0
        }
30014
737k
        D(fprintf(stderr, "%*c> _tmp_42[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TSTRING_START"));
30015
737k
        Token * tstring_start_var;
30016
737k
        if (
30017
737k
            (tstring_start_var = _PyPegen_expect_token(p, TSTRING_START))  // token='TSTRING_START'
30018
737k
        )
30019
8.96k
        {
30020
8.96k
            D(fprintf(stderr, "%*c+ _tmp_42[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TSTRING_START"));
30021
8.96k
            _res = tstring_start_var;
30022
8.96k
            goto done;
30023
8.96k
        }
30024
728k
        p->mark = _mark;
30025
728k
        D(fprintf(stderr, "%*c%s _tmp_42[%d-%d]: %s failed!\n", p->level, ' ',
30026
728k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TSTRING_START"));
30027
728k
    }
30028
0
    _res = NULL;
30029
850k
  done:
30030
850k
    p->level--;
30031
850k
    return _res;
30032
728k
}
30033
30034
// _tmp_43: '.' | '(' | '='
30035
static void *
30036
_tmp_43_rule(Parser *p)
30037
31.7k
{
30038
31.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30039
0
        _Pypegen_stack_overflow(p);
30040
0
    }
30041
31.7k
    if (p->error_indicator) {
30042
0
        p->level--;
30043
0
        return NULL;
30044
0
    }
30045
31.7k
    void * _res = NULL;
30046
31.7k
    int _mark = p->mark;
30047
31.7k
    { // '.'
30048
31.7k
        if (p->error_indicator) {
30049
0
            p->level--;
30050
0
            return NULL;
30051
0
        }
30052
31.7k
        D(fprintf(stderr, "%*c> _tmp_43[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
30053
31.7k
        Token * _literal;
30054
31.7k
        if (
30055
31.7k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
30056
31.7k
        )
30057
515
        {
30058
515
            D(fprintf(stderr, "%*c+ _tmp_43[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
30059
515
            _res = _literal;
30060
515
            goto done;
30061
515
        }
30062
31.2k
        p->mark = _mark;
30063
31.2k
        D(fprintf(stderr, "%*c%s _tmp_43[%d-%d]: %s failed!\n", p->level, ' ',
30064
31.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
30065
31.2k
    }
30066
0
    { // '('
30067
31.2k
        if (p->error_indicator) {
30068
36
            p->level--;
30069
36
            return NULL;
30070
36
        }
30071
31.1k
        D(fprintf(stderr, "%*c> _tmp_43[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
30072
31.1k
        Token * _literal;
30073
31.1k
        if (
30074
31.1k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
30075
31.1k
        )
30076
10.2k
        {
30077
10.2k
            D(fprintf(stderr, "%*c+ _tmp_43[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
30078
10.2k
            _res = _literal;
30079
10.2k
            goto done;
30080
10.2k
        }
30081
20.8k
        p->mark = _mark;
30082
20.8k
        D(fprintf(stderr, "%*c%s _tmp_43[%d-%d]: %s failed!\n", p->level, ' ',
30083
20.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
30084
20.8k
    }
30085
0
    { // '='
30086
20.8k
        if (p->error_indicator) {
30087
0
            p->level--;
30088
0
            return NULL;
30089
0
        }
30090
20.8k
        D(fprintf(stderr, "%*c> _tmp_43[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
30091
20.8k
        Token * _literal;
30092
20.8k
        if (
30093
20.8k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
30094
20.8k
        )
30095
3.41k
        {
30096
3.41k
            D(fprintf(stderr, "%*c+ _tmp_43[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
30097
3.41k
            _res = _literal;
30098
3.41k
            goto done;
30099
3.41k
        }
30100
17.4k
        p->mark = _mark;
30101
17.4k
        D(fprintf(stderr, "%*c%s _tmp_43[%d-%d]: %s failed!\n", p->level, ' ',
30102
17.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
30103
17.4k
    }
30104
0
    _res = NULL;
30105
31.6k
  done:
30106
31.6k
    p->level--;
30107
31.6k
    return _res;
30108
17.4k
}
30109
30110
// _loop0_44: ',' maybe_star_pattern
30111
static asdl_seq *
30112
_loop0_44_rule(Parser *p)
30113
2.27k
{
30114
2.27k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30115
0
        _Pypegen_stack_overflow(p);
30116
0
    }
30117
2.27k
    if (p->error_indicator) {
30118
1
        p->level--;
30119
1
        return NULL;
30120
1
    }
30121
2.26k
    void *_res = NULL;
30122
2.26k
    int _mark = p->mark;
30123
2.26k
    void **_children = PyMem_Malloc(sizeof(void *));
30124
2.26k
    if (!_children) {
30125
0
        p->error_indicator = 1;
30126
0
        PyErr_NoMemory();
30127
0
        p->level--;
30128
0
        return NULL;
30129
0
    }
30130
2.26k
    Py_ssize_t _children_capacity = 1;
30131
2.26k
    Py_ssize_t _n = 0;
30132
2.26k
    { // ',' maybe_star_pattern
30133
2.26k
        if (p->error_indicator) {
30134
0
            p->level--;
30135
0
            return NULL;
30136
0
        }
30137
2.26k
        D(fprintf(stderr, "%*c> _loop0_44[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' maybe_star_pattern"));
30138
2.26k
        Token * _literal;
30139
2.26k
        pattern_ty elem;
30140
2.26k
        while (
30141
13.1k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30142
13.1k
            &&
30143
13.1k
            (elem = maybe_star_pattern_rule(p))  // maybe_star_pattern
30144
2.26k
        )
30145
10.8k
        {
30146
10.8k
            _res = elem;
30147
10.8k
            if (_res == NULL && PyErr_Occurred()) {
30148
0
                p->error_indicator = 1;
30149
0
                PyMem_Free(_children);
30150
0
                p->level--;
30151
0
                return NULL;
30152
0
            }
30153
10.8k
            if (_n == _children_capacity) {
30154
2.43k
                _children_capacity *= 2;
30155
2.43k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30156
2.43k
                if (!_new_children) {
30157
0
                    PyMem_Free(_children);
30158
0
                    p->error_indicator = 1;
30159
0
                    PyErr_NoMemory();
30160
0
                    p->level--;
30161
0
                    return NULL;
30162
0
                }
30163
2.43k
                _children = _new_children;
30164
2.43k
            }
30165
10.8k
            _children[_n++] = _res;
30166
10.8k
            _mark = p->mark;
30167
10.8k
        }
30168
2.26k
        p->mark = _mark;
30169
2.26k
        D(fprintf(stderr, "%*c%s _loop0_44[%d-%d]: %s failed!\n", p->level, ' ',
30170
2.26k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' maybe_star_pattern"));
30171
2.26k
    }
30172
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30173
2.26k
    if (!_seq) {
30174
0
        PyMem_Free(_children);
30175
0
        p->error_indicator = 1;
30176
0
        PyErr_NoMemory();
30177
0
        p->level--;
30178
0
        return NULL;
30179
0
    }
30180
13.1k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30181
2.26k
    PyMem_Free(_children);
30182
2.26k
    p->level--;
30183
2.26k
    return _seq;
30184
2.26k
}
30185
30186
// _gather_45: maybe_star_pattern _loop0_44
30187
static asdl_seq *
30188
_gather_45_rule(Parser *p)
30189
4.72k
{
30190
4.72k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30191
0
        _Pypegen_stack_overflow(p);
30192
0
    }
30193
4.72k
    if (p->error_indicator) {
30194
0
        p->level--;
30195
0
        return NULL;
30196
0
    }
30197
4.72k
    asdl_seq * _res = NULL;
30198
4.72k
    int _mark = p->mark;
30199
4.72k
    { // maybe_star_pattern _loop0_44
30200
4.72k
        if (p->error_indicator) {
30201
0
            p->level--;
30202
0
            return NULL;
30203
0
        }
30204
4.72k
        D(fprintf(stderr, "%*c> _gather_45[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern _loop0_44"));
30205
4.72k
        pattern_ty elem;
30206
4.72k
        asdl_seq * seq;
30207
4.72k
        if (
30208
4.72k
            (elem = maybe_star_pattern_rule(p))  // maybe_star_pattern
30209
4.72k
            &&
30210
4.72k
            (seq = _loop0_44_rule(p))  // _loop0_44
30211
4.72k
        )
30212
2.26k
        {
30213
2.26k
            D(fprintf(stderr, "%*c+ _gather_45[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern _loop0_44"));
30214
2.26k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30215
2.26k
            goto done;
30216
2.26k
        }
30217
2.45k
        p->mark = _mark;
30218
2.45k
        D(fprintf(stderr, "%*c%s _gather_45[%d-%d]: %s failed!\n", p->level, ' ',
30219
2.45k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "maybe_star_pattern _loop0_44"));
30220
2.45k
    }
30221
0
    _res = NULL;
30222
4.72k
  done:
30223
4.72k
    p->level--;
30224
4.72k
    return _res;
30225
2.45k
}
30226
30227
// _loop0_46: ',' key_value_pattern
30228
static asdl_seq *
30229
_loop0_46_rule(Parser *p)
30230
3.50k
{
30231
3.50k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30232
0
        _Pypegen_stack_overflow(p);
30233
0
    }
30234
3.50k
    if (p->error_indicator) {
30235
1
        p->level--;
30236
1
        return NULL;
30237
1
    }
30238
3.50k
    void *_res = NULL;
30239
3.50k
    int _mark = p->mark;
30240
3.50k
    void **_children = PyMem_Malloc(sizeof(void *));
30241
3.50k
    if (!_children) {
30242
0
        p->error_indicator = 1;
30243
0
        PyErr_NoMemory();
30244
0
        p->level--;
30245
0
        return NULL;
30246
0
    }
30247
3.50k
    Py_ssize_t _children_capacity = 1;
30248
3.50k
    Py_ssize_t _n = 0;
30249
3.50k
    { // ',' key_value_pattern
30250
3.50k
        if (p->error_indicator) {
30251
0
            p->level--;
30252
0
            return NULL;
30253
0
        }
30254
3.50k
        D(fprintf(stderr, "%*c> _loop0_46[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' key_value_pattern"));
30255
3.50k
        Token * _literal;
30256
3.50k
        KeyPatternPair* elem;
30257
3.50k
        while (
30258
5.49k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30259
5.49k
            &&
30260
5.49k
            (elem = key_value_pattern_rule(p))  // key_value_pattern
30261
3.50k
        )
30262
1.98k
        {
30263
1.98k
            _res = elem;
30264
1.98k
            if (_res == NULL && PyErr_Occurred()) {
30265
0
                p->error_indicator = 1;
30266
0
                PyMem_Free(_children);
30267
0
                p->level--;
30268
0
                return NULL;
30269
0
            }
30270
1.98k
            if (_n == _children_capacity) {
30271
372
                _children_capacity *= 2;
30272
372
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30273
372
                if (!_new_children) {
30274
0
                    PyMem_Free(_children);
30275
0
                    p->error_indicator = 1;
30276
0
                    PyErr_NoMemory();
30277
0
                    p->level--;
30278
0
                    return NULL;
30279
0
                }
30280
372
                _children = _new_children;
30281
372
            }
30282
1.98k
            _children[_n++] = _res;
30283
1.98k
            _mark = p->mark;
30284
1.98k
        }
30285
3.50k
        p->mark = _mark;
30286
3.50k
        D(fprintf(stderr, "%*c%s _loop0_46[%d-%d]: %s failed!\n", p->level, ' ',
30287
3.50k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' key_value_pattern"));
30288
3.50k
    }
30289
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30290
3.50k
    if (!_seq) {
30291
0
        PyMem_Free(_children);
30292
0
        p->error_indicator = 1;
30293
0
        PyErr_NoMemory();
30294
0
        p->level--;
30295
0
        return NULL;
30296
0
    }
30297
5.49k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30298
3.50k
    PyMem_Free(_children);
30299
3.50k
    p->level--;
30300
3.50k
    return _seq;
30301
3.50k
}
30302
30303
// _gather_47: key_value_pattern _loop0_46
30304
static asdl_seq *
30305
_gather_47_rule(Parser *p)
30306
5.20k
{
30307
5.20k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30308
0
        _Pypegen_stack_overflow(p);
30309
0
    }
30310
5.20k
    if (p->error_indicator) {
30311
0
        p->level--;
30312
0
        return NULL;
30313
0
    }
30314
5.20k
    asdl_seq * _res = NULL;
30315
5.20k
    int _mark = p->mark;
30316
5.20k
    { // key_value_pattern _loop0_46
30317
5.20k
        if (p->error_indicator) {
30318
0
            p->level--;
30319
0
            return NULL;
30320
0
        }
30321
5.20k
        D(fprintf(stderr, "%*c> _gather_47[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "key_value_pattern _loop0_46"));
30322
5.20k
        KeyPatternPair* elem;
30323
5.20k
        asdl_seq * seq;
30324
5.20k
        if (
30325
5.20k
            (elem = key_value_pattern_rule(p))  // key_value_pattern
30326
5.20k
            &&
30327
5.20k
            (seq = _loop0_46_rule(p))  // _loop0_46
30328
5.20k
        )
30329
3.50k
        {
30330
3.50k
            D(fprintf(stderr, "%*c+ _gather_47[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "key_value_pattern _loop0_46"));
30331
3.50k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30332
3.50k
            goto done;
30333
3.50k
        }
30334
1.70k
        p->mark = _mark;
30335
1.70k
        D(fprintf(stderr, "%*c%s _gather_47[%d-%d]: %s failed!\n", p->level, ' ',
30336
1.70k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "key_value_pattern _loop0_46"));
30337
1.70k
    }
30338
0
    _res = NULL;
30339
5.20k
  done:
30340
5.20k
    p->level--;
30341
5.20k
    return _res;
30342
1.70k
}
30343
30344
// _tmp_48: literal_expr | attr
30345
static void *
30346
_tmp_48_rule(Parser *p)
30347
9.25k
{
30348
9.25k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30349
0
        _Pypegen_stack_overflow(p);
30350
0
    }
30351
9.25k
    if (p->error_indicator) {
30352
0
        p->level--;
30353
0
        return NULL;
30354
0
    }
30355
9.25k
    void * _res = NULL;
30356
9.25k
    int _mark = p->mark;
30357
9.25k
    { // literal_expr
30358
9.25k
        if (p->error_indicator) {
30359
0
            p->level--;
30360
0
            return NULL;
30361
0
        }
30362
9.25k
        D(fprintf(stderr, "%*c> _tmp_48[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "literal_expr"));
30363
9.25k
        expr_ty literal_expr_var;
30364
9.25k
        if (
30365
9.25k
            (literal_expr_var = literal_expr_rule(p))  // literal_expr
30366
9.25k
        )
30367
8.48k
        {
30368
8.48k
            D(fprintf(stderr, "%*c+ _tmp_48[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "literal_expr"));
30369
8.48k
            _res = literal_expr_var;
30370
8.48k
            goto done;
30371
8.48k
        }
30372
767
        p->mark = _mark;
30373
767
        D(fprintf(stderr, "%*c%s _tmp_48[%d-%d]: %s failed!\n", p->level, ' ',
30374
767
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "literal_expr"));
30375
767
    }
30376
0
    { // attr
30377
767
        if (p->error_indicator) {
30378
20
            p->level--;
30379
20
            return NULL;
30380
20
        }
30381
747
        D(fprintf(stderr, "%*c> _tmp_48[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr"));
30382
747
        expr_ty attr_var;
30383
747
        if (
30384
747
            (attr_var = attr_rule(p))  // attr
30385
747
        )
30386
18
        {
30387
18
            D(fprintf(stderr, "%*c+ _tmp_48[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr"));
30388
18
            _res = attr_var;
30389
18
            goto done;
30390
18
        }
30391
729
        p->mark = _mark;
30392
729
        D(fprintf(stderr, "%*c%s _tmp_48[%d-%d]: %s failed!\n", p->level, ' ',
30393
729
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr"));
30394
729
    }
30395
0
    _res = NULL;
30396
9.23k
  done:
30397
9.23k
    p->level--;
30398
9.23k
    return _res;
30399
729
}
30400
30401
// _loop0_49: ',' pattern
30402
static asdl_seq *
30403
_loop0_49_rule(Parser *p)
30404
11.2k
{
30405
11.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30406
0
        _Pypegen_stack_overflow(p);
30407
0
    }
30408
11.2k
    if (p->error_indicator) {
30409
1
        p->level--;
30410
1
        return NULL;
30411
1
    }
30412
11.2k
    void *_res = NULL;
30413
11.2k
    int _mark = p->mark;
30414
11.2k
    void **_children = PyMem_Malloc(sizeof(void *));
30415
11.2k
    if (!_children) {
30416
0
        p->error_indicator = 1;
30417
0
        PyErr_NoMemory();
30418
0
        p->level--;
30419
0
        return NULL;
30420
0
    }
30421
11.2k
    Py_ssize_t _children_capacity = 1;
30422
11.2k
    Py_ssize_t _n = 0;
30423
11.2k
    { // ',' pattern
30424
11.2k
        if (p->error_indicator) {
30425
0
            p->level--;
30426
0
            return NULL;
30427
0
        }
30428
11.2k
        D(fprintf(stderr, "%*c> _loop0_49[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' pattern"));
30429
11.2k
        Token * _literal;
30430
11.2k
        pattern_ty elem;
30431
11.2k
        while (
30432
16.0k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30433
16.0k
            &&
30434
16.0k
            (elem = pattern_rule(p))  // pattern
30435
11.2k
        )
30436
4.84k
        {
30437
4.84k
            _res = elem;
30438
4.84k
            if (_res == NULL && PyErr_Occurred()) {
30439
0
                p->error_indicator = 1;
30440
0
                PyMem_Free(_children);
30441
0
                p->level--;
30442
0
                return NULL;
30443
0
            }
30444
4.84k
            if (_n == _children_capacity) {
30445
970
                _children_capacity *= 2;
30446
970
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30447
970
                if (!_new_children) {
30448
0
                    PyMem_Free(_children);
30449
0
                    p->error_indicator = 1;
30450
0
                    PyErr_NoMemory();
30451
0
                    p->level--;
30452
0
                    return NULL;
30453
0
                }
30454
970
                _children = _new_children;
30455
970
            }
30456
4.84k
            _children[_n++] = _res;
30457
4.84k
            _mark = p->mark;
30458
4.84k
        }
30459
11.2k
        p->mark = _mark;
30460
11.2k
        D(fprintf(stderr, "%*c%s _loop0_49[%d-%d]: %s failed!\n", p->level, ' ',
30461
11.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' pattern"));
30462
11.2k
    }
30463
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30464
11.2k
    if (!_seq) {
30465
0
        PyMem_Free(_children);
30466
0
        p->error_indicator = 1;
30467
0
        PyErr_NoMemory();
30468
0
        p->level--;
30469
0
        return NULL;
30470
0
    }
30471
16.0k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30472
11.2k
    PyMem_Free(_children);
30473
11.2k
    p->level--;
30474
11.2k
    return _seq;
30475
11.2k
}
30476
30477
// _gather_50: pattern _loop0_49
30478
static asdl_seq *
30479
_gather_50_rule(Parser *p)
30480
20.2k
{
30481
20.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30482
0
        _Pypegen_stack_overflow(p);
30483
0
    }
30484
20.2k
    if (p->error_indicator) {
30485
0
        p->level--;
30486
0
        return NULL;
30487
0
    }
30488
20.2k
    asdl_seq * _res = NULL;
30489
20.2k
    int _mark = p->mark;
30490
20.2k
    { // pattern _loop0_49
30491
20.2k
        if (p->error_indicator) {
30492
0
            p->level--;
30493
0
            return NULL;
30494
0
        }
30495
20.2k
        D(fprintf(stderr, "%*c> _gather_50[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern _loop0_49"));
30496
20.2k
        pattern_ty elem;
30497
20.2k
        asdl_seq * seq;
30498
20.2k
        if (
30499
20.2k
            (elem = pattern_rule(p))  // pattern
30500
20.2k
            &&
30501
20.2k
            (seq = _loop0_49_rule(p))  // _loop0_49
30502
20.2k
        )
30503
11.2k
        {
30504
11.2k
            D(fprintf(stderr, "%*c+ _gather_50[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern _loop0_49"));
30505
11.2k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30506
11.2k
            goto done;
30507
11.2k
        }
30508
8.98k
        p->mark = _mark;
30509
8.98k
        D(fprintf(stderr, "%*c%s _gather_50[%d-%d]: %s failed!\n", p->level, ' ',
30510
8.98k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern _loop0_49"));
30511
8.98k
    }
30512
0
    _res = NULL;
30513
20.2k
  done:
30514
20.2k
    p->level--;
30515
20.2k
    return _res;
30516
8.98k
}
30517
30518
// _loop0_51: ',' keyword_pattern
30519
static asdl_seq *
30520
_loop0_51_rule(Parser *p)
30521
4.67k
{
30522
4.67k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30523
0
        _Pypegen_stack_overflow(p);
30524
0
    }
30525
4.67k
    if (p->error_indicator) {
30526
1
        p->level--;
30527
1
        return NULL;
30528
1
    }
30529
4.67k
    void *_res = NULL;
30530
4.67k
    int _mark = p->mark;
30531
4.67k
    void **_children = PyMem_Malloc(sizeof(void *));
30532
4.67k
    if (!_children) {
30533
0
        p->error_indicator = 1;
30534
0
        PyErr_NoMemory();
30535
0
        p->level--;
30536
0
        return NULL;
30537
0
    }
30538
4.67k
    Py_ssize_t _children_capacity = 1;
30539
4.67k
    Py_ssize_t _n = 0;
30540
4.67k
    { // ',' keyword_pattern
30541
4.67k
        if (p->error_indicator) {
30542
0
            p->level--;
30543
0
            return NULL;
30544
0
        }
30545
4.67k
        D(fprintf(stderr, "%*c> _loop0_51[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' keyword_pattern"));
30546
4.67k
        Token * _literal;
30547
4.67k
        KeyPatternPair* elem;
30548
4.67k
        while (
30549
6.49k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30550
6.49k
            &&
30551
6.49k
            (elem = keyword_pattern_rule(p))  // keyword_pattern
30552
4.67k
        )
30553
1.82k
        {
30554
1.82k
            _res = elem;
30555
1.82k
            if (_res == NULL && PyErr_Occurred()) {
30556
0
                p->error_indicator = 1;
30557
0
                PyMem_Free(_children);
30558
0
                p->level--;
30559
0
                return NULL;
30560
0
            }
30561
1.82k
            if (_n == _children_capacity) {
30562
795
                _children_capacity *= 2;
30563
795
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30564
795
                if (!_new_children) {
30565
0
                    PyMem_Free(_children);
30566
0
                    p->error_indicator = 1;
30567
0
                    PyErr_NoMemory();
30568
0
                    p->level--;
30569
0
                    return NULL;
30570
0
                }
30571
795
                _children = _new_children;
30572
795
            }
30573
1.82k
            _children[_n++] = _res;
30574
1.82k
            _mark = p->mark;
30575
1.82k
        }
30576
4.67k
        p->mark = _mark;
30577
4.67k
        D(fprintf(stderr, "%*c%s _loop0_51[%d-%d]: %s failed!\n", p->level, ' ',
30578
4.67k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' keyword_pattern"));
30579
4.67k
    }
30580
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30581
4.67k
    if (!_seq) {
30582
0
        PyMem_Free(_children);
30583
0
        p->error_indicator = 1;
30584
0
        PyErr_NoMemory();
30585
0
        p->level--;
30586
0
        return NULL;
30587
0
    }
30588
6.49k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30589
4.67k
    PyMem_Free(_children);
30590
4.67k
    p->level--;
30591
4.67k
    return _seq;
30592
4.67k
}
30593
30594
// _gather_52: keyword_pattern _loop0_51
30595
static asdl_seq *
30596
_gather_52_rule(Parser *p)
30597
13.0k
{
30598
13.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30599
0
        _Pypegen_stack_overflow(p);
30600
0
    }
30601
13.0k
    if (p->error_indicator) {
30602
0
        p->level--;
30603
0
        return NULL;
30604
0
    }
30605
13.0k
    asdl_seq * _res = NULL;
30606
13.0k
    int _mark = p->mark;
30607
13.0k
    { // keyword_pattern _loop0_51
30608
13.0k
        if (p->error_indicator) {
30609
0
            p->level--;
30610
0
            return NULL;
30611
0
        }
30612
13.0k
        D(fprintf(stderr, "%*c> _gather_52[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "keyword_pattern _loop0_51"));
30613
13.0k
        KeyPatternPair* elem;
30614
13.0k
        asdl_seq * seq;
30615
13.0k
        if (
30616
13.0k
            (elem = keyword_pattern_rule(p))  // keyword_pattern
30617
13.0k
            &&
30618
13.0k
            (seq = _loop0_51_rule(p))  // _loop0_51
30619
13.0k
        )
30620
4.67k
        {
30621
4.67k
            D(fprintf(stderr, "%*c+ _gather_52[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "keyword_pattern _loop0_51"));
30622
4.67k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30623
4.67k
            goto done;
30624
4.67k
        }
30625
8.42k
        p->mark = _mark;
30626
8.42k
        D(fprintf(stderr, "%*c%s _gather_52[%d-%d]: %s failed!\n", p->level, ' ',
30627
8.42k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "keyword_pattern _loop0_51"));
30628
8.42k
    }
30629
0
    _res = NULL;
30630
13.0k
  done:
30631
13.0k
    p->level--;
30632
13.0k
    return _res;
30633
8.42k
}
30634
30635
// _loop0_53: ',' type_param
30636
static asdl_seq *
30637
_loop0_53_rule(Parser *p)
30638
1.54k
{
30639
1.54k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30640
0
        _Pypegen_stack_overflow(p);
30641
0
    }
30642
1.54k
    if (p->error_indicator) {
30643
0
        p->level--;
30644
0
        return NULL;
30645
0
    }
30646
1.54k
    void *_res = NULL;
30647
1.54k
    int _mark = p->mark;
30648
1.54k
    void **_children = PyMem_Malloc(sizeof(void *));
30649
1.54k
    if (!_children) {
30650
0
        p->error_indicator = 1;
30651
0
        PyErr_NoMemory();
30652
0
        p->level--;
30653
0
        return NULL;
30654
0
    }
30655
1.54k
    Py_ssize_t _children_capacity = 1;
30656
1.54k
    Py_ssize_t _n = 0;
30657
1.54k
    { // ',' type_param
30658
1.54k
        if (p->error_indicator) {
30659
0
            p->level--;
30660
0
            return NULL;
30661
0
        }
30662
1.54k
        D(fprintf(stderr, "%*c> _loop0_53[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' type_param"));
30663
1.54k
        Token * _literal;
30664
1.54k
        type_param_ty elem;
30665
1.54k
        while (
30666
9.74k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30667
9.74k
            &&
30668
9.74k
            (elem = type_param_rule(p))  // type_param
30669
1.54k
        )
30670
8.19k
        {
30671
8.19k
            _res = elem;
30672
8.19k
            if (_res == NULL && PyErr_Occurred()) {
30673
0
                p->error_indicator = 1;
30674
0
                PyMem_Free(_children);
30675
0
                p->level--;
30676
0
                return NULL;
30677
0
            }
30678
8.19k
            if (_n == _children_capacity) {
30679
945
                _children_capacity *= 2;
30680
945
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30681
945
                if (!_new_children) {
30682
0
                    PyMem_Free(_children);
30683
0
                    p->error_indicator = 1;
30684
0
                    PyErr_NoMemory();
30685
0
                    p->level--;
30686
0
                    return NULL;
30687
0
                }
30688
945
                _children = _new_children;
30689
945
            }
30690
8.19k
            _children[_n++] = _res;
30691
8.19k
            _mark = p->mark;
30692
8.19k
        }
30693
1.54k
        p->mark = _mark;
30694
1.54k
        D(fprintf(stderr, "%*c%s _loop0_53[%d-%d]: %s failed!\n", p->level, ' ',
30695
1.54k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' type_param"));
30696
1.54k
    }
30697
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30698
1.54k
    if (!_seq) {
30699
0
        PyMem_Free(_children);
30700
0
        p->error_indicator = 1;
30701
0
        PyErr_NoMemory();
30702
0
        p->level--;
30703
0
        return NULL;
30704
0
    }
30705
9.74k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30706
1.54k
    PyMem_Free(_children);
30707
1.54k
    p->level--;
30708
1.54k
    return _seq;
30709
1.54k
}
30710
30711
// _gather_54: type_param _loop0_53
30712
static asdl_seq *
30713
_gather_54_rule(Parser *p)
30714
1.58k
{
30715
1.58k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30716
0
        _Pypegen_stack_overflow(p);
30717
0
    }
30718
1.58k
    if (p->error_indicator) {
30719
0
        p->level--;
30720
0
        return NULL;
30721
0
    }
30722
1.58k
    asdl_seq * _res = NULL;
30723
1.58k
    int _mark = p->mark;
30724
1.58k
    { // type_param _loop0_53
30725
1.58k
        if (p->error_indicator) {
30726
0
            p->level--;
30727
0
            return NULL;
30728
0
        }
30729
1.58k
        D(fprintf(stderr, "%*c> _gather_54[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "type_param _loop0_53"));
30730
1.58k
        type_param_ty elem;
30731
1.58k
        asdl_seq * seq;
30732
1.58k
        if (
30733
1.58k
            (elem = type_param_rule(p))  // type_param
30734
1.58k
            &&
30735
1.58k
            (seq = _loop0_53_rule(p))  // _loop0_53
30736
1.58k
        )
30737
1.54k
        {
30738
1.54k
            D(fprintf(stderr, "%*c+ _gather_54[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "type_param _loop0_53"));
30739
1.54k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30740
1.54k
            goto done;
30741
1.54k
        }
30742
40
        p->mark = _mark;
30743
40
        D(fprintf(stderr, "%*c%s _gather_54[%d-%d]: %s failed!\n", p->level, ' ',
30744
40
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "type_param _loop0_53"));
30745
40
    }
30746
0
    _res = NULL;
30747
1.58k
  done:
30748
1.58k
    p->level--;
30749
1.58k
    return _res;
30750
40
}
30751
30752
// _loop1_55: (',' expression)
30753
static asdl_seq *
30754
_loop1_55_rule(Parser *p)
30755
4.30k
{
30756
4.30k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30757
0
        _Pypegen_stack_overflow(p);
30758
0
    }
30759
4.30k
    if (p->error_indicator) {
30760
0
        p->level--;
30761
0
        return NULL;
30762
0
    }
30763
4.30k
    void *_res = NULL;
30764
4.30k
    int _mark = p->mark;
30765
4.30k
    void **_children = PyMem_Malloc(sizeof(void *));
30766
4.30k
    if (!_children) {
30767
0
        p->error_indicator = 1;
30768
0
        PyErr_NoMemory();
30769
0
        p->level--;
30770
0
        return NULL;
30771
0
    }
30772
4.30k
    Py_ssize_t _children_capacity = 1;
30773
4.30k
    Py_ssize_t _n = 0;
30774
4.30k
    { // (',' expression)
30775
4.30k
        if (p->error_indicator) {
30776
0
            p->level--;
30777
0
            return NULL;
30778
0
        }
30779
4.30k
        D(fprintf(stderr, "%*c> _loop1_55[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' expression)"));
30780
4.30k
        void *_tmp_16_var;
30781
4.30k
        while (
30782
6.35k
            (_tmp_16_var = _tmp_16_rule(p))  // ',' expression
30783
4.30k
        )
30784
2.04k
        {
30785
2.04k
            _res = _tmp_16_var;
30786
2.04k
            if (_n == _children_capacity) {
30787
379
                _children_capacity *= 2;
30788
379
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30789
379
                if (!_new_children) {
30790
0
                    PyMem_Free(_children);
30791
0
                    p->error_indicator = 1;
30792
0
                    PyErr_NoMemory();
30793
0
                    p->level--;
30794
0
                    return NULL;
30795
0
                }
30796
379
                _children = _new_children;
30797
379
            }
30798
2.04k
            _children[_n++] = _res;
30799
2.04k
            _mark = p->mark;
30800
2.04k
        }
30801
4.30k
        p->mark = _mark;
30802
4.30k
        D(fprintf(stderr, "%*c%s _loop1_55[%d-%d]: %s failed!\n", p->level, ' ',
30803
4.30k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' expression)"));
30804
4.30k
    }
30805
4.30k
    if (_n == 0 || p->error_indicator) {
30806
3.01k
        PyMem_Free(_children);
30807
3.01k
        p->level--;
30808
3.01k
        return NULL;
30809
3.01k
    }
30810
1.29k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30811
1.29k
    if (!_seq) {
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
3.33k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30819
1.29k
    PyMem_Free(_children);
30820
1.29k
    p->level--;
30821
1.29k
    return _seq;
30822
1.29k
}
30823
30824
// _loop1_56: (',' star_expression)
30825
static asdl_seq *
30826
_loop1_56_rule(Parser *p)
30827
216k
{
30828
216k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30829
0
        _Pypegen_stack_overflow(p);
30830
0
    }
30831
216k
    if (p->error_indicator) {
30832
0
        p->level--;
30833
0
        return NULL;
30834
0
    }
30835
216k
    void *_res = NULL;
30836
216k
    int _mark = p->mark;
30837
216k
    void **_children = PyMem_Malloc(sizeof(void *));
30838
216k
    if (!_children) {
30839
0
        p->error_indicator = 1;
30840
0
        PyErr_NoMemory();
30841
0
        p->level--;
30842
0
        return NULL;
30843
0
    }
30844
216k
    Py_ssize_t _children_capacity = 1;
30845
216k
    Py_ssize_t _n = 0;
30846
216k
    { // (',' star_expression)
30847
216k
        if (p->error_indicator) {
30848
0
            p->level--;
30849
0
            return NULL;
30850
0
        }
30851
216k
        D(fprintf(stderr, "%*c> _loop1_56[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_expression)"));
30852
216k
        void *_tmp_159_var;
30853
216k
        while (
30854
231k
            (_tmp_159_var = _tmp_159_rule(p))  // ',' star_expression
30855
216k
        )
30856
15.1k
        {
30857
15.1k
            _res = _tmp_159_var;
30858
15.1k
            if (_n == _children_capacity) {
30859
2.86k
                _children_capacity *= 2;
30860
2.86k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30861
2.86k
                if (!_new_children) {
30862
0
                    PyMem_Free(_children);
30863
0
                    p->error_indicator = 1;
30864
0
                    PyErr_NoMemory();
30865
0
                    p->level--;
30866
0
                    return NULL;
30867
0
                }
30868
2.86k
                _children = _new_children;
30869
2.86k
            }
30870
15.1k
            _children[_n++] = _res;
30871
15.1k
            _mark = p->mark;
30872
15.1k
        }
30873
216k
        p->mark = _mark;
30874
216k
        D(fprintf(stderr, "%*c%s _loop1_56[%d-%d]: %s failed!\n", p->level, ' ',
30875
216k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_expression)"));
30876
216k
    }
30877
216k
    if (_n == 0 || p->error_indicator) {
30878
210k
        PyMem_Free(_children);
30879
210k
        p->level--;
30880
210k
        return NULL;
30881
210k
    }
30882
5.78k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30883
5.78k
    if (!_seq) {
30884
0
        PyMem_Free(_children);
30885
0
        p->error_indicator = 1;
30886
0
        PyErr_NoMemory();
30887
0
        p->level--;
30888
0
        return NULL;
30889
0
    }
30890
20.5k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30891
5.78k
    PyMem_Free(_children);
30892
5.78k
    p->level--;
30893
5.78k
    return _seq;
30894
5.78k
}
30895
30896
// _loop0_57: ',' star_named_expression
30897
static asdl_seq *
30898
_loop0_57_rule(Parser *p)
30899
42.2k
{
30900
42.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30901
0
        _Pypegen_stack_overflow(p);
30902
0
    }
30903
42.2k
    if (p->error_indicator) {
30904
0
        p->level--;
30905
0
        return NULL;
30906
0
    }
30907
42.2k
    void *_res = NULL;
30908
42.2k
    int _mark = p->mark;
30909
42.2k
    void **_children = PyMem_Malloc(sizeof(void *));
30910
42.2k
    if (!_children) {
30911
0
        p->error_indicator = 1;
30912
0
        PyErr_NoMemory();
30913
0
        p->level--;
30914
0
        return NULL;
30915
0
    }
30916
42.2k
    Py_ssize_t _children_capacity = 1;
30917
42.2k
    Py_ssize_t _n = 0;
30918
42.2k
    { // ',' star_named_expression
30919
42.2k
        if (p->error_indicator) {
30920
0
            p->level--;
30921
0
            return NULL;
30922
0
        }
30923
42.2k
        D(fprintf(stderr, "%*c> _loop0_57[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_named_expression"));
30924
42.2k
        Token * _literal;
30925
42.2k
        expr_ty elem;
30926
42.2k
        while (
30927
99.7k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30928
99.7k
            &&
30929
99.7k
            (elem = star_named_expression_rule(p))  // star_named_expression
30930
42.2k
        )
30931
57.5k
        {
30932
57.5k
            _res = elem;
30933
57.5k
            if (_res == NULL && PyErr_Occurred()) {
30934
0
                p->error_indicator = 1;
30935
0
                PyMem_Free(_children);
30936
0
                p->level--;
30937
0
                return NULL;
30938
0
            }
30939
57.5k
            if (_n == _children_capacity) {
30940
9.25k
                _children_capacity *= 2;
30941
9.25k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30942
9.25k
                if (!_new_children) {
30943
0
                    PyMem_Free(_children);
30944
0
                    p->error_indicator = 1;
30945
0
                    PyErr_NoMemory();
30946
0
                    p->level--;
30947
0
                    return NULL;
30948
0
                }
30949
9.25k
                _children = _new_children;
30950
9.25k
            }
30951
57.5k
            _children[_n++] = _res;
30952
57.5k
            _mark = p->mark;
30953
57.5k
        }
30954
42.2k
        p->mark = _mark;
30955
42.2k
        D(fprintf(stderr, "%*c%s _loop0_57[%d-%d]: %s failed!\n", p->level, ' ',
30956
42.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_named_expression"));
30957
42.2k
    }
30958
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30959
42.2k
    if (!_seq) {
30960
0
        PyMem_Free(_children);
30961
0
        p->error_indicator = 1;
30962
0
        PyErr_NoMemory();
30963
0
        p->level--;
30964
0
        return NULL;
30965
0
    }
30966
99.7k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30967
42.2k
    PyMem_Free(_children);
30968
42.2k
    p->level--;
30969
42.2k
    return _seq;
30970
42.2k
}
30971
30972
// _gather_58: star_named_expression _loop0_57
30973
static asdl_seq *
30974
_gather_58_rule(Parser *p)
30975
104k
{
30976
104k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30977
1
        _Pypegen_stack_overflow(p);
30978
1
    }
30979
104k
    if (p->error_indicator) {
30980
1
        p->level--;
30981
1
        return NULL;
30982
1
    }
30983
104k
    asdl_seq * _res = NULL;
30984
104k
    int _mark = p->mark;
30985
104k
    { // star_named_expression _loop0_57
30986
104k
        if (p->error_indicator) {
30987
0
            p->level--;
30988
0
            return NULL;
30989
0
        }
30990
104k
        D(fprintf(stderr, "%*c> _gather_58[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_57"));
30991
104k
        expr_ty elem;
30992
104k
        asdl_seq * seq;
30993
104k
        if (
30994
104k
            (elem = star_named_expression_rule(p))  // star_named_expression
30995
104k
            &&
30996
104k
            (seq = _loop0_57_rule(p))  // _loop0_57
30997
104k
        )
30998
42.2k
        {
30999
42.2k
            D(fprintf(stderr, "%*c+ _gather_58[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_57"));
31000
42.2k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
31001
42.2k
            goto done;
31002
42.2k
        }
31003
62.6k
        p->mark = _mark;
31004
62.6k
        D(fprintf(stderr, "%*c%s _gather_58[%d-%d]: %s failed!\n", p->level, ' ',
31005
62.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression _loop0_57"));
31006
62.6k
    }
31007
0
    _res = NULL;
31008
104k
  done:
31009
104k
    p->level--;
31010
104k
    return _res;
31011
62.6k
}
31012
31013
// _loop1_59: ('or' conjunction)
31014
static asdl_seq *
31015
_loop1_59_rule(Parser *p)
31016
388k
{
31017
388k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31018
0
        _Pypegen_stack_overflow(p);
31019
0
    }
31020
388k
    if (p->error_indicator) {
31021
0
        p->level--;
31022
0
        return NULL;
31023
0
    }
31024
388k
    void *_res = NULL;
31025
388k
    int _mark = p->mark;
31026
388k
    void **_children = PyMem_Malloc(sizeof(void *));
31027
388k
    if (!_children) {
31028
0
        p->error_indicator = 1;
31029
0
        PyErr_NoMemory();
31030
0
        p->level--;
31031
0
        return NULL;
31032
0
    }
31033
388k
    Py_ssize_t _children_capacity = 1;
31034
388k
    Py_ssize_t _n = 0;
31035
388k
    { // ('or' conjunction)
31036
388k
        if (p->error_indicator) {
31037
0
            p->level--;
31038
0
            return NULL;
31039
0
        }
31040
388k
        D(fprintf(stderr, "%*c> _loop1_59[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('or' conjunction)"));
31041
388k
        void *_tmp_160_var;
31042
388k
        while (
31043
392k
            (_tmp_160_var = _tmp_160_rule(p))  // 'or' conjunction
31044
388k
        )
31045
4.01k
        {
31046
4.01k
            _res = _tmp_160_var;
31047
4.01k
            if (_n == _children_capacity) {
31048
636
                _children_capacity *= 2;
31049
636
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31050
636
                if (!_new_children) {
31051
0
                    PyMem_Free(_children);
31052
0
                    p->error_indicator = 1;
31053
0
                    PyErr_NoMemory();
31054
0
                    p->level--;
31055
0
                    return NULL;
31056
0
                }
31057
636
                _children = _new_children;
31058
636
            }
31059
4.01k
            _children[_n++] = _res;
31060
4.01k
            _mark = p->mark;
31061
4.01k
        }
31062
388k
        p->mark = _mark;
31063
388k
        D(fprintf(stderr, "%*c%s _loop1_59[%d-%d]: %s failed!\n", p->level, ' ',
31064
388k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('or' conjunction)"));
31065
388k
    }
31066
388k
    if (_n == 0 || p->error_indicator) {
31067
387k
        PyMem_Free(_children);
31068
387k
        p->level--;
31069
387k
        return NULL;
31070
387k
    }
31071
1.55k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31072
1.55k
    if (!_seq) {
31073
0
        PyMem_Free(_children);
31074
0
        p->error_indicator = 1;
31075
0
        PyErr_NoMemory();
31076
0
        p->level--;
31077
0
        return NULL;
31078
0
    }
31079
5.41k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31080
1.55k
    PyMem_Free(_children);
31081
1.55k
    p->level--;
31082
1.55k
    return _seq;
31083
1.55k
}
31084
31085
// _loop1_60: ('and' inversion)
31086
static asdl_seq *
31087
_loop1_60_rule(Parser *p)
31088
392k
{
31089
392k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31090
0
        _Pypegen_stack_overflow(p);
31091
0
    }
31092
392k
    if (p->error_indicator) {
31093
0
        p->level--;
31094
0
        return NULL;
31095
0
    }
31096
392k
    void *_res = NULL;
31097
392k
    int _mark = p->mark;
31098
392k
    void **_children = PyMem_Malloc(sizeof(void *));
31099
392k
    if (!_children) {
31100
0
        p->error_indicator = 1;
31101
0
        PyErr_NoMemory();
31102
0
        p->level--;
31103
0
        return NULL;
31104
0
    }
31105
392k
    Py_ssize_t _children_capacity = 1;
31106
392k
    Py_ssize_t _n = 0;
31107
392k
    { // ('and' inversion)
31108
392k
        if (p->error_indicator) {
31109
0
            p->level--;
31110
0
            return NULL;
31111
0
        }
31112
392k
        D(fprintf(stderr, "%*c> _loop1_60[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('and' inversion)"));
31113
392k
        void *_tmp_161_var;
31114
392k
        while (
31115
395k
            (_tmp_161_var = _tmp_161_rule(p))  // 'and' inversion
31116
392k
        )
31117
2.63k
        {
31118
2.63k
            _res = _tmp_161_var;
31119
2.63k
            if (_n == _children_capacity) {
31120
620
                _children_capacity *= 2;
31121
620
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31122
620
                if (!_new_children) {
31123
0
                    PyMem_Free(_children);
31124
0
                    p->error_indicator = 1;
31125
0
                    PyErr_NoMemory();
31126
0
                    p->level--;
31127
0
                    return NULL;
31128
0
                }
31129
620
                _children = _new_children;
31130
620
            }
31131
2.63k
            _children[_n++] = _res;
31132
2.63k
            _mark = p->mark;
31133
2.63k
        }
31134
392k
        p->mark = _mark;
31135
392k
        D(fprintf(stderr, "%*c%s _loop1_60[%d-%d]: %s failed!\n", p->level, ' ',
31136
392k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('and' inversion)"));
31137
392k
    }
31138
392k
    if (_n == 0 || p->error_indicator) {
31139
391k
        PyMem_Free(_children);
31140
391k
        p->level--;
31141
391k
        return NULL;
31142
391k
    }
31143
1.48k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31144
1.48k
    if (!_seq) {
31145
0
        PyMem_Free(_children);
31146
0
        p->error_indicator = 1;
31147
0
        PyErr_NoMemory();
31148
0
        p->level--;
31149
0
        return NULL;
31150
0
    }
31151
3.92k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31152
1.48k
    PyMem_Free(_children);
31153
1.48k
    p->level--;
31154
1.48k
    return _seq;
31155
1.48k
}
31156
31157
// _loop1_61: compare_op_bitwise_or_pair
31158
static asdl_seq *
31159
_loop1_61_rule(Parser *p)
31160
397k
{
31161
397k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31162
0
        _Pypegen_stack_overflow(p);
31163
0
    }
31164
397k
    if (p->error_indicator) {
31165
0
        p->level--;
31166
0
        return NULL;
31167
0
    }
31168
397k
    void *_res = NULL;
31169
397k
    int _mark = p->mark;
31170
397k
    void **_children = PyMem_Malloc(sizeof(void *));
31171
397k
    if (!_children) {
31172
0
        p->error_indicator = 1;
31173
0
        PyErr_NoMemory();
31174
0
        p->level--;
31175
0
        return NULL;
31176
0
    }
31177
397k
    Py_ssize_t _children_capacity = 1;
31178
397k
    Py_ssize_t _n = 0;
31179
397k
    { // compare_op_bitwise_or_pair
31180
397k
        if (p->error_indicator) {
31181
0
            p->level--;
31182
0
            return NULL;
31183
0
        }
31184
397k
        D(fprintf(stderr, "%*c> _loop1_61[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compare_op_bitwise_or_pair"));
31185
397k
        CmpopExprPair* compare_op_bitwise_or_pair_var;
31186
397k
        while (
31187
422k
            (compare_op_bitwise_or_pair_var = compare_op_bitwise_or_pair_rule(p))  // compare_op_bitwise_or_pair
31188
397k
        )
31189
24.2k
        {
31190
24.2k
            _res = compare_op_bitwise_or_pair_var;
31191
24.2k
            if (_n == _children_capacity) {
31192
4.05k
                _children_capacity *= 2;
31193
4.05k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31194
4.05k
                if (!_new_children) {
31195
0
                    PyMem_Free(_children);
31196
0
                    p->error_indicator = 1;
31197
0
                    PyErr_NoMemory();
31198
0
                    p->level--;
31199
0
                    return NULL;
31200
0
                }
31201
4.05k
                _children = _new_children;
31202
4.05k
            }
31203
24.2k
            _children[_n++] = _res;
31204
24.2k
            _mark = p->mark;
31205
24.2k
        }
31206
397k
        p->mark = _mark;
31207
397k
        D(fprintf(stderr, "%*c%s _loop1_61[%d-%d]: %s failed!\n", p->level, ' ',
31208
397k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compare_op_bitwise_or_pair"));
31209
397k
    }
31210
397k
    if (_n == 0 || p->error_indicator) {
31211
387k
        PyMem_Free(_children);
31212
387k
        p->level--;
31213
387k
        return NULL;
31214
387k
    }
31215
10.2k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31216
10.2k
    if (!_seq) {
31217
0
        PyMem_Free(_children);
31218
0
        p->error_indicator = 1;
31219
0
        PyErr_NoMemory();
31220
0
        p->level--;
31221
0
        return NULL;
31222
0
    }
31223
33.7k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31224
10.2k
    PyMem_Free(_children);
31225
10.2k
    p->level--;
31226
10.2k
    return _seq;
31227
10.2k
}
31228
31229
// _tmp_62: '!='
31230
static void *
31231
_tmp_62_rule(Parser *p)
31232
419k
{
31233
419k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31234
0
        _Pypegen_stack_overflow(p);
31235
0
    }
31236
419k
    if (p->error_indicator) {
31237
0
        p->level--;
31238
0
        return NULL;
31239
0
    }
31240
419k
    void * _res = NULL;
31241
419k
    int _mark = p->mark;
31242
419k
    { // '!='
31243
419k
        if (p->error_indicator) {
31244
0
            p->level--;
31245
0
            return NULL;
31246
0
        }
31247
419k
        D(fprintf(stderr, "%*c> _tmp_62[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!='"));
31248
419k
        Token * tok;
31249
419k
        if (
31250
419k
            (tok = _PyPegen_expect_token(p, 28))  // token='!='
31251
419k
        )
31252
1.28k
        {
31253
1.28k
            D(fprintf(stderr, "%*c+ _tmp_62[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!='"));
31254
1.28k
            _res = _PyPegen_check_barry_as_flufl ( p , tok ) ? NULL : tok;
31255
1.28k
            if (_res == NULL && PyErr_Occurred()) {
31256
1
                p->error_indicator = 1;
31257
1
                p->level--;
31258
1
                return NULL;
31259
1
            }
31260
1.28k
            goto done;
31261
1.28k
        }
31262
418k
        p->mark = _mark;
31263
418k
        D(fprintf(stderr, "%*c%s _tmp_62[%d-%d]: %s failed!\n", p->level, ' ',
31264
418k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!='"));
31265
418k
    }
31266
0
    _res = NULL;
31267
419k
  done:
31268
419k
    p->level--;
31269
419k
    return _res;
31270
418k
}
31271
31272
// _loop0_63: ',' (slice | starred_expression)
31273
static asdl_seq *
31274
_loop0_63_rule(Parser *p)
31275
2.78k
{
31276
2.78k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31277
0
        _Pypegen_stack_overflow(p);
31278
0
    }
31279
2.78k
    if (p->error_indicator) {
31280
0
        p->level--;
31281
0
        return NULL;
31282
0
    }
31283
2.78k
    void *_res = NULL;
31284
2.78k
    int _mark = p->mark;
31285
2.78k
    void **_children = PyMem_Malloc(sizeof(void *));
31286
2.78k
    if (!_children) {
31287
0
        p->error_indicator = 1;
31288
0
        PyErr_NoMemory();
31289
0
        p->level--;
31290
0
        return NULL;
31291
0
    }
31292
2.78k
    Py_ssize_t _children_capacity = 1;
31293
2.78k
    Py_ssize_t _n = 0;
31294
2.78k
    { // ',' (slice | starred_expression)
31295
2.78k
        if (p->error_indicator) {
31296
0
            p->level--;
31297
0
            return NULL;
31298
0
        }
31299
2.78k
        D(fprintf(stderr, "%*c> _loop0_63[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (slice | starred_expression)"));
31300
2.78k
        Token * _literal;
31301
2.78k
        void *elem;
31302
2.78k
        while (
31303
18.7k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
31304
18.7k
            &&
31305
18.7k
            (elem = _tmp_162_rule(p))  // slice | starred_expression
31306
2.78k
        )
31307
15.9k
        {
31308
15.9k
            _res = elem;
31309
15.9k
            if (_res == NULL && PyErr_Occurred()) {
31310
0
                p->error_indicator = 1;
31311
0
                PyMem_Free(_children);
31312
0
                p->level--;
31313
0
                return NULL;
31314
0
            }
31315
15.9k
            if (_n == _children_capacity) {
31316
1.98k
                _children_capacity *= 2;
31317
1.98k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31318
1.98k
                if (!_new_children) {
31319
0
                    PyMem_Free(_children);
31320
0
                    p->error_indicator = 1;
31321
0
                    PyErr_NoMemory();
31322
0
                    p->level--;
31323
0
                    return NULL;
31324
0
                }
31325
1.98k
                _children = _new_children;
31326
1.98k
            }
31327
15.9k
            _children[_n++] = _res;
31328
15.9k
            _mark = p->mark;
31329
15.9k
        }
31330
2.78k
        p->mark = _mark;
31331
2.78k
        D(fprintf(stderr, "%*c%s _loop0_63[%d-%d]: %s failed!\n", p->level, ' ',
31332
2.78k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (slice | starred_expression)"));
31333
2.78k
    }
31334
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31335
2.78k
    if (!_seq) {
31336
0
        PyMem_Free(_children);
31337
0
        p->error_indicator = 1;
31338
0
        PyErr_NoMemory();
31339
0
        p->level--;
31340
0
        return NULL;
31341
0
    }
31342
18.7k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31343
2.78k
    PyMem_Free(_children);
31344
2.78k
    p->level--;
31345
2.78k
    return _seq;
31346
2.78k
}
31347
31348
// _gather_64: (slice | starred_expression) _loop0_63
31349
static asdl_seq *
31350
_gather_64_rule(Parser *p)
31351
4.83k
{
31352
4.83k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31353
0
        _Pypegen_stack_overflow(p);
31354
0
    }
31355
4.83k
    if (p->error_indicator) {
31356
0
        p->level--;
31357
0
        return NULL;
31358
0
    }
31359
4.83k
    asdl_seq * _res = NULL;
31360
4.83k
    int _mark = p->mark;
31361
4.83k
    { // (slice | starred_expression) _loop0_63
31362
4.83k
        if (p->error_indicator) {
31363
0
            p->level--;
31364
0
            return NULL;
31365
0
        }
31366
4.83k
        D(fprintf(stderr, "%*c> _gather_64[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(slice | starred_expression) _loop0_63"));
31367
4.83k
        void *elem;
31368
4.83k
        asdl_seq * seq;
31369
4.83k
        if (
31370
4.83k
            (elem = _tmp_162_rule(p))  // slice | starred_expression
31371
4.83k
            &&
31372
4.83k
            (seq = _loop0_63_rule(p))  // _loop0_63
31373
4.83k
        )
31374
2.78k
        {
31375
2.78k
            D(fprintf(stderr, "%*c+ _gather_64[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(slice | starred_expression) _loop0_63"));
31376
2.78k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
31377
2.78k
            goto done;
31378
2.78k
        }
31379
2.04k
        p->mark = _mark;
31380
2.04k
        D(fprintf(stderr, "%*c%s _gather_64[%d-%d]: %s failed!\n", p->level, ' ',
31381
2.04k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(slice | starred_expression) _loop0_63"));
31382
2.04k
    }
31383
0
    _res = NULL;
31384
4.83k
  done:
31385
4.83k
    p->level--;
31386
4.83k
    return _res;
31387
2.04k
}
31388
31389
// _tmp_65: ':' expression?
31390
static void *
31391
_tmp_65_rule(Parser *p)
31392
15.1k
{
31393
15.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31394
0
        _Pypegen_stack_overflow(p);
31395
0
    }
31396
15.1k
    if (p->error_indicator) {
31397
0
        p->level--;
31398
0
        return NULL;
31399
0
    }
31400
15.1k
    void * _res = NULL;
31401
15.1k
    int _mark = p->mark;
31402
15.1k
    { // ':' expression?
31403
15.1k
        if (p->error_indicator) {
31404
0
            p->level--;
31405
0
            return NULL;
31406
0
        }
31407
15.1k
        D(fprintf(stderr, "%*c> _tmp_65[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression?"));
31408
15.1k
        Token * _literal;
31409
15.1k
        void *d;
31410
15.1k
        if (
31411
15.1k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
31412
15.1k
            &&
31413
15.1k
            (d = expression_rule(p), !p->error_indicator)  // expression?
31414
15.1k
        )
31415
5.54k
        {
31416
5.54k
            D(fprintf(stderr, "%*c+ _tmp_65[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression?"));
31417
5.54k
            _res = d;
31418
5.54k
            if (_res == NULL && PyErr_Occurred()) {
31419
0
                p->error_indicator = 1;
31420
0
                p->level--;
31421
0
                return NULL;
31422
0
            }
31423
5.54k
            goto done;
31424
5.54k
        }
31425
9.61k
        p->mark = _mark;
31426
9.61k
        D(fprintf(stderr, "%*c%s _tmp_65[%d-%d]: %s failed!\n", p->level, ' ',
31427
9.61k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression?"));
31428
9.61k
    }
31429
0
    _res = NULL;
31430
15.1k
  done:
31431
15.1k
    p->level--;
31432
15.1k
    return _res;
31433
9.61k
}
31434
31435
// _tmp_66: tuple | group | genexp
31436
static void *
31437
_tmp_66_rule(Parser *p)
31438
82.0k
{
31439
82.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31440
0
        _Pypegen_stack_overflow(p);
31441
0
    }
31442
82.0k
    if (p->error_indicator) {
31443
0
        p->level--;
31444
0
        return NULL;
31445
0
    }
31446
82.0k
    void * _res = NULL;
31447
82.0k
    int _mark = p->mark;
31448
82.0k
    { // tuple
31449
82.0k
        if (p->error_indicator) {
31450
0
            p->level--;
31451
0
            return NULL;
31452
0
        }
31453
82.0k
        D(fprintf(stderr, "%*c> _tmp_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
31454
82.0k
        expr_ty tuple_var;
31455
82.0k
        if (
31456
82.0k
            (tuple_var = tuple_rule(p))  // tuple
31457
82.0k
        )
31458
41.8k
        {
31459
41.8k
            D(fprintf(stderr, "%*c+ _tmp_66[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
31460
41.8k
            _res = tuple_var;
31461
41.8k
            goto done;
31462
41.8k
        }
31463
40.2k
        p->mark = _mark;
31464
40.2k
        D(fprintf(stderr, "%*c%s _tmp_66[%d-%d]: %s failed!\n", p->level, ' ',
31465
40.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
31466
40.2k
    }
31467
0
    { // group
31468
40.2k
        if (p->error_indicator) {
31469
6.32k
            p->level--;
31470
6.32k
            return NULL;
31471
6.32k
        }
31472
33.9k
        D(fprintf(stderr, "%*c> _tmp_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "group"));
31473
33.9k
        expr_ty group_var;
31474
33.9k
        if (
31475
33.9k
            (group_var = group_rule(p))  // group
31476
33.9k
        )
31477
9.99k
        {
31478
9.99k
            D(fprintf(stderr, "%*c+ _tmp_66[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "group"));
31479
9.99k
            _res = group_var;
31480
9.99k
            goto done;
31481
9.99k
        }
31482
23.9k
        p->mark = _mark;
31483
23.9k
        D(fprintf(stderr, "%*c%s _tmp_66[%d-%d]: %s failed!\n", p->level, ' ',
31484
23.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "group"));
31485
23.9k
    }
31486
0
    { // genexp
31487
23.9k
        if (p->error_indicator) {
31488
698
            p->level--;
31489
698
            return NULL;
31490
698
        }
31491
23.2k
        D(fprintf(stderr, "%*c> _tmp_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp"));
31492
23.2k
        expr_ty genexp_var;
31493
23.2k
        if (
31494
23.2k
            (genexp_var = genexp_rule(p))  // genexp
31495
23.2k
        )
31496
3.23k
        {
31497
3.23k
            D(fprintf(stderr, "%*c+ _tmp_66[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp"));
31498
3.23k
            _res = genexp_var;
31499
3.23k
            goto done;
31500
3.23k
        }
31501
19.9k
        p->mark = _mark;
31502
19.9k
        D(fprintf(stderr, "%*c%s _tmp_66[%d-%d]: %s failed!\n", p->level, ' ',
31503
19.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "genexp"));
31504
19.9k
    }
31505
0
    _res = NULL;
31506
75.0k
  done:
31507
75.0k
    p->level--;
31508
75.0k
    return _res;
31509
19.9k
}
31510
31511
// _tmp_67: list | listcomp
31512
static void *
31513
_tmp_67_rule(Parser *p)
31514
60.6k
{
31515
60.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31516
0
        _Pypegen_stack_overflow(p);
31517
0
    }
31518
60.6k
    if (p->error_indicator) {
31519
0
        p->level--;
31520
0
        return NULL;
31521
0
    }
31522
60.6k
    void * _res = NULL;
31523
60.6k
    int _mark = p->mark;
31524
60.6k
    { // list
31525
60.6k
        if (p->error_indicator) {
31526
0
            p->level--;
31527
0
            return NULL;
31528
0
        }
31529
60.6k
        D(fprintf(stderr, "%*c> _tmp_67[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
31530
60.6k
        expr_ty list_var;
31531
60.6k
        if (
31532
60.6k
            (list_var = list_rule(p))  // list
31533
60.6k
        )
31534
15.3k
        {
31535
15.3k
            D(fprintf(stderr, "%*c+ _tmp_67[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
31536
15.3k
            _res = list_var;
31537
15.3k
            goto done;
31538
15.3k
        }
31539
45.2k
        p->mark = _mark;
31540
45.2k
        D(fprintf(stderr, "%*c%s _tmp_67[%d-%d]: %s failed!\n", p->level, ' ',
31541
45.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
31542
45.2k
    }
31543
0
    { // listcomp
31544
45.2k
        if (p->error_indicator) {
31545
12.2k
            p->level--;
31546
12.2k
            return NULL;
31547
12.2k
        }
31548
33.0k
        D(fprintf(stderr, "%*c> _tmp_67[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "listcomp"));
31549
33.0k
        expr_ty listcomp_var;
31550
33.0k
        if (
31551
33.0k
            (listcomp_var = listcomp_rule(p))  // listcomp
31552
33.0k
        )
31553
1.48k
        {
31554
1.48k
            D(fprintf(stderr, "%*c+ _tmp_67[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "listcomp"));
31555
1.48k
            _res = listcomp_var;
31556
1.48k
            goto done;
31557
1.48k
        }
31558
31.5k
        p->mark = _mark;
31559
31.5k
        D(fprintf(stderr, "%*c%s _tmp_67[%d-%d]: %s failed!\n", p->level, ' ',
31560
31.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "listcomp"));
31561
31.5k
    }
31562
0
    _res = NULL;
31563
48.4k
  done:
31564
48.4k
    p->level--;
31565
48.4k
    return _res;
31566
31.5k
}
31567
31568
// _tmp_68: dict | set | dictcomp | setcomp
31569
static void *
31570
_tmp_68_rule(Parser *p)
31571
25.5k
{
31572
25.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31573
0
        _Pypegen_stack_overflow(p);
31574
0
    }
31575
25.5k
    if (p->error_indicator) {
31576
0
        p->level--;
31577
0
        return NULL;
31578
0
    }
31579
25.5k
    void * _res = NULL;
31580
25.5k
    int _mark = p->mark;
31581
25.5k
    { // dict
31582
25.5k
        if (p->error_indicator) {
31583
0
            p->level--;
31584
0
            return NULL;
31585
0
        }
31586
25.5k
        D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dict"));
31587
25.5k
        expr_ty dict_var;
31588
25.5k
        if (
31589
25.5k
            (dict_var = dict_rule(p))  // dict
31590
25.5k
        )
31591
4.04k
        {
31592
4.04k
            D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dict"));
31593
4.04k
            _res = dict_var;
31594
4.04k
            goto done;
31595
4.04k
        }
31596
21.5k
        p->mark = _mark;
31597
21.5k
        D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
31598
21.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dict"));
31599
21.5k
    }
31600
0
    { // set
31601
21.5k
        if (p->error_indicator) {
31602
8.09k
            p->level--;
31603
8.09k
            return NULL;
31604
8.09k
        }
31605
13.4k
        D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "set"));
31606
13.4k
        expr_ty set_var;
31607
13.4k
        if (
31608
13.4k
            (set_var = set_rule(p))  // set
31609
13.4k
        )
31610
1.67k
        {
31611
1.67k
            D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "set"));
31612
1.67k
            _res = set_var;
31613
1.67k
            goto done;
31614
1.67k
        }
31615
11.7k
        p->mark = _mark;
31616
11.7k
        D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
31617
11.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "set"));
31618
11.7k
    }
31619
0
    { // dictcomp
31620
11.7k
        if (p->error_indicator) {
31621
295
            p->level--;
31622
295
            return NULL;
31623
295
        }
31624
11.4k
        D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dictcomp"));
31625
11.4k
        expr_ty dictcomp_var;
31626
11.4k
        if (
31627
11.4k
            (dictcomp_var = dictcomp_rule(p))  // dictcomp
31628
11.4k
        )
31629
1.23k
        {
31630
1.23k
            D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dictcomp"));
31631
1.23k
            _res = dictcomp_var;
31632
1.23k
            goto done;
31633
1.23k
        }
31634
10.2k
        p->mark = _mark;
31635
10.2k
        D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
31636
10.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dictcomp"));
31637
10.2k
    }
31638
0
    { // setcomp
31639
10.2k
        if (p->error_indicator) {
31640
237
            p->level--;
31641
237
            return NULL;
31642
237
        }
31643
10.0k
        D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "setcomp"));
31644
10.0k
        expr_ty setcomp_var;
31645
10.0k
        if (
31646
10.0k
            (setcomp_var = setcomp_rule(p))  // setcomp
31647
10.0k
        )
31648
224
        {
31649
224
            D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "setcomp"));
31650
224
            _res = setcomp_var;
31651
224
            goto done;
31652
224
        }
31653
9.77k
        p->mark = _mark;
31654
9.77k
        D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
31655
9.77k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "setcomp"));
31656
9.77k
    }
31657
0
    _res = NULL;
31658
16.9k
  done:
31659
16.9k
    p->level--;
31660
16.9k
    return _res;
31661
9.77k
}
31662
31663
// _tmp_69: yield_expr | named_expression
31664
static void *
31665
_tmp_69_rule(Parser *p)
31666
33.9k
{
31667
33.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31668
0
        _Pypegen_stack_overflow(p);
31669
0
    }
31670
33.9k
    if (p->error_indicator) {
31671
0
        p->level--;
31672
0
        return NULL;
31673
0
    }
31674
33.9k
    void * _res = NULL;
31675
33.9k
    int _mark = p->mark;
31676
33.9k
    { // yield_expr
31677
33.9k
        if (p->error_indicator) {
31678
0
            p->level--;
31679
0
            return NULL;
31680
0
        }
31681
33.9k
        D(fprintf(stderr, "%*c> _tmp_69[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
31682
33.9k
        expr_ty yield_expr_var;
31683
33.9k
        if (
31684
33.9k
            (yield_expr_var = yield_expr_rule(p))  // yield_expr
31685
33.9k
        )
31686
657
        {
31687
657
            D(fprintf(stderr, "%*c+ _tmp_69[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
31688
657
            _res = yield_expr_var;
31689
657
            goto done;
31690
657
        }
31691
33.2k
        p->mark = _mark;
31692
33.2k
        D(fprintf(stderr, "%*c%s _tmp_69[%d-%d]: %s failed!\n", p->level, ' ',
31693
33.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
31694
33.2k
    }
31695
0
    { // named_expression
31696
33.2k
        if (p->error_indicator) {
31697
332
            p->level--;
31698
332
            return NULL;
31699
332
        }
31700
32.9k
        D(fprintf(stderr, "%*c> _tmp_69[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
31701
32.9k
        expr_ty named_expression_var;
31702
32.9k
        if (
31703
32.9k
            (named_expression_var = named_expression_rule(p))  // named_expression
31704
32.9k
        )
31705
22.9k
        {
31706
22.9k
            D(fprintf(stderr, "%*c+ _tmp_69[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
31707
22.9k
            _res = named_expression_var;
31708
22.9k
            goto done;
31709
22.9k
        }
31710
10.0k
        p->mark = _mark;
31711
10.0k
        D(fprintf(stderr, "%*c%s _tmp_69[%d-%d]: %s failed!\n", p->level, ' ',
31712
10.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
31713
10.0k
    }
31714
0
    _res = NULL;
31715
33.5k
  done:
31716
33.5k
    p->level--;
31717
33.5k
    return _res;
31718
10.0k
}
31719
31720
// _loop0_70: lambda_param_no_default
31721
static asdl_seq *
31722
_loop0_70_rule(Parser *p)
31723
86.8k
{
31724
86.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31725
0
        _Pypegen_stack_overflow(p);
31726
0
    }
31727
86.8k
    if (p->error_indicator) {
31728
0
        p->level--;
31729
0
        return NULL;
31730
0
    }
31731
86.8k
    void *_res = NULL;
31732
86.8k
    int _mark = p->mark;
31733
86.8k
    void **_children = PyMem_Malloc(sizeof(void *));
31734
86.8k
    if (!_children) {
31735
0
        p->error_indicator = 1;
31736
0
        PyErr_NoMemory();
31737
0
        p->level--;
31738
0
        return NULL;
31739
0
    }
31740
86.8k
    Py_ssize_t _children_capacity = 1;
31741
86.8k
    Py_ssize_t _n = 0;
31742
86.8k
    { // lambda_param_no_default
31743
86.8k
        if (p->error_indicator) {
31744
0
            p->level--;
31745
0
            return NULL;
31746
0
        }
31747
86.8k
        D(fprintf(stderr, "%*c> _loop0_70[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
31748
86.8k
        arg_ty lambda_param_no_default_var;
31749
86.8k
        while (
31750
135k
            (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
31751
86.8k
        )
31752
48.1k
        {
31753
48.1k
            _res = lambda_param_no_default_var;
31754
48.1k
            if (_n == _children_capacity) {
31755
3.19k
                _children_capacity *= 2;
31756
3.19k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31757
3.19k
                if (!_new_children) {
31758
0
                    PyMem_Free(_children);
31759
0
                    p->error_indicator = 1;
31760
0
                    PyErr_NoMemory();
31761
0
                    p->level--;
31762
0
                    return NULL;
31763
0
                }
31764
3.19k
                _children = _new_children;
31765
3.19k
            }
31766
48.1k
            _children[_n++] = _res;
31767
48.1k
            _mark = p->mark;
31768
48.1k
        }
31769
86.8k
        p->mark = _mark;
31770
86.8k
        D(fprintf(stderr, "%*c%s _loop0_70[%d-%d]: %s failed!\n", p->level, ' ',
31771
86.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
31772
86.8k
    }
31773
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31774
86.8k
    if (!_seq) {
31775
0
        PyMem_Free(_children);
31776
0
        p->error_indicator = 1;
31777
0
        PyErr_NoMemory();
31778
0
        p->level--;
31779
0
        return NULL;
31780
0
    }
31781
135k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31782
86.8k
    PyMem_Free(_children);
31783
86.8k
    p->level--;
31784
86.8k
    return _seq;
31785
86.8k
}
31786
31787
// _loop0_71: lambda_param_with_default
31788
static asdl_seq *
31789
_loop0_71_rule(Parser *p)
31790
3.57k
{
31791
3.57k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31792
0
        _Pypegen_stack_overflow(p);
31793
0
    }
31794
3.57k
    if (p->error_indicator) {
31795
1
        p->level--;
31796
1
        return NULL;
31797
1
    }
31798
3.56k
    void *_res = NULL;
31799
3.56k
    int _mark = p->mark;
31800
3.56k
    void **_children = PyMem_Malloc(sizeof(void *));
31801
3.56k
    if (!_children) {
31802
0
        p->error_indicator = 1;
31803
0
        PyErr_NoMemory();
31804
0
        p->level--;
31805
0
        return NULL;
31806
0
    }
31807
3.56k
    Py_ssize_t _children_capacity = 1;
31808
3.56k
    Py_ssize_t _n = 0;
31809
3.56k
    { // lambda_param_with_default
31810
3.56k
        if (p->error_indicator) {
31811
0
            p->level--;
31812
0
            return NULL;
31813
0
        }
31814
3.56k
        D(fprintf(stderr, "%*c> _loop0_71[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
31815
3.56k
        NameDefaultPair* lambda_param_with_default_var;
31816
3.56k
        while (
31817
5.38k
            (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
31818
3.56k
        )
31819
1.81k
        {
31820
1.81k
            _res = lambda_param_with_default_var;
31821
1.81k
            if (_n == _children_capacity) {
31822
565
                _children_capacity *= 2;
31823
565
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31824
565
                if (!_new_children) {
31825
0
                    PyMem_Free(_children);
31826
0
                    p->error_indicator = 1;
31827
0
                    PyErr_NoMemory();
31828
0
                    p->level--;
31829
0
                    return NULL;
31830
0
                }
31831
565
                _children = _new_children;
31832
565
            }
31833
1.81k
            _children[_n++] = _res;
31834
1.81k
            _mark = p->mark;
31835
1.81k
        }
31836
3.56k
        p->mark = _mark;
31837
3.56k
        D(fprintf(stderr, "%*c%s _loop0_71[%d-%d]: %s failed!\n", p->level, ' ',
31838
3.56k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
31839
3.56k
    }
31840
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31841
3.56k
    if (!_seq) {
31842
0
        PyMem_Free(_children);
31843
0
        p->error_indicator = 1;
31844
0
        PyErr_NoMemory();
31845
0
        p->level--;
31846
0
        return NULL;
31847
0
    }
31848
5.38k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31849
3.56k
    PyMem_Free(_children);
31850
3.56k
    p->level--;
31851
3.56k
    return _seq;
31852
3.56k
}
31853
31854
// _loop1_72: lambda_param_no_default
31855
static asdl_seq *
31856
_loop1_72_rule(Parser *p)
31857
86.0k
{
31858
86.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31859
0
        _Pypegen_stack_overflow(p);
31860
0
    }
31861
86.0k
    if (p->error_indicator) {
31862
0
        p->level--;
31863
0
        return NULL;
31864
0
    }
31865
86.0k
    void *_res = NULL;
31866
86.0k
    int _mark = p->mark;
31867
86.0k
    void **_children = PyMem_Malloc(sizeof(void *));
31868
86.0k
    if (!_children) {
31869
0
        p->error_indicator = 1;
31870
0
        PyErr_NoMemory();
31871
0
        p->level--;
31872
0
        return NULL;
31873
0
    }
31874
86.0k
    Py_ssize_t _children_capacity = 1;
31875
86.0k
    Py_ssize_t _n = 0;
31876
86.0k
    { // lambda_param_no_default
31877
86.0k
        if (p->error_indicator) {
31878
0
            p->level--;
31879
0
            return NULL;
31880
0
        }
31881
86.0k
        D(fprintf(stderr, "%*c> _loop1_72[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
31882
86.0k
        arg_ty lambda_param_no_default_var;
31883
86.0k
        while (
31884
149k
            (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
31885
86.0k
        )
31886
63.1k
        {
31887
63.1k
            _res = lambda_param_no_default_var;
31888
63.1k
            if (_n == _children_capacity) {
31889
5.62k
                _children_capacity *= 2;
31890
5.62k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31891
5.62k
                if (!_new_children) {
31892
0
                    PyMem_Free(_children);
31893
0
                    p->error_indicator = 1;
31894
0
                    PyErr_NoMemory();
31895
0
                    p->level--;
31896
0
                    return NULL;
31897
0
                }
31898
5.62k
                _children = _new_children;
31899
5.62k
            }
31900
63.1k
            _children[_n++] = _res;
31901
63.1k
            _mark = p->mark;
31902
63.1k
        }
31903
86.0k
        p->mark = _mark;
31904
86.0k
        D(fprintf(stderr, "%*c%s _loop1_72[%d-%d]: %s failed!\n", p->level, ' ',
31905
86.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
31906
86.0k
    }
31907
86.0k
    if (_n == 0 || p->error_indicator) {
31908
72.2k
        PyMem_Free(_children);
31909
72.2k
        p->level--;
31910
72.2k
        return NULL;
31911
72.2k
    }
31912
13.8k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31913
13.8k
    if (!_seq) {
31914
0
        PyMem_Free(_children);
31915
0
        p->error_indicator = 1;
31916
0
        PyErr_NoMemory();
31917
0
        p->level--;
31918
0
        return NULL;
31919
0
    }
31920
76.9k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31921
13.8k
    PyMem_Free(_children);
31922
13.8k
    p->level--;
31923
13.8k
    return _seq;
31924
13.8k
}
31925
31926
// _loop1_73: lambda_param_with_default
31927
static asdl_seq *
31928
_loop1_73_rule(Parser *p)
31929
86.7k
{
31930
86.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31931
0
        _Pypegen_stack_overflow(p);
31932
0
    }
31933
86.7k
    if (p->error_indicator) {
31934
0
        p->level--;
31935
0
        return NULL;
31936
0
    }
31937
86.7k
    void *_res = NULL;
31938
86.7k
    int _mark = p->mark;
31939
86.7k
    void **_children = PyMem_Malloc(sizeof(void *));
31940
86.7k
    if (!_children) {
31941
0
        p->error_indicator = 1;
31942
0
        PyErr_NoMemory();
31943
0
        p->level--;
31944
0
        return NULL;
31945
0
    }
31946
86.7k
    Py_ssize_t _children_capacity = 1;
31947
86.7k
    Py_ssize_t _n = 0;
31948
86.7k
    { // lambda_param_with_default
31949
86.7k
        if (p->error_indicator) {
31950
0
            p->level--;
31951
0
            return NULL;
31952
0
        }
31953
86.7k
        D(fprintf(stderr, "%*c> _loop1_73[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
31954
86.7k
        NameDefaultPair* lambda_param_with_default_var;
31955
86.7k
        while (
31956
114k
            (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
31957
86.7k
        )
31958
27.7k
        {
31959
27.7k
            _res = lambda_param_with_default_var;
31960
27.7k
            if (_n == _children_capacity) {
31961
3.88k
                _children_capacity *= 2;
31962
3.88k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31963
3.88k
                if (!_new_children) {
31964
0
                    PyMem_Free(_children);
31965
0
                    p->error_indicator = 1;
31966
0
                    PyErr_NoMemory();
31967
0
                    p->level--;
31968
0
                    return NULL;
31969
0
                }
31970
3.88k
                _children = _new_children;
31971
3.88k
            }
31972
27.7k
            _children[_n++] = _res;
31973
27.7k
            _mark = p->mark;
31974
27.7k
        }
31975
86.7k
        p->mark = _mark;
31976
86.7k
        D(fprintf(stderr, "%*c%s _loop1_73[%d-%d]: %s failed!\n", p->level, ' ',
31977
86.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
31978
86.7k
    }
31979
86.7k
    if (_n == 0 || p->error_indicator) {
31980
65.0k
        PyMem_Free(_children);
31981
65.0k
        p->level--;
31982
65.0k
        return NULL;
31983
65.0k
    }
31984
21.7k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31985
21.7k
    if (!_seq) {
31986
0
        PyMem_Free(_children);
31987
0
        p->error_indicator = 1;
31988
0
        PyErr_NoMemory();
31989
0
        p->level--;
31990
0
        return NULL;
31991
0
    }
31992
49.2k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31993
21.7k
    PyMem_Free(_children);
31994
21.7k
    p->level--;
31995
21.7k
    return _seq;
31996
21.7k
}
31997
31998
// _loop0_74: lambda_param_maybe_default
31999
static asdl_seq *
32000
_loop0_74_rule(Parser *p)
32001
15.5k
{
32002
15.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32003
0
        _Pypegen_stack_overflow(p);
32004
0
    }
32005
15.5k
    if (p->error_indicator) {
32006
0
        p->level--;
32007
0
        return NULL;
32008
0
    }
32009
15.5k
    void *_res = NULL;
32010
15.5k
    int _mark = p->mark;
32011
15.5k
    void **_children = PyMem_Malloc(sizeof(void *));
32012
15.5k
    if (!_children) {
32013
0
        p->error_indicator = 1;
32014
0
        PyErr_NoMemory();
32015
0
        p->level--;
32016
0
        return NULL;
32017
0
    }
32018
15.5k
    Py_ssize_t _children_capacity = 1;
32019
15.5k
    Py_ssize_t _n = 0;
32020
15.5k
    { // lambda_param_maybe_default
32021
15.5k
        if (p->error_indicator) {
32022
0
            p->level--;
32023
0
            return NULL;
32024
0
        }
32025
15.5k
        D(fprintf(stderr, "%*c> _loop0_74[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
32026
15.5k
        NameDefaultPair* lambda_param_maybe_default_var;
32027
15.5k
        while (
32028
26.8k
            (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p))  // lambda_param_maybe_default
32029
15.5k
        )
32030
11.3k
        {
32031
11.3k
            _res = lambda_param_maybe_default_var;
32032
11.3k
            if (_n == _children_capacity) {
32033
1.50k
                _children_capacity *= 2;
32034
1.50k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32035
1.50k
                if (!_new_children) {
32036
0
                    PyMem_Free(_children);
32037
0
                    p->error_indicator = 1;
32038
0
                    PyErr_NoMemory();
32039
0
                    p->level--;
32040
0
                    return NULL;
32041
0
                }
32042
1.50k
                _children = _new_children;
32043
1.50k
            }
32044
11.3k
            _children[_n++] = _res;
32045
11.3k
            _mark = p->mark;
32046
11.3k
        }
32047
15.5k
        p->mark = _mark;
32048
15.5k
        D(fprintf(stderr, "%*c%s _loop0_74[%d-%d]: %s failed!\n", p->level, ' ',
32049
15.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
32050
15.5k
    }
32051
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32052
15.5k
    if (!_seq) {
32053
0
        PyMem_Free(_children);
32054
0
        p->error_indicator = 1;
32055
0
        PyErr_NoMemory();
32056
0
        p->level--;
32057
0
        return NULL;
32058
0
    }
32059
26.8k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32060
15.5k
    PyMem_Free(_children);
32061
15.5k
    p->level--;
32062
15.5k
    return _seq;
32063
15.5k
}
32064
32065
// _loop1_75: lambda_param_maybe_default
32066
static asdl_seq *
32067
_loop1_75_rule(Parser *p)
32068
10.4k
{
32069
10.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32070
0
        _Pypegen_stack_overflow(p);
32071
0
    }
32072
10.4k
    if (p->error_indicator) {
32073
0
        p->level--;
32074
0
        return NULL;
32075
0
    }
32076
10.4k
    void *_res = NULL;
32077
10.4k
    int _mark = p->mark;
32078
10.4k
    void **_children = PyMem_Malloc(sizeof(void *));
32079
10.4k
    if (!_children) {
32080
0
        p->error_indicator = 1;
32081
0
        PyErr_NoMemory();
32082
0
        p->level--;
32083
0
        return NULL;
32084
0
    }
32085
10.4k
    Py_ssize_t _children_capacity = 1;
32086
10.4k
    Py_ssize_t _n = 0;
32087
10.4k
    { // lambda_param_maybe_default
32088
10.4k
        if (p->error_indicator) {
32089
0
            p->level--;
32090
0
            return NULL;
32091
0
        }
32092
10.4k
        D(fprintf(stderr, "%*c> _loop1_75[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
32093
10.4k
        NameDefaultPair* lambda_param_maybe_default_var;
32094
10.4k
        while (
32095
19.9k
            (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p))  // lambda_param_maybe_default
32096
10.4k
        )
32097
9.53k
        {
32098
9.53k
            _res = lambda_param_maybe_default_var;
32099
9.53k
            if (_n == _children_capacity) {
32100
1.33k
                _children_capacity *= 2;
32101
1.33k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32102
1.33k
                if (!_new_children) {
32103
0
                    PyMem_Free(_children);
32104
0
                    p->error_indicator = 1;
32105
0
                    PyErr_NoMemory();
32106
0
                    p->level--;
32107
0
                    return NULL;
32108
0
                }
32109
1.33k
                _children = _new_children;
32110
1.33k
            }
32111
9.53k
            _children[_n++] = _res;
32112
9.53k
            _mark = p->mark;
32113
9.53k
        }
32114
10.4k
        p->mark = _mark;
32115
10.4k
        D(fprintf(stderr, "%*c%s _loop1_75[%d-%d]: %s failed!\n", p->level, ' ',
32116
10.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
32117
10.4k
    }
32118
10.4k
    if (_n == 0 || p->error_indicator) {
32119
6.76k
        PyMem_Free(_children);
32120
6.76k
        p->level--;
32121
6.76k
        return NULL;
32122
6.76k
    }
32123
3.66k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32124
3.66k
    if (!_seq) {
32125
0
        PyMem_Free(_children);
32126
0
        p->error_indicator = 1;
32127
0
        PyErr_NoMemory();
32128
0
        p->level--;
32129
0
        return NULL;
32130
0
    }
32131
13.0k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32132
3.66k
    PyMem_Free(_children);
32133
3.66k
    p->level--;
32134
3.66k
    return _seq;
32135
3.66k
}
32136
32137
// _loop0_76: fstring_format_spec
32138
static asdl_seq *
32139
_loop0_76_rule(Parser *p)
32140
3.62k
{
32141
3.62k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32142
0
        _Pypegen_stack_overflow(p);
32143
0
    }
32144
3.62k
    if (p->error_indicator) {
32145
0
        p->level--;
32146
0
        return NULL;
32147
0
    }
32148
3.62k
    void *_res = NULL;
32149
3.62k
    int _mark = p->mark;
32150
3.62k
    void **_children = PyMem_Malloc(sizeof(void *));
32151
3.62k
    if (!_children) {
32152
0
        p->error_indicator = 1;
32153
0
        PyErr_NoMemory();
32154
0
        p->level--;
32155
0
        return NULL;
32156
0
    }
32157
3.62k
    Py_ssize_t _children_capacity = 1;
32158
3.62k
    Py_ssize_t _n = 0;
32159
3.62k
    { // fstring_format_spec
32160
3.62k
        if (p->error_indicator) {
32161
0
            p->level--;
32162
0
            return NULL;
32163
0
        }
32164
3.62k
        D(fprintf(stderr, "%*c> _loop0_76[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_format_spec"));
32165
3.62k
        expr_ty fstring_format_spec_var;
32166
3.62k
        while (
32167
12.7k
            (fstring_format_spec_var = fstring_format_spec_rule(p))  // fstring_format_spec
32168
3.62k
        )
32169
9.11k
        {
32170
9.11k
            _res = fstring_format_spec_var;
32171
9.11k
            if (_n == _children_capacity) {
32172
1.94k
                _children_capacity *= 2;
32173
1.94k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32174
1.94k
                if (!_new_children) {
32175
0
                    PyMem_Free(_children);
32176
0
                    p->error_indicator = 1;
32177
0
                    PyErr_NoMemory();
32178
0
                    p->level--;
32179
0
                    return NULL;
32180
0
                }
32181
1.94k
                _children = _new_children;
32182
1.94k
            }
32183
9.11k
            _children[_n++] = _res;
32184
9.11k
            _mark = p->mark;
32185
9.11k
        }
32186
3.62k
        p->mark = _mark;
32187
3.62k
        D(fprintf(stderr, "%*c%s _loop0_76[%d-%d]: %s failed!\n", p->level, ' ',
32188
3.62k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_format_spec"));
32189
3.62k
    }
32190
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32191
3.62k
    if (!_seq) {
32192
0
        PyMem_Free(_children);
32193
0
        p->error_indicator = 1;
32194
0
        PyErr_NoMemory();
32195
0
        p->level--;
32196
0
        return NULL;
32197
0
    }
32198
12.7k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32199
3.62k
    PyMem_Free(_children);
32200
3.62k
    p->level--;
32201
3.62k
    return _seq;
32202
3.62k
}
32203
32204
// _loop0_77: fstring_middle
32205
static asdl_seq *
32206
_loop0_77_rule(Parser *p)
32207
17.9k
{
32208
17.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32209
1
        _Pypegen_stack_overflow(p);
32210
1
    }
32211
17.9k
    if (p->error_indicator) {
32212
1
        p->level--;
32213
1
        return NULL;
32214
1
    }
32215
17.9k
    void *_res = NULL;
32216
17.9k
    int _mark = p->mark;
32217
17.9k
    void **_children = PyMem_Malloc(sizeof(void *));
32218
17.9k
    if (!_children) {
32219
0
        p->error_indicator = 1;
32220
0
        PyErr_NoMemory();
32221
0
        p->level--;
32222
0
        return NULL;
32223
0
    }
32224
17.9k
    Py_ssize_t _children_capacity = 1;
32225
17.9k
    Py_ssize_t _n = 0;
32226
17.9k
    { // fstring_middle
32227
17.9k
        if (p->error_indicator) {
32228
0
            p->level--;
32229
0
            return NULL;
32230
0
        }
32231
17.9k
        D(fprintf(stderr, "%*c> _loop0_77[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_middle"));
32232
17.9k
        expr_ty fstring_middle_var;
32233
17.9k
        while (
32234
60.6k
            (fstring_middle_var = fstring_middle_rule(p))  // fstring_middle
32235
17.9k
        )
32236
42.7k
        {
32237
42.7k
            _res = fstring_middle_var;
32238
42.7k
            if (_n == _children_capacity) {
32239
6.95k
                _children_capacity *= 2;
32240
6.95k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32241
6.95k
                if (!_new_children) {
32242
0
                    PyMem_Free(_children);
32243
0
                    p->error_indicator = 1;
32244
0
                    PyErr_NoMemory();
32245
0
                    p->level--;
32246
0
                    return NULL;
32247
0
                }
32248
6.95k
                _children = _new_children;
32249
6.95k
            }
32250
42.7k
            _children[_n++] = _res;
32251
42.7k
            _mark = p->mark;
32252
42.7k
        }
32253
17.9k
        p->mark = _mark;
32254
17.9k
        D(fprintf(stderr, "%*c%s _loop0_77[%d-%d]: %s failed!\n", p->level, ' ',
32255
17.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_middle"));
32256
17.9k
    }
32257
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32258
17.9k
    if (!_seq) {
32259
0
        PyMem_Free(_children);
32260
0
        p->error_indicator = 1;
32261
0
        PyErr_NoMemory();
32262
0
        p->level--;
32263
0
        return NULL;
32264
0
    }
32265
60.6k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32266
17.9k
    PyMem_Free(_children);
32267
17.9k
    p->level--;
32268
17.9k
    return _seq;
32269
17.9k
}
32270
32271
// _loop0_78: tstring_format_spec
32272
static asdl_seq *
32273
_loop0_78_rule(Parser *p)
32274
2.58k
{
32275
2.58k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32276
0
        _Pypegen_stack_overflow(p);
32277
0
    }
32278
2.58k
    if (p->error_indicator) {
32279
0
        p->level--;
32280
0
        return NULL;
32281
0
    }
32282
2.58k
    void *_res = NULL;
32283
2.58k
    int _mark = p->mark;
32284
2.58k
    void **_children = PyMem_Malloc(sizeof(void *));
32285
2.58k
    if (!_children) {
32286
0
        p->error_indicator = 1;
32287
0
        PyErr_NoMemory();
32288
0
        p->level--;
32289
0
        return NULL;
32290
0
    }
32291
2.58k
    Py_ssize_t _children_capacity = 1;
32292
2.58k
    Py_ssize_t _n = 0;
32293
2.58k
    { // tstring_format_spec
32294
2.58k
        if (p->error_indicator) {
32295
0
            p->level--;
32296
0
            return NULL;
32297
0
        }
32298
2.58k
        D(fprintf(stderr, "%*c> _loop0_78[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring_format_spec"));
32299
2.58k
        expr_ty tstring_format_spec_var;
32300
2.58k
        while (
32301
6.00k
            (tstring_format_spec_var = tstring_format_spec_rule(p))  // tstring_format_spec
32302
2.58k
        )
32303
3.41k
        {
32304
3.41k
            _res = tstring_format_spec_var;
32305
3.41k
            if (_n == _children_capacity) {
32306
487
                _children_capacity *= 2;
32307
487
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32308
487
                if (!_new_children) {
32309
0
                    PyMem_Free(_children);
32310
0
                    p->error_indicator = 1;
32311
0
                    PyErr_NoMemory();
32312
0
                    p->level--;
32313
0
                    return NULL;
32314
0
                }
32315
487
                _children = _new_children;
32316
487
            }
32317
3.41k
            _children[_n++] = _res;
32318
3.41k
            _mark = p->mark;
32319
3.41k
        }
32320
2.58k
        p->mark = _mark;
32321
2.58k
        D(fprintf(stderr, "%*c%s _loop0_78[%d-%d]: %s failed!\n", p->level, ' ',
32322
2.58k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring_format_spec"));
32323
2.58k
    }
32324
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32325
2.58k
    if (!_seq) {
32326
0
        PyMem_Free(_children);
32327
0
        p->error_indicator = 1;
32328
0
        PyErr_NoMemory();
32329
0
        p->level--;
32330
0
        return NULL;
32331
0
    }
32332
6.00k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32333
2.58k
    PyMem_Free(_children);
32334
2.58k
    p->level--;
32335
2.58k
    return _seq;
32336
2.58k
}
32337
32338
// _loop0_79: tstring_middle
32339
static asdl_seq *
32340
_loop0_79_rule(Parser *p)
32341
6.45k
{
32342
6.45k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32343
0
        _Pypegen_stack_overflow(p);
32344
0
    }
32345
6.45k
    if (p->error_indicator) {
32346
0
        p->level--;
32347
0
        return NULL;
32348
0
    }
32349
6.45k
    void *_res = NULL;
32350
6.45k
    int _mark = p->mark;
32351
6.45k
    void **_children = PyMem_Malloc(sizeof(void *));
32352
6.45k
    if (!_children) {
32353
0
        p->error_indicator = 1;
32354
0
        PyErr_NoMemory();
32355
0
        p->level--;
32356
0
        return NULL;
32357
0
    }
32358
6.45k
    Py_ssize_t _children_capacity = 1;
32359
6.45k
    Py_ssize_t _n = 0;
32360
6.45k
    { // tstring_middle
32361
6.45k
        if (p->error_indicator) {
32362
0
            p->level--;
32363
0
            return NULL;
32364
0
        }
32365
6.45k
        D(fprintf(stderr, "%*c> _loop0_79[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring_middle"));
32366
6.45k
        expr_ty tstring_middle_var;
32367
6.45k
        while (
32368
18.2k
            (tstring_middle_var = tstring_middle_rule(p))  // tstring_middle
32369
6.45k
        )
32370
11.7k
        {
32371
11.7k
            _res = tstring_middle_var;
32372
11.7k
            if (_n == _children_capacity) {
32373
2.66k
                _children_capacity *= 2;
32374
2.66k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32375
2.66k
                if (!_new_children) {
32376
0
                    PyMem_Free(_children);
32377
0
                    p->error_indicator = 1;
32378
0
                    PyErr_NoMemory();
32379
0
                    p->level--;
32380
0
                    return NULL;
32381
0
                }
32382
2.66k
                _children = _new_children;
32383
2.66k
            }
32384
11.7k
            _children[_n++] = _res;
32385
11.7k
            _mark = p->mark;
32386
11.7k
        }
32387
6.45k
        p->mark = _mark;
32388
6.45k
        D(fprintf(stderr, "%*c%s _loop0_79[%d-%d]: %s failed!\n", p->level, ' ',
32389
6.45k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring_middle"));
32390
6.45k
    }
32391
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32392
6.45k
    if (!_seq) {
32393
0
        PyMem_Free(_children);
32394
0
        p->error_indicator = 1;
32395
0
        PyErr_NoMemory();
32396
0
        p->level--;
32397
0
        return NULL;
32398
0
    }
32399
18.2k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32400
6.45k
    PyMem_Free(_children);
32401
6.45k
    p->level--;
32402
6.45k
    return _seq;
32403
6.45k
}
32404
32405
// _loop1_80: (fstring | string)
32406
static asdl_seq *
32407
_loop1_80_rule(Parser *p)
32408
134k
{
32409
134k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32410
1
        _Pypegen_stack_overflow(p);
32411
1
    }
32412
134k
    if (p->error_indicator) {
32413
1
        p->level--;
32414
1
        return NULL;
32415
1
    }
32416
134k
    void *_res = NULL;
32417
134k
    int _mark = p->mark;
32418
134k
    void **_children = PyMem_Malloc(sizeof(void *));
32419
134k
    if (!_children) {
32420
0
        p->error_indicator = 1;
32421
0
        PyErr_NoMemory();
32422
0
        p->level--;
32423
0
        return NULL;
32424
0
    }
32425
134k
    Py_ssize_t _children_capacity = 1;
32426
134k
    Py_ssize_t _n = 0;
32427
134k
    { // (fstring | string)
32428
134k
        if (p->error_indicator) {
32429
0
            p->level--;
32430
0
            return NULL;
32431
0
        }
32432
134k
        D(fprintf(stderr, "%*c> _loop1_80[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(fstring | string)"));
32433
134k
        void *_tmp_153_var;
32434
134k
        while (
32435
223k
            (_tmp_153_var = _tmp_153_rule(p))  // fstring | string
32436
134k
        )
32437
89.7k
        {
32438
89.7k
            _res = _tmp_153_var;
32439
89.7k
            if (_n == _children_capacity) {
32440
10.5k
                _children_capacity *= 2;
32441
10.5k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32442
10.5k
                if (!_new_children) {
32443
0
                    PyMem_Free(_children);
32444
0
                    p->error_indicator = 1;
32445
0
                    PyErr_NoMemory();
32446
0
                    p->level--;
32447
0
                    return NULL;
32448
0
                }
32449
10.5k
                _children = _new_children;
32450
10.5k
            }
32451
89.7k
            _children[_n++] = _res;
32452
89.7k
            _mark = p->mark;
32453
89.7k
        }
32454
134k
        p->mark = _mark;
32455
134k
        D(fprintf(stderr, "%*c%s _loop1_80[%d-%d]: %s failed!\n", p->level, ' ',
32456
134k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(fstring | string)"));
32457
134k
    }
32458
134k
    if (_n == 0 || p->error_indicator) {
32459
78.8k
        PyMem_Free(_children);
32460
78.8k
        p->level--;
32461
78.8k
        return NULL;
32462
78.8k
    }
32463
55.1k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32464
55.1k
    if (!_seq) {
32465
0
        PyMem_Free(_children);
32466
0
        p->error_indicator = 1;
32467
0
        PyErr_NoMemory();
32468
0
        p->level--;
32469
0
        return NULL;
32470
0
    }
32471
144k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32472
55.1k
    PyMem_Free(_children);
32473
55.1k
    p->level--;
32474
55.1k
    return _seq;
32475
55.1k
}
32476
32477
// _loop1_81: tstring
32478
static asdl_seq *
32479
_loop1_81_rule(Parser *p)
32480
81.6k
{
32481
81.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32482
0
        _Pypegen_stack_overflow(p);
32483
0
    }
32484
81.6k
    if (p->error_indicator) {
32485
0
        p->level--;
32486
0
        return NULL;
32487
0
    }
32488
81.6k
    void *_res = NULL;
32489
81.6k
    int _mark = p->mark;
32490
81.6k
    void **_children = PyMem_Malloc(sizeof(void *));
32491
81.6k
    if (!_children) {
32492
0
        p->error_indicator = 1;
32493
0
        PyErr_NoMemory();
32494
0
        p->level--;
32495
0
        return NULL;
32496
0
    }
32497
81.6k
    Py_ssize_t _children_capacity = 1;
32498
81.6k
    Py_ssize_t _n = 0;
32499
81.6k
    { // tstring
32500
81.6k
        if (p->error_indicator) {
32501
0
            p->level--;
32502
0
            return NULL;
32503
0
        }
32504
81.6k
        D(fprintf(stderr, "%*c> _loop1_81[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring"));
32505
81.6k
        expr_ty tstring_var;
32506
81.6k
        while (
32507
87.0k
            (tstring_var = tstring_rule(p))  // tstring
32508
81.6k
        )
32509
5.40k
        {
32510
5.40k
            _res = tstring_var;
32511
5.40k
            if (_n == _children_capacity) {
32512
409
                _children_capacity *= 2;
32513
409
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32514
409
                if (!_new_children) {
32515
0
                    PyMem_Free(_children);
32516
0
                    p->error_indicator = 1;
32517
0
                    PyErr_NoMemory();
32518
0
                    p->level--;
32519
0
                    return NULL;
32520
0
                }
32521
409
                _children = _new_children;
32522
409
            }
32523
5.40k
            _children[_n++] = _res;
32524
5.40k
            _mark = p->mark;
32525
5.40k
        }
32526
81.6k
        p->mark = _mark;
32527
81.6k
        D(fprintf(stderr, "%*c%s _loop1_81[%d-%d]: %s failed!\n", p->level, ' ',
32528
81.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring"));
32529
81.6k
    }
32530
81.6k
    if (_n == 0 || p->error_indicator) {
32531
77.2k
        PyMem_Free(_children);
32532
77.2k
        p->level--;
32533
77.2k
        return NULL;
32534
77.2k
    }
32535
4.31k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32536
4.31k
    if (!_seq) {
32537
0
        PyMem_Free(_children);
32538
0
        p->error_indicator = 1;
32539
0
        PyErr_NoMemory();
32540
0
        p->level--;
32541
0
        return NULL;
32542
0
    }
32543
9.60k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32544
4.31k
    PyMem_Free(_children);
32545
4.31k
    p->level--;
32546
4.31k
    return _seq;
32547
4.31k
}
32548
32549
// _tmp_82: star_named_expression ',' star_named_expressions?
32550
static void *
32551
_tmp_82_rule(Parser *p)
32552
92.3k
{
32553
92.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32554
1
        _Pypegen_stack_overflow(p);
32555
1
    }
32556
92.3k
    if (p->error_indicator) {
32557
1
        p->level--;
32558
1
        return NULL;
32559
1
    }
32560
92.3k
    void * _res = NULL;
32561
92.3k
    int _mark = p->mark;
32562
92.3k
    { // star_named_expression ',' star_named_expressions?
32563
92.3k
        if (p->error_indicator) {
32564
0
            p->level--;
32565
0
            return NULL;
32566
0
        }
32567
92.3k
        D(fprintf(stderr, "%*c> _tmp_82[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
32568
92.3k
        Token * _literal;
32569
92.3k
        expr_ty y;
32570
92.3k
        void *z;
32571
92.3k
        if (
32572
92.3k
            (y = star_named_expression_rule(p))  // star_named_expression
32573
92.3k
            &&
32574
92.3k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
32575
92.3k
            &&
32576
92.3k
            (z = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
32577
92.3k
        )
32578
16.8k
        {
32579
16.8k
            D(fprintf(stderr, "%*c+ _tmp_82[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
32580
16.8k
            _res = _PyPegen_seq_insert_in_front ( p , y , z );
32581
16.8k
            if (_res == NULL && PyErr_Occurred()) {
32582
0
                p->error_indicator = 1;
32583
0
                p->level--;
32584
0
                return NULL;
32585
0
            }
32586
16.8k
            goto done;
32587
16.8k
        }
32588
75.5k
        p->mark = _mark;
32589
75.5k
        D(fprintf(stderr, "%*c%s _tmp_82[%d-%d]: %s failed!\n", p->level, ' ',
32590
75.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
32591
75.5k
    }
32592
0
    _res = NULL;
32593
92.3k
  done:
32594
92.3k
    p->level--;
32595
92.3k
    return _res;
32596
75.5k
}
32597
32598
// _loop0_83: ',' double_starred_kvpair
32599
static asdl_seq *
32600
_loop0_83_rule(Parser *p)
32601
9.71k
{
32602
9.71k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32603
0
        _Pypegen_stack_overflow(p);
32604
0
    }
32605
9.71k
    if (p->error_indicator) {
32606
0
        p->level--;
32607
0
        return NULL;
32608
0
    }
32609
9.71k
    void *_res = NULL;
32610
9.71k
    int _mark = p->mark;
32611
9.71k
    void **_children = PyMem_Malloc(sizeof(void *));
32612
9.71k
    if (!_children) {
32613
0
        p->error_indicator = 1;
32614
0
        PyErr_NoMemory();
32615
0
        p->level--;
32616
0
        return NULL;
32617
0
    }
32618
9.71k
    Py_ssize_t _children_capacity = 1;
32619
9.71k
    Py_ssize_t _n = 0;
32620
9.71k
    { // ',' double_starred_kvpair
32621
9.71k
        if (p->error_indicator) {
32622
0
            p->level--;
32623
0
            return NULL;
32624
0
        }
32625
9.71k
        D(fprintf(stderr, "%*c> _loop0_83[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair"));
32626
9.71k
        Token * _literal;
32627
9.71k
        KeyValuePair* elem;
32628
9.71k
        while (
32629
45.9k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
32630
45.9k
            &&
32631
45.9k
            (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
32632
9.71k
        )
32633
36.2k
        {
32634
36.2k
            _res = elem;
32635
36.2k
            if (_res == NULL && PyErr_Occurred()) {
32636
0
                p->error_indicator = 1;
32637
0
                PyMem_Free(_children);
32638
0
                p->level--;
32639
0
                return NULL;
32640
0
            }
32641
36.2k
            if (_n == _children_capacity) {
32642
1.88k
                _children_capacity *= 2;
32643
1.88k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32644
1.88k
                if (!_new_children) {
32645
0
                    PyMem_Free(_children);
32646
0
                    p->error_indicator = 1;
32647
0
                    PyErr_NoMemory();
32648
0
                    p->level--;
32649
0
                    return NULL;
32650
0
                }
32651
1.88k
                _children = _new_children;
32652
1.88k
            }
32653
36.2k
            _children[_n++] = _res;
32654
36.2k
            _mark = p->mark;
32655
36.2k
        }
32656
9.71k
        p->mark = _mark;
32657
9.71k
        D(fprintf(stderr, "%*c%s _loop0_83[%d-%d]: %s failed!\n", p->level, ' ',
32658
9.71k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair"));
32659
9.71k
    }
32660
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32661
9.71k
    if (!_seq) {
32662
0
        PyMem_Free(_children);
32663
0
        p->error_indicator = 1;
32664
0
        PyErr_NoMemory();
32665
0
        p->level--;
32666
0
        return NULL;
32667
0
    }
32668
45.9k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32669
9.71k
    PyMem_Free(_children);
32670
9.71k
    p->level--;
32671
9.71k
    return _seq;
32672
9.71k
}
32673
32674
// _gather_84: double_starred_kvpair _loop0_83
32675
static asdl_seq *
32676
_gather_84_rule(Parser *p)
32677
39.3k
{
32678
39.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32679
1
        _Pypegen_stack_overflow(p);
32680
1
    }
32681
39.3k
    if (p->error_indicator) {
32682
1
        p->level--;
32683
1
        return NULL;
32684
1
    }
32685
39.3k
    asdl_seq * _res = NULL;
32686
39.3k
    int _mark = p->mark;
32687
39.3k
    { // double_starred_kvpair _loop0_83
32688
39.3k
        if (p->error_indicator) {
32689
0
            p->level--;
32690
0
            return NULL;
32691
0
        }
32692
39.3k
        D(fprintf(stderr, "%*c> _gather_84[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_83"));
32693
39.3k
        KeyValuePair* elem;
32694
39.3k
        asdl_seq * seq;
32695
39.3k
        if (
32696
39.3k
            (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
32697
39.3k
            &&
32698
39.3k
            (seq = _loop0_83_rule(p))  // _loop0_83
32699
39.3k
        )
32700
9.71k
        {
32701
9.71k
            D(fprintf(stderr, "%*c+ _gather_84[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_83"));
32702
9.71k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
32703
9.71k
            goto done;
32704
9.71k
        }
32705
29.6k
        p->mark = _mark;
32706
29.6k
        D(fprintf(stderr, "%*c%s _gather_84[%d-%d]: %s failed!\n", p->level, ' ',
32707
29.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_83"));
32708
29.6k
    }
32709
0
    _res = NULL;
32710
39.3k
  done:
32711
39.3k
    p->level--;
32712
39.3k
    return _res;
32713
29.6k
}
32714
32715
// _loop1_85: for_if_clause
32716
static asdl_seq *
32717
_loop1_85_rule(Parser *p)
32718
96.3k
{
32719
96.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32720
0
        _Pypegen_stack_overflow(p);
32721
0
    }
32722
96.3k
    if (p->error_indicator) {
32723
0
        p->level--;
32724
0
        return NULL;
32725
0
    }
32726
96.3k
    void *_res = NULL;
32727
96.3k
    int _mark = p->mark;
32728
96.3k
    void **_children = PyMem_Malloc(sizeof(void *));
32729
96.3k
    if (!_children) {
32730
0
        p->error_indicator = 1;
32731
0
        PyErr_NoMemory();
32732
0
        p->level--;
32733
0
        return NULL;
32734
0
    }
32735
96.3k
    Py_ssize_t _children_capacity = 1;
32736
96.3k
    Py_ssize_t _n = 0;
32737
96.3k
    { // for_if_clause
32738
96.3k
        if (p->error_indicator) {
32739
0
            p->level--;
32740
0
            return NULL;
32741
0
        }
32742
96.3k
        D(fprintf(stderr, "%*c> _loop1_85[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause"));
32743
96.3k
        comprehension_ty for_if_clause_var;
32744
96.3k
        while (
32745
107k
            (for_if_clause_var = for_if_clause_rule(p))  // for_if_clause
32746
96.3k
        )
32747
10.8k
        {
32748
10.8k
            _res = for_if_clause_var;
32749
10.8k
            if (_n == _children_capacity) {
32750
651
                _children_capacity *= 2;
32751
651
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32752
651
                if (!_new_children) {
32753
0
                    PyMem_Free(_children);
32754
0
                    p->error_indicator = 1;
32755
0
                    PyErr_NoMemory();
32756
0
                    p->level--;
32757
0
                    return NULL;
32758
0
                }
32759
651
                _children = _new_children;
32760
651
            }
32761
10.8k
            _children[_n++] = _res;
32762
10.8k
            _mark = p->mark;
32763
10.8k
        }
32764
96.3k
        p->mark = _mark;
32765
96.3k
        D(fprintf(stderr, "%*c%s _loop1_85[%d-%d]: %s failed!\n", p->level, ' ',
32766
96.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause"));
32767
96.3k
    }
32768
96.3k
    if (_n == 0 || p->error_indicator) {
32769
86.4k
        PyMem_Free(_children);
32770
86.4k
        p->level--;
32771
86.4k
        return NULL;
32772
86.4k
    }
32773
9.92k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32774
9.92k
    if (!_seq) {
32775
0
        PyMem_Free(_children);
32776
0
        p->error_indicator = 1;
32777
0
        PyErr_NoMemory();
32778
0
        p->level--;
32779
0
        return NULL;
32780
0
    }
32781
20.5k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32782
9.92k
    PyMem_Free(_children);
32783
9.92k
    p->level--;
32784
9.92k
    return _seq;
32785
9.92k
}
32786
32787
// _loop0_86: ('if' disjunction)
32788
static asdl_seq *
32789
_loop0_86_rule(Parser *p)
32790
10.8k
{
32791
10.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32792
0
        _Pypegen_stack_overflow(p);
32793
0
    }
32794
10.8k
    if (p->error_indicator) {
32795
0
        p->level--;
32796
0
        return NULL;
32797
0
    }
32798
10.8k
    void *_res = NULL;
32799
10.8k
    int _mark = p->mark;
32800
10.8k
    void **_children = PyMem_Malloc(sizeof(void *));
32801
10.8k
    if (!_children) {
32802
0
        p->error_indicator = 1;
32803
0
        PyErr_NoMemory();
32804
0
        p->level--;
32805
0
        return NULL;
32806
0
    }
32807
10.8k
    Py_ssize_t _children_capacity = 1;
32808
10.8k
    Py_ssize_t _n = 0;
32809
10.8k
    { // ('if' disjunction)
32810
10.8k
        if (p->error_indicator) {
32811
0
            p->level--;
32812
0
            return NULL;
32813
0
        }
32814
10.8k
        D(fprintf(stderr, "%*c> _loop0_86[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)"));
32815
10.8k
        void *_tmp_163_var;
32816
10.8k
        while (
32817
16.4k
            (_tmp_163_var = _tmp_163_rule(p))  // 'if' disjunction
32818
10.8k
        )
32819
5.56k
        {
32820
5.56k
            _res = _tmp_163_var;
32821
5.56k
            if (_n == _children_capacity) {
32822
2.20k
                _children_capacity *= 2;
32823
2.20k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32824
2.20k
                if (!_new_children) {
32825
0
                    PyMem_Free(_children);
32826
0
                    p->error_indicator = 1;
32827
0
                    PyErr_NoMemory();
32828
0
                    p->level--;
32829
0
                    return NULL;
32830
0
                }
32831
2.20k
                _children = _new_children;
32832
2.20k
            }
32833
5.56k
            _children[_n++] = _res;
32834
5.56k
            _mark = p->mark;
32835
5.56k
        }
32836
10.8k
        p->mark = _mark;
32837
10.8k
        D(fprintf(stderr, "%*c%s _loop0_86[%d-%d]: %s failed!\n", p->level, ' ',
32838
10.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('if' disjunction)"));
32839
10.8k
    }
32840
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32841
10.8k
    if (!_seq) {
32842
0
        PyMem_Free(_children);
32843
0
        p->error_indicator = 1;
32844
0
        PyErr_NoMemory();
32845
0
        p->level--;
32846
0
        return NULL;
32847
0
    }
32848
16.4k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32849
10.8k
    PyMem_Free(_children);
32850
10.8k
    p->level--;
32851
10.8k
    return _seq;
32852
10.8k
}
32853
32854
// _tmp_87: assignment_expression | expression !':='
32855
static void *
32856
_tmp_87_rule(Parser *p)
32857
183k
{
32858
183k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32859
1
        _Pypegen_stack_overflow(p);
32860
1
    }
32861
183k
    if (p->error_indicator) {
32862
1
        p->level--;
32863
1
        return NULL;
32864
1
    }
32865
183k
    void * _res = NULL;
32866
183k
    int _mark = p->mark;
32867
183k
    { // assignment_expression
32868
183k
        if (p->error_indicator) {
32869
0
            p->level--;
32870
0
            return NULL;
32871
0
        }
32872
183k
        D(fprintf(stderr, "%*c> _tmp_87[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
32873
183k
        expr_ty assignment_expression_var;
32874
183k
        if (
32875
183k
            (assignment_expression_var = assignment_expression_rule(p))  // assignment_expression
32876
183k
        )
32877
516
        {
32878
516
            D(fprintf(stderr, "%*c+ _tmp_87[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
32879
516
            _res = assignment_expression_var;
32880
516
            goto done;
32881
516
        }
32882
183k
        p->mark = _mark;
32883
183k
        D(fprintf(stderr, "%*c%s _tmp_87[%d-%d]: %s failed!\n", p->level, ' ',
32884
183k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression"));
32885
183k
    }
32886
0
    { // expression !':='
32887
183k
        if (p->error_indicator) {
32888
167
            p->level--;
32889
167
            return NULL;
32890
167
        }
32891
183k
        D(fprintf(stderr, "%*c> _tmp_87[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
32892
183k
        expr_ty expression_var;
32893
183k
        if (
32894
183k
            (expression_var = expression_rule(p))  // expression
32895
183k
            &&
32896
183k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53)  // token=':='
32897
183k
        )
32898
105k
        {
32899
105k
            D(fprintf(stderr, "%*c+ _tmp_87[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='"));
32900
105k
            _res = expression_var;
32901
105k
            goto done;
32902
105k
        }
32903
77.3k
        p->mark = _mark;
32904
77.3k
        D(fprintf(stderr, "%*c%s _tmp_87[%d-%d]: %s failed!\n", p->level, ' ',
32905
77.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
32906
77.3k
    }
32907
0
    _res = NULL;
32908
183k
  done:
32909
183k
    p->level--;
32910
183k
    return _res;
32911
77.3k
}
32912
32913
// _loop0_88: ',' (starred_expression | (assignment_expression | expression !':=') !'=')
32914
static asdl_seq *
32915
_loop0_88_rule(Parser *p)
32916
38.1k
{
32917
38.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32918
0
        _Pypegen_stack_overflow(p);
32919
0
    }
32920
38.1k
    if (p->error_indicator) {
32921
0
        p->level--;
32922
0
        return NULL;
32923
0
    }
32924
38.1k
    void *_res = NULL;
32925
38.1k
    int _mark = p->mark;
32926
38.1k
    void **_children = PyMem_Malloc(sizeof(void *));
32927
38.1k
    if (!_children) {
32928
0
        p->error_indicator = 1;
32929
0
        PyErr_NoMemory();
32930
0
        p->level--;
32931
0
        return NULL;
32932
0
    }
32933
38.1k
    Py_ssize_t _children_capacity = 1;
32934
38.1k
    Py_ssize_t _n = 0;
32935
38.1k
    { // ',' (starred_expression | (assignment_expression | expression !':=') !'=')
32936
38.1k
        if (p->error_indicator) {
32937
0
            p->level--;
32938
0
            return NULL;
32939
0
        }
32940
38.1k
        D(fprintf(stderr, "%*c> _loop0_88[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (starred_expression | (assignment_expression | expression !':=') !'=')"));
32941
38.1k
        Token * _literal;
32942
38.1k
        void *elem;
32943
38.1k
        while (
32944
51.5k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
32945
51.5k
            &&
32946
51.5k
            (elem = _tmp_164_rule(p))  // starred_expression | (assignment_expression | expression !':=') !'='
32947
38.1k
        )
32948
13.3k
        {
32949
13.3k
            _res = elem;
32950
13.3k
            if (_res == NULL && PyErr_Occurred()) {
32951
0
                p->error_indicator = 1;
32952
0
                PyMem_Free(_children);
32953
0
                p->level--;
32954
0
                return NULL;
32955
0
            }
32956
13.3k
            if (_n == _children_capacity) {
32957
3.39k
                _children_capacity *= 2;
32958
3.39k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32959
3.39k
                if (!_new_children) {
32960
0
                    PyMem_Free(_children);
32961
0
                    p->error_indicator = 1;
32962
0
                    PyErr_NoMemory();
32963
0
                    p->level--;
32964
0
                    return NULL;
32965
0
                }
32966
3.39k
                _children = _new_children;
32967
3.39k
            }
32968
13.3k
            _children[_n++] = _res;
32969
13.3k
            _mark = p->mark;
32970
13.3k
        }
32971
38.1k
        p->mark = _mark;
32972
38.1k
        D(fprintf(stderr, "%*c%s _loop0_88[%d-%d]: %s failed!\n", p->level, ' ',
32973
38.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (starred_expression | (assignment_expression | expression !':=') !'=')"));
32974
38.1k
    }
32975
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32976
38.1k
    if (!_seq) {
32977
0
        PyMem_Free(_children);
32978
0
        p->error_indicator = 1;
32979
0
        PyErr_NoMemory();
32980
0
        p->level--;
32981
0
        return NULL;
32982
0
    }
32983
51.5k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32984
38.1k
    PyMem_Free(_children);
32985
38.1k
    p->level--;
32986
38.1k
    return _seq;
32987
38.1k
}
32988
32989
// _gather_89:
32990
//     | (starred_expression | (assignment_expression | expression !':=') !'=') _loop0_88
32991
static asdl_seq *
32992
_gather_89_rule(Parser *p)
32993
81.3k
{
32994
81.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32995
0
        _Pypegen_stack_overflow(p);
32996
0
    }
32997
81.3k
    if (p->error_indicator) {
32998
0
        p->level--;
32999
0
        return NULL;
33000
0
    }
33001
81.3k
    asdl_seq * _res = NULL;
33002
81.3k
    int _mark = p->mark;
33003
81.3k
    { // (starred_expression | (assignment_expression | expression !':=') !'=') _loop0_88
33004
81.3k
        if (p->error_indicator) {
33005
0
            p->level--;
33006
0
            return NULL;
33007
0
        }
33008
81.3k
        D(fprintf(stderr, "%*c> _gather_89[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_88"));
33009
81.3k
        void *elem;
33010
81.3k
        asdl_seq * seq;
33011
81.3k
        if (
33012
81.3k
            (elem = _tmp_164_rule(p))  // starred_expression | (assignment_expression | expression !':=') !'='
33013
81.3k
            &&
33014
81.3k
            (seq = _loop0_88_rule(p))  // _loop0_88
33015
81.3k
        )
33016
38.1k
        {
33017
38.1k
            D(fprintf(stderr, "%*c+ _gather_89[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_88"));
33018
38.1k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
33019
38.1k
            goto done;
33020
38.1k
        }
33021
43.1k
        p->mark = _mark;
33022
43.1k
        D(fprintf(stderr, "%*c%s _gather_89[%d-%d]: %s failed!\n", p->level, ' ',
33023
43.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_88"));
33024
43.1k
    }
33025
0
    _res = NULL;
33026
81.3k
  done:
33027
81.3k
    p->level--;
33028
81.3k
    return _res;
33029
43.1k
}
33030
33031
// _tmp_90: ',' kwargs
33032
static void *
33033
_tmp_90_rule(Parser *p)
33034
35.4k
{
33035
35.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33036
0
        _Pypegen_stack_overflow(p);
33037
0
    }
33038
35.4k
    if (p->error_indicator) {
33039
573
        p->level--;
33040
573
        return NULL;
33041
573
    }
33042
34.8k
    void * _res = NULL;
33043
34.8k
    int _mark = p->mark;
33044
34.8k
    { // ',' kwargs
33045
34.8k
        if (p->error_indicator) {
33046
0
            p->level--;
33047
0
            return NULL;
33048
0
        }
33049
34.8k
        D(fprintf(stderr, "%*c> _tmp_90[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwargs"));
33050
34.8k
        Token * _literal;
33051
34.8k
        asdl_seq* k;
33052
34.8k
        if (
33053
34.8k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33054
34.8k
            &&
33055
34.8k
            (k = kwargs_rule(p))  // kwargs
33056
34.8k
        )
33057
2.70k
        {
33058
2.70k
            D(fprintf(stderr, "%*c+ _tmp_90[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' kwargs"));
33059
2.70k
            _res = k;
33060
2.70k
            if (_res == NULL && PyErr_Occurred()) {
33061
0
                p->error_indicator = 1;
33062
0
                p->level--;
33063
0
                return NULL;
33064
0
            }
33065
2.70k
            goto done;
33066
2.70k
        }
33067
32.1k
        p->mark = _mark;
33068
32.1k
        D(fprintf(stderr, "%*c%s _tmp_90[%d-%d]: %s failed!\n", p->level, ' ',
33069
32.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwargs"));
33070
32.1k
    }
33071
0
    _res = NULL;
33072
34.8k
  done:
33073
34.8k
    p->level--;
33074
34.8k
    return _res;
33075
32.1k
}
33076
33077
// _loop0_91: ',' kwarg_or_starred
33078
static asdl_seq *
33079
_loop0_91_rule(Parser *p)
33080
16.8k
{
33081
16.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33082
0
        _Pypegen_stack_overflow(p);
33083
0
    }
33084
16.8k
    if (p->error_indicator) {
33085
0
        p->level--;
33086
0
        return NULL;
33087
0
    }
33088
16.8k
    void *_res = NULL;
33089
16.8k
    int _mark = p->mark;
33090
16.8k
    void **_children = PyMem_Malloc(sizeof(void *));
33091
16.8k
    if (!_children) {
33092
0
        p->error_indicator = 1;
33093
0
        PyErr_NoMemory();
33094
0
        p->level--;
33095
0
        return NULL;
33096
0
    }
33097
16.8k
    Py_ssize_t _children_capacity = 1;
33098
16.8k
    Py_ssize_t _n = 0;
33099
16.8k
    { // ',' kwarg_or_starred
33100
16.8k
        if (p->error_indicator) {
33101
0
            p->level--;
33102
0
            return NULL;
33103
0
        }
33104
16.8k
        D(fprintf(stderr, "%*c> _loop0_91[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_starred"));
33105
16.8k
        Token * _literal;
33106
16.8k
        KeywordOrStarred* elem;
33107
16.8k
        while (
33108
26.0k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33109
26.0k
            &&
33110
26.0k
            (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
33111
16.8k
        )
33112
9.17k
        {
33113
9.17k
            _res = elem;
33114
9.17k
            if (_res == NULL && PyErr_Occurred()) {
33115
0
                p->error_indicator = 1;
33116
0
                PyMem_Free(_children);
33117
0
                p->level--;
33118
0
                return NULL;
33119
0
            }
33120
9.17k
            if (_n == _children_capacity) {
33121
2.55k
                _children_capacity *= 2;
33122
2.55k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33123
2.55k
                if (!_new_children) {
33124
0
                    PyMem_Free(_children);
33125
0
                    p->error_indicator = 1;
33126
0
                    PyErr_NoMemory();
33127
0
                    p->level--;
33128
0
                    return NULL;
33129
0
                }
33130
2.55k
                _children = _new_children;
33131
2.55k
            }
33132
9.17k
            _children[_n++] = _res;
33133
9.17k
            _mark = p->mark;
33134
9.17k
        }
33135
16.8k
        p->mark = _mark;
33136
16.8k
        D(fprintf(stderr, "%*c%s _loop0_91[%d-%d]: %s failed!\n", p->level, ' ',
33137
16.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_starred"));
33138
16.8k
    }
33139
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33140
16.8k
    if (!_seq) {
33141
0
        PyMem_Free(_children);
33142
0
        p->error_indicator = 1;
33143
0
        PyErr_NoMemory();
33144
0
        p->level--;
33145
0
        return NULL;
33146
0
    }
33147
26.0k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33148
16.8k
    PyMem_Free(_children);
33149
16.8k
    p->level--;
33150
16.8k
    return _seq;
33151
16.8k
}
33152
33153
// _gather_92: kwarg_or_starred _loop0_91
33154
static asdl_seq *
33155
_gather_92_rule(Parser *p)
33156
99.3k
{
33157
99.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33158
0
        _Pypegen_stack_overflow(p);
33159
0
    }
33160
99.3k
    if (p->error_indicator) {
33161
0
        p->level--;
33162
0
        return NULL;
33163
0
    }
33164
99.3k
    asdl_seq * _res = NULL;
33165
99.3k
    int _mark = p->mark;
33166
99.3k
    { // kwarg_or_starred _loop0_91
33167
99.3k
        if (p->error_indicator) {
33168
0
            p->level--;
33169
0
            return NULL;
33170
0
        }
33171
99.3k
        D(fprintf(stderr, "%*c> _gather_92[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_91"));
33172
99.3k
        KeywordOrStarred* elem;
33173
99.3k
        asdl_seq * seq;
33174
99.3k
        if (
33175
99.3k
            (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
33176
99.3k
            &&
33177
99.3k
            (seq = _loop0_91_rule(p))  // _loop0_91
33178
99.3k
        )
33179
16.8k
        {
33180
16.8k
            D(fprintf(stderr, "%*c+ _gather_92[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_91"));
33181
16.8k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
33182
16.8k
            goto done;
33183
16.8k
        }
33184
82.4k
        p->mark = _mark;
33185
82.4k
        D(fprintf(stderr, "%*c%s _gather_92[%d-%d]: %s failed!\n", p->level, ' ',
33186
82.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_starred _loop0_91"));
33187
82.4k
    }
33188
0
    _res = NULL;
33189
99.3k
  done:
33190
99.3k
    p->level--;
33191
99.3k
    return _res;
33192
82.4k
}
33193
33194
// _loop0_93: ',' kwarg_or_double_starred
33195
static asdl_seq *
33196
_loop0_93_rule(Parser *p)
33197
3.93k
{
33198
3.93k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33199
0
        _Pypegen_stack_overflow(p);
33200
0
    }
33201
3.93k
    if (p->error_indicator) {
33202
0
        p->level--;
33203
0
        return NULL;
33204
0
    }
33205
3.93k
    void *_res = NULL;
33206
3.93k
    int _mark = p->mark;
33207
3.93k
    void **_children = PyMem_Malloc(sizeof(void *));
33208
3.93k
    if (!_children) {
33209
0
        p->error_indicator = 1;
33210
0
        PyErr_NoMemory();
33211
0
        p->level--;
33212
0
        return NULL;
33213
0
    }
33214
3.93k
    Py_ssize_t _children_capacity = 1;
33215
3.93k
    Py_ssize_t _n = 0;
33216
3.93k
    { // ',' kwarg_or_double_starred
33217
3.93k
        if (p->error_indicator) {
33218
0
            p->level--;
33219
0
            return NULL;
33220
0
        }
33221
3.93k
        D(fprintf(stderr, "%*c> _loop0_93[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_double_starred"));
33222
3.93k
        Token * _literal;
33223
3.93k
        KeywordOrStarred* elem;
33224
3.93k
        while (
33225
9.98k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33226
9.98k
            &&
33227
9.98k
            (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
33228
3.93k
        )
33229
6.04k
        {
33230
6.04k
            _res = elem;
33231
6.04k
            if (_res == NULL && PyErr_Occurred()) {
33232
0
                p->error_indicator = 1;
33233
0
                PyMem_Free(_children);
33234
0
                p->level--;
33235
0
                return NULL;
33236
0
            }
33237
6.04k
            if (_n == _children_capacity) {
33238
960
                _children_capacity *= 2;
33239
960
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33240
960
                if (!_new_children) {
33241
0
                    PyMem_Free(_children);
33242
0
                    p->error_indicator = 1;
33243
0
                    PyErr_NoMemory();
33244
0
                    p->level--;
33245
0
                    return NULL;
33246
0
                }
33247
960
                _children = _new_children;
33248
960
            }
33249
6.04k
            _children[_n++] = _res;
33250
6.04k
            _mark = p->mark;
33251
6.04k
        }
33252
3.93k
        p->mark = _mark;
33253
3.93k
        D(fprintf(stderr, "%*c%s _loop0_93[%d-%d]: %s failed!\n", p->level, ' ',
33254
3.93k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_double_starred"));
33255
3.93k
    }
33256
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33257
3.93k
    if (!_seq) {
33258
0
        PyMem_Free(_children);
33259
0
        p->error_indicator = 1;
33260
0
        PyErr_NoMemory();
33261
0
        p->level--;
33262
0
        return NULL;
33263
0
    }
33264
9.98k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33265
3.93k
    PyMem_Free(_children);
33266
3.93k
    p->level--;
33267
3.93k
    return _seq;
33268
3.93k
}
33269
33270
// _gather_94: kwarg_or_double_starred _loop0_93
33271
static asdl_seq *
33272
_gather_94_rule(Parser *p)
33273
44.2k
{
33274
44.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33275
0
        _Pypegen_stack_overflow(p);
33276
0
    }
33277
44.2k
    if (p->error_indicator) {
33278
247
        p->level--;
33279
247
        return NULL;
33280
247
    }
33281
44.0k
    asdl_seq * _res = NULL;
33282
44.0k
    int _mark = p->mark;
33283
44.0k
    { // kwarg_or_double_starred _loop0_93
33284
44.0k
        if (p->error_indicator) {
33285
0
            p->level--;
33286
0
            return NULL;
33287
0
        }
33288
44.0k
        D(fprintf(stderr, "%*c> _gather_94[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_93"));
33289
44.0k
        KeywordOrStarred* elem;
33290
44.0k
        asdl_seq * seq;
33291
44.0k
        if (
33292
44.0k
            (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
33293
44.0k
            &&
33294
44.0k
            (seq = _loop0_93_rule(p))  // _loop0_93
33295
44.0k
        )
33296
3.93k
        {
33297
3.93k
            D(fprintf(stderr, "%*c+ _gather_94[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_93"));
33298
3.93k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
33299
3.93k
            goto done;
33300
3.93k
        }
33301
40.0k
        p->mark = _mark;
33302
40.0k
        D(fprintf(stderr, "%*c%s _gather_94[%d-%d]: %s failed!\n", p->level, ' ',
33303
40.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_double_starred _loop0_93"));
33304
40.0k
    }
33305
0
    _res = NULL;
33306
44.0k
  done:
33307
44.0k
    p->level--;
33308
44.0k
    return _res;
33309
40.0k
}
33310
33311
// _loop0_95: (',' star_target)
33312
static asdl_seq *
33313
_loop0_95_rule(Parser *p)
33314
14.8k
{
33315
14.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33316
0
        _Pypegen_stack_overflow(p);
33317
0
    }
33318
14.8k
    if (p->error_indicator) {
33319
0
        p->level--;
33320
0
        return NULL;
33321
0
    }
33322
14.8k
    void *_res = NULL;
33323
14.8k
    int _mark = p->mark;
33324
14.8k
    void **_children = PyMem_Malloc(sizeof(void *));
33325
14.8k
    if (!_children) {
33326
0
        p->error_indicator = 1;
33327
0
        PyErr_NoMemory();
33328
0
        p->level--;
33329
0
        return NULL;
33330
0
    }
33331
14.8k
    Py_ssize_t _children_capacity = 1;
33332
14.8k
    Py_ssize_t _n = 0;
33333
14.8k
    { // (',' star_target)
33334
14.8k
        if (p->error_indicator) {
33335
0
            p->level--;
33336
0
            return NULL;
33337
0
        }
33338
14.8k
        D(fprintf(stderr, "%*c> _loop0_95[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)"));
33339
14.8k
        void *_tmp_165_var;
33340
14.8k
        while (
33341
24.1k
            (_tmp_165_var = _tmp_165_rule(p))  // ',' star_target
33342
14.8k
        )
33343
9.30k
        {
33344
9.30k
            _res = _tmp_165_var;
33345
9.30k
            if (_n == _children_capacity) {
33346
1.71k
                _children_capacity *= 2;
33347
1.71k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33348
1.71k
                if (!_new_children) {
33349
0
                    PyMem_Free(_children);
33350
0
                    p->error_indicator = 1;
33351
0
                    PyErr_NoMemory();
33352
0
                    p->level--;
33353
0
                    return NULL;
33354
0
                }
33355
1.71k
                _children = _new_children;
33356
1.71k
            }
33357
9.30k
            _children[_n++] = _res;
33358
9.30k
            _mark = p->mark;
33359
9.30k
        }
33360
14.8k
        p->mark = _mark;
33361
14.8k
        D(fprintf(stderr, "%*c%s _loop0_95[%d-%d]: %s failed!\n", p->level, ' ',
33362
14.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_target)"));
33363
14.8k
    }
33364
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33365
14.8k
    if (!_seq) {
33366
0
        PyMem_Free(_children);
33367
0
        p->error_indicator = 1;
33368
0
        PyErr_NoMemory();
33369
0
        p->level--;
33370
0
        return NULL;
33371
0
    }
33372
24.1k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33373
14.8k
    PyMem_Free(_children);
33374
14.8k
    p->level--;
33375
14.8k
    return _seq;
33376
14.8k
}
33377
33378
// _loop0_96: ',' star_target
33379
static asdl_seq *
33380
_loop0_96_rule(Parser *p)
33381
2.74k
{
33382
2.74k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33383
0
        _Pypegen_stack_overflow(p);
33384
0
    }
33385
2.74k
    if (p->error_indicator) {
33386
0
        p->level--;
33387
0
        return NULL;
33388
0
    }
33389
2.74k
    void *_res = NULL;
33390
2.74k
    int _mark = p->mark;
33391
2.74k
    void **_children = PyMem_Malloc(sizeof(void *));
33392
2.74k
    if (!_children) {
33393
0
        p->error_indicator = 1;
33394
0
        PyErr_NoMemory();
33395
0
        p->level--;
33396
0
        return NULL;
33397
0
    }
33398
2.74k
    Py_ssize_t _children_capacity = 1;
33399
2.74k
    Py_ssize_t _n = 0;
33400
2.74k
    { // ',' star_target
33401
2.74k
        if (p->error_indicator) {
33402
0
            p->level--;
33403
0
            return NULL;
33404
0
        }
33405
2.74k
        D(fprintf(stderr, "%*c> _loop0_96[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
33406
2.74k
        Token * _literal;
33407
2.74k
        expr_ty elem;
33408
2.74k
        while (
33409
4.66k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33410
4.66k
            &&
33411
4.66k
            (elem = star_target_rule(p))  // star_target
33412
2.74k
        )
33413
1.92k
        {
33414
1.92k
            _res = elem;
33415
1.92k
            if (_res == NULL && PyErr_Occurred()) {
33416
0
                p->error_indicator = 1;
33417
0
                PyMem_Free(_children);
33418
0
                p->level--;
33419
0
                return NULL;
33420
0
            }
33421
1.92k
            if (_n == _children_capacity) {
33422
485
                _children_capacity *= 2;
33423
485
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33424
485
                if (!_new_children) {
33425
0
                    PyMem_Free(_children);
33426
0
                    p->error_indicator = 1;
33427
0
                    PyErr_NoMemory();
33428
0
                    p->level--;
33429
0
                    return NULL;
33430
0
                }
33431
485
                _children = _new_children;
33432
485
            }
33433
1.92k
            _children[_n++] = _res;
33434
1.92k
            _mark = p->mark;
33435
1.92k
        }
33436
2.74k
        p->mark = _mark;
33437
2.74k
        D(fprintf(stderr, "%*c%s _loop0_96[%d-%d]: %s failed!\n", p->level, ' ',
33438
2.74k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
33439
2.74k
    }
33440
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33441
2.74k
    if (!_seq) {
33442
0
        PyMem_Free(_children);
33443
0
        p->error_indicator = 1;
33444
0
        PyErr_NoMemory();
33445
0
        p->level--;
33446
0
        return NULL;
33447
0
    }
33448
4.66k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33449
2.74k
    PyMem_Free(_children);
33450
2.74k
    p->level--;
33451
2.74k
    return _seq;
33452
2.74k
}
33453
33454
// _gather_97: star_target _loop0_96
33455
static asdl_seq *
33456
_gather_97_rule(Parser *p)
33457
11.1k
{
33458
11.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33459
0
        _Pypegen_stack_overflow(p);
33460
0
    }
33461
11.1k
    if (p->error_indicator) {
33462
0
        p->level--;
33463
0
        return NULL;
33464
0
    }
33465
11.1k
    asdl_seq * _res = NULL;
33466
11.1k
    int _mark = p->mark;
33467
11.1k
    { // star_target _loop0_96
33468
11.1k
        if (p->error_indicator) {
33469
0
            p->level--;
33470
0
            return NULL;
33471
0
        }
33472
11.1k
        D(fprintf(stderr, "%*c> _gather_97[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target _loop0_96"));
33473
11.1k
        expr_ty elem;
33474
11.1k
        asdl_seq * seq;
33475
11.1k
        if (
33476
11.1k
            (elem = star_target_rule(p))  // star_target
33477
11.1k
            &&
33478
11.1k
            (seq = _loop0_96_rule(p))  // _loop0_96
33479
11.1k
        )
33480
2.74k
        {
33481
2.74k
            D(fprintf(stderr, "%*c+ _gather_97[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target _loop0_96"));
33482
2.74k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
33483
2.74k
            goto done;
33484
2.74k
        }
33485
8.43k
        p->mark = _mark;
33486
8.43k
        D(fprintf(stderr, "%*c%s _gather_97[%d-%d]: %s failed!\n", p->level, ' ',
33487
8.43k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target _loop0_96"));
33488
8.43k
    }
33489
0
    _res = NULL;
33490
11.1k
  done:
33491
11.1k
    p->level--;
33492
11.1k
    return _res;
33493
8.43k
}
33494
33495
// _loop1_98: (',' star_target)
33496
static asdl_seq *
33497
_loop1_98_rule(Parser *p)
33498
3.73k
{
33499
3.73k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33500
0
        _Pypegen_stack_overflow(p);
33501
0
    }
33502
3.73k
    if (p->error_indicator) {
33503
0
        p->level--;
33504
0
        return NULL;
33505
0
    }
33506
3.73k
    void *_res = NULL;
33507
3.73k
    int _mark = p->mark;
33508
3.73k
    void **_children = PyMem_Malloc(sizeof(void *));
33509
3.73k
    if (!_children) {
33510
0
        p->error_indicator = 1;
33511
0
        PyErr_NoMemory();
33512
0
        p->level--;
33513
0
        return NULL;
33514
0
    }
33515
3.73k
    Py_ssize_t _children_capacity = 1;
33516
3.73k
    Py_ssize_t _n = 0;
33517
3.73k
    { // (',' star_target)
33518
3.73k
        if (p->error_indicator) {
33519
0
            p->level--;
33520
0
            return NULL;
33521
0
        }
33522
3.73k
        D(fprintf(stderr, "%*c> _loop1_98[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)"));
33523
3.73k
        void *_tmp_165_var;
33524
3.73k
        while (
33525
4.94k
            (_tmp_165_var = _tmp_165_rule(p))  // ',' star_target
33526
3.73k
        )
33527
1.20k
        {
33528
1.20k
            _res = _tmp_165_var;
33529
1.20k
            if (_n == _children_capacity) {
33530
379
                _children_capacity *= 2;
33531
379
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33532
379
                if (!_new_children) {
33533
0
                    PyMem_Free(_children);
33534
0
                    p->error_indicator = 1;
33535
0
                    PyErr_NoMemory();
33536
0
                    p->level--;
33537
0
                    return NULL;
33538
0
                }
33539
379
                _children = _new_children;
33540
379
            }
33541
1.20k
            _children[_n++] = _res;
33542
1.20k
            _mark = p->mark;
33543
1.20k
        }
33544
3.73k
        p->mark = _mark;
33545
3.73k
        D(fprintf(stderr, "%*c%s _loop1_98[%d-%d]: %s failed!\n", p->level, ' ',
33546
3.73k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_target)"));
33547
3.73k
    }
33548
3.73k
    if (_n == 0 || p->error_indicator) {
33549
3.18k
        PyMem_Free(_children);
33550
3.18k
        p->level--;
33551
3.18k
        return NULL;
33552
3.18k
    }
33553
546
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33554
546
    if (!_seq) {
33555
0
        PyMem_Free(_children);
33556
0
        p->error_indicator = 1;
33557
0
        PyErr_NoMemory();
33558
0
        p->level--;
33559
0
        return NULL;
33560
0
    }
33561
1.75k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33562
546
    PyMem_Free(_children);
33563
546
    p->level--;
33564
546
    return _seq;
33565
546
}
33566
33567
// _tmp_99: !'*' star_target
33568
static void *
33569
_tmp_99_rule(Parser *p)
33570
3.27k
{
33571
3.27k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33572
0
        _Pypegen_stack_overflow(p);
33573
0
    }
33574
3.27k
    if (p->error_indicator) {
33575
0
        p->level--;
33576
0
        return NULL;
33577
0
    }
33578
3.27k
    void * _res = NULL;
33579
3.27k
    int _mark = p->mark;
33580
3.27k
    { // !'*' star_target
33581
3.27k
        if (p->error_indicator) {
33582
0
            p->level--;
33583
0
            return NULL;
33584
0
        }
33585
3.27k
        D(fprintf(stderr, "%*c> _tmp_99[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!'*' star_target"));
33586
3.27k
        expr_ty star_target_var;
33587
3.27k
        if (
33588
3.27k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 16)  // token='*'
33589
3.27k
            &&
33590
3.27k
            (star_target_var = star_target_rule(p))  // star_target
33591
3.27k
        )
33592
1.95k
        {
33593
1.95k
            D(fprintf(stderr, "%*c+ _tmp_99[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!'*' star_target"));
33594
1.95k
            _res = star_target_var;
33595
1.95k
            goto done;
33596
1.95k
        }
33597
1.32k
        p->mark = _mark;
33598
1.32k
        D(fprintf(stderr, "%*c%s _tmp_99[%d-%d]: %s failed!\n", p->level, ' ',
33599
1.32k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!'*' star_target"));
33600
1.32k
    }
33601
0
    _res = NULL;
33602
3.27k
  done:
33603
3.27k
    p->level--;
33604
3.27k
    return _res;
33605
1.32k
}
33606
33607
// _loop0_100: ',' del_target
33608
static asdl_seq *
33609
_loop0_100_rule(Parser *p)
33610
2.45k
{
33611
2.45k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33612
0
        _Pypegen_stack_overflow(p);
33613
0
    }
33614
2.45k
    if (p->error_indicator) {
33615
0
        p->level--;
33616
0
        return NULL;
33617
0
    }
33618
2.45k
    void *_res = NULL;
33619
2.45k
    int _mark = p->mark;
33620
2.45k
    void **_children = PyMem_Malloc(sizeof(void *));
33621
2.45k
    if (!_children) {
33622
0
        p->error_indicator = 1;
33623
0
        PyErr_NoMemory();
33624
0
        p->level--;
33625
0
        return NULL;
33626
0
    }
33627
2.45k
    Py_ssize_t _children_capacity = 1;
33628
2.45k
    Py_ssize_t _n = 0;
33629
2.45k
    { // ',' del_target
33630
2.45k
        if (p->error_indicator) {
33631
0
            p->level--;
33632
0
            return NULL;
33633
0
        }
33634
2.45k
        D(fprintf(stderr, "%*c> _loop0_100[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' del_target"));
33635
2.45k
        Token * _literal;
33636
2.45k
        expr_ty elem;
33637
2.45k
        while (
33638
6.16k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33639
6.16k
            &&
33640
6.16k
            (elem = del_target_rule(p))  // del_target
33641
2.45k
        )
33642
3.71k
        {
33643
3.71k
            _res = elem;
33644
3.71k
            if (_res == NULL && PyErr_Occurred()) {
33645
0
                p->error_indicator = 1;
33646
0
                PyMem_Free(_children);
33647
0
                p->level--;
33648
0
                return NULL;
33649
0
            }
33650
3.71k
            if (_n == _children_capacity) {
33651
1.11k
                _children_capacity *= 2;
33652
1.11k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33653
1.11k
                if (!_new_children) {
33654
0
                    PyMem_Free(_children);
33655
0
                    p->error_indicator = 1;
33656
0
                    PyErr_NoMemory();
33657
0
                    p->level--;
33658
0
                    return NULL;
33659
0
                }
33660
1.11k
                _children = _new_children;
33661
1.11k
            }
33662
3.71k
            _children[_n++] = _res;
33663
3.71k
            _mark = p->mark;
33664
3.71k
        }
33665
2.45k
        p->mark = _mark;
33666
2.45k
        D(fprintf(stderr, "%*c%s _loop0_100[%d-%d]: %s failed!\n", p->level, ' ',
33667
2.45k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' del_target"));
33668
2.45k
    }
33669
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33670
2.45k
    if (!_seq) {
33671
0
        PyMem_Free(_children);
33672
0
        p->error_indicator = 1;
33673
0
        PyErr_NoMemory();
33674
0
        p->level--;
33675
0
        return NULL;
33676
0
    }
33677
6.16k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33678
2.45k
    PyMem_Free(_children);
33679
2.45k
    p->level--;
33680
2.45k
    return _seq;
33681
2.45k
}
33682
33683
// _gather_101: del_target _loop0_100
33684
static asdl_seq *
33685
_gather_101_rule(Parser *p)
33686
4.89k
{
33687
4.89k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33688
0
        _Pypegen_stack_overflow(p);
33689
0
    }
33690
4.89k
    if (p->error_indicator) {
33691
0
        p->level--;
33692
0
        return NULL;
33693
0
    }
33694
4.89k
    asdl_seq * _res = NULL;
33695
4.89k
    int _mark = p->mark;
33696
4.89k
    { // del_target _loop0_100
33697
4.89k
        if (p->error_indicator) {
33698
0
            p->level--;
33699
0
            return NULL;
33700
0
        }
33701
4.89k
        D(fprintf(stderr, "%*c> _gather_101[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "del_target _loop0_100"));
33702
4.89k
        expr_ty elem;
33703
4.89k
        asdl_seq * seq;
33704
4.89k
        if (
33705
4.89k
            (elem = del_target_rule(p))  // del_target
33706
4.89k
            &&
33707
4.89k
            (seq = _loop0_100_rule(p))  // _loop0_100
33708
4.89k
        )
33709
2.45k
        {
33710
2.45k
            D(fprintf(stderr, "%*c+ _gather_101[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "del_target _loop0_100"));
33711
2.45k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
33712
2.45k
            goto done;
33713
2.45k
        }
33714
2.44k
        p->mark = _mark;
33715
2.44k
        D(fprintf(stderr, "%*c%s _gather_101[%d-%d]: %s failed!\n", p->level, ' ',
33716
2.44k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_target _loop0_100"));
33717
2.44k
    }
33718
0
    _res = NULL;
33719
4.89k
  done:
33720
4.89k
    p->level--;
33721
4.89k
    return _res;
33722
2.44k
}
33723
33724
// _loop0_102: ',' expression
33725
static asdl_seq *
33726
_loop0_102_rule(Parser *p)
33727
0
{
33728
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33729
0
        _Pypegen_stack_overflow(p);
33730
0
    }
33731
0
    if (p->error_indicator) {
33732
0
        p->level--;
33733
0
        return NULL;
33734
0
    }
33735
0
    void *_res = NULL;
33736
0
    int _mark = p->mark;
33737
0
    void **_children = PyMem_Malloc(sizeof(void *));
33738
0
    if (!_children) {
33739
0
        p->error_indicator = 1;
33740
0
        PyErr_NoMemory();
33741
0
        p->level--;
33742
0
        return NULL;
33743
0
    }
33744
0
    Py_ssize_t _children_capacity = 1;
33745
0
    Py_ssize_t _n = 0;
33746
0
    { // ',' expression
33747
0
        if (p->error_indicator) {
33748
0
            p->level--;
33749
0
            return NULL;
33750
0
        }
33751
0
        D(fprintf(stderr, "%*c> _loop0_102[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
33752
0
        Token * _literal;
33753
0
        expr_ty elem;
33754
0
        while (
33755
0
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33756
0
            &&
33757
0
            (elem = expression_rule(p))  // expression
33758
0
        )
33759
0
        {
33760
0
            _res = elem;
33761
0
            if (_res == NULL && PyErr_Occurred()) {
33762
0
                p->error_indicator = 1;
33763
0
                PyMem_Free(_children);
33764
0
                p->level--;
33765
0
                return NULL;
33766
0
            }
33767
0
            if (_n == _children_capacity) {
33768
0
                _children_capacity *= 2;
33769
0
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33770
0
                if (!_new_children) {
33771
0
                    PyMem_Free(_children);
33772
0
                    p->error_indicator = 1;
33773
0
                    PyErr_NoMemory();
33774
0
                    p->level--;
33775
0
                    return NULL;
33776
0
                }
33777
0
                _children = _new_children;
33778
0
            }
33779
0
            _children[_n++] = _res;
33780
0
            _mark = p->mark;
33781
0
        }
33782
0
        p->mark = _mark;
33783
0
        D(fprintf(stderr, "%*c%s _loop0_102[%d-%d]: %s failed!\n", p->level, ' ',
33784
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
33785
0
    }
33786
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33787
0
    if (!_seq) {
33788
0
        PyMem_Free(_children);
33789
0
        p->error_indicator = 1;
33790
0
        PyErr_NoMemory();
33791
0
        p->level--;
33792
0
        return NULL;
33793
0
    }
33794
0
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33795
0
    PyMem_Free(_children);
33796
0
    p->level--;
33797
0
    return _seq;
33798
0
}
33799
33800
// _gather_103: expression _loop0_102
33801
static asdl_seq *
33802
_gather_103_rule(Parser *p)
33803
0
{
33804
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33805
0
        _Pypegen_stack_overflow(p);
33806
0
    }
33807
0
    if (p->error_indicator) {
33808
0
        p->level--;
33809
0
        return NULL;
33810
0
    }
33811
0
    asdl_seq * _res = NULL;
33812
0
    int _mark = p->mark;
33813
0
    { // expression _loop0_102
33814
0
        if (p->error_indicator) {
33815
0
            p->level--;
33816
0
            return NULL;
33817
0
        }
33818
0
        D(fprintf(stderr, "%*c> _gather_103[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_102"));
33819
0
        expr_ty elem;
33820
0
        asdl_seq * seq;
33821
0
        if (
33822
0
            (elem = expression_rule(p))  // expression
33823
0
            &&
33824
0
            (seq = _loop0_102_rule(p))  // _loop0_102
33825
0
        )
33826
0
        {
33827
0
            D(fprintf(stderr, "%*c+ _gather_103[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_102"));
33828
0
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
33829
0
            goto done;
33830
0
        }
33831
0
        p->mark = _mark;
33832
0
        D(fprintf(stderr, "%*c%s _gather_103[%d-%d]: %s failed!\n", p->level, ' ',
33833
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_102"));
33834
0
    }
33835
0
    _res = NULL;
33836
0
  done:
33837
0
    p->level--;
33838
0
    return _res;
33839
0
}
33840
33841
// _tmp_104: NEWLINE INDENT
33842
static void *
33843
_tmp_104_rule(Parser *p)
33844
0
{
33845
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33846
0
        _Pypegen_stack_overflow(p);
33847
0
    }
33848
0
    if (p->error_indicator) {
33849
0
        p->level--;
33850
0
        return NULL;
33851
0
    }
33852
0
    void * _res = NULL;
33853
0
    int _mark = p->mark;
33854
0
    { // NEWLINE INDENT
33855
0
        if (p->error_indicator) {
33856
0
            p->level--;
33857
0
            return NULL;
33858
0
        }
33859
0
        D(fprintf(stderr, "%*c> _tmp_104[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT"));
33860
0
        Token * indent_var;
33861
0
        Token * newline_var;
33862
0
        if (
33863
0
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
33864
0
            &&
33865
0
            (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
33866
0
        )
33867
0
        {
33868
0
            D(fprintf(stderr, "%*c+ _tmp_104[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT"));
33869
0
            _res = _PyPegen_dummy_name(p, newline_var, indent_var);
33870
0
            goto done;
33871
0
        }
33872
0
        p->mark = _mark;
33873
0
        D(fprintf(stderr, "%*c%s _tmp_104[%d-%d]: %s failed!\n", p->level, ' ',
33874
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE INDENT"));
33875
0
    }
33876
0
    _res = NULL;
33877
0
  done:
33878
0
    p->level--;
33879
0
    return _res;
33880
0
}
33881
33882
// _tmp_105:
33883
//     | (','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs)
33884
//     | kwargs
33885
static void *
33886
_tmp_105_rule(Parser *p)
33887
7.72k
{
33888
7.72k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33889
0
        _Pypegen_stack_overflow(p);
33890
0
    }
33891
7.72k
    if (p->error_indicator) {
33892
0
        p->level--;
33893
0
        return NULL;
33894
0
    }
33895
7.72k
    void * _res = NULL;
33896
7.72k
    int _mark = p->mark;
33897
7.72k
    { // (','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs)
33898
7.72k
        if (p->error_indicator) {
33899
0
            p->level--;
33900
0
            return NULL;
33901
0
        }
33902
7.72k
        D(fprintf(stderr, "%*c> _tmp_105[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs)"));
33903
7.72k
        void *_tmp_166_var;
33904
7.72k
        if (
33905
7.72k
            (_tmp_166_var = _tmp_166_rule(p))  // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs
33906
7.72k
        )
33907
359
        {
33908
359
            D(fprintf(stderr, "%*c+ _tmp_105[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs)"));
33909
359
            _res = _tmp_166_var;
33910
359
            goto done;
33911
359
        }
33912
7.36k
        p->mark = _mark;
33913
7.36k
        D(fprintf(stderr, "%*c%s _tmp_105[%d-%d]: %s failed!\n", p->level, ' ',
33914
7.36k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs)"));
33915
7.36k
    }
33916
0
    { // kwargs
33917
7.36k
        if (p->error_indicator) {
33918
0
            p->level--;
33919
0
            return NULL;
33920
0
        }
33921
7.36k
        D(fprintf(stderr, "%*c> _tmp_105[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwargs"));
33922
7.36k
        asdl_seq* kwargs_var;
33923
7.36k
        if (
33924
7.36k
            (kwargs_var = kwargs_rule(p))  // kwargs
33925
7.36k
        )
33926
2.31k
        {
33927
2.31k
            D(fprintf(stderr, "%*c+ _tmp_105[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwargs"));
33928
2.31k
            _res = kwargs_var;
33929
2.31k
            goto done;
33930
2.31k
        }
33931
5.05k
        p->mark = _mark;
33932
5.05k
        D(fprintf(stderr, "%*c%s _tmp_105[%d-%d]: %s failed!\n", p->level, ' ',
33933
5.05k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwargs"));
33934
5.05k
    }
33935
0
    _res = NULL;
33936
7.72k
  done:
33937
7.72k
    p->level--;
33938
7.72k
    return _res;
33939
5.05k
}
33940
33941
// _loop0_106: ',' (starred_expression !'=')
33942
static asdl_seq *
33943
_loop0_106_rule(Parser *p)
33944
415
{
33945
415
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33946
0
        _Pypegen_stack_overflow(p);
33947
0
    }
33948
415
    if (p->error_indicator) {
33949
0
        p->level--;
33950
0
        return NULL;
33951
0
    }
33952
415
    void *_res = NULL;
33953
415
    int _mark = p->mark;
33954
415
    void **_children = PyMem_Malloc(sizeof(void *));
33955
415
    if (!_children) {
33956
0
        p->error_indicator = 1;
33957
0
        PyErr_NoMemory();
33958
0
        p->level--;
33959
0
        return NULL;
33960
0
    }
33961
415
    Py_ssize_t _children_capacity = 1;
33962
415
    Py_ssize_t _n = 0;
33963
415
    { // ',' (starred_expression !'=')
33964
415
        if (p->error_indicator) {
33965
0
            p->level--;
33966
0
            return NULL;
33967
0
        }
33968
415
        D(fprintf(stderr, "%*c> _loop0_106[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (starred_expression !'=')"));
33969
415
        Token * _literal;
33970
415
        void *elem;
33971
415
        while (
33972
1.02k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33973
1.02k
            &&
33974
1.02k
            (elem = _tmp_167_rule(p))  // starred_expression !'='
33975
415
        )
33976
611
        {
33977
611
            _res = elem;
33978
611
            if (_res == NULL && PyErr_Occurred()) {
33979
0
                p->error_indicator = 1;
33980
0
                PyMem_Free(_children);
33981
0
                p->level--;
33982
0
                return NULL;
33983
0
            }
33984
611
            if (_n == _children_capacity) {
33985
119
                _children_capacity *= 2;
33986
119
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33987
119
                if (!_new_children) {
33988
0
                    PyMem_Free(_children);
33989
0
                    p->error_indicator = 1;
33990
0
                    PyErr_NoMemory();
33991
0
                    p->level--;
33992
0
                    return NULL;
33993
0
                }
33994
119
                _children = _new_children;
33995
119
            }
33996
611
            _children[_n++] = _res;
33997
611
            _mark = p->mark;
33998
611
        }
33999
415
        p->mark = _mark;
34000
415
        D(fprintf(stderr, "%*c%s _loop0_106[%d-%d]: %s failed!\n", p->level, ' ',
34001
415
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (starred_expression !'=')"));
34002
415
    }
34003
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
34004
415
    if (!_seq) {
34005
0
        PyMem_Free(_children);
34006
0
        p->error_indicator = 1;
34007
0
        PyErr_NoMemory();
34008
0
        p->level--;
34009
0
        return NULL;
34010
0
    }
34011
1.02k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
34012
415
    PyMem_Free(_children);
34013
415
    p->level--;
34014
415
    return _seq;
34015
415
}
34016
34017
// _gather_107: (starred_expression !'=') _loop0_106
34018
static asdl_seq *
34019
_gather_107_rule(Parser *p)
34020
1.41k
{
34021
1.41k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34022
0
        _Pypegen_stack_overflow(p);
34023
0
    }
34024
1.41k
    if (p->error_indicator) {
34025
0
        p->level--;
34026
0
        return NULL;
34027
0
    }
34028
1.41k
    asdl_seq * _res = NULL;
34029
1.41k
    int _mark = p->mark;
34030
1.41k
    { // (starred_expression !'=') _loop0_106
34031
1.41k
        if (p->error_indicator) {
34032
0
            p->level--;
34033
0
            return NULL;
34034
0
        }
34035
1.41k
        D(fprintf(stderr, "%*c> _gather_107[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(starred_expression !'=') _loop0_106"));
34036
1.41k
        void *elem;
34037
1.41k
        asdl_seq * seq;
34038
1.41k
        if (
34039
1.41k
            (elem = _tmp_167_rule(p))  // starred_expression !'='
34040
1.41k
            &&
34041
1.41k
            (seq = _loop0_106_rule(p))  // _loop0_106
34042
1.41k
        )
34043
415
        {
34044
415
            D(fprintf(stderr, "%*c+ _gather_107[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(starred_expression !'=') _loop0_106"));
34045
415
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
34046
415
            goto done;
34047
415
        }
34048
995
        p->mark = _mark;
34049
995
        D(fprintf(stderr, "%*c%s _gather_107[%d-%d]: %s failed!\n", p->level, ' ',
34050
995
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(starred_expression !'=') _loop0_106"));
34051
995
    }
34052
0
    _res = NULL;
34053
1.41k
  done:
34054
1.41k
    p->level--;
34055
1.41k
    return _res;
34056
995
}
34057
34058
// _tmp_108: args | expression for_if_clauses
34059
static void *
34060
_tmp_108_rule(Parser *p)
34061
56
{
34062
56
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34063
0
        _Pypegen_stack_overflow(p);
34064
0
    }
34065
56
    if (p->error_indicator) {
34066
0
        p->level--;
34067
0
        return NULL;
34068
0
    }
34069
56
    void * _res = NULL;
34070
56
    int _mark = p->mark;
34071
56
    { // args
34072
56
        if (p->error_indicator) {
34073
0
            p->level--;
34074
0
            return NULL;
34075
0
        }
34076
56
        D(fprintf(stderr, "%*c> _tmp_108[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args"));
34077
56
        expr_ty args_var;
34078
56
        if (
34079
56
            (args_var = args_rule(p))  // args
34080
56
        )
34081
18
        {
34082
18
            D(fprintf(stderr, "%*c+ _tmp_108[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args"));
34083
18
            _res = args_var;
34084
18
            goto done;
34085
18
        }
34086
38
        p->mark = _mark;
34087
38
        D(fprintf(stderr, "%*c%s _tmp_108[%d-%d]: %s failed!\n", p->level, ' ',
34088
38
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args"));
34089
38
    }
34090
0
    { // expression for_if_clauses
34091
38
        if (p->error_indicator) {
34092
35
            p->level--;
34093
35
            return NULL;
34094
35
        }
34095
3
        D(fprintf(stderr, "%*c> _tmp_108[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses"));
34096
3
        expr_ty expression_var;
34097
3
        asdl_comprehension_seq* for_if_clauses_var;
34098
3
        if (
34099
3
            (expression_var = expression_rule(p))  // expression
34100
3
            &&
34101
3
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
34102
3
        )
34103
0
        {
34104
0
            D(fprintf(stderr, "%*c+ _tmp_108[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses"));
34105
0
            _res = _PyPegen_dummy_name(p, expression_var, for_if_clauses_var);
34106
0
            goto done;
34107
0
        }
34108
3
        p->mark = _mark;
34109
3
        D(fprintf(stderr, "%*c%s _tmp_108[%d-%d]: %s failed!\n", p->level, ' ',
34110
3
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression for_if_clauses"));
34111
3
    }
34112
0
    _res = NULL;
34113
21
  done:
34114
21
    p->level--;
34115
21
    return _res;
34116
3
}
34117
34118
// _tmp_109: args ','
34119
static void *
34120
_tmp_109_rule(Parser *p)
34121
7.05k
{
34122
7.05k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34123
0
        _Pypegen_stack_overflow(p);
34124
0
    }
34125
7.05k
    if (p->error_indicator) {
34126
0
        p->level--;
34127
0
        return NULL;
34128
0
    }
34129
7.05k
    void * _res = NULL;
34130
7.05k
    int _mark = p->mark;
34131
7.05k
    { // args ','
34132
7.05k
        if (p->error_indicator) {
34133
0
            p->level--;
34134
0
            return NULL;
34135
0
        }
34136
7.05k
        D(fprintf(stderr, "%*c> _tmp_109[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ','"));
34137
7.05k
        Token * _literal;
34138
7.05k
        expr_ty args_var;
34139
7.05k
        if (
34140
7.05k
            (args_var = args_rule(p))  // args
34141
7.05k
            &&
34142
7.05k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
34143
7.05k
        )
34144
708
        {
34145
708
            D(fprintf(stderr, "%*c+ _tmp_109[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ','"));
34146
708
            _res = _PyPegen_dummy_name(p, args_var, _literal);
34147
708
            goto done;
34148
708
        }
34149
6.34k
        p->mark = _mark;
34150
6.34k
        D(fprintf(stderr, "%*c%s _tmp_109[%d-%d]: %s failed!\n", p->level, ' ',
34151
6.34k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ','"));
34152
6.34k
    }
34153
0
    _res = NULL;
34154
7.05k
  done:
34155
7.05k
    p->level--;
34156
7.05k
    return _res;
34157
6.34k
}
34158
34159
// _tmp_110: ',' | ')'
34160
static void *
34161
_tmp_110_rule(Parser *p)
34162
505
{
34163
505
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34164
0
        _Pypegen_stack_overflow(p);
34165
0
    }
34166
505
    if (p->error_indicator) {
34167
0
        p->level--;
34168
0
        return NULL;
34169
0
    }
34170
505
    void * _res = NULL;
34171
505
    int _mark = p->mark;
34172
505
    { // ','
34173
505
        if (p->error_indicator) {
34174
0
            p->level--;
34175
0
            return NULL;
34176
0
        }
34177
505
        D(fprintf(stderr, "%*c> _tmp_110[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
34178
505
        Token * _literal;
34179
505
        if (
34180
505
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
34181
505
        )
34182
11
        {
34183
11
            D(fprintf(stderr, "%*c+ _tmp_110[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
34184
11
            _res = _literal;
34185
11
            goto done;
34186
11
        }
34187
494
        p->mark = _mark;
34188
494
        D(fprintf(stderr, "%*c%s _tmp_110[%d-%d]: %s failed!\n", p->level, ' ',
34189
494
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
34190
494
    }
34191
0
    { // ')'
34192
494
        if (p->error_indicator) {
34193
0
            p->level--;
34194
0
            return NULL;
34195
0
        }
34196
494
        D(fprintf(stderr, "%*c> _tmp_110[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
34197
494
        Token * _literal;
34198
494
        if (
34199
494
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
34200
494
        )
34201
4
        {
34202
4
            D(fprintf(stderr, "%*c+ _tmp_110[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
34203
4
            _res = _literal;
34204
4
            goto done;
34205
4
        }
34206
490
        p->mark = _mark;
34207
490
        D(fprintf(stderr, "%*c%s _tmp_110[%d-%d]: %s failed!\n", p->level, ' ',
34208
490
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
34209
490
    }
34210
0
    _res = NULL;
34211
505
  done:
34212
505
    p->level--;
34213
505
    return _res;
34214
490
}
34215
34216
// _tmp_111: 'True' | 'False' | 'None'
34217
static void *
34218
_tmp_111_rule(Parser *p)
34219
115k
{
34220
115k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34221
0
        _Pypegen_stack_overflow(p);
34222
0
    }
34223
115k
    if (p->error_indicator) {
34224
0
        p->level--;
34225
0
        return NULL;
34226
0
    }
34227
115k
    void * _res = NULL;
34228
115k
    int _mark = p->mark;
34229
115k
    { // 'True'
34230
115k
        if (p->error_indicator) {
34231
0
            p->level--;
34232
0
            return NULL;
34233
0
        }
34234
115k
        D(fprintf(stderr, "%*c> _tmp_111[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
34235
115k
        Token * _keyword;
34236
115k
        if (
34237
115k
            (_keyword = _PyPegen_expect_token(p, 623))  // token='True'
34238
115k
        )
34239
219
        {
34240
219
            D(fprintf(stderr, "%*c+ _tmp_111[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
34241
219
            _res = _keyword;
34242
219
            goto done;
34243
219
        }
34244
115k
        p->mark = _mark;
34245
115k
        D(fprintf(stderr, "%*c%s _tmp_111[%d-%d]: %s failed!\n", p->level, ' ',
34246
115k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
34247
115k
    }
34248
0
    { // 'False'
34249
115k
        if (p->error_indicator) {
34250
0
            p->level--;
34251
0
            return NULL;
34252
0
        }
34253
115k
        D(fprintf(stderr, "%*c> _tmp_111[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
34254
115k
        Token * _keyword;
34255
115k
        if (
34256
115k
            (_keyword = _PyPegen_expect_token(p, 625))  // token='False'
34257
115k
        )
34258
210
        {
34259
210
            D(fprintf(stderr, "%*c+ _tmp_111[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
34260
210
            _res = _keyword;
34261
210
            goto done;
34262
210
        }
34263
115k
        p->mark = _mark;
34264
115k
        D(fprintf(stderr, "%*c%s _tmp_111[%d-%d]: %s failed!\n", p->level, ' ',
34265
115k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
34266
115k
    }
34267
0
    { // 'None'
34268
115k
        if (p->error_indicator) {
34269
0
            p->level--;
34270
0
            return NULL;
34271
0
        }
34272
115k
        D(fprintf(stderr, "%*c> _tmp_111[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
34273
115k
        Token * _keyword;
34274
115k
        if (
34275
115k
            (_keyword = _PyPegen_expect_token(p, 624))  // token='None'
34276
115k
        )
34277
205
        {
34278
205
            D(fprintf(stderr, "%*c+ _tmp_111[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
34279
205
            _res = _keyword;
34280
205
            goto done;
34281
205
        }
34282
114k
        p->mark = _mark;
34283
114k
        D(fprintf(stderr, "%*c%s _tmp_111[%d-%d]: %s failed!\n", p->level, ' ',
34284
114k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
34285
114k
    }
34286
0
    _res = NULL;
34287
115k
  done:
34288
115k
    p->level--;
34289
115k
    return _res;
34290
114k
}
34291
34292
// _tmp_112: NAME '='
34293
static void *
34294
_tmp_112_rule(Parser *p)
34295
115k
{
34296
115k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34297
0
        _Pypegen_stack_overflow(p);
34298
0
    }
34299
115k
    if (p->error_indicator) {
34300
0
        p->level--;
34301
0
        return NULL;
34302
0
    }
34303
115k
    void * _res = NULL;
34304
115k
    int _mark = p->mark;
34305
115k
    { // NAME '='
34306
115k
        if (p->error_indicator) {
34307
0
            p->level--;
34308
0
            return NULL;
34309
0
        }
34310
115k
        D(fprintf(stderr, "%*c> _tmp_112[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '='"));
34311
115k
        Token * _literal;
34312
115k
        expr_ty name_var;
34313
115k
        if (
34314
115k
            (name_var = _PyPegen_name_token(p))  // NAME
34315
115k
            &&
34316
115k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
34317
115k
        )
34318
19.7k
        {
34319
19.7k
            D(fprintf(stderr, "%*c+ _tmp_112[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '='"));
34320
19.7k
            _res = _PyPegen_dummy_name(p, name_var, _literal);
34321
19.7k
            goto done;
34322
19.7k
        }
34323
95.4k
        p->mark = _mark;
34324
95.4k
        D(fprintf(stderr, "%*c%s _tmp_112[%d-%d]: %s failed!\n", p->level, ' ',
34325
95.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '='"));
34326
95.4k
    }
34327
0
    _res = NULL;
34328
115k
  done:
34329
115k
    p->level--;
34330
115k
    return _res;
34331
95.4k
}
34332
34333
// _loop1_113: (!STRING expression_without_invalid)
34334
static asdl_seq *
34335
_loop1_113_rule(Parser *p)
34336
3.70k
{
34337
3.70k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34338
1
        _Pypegen_stack_overflow(p);
34339
1
    }
34340
3.70k
    if (p->error_indicator) {
34341
1
        p->level--;
34342
1
        return NULL;
34343
1
    }
34344
3.70k
    void *_res = NULL;
34345
3.70k
    int _mark = p->mark;
34346
3.70k
    void **_children = PyMem_Malloc(sizeof(void *));
34347
3.70k
    if (!_children) {
34348
0
        p->error_indicator = 1;
34349
0
        PyErr_NoMemory();
34350
0
        p->level--;
34351
0
        return NULL;
34352
0
    }
34353
3.70k
    Py_ssize_t _children_capacity = 1;
34354
3.70k
    Py_ssize_t _n = 0;
34355
3.70k
    { // (!STRING expression_without_invalid)
34356
3.70k
        if (p->error_indicator) {
34357
0
            p->level--;
34358
0
            return NULL;
34359
0
        }
34360
3.70k
        D(fprintf(stderr, "%*c> _loop1_113[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(!STRING expression_without_invalid)"));
34361
3.70k
        void *_tmp_168_var;
34362
3.70k
        while (
34363
5.66k
            (_tmp_168_var = _tmp_168_rule(p))  // !STRING expression_without_invalid
34364
3.70k
        )
34365
1.95k
        {
34366
1.95k
            _res = _tmp_168_var;
34367
1.95k
            if (_n == _children_capacity) {
34368
358
                _children_capacity *= 2;
34369
358
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
34370
358
                if (!_new_children) {
34371
0
                    PyMem_Free(_children);
34372
0
                    p->error_indicator = 1;
34373
0
                    PyErr_NoMemory();
34374
0
                    p->level--;
34375
0
                    return NULL;
34376
0
                }
34377
358
                _children = _new_children;
34378
358
            }
34379
1.95k
            _children[_n++] = _res;
34380
1.95k
            _mark = p->mark;
34381
1.95k
        }
34382
3.70k
        p->mark = _mark;
34383
3.70k
        D(fprintf(stderr, "%*c%s _loop1_113[%d-%d]: %s failed!\n", p->level, ' ',
34384
3.70k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(!STRING expression_without_invalid)"));
34385
3.70k
    }
34386
3.70k
    if (_n == 0 || p->error_indicator) {
34387
2.61k
        PyMem_Free(_children);
34388
2.61k
        p->level--;
34389
2.61k
        return NULL;
34390
2.61k
    }
34391
1.09k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
34392
1.09k
    if (!_seq) {
34393
0
        PyMem_Free(_children);
34394
0
        p->error_indicator = 1;
34395
0
        PyErr_NoMemory();
34396
0
        p->level--;
34397
0
        return NULL;
34398
0
    }
34399
3.01k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
34400
1.09k
    PyMem_Free(_children);
34401
1.09k
    p->level--;
34402
1.09k
    return _seq;
34403
1.09k
}
34404
34405
// _tmp_114: NAME STRING | SOFT_KEYWORD
34406
static void *
34407
_tmp_114_rule(Parser *p)
34408
224k
{
34409
224k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34410
1
        _Pypegen_stack_overflow(p);
34411
1
    }
34412
224k
    if (p->error_indicator) {
34413
1
        p->level--;
34414
1
        return NULL;
34415
1
    }
34416
224k
    void * _res = NULL;
34417
224k
    int _mark = p->mark;
34418
224k
    { // NAME STRING
34419
224k
        if (p->error_indicator) {
34420
0
            p->level--;
34421
0
            return NULL;
34422
0
        }
34423
224k
        D(fprintf(stderr, "%*c> _tmp_114[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME STRING"));
34424
224k
        expr_ty name_var;
34425
224k
        expr_ty string_var;
34426
224k
        if (
34427
224k
            (name_var = _PyPegen_name_token(p))  // NAME
34428
224k
            &&
34429
224k
            (string_var = _PyPegen_string_token(p))  // STRING
34430
224k
        )
34431
393
        {
34432
393
            D(fprintf(stderr, "%*c+ _tmp_114[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME STRING"));
34433
393
            _res = _PyPegen_dummy_name(p, name_var, string_var);
34434
393
            goto done;
34435
393
        }
34436
224k
        p->mark = _mark;
34437
224k
        D(fprintf(stderr, "%*c%s _tmp_114[%d-%d]: %s failed!\n", p->level, ' ',
34438
224k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME STRING"));
34439
224k
    }
34440
0
    { // SOFT_KEYWORD
34441
224k
        if (p->error_indicator) {
34442
24
            p->level--;
34443
24
            return NULL;
34444
24
        }
34445
224k
        D(fprintf(stderr, "%*c> _tmp_114[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD"));
34446
224k
        expr_ty soft_keyword_var;
34447
224k
        if (
34448
224k
            (soft_keyword_var = _PyPegen_soft_keyword_token(p))  // SOFT_KEYWORD
34449
224k
        )
34450
4.48k
        {
34451
4.48k
            D(fprintf(stderr, "%*c+ _tmp_114[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD"));
34452
4.48k
            _res = soft_keyword_var;
34453
4.48k
            goto done;
34454
4.48k
        }
34455
219k
        p->mark = _mark;
34456
219k
        D(fprintf(stderr, "%*c%s _tmp_114[%d-%d]: %s failed!\n", p->level, ' ',
34457
219k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "SOFT_KEYWORD"));
34458
219k
    }
34459
0
    _res = NULL;
34460
224k
  done:
34461
224k
    p->level--;
34462
224k
    return _res;
34463
219k
}
34464
34465
// _tmp_115: 'else' | ':'
34466
static void *
34467
_tmp_115_rule(Parser *p)
34468
655
{
34469
655
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34470
0
        _Pypegen_stack_overflow(p);
34471
0
    }
34472
655
    if (p->error_indicator) {
34473
0
        p->level--;
34474
0
        return NULL;
34475
0
    }
34476
655
    void * _res = NULL;
34477
655
    int _mark = p->mark;
34478
655
    { // 'else'
34479
655
        if (p->error_indicator) {
34480
0
            p->level--;
34481
0
            return NULL;
34482
0
        }
34483
655
        D(fprintf(stderr, "%*c> _tmp_115[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else'"));
34484
655
        Token * _keyword;
34485
655
        if (
34486
655
            (_keyword = _PyPegen_expect_token(p, 691))  // token='else'
34487
655
        )
34488
626
        {
34489
626
            D(fprintf(stderr, "%*c+ _tmp_115[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else'"));
34490
626
            _res = _keyword;
34491
626
            goto done;
34492
626
        }
34493
29
        p->mark = _mark;
34494
29
        D(fprintf(stderr, "%*c%s _tmp_115[%d-%d]: %s failed!\n", p->level, ' ',
34495
29
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else'"));
34496
29
    }
34497
0
    { // ':'
34498
29
        if (p->error_indicator) {
34499
0
            p->level--;
34500
0
            return NULL;
34501
0
        }
34502
29
        D(fprintf(stderr, "%*c> _tmp_115[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
34503
29
        Token * _literal;
34504
29
        if (
34505
29
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
34506
29
        )
34507
8
        {
34508
8
            D(fprintf(stderr, "%*c+ _tmp_115[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
34509
8
            _res = _literal;
34510
8
            goto done;
34511
8
        }
34512
21
        p->mark = _mark;
34513
21
        D(fprintf(stderr, "%*c%s _tmp_115[%d-%d]: %s failed!\n", p->level, ' ',
34514
21
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
34515
21
    }
34516
0
    _res = NULL;
34517
655
  done:
34518
655
    p->level--;
34519
655
    return _res;
34520
21
}
34521
34522
// _tmp_116: pass_stmt | break_stmt | continue_stmt
34523
static void *
34524
_tmp_116_rule(Parser *p)
34525
192k
{
34526
192k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34527
0
        _Pypegen_stack_overflow(p);
34528
0
    }
34529
192k
    if (p->error_indicator) {
34530
0
        p->level--;
34531
0
        return NULL;
34532
0
    }
34533
192k
    void * _res = NULL;
34534
192k
    int _mark = p->mark;
34535
192k
    { // pass_stmt
34536
192k
        if (p->error_indicator) {
34537
0
            p->level--;
34538
0
            return NULL;
34539
0
        }
34540
192k
        D(fprintf(stderr, "%*c> _tmp_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pass_stmt"));
34541
192k
        stmt_ty pass_stmt_var;
34542
192k
        if (
34543
192k
            (pass_stmt_var = pass_stmt_rule(p))  // pass_stmt
34544
192k
        )
34545
577
        {
34546
577
            D(fprintf(stderr, "%*c+ _tmp_116[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pass_stmt"));
34547
577
            _res = pass_stmt_var;
34548
577
            goto done;
34549
577
        }
34550
191k
        p->mark = _mark;
34551
191k
        D(fprintf(stderr, "%*c%s _tmp_116[%d-%d]: %s failed!\n", p->level, ' ',
34552
191k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pass_stmt"));
34553
191k
    }
34554
0
    { // break_stmt
34555
191k
        if (p->error_indicator) {
34556
0
            p->level--;
34557
0
            return NULL;
34558
0
        }
34559
191k
        D(fprintf(stderr, "%*c> _tmp_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "break_stmt"));
34560
191k
        stmt_ty break_stmt_var;
34561
191k
        if (
34562
191k
            (break_stmt_var = break_stmt_rule(p))  // break_stmt
34563
191k
        )
34564
418
        {
34565
418
            D(fprintf(stderr, "%*c+ _tmp_116[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "break_stmt"));
34566
418
            _res = break_stmt_var;
34567
418
            goto done;
34568
418
        }
34569
191k
        p->mark = _mark;
34570
191k
        D(fprintf(stderr, "%*c%s _tmp_116[%d-%d]: %s failed!\n", p->level, ' ',
34571
191k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "break_stmt"));
34572
191k
    }
34573
0
    { // continue_stmt
34574
191k
        if (p->error_indicator) {
34575
0
            p->level--;
34576
0
            return NULL;
34577
0
        }
34578
191k
        D(fprintf(stderr, "%*c> _tmp_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "continue_stmt"));
34579
191k
        stmt_ty continue_stmt_var;
34580
191k
        if (
34581
191k
            (continue_stmt_var = continue_stmt_rule(p))  // continue_stmt
34582
191k
        )
34583
1.69k
        {
34584
1.69k
            D(fprintf(stderr, "%*c+ _tmp_116[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "continue_stmt"));
34585
1.69k
            _res = continue_stmt_var;
34586
1.69k
            goto done;
34587
1.69k
        }
34588
189k
        p->mark = _mark;
34589
189k
        D(fprintf(stderr, "%*c%s _tmp_116[%d-%d]: %s failed!\n", p->level, ' ',
34590
189k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "continue_stmt"));
34591
189k
    }
34592
0
    _res = NULL;
34593
192k
  done:
34594
192k
    p->level--;
34595
192k
    return _res;
34596
189k
}
34597
34598
// _tmp_117: '=' | ':='
34599
static void *
34600
_tmp_117_rule(Parser *p)
34601
73
{
34602
73
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34603
0
        _Pypegen_stack_overflow(p);
34604
0
    }
34605
73
    if (p->error_indicator) {
34606
0
        p->level--;
34607
0
        return NULL;
34608
0
    }
34609
73
    void * _res = NULL;
34610
73
    int _mark = p->mark;
34611
73
    { // '='
34612
73
        if (p->error_indicator) {
34613
0
            p->level--;
34614
0
            return NULL;
34615
0
        }
34616
73
        D(fprintf(stderr, "%*c> _tmp_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
34617
73
        Token * _literal;
34618
73
        if (
34619
73
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
34620
73
        )
34621
51
        {
34622
51
            D(fprintf(stderr, "%*c+ _tmp_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
34623
51
            _res = _literal;
34624
51
            goto done;
34625
51
        }
34626
22
        p->mark = _mark;
34627
22
        D(fprintf(stderr, "%*c%s _tmp_117[%d-%d]: %s failed!\n", p->level, ' ',
34628
22
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
34629
22
    }
34630
0
    { // ':='
34631
22
        if (p->error_indicator) {
34632
0
            p->level--;
34633
0
            return NULL;
34634
0
        }
34635
22
        D(fprintf(stderr, "%*c> _tmp_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':='"));
34636
22
        Token * _literal;
34637
22
        if (
34638
22
            (_literal = _PyPegen_expect_token(p, 53))  // token=':='
34639
22
        )
34640
5
        {
34641
5
            D(fprintf(stderr, "%*c+ _tmp_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':='"));
34642
5
            _res = _literal;
34643
5
            goto done;
34644
5
        }
34645
17
        p->mark = _mark;
34646
17
        D(fprintf(stderr, "%*c%s _tmp_117[%d-%d]: %s failed!\n", p->level, ' ',
34647
17
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':='"));
34648
17
    }
34649
0
    _res = NULL;
34650
73
  done:
34651
73
    p->level--;
34652
73
    return _res;
34653
17
}
34654
34655
// _tmp_118: list | tuple | genexp | 'True' | 'None' | 'False'
34656
static void *
34657
_tmp_118_rule(Parser *p)
34658
86.4k
{
34659
86.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34660
0
        _Pypegen_stack_overflow(p);
34661
0
    }
34662
86.4k
    if (p->error_indicator) {
34663
0
        p->level--;
34664
0
        return NULL;
34665
0
    }
34666
86.4k
    void * _res = NULL;
34667
86.4k
    int _mark = p->mark;
34668
86.4k
    { // list
34669
86.4k
        if (p->error_indicator) {
34670
0
            p->level--;
34671
0
            return NULL;
34672
0
        }
34673
86.4k
        D(fprintf(stderr, "%*c> _tmp_118[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
34674
86.4k
        expr_ty list_var;
34675
86.4k
        if (
34676
86.4k
            (list_var = list_rule(p))  // list
34677
86.4k
        )
34678
963
        {
34679
963
            D(fprintf(stderr, "%*c+ _tmp_118[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
34680
963
            _res = list_var;
34681
963
            goto done;
34682
963
        }
34683
85.4k
        p->mark = _mark;
34684
85.4k
        D(fprintf(stderr, "%*c%s _tmp_118[%d-%d]: %s failed!\n", p->level, ' ',
34685
85.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
34686
85.4k
    }
34687
0
    { // tuple
34688
85.4k
        if (p->error_indicator) {
34689
195
            p->level--;
34690
195
            return NULL;
34691
195
        }
34692
85.2k
        D(fprintf(stderr, "%*c> _tmp_118[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
34693
85.2k
        expr_ty tuple_var;
34694
85.2k
        if (
34695
85.2k
            (tuple_var = tuple_rule(p))  // tuple
34696
85.2k
        )
34697
3.93k
        {
34698
3.93k
            D(fprintf(stderr, "%*c+ _tmp_118[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
34699
3.93k
            _res = tuple_var;
34700
3.93k
            goto done;
34701
3.93k
        }
34702
81.3k
        p->mark = _mark;
34703
81.3k
        D(fprintf(stderr, "%*c%s _tmp_118[%d-%d]: %s failed!\n", p->level, ' ',
34704
81.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
34705
81.3k
    }
34706
0
    { // genexp
34707
81.3k
        if (p->error_indicator) {
34708
195
            p->level--;
34709
195
            return NULL;
34710
195
        }
34711
81.1k
        D(fprintf(stderr, "%*c> _tmp_118[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp"));
34712
81.1k
        expr_ty genexp_var;
34713
81.1k
        if (
34714
81.1k
            (genexp_var = genexp_rule(p))  // genexp
34715
81.1k
        )
34716
376
        {
34717
376
            D(fprintf(stderr, "%*c+ _tmp_118[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp"));
34718
376
            _res = genexp_var;
34719
376
            goto done;
34720
376
        }
34721
80.7k
        p->mark = _mark;
34722
80.7k
        D(fprintf(stderr, "%*c%s _tmp_118[%d-%d]: %s failed!\n", p->level, ' ',
34723
80.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "genexp"));
34724
80.7k
    }
34725
0
    { // 'True'
34726
80.7k
        if (p->error_indicator) {
34727
201
            p->level--;
34728
201
            return NULL;
34729
201
        }
34730
80.5k
        D(fprintf(stderr, "%*c> _tmp_118[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
34731
80.5k
        Token * _keyword;
34732
80.5k
        if (
34733
80.5k
            (_keyword = _PyPegen_expect_token(p, 623))  // token='True'
34734
80.5k
        )
34735
238
        {
34736
238
            D(fprintf(stderr, "%*c+ _tmp_118[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
34737
238
            _res = _keyword;
34738
238
            goto done;
34739
238
        }
34740
80.3k
        p->mark = _mark;
34741
80.3k
        D(fprintf(stderr, "%*c%s _tmp_118[%d-%d]: %s failed!\n", p->level, ' ',
34742
80.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
34743
80.3k
    }
34744
0
    { // 'None'
34745
80.3k
        if (p->error_indicator) {
34746
0
            p->level--;
34747
0
            return NULL;
34748
0
        }
34749
80.3k
        D(fprintf(stderr, "%*c> _tmp_118[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
34750
80.3k
        Token * _keyword;
34751
80.3k
        if (
34752
80.3k
            (_keyword = _PyPegen_expect_token(p, 624))  // token='None'
34753
80.3k
        )
34754
207
        {
34755
207
            D(fprintf(stderr, "%*c+ _tmp_118[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
34756
207
            _res = _keyword;
34757
207
            goto done;
34758
207
        }
34759
80.1k
        p->mark = _mark;
34760
80.1k
        D(fprintf(stderr, "%*c%s _tmp_118[%d-%d]: %s failed!\n", p->level, ' ',
34761
80.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
34762
80.1k
    }
34763
0
    { // 'False'
34764
80.1k
        if (p->error_indicator) {
34765
0
            p->level--;
34766
0
            return NULL;
34767
0
        }
34768
80.1k
        D(fprintf(stderr, "%*c> _tmp_118[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
34769
80.1k
        Token * _keyword;
34770
80.1k
        if (
34771
80.1k
            (_keyword = _PyPegen_expect_token(p, 625))  // token='False'
34772
80.1k
        )
34773
195
        {
34774
195
            D(fprintf(stderr, "%*c+ _tmp_118[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
34775
195
            _res = _keyword;
34776
195
            goto done;
34777
195
        }
34778
79.9k
        p->mark = _mark;
34779
79.9k
        D(fprintf(stderr, "%*c%s _tmp_118[%d-%d]: %s failed!\n", p->level, ' ',
34780
79.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
34781
79.9k
    }
34782
0
    _res = NULL;
34783
85.8k
  done:
34784
85.8k
    p->level--;
34785
85.8k
    return _res;
34786
79.9k
}
34787
34788
// _loop0_119: star_named_expressions
34789
static asdl_seq *
34790
_loop0_119_rule(Parser *p)
34791
1.64k
{
34792
1.64k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34793
0
        _Pypegen_stack_overflow(p);
34794
0
    }
34795
1.64k
    if (p->error_indicator) {
34796
0
        p->level--;
34797
0
        return NULL;
34798
0
    }
34799
1.64k
    void *_res = NULL;
34800
1.64k
    int _mark = p->mark;
34801
1.64k
    void **_children = PyMem_Malloc(sizeof(void *));
34802
1.64k
    if (!_children) {
34803
0
        p->error_indicator = 1;
34804
0
        PyErr_NoMemory();
34805
0
        p->level--;
34806
0
        return NULL;
34807
0
    }
34808
1.64k
    Py_ssize_t _children_capacity = 1;
34809
1.64k
    Py_ssize_t _n = 0;
34810
1.64k
    { // star_named_expressions
34811
1.64k
        if (p->error_indicator) {
34812
0
            p->level--;
34813
0
            return NULL;
34814
0
        }
34815
1.64k
        D(fprintf(stderr, "%*c> _loop0_119[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expressions"));
34816
1.64k
        asdl_expr_seq* star_named_expressions_var;
34817
1.64k
        while (
34818
3.81k
            (star_named_expressions_var = star_named_expressions_rule(p))  // star_named_expressions
34819
1.64k
        )
34820
2.17k
        {
34821
2.17k
            _res = star_named_expressions_var;
34822
2.17k
            if (_n == _children_capacity) {
34823
258
                _children_capacity *= 2;
34824
258
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
34825
258
                if (!_new_children) {
34826
0
                    PyMem_Free(_children);
34827
0
                    p->error_indicator = 1;
34828
0
                    PyErr_NoMemory();
34829
0
                    p->level--;
34830
0
                    return NULL;
34831
0
                }
34832
258
                _children = _new_children;
34833
258
            }
34834
2.17k
            _children[_n++] = _res;
34835
2.17k
            _mark = p->mark;
34836
2.17k
        }
34837
1.64k
        p->mark = _mark;
34838
1.64k
        D(fprintf(stderr, "%*c%s _loop0_119[%d-%d]: %s failed!\n", p->level, ' ',
34839
1.64k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expressions"));
34840
1.64k
    }
34841
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
34842
1.64k
    if (!_seq) {
34843
0
        PyMem_Free(_children);
34844
0
        p->error_indicator = 1;
34845
0
        PyErr_NoMemory();
34846
0
        p->level--;
34847
0
        return NULL;
34848
0
    }
34849
3.81k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
34850
1.64k
    PyMem_Free(_children);
34851
1.64k
    p->level--;
34852
1.64k
    return _seq;
34853
1.64k
}
34854
34855
// _loop0_120: (star_targets '=')
34856
static asdl_seq *
34857
_loop0_120_rule(Parser *p)
34858
76.9k
{
34859
76.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34860
0
        _Pypegen_stack_overflow(p);
34861
0
    }
34862
76.9k
    if (p->error_indicator) {
34863
0
        p->level--;
34864
0
        return NULL;
34865
0
    }
34866
76.9k
    void *_res = NULL;
34867
76.9k
    int _mark = p->mark;
34868
76.9k
    void **_children = PyMem_Malloc(sizeof(void *));
34869
76.9k
    if (!_children) {
34870
0
        p->error_indicator = 1;
34871
0
        PyErr_NoMemory();
34872
0
        p->level--;
34873
0
        return NULL;
34874
0
    }
34875
76.9k
    Py_ssize_t _children_capacity = 1;
34876
76.9k
    Py_ssize_t _n = 0;
34877
76.9k
    { // (star_targets '=')
34878
76.9k
        if (p->error_indicator) {
34879
0
            p->level--;
34880
0
            return NULL;
34881
0
        }
34882
76.9k
        D(fprintf(stderr, "%*c> _loop0_120[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
34883
76.9k
        void *_tmp_156_var;
34884
76.9k
        while (
34885
77.8k
            (_tmp_156_var = _tmp_156_rule(p))  // star_targets '='
34886
76.9k
        )
34887
947
        {
34888
947
            _res = _tmp_156_var;
34889
947
            if (_n == _children_capacity) {
34890
140
                _children_capacity *= 2;
34891
140
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
34892
140
                if (!_new_children) {
34893
0
                    PyMem_Free(_children);
34894
0
                    p->error_indicator = 1;
34895
0
                    PyErr_NoMemory();
34896
0
                    p->level--;
34897
0
                    return NULL;
34898
0
                }
34899
140
                _children = _new_children;
34900
140
            }
34901
947
            _children[_n++] = _res;
34902
947
            _mark = p->mark;
34903
947
        }
34904
76.9k
        p->mark = _mark;
34905
76.9k
        D(fprintf(stderr, "%*c%s _loop0_120[%d-%d]: %s failed!\n", p->level, ' ',
34906
76.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
34907
76.9k
    }
34908
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
34909
76.9k
    if (!_seq) {
34910
0
        PyMem_Free(_children);
34911
0
        p->error_indicator = 1;
34912
0
        PyErr_NoMemory();
34913
0
        p->level--;
34914
0
        return NULL;
34915
0
    }
34916
77.8k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
34917
76.9k
    PyMem_Free(_children);
34918
76.9k
    p->level--;
34919
76.9k
    return _seq;
34920
76.9k
}
34921
34922
// _tmp_121: '[' | '(' | '{'
34923
static void *
34924
_tmp_121_rule(Parser *p)
34925
225k
{
34926
225k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34927
1
        _Pypegen_stack_overflow(p);
34928
1
    }
34929
225k
    if (p->error_indicator) {
34930
1
        p->level--;
34931
1
        return NULL;
34932
1
    }
34933
225k
    void * _res = NULL;
34934
225k
    int _mark = p->mark;
34935
225k
    { // '['
34936
225k
        if (p->error_indicator) {
34937
0
            p->level--;
34938
0
            return NULL;
34939
0
        }
34940
225k
        D(fprintf(stderr, "%*c> _tmp_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
34941
225k
        Token * _literal;
34942
225k
        if (
34943
225k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
34944
225k
        )
34945
20.1k
        {
34946
20.1k
            D(fprintf(stderr, "%*c+ _tmp_121[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
34947
20.1k
            _res = _literal;
34948
20.1k
            goto done;
34949
20.1k
        }
34950
205k
        p->mark = _mark;
34951
205k
        D(fprintf(stderr, "%*c%s _tmp_121[%d-%d]: %s failed!\n", p->level, ' ',
34952
205k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
34953
205k
    }
34954
0
    { // '('
34955
205k
        if (p->error_indicator) {
34956
0
            p->level--;
34957
0
            return NULL;
34958
0
        }
34959
205k
        D(fprintf(stderr, "%*c> _tmp_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
34960
205k
        Token * _literal;
34961
205k
        if (
34962
205k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
34963
205k
        )
34964
20.6k
        {
34965
20.6k
            D(fprintf(stderr, "%*c+ _tmp_121[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
34966
20.6k
            _res = _literal;
34967
20.6k
            goto done;
34968
20.6k
        }
34969
184k
        p->mark = _mark;
34970
184k
        D(fprintf(stderr, "%*c%s _tmp_121[%d-%d]: %s failed!\n", p->level, ' ',
34971
184k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
34972
184k
    }
34973
0
    { // '{'
34974
184k
        if (p->error_indicator) {
34975
0
            p->level--;
34976
0
            return NULL;
34977
0
        }
34978
184k
        D(fprintf(stderr, "%*c> _tmp_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'"));
34979
184k
        Token * _literal;
34980
184k
        if (
34981
184k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
34982
184k
        )
34983
6.65k
        {
34984
6.65k
            D(fprintf(stderr, "%*c+ _tmp_121[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'"));
34985
6.65k
            _res = _literal;
34986
6.65k
            goto done;
34987
6.65k
        }
34988
177k
        p->mark = _mark;
34989
177k
        D(fprintf(stderr, "%*c%s _tmp_121[%d-%d]: %s failed!\n", p->level, ' ',
34990
177k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'"));
34991
177k
    }
34992
0
    _res = NULL;
34993
225k
  done:
34994
225k
    p->level--;
34995
225k
    return _res;
34996
177k
}
34997
34998
// _tmp_122: '[' | '{'
34999
static void *
35000
_tmp_122_rule(Parser *p)
35001
447k
{
35002
447k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35003
0
        _Pypegen_stack_overflow(p);
35004
0
    }
35005
447k
    if (p->error_indicator) {
35006
0
        p->level--;
35007
0
        return NULL;
35008
0
    }
35009
447k
    void * _res = NULL;
35010
447k
    int _mark = p->mark;
35011
447k
    { // '['
35012
447k
        if (p->error_indicator) {
35013
0
            p->level--;
35014
0
            return NULL;
35015
0
        }
35016
447k
        D(fprintf(stderr, "%*c> _tmp_122[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
35017
447k
        Token * _literal;
35018
447k
        if (
35019
447k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
35020
447k
        )
35021
39.2k
        {
35022
39.2k
            D(fprintf(stderr, "%*c+ _tmp_122[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
35023
39.2k
            _res = _literal;
35024
39.2k
            goto done;
35025
39.2k
        }
35026
408k
        p->mark = _mark;
35027
408k
        D(fprintf(stderr, "%*c%s _tmp_122[%d-%d]: %s failed!\n", p->level, ' ',
35028
408k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
35029
408k
    }
35030
0
    { // '{'
35031
408k
        if (p->error_indicator) {
35032
0
            p->level--;
35033
0
            return NULL;
35034
0
        }
35035
408k
        D(fprintf(stderr, "%*c> _tmp_122[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'"));
35036
408k
        Token * _literal;
35037
408k
        if (
35038
408k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
35039
408k
        )
35040
12.1k
        {
35041
12.1k
            D(fprintf(stderr, "%*c+ _tmp_122[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'"));
35042
12.1k
            _res = _literal;
35043
12.1k
            goto done;
35044
12.1k
        }
35045
395k
        p->mark = _mark;
35046
395k
        D(fprintf(stderr, "%*c%s _tmp_122[%d-%d]: %s failed!\n", p->level, ' ',
35047
395k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'"));
35048
395k
    }
35049
0
    _res = NULL;
35050
447k
  done:
35051
447k
    p->level--;
35052
447k
    return _res;
35053
395k
}
35054
35055
// _tmp_123: slash_no_default | slash_with_default
35056
static void *
35057
_tmp_123_rule(Parser *p)
35058
10.1k
{
35059
10.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35060
0
        _Pypegen_stack_overflow(p);
35061
0
    }
35062
10.1k
    if (p->error_indicator) {
35063
0
        p->level--;
35064
0
        return NULL;
35065
0
    }
35066
10.1k
    void * _res = NULL;
35067
10.1k
    int _mark = p->mark;
35068
10.1k
    { // slash_no_default
35069
10.1k
        if (p->error_indicator) {
35070
0
            p->level--;
35071
0
            return NULL;
35072
0
        }
35073
10.1k
        D(fprintf(stderr, "%*c> _tmp_123[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_no_default"));
35074
10.1k
        asdl_arg_seq* slash_no_default_var;
35075
10.1k
        if (
35076
10.1k
            (slash_no_default_var = slash_no_default_rule(p))  // slash_no_default
35077
10.1k
        )
35078
1.02k
        {
35079
1.02k
            D(fprintf(stderr, "%*c+ _tmp_123[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_no_default"));
35080
1.02k
            _res = slash_no_default_var;
35081
1.02k
            goto done;
35082
1.02k
        }
35083
9.10k
        p->mark = _mark;
35084
9.10k
        D(fprintf(stderr, "%*c%s _tmp_123[%d-%d]: %s failed!\n", p->level, ' ',
35085
9.10k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_no_default"));
35086
9.10k
    }
35087
0
    { // slash_with_default
35088
9.10k
        if (p->error_indicator) {
35089
1
            p->level--;
35090
1
            return NULL;
35091
1
        }
35092
9.09k
        D(fprintf(stderr, "%*c> _tmp_123[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
35093
9.09k
        SlashWithDefault* slash_with_default_var;
35094
9.09k
        if (
35095
9.09k
            (slash_with_default_var = slash_with_default_rule(p))  // slash_with_default
35096
9.09k
        )
35097
875
        {
35098
875
            D(fprintf(stderr, "%*c+ _tmp_123[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
35099
875
            _res = slash_with_default_var;
35100
875
            goto done;
35101
875
        }
35102
8.22k
        p->mark = _mark;
35103
8.22k
        D(fprintf(stderr, "%*c%s _tmp_123[%d-%d]: %s failed!\n", p->level, ' ',
35104
8.22k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default"));
35105
8.22k
    }
35106
0
    _res = NULL;
35107
10.1k
  done:
35108
10.1k
    p->level--;
35109
10.1k
    return _res;
35110
8.22k
}
35111
35112
// _tmp_124: ',' | param_no_default
35113
static void *
35114
_tmp_124_rule(Parser *p)
35115
1.50k
{
35116
1.50k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35117
0
        _Pypegen_stack_overflow(p);
35118
0
    }
35119
1.50k
    if (p->error_indicator) {
35120
0
        p->level--;
35121
0
        return NULL;
35122
0
    }
35123
1.50k
    void * _res = NULL;
35124
1.50k
    int _mark = p->mark;
35125
1.50k
    { // ','
35126
1.50k
        if (p->error_indicator) {
35127
0
            p->level--;
35128
0
            return NULL;
35129
0
        }
35130
1.50k
        D(fprintf(stderr, "%*c> _tmp_124[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
35131
1.50k
        Token * _literal;
35132
1.50k
        if (
35133
1.50k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35134
1.50k
        )
35135
574
        {
35136
574
            D(fprintf(stderr, "%*c+ _tmp_124[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
35137
574
            _res = _literal;
35138
574
            goto done;
35139
574
        }
35140
934
        p->mark = _mark;
35141
934
        D(fprintf(stderr, "%*c%s _tmp_124[%d-%d]: %s failed!\n", p->level, ' ',
35142
934
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
35143
934
    }
35144
0
    { // param_no_default
35145
934
        if (p->error_indicator) {
35146
0
            p->level--;
35147
0
            return NULL;
35148
0
        }
35149
934
        D(fprintf(stderr, "%*c> _tmp_124[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
35150
934
        arg_ty param_no_default_var;
35151
934
        if (
35152
934
            (param_no_default_var = param_no_default_rule(p))  // param_no_default
35153
934
        )
35154
449
        {
35155
449
            D(fprintf(stderr, "%*c+ _tmp_124[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default"));
35156
449
            _res = param_no_default_var;
35157
449
            goto done;
35158
449
        }
35159
485
        p->mark = _mark;
35160
485
        D(fprintf(stderr, "%*c%s _tmp_124[%d-%d]: %s failed!\n", p->level, ' ',
35161
485
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
35162
485
    }
35163
0
    _res = NULL;
35164
1.50k
  done:
35165
1.50k
    p->level--;
35166
1.50k
    return _res;
35167
485
}
35168
35169
// _tmp_125: ')' | ','
35170
static void *
35171
_tmp_125_rule(Parser *p)
35172
26.1k
{
35173
26.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35174
0
        _Pypegen_stack_overflow(p);
35175
0
    }
35176
26.1k
    if (p->error_indicator) {
35177
0
        p->level--;
35178
0
        return NULL;
35179
0
    }
35180
26.1k
    void * _res = NULL;
35181
26.1k
    int _mark = p->mark;
35182
26.1k
    { // ')'
35183
26.1k
        if (p->error_indicator) {
35184
0
            p->level--;
35185
0
            return NULL;
35186
0
        }
35187
26.1k
        D(fprintf(stderr, "%*c> _tmp_125[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
35188
26.1k
        Token * _literal;
35189
26.1k
        if (
35190
26.1k
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
35191
26.1k
        )
35192
2
        {
35193
2
            D(fprintf(stderr, "%*c+ _tmp_125[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
35194
2
            _res = _literal;
35195
2
            goto done;
35196
2
        }
35197
26.1k
        p->mark = _mark;
35198
26.1k
        D(fprintf(stderr, "%*c%s _tmp_125[%d-%d]: %s failed!\n", p->level, ' ',
35199
26.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
35200
26.1k
    }
35201
0
    { // ','
35202
26.1k
        if (p->error_indicator) {
35203
0
            p->level--;
35204
0
            return NULL;
35205
0
        }
35206
26.1k
        D(fprintf(stderr, "%*c> _tmp_125[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
35207
26.1k
        Token * _literal;
35208
26.1k
        if (
35209
26.1k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35210
26.1k
        )
35211
12
        {
35212
12
            D(fprintf(stderr, "%*c+ _tmp_125[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
35213
12
            _res = _literal;
35214
12
            goto done;
35215
12
        }
35216
26.1k
        p->mark = _mark;
35217
26.1k
        D(fprintf(stderr, "%*c%s _tmp_125[%d-%d]: %s failed!\n", p->level, ' ',
35218
26.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
35219
26.1k
    }
35220
0
    _res = NULL;
35221
26.1k
  done:
35222
26.1k
    p->level--;
35223
26.1k
    return _res;
35224
26.1k
}
35225
35226
// _tmp_126: ')' | ',' (')' | '**')
35227
static void *
35228
_tmp_126_rule(Parser *p)
35229
1.50k
{
35230
1.50k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35231
0
        _Pypegen_stack_overflow(p);
35232
0
    }
35233
1.50k
    if (p->error_indicator) {
35234
0
        p->level--;
35235
0
        return NULL;
35236
0
    }
35237
1.50k
    void * _res = NULL;
35238
1.50k
    int _mark = p->mark;
35239
1.50k
    { // ')'
35240
1.50k
        if (p->error_indicator) {
35241
0
            p->level--;
35242
0
            return NULL;
35243
0
        }
35244
1.50k
        D(fprintf(stderr, "%*c> _tmp_126[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
35245
1.50k
        Token * _literal;
35246
1.50k
        if (
35247
1.50k
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
35248
1.50k
        )
35249
1
        {
35250
1
            D(fprintf(stderr, "%*c+ _tmp_126[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
35251
1
            _res = _literal;
35252
1
            goto done;
35253
1
        }
35254
1.50k
        p->mark = _mark;
35255
1.50k
        D(fprintf(stderr, "%*c%s _tmp_126[%d-%d]: %s failed!\n", p->level, ' ',
35256
1.50k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
35257
1.50k
    }
35258
0
    { // ',' (')' | '**')
35259
1.50k
        if (p->error_indicator) {
35260
0
            p->level--;
35261
0
            return NULL;
35262
0
        }
35263
1.50k
        D(fprintf(stderr, "%*c> _tmp_126[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')"));
35264
1.50k
        Token * _literal;
35265
1.50k
        void *_tmp_169_var;
35266
1.50k
        if (
35267
1.50k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35268
1.50k
            &&
35269
1.50k
            (_tmp_169_var = _tmp_169_rule(p))  // ')' | '**'
35270
1.50k
        )
35271
2
        {
35272
2
            D(fprintf(stderr, "%*c+ _tmp_126[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')"));
35273
2
            _res = _PyPegen_dummy_name(p, _literal, _tmp_169_var);
35274
2
            goto done;
35275
2
        }
35276
1.50k
        p->mark = _mark;
35277
1.50k
        D(fprintf(stderr, "%*c%s _tmp_126[%d-%d]: %s failed!\n", p->level, ' ',
35278
1.50k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (')' | '**')"));
35279
1.50k
    }
35280
0
    _res = NULL;
35281
1.50k
  done:
35282
1.50k
    p->level--;
35283
1.50k
    return _res;
35284
1.50k
}
35285
35286
// _tmp_127: param_no_default | ','
35287
static void *
35288
_tmp_127_rule(Parser *p)
35289
1.50k
{
35290
1.50k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35291
0
        _Pypegen_stack_overflow(p);
35292
0
    }
35293
1.50k
    if (p->error_indicator) {
35294
0
        p->level--;
35295
0
        return NULL;
35296
0
    }
35297
1.50k
    void * _res = NULL;
35298
1.50k
    int _mark = p->mark;
35299
1.50k
    { // param_no_default
35300
1.50k
        if (p->error_indicator) {
35301
0
            p->level--;
35302
0
            return NULL;
35303
0
        }
35304
1.50k
        D(fprintf(stderr, "%*c> _tmp_127[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
35305
1.50k
        arg_ty param_no_default_var;
35306
1.50k
        if (
35307
1.50k
            (param_no_default_var = param_no_default_rule(p))  // param_no_default
35308
1.50k
        )
35309
447
        {
35310
447
            D(fprintf(stderr, "%*c+ _tmp_127[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default"));
35311
447
            _res = param_no_default_var;
35312
447
            goto done;
35313
447
        }
35314
1.06k
        p->mark = _mark;
35315
1.06k
        D(fprintf(stderr, "%*c%s _tmp_127[%d-%d]: %s failed!\n", p->level, ' ',
35316
1.06k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
35317
1.06k
    }
35318
0
    { // ','
35319
1.06k
        if (p->error_indicator) {
35320
1
            p->level--;
35321
1
            return NULL;
35322
1
        }
35323
1.05k
        D(fprintf(stderr, "%*c> _tmp_127[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
35324
1.05k
        Token * _literal;
35325
1.05k
        if (
35326
1.05k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35327
1.05k
        )
35328
573
        {
35329
573
            D(fprintf(stderr, "%*c+ _tmp_127[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
35330
573
            _res = _literal;
35331
573
            goto done;
35332
573
        }
35333
486
        p->mark = _mark;
35334
486
        D(fprintf(stderr, "%*c%s _tmp_127[%d-%d]: %s failed!\n", p->level, ' ',
35335
486
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
35336
486
    }
35337
0
    _res = NULL;
35338
1.50k
  done:
35339
1.50k
    p->level--;
35340
1.50k
    return _res;
35341
486
}
35342
35343
// _tmp_128: '*' | '**' | '/'
35344
static void *
35345
_tmp_128_rule(Parser *p)
35346
46
{
35347
46
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35348
0
        _Pypegen_stack_overflow(p);
35349
0
    }
35350
46
    if (p->error_indicator) {
35351
0
        p->level--;
35352
0
        return NULL;
35353
0
    }
35354
46
    void * _res = NULL;
35355
46
    int _mark = p->mark;
35356
46
    { // '*'
35357
46
        if (p->error_indicator) {
35358
0
            p->level--;
35359
0
            return NULL;
35360
0
        }
35361
46
        D(fprintf(stderr, "%*c> _tmp_128[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
35362
46
        Token * _literal;
35363
46
        if (
35364
46
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
35365
46
        )
35366
1
        {
35367
1
            D(fprintf(stderr, "%*c+ _tmp_128[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
35368
1
            _res = _literal;
35369
1
            goto done;
35370
1
        }
35371
45
        p->mark = _mark;
35372
45
        D(fprintf(stderr, "%*c%s _tmp_128[%d-%d]: %s failed!\n", p->level, ' ',
35373
45
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
35374
45
    }
35375
0
    { // '**'
35376
45
        if (p->error_indicator) {
35377
0
            p->level--;
35378
0
            return NULL;
35379
0
        }
35380
45
        D(fprintf(stderr, "%*c> _tmp_128[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
35381
45
        Token * _literal;
35382
45
        if (
35383
45
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
35384
45
        )
35385
2
        {
35386
2
            D(fprintf(stderr, "%*c+ _tmp_128[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'"));
35387
2
            _res = _literal;
35388
2
            goto done;
35389
2
        }
35390
43
        p->mark = _mark;
35391
43
        D(fprintf(stderr, "%*c%s _tmp_128[%d-%d]: %s failed!\n", p->level, ' ',
35392
43
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
35393
43
    }
35394
0
    { // '/'
35395
43
        if (p->error_indicator) {
35396
0
            p->level--;
35397
0
            return NULL;
35398
0
        }
35399
43
        D(fprintf(stderr, "%*c> _tmp_128[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/'"));
35400
43
        Token * _literal;
35401
43
        if (
35402
43
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
35403
43
        )
35404
1
        {
35405
1
            D(fprintf(stderr, "%*c+ _tmp_128[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'/'"));
35406
1
            _res = _literal;
35407
1
            goto done;
35408
1
        }
35409
42
        p->mark = _mark;
35410
42
        D(fprintf(stderr, "%*c%s _tmp_128[%d-%d]: %s failed!\n", p->level, ' ',
35411
42
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'/'"));
35412
42
    }
35413
0
    _res = NULL;
35414
46
  done:
35415
46
    p->level--;
35416
46
    return _res;
35417
42
}
35418
35419
// _tmp_129: lambda_slash_no_default | lambda_slash_with_default
35420
static void *
35421
_tmp_129_rule(Parser *p)
35422
16.6k
{
35423
16.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35424
0
        _Pypegen_stack_overflow(p);
35425
0
    }
35426
16.6k
    if (p->error_indicator) {
35427
0
        p->level--;
35428
0
        return NULL;
35429
0
    }
35430
16.6k
    void * _res = NULL;
35431
16.6k
    int _mark = p->mark;
35432
16.6k
    { // lambda_slash_no_default
35433
16.6k
        if (p->error_indicator) {
35434
0
            p->level--;
35435
0
            return NULL;
35436
0
        }
35437
16.6k
        D(fprintf(stderr, "%*c> _tmp_129[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default"));
35438
16.6k
        asdl_arg_seq* lambda_slash_no_default_var;
35439
16.6k
        if (
35440
16.6k
            (lambda_slash_no_default_var = lambda_slash_no_default_rule(p))  // lambda_slash_no_default
35441
16.6k
        )
35442
789
        {
35443
789
            D(fprintf(stderr, "%*c+ _tmp_129[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default"));
35444
789
            _res = lambda_slash_no_default_var;
35445
789
            goto done;
35446
789
        }
35447
15.8k
        p->mark = _mark;
35448
15.8k
        D(fprintf(stderr, "%*c%s _tmp_129[%d-%d]: %s failed!\n", p->level, ' ',
35449
15.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_no_default"));
35450
15.8k
    }
35451
0
    { // lambda_slash_with_default
35452
15.8k
        if (p->error_indicator) {
35453
1
            p->level--;
35454
1
            return NULL;
35455
1
        }
35456
15.8k
        D(fprintf(stderr, "%*c> _tmp_129[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
35457
15.8k
        SlashWithDefault* lambda_slash_with_default_var;
35458
15.8k
        if (
35459
15.8k
            (lambda_slash_with_default_var = lambda_slash_with_default_rule(p))  // lambda_slash_with_default
35460
15.8k
        )
35461
1.58k
        {
35462
1.58k
            D(fprintf(stderr, "%*c+ _tmp_129[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
35463
1.58k
            _res = lambda_slash_with_default_var;
35464
1.58k
            goto done;
35465
1.58k
        }
35466
14.2k
        p->mark = _mark;
35467
14.2k
        D(fprintf(stderr, "%*c%s _tmp_129[%d-%d]: %s failed!\n", p->level, ' ',
35468
14.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default"));
35469
14.2k
    }
35470
0
    _res = NULL;
35471
16.6k
  done:
35472
16.6k
    p->level--;
35473
16.6k
    return _res;
35474
14.2k
}
35475
35476
// _loop0_130: ',' lambda_param
35477
static asdl_seq *
35478
_loop0_130_rule(Parser *p)
35479
55
{
35480
55
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35481
0
        _Pypegen_stack_overflow(p);
35482
0
    }
35483
55
    if (p->error_indicator) {
35484
0
        p->level--;
35485
0
        return NULL;
35486
0
    }
35487
55
    void *_res = NULL;
35488
55
    int _mark = p->mark;
35489
55
    void **_children = PyMem_Malloc(sizeof(void *));
35490
55
    if (!_children) {
35491
0
        p->error_indicator = 1;
35492
0
        PyErr_NoMemory();
35493
0
        p->level--;
35494
0
        return NULL;
35495
0
    }
35496
55
    Py_ssize_t _children_capacity = 1;
35497
55
    Py_ssize_t _n = 0;
35498
55
    { // ',' lambda_param
35499
55
        if (p->error_indicator) {
35500
0
            p->level--;
35501
0
            return NULL;
35502
0
        }
35503
55
        D(fprintf(stderr, "%*c> _loop0_130[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' lambda_param"));
35504
55
        Token * _literal;
35505
55
        arg_ty elem;
35506
55
        while (
35507
3.70k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35508
3.70k
            &&
35509
3.70k
            (elem = lambda_param_rule(p))  // lambda_param
35510
55
        )
35511
3.65k
        {
35512
3.65k
            _res = elem;
35513
3.65k
            if (_res == NULL && PyErr_Occurred()) {
35514
0
                p->error_indicator = 1;
35515
0
                PyMem_Free(_children);
35516
0
                p->level--;
35517
0
                return NULL;
35518
0
            }
35519
3.65k
            if (_n == _children_capacity) {
35520
164
                _children_capacity *= 2;
35521
164
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
35522
164
                if (!_new_children) {
35523
0
                    PyMem_Free(_children);
35524
0
                    p->error_indicator = 1;
35525
0
                    PyErr_NoMemory();
35526
0
                    p->level--;
35527
0
                    return NULL;
35528
0
                }
35529
164
                _children = _new_children;
35530
164
            }
35531
3.65k
            _children[_n++] = _res;
35532
3.65k
            _mark = p->mark;
35533
3.65k
        }
35534
55
        p->mark = _mark;
35535
55
        D(fprintf(stderr, "%*c%s _loop0_130[%d-%d]: %s failed!\n", p->level, ' ',
35536
55
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' lambda_param"));
35537
55
    }
35538
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
35539
55
    if (!_seq) {
35540
0
        PyMem_Free(_children);
35541
0
        p->error_indicator = 1;
35542
0
        PyErr_NoMemory();
35543
0
        p->level--;
35544
0
        return NULL;
35545
0
    }
35546
3.70k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
35547
55
    PyMem_Free(_children);
35548
55
    p->level--;
35549
55
    return _seq;
35550
55
}
35551
35552
// _gather_131: lambda_param _loop0_130
35553
static asdl_seq *
35554
_gather_131_rule(Parser *p)
35555
61
{
35556
61
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35557
0
        _Pypegen_stack_overflow(p);
35558
0
    }
35559
61
    if (p->error_indicator) {
35560
0
        p->level--;
35561
0
        return NULL;
35562
0
    }
35563
61
    asdl_seq * _res = NULL;
35564
61
    int _mark = p->mark;
35565
61
    { // lambda_param _loop0_130
35566
61
        if (p->error_indicator) {
35567
0
            p->level--;
35568
0
            return NULL;
35569
0
        }
35570
61
        D(fprintf(stderr, "%*c> _gather_131[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param _loop0_130"));
35571
61
        arg_ty elem;
35572
61
        asdl_seq * seq;
35573
61
        if (
35574
61
            (elem = lambda_param_rule(p))  // lambda_param
35575
61
            &&
35576
61
            (seq = _loop0_130_rule(p))  // _loop0_130
35577
61
        )
35578
55
        {
35579
55
            D(fprintf(stderr, "%*c+ _gather_131[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param _loop0_130"));
35580
55
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
35581
55
            goto done;
35582
55
        }
35583
6
        p->mark = _mark;
35584
6
        D(fprintf(stderr, "%*c%s _gather_131[%d-%d]: %s failed!\n", p->level, ' ',
35585
6
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param _loop0_130"));
35586
6
    }
35587
0
    _res = NULL;
35588
61
  done:
35589
61
    p->level--;
35590
61
    return _res;
35591
6
}
35592
35593
// _tmp_132: ',' | lambda_param_no_default
35594
static void *
35595
_tmp_132_rule(Parser *p)
35596
2.89k
{
35597
2.89k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35598
0
        _Pypegen_stack_overflow(p);
35599
0
    }
35600
2.89k
    if (p->error_indicator) {
35601
0
        p->level--;
35602
0
        return NULL;
35603
0
    }
35604
2.89k
    void * _res = NULL;
35605
2.89k
    int _mark = p->mark;
35606
2.89k
    { // ','
35607
2.89k
        if (p->error_indicator) {
35608
0
            p->level--;
35609
0
            return NULL;
35610
0
        }
35611
2.89k
        D(fprintf(stderr, "%*c> _tmp_132[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
35612
2.89k
        Token * _literal;
35613
2.89k
        if (
35614
2.89k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35615
2.89k
        )
35616
1.55k
        {
35617
1.55k
            D(fprintf(stderr, "%*c+ _tmp_132[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
35618
1.55k
            _res = _literal;
35619
1.55k
            goto done;
35620
1.55k
        }
35621
1.34k
        p->mark = _mark;
35622
1.34k
        D(fprintf(stderr, "%*c%s _tmp_132[%d-%d]: %s failed!\n", p->level, ' ',
35623
1.34k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
35624
1.34k
    }
35625
0
    { // lambda_param_no_default
35626
1.34k
        if (p->error_indicator) {
35627
1
            p->level--;
35628
1
            return NULL;
35629
1
        }
35630
1.34k
        D(fprintf(stderr, "%*c> _tmp_132[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
35631
1.34k
        arg_ty lambda_param_no_default_var;
35632
1.34k
        if (
35633
1.34k
            (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
35634
1.34k
        )
35635
948
        {
35636
948
            D(fprintf(stderr, "%*c+ _tmp_132[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
35637
948
            _res = lambda_param_no_default_var;
35638
948
            goto done;
35639
948
        }
35640
396
        p->mark = _mark;
35641
396
        D(fprintf(stderr, "%*c%s _tmp_132[%d-%d]: %s failed!\n", p->level, ' ',
35642
396
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
35643
396
    }
35644
0
    _res = NULL;
35645
2.89k
  done:
35646
2.89k
    p->level--;
35647
2.89k
    return _res;
35648
396
}
35649
35650
// _tmp_133: ':' | ',' (':' | '**')
35651
static void *
35652
_tmp_133_rule(Parser *p)
35653
2.66k
{
35654
2.66k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35655
0
        _Pypegen_stack_overflow(p);
35656
0
    }
35657
2.66k
    if (p->error_indicator) {
35658
0
        p->level--;
35659
0
        return NULL;
35660
0
    }
35661
2.66k
    void * _res = NULL;
35662
2.66k
    int _mark = p->mark;
35663
2.66k
    { // ':'
35664
2.66k
        if (p->error_indicator) {
35665
0
            p->level--;
35666
0
            return NULL;
35667
0
        }
35668
2.66k
        D(fprintf(stderr, "%*c> _tmp_133[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
35669
2.66k
        Token * _literal;
35670
2.66k
        if (
35671
2.66k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
35672
2.66k
        )
35673
4
        {
35674
4
            D(fprintf(stderr, "%*c+ _tmp_133[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
35675
4
            _res = _literal;
35676
4
            goto done;
35677
4
        }
35678
2.66k
        p->mark = _mark;
35679
2.66k
        D(fprintf(stderr, "%*c%s _tmp_133[%d-%d]: %s failed!\n", p->level, ' ',
35680
2.66k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
35681
2.66k
    }
35682
0
    { // ',' (':' | '**')
35683
2.66k
        if (p->error_indicator) {
35684
0
            p->level--;
35685
0
            return NULL;
35686
0
        }
35687
2.66k
        D(fprintf(stderr, "%*c> _tmp_133[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')"));
35688
2.66k
        Token * _literal;
35689
2.66k
        void *_tmp_170_var;
35690
2.66k
        if (
35691
2.66k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35692
2.66k
            &&
35693
2.66k
            (_tmp_170_var = _tmp_170_rule(p))  // ':' | '**'
35694
2.66k
        )
35695
3
        {
35696
3
            D(fprintf(stderr, "%*c+ _tmp_133[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')"));
35697
3
            _res = _PyPegen_dummy_name(p, _literal, _tmp_170_var);
35698
3
            goto done;
35699
3
        }
35700
2.66k
        p->mark = _mark;
35701
2.66k
        D(fprintf(stderr, "%*c%s _tmp_133[%d-%d]: %s failed!\n", p->level, ' ',
35702
2.66k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (':' | '**')"));
35703
2.66k
    }
35704
0
    _res = NULL;
35705
2.66k
  done:
35706
2.66k
    p->level--;
35707
2.66k
    return _res;
35708
2.66k
}
35709
35710
// _tmp_134: lambda_param_no_default | ','
35711
static void *
35712
_tmp_134_rule(Parser *p)
35713
2.82k
{
35714
2.82k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35715
0
        _Pypegen_stack_overflow(p);
35716
0
    }
35717
2.82k
    if (p->error_indicator) {
35718
0
        p->level--;
35719
0
        return NULL;
35720
0
    }
35721
2.82k
    void * _res = NULL;
35722
2.82k
    int _mark = p->mark;
35723
2.82k
    { // lambda_param_no_default
35724
2.82k
        if (p->error_indicator) {
35725
0
            p->level--;
35726
0
            return NULL;
35727
0
        }
35728
2.82k
        D(fprintf(stderr, "%*c> _tmp_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
35729
2.82k
        arg_ty lambda_param_no_default_var;
35730
2.82k
        if (
35731
2.82k
            (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
35732
2.82k
        )
35733
945
        {
35734
945
            D(fprintf(stderr, "%*c+ _tmp_134[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
35735
945
            _res = lambda_param_no_default_var;
35736
945
            goto done;
35737
945
        }
35738
1.88k
        p->mark = _mark;
35739
1.88k
        D(fprintf(stderr, "%*c%s _tmp_134[%d-%d]: %s failed!\n", p->level, ' ',
35740
1.88k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
35741
1.88k
    }
35742
0
    { // ','
35743
1.88k
        if (p->error_indicator) {
35744
1
            p->level--;
35745
1
            return NULL;
35746
1
        }
35747
1.88k
        D(fprintf(stderr, "%*c> _tmp_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
35748
1.88k
        Token * _literal;
35749
1.88k
        if (
35750
1.88k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35751
1.88k
        )
35752
1.32k
        {
35753
1.32k
            D(fprintf(stderr, "%*c+ _tmp_134[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
35754
1.32k
            _res = _literal;
35755
1.32k
            goto done;
35756
1.32k
        }
35757
552
        p->mark = _mark;
35758
552
        D(fprintf(stderr, "%*c%s _tmp_134[%d-%d]: %s failed!\n", p->level, ' ',
35759
552
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
35760
552
    }
35761
0
    _res = NULL;
35762
2.82k
  done:
35763
2.82k
    p->level--;
35764
2.82k
    return _res;
35765
552
}
35766
35767
// _tmp_135: bitwise_or ((',' bitwise_or))* ','?
35768
static void *
35769
_tmp_135_rule(Parser *p)
35770
2.96k
{
35771
2.96k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35772
0
        _Pypegen_stack_overflow(p);
35773
0
    }
35774
2.96k
    if (p->error_indicator) {
35775
0
        p->level--;
35776
0
        return NULL;
35777
0
    }
35778
2.96k
    void * _res = NULL;
35779
2.96k
    int _mark = p->mark;
35780
2.96k
    { // bitwise_or ((',' bitwise_or))* ','?
35781
2.96k
        if (p->error_indicator) {
35782
0
            p->level--;
35783
0
            return NULL;
35784
0
        }
35785
2.96k
        D(fprintf(stderr, "%*c> _tmp_135[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or ((',' bitwise_or))* ','?"));
35786
2.96k
        asdl_seq * _loop0_171_var;
35787
2.96k
        void *_opt_var;
35788
2.96k
        UNUSED(_opt_var); // Silence compiler warnings
35789
2.96k
        expr_ty bitwise_or_var;
35790
2.96k
        if (
35791
2.96k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
35792
2.96k
            &&
35793
2.96k
            (_loop0_171_var = _loop0_171_rule(p))  // ((',' bitwise_or))*
35794
2.96k
            &&
35795
2.96k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
35796
2.96k
        )
35797
139
        {
35798
139
            D(fprintf(stderr, "%*c+ _tmp_135[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or ((',' bitwise_or))* ','?"));
35799
139
            _res = _PyPegen_dummy_name(p, bitwise_or_var, _loop0_171_var, _opt_var);
35800
139
            goto done;
35801
139
        }
35802
2.82k
        p->mark = _mark;
35803
2.82k
        D(fprintf(stderr, "%*c%s _tmp_135[%d-%d]: %s failed!\n", p->level, ' ',
35804
2.82k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or ((',' bitwise_or))* ','?"));
35805
2.82k
    }
35806
0
    _res = NULL;
35807
2.96k
  done:
35808
2.96k
    p->level--;
35809
2.96k
    return _res;
35810
2.82k
}
35811
35812
// _loop0_136: ',' dotted_name
35813
static asdl_seq *
35814
_loop0_136_rule(Parser *p)
35815
741
{
35816
741
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35817
0
        _Pypegen_stack_overflow(p);
35818
0
    }
35819
741
    if (p->error_indicator) {
35820
0
        p->level--;
35821
0
        return NULL;
35822
0
    }
35823
741
    void *_res = NULL;
35824
741
    int _mark = p->mark;
35825
741
    void **_children = PyMem_Malloc(sizeof(void *));
35826
741
    if (!_children) {
35827
0
        p->error_indicator = 1;
35828
0
        PyErr_NoMemory();
35829
0
        p->level--;
35830
0
        return NULL;
35831
0
    }
35832
741
    Py_ssize_t _children_capacity = 1;
35833
741
    Py_ssize_t _n = 0;
35834
741
    { // ',' dotted_name
35835
741
        if (p->error_indicator) {
35836
0
            p->level--;
35837
0
            return NULL;
35838
0
        }
35839
741
        D(fprintf(stderr, "%*c> _loop0_136[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' dotted_name"));
35840
741
        Token * _literal;
35841
741
        expr_ty elem;
35842
741
        while (
35843
2.58k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35844
2.58k
            &&
35845
2.58k
            (elem = dotted_name_rule(p))  // dotted_name
35846
741
        )
35847
1.84k
        {
35848
1.84k
            _res = elem;
35849
1.84k
            if (_res == NULL && PyErr_Occurred()) {
35850
0
                p->error_indicator = 1;
35851
0
                PyMem_Free(_children);
35852
0
                p->level--;
35853
0
                return NULL;
35854
0
            }
35855
1.84k
            if (_n == _children_capacity) {
35856
557
                _children_capacity *= 2;
35857
557
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
35858
557
                if (!_new_children) {
35859
0
                    PyMem_Free(_children);
35860
0
                    p->error_indicator = 1;
35861
0
                    PyErr_NoMemory();
35862
0
                    p->level--;
35863
0
                    return NULL;
35864
0
                }
35865
557
                _children = _new_children;
35866
557
            }
35867
1.84k
            _children[_n++] = _res;
35868
1.84k
            _mark = p->mark;
35869
1.84k
        }
35870
741
        p->mark = _mark;
35871
741
        D(fprintf(stderr, "%*c%s _loop0_136[%d-%d]: %s failed!\n", p->level, ' ',
35872
741
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' dotted_name"));
35873
741
    }
35874
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
35875
741
    if (!_seq) {
35876
0
        PyMem_Free(_children);
35877
0
        p->error_indicator = 1;
35878
0
        PyErr_NoMemory();
35879
0
        p->level--;
35880
0
        return NULL;
35881
0
    }
35882
2.58k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
35883
741
    PyMem_Free(_children);
35884
741
    p->level--;
35885
741
    return _seq;
35886
741
}
35887
35888
// _gather_137: dotted_name _loop0_136
35889
static asdl_seq *
35890
_gather_137_rule(Parser *p)
35891
748
{
35892
748
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35893
0
        _Pypegen_stack_overflow(p);
35894
0
    }
35895
748
    if (p->error_indicator) {
35896
0
        p->level--;
35897
0
        return NULL;
35898
0
    }
35899
748
    asdl_seq * _res = NULL;
35900
748
    int _mark = p->mark;
35901
748
    { // dotted_name _loop0_136
35902
748
        if (p->error_indicator) {
35903
0
            p->level--;
35904
0
            return NULL;
35905
0
        }
35906
748
        D(fprintf(stderr, "%*c> _gather_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name _loop0_136"));
35907
748
        expr_ty elem;
35908
748
        asdl_seq * seq;
35909
748
        if (
35910
748
            (elem = dotted_name_rule(p))  // dotted_name
35911
748
            &&
35912
748
            (seq = _loop0_136_rule(p))  // _loop0_136
35913
748
        )
35914
741
        {
35915
741
            D(fprintf(stderr, "%*c+ _gather_137[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name _loop0_136"));
35916
741
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
35917
741
            goto done;
35918
741
        }
35919
7
        p->mark = _mark;
35920
7
        D(fprintf(stderr, "%*c%s _gather_137[%d-%d]: %s failed!\n", p->level, ' ',
35921
7
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name _loop0_136"));
35922
7
    }
35923
0
    _res = NULL;
35924
748
  done:
35925
748
    p->level--;
35926
748
    return _res;
35927
7
}
35928
35929
// _tmp_138: NAME (',' | ')' | NEWLINE)
35930
static void *
35931
_tmp_138_rule(Parser *p)
35932
602
{
35933
602
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35934
0
        _Pypegen_stack_overflow(p);
35935
0
    }
35936
602
    if (p->error_indicator) {
35937
0
        p->level--;
35938
0
        return NULL;
35939
0
    }
35940
602
    void * _res = NULL;
35941
602
    int _mark = p->mark;
35942
602
    { // NAME (',' | ')' | NEWLINE)
35943
602
        if (p->error_indicator) {
35944
0
            p->level--;
35945
0
            return NULL;
35946
0
        }
35947
602
        D(fprintf(stderr, "%*c> _tmp_138[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME (',' | ')' | NEWLINE)"));
35948
602
        void *_tmp_172_var;
35949
602
        expr_ty name_var;
35950
602
        if (
35951
602
            (name_var = _PyPegen_name_token(p))  // NAME
35952
602
            &&
35953
602
            (_tmp_172_var = _tmp_172_rule(p))  // ',' | ')' | NEWLINE
35954
602
        )
35955
570
        {
35956
570
            D(fprintf(stderr, "%*c+ _tmp_138[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME (',' | ')' | NEWLINE)"));
35957
570
            _res = _PyPegen_dummy_name(p, name_var, _tmp_172_var);
35958
570
            goto done;
35959
570
        }
35960
32
        p->mark = _mark;
35961
32
        D(fprintf(stderr, "%*c%s _tmp_138[%d-%d]: %s failed!\n", p->level, ' ',
35962
32
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME (',' | ')' | NEWLINE)"));
35963
32
    }
35964
0
    _res = NULL;
35965
602
  done:
35966
602
    p->level--;
35967
602
    return _res;
35968
32
}
35969
35970
// _loop0_139: ',' (expression ['as' star_target])
35971
static asdl_seq *
35972
_loop0_139_rule(Parser *p)
35973
1.94k
{
35974
1.94k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35975
0
        _Pypegen_stack_overflow(p);
35976
0
    }
35977
1.94k
    if (p->error_indicator) {
35978
0
        p->level--;
35979
0
        return NULL;
35980
0
    }
35981
1.94k
    void *_res = NULL;
35982
1.94k
    int _mark = p->mark;
35983
1.94k
    void **_children = PyMem_Malloc(sizeof(void *));
35984
1.94k
    if (!_children) {
35985
0
        p->error_indicator = 1;
35986
0
        PyErr_NoMemory();
35987
0
        p->level--;
35988
0
        return NULL;
35989
0
    }
35990
1.94k
    Py_ssize_t _children_capacity = 1;
35991
1.94k
    Py_ssize_t _n = 0;
35992
1.94k
    { // ',' (expression ['as' star_target])
35993
1.94k
        if (p->error_indicator) {
35994
0
            p->level--;
35995
0
            return NULL;
35996
0
        }
35997
1.94k
        D(fprintf(stderr, "%*c> _loop0_139[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expression ['as' star_target])"));
35998
1.94k
        Token * _literal;
35999
1.94k
        void *elem;
36000
1.94k
        while (
36001
4.68k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
36002
4.68k
            &&
36003
4.68k
            (elem = _tmp_173_rule(p))  // expression ['as' star_target]
36004
1.94k
        )
36005
2.73k
        {
36006
2.73k
            _res = elem;
36007
2.73k
            if (_res == NULL && PyErr_Occurred()) {
36008
0
                p->error_indicator = 1;
36009
0
                PyMem_Free(_children);
36010
0
                p->level--;
36011
0
                return NULL;
36012
0
            }
36013
2.73k
            if (_n == _children_capacity) {
36014
909
                _children_capacity *= 2;
36015
909
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
36016
909
                if (!_new_children) {
36017
0
                    PyMem_Free(_children);
36018
0
                    p->error_indicator = 1;
36019
0
                    PyErr_NoMemory();
36020
0
                    p->level--;
36021
0
                    return NULL;
36022
0
                }
36023
909
                _children = _new_children;
36024
909
            }
36025
2.73k
            _children[_n++] = _res;
36026
2.73k
            _mark = p->mark;
36027
2.73k
        }
36028
1.94k
        p->mark = _mark;
36029
1.94k
        D(fprintf(stderr, "%*c%s _loop0_139[%d-%d]: %s failed!\n", p->level, ' ',
36030
1.94k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expression ['as' star_target])"));
36031
1.94k
    }
36032
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
36033
1.94k
    if (!_seq) {
36034
0
        PyMem_Free(_children);
36035
0
        p->error_indicator = 1;
36036
0
        PyErr_NoMemory();
36037
0
        p->level--;
36038
0
        return NULL;
36039
0
    }
36040
4.68k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
36041
1.94k
    PyMem_Free(_children);
36042
1.94k
    p->level--;
36043
1.94k
    return _seq;
36044
1.94k
}
36045
36046
// _gather_140: (expression ['as' star_target]) _loop0_139
36047
static asdl_seq *
36048
_gather_140_rule(Parser *p)
36049
2.37k
{
36050
2.37k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36051
0
        _Pypegen_stack_overflow(p);
36052
0
    }
36053
2.37k
    if (p->error_indicator) {
36054
0
        p->level--;
36055
0
        return NULL;
36056
0
    }
36057
2.37k
    asdl_seq * _res = NULL;
36058
2.37k
    int _mark = p->mark;
36059
2.37k
    { // (expression ['as' star_target]) _loop0_139
36060
2.37k
        if (p->error_indicator) {
36061
0
            p->level--;
36062
0
            return NULL;
36063
0
        }
36064
2.37k
        D(fprintf(stderr, "%*c> _gather_140[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_139"));
36065
2.37k
        void *elem;
36066
2.37k
        asdl_seq * seq;
36067
2.37k
        if (
36068
2.37k
            (elem = _tmp_173_rule(p))  // expression ['as' star_target]
36069
2.37k
            &&
36070
2.37k
            (seq = _loop0_139_rule(p))  // _loop0_139
36071
2.37k
        )
36072
1.94k
        {
36073
1.94k
            D(fprintf(stderr, "%*c+ _gather_140[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_139"));
36074
1.94k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
36075
1.94k
            goto done;
36076
1.94k
        }
36077
430
        p->mark = _mark;
36078
430
        D(fprintf(stderr, "%*c%s _gather_140[%d-%d]: %s failed!\n", p->level, ' ',
36079
430
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expression ['as' star_target]) _loop0_139"));
36080
430
    }
36081
0
    _res = NULL;
36082
2.37k
  done:
36083
2.37k
    p->level--;
36084
2.37k
    return _res;
36085
430
}
36086
36087
// _loop0_141: ',' (expressions ['as' star_target])
36088
static asdl_seq *
36089
_loop0_141_rule(Parser *p)
36090
1.23k
{
36091
1.23k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36092
0
        _Pypegen_stack_overflow(p);
36093
0
    }
36094
1.23k
    if (p->error_indicator) {
36095
0
        p->level--;
36096
0
        return NULL;
36097
0
    }
36098
1.23k
    void *_res = NULL;
36099
1.23k
    int _mark = p->mark;
36100
1.23k
    void **_children = PyMem_Malloc(sizeof(void *));
36101
1.23k
    if (!_children) {
36102
0
        p->error_indicator = 1;
36103
0
        PyErr_NoMemory();
36104
0
        p->level--;
36105
0
        return NULL;
36106
0
    }
36107
1.23k
    Py_ssize_t _children_capacity = 1;
36108
1.23k
    Py_ssize_t _n = 0;
36109
1.23k
    { // ',' (expressions ['as' star_target])
36110
1.23k
        if (p->error_indicator) {
36111
0
            p->level--;
36112
0
            return NULL;
36113
0
        }
36114
1.23k
        D(fprintf(stderr, "%*c> _loop0_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expressions ['as' star_target])"));
36115
1.23k
        Token * _literal;
36116
1.23k
        void *elem;
36117
1.23k
        while (
36118
2.94k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
36119
2.94k
            &&
36120
2.94k
            (elem = _tmp_174_rule(p))  // expressions ['as' star_target]
36121
1.23k
        )
36122
1.71k
        {
36123
1.71k
            _res = elem;
36124
1.71k
            if (_res == NULL && PyErr_Occurred()) {
36125
0
                p->error_indicator = 1;
36126
0
                PyMem_Free(_children);
36127
0
                p->level--;
36128
0
                return NULL;
36129
0
            }
36130
1.71k
            if (_n == _children_capacity) {
36131
280
                _children_capacity *= 2;
36132
280
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
36133
280
                if (!_new_children) {
36134
0
                    PyMem_Free(_children);
36135
0
                    p->error_indicator = 1;
36136
0
                    PyErr_NoMemory();
36137
0
                    p->level--;
36138
0
                    return NULL;
36139
0
                }
36140
280
                _children = _new_children;
36141
280
            }
36142
1.71k
            _children[_n++] = _res;
36143
1.71k
            _mark = p->mark;
36144
1.71k
        }
36145
1.23k
        p->mark = _mark;
36146
1.23k
        D(fprintf(stderr, "%*c%s _loop0_141[%d-%d]: %s failed!\n", p->level, ' ',
36147
1.23k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expressions ['as' star_target])"));
36148
1.23k
    }
36149
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
36150
1.23k
    if (!_seq) {
36151
0
        PyMem_Free(_children);
36152
0
        p->error_indicator = 1;
36153
0
        PyErr_NoMemory();
36154
0
        p->level--;
36155
0
        return NULL;
36156
0
    }
36157
2.94k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
36158
1.23k
    PyMem_Free(_children);
36159
1.23k
    p->level--;
36160
1.23k
    return _seq;
36161
1.23k
}
36162
36163
// _gather_142: (expressions ['as' star_target]) _loop0_141
36164
static asdl_seq *
36165
_gather_142_rule(Parser *p)
36166
1.77k
{
36167
1.77k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36168
0
        _Pypegen_stack_overflow(p);
36169
0
    }
36170
1.77k
    if (p->error_indicator) {
36171
0
        p->level--;
36172
0
        return NULL;
36173
0
    }
36174
1.77k
    asdl_seq * _res = NULL;
36175
1.77k
    int _mark = p->mark;
36176
1.77k
    { // (expressions ['as' star_target]) _loop0_141
36177
1.77k
        if (p->error_indicator) {
36178
0
            p->level--;
36179
0
            return NULL;
36180
0
        }
36181
1.77k
        D(fprintf(stderr, "%*c> _gather_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_141"));
36182
1.77k
        void *elem;
36183
1.77k
        asdl_seq * seq;
36184
1.77k
        if (
36185
1.77k
            (elem = _tmp_174_rule(p))  // expressions ['as' star_target]
36186
1.77k
            &&
36187
1.77k
            (seq = _loop0_141_rule(p))  // _loop0_141
36188
1.77k
        )
36189
1.23k
        {
36190
1.23k
            D(fprintf(stderr, "%*c+ _gather_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_141"));
36191
1.23k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
36192
1.23k
            goto done;
36193
1.23k
        }
36194
546
        p->mark = _mark;
36195
546
        D(fprintf(stderr, "%*c%s _gather_142[%d-%d]: %s failed!\n", p->level, ' ',
36196
546
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expressions ['as' star_target]) _loop0_141"));
36197
546
    }
36198
0
    _res = NULL;
36199
1.77k
  done:
36200
1.77k
    p->level--;
36201
1.77k
    return _res;
36202
546
}
36203
36204
// _tmp_143: 'except' | 'finally'
36205
static void *
36206
_tmp_143_rule(Parser *p)
36207
1.77k
{
36208
1.77k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36209
0
        _Pypegen_stack_overflow(p);
36210
0
    }
36211
1.77k
    if (p->error_indicator) {
36212
0
        p->level--;
36213
0
        return NULL;
36214
0
    }
36215
1.77k
    void * _res = NULL;
36216
1.77k
    int _mark = p->mark;
36217
1.77k
    { // 'except'
36218
1.77k
        if (p->error_indicator) {
36219
0
            p->level--;
36220
0
            return NULL;
36221
0
        }
36222
1.77k
        D(fprintf(stderr, "%*c> _tmp_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except'"));
36223
1.77k
        Token * _keyword;
36224
1.77k
        if (
36225
1.77k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='except'
36226
1.77k
        )
36227
1.38k
        {
36228
1.38k
            D(fprintf(stderr, "%*c+ _tmp_143[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except'"));
36229
1.38k
            _res = _keyword;
36230
1.38k
            goto done;
36231
1.38k
        }
36232
390
        p->mark = _mark;
36233
390
        D(fprintf(stderr, "%*c%s _tmp_143[%d-%d]: %s failed!\n", p->level, ' ',
36234
390
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except'"));
36235
390
    }
36236
0
    { // 'finally'
36237
390
        if (p->error_indicator) {
36238
1
            p->level--;
36239
1
            return NULL;
36240
1
        }
36241
389
        D(fprintf(stderr, "%*c> _tmp_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally'"));
36242
389
        Token * _keyword;
36243
389
        if (
36244
389
            (_keyword = _PyPegen_expect_token(p, 678))  // token='finally'
36245
389
        )
36246
355
        {
36247
355
            D(fprintf(stderr, "%*c+ _tmp_143[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally'"));
36248
355
            _res = _keyword;
36249
355
            goto done;
36250
355
        }
36251
34
        p->mark = _mark;
36252
34
        D(fprintf(stderr, "%*c%s _tmp_143[%d-%d]: %s failed!\n", p->level, ' ',
36253
34
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally'"));
36254
34
    }
36255
0
    _res = NULL;
36256
1.77k
  done:
36257
1.77k
    p->level--;
36258
1.77k
    return _res;
36259
34
}
36260
36261
// _loop0_144: block
36262
static asdl_seq *
36263
_loop0_144_rule(Parser *p)
36264
3.62k
{
36265
3.62k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36266
0
        _Pypegen_stack_overflow(p);
36267
0
    }
36268
3.62k
    if (p->error_indicator) {
36269
0
        p->level--;
36270
0
        return NULL;
36271
0
    }
36272
3.62k
    void *_res = NULL;
36273
3.62k
    int _mark = p->mark;
36274
3.62k
    void **_children = PyMem_Malloc(sizeof(void *));
36275
3.62k
    if (!_children) {
36276
0
        p->error_indicator = 1;
36277
0
        PyErr_NoMemory();
36278
0
        p->level--;
36279
0
        return NULL;
36280
0
    }
36281
3.62k
    Py_ssize_t _children_capacity = 1;
36282
3.62k
    Py_ssize_t _n = 0;
36283
3.62k
    { // block
36284
3.62k
        if (p->error_indicator) {
36285
0
            p->level--;
36286
0
            return NULL;
36287
0
        }
36288
3.62k
        D(fprintf(stderr, "%*c> _loop0_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "block"));
36289
3.62k
        asdl_stmt_seq* block_var;
36290
3.62k
        while (
36291
7.08k
            (block_var = block_rule(p))  // block
36292
3.62k
        )
36293
3.46k
        {
36294
3.46k
            _res = block_var;
36295
3.46k
            if (_n == _children_capacity) {
36296
0
                _children_capacity *= 2;
36297
0
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
36298
0
                if (!_new_children) {
36299
0
                    PyMem_Free(_children);
36300
0
                    p->error_indicator = 1;
36301
0
                    PyErr_NoMemory();
36302
0
                    p->level--;
36303
0
                    return NULL;
36304
0
                }
36305
0
                _children = _new_children;
36306
0
            }
36307
3.46k
            _children[_n++] = _res;
36308
3.46k
            _mark = p->mark;
36309
3.46k
        }
36310
3.62k
        p->mark = _mark;
36311
3.62k
        D(fprintf(stderr, "%*c%s _loop0_144[%d-%d]: %s failed!\n", p->level, ' ',
36312
3.62k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "block"));
36313
3.62k
    }
36314
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
36315
3.62k
    if (!_seq) {
36316
0
        PyMem_Free(_children);
36317
0
        p->error_indicator = 1;
36318
0
        PyErr_NoMemory();
36319
0
        p->level--;
36320
0
        return NULL;
36321
0
    }
36322
7.08k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
36323
3.62k
    PyMem_Free(_children);
36324
3.62k
    p->level--;
36325
3.62k
    return _seq;
36326
3.62k
}
36327
36328
// _tmp_145: expression ['as' NAME]
36329
static void *
36330
_tmp_145_rule(Parser *p)
36331
14
{
36332
14
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36333
0
        _Pypegen_stack_overflow(p);
36334
0
    }
36335
14
    if (p->error_indicator) {
36336
0
        p->level--;
36337
0
        return NULL;
36338
0
    }
36339
14
    void * _res = NULL;
36340
14
    int _mark = p->mark;
36341
14
    { // expression ['as' NAME]
36342
14
        if (p->error_indicator) {
36343
0
            p->level--;
36344
0
            return NULL;
36345
0
        }
36346
14
        D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' NAME]"));
36347
14
        void *_opt_var;
36348
14
        UNUSED(_opt_var); // Silence compiler warnings
36349
14
        expr_ty expression_var;
36350
14
        if (
36351
14
            (expression_var = expression_rule(p))  // expression
36352
14
            &&
36353
14
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
36354
14
        )
36355
2
        {
36356
2
            D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' NAME]"));
36357
2
            _res = _PyPegen_dummy_name(p, expression_var, _opt_var);
36358
2
            goto done;
36359
2
        }
36360
12
        p->mark = _mark;
36361
12
        D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ',
36362
12
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' NAME]"));
36363
12
    }
36364
0
    _res = NULL;
36365
14
  done:
36366
14
    p->level--;
36367
14
    return _res;
36368
12
}
36369
36370
// _tmp_146: NEWLINE | ':'
36371
static void *
36372
_tmp_146_rule(Parser *p)
36373
80
{
36374
80
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36375
0
        _Pypegen_stack_overflow(p);
36376
0
    }
36377
80
    if (p->error_indicator) {
36378
0
        p->level--;
36379
0
        return NULL;
36380
0
    }
36381
80
    void * _res = NULL;
36382
80
    int _mark = p->mark;
36383
80
    { // NEWLINE
36384
80
        if (p->error_indicator) {
36385
0
            p->level--;
36386
0
            return NULL;
36387
0
        }
36388
80
        D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
36389
80
        Token * newline_var;
36390
80
        if (
36391
80
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
36392
80
        )
36393
5
        {
36394
5
            D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
36395
5
            _res = newline_var;
36396
5
            goto done;
36397
5
        }
36398
75
        p->mark = _mark;
36399
75
        D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ',
36400
75
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
36401
75
    }
36402
0
    { // ':'
36403
75
        if (p->error_indicator) {
36404
0
            p->level--;
36405
0
            return NULL;
36406
0
        }
36407
75
        D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
36408
75
        Token * _literal;
36409
75
        if (
36410
75
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
36411
75
        )
36412
2
        {
36413
2
            D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
36414
2
            _res = _literal;
36415
2
            goto done;
36416
2
        }
36417
73
        p->mark = _mark;
36418
73
        D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ',
36419
73
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
36420
73
    }
36421
0
    _res = NULL;
36422
80
  done:
36423
80
    p->level--;
36424
80
    return _res;
36425
73
}
36426
36427
// _tmp_147: positional_patterns ','
36428
static void *
36429
_tmp_147_rule(Parser *p)
36430
3.41k
{
36431
3.41k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36432
0
        _Pypegen_stack_overflow(p);
36433
0
    }
36434
3.41k
    if (p->error_indicator) {
36435
0
        p->level--;
36436
0
        return NULL;
36437
0
    }
36438
3.41k
    void * _res = NULL;
36439
3.41k
    int _mark = p->mark;
36440
3.41k
    { // positional_patterns ','
36441
3.41k
        if (p->error_indicator) {
36442
0
            p->level--;
36443
0
            return NULL;
36444
0
        }
36445
3.41k
        D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "positional_patterns ','"));
36446
3.41k
        Token * _literal;
36447
3.41k
        asdl_pattern_seq* positional_patterns_var;
36448
3.41k
        if (
36449
3.41k
            (positional_patterns_var = positional_patterns_rule(p))  // positional_patterns
36450
3.41k
            &&
36451
3.41k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
36452
3.41k
        )
36453
773
        {
36454
773
            D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "positional_patterns ','"));
36455
773
            _res = _PyPegen_dummy_name(p, positional_patterns_var, _literal);
36456
773
            goto done;
36457
773
        }
36458
2.63k
        p->mark = _mark;
36459
2.63k
        D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
36460
2.63k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "positional_patterns ','"));
36461
2.63k
    }
36462
0
    _res = NULL;
36463
3.41k
  done:
36464
3.41k
    p->level--;
36465
3.41k
    return _res;
36466
2.63k
}
36467
36468
// _tmp_148: '}' | ','
36469
static void *
36470
_tmp_148_rule(Parser *p)
36471
3.94k
{
36472
3.94k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36473
0
        _Pypegen_stack_overflow(p);
36474
0
    }
36475
3.94k
    if (p->error_indicator) {
36476
0
        p->level--;
36477
0
        return NULL;
36478
0
    }
36479
3.94k
    void * _res = NULL;
36480
3.94k
    int _mark = p->mark;
36481
3.94k
    { // '}'
36482
3.94k
        if (p->error_indicator) {
36483
0
            p->level--;
36484
0
            return NULL;
36485
0
        }
36486
3.94k
        D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'"));
36487
3.94k
        Token * _literal;
36488
3.94k
        if (
36489
3.94k
            (_literal = _PyPegen_expect_token(p, 26))  // token='}'
36490
3.94k
        )
36491
1
        {
36492
1
            D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'"));
36493
1
            _res = _literal;
36494
1
            goto done;
36495
1
        }
36496
3.94k
        p->mark = _mark;
36497
3.94k
        D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ',
36498
3.94k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'"));
36499
3.94k
    }
36500
0
    { // ','
36501
3.94k
        if (p->error_indicator) {
36502
0
            p->level--;
36503
0
            return NULL;
36504
0
        }
36505
3.94k
        D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
36506
3.94k
        Token * _literal;
36507
3.94k
        if (
36508
3.94k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
36509
3.94k
        )
36510
2
        {
36511
2
            D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
36512
2
            _res = _literal;
36513
2
            goto done;
36514
2
        }
36515
3.94k
        p->mark = _mark;
36516
3.94k
        D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ',
36517
3.94k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
36518
3.94k
    }
36519
0
    _res = NULL;
36520
3.94k
  done:
36521
3.94k
    p->level--;
36522
3.94k
    return _res;
36523
3.94k
}
36524
36525
// _tmp_149: '=' | '!' | ':' | '}'
36526
static void *
36527
_tmp_149_rule(Parser *p)
36528
239
{
36529
239
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36530
0
        _Pypegen_stack_overflow(p);
36531
0
    }
36532
239
    if (p->error_indicator) {
36533
0
        p->level--;
36534
0
        return NULL;
36535
0
    }
36536
239
    void * _res = NULL;
36537
239
    int _mark = p->mark;
36538
239
    { // '='
36539
239
        if (p->error_indicator) {
36540
0
            p->level--;
36541
0
            return NULL;
36542
0
        }
36543
239
        D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
36544
239
        Token * _literal;
36545
239
        if (
36546
239
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
36547
239
        )
36548
28
        {
36549
28
            D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
36550
28
            _res = _literal;
36551
28
            goto done;
36552
28
        }
36553
211
        p->mark = _mark;
36554
211
        D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ',
36555
211
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
36556
211
    }
36557
0
    { // '!'
36558
211
        if (p->error_indicator) {
36559
0
            p->level--;
36560
0
            return NULL;
36561
0
        }
36562
211
        D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!'"));
36563
211
        Token * _literal;
36564
211
        if (
36565
211
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
36566
211
        )
36567
23
        {
36568
23
            D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!'"));
36569
23
            _res = _literal;
36570
23
            goto done;
36571
23
        }
36572
188
        p->mark = _mark;
36573
188
        D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ',
36574
188
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!'"));
36575
188
    }
36576
0
    { // ':'
36577
188
        if (p->error_indicator) {
36578
0
            p->level--;
36579
0
            return NULL;
36580
0
        }
36581
188
        D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
36582
188
        Token * _literal;
36583
188
        if (
36584
188
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
36585
188
        )
36586
145
        {
36587
145
            D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
36588
145
            _res = _literal;
36589
145
            goto done;
36590
145
        }
36591
43
        p->mark = _mark;
36592
43
        D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ',
36593
43
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
36594
43
    }
36595
0
    { // '}'
36596
43
        if (p->error_indicator) {
36597
0
            p->level--;
36598
0
            return NULL;
36599
0
        }
36600
43
        D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'"));
36601
43
        Token * _literal;
36602
43
        if (
36603
43
            (_literal = _PyPegen_expect_token(p, 26))  // token='}'
36604
43
        )
36605
0
        {
36606
0
            D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'"));
36607
0
            _res = _literal;
36608
0
            goto done;
36609
0
        }
36610
43
        p->mark = _mark;
36611
43
        D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ',
36612
43
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'"));
36613
43
    }
36614
0
    _res = NULL;
36615
239
  done:
36616
239
    p->level--;
36617
239
    return _res;
36618
43
}
36619
36620
// _tmp_150: '!' | ':' | '}'
36621
static void *
36622
_tmp_150_rule(Parser *p)
36623
28
{
36624
28
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36625
0
        _Pypegen_stack_overflow(p);
36626
0
    }
36627
28
    if (p->error_indicator) {
36628
0
        p->level--;
36629
0
        return NULL;
36630
0
    }
36631
28
    void * _res = NULL;
36632
28
    int _mark = p->mark;
36633
28
    { // '!'
36634
28
        if (p->error_indicator) {
36635
0
            p->level--;
36636
0
            return NULL;
36637
0
        }
36638
28
        D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!'"));
36639
28
        Token * _literal;
36640
28
        if (
36641
28
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
36642
28
        )
36643
7
        {
36644
7
            D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!'"));
36645
7
            _res = _literal;
36646
7
            goto done;
36647
7
        }
36648
21
        p->mark = _mark;
36649
21
        D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ',
36650
21
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!'"));
36651
21
    }
36652
0
    { // ':'
36653
21
        if (p->error_indicator) {
36654
0
            p->level--;
36655
0
            return NULL;
36656
0
        }
36657
21
        D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
36658
21
        Token * _literal;
36659
21
        if (
36660
21
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
36661
21
        )
36662
3
        {
36663
3
            D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
36664
3
            _res = _literal;
36665
3
            goto done;
36666
3
        }
36667
18
        p->mark = _mark;
36668
18
        D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ',
36669
18
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
36670
18
    }
36671
0
    { // '}'
36672
18
        if (p->error_indicator) {
36673
0
            p->level--;
36674
0
            return NULL;
36675
0
        }
36676
18
        D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'"));
36677
18
        Token * _literal;
36678
18
        if (
36679
18
            (_literal = _PyPegen_expect_token(p, 26))  // token='}'
36680
18
        )
36681
0
        {
36682
0
            D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'"));
36683
0
            _res = _literal;
36684
0
            goto done;
36685
0
        }
36686
18
        p->mark = _mark;
36687
18
        D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ',
36688
18
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'"));
36689
18
    }
36690
0
    _res = NULL;
36691
28
  done:
36692
28
    p->level--;
36693
28
    return _res;
36694
18
}
36695
36696
// _tmp_151: '!' NAME
36697
static void *
36698
_tmp_151_rule(Parser *p)
36699
308
{
36700
308
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36701
0
        _Pypegen_stack_overflow(p);
36702
0
    }
36703
308
    if (p->error_indicator) {
36704
0
        p->level--;
36705
0
        return NULL;
36706
0
    }
36707
308
    void * _res = NULL;
36708
308
    int _mark = p->mark;
36709
308
    { // '!' NAME
36710
308
        if (p->error_indicator) {
36711
0
            p->level--;
36712
0
            return NULL;
36713
0
        }
36714
308
        D(fprintf(stderr, "%*c> _tmp_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' NAME"));
36715
308
        Token * _literal;
36716
308
        expr_ty name_var;
36717
308
        if (
36718
308
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
36719
308
            &&
36720
308
            (name_var = _PyPegen_name_token(p))  // NAME
36721
308
        )
36722
12
        {
36723
12
            D(fprintf(stderr, "%*c+ _tmp_151[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!' NAME"));
36724
12
            _res = _PyPegen_dummy_name(p, _literal, name_var);
36725
12
            goto done;
36726
12
        }
36727
296
        p->mark = _mark;
36728
296
        D(fprintf(stderr, "%*c%s _tmp_151[%d-%d]: %s failed!\n", p->level, ' ',
36729
296
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' NAME"));
36730
296
    }
36731
0
    _res = NULL;
36732
308
  done:
36733
308
    p->level--;
36734
308
    return _res;
36735
296
}
36736
36737
// _tmp_152: ':' | '}'
36738
static void *
36739
_tmp_152_rule(Parser *p)
36740
188
{
36741
188
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36742
0
        _Pypegen_stack_overflow(p);
36743
0
    }
36744
188
    if (p->error_indicator) {
36745
0
        p->level--;
36746
0
        return NULL;
36747
0
    }
36748
188
    void * _res = NULL;
36749
188
    int _mark = p->mark;
36750
188
    { // ':'
36751
188
        if (p->error_indicator) {
36752
0
            p->level--;
36753
0
            return NULL;
36754
0
        }
36755
188
        D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
36756
188
        Token * _literal;
36757
188
        if (
36758
188
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
36759
188
        )
36760
153
        {
36761
153
            D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
36762
153
            _res = _literal;
36763
153
            goto done;
36764
153
        }
36765
35
        p->mark = _mark;
36766
35
        D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
36767
35
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
36768
35
    }
36769
0
    { // '}'
36770
35
        if (p->error_indicator) {
36771
0
            p->level--;
36772
0
            return NULL;
36773
0
        }
36774
35
        D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'"));
36775
35
        Token * _literal;
36776
35
        if (
36777
35
            (_literal = _PyPegen_expect_token(p, 26))  // token='}'
36778
35
        )
36779
4
        {
36780
4
            D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'"));
36781
4
            _res = _literal;
36782
4
            goto done;
36783
4
        }
36784
31
        p->mark = _mark;
36785
31
        D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
36786
31
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'"));
36787
31
    }
36788
0
    _res = NULL;
36789
188
  done:
36790
188
    p->level--;
36791
188
    return _res;
36792
31
}
36793
36794
// _tmp_153: fstring | string
36795
static void *
36796
_tmp_153_rule(Parser *p)
36797
225k
{
36798
225k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36799
1
        _Pypegen_stack_overflow(p);
36800
1
    }
36801
225k
    if (p->error_indicator) {
36802
4
        p->level--;
36803
4
        return NULL;
36804
4
    }
36805
225k
    void * _res = NULL;
36806
225k
    int _mark = p->mark;
36807
225k
    { // fstring
36808
225k
        if (p->error_indicator) {
36809
0
            p->level--;
36810
0
            return NULL;
36811
0
        }
36812
225k
        D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring"));
36813
225k
        expr_ty fstring_var;
36814
225k
        if (
36815
225k
            (fstring_var = fstring_rule(p))  // fstring
36816
225k
        )
36817
14.1k
        {
36818
14.1k
            D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "fstring"));
36819
14.1k
            _res = fstring_var;
36820
14.1k
            goto done;
36821
14.1k
        }
36822
210k
        p->mark = _mark;
36823
210k
        D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ',
36824
210k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring"));
36825
210k
    }
36826
0
    { // string
36827
210k
        if (p->error_indicator) {
36828
2.46k
            p->level--;
36829
2.46k
            return NULL;
36830
2.46k
        }
36831
208k
        D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "string"));
36832
208k
        expr_ty string_var;
36833
208k
        if (
36834
208k
            (string_var = string_rule(p))  // string
36835
208k
        )
36836
75.5k
        {
36837
75.5k
            D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "string"));
36838
75.5k
            _res = string_var;
36839
75.5k
            goto done;
36840
75.5k
        }
36841
132k
        p->mark = _mark;
36842
132k
        D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ',
36843
132k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "string"));
36844
132k
    }
36845
0
    _res = NULL;
36846
222k
  done:
36847
222k
    p->level--;
36848
222k
    return _res;
36849
132k
}
36850
36851
// _tmp_154: '+' | '-' | '*' | '/' | '%' | '//' | '@'
36852
static void *
36853
_tmp_154_rule(Parser *p)
36854
209k
{
36855
209k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36856
0
        _Pypegen_stack_overflow(p);
36857
0
    }
36858
209k
    if (p->error_indicator) {
36859
0
        p->level--;
36860
0
        return NULL;
36861
0
    }
36862
209k
    void * _res = NULL;
36863
209k
    int _mark = p->mark;
36864
209k
    { // '+'
36865
209k
        if (p->error_indicator) {
36866
0
            p->level--;
36867
0
            return NULL;
36868
0
        }
36869
209k
        D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+'"));
36870
209k
        Token * _literal;
36871
209k
        if (
36872
209k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
36873
209k
        )
36874
1.33k
        {
36875
1.33k
            D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+'"));
36876
1.33k
            _res = _literal;
36877
1.33k
            goto done;
36878
1.33k
        }
36879
207k
        p->mark = _mark;
36880
207k
        D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
36881
207k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+'"));
36882
207k
    }
36883
0
    { // '-'
36884
207k
        if (p->error_indicator) {
36885
0
            p->level--;
36886
0
            return NULL;
36887
0
        }
36888
207k
        D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-'"));
36889
207k
        Token * _literal;
36890
207k
        if (
36891
207k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
36892
207k
        )
36893
688
        {
36894
688
            D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-'"));
36895
688
            _res = _literal;
36896
688
            goto done;
36897
688
        }
36898
207k
        p->mark = _mark;
36899
207k
        D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
36900
207k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-'"));
36901
207k
    }
36902
0
    { // '*'
36903
207k
        if (p->error_indicator) {
36904
0
            p->level--;
36905
0
            return NULL;
36906
0
        }
36907
207k
        D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
36908
207k
        Token * _literal;
36909
207k
        if (
36910
207k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
36911
207k
        )
36912
590
        {
36913
590
            D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
36914
590
            _res = _literal;
36915
590
            goto done;
36916
590
        }
36917
206k
        p->mark = _mark;
36918
206k
        D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
36919
206k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
36920
206k
    }
36921
0
    { // '/'
36922
206k
        if (p->error_indicator) {
36923
0
            p->level--;
36924
0
            return NULL;
36925
0
        }
36926
206k
        D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/'"));
36927
206k
        Token * _literal;
36928
206k
        if (
36929
206k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
36930
206k
        )
36931
340
        {
36932
340
            D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'/'"));
36933
340
            _res = _literal;
36934
340
            goto done;
36935
340
        }
36936
206k
        p->mark = _mark;
36937
206k
        D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
36938
206k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'/'"));
36939
206k
    }
36940
0
    { // '%'
36941
206k
        if (p->error_indicator) {
36942
0
            p->level--;
36943
0
            return NULL;
36944
0
        }
36945
206k
        D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'%'"));
36946
206k
        Token * _literal;
36947
206k
        if (
36948
206k
            (_literal = _PyPegen_expect_token(p, 24))  // token='%'
36949
206k
        )
36950
368
        {
36951
368
            D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'%'"));
36952
368
            _res = _literal;
36953
368
            goto done;
36954
368
        }
36955
206k
        p->mark = _mark;
36956
206k
        D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
36957
206k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'%'"));
36958
206k
    }
36959
0
    { // '//'
36960
206k
        if (p->error_indicator) {
36961
0
            p->level--;
36962
0
            return NULL;
36963
0
        }
36964
206k
        D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'//'"));
36965
206k
        Token * _literal;
36966
206k
        if (
36967
206k
            (_literal = _PyPegen_expect_token(p, 47))  // token='//'
36968
206k
        )
36969
212
        {
36970
212
            D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'//'"));
36971
212
            _res = _literal;
36972
212
            goto done;
36973
212
        }
36974
205k
        p->mark = _mark;
36975
205k
        D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
36976
205k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'//'"));
36977
205k
    }
36978
0
    { // '@'
36979
205k
        if (p->error_indicator) {
36980
0
            p->level--;
36981
0
            return NULL;
36982
0
        }
36983
205k
        D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
36984
205k
        Token * _literal;
36985
205k
        if (
36986
205k
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
36987
205k
        )
36988
338
        {
36989
338
            D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
36990
338
            _res = _literal;
36991
338
            goto done;
36992
338
        }
36993
205k
        p->mark = _mark;
36994
205k
        D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
36995
205k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
36996
205k
    }
36997
0
    _res = NULL;
36998
209k
  done:
36999
209k
    p->level--;
37000
209k
    return _res;
37001
205k
}
37002
37003
// _tmp_155: '+' | '-' | '~'
37004
static void *
37005
_tmp_155_rule(Parser *p)
37006
305k
{
37007
305k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37008
1
        _Pypegen_stack_overflow(p);
37009
1
    }
37010
305k
    if (p->error_indicator) {
37011
1
        p->level--;
37012
1
        return NULL;
37013
1
    }
37014
305k
    void * _res = NULL;
37015
305k
    int _mark = p->mark;
37016
305k
    { // '+'
37017
305k
        if (p->error_indicator) {
37018
0
            p->level--;
37019
0
            return NULL;
37020
0
        }
37021
305k
        D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+'"));
37022
305k
        Token * _literal;
37023
305k
        if (
37024
305k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
37025
305k
        )
37026
3.73k
        {
37027
3.73k
            D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+'"));
37028
3.73k
            _res = _literal;
37029
3.73k
            goto done;
37030
3.73k
        }
37031
301k
        p->mark = _mark;
37032
301k
        D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ',
37033
301k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+'"));
37034
301k
    }
37035
0
    { // '-'
37036
301k
        if (p->error_indicator) {
37037
0
            p->level--;
37038
0
            return NULL;
37039
0
        }
37040
301k
        D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-'"));
37041
301k
        Token * _literal;
37042
301k
        if (
37043
301k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
37044
301k
        )
37045
4.28k
        {
37046
4.28k
            D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-'"));
37047
4.28k
            _res = _literal;
37048
4.28k
            goto done;
37049
4.28k
        }
37050
297k
        p->mark = _mark;
37051
297k
        D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ',
37052
297k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-'"));
37053
297k
    }
37054
0
    { // '~'
37055
297k
        if (p->error_indicator) {
37056
0
            p->level--;
37057
0
            return NULL;
37058
0
        }
37059
297k
        D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'~'"));
37060
297k
        Token * _literal;
37061
297k
        if (
37062
297k
            (_literal = _PyPegen_expect_token(p, 31))  // token='~'
37063
297k
        )
37064
1.26k
        {
37065
1.26k
            D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'~'"));
37066
1.26k
            _res = _literal;
37067
1.26k
            goto done;
37068
1.26k
        }
37069
295k
        p->mark = _mark;
37070
295k
        D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ',
37071
295k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'~'"));
37072
295k
    }
37073
0
    _res = NULL;
37074
305k
  done:
37075
305k
    p->level--;
37076
305k
    return _res;
37077
295k
}
37078
37079
// _tmp_156: star_targets '='
37080
static void *
37081
_tmp_156_rule(Parser *p)
37082
277k
{
37083
277k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37084
0
        _Pypegen_stack_overflow(p);
37085
0
    }
37086
277k
    if (p->error_indicator) {
37087
0
        p->level--;
37088
0
        return NULL;
37089
0
    }
37090
277k
    void * _res = NULL;
37091
277k
    int _mark = p->mark;
37092
277k
    { // star_targets '='
37093
277k
        if (p->error_indicator) {
37094
0
            p->level--;
37095
0
            return NULL;
37096
0
        }
37097
277k
        D(fprintf(stderr, "%*c> _tmp_156[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
37098
277k
        Token * _literal;
37099
277k
        expr_ty z;
37100
277k
        if (
37101
277k
            (z = star_targets_rule(p))  // star_targets
37102
277k
            &&
37103
277k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
37104
277k
        )
37105
17.3k
        {
37106
17.3k
            D(fprintf(stderr, "%*c+ _tmp_156[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
37107
17.3k
            _res = z;
37108
17.3k
            if (_res == NULL && PyErr_Occurred()) {
37109
0
                p->error_indicator = 1;
37110
0
                p->level--;
37111
0
                return NULL;
37112
0
            }
37113
17.3k
            goto done;
37114
17.3k
        }
37115
259k
        p->mark = _mark;
37116
259k
        D(fprintf(stderr, "%*c%s _tmp_156[%d-%d]: %s failed!\n", p->level, ' ',
37117
259k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='"));
37118
259k
    }
37119
0
    _res = NULL;
37120
277k
  done:
37121
277k
    p->level--;
37122
277k
    return _res;
37123
259k
}
37124
37125
// _tmp_157: '.' | '...'
37126
static void *
37127
_tmp_157_rule(Parser *p)
37128
13.1k
{
37129
13.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37130
0
        _Pypegen_stack_overflow(p);
37131
0
    }
37132
13.1k
    if (p->error_indicator) {
37133
0
        p->level--;
37134
0
        return NULL;
37135
0
    }
37136
13.1k
    void * _res = NULL;
37137
13.1k
    int _mark = p->mark;
37138
13.1k
    { // '.'
37139
13.1k
        if (p->error_indicator) {
37140
0
            p->level--;
37141
0
            return NULL;
37142
0
        }
37143
13.1k
        D(fprintf(stderr, "%*c> _tmp_157[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
37144
13.1k
        Token * _literal;
37145
13.1k
        if (
37146
13.1k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
37147
13.1k
        )
37148
4.48k
        {
37149
4.48k
            D(fprintf(stderr, "%*c+ _tmp_157[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
37150
4.48k
            _res = _literal;
37151
4.48k
            goto done;
37152
4.48k
        }
37153
8.62k
        p->mark = _mark;
37154
8.62k
        D(fprintf(stderr, "%*c%s _tmp_157[%d-%d]: %s failed!\n", p->level, ' ',
37155
8.62k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
37156
8.62k
    }
37157
0
    { // '...'
37158
8.62k
        if (p->error_indicator) {
37159
11
            p->level--;
37160
11
            return NULL;
37161
11
        }
37162
8.61k
        D(fprintf(stderr, "%*c> _tmp_157[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
37163
8.61k
        Token * _literal;
37164
8.61k
        if (
37165
8.61k
            (_literal = _PyPegen_expect_token(p, 52))  // token='...'
37166
8.61k
        )
37167
4.13k
        {
37168
4.13k
            D(fprintf(stderr, "%*c+ _tmp_157[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
37169
4.13k
            _res = _literal;
37170
4.13k
            goto done;
37171
4.13k
        }
37172
4.47k
        p->mark = _mark;
37173
4.47k
        D(fprintf(stderr, "%*c%s _tmp_157[%d-%d]: %s failed!\n", p->level, ' ',
37174
4.47k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
37175
4.47k
    }
37176
0
    _res = NULL;
37177
13.0k
  done:
37178
13.0k
    p->level--;
37179
13.0k
    return _res;
37180
4.47k
}
37181
37182
// _tmp_158: '@' named_expression NEWLINE
37183
static void *
37184
_tmp_158_rule(Parser *p)
37185
22.6k
{
37186
22.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37187
0
        _Pypegen_stack_overflow(p);
37188
0
    }
37189
22.6k
    if (p->error_indicator) {
37190
0
        p->level--;
37191
0
        return NULL;
37192
0
    }
37193
22.6k
    void * _res = NULL;
37194
22.6k
    int _mark = p->mark;
37195
22.6k
    { // '@' named_expression NEWLINE
37196
22.6k
        if (p->error_indicator) {
37197
0
            p->level--;
37198
0
            return NULL;
37199
0
        }
37200
22.6k
        D(fprintf(stderr, "%*c> _tmp_158[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE"));
37201
22.6k
        Token * _literal;
37202
22.6k
        expr_ty f;
37203
22.6k
        Token * newline_var;
37204
22.6k
        if (
37205
22.6k
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
37206
22.6k
            &&
37207
22.6k
            (f = named_expression_rule(p))  // named_expression
37208
22.6k
            &&
37209
22.6k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
37210
22.6k
        )
37211
4.12k
        {
37212
4.12k
            D(fprintf(stderr, "%*c+ _tmp_158[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE"));
37213
4.12k
            _res = f;
37214
4.12k
            if (_res == NULL && PyErr_Occurred()) {
37215
0
                p->error_indicator = 1;
37216
0
                p->level--;
37217
0
                return NULL;
37218
0
            }
37219
4.12k
            goto done;
37220
4.12k
        }
37221
18.5k
        p->mark = _mark;
37222
18.5k
        D(fprintf(stderr, "%*c%s _tmp_158[%d-%d]: %s failed!\n", p->level, ' ',
37223
18.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@' named_expression NEWLINE"));
37224
18.5k
    }
37225
0
    _res = NULL;
37226
22.6k
  done:
37227
22.6k
    p->level--;
37228
22.6k
    return _res;
37229
18.5k
}
37230
37231
// _tmp_159: ',' star_expression
37232
static void *
37233
_tmp_159_rule(Parser *p)
37234
231k
{
37235
231k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37236
0
        _Pypegen_stack_overflow(p);
37237
0
    }
37238
231k
    if (p->error_indicator) {
37239
0
        p->level--;
37240
0
        return NULL;
37241
0
    }
37242
231k
    void * _res = NULL;
37243
231k
    int _mark = p->mark;
37244
231k
    { // ',' star_expression
37245
231k
        if (p->error_indicator) {
37246
0
            p->level--;
37247
0
            return NULL;
37248
0
        }
37249
231k
        D(fprintf(stderr, "%*c> _tmp_159[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression"));
37250
231k
        Token * _literal;
37251
231k
        expr_ty c;
37252
231k
        if (
37253
231k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
37254
231k
            &&
37255
231k
            (c = star_expression_rule(p))  // star_expression
37256
231k
        )
37257
15.1k
        {
37258
15.1k
            D(fprintf(stderr, "%*c+ _tmp_159[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression"));
37259
15.1k
            _res = c;
37260
15.1k
            if (_res == NULL && PyErr_Occurred()) {
37261
0
                p->error_indicator = 1;
37262
0
                p->level--;
37263
0
                return NULL;
37264
0
            }
37265
15.1k
            goto done;
37266
15.1k
        }
37267
216k
        p->mark = _mark;
37268
216k
        D(fprintf(stderr, "%*c%s _tmp_159[%d-%d]: %s failed!\n", p->level, ' ',
37269
216k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_expression"));
37270
216k
    }
37271
0
    _res = NULL;
37272
231k
  done:
37273
231k
    p->level--;
37274
231k
    return _res;
37275
216k
}
37276
37277
// _tmp_160: 'or' conjunction
37278
static void *
37279
_tmp_160_rule(Parser *p)
37280
392k
{
37281
392k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37282
0
        _Pypegen_stack_overflow(p);
37283
0
    }
37284
392k
    if (p->error_indicator) {
37285
0
        p->level--;
37286
0
        return NULL;
37287
0
    }
37288
392k
    void * _res = NULL;
37289
392k
    int _mark = p->mark;
37290
392k
    { // 'or' conjunction
37291
392k
        if (p->error_indicator) {
37292
0
            p->level--;
37293
0
            return NULL;
37294
0
        }
37295
392k
        D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction"));
37296
392k
        Token * _keyword;
37297
392k
        expr_ty c;
37298
392k
        if (
37299
392k
            (_keyword = _PyPegen_expect_token(p, 589))  // token='or'
37300
392k
            &&
37301
392k
            (c = conjunction_rule(p))  // conjunction
37302
392k
        )
37303
4.01k
        {
37304
4.01k
            D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction"));
37305
4.01k
            _res = c;
37306
4.01k
            if (_res == NULL && PyErr_Occurred()) {
37307
0
                p->error_indicator = 1;
37308
0
                p->level--;
37309
0
                return NULL;
37310
0
            }
37311
4.01k
            goto done;
37312
4.01k
        }
37313
388k
        p->mark = _mark;
37314
388k
        D(fprintf(stderr, "%*c%s _tmp_160[%d-%d]: %s failed!\n", p->level, ' ',
37315
388k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'or' conjunction"));
37316
388k
    }
37317
0
    _res = NULL;
37318
392k
  done:
37319
392k
    p->level--;
37320
392k
    return _res;
37321
388k
}
37322
37323
// _tmp_161: 'and' inversion
37324
static void *
37325
_tmp_161_rule(Parser *p)
37326
395k
{
37327
395k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37328
0
        _Pypegen_stack_overflow(p);
37329
0
    }
37330
395k
    if (p->error_indicator) {
37331
0
        p->level--;
37332
0
        return NULL;
37333
0
    }
37334
395k
    void * _res = NULL;
37335
395k
    int _mark = p->mark;
37336
395k
    { // 'and' inversion
37337
395k
        if (p->error_indicator) {
37338
0
            p->level--;
37339
0
            return NULL;
37340
0
        }
37341
395k
        D(fprintf(stderr, "%*c> _tmp_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion"));
37342
395k
        Token * _keyword;
37343
395k
        expr_ty c;
37344
395k
        if (
37345
395k
            (_keyword = _PyPegen_expect_token(p, 590))  // token='and'
37346
395k
            &&
37347
395k
            (c = inversion_rule(p))  // inversion
37348
395k
        )
37349
2.63k
        {
37350
2.63k
            D(fprintf(stderr, "%*c+ _tmp_161[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion"));
37351
2.63k
            _res = c;
37352
2.63k
            if (_res == NULL && PyErr_Occurred()) {
37353
0
                p->error_indicator = 1;
37354
0
                p->level--;
37355
0
                return NULL;
37356
0
            }
37357
2.63k
            goto done;
37358
2.63k
        }
37359
392k
        p->mark = _mark;
37360
392k
        D(fprintf(stderr, "%*c%s _tmp_161[%d-%d]: %s failed!\n", p->level, ' ',
37361
392k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'and' inversion"));
37362
392k
    }
37363
0
    _res = NULL;
37364
395k
  done:
37365
395k
    p->level--;
37366
395k
    return _res;
37367
392k
}
37368
37369
// _tmp_162: slice | starred_expression
37370
static void *
37371
_tmp_162_rule(Parser *p)
37372
22.2k
{
37373
22.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37374
0
        _Pypegen_stack_overflow(p);
37375
0
    }
37376
22.2k
    if (p->error_indicator) {
37377
0
        p->level--;
37378
0
        return NULL;
37379
0
    }
37380
22.2k
    void * _res = NULL;
37381
22.2k
    int _mark = p->mark;
37382
22.2k
    { // slice
37383
22.2k
        if (p->error_indicator) {
37384
0
            p->level--;
37385
0
            return NULL;
37386
0
        }
37387
22.2k
        D(fprintf(stderr, "%*c> _tmp_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice"));
37388
22.2k
        expr_ty slice_var;
37389
22.2k
        if (
37390
22.2k
            (slice_var = slice_rule(p))  // slice
37391
22.2k
        )
37392
18.2k
        {
37393
18.2k
            D(fprintf(stderr, "%*c+ _tmp_162[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice"));
37394
18.2k
            _res = slice_var;
37395
18.2k
            goto done;
37396
18.2k
        }
37397
4.00k
        p->mark = _mark;
37398
4.00k
        D(fprintf(stderr, "%*c%s _tmp_162[%d-%d]: %s failed!\n", p->level, ' ',
37399
4.00k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice"));
37400
4.00k
    }
37401
0
    { // starred_expression
37402
4.00k
        if (p->error_indicator) {
37403
208
            p->level--;
37404
208
            return NULL;
37405
208
        }
37406
3.79k
        D(fprintf(stderr, "%*c> _tmp_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
37407
3.79k
        expr_ty starred_expression_var;
37408
3.79k
        if (
37409
3.79k
            (starred_expression_var = starred_expression_rule(p))  // starred_expression
37410
3.79k
        )
37411
560
        {
37412
560
            D(fprintf(stderr, "%*c+ _tmp_162[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
37413
560
            _res = starred_expression_var;
37414
560
            goto done;
37415
560
        }
37416
3.23k
        p->mark = _mark;
37417
3.23k
        D(fprintf(stderr, "%*c%s _tmp_162[%d-%d]: %s failed!\n", p->level, ' ',
37418
3.23k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
37419
3.23k
    }
37420
0
    _res = NULL;
37421
22.0k
  done:
37422
22.0k
    p->level--;
37423
22.0k
    return _res;
37424
3.23k
}
37425
37426
// _tmp_163: 'if' disjunction
37427
static void *
37428
_tmp_163_rule(Parser *p)
37429
16.4k
{
37430
16.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37431
0
        _Pypegen_stack_overflow(p);
37432
0
    }
37433
16.4k
    if (p->error_indicator) {
37434
0
        p->level--;
37435
0
        return NULL;
37436
0
    }
37437
16.4k
    void * _res = NULL;
37438
16.4k
    int _mark = p->mark;
37439
16.4k
    { // 'if' disjunction
37440
16.4k
        if (p->error_indicator) {
37441
0
            p->level--;
37442
0
            return NULL;
37443
0
        }
37444
16.4k
        D(fprintf(stderr, "%*c> _tmp_163[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
37445
16.4k
        Token * _keyword;
37446
16.4k
        expr_ty z;
37447
16.4k
        if (
37448
16.4k
            (_keyword = _PyPegen_expect_token(p, 687))  // token='if'
37449
16.4k
            &&
37450
16.4k
            (z = disjunction_rule(p))  // disjunction
37451
16.4k
        )
37452
5.56k
        {
37453
5.56k
            D(fprintf(stderr, "%*c+ _tmp_163[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
37454
5.56k
            _res = z;
37455
5.56k
            if (_res == NULL && PyErr_Occurred()) {
37456
0
                p->error_indicator = 1;
37457
0
                p->level--;
37458
0
                return NULL;
37459
0
            }
37460
5.56k
            goto done;
37461
5.56k
        }
37462
10.8k
        p->mark = _mark;
37463
10.8k
        D(fprintf(stderr, "%*c%s _tmp_163[%d-%d]: %s failed!\n", p->level, ' ',
37464
10.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction"));
37465
10.8k
    }
37466
0
    _res = NULL;
37467
16.4k
  done:
37468
16.4k
    p->level--;
37469
16.4k
    return _res;
37470
10.8k
}
37471
37472
// _tmp_164: starred_expression | (assignment_expression | expression !':=') !'='
37473
static void *
37474
_tmp_164_rule(Parser *p)
37475
100k
{
37476
100k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37477
0
        _Pypegen_stack_overflow(p);
37478
0
    }
37479
100k
    if (p->error_indicator) {
37480
0
        p->level--;
37481
0
        return NULL;
37482
0
    }
37483
100k
    void * _res = NULL;
37484
100k
    int _mark = p->mark;
37485
100k
    { // starred_expression
37486
100k
        if (p->error_indicator) {
37487
0
            p->level--;
37488
0
            return NULL;
37489
0
        }
37490
100k
        D(fprintf(stderr, "%*c> _tmp_164[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
37491
100k
        expr_ty starred_expression_var;
37492
100k
        if (
37493
100k
            (starred_expression_var = starred_expression_rule(p))  // starred_expression
37494
100k
        )
37495
5.49k
        {
37496
5.49k
            D(fprintf(stderr, "%*c+ _tmp_164[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
37497
5.49k
            _res = starred_expression_var;
37498
5.49k
            goto done;
37499
5.49k
        }
37500
94.7k
        p->mark = _mark;
37501
94.7k
        D(fprintf(stderr, "%*c%s _tmp_164[%d-%d]: %s failed!\n", p->level, ' ',
37502
94.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
37503
94.7k
    }
37504
0
    { // (assignment_expression | expression !':=') !'='
37505
94.7k
        if (p->error_indicator) {
37506
280
            p->level--;
37507
280
            return NULL;
37508
280
        }
37509
94.5k
        D(fprintf(stderr, "%*c> _tmp_164[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
37510
94.5k
        void *_tmp_87_var;
37511
94.5k
        if (
37512
94.5k
            (_tmp_87_var = _tmp_87_rule(p))  // assignment_expression | expression !':='
37513
94.5k
            &&
37514
94.5k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22)  // token='='
37515
94.5k
        )
37516
46.0k
        {
37517
46.0k
            D(fprintf(stderr, "%*c+ _tmp_164[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
37518
46.0k
            _res = _tmp_87_var;
37519
46.0k
            goto done;
37520
46.0k
        }
37521
48.4k
        p->mark = _mark;
37522
48.4k
        D(fprintf(stderr, "%*c%s _tmp_164[%d-%d]: %s failed!\n", p->level, ' ',
37523
48.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
37524
48.4k
    }
37525
0
    _res = NULL;
37526
100k
  done:
37527
100k
    p->level--;
37528
100k
    return _res;
37529
48.4k
}
37530
37531
// _tmp_165: ',' star_target
37532
static void *
37533
_tmp_165_rule(Parser *p)
37534
29.0k
{
37535
29.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37536
0
        _Pypegen_stack_overflow(p);
37537
0
    }
37538
29.0k
    if (p->error_indicator) {
37539
0
        p->level--;
37540
0
        return NULL;
37541
0
    }
37542
29.0k
    void * _res = NULL;
37543
29.0k
    int _mark = p->mark;
37544
29.0k
    { // ',' star_target
37545
29.0k
        if (p->error_indicator) {
37546
0
            p->level--;
37547
0
            return NULL;
37548
0
        }
37549
29.0k
        D(fprintf(stderr, "%*c> _tmp_165[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
37550
29.0k
        Token * _literal;
37551
29.0k
        expr_ty c;
37552
29.0k
        if (
37553
29.0k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
37554
29.0k
            &&
37555
29.0k
            (c = star_target_rule(p))  // star_target
37556
29.0k
        )
37557
10.5k
        {
37558
10.5k
            D(fprintf(stderr, "%*c+ _tmp_165[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target"));
37559
10.5k
            _res = c;
37560
10.5k
            if (_res == NULL && PyErr_Occurred()) {
37561
0
                p->error_indicator = 1;
37562
0
                p->level--;
37563
0
                return NULL;
37564
0
            }
37565
10.5k
            goto done;
37566
10.5k
        }
37567
18.5k
        p->mark = _mark;
37568
18.5k
        D(fprintf(stderr, "%*c%s _tmp_165[%d-%d]: %s failed!\n", p->level, ' ',
37569
18.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
37570
18.5k
    }
37571
0
    _res = NULL;
37572
29.0k
  done:
37573
29.0k
    p->level--;
37574
29.0k
    return _res;
37575
18.5k
}
37576
37577
// _tmp_166:
37578
//     | ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs
37579
static void *
37580
_tmp_166_rule(Parser *p)
37581
7.72k
{
37582
7.72k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37583
0
        _Pypegen_stack_overflow(p);
37584
0
    }
37585
7.72k
    if (p->error_indicator) {
37586
0
        p->level--;
37587
0
        return NULL;
37588
0
    }
37589
7.72k
    void * _res = NULL;
37590
7.72k
    int _mark = p->mark;
37591
7.72k
    { // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs
37592
7.72k
        if (p->error_indicator) {
37593
0
            p->level--;
37594
0
            return NULL;
37595
0
        }
37596
7.72k
        D(fprintf(stderr, "%*c> _tmp_166[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs"));
37597
7.72k
        asdl_seq * _gather_89_var;
37598
7.72k
        Token * _literal;
37599
7.72k
        asdl_seq* kwargs_var;
37600
7.72k
        if (
37601
7.72k
            (_gather_89_var = _gather_89_rule(p))  // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+
37602
7.72k
            &&
37603
7.72k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
37604
7.72k
            &&
37605
7.72k
            (kwargs_var = kwargs_rule(p))  // kwargs
37606
7.72k
        )
37607
359
        {
37608
359
            D(fprintf(stderr, "%*c+ _tmp_166[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs"));
37609
359
            _res = _PyPegen_dummy_name(p, _gather_89_var, _literal, kwargs_var);
37610
359
            goto done;
37611
359
        }
37612
7.36k
        p->mark = _mark;
37613
7.36k
        D(fprintf(stderr, "%*c%s _tmp_166[%d-%d]: %s failed!\n", p->level, ' ',
37614
7.36k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs"));
37615
7.36k
    }
37616
0
    _res = NULL;
37617
7.72k
  done:
37618
7.72k
    p->level--;
37619
7.72k
    return _res;
37620
7.36k
}
37621
37622
// _tmp_167: starred_expression !'='
37623
static void *
37624
_tmp_167_rule(Parser *p)
37625
2.43k
{
37626
2.43k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37627
0
        _Pypegen_stack_overflow(p);
37628
0
    }
37629
2.43k
    if (p->error_indicator) {
37630
0
        p->level--;
37631
0
        return NULL;
37632
0
    }
37633
2.43k
    void * _res = NULL;
37634
2.43k
    int _mark = p->mark;
37635
2.43k
    { // starred_expression !'='
37636
2.43k
        if (p->error_indicator) {
37637
0
            p->level--;
37638
0
            return NULL;
37639
0
        }
37640
2.43k
        D(fprintf(stderr, "%*c> _tmp_167[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression !'='"));
37641
2.43k
        expr_ty starred_expression_var;
37642
2.43k
        if (
37643
2.43k
            (starred_expression_var = starred_expression_rule(p))  // starred_expression
37644
2.43k
            &&
37645
2.43k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22)  // token='='
37646
2.43k
        )
37647
1.02k
        {
37648
1.02k
            D(fprintf(stderr, "%*c+ _tmp_167[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression !'='"));
37649
1.02k
            _res = starred_expression_var;
37650
1.02k
            goto done;
37651
1.02k
        }
37652
1.40k
        p->mark = _mark;
37653
1.40k
        D(fprintf(stderr, "%*c%s _tmp_167[%d-%d]: %s failed!\n", p->level, ' ',
37654
1.40k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression !'='"));
37655
1.40k
    }
37656
0
    _res = NULL;
37657
2.43k
  done:
37658
2.43k
    p->level--;
37659
2.43k
    return _res;
37660
1.40k
}
37661
37662
// _tmp_168: !STRING expression_without_invalid
37663
static void *
37664
_tmp_168_rule(Parser *p)
37665
5.66k
{
37666
5.66k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37667
1
        _Pypegen_stack_overflow(p);
37668
1
    }
37669
5.66k
    if (p->error_indicator) {
37670
1
        p->level--;
37671
1
        return NULL;
37672
1
    }
37673
5.66k
    void * _res = NULL;
37674
5.66k
    int _mark = p->mark;
37675
5.66k
    { // !STRING expression_without_invalid
37676
5.66k
        if (p->error_indicator) {
37677
0
            p->level--;
37678
0
            return NULL;
37679
0
        }
37680
5.66k
        D(fprintf(stderr, "%*c> _tmp_168[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!STRING expression_without_invalid"));
37681
5.66k
        expr_ty expression_without_invalid_var;
37682
5.66k
        if (
37683
5.66k
            _PyPegen_lookahead(0, _PyPegen_string_token, p)
37684
5.66k
            &&
37685
5.66k
            (expression_without_invalid_var = expression_without_invalid_rule(p))  // expression_without_invalid
37686
5.66k
        )
37687
1.95k
        {
37688
1.95k
            D(fprintf(stderr, "%*c+ _tmp_168[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!STRING expression_without_invalid"));
37689
1.95k
            _res = expression_without_invalid_var;
37690
1.95k
            goto done;
37691
1.95k
        }
37692
3.70k
        p->mark = _mark;
37693
3.70k
        D(fprintf(stderr, "%*c%s _tmp_168[%d-%d]: %s failed!\n", p->level, ' ',
37694
3.70k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!STRING expression_without_invalid"));
37695
3.70k
    }
37696
0
    _res = NULL;
37697
5.66k
  done:
37698
5.66k
    p->level--;
37699
5.66k
    return _res;
37700
3.70k
}
37701
37702
// _tmp_169: ')' | '**'
37703
static void *
37704
_tmp_169_rule(Parser *p)
37705
573
{
37706
573
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37707
0
        _Pypegen_stack_overflow(p);
37708
0
    }
37709
573
    if (p->error_indicator) {
37710
0
        p->level--;
37711
0
        return NULL;
37712
0
    }
37713
573
    void * _res = NULL;
37714
573
    int _mark = p->mark;
37715
573
    { // ')'
37716
573
        if (p->error_indicator) {
37717
0
            p->level--;
37718
0
            return NULL;
37719
0
        }
37720
573
        D(fprintf(stderr, "%*c> _tmp_169[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
37721
573
        Token * _literal;
37722
573
        if (
37723
573
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
37724
573
        )
37725
1
        {
37726
1
            D(fprintf(stderr, "%*c+ _tmp_169[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
37727
1
            _res = _literal;
37728
1
            goto done;
37729
1
        }
37730
572
        p->mark = _mark;
37731
572
        D(fprintf(stderr, "%*c%s _tmp_169[%d-%d]: %s failed!\n", p->level, ' ',
37732
572
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
37733
572
    }
37734
0
    { // '**'
37735
572
        if (p->error_indicator) {
37736
0
            p->level--;
37737
0
            return NULL;
37738
0
        }
37739
572
        D(fprintf(stderr, "%*c> _tmp_169[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
37740
572
        Token * _literal;
37741
572
        if (
37742
572
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
37743
572
        )
37744
1
        {
37745
1
            D(fprintf(stderr, "%*c+ _tmp_169[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'"));
37746
1
            _res = _literal;
37747
1
            goto done;
37748
1
        }
37749
571
        p->mark = _mark;
37750
571
        D(fprintf(stderr, "%*c%s _tmp_169[%d-%d]: %s failed!\n", p->level, ' ',
37751
571
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
37752
571
    }
37753
0
    _res = NULL;
37754
573
  done:
37755
573
    p->level--;
37756
573
    return _res;
37757
571
}
37758
37759
// _tmp_170: ':' | '**'
37760
static void *
37761
_tmp_170_rule(Parser *p)
37762
1.32k
{
37763
1.32k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37764
0
        _Pypegen_stack_overflow(p);
37765
0
    }
37766
1.32k
    if (p->error_indicator) {
37767
0
        p->level--;
37768
0
        return NULL;
37769
0
    }
37770
1.32k
    void * _res = NULL;
37771
1.32k
    int _mark = p->mark;
37772
1.32k
    { // ':'
37773
1.32k
        if (p->error_indicator) {
37774
0
            p->level--;
37775
0
            return NULL;
37776
0
        }
37777
1.32k
        D(fprintf(stderr, "%*c> _tmp_170[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
37778
1.32k
        Token * _literal;
37779
1.32k
        if (
37780
1.32k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
37781
1.32k
        )
37782
2
        {
37783
2
            D(fprintf(stderr, "%*c+ _tmp_170[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
37784
2
            _res = _literal;
37785
2
            goto done;
37786
2
        }
37787
1.32k
        p->mark = _mark;
37788
1.32k
        D(fprintf(stderr, "%*c%s _tmp_170[%d-%d]: %s failed!\n", p->level, ' ',
37789
1.32k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
37790
1.32k
    }
37791
0
    { // '**'
37792
1.32k
        if (p->error_indicator) {
37793
0
            p->level--;
37794
0
            return NULL;
37795
0
        }
37796
1.32k
        D(fprintf(stderr, "%*c> _tmp_170[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
37797
1.32k
        Token * _literal;
37798
1.32k
        if (
37799
1.32k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
37800
1.32k
        )
37801
1
        {
37802
1
            D(fprintf(stderr, "%*c+ _tmp_170[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'"));
37803
1
            _res = _literal;
37804
1
            goto done;
37805
1
        }
37806
1.32k
        p->mark = _mark;
37807
1.32k
        D(fprintf(stderr, "%*c%s _tmp_170[%d-%d]: %s failed!\n", p->level, ' ',
37808
1.32k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
37809
1.32k
    }
37810
0
    _res = NULL;
37811
1.32k
  done:
37812
1.32k
    p->level--;
37813
1.32k
    return _res;
37814
1.32k
}
37815
37816
// _loop0_171: (',' bitwise_or)
37817
static asdl_seq *
37818
_loop0_171_rule(Parser *p)
37819
484
{
37820
484
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37821
0
        _Pypegen_stack_overflow(p);
37822
0
    }
37823
484
    if (p->error_indicator) {
37824
0
        p->level--;
37825
0
        return NULL;
37826
0
    }
37827
484
    void *_res = NULL;
37828
484
    int _mark = p->mark;
37829
484
    void **_children = PyMem_Malloc(sizeof(void *));
37830
484
    if (!_children) {
37831
0
        p->error_indicator = 1;
37832
0
        PyErr_NoMemory();
37833
0
        p->level--;
37834
0
        return NULL;
37835
0
    }
37836
484
    Py_ssize_t _children_capacity = 1;
37837
484
    Py_ssize_t _n = 0;
37838
484
    { // (',' bitwise_or)
37839
484
        if (p->error_indicator) {
37840
0
            p->level--;
37841
0
            return NULL;
37842
0
        }
37843
484
        D(fprintf(stderr, "%*c> _loop0_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' bitwise_or)"));
37844
484
        void *_tmp_175_var;
37845
484
        while (
37846
1.95k
            (_tmp_175_var = _tmp_175_rule(p))  // ',' bitwise_or
37847
484
        )
37848
1.46k
        {
37849
1.46k
            _res = _tmp_175_var;
37850
1.46k
            if (_n == _children_capacity) {
37851
631
                _children_capacity *= 2;
37852
631
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
37853
631
                if (!_new_children) {
37854
0
                    PyMem_Free(_children);
37855
0
                    p->error_indicator = 1;
37856
0
                    PyErr_NoMemory();
37857
0
                    p->level--;
37858
0
                    return NULL;
37859
0
                }
37860
631
                _children = _new_children;
37861
631
            }
37862
1.46k
            _children[_n++] = _res;
37863
1.46k
            _mark = p->mark;
37864
1.46k
        }
37865
484
        p->mark = _mark;
37866
484
        D(fprintf(stderr, "%*c%s _loop0_171[%d-%d]: %s failed!\n", p->level, ' ',
37867
484
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' bitwise_or)"));
37868
484
    }
37869
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
37870
484
    if (!_seq) {
37871
0
        PyMem_Free(_children);
37872
0
        p->error_indicator = 1;
37873
0
        PyErr_NoMemory();
37874
0
        p->level--;
37875
0
        return NULL;
37876
0
    }
37877
1.95k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
37878
484
    PyMem_Free(_children);
37879
484
    p->level--;
37880
484
    return _seq;
37881
484
}
37882
37883
// _tmp_172: ',' | ')' | NEWLINE
37884
static void *
37885
_tmp_172_rule(Parser *p)
37886
584
{
37887
584
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37888
0
        _Pypegen_stack_overflow(p);
37889
0
    }
37890
584
    if (p->error_indicator) {
37891
0
        p->level--;
37892
0
        return NULL;
37893
0
    }
37894
584
    void * _res = NULL;
37895
584
    int _mark = p->mark;
37896
584
    { // ','
37897
584
        if (p->error_indicator) {
37898
0
            p->level--;
37899
0
            return NULL;
37900
0
        }
37901
584
        D(fprintf(stderr, "%*c> _tmp_172[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
37902
584
        Token * _literal;
37903
584
        if (
37904
584
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
37905
584
        )
37906
331
        {
37907
331
            D(fprintf(stderr, "%*c+ _tmp_172[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
37908
331
            _res = _literal;
37909
331
            goto done;
37910
331
        }
37911
253
        p->mark = _mark;
37912
253
        D(fprintf(stderr, "%*c%s _tmp_172[%d-%d]: %s failed!\n", p->level, ' ',
37913
253
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
37914
253
    }
37915
0
    { // ')'
37916
253
        if (p->error_indicator) {
37917
1
            p->level--;
37918
1
            return NULL;
37919
1
        }
37920
252
        D(fprintf(stderr, "%*c> _tmp_172[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
37921
252
        Token * _literal;
37922
252
        if (
37923
252
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
37924
252
        )
37925
10
        {
37926
10
            D(fprintf(stderr, "%*c+ _tmp_172[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
37927
10
            _res = _literal;
37928
10
            goto done;
37929
10
        }
37930
242
        p->mark = _mark;
37931
242
        D(fprintf(stderr, "%*c%s _tmp_172[%d-%d]: %s failed!\n", p->level, ' ',
37932
242
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
37933
242
    }
37934
0
    { // NEWLINE
37935
242
        if (p->error_indicator) {
37936
0
            p->level--;
37937
0
            return NULL;
37938
0
        }
37939
242
        D(fprintf(stderr, "%*c> _tmp_172[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
37940
242
        Token * newline_var;
37941
242
        if (
37942
242
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
37943
242
        )
37944
229
        {
37945
229
            D(fprintf(stderr, "%*c+ _tmp_172[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
37946
229
            _res = newline_var;
37947
229
            goto done;
37948
229
        }
37949
13
        p->mark = _mark;
37950
13
        D(fprintf(stderr, "%*c%s _tmp_172[%d-%d]: %s failed!\n", p->level, ' ',
37951
13
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
37952
13
    }
37953
0
    _res = NULL;
37954
583
  done:
37955
583
    p->level--;
37956
583
    return _res;
37957
13
}
37958
37959
// _tmp_173: expression ['as' star_target]
37960
static void *
37961
_tmp_173_rule(Parser *p)
37962
5.13k
{
37963
5.13k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37964
0
        _Pypegen_stack_overflow(p);
37965
0
    }
37966
5.13k
    if (p->error_indicator) {
37967
0
        p->level--;
37968
0
        return NULL;
37969
0
    }
37970
5.13k
    void * _res = NULL;
37971
5.13k
    int _mark = p->mark;
37972
5.13k
    { // expression ['as' star_target]
37973
5.13k
        if (p->error_indicator) {
37974
0
            p->level--;
37975
0
            return NULL;
37976
0
        }
37977
5.13k
        D(fprintf(stderr, "%*c> _tmp_173[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
37978
5.13k
        void *_opt_var;
37979
5.13k
        UNUSED(_opt_var); // Silence compiler warnings
37980
5.13k
        expr_ty expression_var;
37981
5.13k
        if (
37982
5.13k
            (expression_var = expression_rule(p))  // expression
37983
5.13k
            &&
37984
5.13k
            (_opt_var = _tmp_176_rule(p), !p->error_indicator)  // ['as' star_target]
37985
5.13k
        )
37986
4.68k
        {
37987
4.68k
            D(fprintf(stderr, "%*c+ _tmp_173[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
37988
4.68k
            _res = _PyPegen_dummy_name(p, expression_var, _opt_var);
37989
4.68k
            goto done;
37990
4.68k
        }
37991
457
        p->mark = _mark;
37992
457
        D(fprintf(stderr, "%*c%s _tmp_173[%d-%d]: %s failed!\n", p->level, ' ',
37993
457
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]"));
37994
457
    }
37995
0
    _res = NULL;
37996
5.13k
  done:
37997
5.13k
    p->level--;
37998
5.13k
    return _res;
37999
457
}
38000
38001
// _tmp_174: expressions ['as' star_target]
38002
static void *
38003
_tmp_174_rule(Parser *p)
38004
3.53k
{
38005
3.53k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
38006
0
        _Pypegen_stack_overflow(p);
38007
0
    }
38008
3.53k
    if (p->error_indicator) {
38009
0
        p->level--;
38010
0
        return NULL;
38011
0
    }
38012
3.53k
    void * _res = NULL;
38013
3.53k
    int _mark = p->mark;
38014
3.53k
    { // expressions ['as' star_target]
38015
3.53k
        if (p->error_indicator) {
38016
0
            p->level--;
38017
0
            return NULL;
38018
0
        }
38019
3.53k
        D(fprintf(stderr, "%*c> _tmp_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
38020
3.53k
        void *_opt_var;
38021
3.53k
        UNUSED(_opt_var); // Silence compiler warnings
38022
3.53k
        expr_ty expressions_var;
38023
3.53k
        if (
38024
3.53k
            (expressions_var = expressions_rule(p))  // expressions
38025
3.53k
            &&
38026
3.53k
            (_opt_var = _tmp_176_rule(p), !p->error_indicator)  // ['as' star_target]
38027
3.53k
        )
38028
2.94k
        {
38029
2.94k
            D(fprintf(stderr, "%*c+ _tmp_174[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
38030
2.94k
            _res = _PyPegen_dummy_name(p, expressions_var, _opt_var);
38031
2.94k
            goto done;
38032
2.94k
        }
38033
590
        p->mark = _mark;
38034
590
        D(fprintf(stderr, "%*c%s _tmp_174[%d-%d]: %s failed!\n", p->level, ' ',
38035
590
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]"));
38036
590
    }
38037
0
    _res = NULL;
38038
3.53k
  done:
38039
3.53k
    p->level--;
38040
3.53k
    return _res;
38041
590
}
38042
38043
// _tmp_175: ',' bitwise_or
38044
static void *
38045
_tmp_175_rule(Parser *p)
38046
1.95k
{
38047
1.95k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
38048
0
        _Pypegen_stack_overflow(p);
38049
0
    }
38050
1.95k
    if (p->error_indicator) {
38051
0
        p->level--;
38052
0
        return NULL;
38053
0
    }
38054
1.95k
    void * _res = NULL;
38055
1.95k
    int _mark = p->mark;
38056
1.95k
    { // ',' bitwise_or
38057
1.95k
        if (p->error_indicator) {
38058
0
            p->level--;
38059
0
            return NULL;
38060
0
        }
38061
1.95k
        D(fprintf(stderr, "%*c> _tmp_175[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' bitwise_or"));
38062
1.95k
        Token * _literal;
38063
1.95k
        expr_ty bitwise_or_var;
38064
1.95k
        if (
38065
1.95k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
38066
1.95k
            &&
38067
1.95k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
38068
1.95k
        )
38069
1.46k
        {
38070
1.46k
            D(fprintf(stderr, "%*c+ _tmp_175[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' bitwise_or"));
38071
1.46k
            _res = _PyPegen_dummy_name(p, _literal, bitwise_or_var);
38072
1.46k
            goto done;
38073
1.46k
        }
38074
484
        p->mark = _mark;
38075
484
        D(fprintf(stderr, "%*c%s _tmp_175[%d-%d]: %s failed!\n", p->level, ' ',
38076
484
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' bitwise_or"));
38077
484
    }
38078
0
    _res = NULL;
38079
1.95k
  done:
38080
1.95k
    p->level--;
38081
1.95k
    return _res;
38082
484
}
38083
38084
// _tmp_176: 'as' star_target
38085
static void *
38086
_tmp_176_rule(Parser *p)
38087
7.63k
{
38088
7.63k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
38089
0
        _Pypegen_stack_overflow(p);
38090
0
    }
38091
7.63k
    if (p->error_indicator) {
38092
0
        p->level--;
38093
0
        return NULL;
38094
0
    }
38095
7.63k
    void * _res = NULL;
38096
7.63k
    int _mark = p->mark;
38097
7.63k
    { // 'as' star_target
38098
7.63k
        if (p->error_indicator) {
38099
0
            p->level--;
38100
0
            return NULL;
38101
0
        }
38102
7.63k
        D(fprintf(stderr, "%*c> _tmp_176[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
38103
7.63k
        Token * _keyword;
38104
7.63k
        expr_ty star_target_var;
38105
7.63k
        if (
38106
7.63k
            (_keyword = _PyPegen_expect_token(p, 685))  // token='as'
38107
7.63k
            &&
38108
7.63k
            (star_target_var = star_target_rule(p))  // star_target
38109
7.63k
        )
38110
1.05k
        {
38111
1.05k
            D(fprintf(stderr, "%*c+ _tmp_176[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
38112
1.05k
            _res = _PyPegen_dummy_name(p, _keyword, star_target_var);
38113
1.05k
            goto done;
38114
1.05k
        }
38115
6.57k
        p->mark = _mark;
38116
6.57k
        D(fprintf(stderr, "%*c%s _tmp_176[%d-%d]: %s failed!\n", p->level, ' ',
38117
6.57k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target"));
38118
6.57k
    }
38119
0
    _res = NULL;
38120
7.63k
  done:
38121
7.63k
    p->level--;
38122
7.63k
    return _res;
38123
6.57k
}
38124
38125
void *
38126
_PyPegen_parse(Parser *p)
38127
34.6k
{
38128
    // Initialize keywords
38129
34.6k
    p->keywords = reserved_keywords;
38130
34.6k
    p->n_keyword_lists = n_keyword_lists;
38131
34.6k
    p->soft_keywords = soft_keywords;
38132
38133
    // Run parser
38134
34.6k
    void *result = NULL;
38135
34.6k
    if (p->start_rule == Py_file_input) {
38136
34.5k
        result = file_rule(p);
38137
34.5k
    } else if (p->start_rule == Py_single_input) {
38138
0
        result = interactive_rule(p);
38139
66
    } else if (p->start_rule == Py_eval_input) {
38140
66
        result = eval_rule(p);
38141
66
    } else if (p->start_rule == Py_func_type_input) {
38142
0
        result = func_type_rule(p);
38143
0
    }
38144
38145
34.6k
    return result;
38146
34.6k
}